]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA6/pythia6214.f
Use AliPythiaRndm for Gaussian random numbers.
[u/mrichter/AliRoot.git] / PYTHIA6 / pythia6214.f
1 C*********************************************************************
2 C*********************************************************************
3 C*                                                                  **
4 C*                                                  January 2003    **
5 C*                                                                  **
6 C*                       The Lund Monte Carlo                       **
7 C*                                                                  **
8 C*                        PYTHIA version 6.2                        **
9 C*                                                                  **
10 C*                        Torbjorn Sjostrand                        **
11 C*                 Department of Theoretical Physics                **
12 C*                         Lund University                          **
13 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
14 C*                    phone +46 - 46 - 222 48 16                    **
15 C*                    E-mail torbjorn@thep.lu.se                    **
16 C*                                                                  **
17 C*                  SUSY and Technicolor parts by                   **
18 C*                         Stephen Mrenna                           **
19 C*              Computing Division, Simulations Group               **
20 C*              Fermi National Accelerator Laboratory               **
21 C*                 MS 234, Batavia, IL  60510, USA                  **
22 C*                   phone + 1 - 630 - 840 - 2556                   **
23 C*                      E-mail mrenna@fnal.gov                      **
24 C*                                                                  **
25 C*           Baryon and lepton number violation parts by            **
26 C*                          Peter Skands                            **
27 C*                 Department of Theoretical Physics                **
28 C*                         Lund University                          **
29 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
30 C*                    phone +46 - 46 - 222 31 92                    **
31 C*                     E-mail zeiler@thep.lu.se                     **
32 C*                                                                  **
33 C*                  PYTHIA 7 efforts coordinated by                 **
34 C*                          Leif Lonnblad                           **
35 C*                 Department of Theoretical Physics                **
36 C*                         Lund University                          **
37 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
38 C*                    phone +46 - 46 - 222 77 80                    **
39 C*                      E-mail leif@thep.lu.se                      **
40 C*                                                                  **
41 C*         Several parts are written by Hans-Uno Bengtsson          **
42 C*          PYSHOW is written together with Mats Bengtsson          **
43 C*               PYMAEL is written by Emanuel Norrbin               **
44 C*     advanced popcorn baryon production written by Patrik Eden    **
45 C*    code for virtual photons mainly written by Christer Friberg   **
46 C*    code for low-mass strings mainly written by Emanuel Norrbin   **
47 C*        Bose-Einstein code mainly written by Leif Lonnblad        **
48 C*      CTEQ  parton distributions are by the CTEQ collaboration    **
49 C*      GRV 94 parton distributions are by Glueck, Reya and Vogt    **
50 C*   SaS photon parton distributions together with Gerhard Schuler  **
51 C*     g + g and q + qbar -> t + tbar + H code by Zoltan Kunszt     **
52 C*         MSSM Higgs mass calculation code by M. Carena,           **
53 C*           J.R. Espinosa, M. Quiros and C.E.M. Wagner             **
54 C*         PYGAUS adapted from CERN library (K.S. Kolbig)           **
55 C*                                                                  **
56 C*   The latest program version and documentation is found on WWW   **
57 C*            http://www.thep.lu.se/~torbjorn/Pythia.html           **
58 C*                                                                  **
59 C*              Copyright Torbjorn Sjostrand, Lund 2003             **
60 C*                                                                  **
61 C*********************************************************************
62 C*********************************************************************
63 C                                                                    *
64 C  List of subprograms in order of appearance, with main purpose     *
65 C  (S = subroutine, F = function, B = block data)                    *
66 C                                                                    *
67 C  B   PYDATA   to contain all default values                        *
68 C  S   PYTEST   to test the proper functioning of the package        *
69 C  S   PYHEPC   to convert between /PYJETS/ and /HEPEVT/ records     *
70 C                                                                    *
71 C  S   PYINIT   to administer the initialization procedure           *
72 C  S   PYEVNT   to administer the generation of an event             *
73 C  S   PYSTAT   to print cross-section and other information         *
74 C  S   PYINRE   to initialize treatment of resonances                *
75 C  S   PYINBM   to read in beam, target and frame choices            *
76 C  S   PYINKI   to initialize kinematics of incoming particles       *
77 C  S   PYINPR   to set up the selection of included processes        *
78 C  S   PYXTOT   to give total, elastic and diffractive cross-sect.   *
79 C  S   PYMAXI   to find differential cross-section maxima            *
80 C  S   PYPILE   to select multiplicity of pileup events              *
81 C  S   PYSAVE   to save alternatives for gamma-p and gamma-gamma     *
82 C  S   PYGAGA   to handle lepton -> lepton + gamma branchings        *
83 C  S   PYRAND   to select subprocess and kinematics for event        *
84 C  S   PYSCAT   to set up kinematics and colour flow of event        *
85 C  S   PYSSPA   to simulate initial state spacelike showers          *
86 C  S   PYMEMX   auxiliary to PYSSPA for ME correction maximum        *
87 C  S   PYMEWT   auxiliary to PYSSPA for matrix element correction    *
88 C  S   PYADSH   to administrate sequential final-state showers       *
89 C  S   PYRESD   to perform resonance decays                          *
90 C  S   PYMULT   to generate multiple interactions                    *
91 C  S   PYREMN   to add on target remnants                            *
92 C  S   PYDIFF   to set up kinematics for diffractive events          *
93 C  S   PYDISG   to set up kinematics, remnant and showers for DIS    *
94 C  S   PYDOCU   to compute cross-sections and handle documentation   *
95 C  S   PYFRAM   to perform boosts between different frames           *
96 C  S   PYWIDT   to calculate full and partial widths of resonances   *
97 C  S   PYOFSH   to calculate partial width into off-shell channels   *
98 C  S   PYRECO   to handle colour reconnection in W+W- events         *
99 C  S   PYKLIM   to calculate borders of allowed kinematical region   *
100 C  S   PYKMAP   to construct value of kinematical variable           *
101 C  S   PYSIGH   to calculate differential cross-sections             *
102 C  S   PYPDFU   to evaluate parton distributions                     *
103 C  S   PYPDFL   to evaluate parton distributions at low x and Q^2    *
104 C  S   PYPDEL   to evaluate electron parton distributions            *
105 C  S   PYPDGA   to evaluate photon parton distributions (generic)    *
106 C  S   PYGGAM   to evaluate photon parton distributions (SaS sets)   *
107 C  S   PYGVMD   to evaluate VMD part of photon parton distributions  *
108 C  S   PYGANO   to evaluate anomalous part of photon pdf's           *
109 C  S   PYGBEH   to evaluate Bethe-Heitler part of photon pdf's       *
110 C  S   PYGDIR   to evaluate direct contribution to photon pdf's      *
111 C  S   PYPDPI   to evaluate pion parton distributions                *
112 C  S   PYPDPR   to evaluate proton parton distributions              *
113 C  F   PYCTEQ   to evaluate the CTEQ 3 proton parton distributions   *
114 C  S   PYGRVL   to evaluate the GRV 94L proton parton distributions  *
115 C  S   PYGRVM   to evaluate the GRV 94M proton parton distributions  *
116 C  S   PYGRVD   to evaluate the GRV 94D proton parton distributions  *
117 C  F   PYGRVV   auxiliary to the PYGRV* routines                     *
118 C  F   PYGRVW   auxiliary to the PYGRV* routines                     *
119 C  F   PYGRVS   auxiliary to the PYGRV* routines                     *
120 C  F   PYCT5L   to evaluate the CTEQ 5L proton parton distributions  *
121 C  F   PYCT5M   to evaluate the CTEQ 5M1 proton parton distributions *
122 C  S   PYPDPO   to evaluate old proton parton distributions          *
123 C  F   PYHFTH   to evaluate threshold factor for heavy flavour       *
124 C  S   PYSPLI   to find flavours left in hadron when one removed     *
125 C  F   PYGAMM   to evaluate ordinary Gamma function Gamma(x)         *
126 C  S   PYWAUX   to evaluate auxiliary functions W1(s) and W2(s)      *
127 C  S   PYI3AU   to evaluate auxiliary function I3(s,t,u,v)           *
128 C  F   PYSPEN   to evaluate Spence (dilogarithm) function Sp(x)      *
129 C  S   PYQQBH   to evaluate matrix element for g + g -> Q + Qbar + H *
130 C                                                                    *
131 C  S   PYMSIN   to initialize the supersymmetry simulation           *
132 C  S   PYAPPS   to determine MSSM parameters from SUGRA input        *
133 C  S   PYSUGI   to determine MSSM parameters using ISASUSY           *
134 C  F   PYRNMQ   to determine running squark masses                   *
135 C  S   PYTHRG   to calculate sfermion third-gen. mass eigenstates    *
136 C  S   PYINOM   to calculate neutralino/chargino mass eigenstates    *
137 C  F   PYRNM3   to determine running M3, gluino mass                 *
138 C  S   PYEIG4   to calculate eigenvalues and -vectors in 4*4 matrix  *
139 C  S   PYHGGM   to determine Higgs mass spectrum                     *
140 C  S   PYSUBH   to determine Higgs masses in the MSSM                *
141 C  S   PYPOLE   to determine Higgs masses in the MSSM                *
142 C  S   PYRGHM   auxiliary to PYPOLE                                  *
143 C  S   PYGFXX   auxiliary to PYRGHM                                  *
144 C  F   PYFINT   auxiliary to PYPOLE                                  *
145 C  F   PYFISB   auxiliary to PYFINT                                  *
146 C  S   PYSFDC   to calculate sfermion decay partial widths           *
147 C  S   PYGLUI   to calculate gluino decay partial widths             *
148 C  S   PYTBBN   to calculate 3-body decay of gluino to neutralino    *
149 C  S   PYTBBC   to calculate 3-body decay of gluino to chargino      *
150 C  S   PYNJDC   to calculate neutralino decay partial widths         *
151 C  S   PYCJDC   to calculate chargino decay partial widths           *
152 C  F   PYXXZ6   auxiliary for ino 3-body decays                      *
153 C  F   PYXXGA   auxiliary for ino -> ino + gamma decay               *
154 C  F   PYX2XG   auxiliary for ino -> ino + gauge boson decay         *
155 C  F   PYX2XH   auxiliary for ino -> ino + Higgs decay               *
156 C  S   PYHEXT   to calculate non-SM Higgs decay partial widths       *
157 C  F   PYH2XX   auxiliary for H -> ino + ino decay                   *
158 C  F   PYGAUS   to perform Gaussian integration                      *
159 C  F   PYGAU2   copy of PYGAUS to allow two-dimensional integration  *
160 C  F   PYSIMP   to perform Simpson integration                       *
161 C  F   PYLAMF   to evaluate the lambda kinematics function           *
162 C  S   PYTBDY   to perform 3-body decay of gauginos                  *
163 C  S   PYTECM   to calculate techni_rho/omega masses                 *
164 C  S   PYEICG   to calculate eigenvalues of a 4*4 complex matrix     *
165 C  S   PYCMQR   auxiliary to PYEICG                                  *
166 C  S   PYCMQ2   auxiliary to PYEICG                                  *
167 C  S   PYCDIV   auxiliary to PYCMQR                                  *
168 C  S   PYCSRT   auxiliary to PYCMQR                                  *
169 C  S   PYTHAG   auxiliary to PYCMQR                                  *
170 C  S   PYCBAL   auxiliary to PYEICG                                  *
171 C  S   PYCBA2   auxiliary to PYEICG                                  *
172 C  S   PYCRTH   auxiliary to PYEICG                                  *
173 C  S   PYLDCM   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
174 C  S   PYBKSB   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
175 C  S   PYWIDX   to calculate decay widths from within PYWIDT         *
176 C  S   PYRVSF   to calculate R-violating sfermion decay widths       *
177 C  S   PYRVNE   to calculate R-violating neutralino decay widths     *
178 C  S   PYRVCH   to calculate R-violating chargino decay widths       *
179 C  S   PYRVGL   to calculate R-violating gluino decay widths         *
180 C  F   PYRVSB   auxiliary to PYRVSF                                  *
181 C  S   PYRVGW   to calculate R-Violating 3-body widths               *
182 C  F   PYRVI1   auxiliary to PYRVGW, to do PS integration for res.   *
183 C  F   PYRVI2   auxiliary to PYRVGW, to do PS integration for LR-int.*
184 C  F   PYRVI3   auxiliary to PYRVGW, to do PS X integral for int.    *
185 C  F   PYRVG1   auxiliary to PYRVI1, general matrix element, res.    *
186 C  F   PYRVG2   auxiliary to PYRVI2, general matrix element, LR-int. *
187 C  F   PYRVG3   auxiliary to PYRVI3, to do PS Y integral for int.    *
188 C  F   PYRVG4   auxiliary to PYRVG3, general matrix element, int.    *
189 C  F   PYRVR    auxiliary to PYRVG1, Breit-Wigner                    *
190 C  F   PYRVS    auxiliary to PYRVG2 & PYRVG4                         *
191 C                                                                    *
192 C  S   PY1ENT   to fill one entry (= parton or particle)             *
193 C  S   PY2ENT   to fill two entries                                  *
194 C  S   PY3ENT   to fill three entries                                *
195 C  S   PY4ENT   to fill four entries                                 *
196 C  S   PY2FRM   to interface to generic two-fermion generator        *
197 C  S   PY4FRM   to interface to generic four-fermion generator       *
198 C  S   PY6FRM   to interface to generic six-fermion generator        *
199 C  S   PY4JET   to generate a shower from a given 4-parton config    *
200 C  S   PY4JTW   to evaluate the weight od a shower history for above *
201 C  S   PY4JTS   to set up the parton configuration for above         *
202 C  S   PYJOIN   to connect entries with colour flow information      *
203 C  S   PYGIVE   to fill (or query) commonblock variables             *
204 C  S   PYEXEC   to administrate fragmentation and decay chain        *
205 C  S   PYPREP   to rearrange showered partons along strings          *
206 C  S   PYSTRF   to do string fragmentation of jet system             *
207 C  S   PYJURF   to find boost to string junction rest frame          *
208 C  S   PYINDF   to do independent fragmentation of one or many jets  *
209 C  S   PYDECY   to do the decay of a particle                        *
210 C  S   PYDCYK   to select parton and hadron flavours in decays       *
211 C  S   PYKFDI   to select parton and hadron flavours in fragm        *
212 C  S   PYNMES   to select number of popcorn mesons                   *
213 C  S   PYKFIN   to calculate falvour prod. ratios from input params. *
214 C  S   PYPTDI   to select transverse momenta in fragm                *
215 C  S   PYZDIS   to select longitudinal scaling variable in fragm     *
216 C  S   PYSHOW   to do timelike parton shower evolution               *
217 C  F   PYMAEL   auxiliary to PYSHOW, with gluon emission ME's        *
218 C  S   PYBOEI   to include Bose-Einstein effects (crudely)           *
219 C  S   PYBESQ   auxiliary to PYBOEI                                  *
220 C  F   PYMASS   to give the mass of a particle or parton             *
221 C  F   PYMRUN   to give the running MSbar mass of a quark            *
222 C  S   PYNAME   to give the name of a particle or parton             *
223 C  F   PYCHGE   to give three times the electric charge              *
224 C  F   PYCOMP   to compress standard KF flavour code to internal KC  *
225 C  S   PYERRM   to write error messages and abort faulty run         *
226 C  F   PYALEM   to give the alpha_electromagnetic value              *
227 C  F   PYALPS   to give the alpha_strong value                       *
228 C  F   PYANGL   to give the angle from known x and y components      *
229 C  F   PYR      to provide a random number generator                 *
230 C  S   PYRGET   to save the state of the random number generator     *
231 C  S   PYRSET   to set the state of the random number generator      *
232 C  S   PYROBO   to rotate and/or boost an event                      *
233 C  S   PYEDIT   to remove unwanted entries from record               *
234 C  S   PYLIST   to list event record or particle data                *
235 C  S   PYLOGO   to write a logo                                      *
236 C  S   PYUPDA   to update particle data                              *
237 C  F   PYK      to provide integer-valued event information          *
238 C  F   PYP      to provide real-valued event information             *
239 C  S   PYSPHE   to perform sphericity analysis                       *
240 C  S   PYTHRU   to perform thrust analysis                           *
241 C  S   PYCLUS   to perform three-dimensional cluster analysis        *
242 C  S   PYCELL   to perform cluster analysis in (eta, phi, E_T)       *
243 C  S   PYJMAS   to give high and low jet mass of event               *
244 C  S   PYFOWO   to give Fox-Wolfram moments                          *
245 C  S   PYTABU   to analyze events, with tabular output               *
246 C                                                                    *
247 C  S   PYEEVT   to administrate the generation of an e+e- event      *
248 C  S   PYXTEE   to give the total cross-section at given CM energy   *
249 C  S   PYRADK   to generate initial state photon radiation           *
250 C  S   PYXKFL   to select flavour of primary qqbar pair              *
251 C  S   PYXJET   to select (matrix element) jet multiplicity          *
252 C  S   PYX3JT   to select kinematics of three-jet event              *
253 C  S   PYX4JT   to select kinematics of four-jet event               *
254 C  S   PYXDIF   to select angular orientation of event               *
255 C  S   PYONIA   to perform generation of onium decay to gluons       *
256 C                                                                    *
257 C  S   PYBOOK   to book a histogram                                  *
258 C  S   PYFILL   to fill an entry in a histogram                      *
259 C  S   PYFACT   to multiply histogram contents by a factor           *
260 C  S   PYOPER   to perform operations between histograms             *
261 C  S   PYHIST   to print and reset all histograms                    *
262 C  S   PYPLOT   to print a single histogram                          *
263 C  S   PYNULL   to reset contents of a single histogram              *
264 C  S   PYDUMP   to dump histogram contents onto a file               *
265 C                                                                    *
266 C  S   PYKCUT   dummy routine for user kinematical cuts              *
267 C  S   PYEVWT   dummy routine for weighting events                   *
268 C  S   UPINIT   dummy routine to initialize user processes           *
269 C  S   UPEVNT   dummy routine to generate a user process event       *
270 C  S   PDFSET   dummy routine to be removed when using PDFLIB        *
271 C  S   STRUCTM  dummy routine to be removed when using PDFLIB        *
272 C  S   STRUCTP  dummy routine to be removed when using PDFLIB        *
273 C  S   SUGRA    dummy routine to be removed when linking with ISAJET *
274 C  F   VISAJE   dummy functn. to be removed when linking with ISAJET *
275 C  S   PYTAUD   dummy routine for interface to tau decay libraries   *
276 C  S   PYTIME   dummy routine for giving date and time               *
277 C                                                                    *
278 C*********************************************************************
279  
280 C...PYDATA
281 C...Default values for switches and parameters,
282 C...and particle, decay and process data.
283  
284       BLOCK DATA PYDATA
285  
286 C...Double precision and integer declarations.
287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
288       IMPLICIT INTEGER(I-N)
289       INTEGER PYK,PYCHGE,PYCOMP
290 C...Commonblocks.
291       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
292       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
293       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
294       COMMON/PYDAT4/CHAF(500,2)
295       CHARACTER CHAF*16
296       COMMON/PYDATR/MRPY(6),RRPY(100)
297       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
298       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
299       COMMON/PYINT1/MINT(400),VINT(400)
300       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
301       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
302       COMMON/PYINT4/MWID(500),WIDS(500,5)
303       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
304       COMMON/PYINT6/PROC(0:500)
305       CHARACTER PROC*28
306       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
307       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
308       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
309      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
310       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
311       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
312       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
313       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/,
314      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
315      &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYTCSM/,/PYBINS/
316  
317 C...PYDAT1, containing status codes and most parameters.
318       DATA MSTU/
319      &   0,    0,    0, 4000,10000,  500, 8000,    0,    0,    2,
320      1   6,    1,    1,    0,    0,    1,    0,    0,    0,    0,
321      2   2,   10,    0,    0,    1,   10,    0,    0,    0,    0,
322      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
323      4   2,    2,    1,    4,    2,    1,    1,    0,    0,    0,
324      5  25,   24,    0,    1,    0,    0,    0,    0,    0,    0,
325      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
326      7  30*0,
327      1   1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
328      2   1,    5,    3,    5,    0,    0,    0,    0,    0,    0,
329      &  80*0/
330       DATA (PARU(I),I=1,100)/
331      &  3.141592653589793D0, 6.283185307179586D0,
332      &  0.197327D0, 5.06773D0, 0.389380D0, 2.56819D0,  4*0D0,
333      1  0.001D0, 0.09D0, 0.01D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
334      2  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
335      3  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
336      4  2.0D0,  1.0D0, 0.25D0,  2.5D0, 0.05D0,
337      4  0D0,   0D0, 0.0001D0, 0D0,   0D0,
338      5  2.5D0,1.5D0,7.0D0,1.0D0,0.5D0,2.0D0,3.2D0, 0D0, 0D0, 0D0,
339      6  40*0D0/
340       DATA (PARU(I),I=101,200)/
341      &  0.00729735D0, 0.232D0, 0.007764D0, 1.0D0, 1.16639D-5,
342      &  0D0, 0D0, 0D0, 0D0,  0D0,
343      1  0.20D0, 0.25D0, 1.0D0, 4.0D0, 10D0, 0D0, 0D0,  0D0, 0D0, 0D0,
344      2 -0.693D0, -1.0D0, 0.387D0, 1.0D0, -0.08D0,
345      2 -1.0D0,  1.0D0,  1.0D0,  1.0D0,  0D0,
346      3  1.0D0,-1.0D0, 1.0D0,-1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
347      4  5.0D0, 1.0D0, 1.0D0,  0D0, 1.0D0, 1.0D0,  0D0, 0D0, 0D0, 0D0,
348      5  1.0D0,   0D0,   0D0,   0D0,   0D0,   0D0, 0D0, 0D0, 0D0, 0D0,
349      6  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
350      7  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
351      8  1.0D0, 1.0D0, 1.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
352      9  0D0,  0D0,  0D0,  0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0/
353       DATA MSTJ/
354      &  1,    3,    0,    0,    0,    0,    0,    0,    0,    0,
355      1  4,    2,    0,    1,    0,    2,    2,   10,    0,    0,
356      2  2,    1,    1,    2,    1,    2,    2,    0,    0,    0,
357      3  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
358      4  2,    2,    4,    2,    5,    3,    3,    0,    0,    3,
359      5  0,    3,    0,    2,    0,    0,    1,    0,    0,    0,
360      6  40*0,
361      &  5,    2,    7,    5,    1,    1,    0,    2,    0,    2,
362      1  0,    0,    0,    0,    1,    1,    0,    0,    0,    0,
363      2  80*0/
364       DATA PARJ/
365      &  0.10D0, 0.30D0, 0.40D0, 0.05D0, 0.50D0,
366      &  0.50D0, 0.50D0,   0.6D0,   1.2D0,   0.6D0,
367      1  0.50D0,0.60D0,0.75D0, 0D0, 0D0, 0D0, 0D0, 1.0D0, 1.0D0, 0D0,
368      2  0.36D0, 1.0D0,0.01D0, 2.0D0,1.0D0,0.4D0, 0D0, 0D0, 0D0, 0D0,
369      3  0.10D0, 1.0D0, 0.8D0, 1.5D0,0D0,2.0D0,0.2D0, 0D0,0.08D0,1D0,
370      4  0.3D0, 0.58D0, 0.5D0, 0.9D0,0.5D0,1.0D0,1.0D0,1.5D0,1D0,10D0,
371      5  0.77D0, 0.77D0, 0.77D0, -0.05D0, -0.005D0,
372      5  0D0, 0D0, 0D0, 1.0D0, 0D0,
373      6  4.5D0, 0.7D0, 0D0,0.003D0, 0.5D0, 0.5D0, 0D0, 0D0, 0D0, 0D0,
374      7  10D0, 1000D0, 100D0, 1000D0, 0D0, 0.7D0,10D0, 0D0,0D0,0.5D0,
375      8  0.29D0, 1.0D0, 1.0D0,  0D0,  10D0, 10D0, 0D0, 0D0, 0D0,1D-4,
376      9  0.02D0, 1.0D0, 0.2D0,  0D0,  0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
377      &  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
378      1  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
379      2  1.0D0, 0.25D0,91.187D0,2.489D0, 0.01D0,
380      2  2.0D0,  1.0D0, 0.25D0,0.002D0,   0D0,
381      3  0D0, 0D0, 0D0, 0D0, 0.01D0, 0.99D0, 0D0, 0D0,  0.2D0,   0D0,
382      4  10*0D0,
383      5  10*0D0,
384      6  10*0D0,
385      7  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, -0.693D0,
386      8 -1.0D0, 0.387D0, 1.0D0, -0.08D0, -1.0D0,
387      8  1.0D0,  1.0D0, -0.693D0, -1.0D0, 0.387D0,
388      9  1.0D0, -0.08D0, -1.0D0,   1.0D0, 1.0D0,
389      9  5*0D0/
390  
391 C...PYDAT2, with particle data and flavour treatment parameters.
392       DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0,
393      &-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,
394      &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,
395      &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,
396      &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,
397      &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,
398      &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,
399      &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,
400      &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,
401      &139*0/
402       DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,20*0,1,107*0,-1,0,2*-1,
403      &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,
404      &-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,
405      &6*1,9*0,2,3*0,2,0,5*2,2*1,156*0/
406       DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,3*0,
407      &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,
408      &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,
409      &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,139*0/
410       DATA (KCHG(I,4),I=   1, 290)/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
411      &16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,
412      &37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,
413      &58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,
414      &79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
415      &100,110,111,113,115,130,211,213,215,221,223,225,310,311,313,315,
416      &321,323,325,331,333,335,411,413,415,421,423,425,431,433,435,441,
417      &443,445,511,513,515,521,523,525,531,533,535,541,543,545,551,553,
418      &555,990,1103,1114,2101,2103,2112,2114,2203,2212,2214,2224,3101,
419      &3103,3112,3114,3122,3201,3203,3212,3214,3222,3224,3303,3312,3314,
420      &3322,3324,3334,4101,4103,4112,4114,4122,4132,4201,4203,4212,4214,
421      &4222,4224,4232,4301,4303,4312,4314,4322,4324,4332,4334,4403,4412,
422      &4414,4422,4424,4432,4434,4444,5101,5103,5112,5114,5122,5132,5142,
423      &5201,5203,5212,5214,5222,5224,5232,5242,5301,5303,5312,5314,5322,
424      &5324,5332,5334,5342,5401,5403,5412,5414,5422,5424,5432,5434,5442,
425      &5444,5503,5512,5514,5522,5524,5532,5534,5542,5544,5554,10111,
426      &10113,10211,10213,10221,10223,10311,10313,10321,10323,10331,
427      &10333,10411,10413,10421,10423,10431,10433,10441,10443,10511,
428      &10513,10521,10523,10531,10533,10541,10543,10551,10553,20113,
429      &20213,20223,20313,20323,20333,20413,20423,20433,20443,20513/
430       DATA (KCHG(I,4),I= 291, 500)/20523,20533,20543,20553,100443,
431      &100553,1000001,1000002,1000003,1000004,1000005,1000006,1000011,
432      &1000012,1000013,1000014,1000015,1000016,1000021,1000022,1000023,
433      &1000024,1000025,1000035,1000037,1000039,2000001,2000002,2000003,
434      &2000004,2000005,2000006,2000011,2000012,2000013,2000014,2000015,
435      &2000016,3000111,3000211,3000221,3000331,3000113,3000213,3000223,
436      &3100021,3100111,3200111,3100113,3200113,3300113,3400113,4000001,
437      &4000002,4000011,4000012,5000039,9900012,9900014,9900016,9900023,
438      &9900024,9900041,9900042,9900110,9900210,9900220,9900330,9900440,
439      &9902110,9902210,139*0/
440       DATA (PMAS(I,1),I=   1, 217)/2*0.33D0,0.5D0,1.5D0,4.8D0,175D0,
441      &2*400D0,2*0D0,0.00051D0,0D0,0.10566D0,0D0,1.777D0,0D0,400D0,
442      &5*0D0,91.188D0,80.45D0,115D0,6*0D0,500D0,900D0,500D0,3*300D0,
443      &3*0D0,5000D0,200D0,40*0D0,1D0,2D0,5D0,16*0D0,0.13498D0,0.7685D0,
444      &1.318D0,0.49767D0,0.13957D0,0.7669D0,1.318D0,0.54745D0,0.78194D0,
445      &1.275D0,2*0.49767D0,0.8961D0,1.432D0,0.4936D0,0.8916D0,1.425D0,
446      &0.95777D0,1.0194D0,1.525D0,1.8693D0,2.01D0,2.46D0,1.8645D0,
447      &2.0067D0,2.46D0,1.9685D0,2.1124D0,2.5735D0,2.9798D0,3.09688D0,
448      &3.5562D0,5.2792D0,5.3248D0,5.83D0,5.2789D0,5.3248D0,5.83D0,
449      &5.3693D0,5.4163D0,6.07D0,6.594D0,6.602D0,7.35D0,9.4D0,9.4603D0,
450      &9.9132D0,0D0,0.77133D0,1.234D0,0.57933D0,0.77133D0,0.93957D0,
451      &1.233D0,0.77133D0,0.93827D0,1.232D0,1.231D0,0.80473D0,0.92953D0,
452      &1.19744D0,1.3872D0,1.11568D0,0.80473D0,0.92953D0,1.19255D0,
453      &1.3837D0,1.18937D0,1.3828D0,1.09361D0,1.3213D0,1.535D0,1.3149D0,
454      &1.5318D0,1.67245D0,1.96908D0,2.00808D0,2.4521D0,2.5D0,2.2849D0,
455      &2.4703D0,1.96908D0,2.00808D0,2.4535D0,2.5D0,2.4529D0,2.5D0,
456      &2.4656D0,2.15432D0,2.17967D0,2.55D0,2.63D0,2.55D0,2.63D0,2.704D0,
457      &2.8D0,3.27531D0,3.59798D0,3.65648D0,3.59798D0,3.65648D0,
458      &3.78663D0,3.82466D0,4.91594D0,5.38897D0,5.40145D0,5.8D0,5.81D0,
459      &5.641D0,5.84D0,7.00575D0,5.38897D0,5.40145D0,5.8D0,5.81D0,5.8D0/
460       DATA (PMAS(I,1),I= 218, 500)/5.81D0,5.84D0,7.00575D0,5.56725D0,
461      &5.57536D0,5.96D0,5.97D0,5.96D0,5.97D0,6.12D0,6.13D0,7.19099D0,
462      &6.67143D0,6.67397D0,7.03724D0,7.0485D0,7.03724D0,7.0485D0,
463      &7.21101D0,7.219D0,8.30945D0,8.31325D0,10.07354D0,10.42272D0,
464      &10.44144D0,10.42272D0,10.44144D0,10.60209D0,10.61426D0,
465      &11.70767D0,11.71147D0,15.11061D0,0.9835D0,1.231D0,0.9835D0,
466      &1.231D0,1D0,1.17D0,1.429D0,1.29D0,1.429D0,1.29D0,2*1.4D0,2.272D0,
467      &2.424D0,2.272D0,2.424D0,2.5D0,2.536D0,3.4151D0,3.46D0,5.68D0,
468      &5.73D0,5.68D0,5.73D0,5.92D0,5.97D0,7.25D0,7.3D0,9.8598D0,9.875D0,
469      &2*1.23D0,1.282D0,2*1.402D0,1.427D0,2*2.372D0,2.56D0,3.5106D0,
470      &2*5.78D0,6.02D0,7.3D0,9.8919D0,3.686D0,10.0233D0,32*500D0,
471      &3*110D0,350D0,3*210D0,500D0,125D0,250D0,400D0,2*350D0,300D0,
472      &4*400D0,1000D0,3*500D0,1200D0,750D0,2*200D0,7*0D0,139*0D0/
473       DATA (PMAS(I,2),I=   1, 500)/5*0D0,1.39816D0,16*0D0,2.47813D0,
474      &2.07115D0,0.00367D0,6*0D0,14.54029D0,0D0,16.66099D0,8.38842D0,
475      &3.3752D0,4.17669D0,3*0D0,417.29147D0,0.39162D0,60*0D0,0.151D0,
476      &0.107D0,2*0D0,0.149D0,0.107D0,0D0,0.00843D0,0.185D0,2*0D0,
477      &0.0505D0,0.109D0,0D0,0.0498D0,0.098D0,0.0002D0,0.00443D0,0.076D0,
478      &2*0D0,0.023D0,2*0D0,0.023D0,2*0D0,0.015D0,0.0013D0,0D0,0.002D0,
479      &2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,5*0D0,0.12D0,
480      &3*0D0,0.12D0,2*0D0,2*0.12D0,3*0D0,0.0394D0,4*0D0,0.036D0,0D0,
481      &0.0358D0,2*0D0,0.0099D0,0D0,0.0091D0,74*0D0,0.06D0,0.142D0,
482      &0.06D0,0.142D0,0D0,0.36D0,0.287D0,0.09D0,0.287D0,0.09D0,0.25D0,
483      &0.08D0,0.05D0,0.02D0,0.05D0,0.02D0,0.05D0,0D0,0.014D0,0.01D0,
484      &8*0.05D0,0D0,0.01D0,2*0.4D0,0.025D0,2*0.174D0,0.053D0,3*0.05D0,
485      &0.0009D0,4*0.05D0,3*0D0,19*1D0,0D0,7*1D0,0D0,1D0,0D0,1D0,0D0,
486      &0.02911D0,0.01741D0,0.04536D0,0.09511D0,0.8686D0,0.62395D0,
487      &0.19192D0,123.27638D0,0.02296D0,0.18886D0,23.26819D0,2.86306D0,
488      &0D0,3.45903D0,2.59359D0,2.59687D0,0.42896D0,0.41912D0,0.14153D0,
489      &2*0.00098D0,0.00097D0,26.7245D0,21.74916D0,0.88159D0,0.88001D0,
490      &7*0D0,139*0D0/
491       DATA (PMAS(I,3),I=   1, 500)/5*0D0,13.98156D0,16*0D0,24.78129D0,
492      &20.71149D0,0.03669D0,6*0D0,145.40294D0,0D0,166.60993D0,
493      &83.88423D0,33.75195D0,41.76694D0,3*0D0,4172.91467D0,3.91621D0,
494      &60*0D0,0.4D0,0.25D0,2*0D0,0.4D0,0.25D0,0D0,0.1D0,0.17D0,2*0D0,
495      &0.2D0,0.12D0,0D0,0.2D0,0.12D0,0.002D0,0.015D0,0.2D0,2*0D0,0.12D0,
496      &2*0D0,0.12D0,2*0D0,0.05D0,0.005D0,0D0,0.01D0,2*0D0,0.05D0,2*0D0,
497      &0.05D0,2*0D0,0.05D0,2*0D0,0.05D0,5*0D0,0.14D0,3*0D0,0.14D0,2*0D0,
498      &2*0.14D0,3*0D0,0.04D0,4*0D0,0.035D0,0D0,0.035D0,2*0D0,0.05D0,0D0,
499      &0.05D0,74*0D0,0.05D0,0.25D0,0.05D0,0.25D0,0D0,0.2D0,0.4D0,
500      &0.005D0,0.4D0,0.01D0,0.35D0,0.001D0,0.1D0,0.08D0,0.1D0,0.08D0,
501      &0.1D0,0D0,0.05D0,0.02D0,6*0.1D0,0.05D0,0.1D0,0D0,0.02D0,2*0.3D0,
502      &0.05D0,2*0.3D0,0.02D0,2*0.1D0,0.03D0,0.001D0,4*0.1D0,3*0D0,
503      &19*10D0,0.00001D0,7*10D0,0.00001D0,10D0,0.00001D0,10D0,0.00001D0,
504      &0.29108D0,0.17412D0,0.45362D0,0.95114D0,8.68604D0,6.23946D0,
505      &1.91923D0,450D0,0.22959D0,1.88863D0,232.68185D0,28.63059D0,0D0,
506      &34.59032D0,25.93594D0,25.96873D0,4.28961D0,4.19124D0,1.41528D0,
507      &0.00977D0,0.00976D0,0.00973D0,267.24501D0,217.49162D0,8.81592D0,
508      &8.80013D0,7*0D0,139*0D0/
509       DATA (PMAS(I,4),I=   1, 500)/12*0D0,658654D0,0D0,0.0872D0,68*0D0,
510      &0.1D0,0.387D0,16*0D0,0.00003D0,2*0D0,15500D0,7804.5D0,5*0D0,
511      &26.762D0,3*0D0,3709D0,5*0D0,0.317D0,2*0D0,0.1244D0,2*0D0,0.14D0,
512      &5*0D0,0.468D0,2*0D0,0.462D0,2*0D0,0.483D0,2*0D0,0.15D0,18*0D0,
513      &44.34D0,0D0,78.88D0,4*0D0,23.96D0,2*0D0,49.1D0,0D0,87.1D0,0D0,
514      &24.6D0,4*0D0,0.0618D0,0.029D0,6*0D0,0.106D0,6*0D0,0.019D0,2*0D0,
515      &7*0.1D0,4*0D0,0.342D0,2*0.387D0,6*0D0,2*0.387D0,6*0D0,0.387D0,
516      &0D0,0.387D0,2*0D0,8*0.387D0,0D0,9*0.387D0,112*0D0,139*0D0/
517       DATA PARF/
518      &  0.5D0,0.25D0, 0.5D0,0.25D0, 1D0, 0.5D0,  0D0,  0D0,  0D0, 0D0,
519      1  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
520      2  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
521      3  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
522      4  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
523      5  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
524      6  0.75D0, 0.5D0, 0D0,0.1667D0,0.0833D0,0.1667D0,0D0,0D0,0D0, 0D0,
525      7  0D0,  0D0,  1D0,0.3333D0,0.6667D0,0.3333D0,0D0,0D0,0D0, 0D0,
526      8  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
527      9  0.0099D0, 0.0056D0, 0.199D0, 1.23D0, 4.17D0, 165D0,  4*0D0,
528      & 0.325D0,0.325D0,0.5D0,1.6D0, 5.0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
529      1 0D0,0.11D0,0.16D0,0.048D0,0.50D0,0.45D0,0.55D0,0.60D0,0D0,0D0,
530      2 0.2D0, 0.1D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
531      3 60*0D0,
532      4 0.2D0,  0.5D0,  8*0D0,
533      5 1800*0D0/
534       DATA ((VCKM(I,J),J=1,4),I=1,4)/
535      &  0.95113D0,  0.04884D0,  0.00003D0,  0.00000D0,
536      &  0.04884D0,  0.94940D0,  0.00176D0,  0.00000D0,
537      &  0.00003D0,  0.00176D0,  0.99821D0,  0.00000D0,
538      &  0.00000D0,  0.00000D0,  0.00000D0,  1.00000D0/
539  
540 C...PYDAT3, with particle decay parameters and data.
541       DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,
542      &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,
543      &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,
544      &6*1,2*0,7*1,2*0,8*1,0,75*1,0,7*1,0,1,0,1,0,26*1,146*0/
545       DATA (MDCY(I,2),I=   1, 351)/1,9,17,25,33,41,56,66,2*0,76,80,82,
546      &87,89,143,145,150,2*0,153,162,174,190,210,6*0,289,0,311,334,420,
547      &503,3*0,530,539,40*0,540,541,545,16*0,554,556,561,570,579,581,
548      &583,590,598,604,613,615,617,620,630,636,639,650,656,667,673,736,
549      &739,747,808,810,818,851,853,857,858,861,863,899,900,908,944,945,
550      &953,992,993,997,1028,1029,1033,1034,1043,2*0,1045,3*0,1046,2*0,
551      &1049,1052,2*0,1053,1055,1058,2*0,1062,1063,1066,1069,0,1072,1077,
552      &1079,1082,1084,2*0,1088,1089,1090,1166,2*0,1170,1171,1172,1173,
553      &1174,2*0,1178,1179,1181,1182,1184,1188,0,1189,1193,1197,1201,
554      &1205,1209,1213,2*0,1217,1218,1219,1236,1245,2*0,1254,1255,1256,
555      &1257,1258,1267,2*0,1276,1277,1278,1279,1280,1289,1290,2*0,1299,
556      &1308,1317,1326,1335,1344,1353,1362,0,1371,1380,1389,1398,1407,
557      &1416,1425,1434,1443,1452,1453,1454,1455,1456,1461,1464,1466,1471,
558      &1473,1478,1485,1489,1491,1493,1495,1497,1499,1501,1503,1504,1506,
559      &1508,1510,1512,1514,1516,1518,1520,1522,1523,1525,1527,1541,1543,
560      &1545,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1578,1592,
561      &1637,1661,1706,1730,1775,1802,1833,1859,1891,1917,1949,1975,2162,
562      &2331,2595,2826,3106,3402,0,3657,3706,3734,3783,3811,3860,3888,0,
563      &3924,0,3960,0,3996,4004,4012,4020,4023,4047,4073,4097,4103,4110,
564      &4117,4124,4130,4136,4145,4149,4153,4156,4158,4178,4200,4222,4244/
565       DATA (MDCY(I,2),I= 352, 500)/4259,4271,4278,146*0/
566       DATA (MDCY(I,3),I=   1, 500)/5*8,15,2*10,2*0,4,2,5,2,54,2,5,3,
567      &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,
568      &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,
569      &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,
570      &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,
571      &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,
572      &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,
573      &45,27,31,26,32,26,32,26,187,169,264,231,280,296,255,0,49,28,49,
574      &28,49,28,36,0,36,0,36,0,3*8,3,24,26,24,6,3*7,2*6,9,2*4,3,2,20,
575      &3*22,15,12,2*7,146*0/
576       DATA (MDME(I,1),I=   1,8000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1,
577      &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,
578      &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,85*1,
579      &2*-1,6*1,8*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,4*-1,200*1,2*-1,2*1,-1,
580      &1249*1,2*-1,377*1,2*-1,1868*1,2*-1,6*1,2*-1,9*1,-1,3*1,-1,3*1,
581      &5*-1,3*1,-1,14*1,2*-1,6*1,2*-1,67*1,2*-1,6*1,2*-1,111*1,3716*0/
582       DATA (MDME(I,2),I=   1,8000)/43*102,4*0,102,0,6*53,3*102,4*0,102,
583      &2*0,3*102,4*0,102,2*0,6*102,42,6*102,2*42,2*0,8*41,2*0,36*41,
584      &8*102,0,102,0,102,2*0,21*102,8*32,8*0,16*32,4*0,8*32,9*0,62*53,
585      &8*32,14*0,16*32,7*0,8*32,16*0,62*53,8*32,13*0,62*53,4*32,5*0,
586      &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,
587      &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,
588      &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,
589      &14*42,16*0,48,3*13,2*42,9*0,14*42,16*0,48,3*13,2*42,9*0,14*42,
590      &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,
591      &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,
592      &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,
593      &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,
594      &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,
595      &3*0,6*32,3*0,4*32,3*0,4*32,8*0,8*32,14*0,16*32,12*0,8*32,8*0,
596      &46*32,3*53,12*0,8*32,12*0,66*51,6*32,9*0,9*32,3733*0/
597       DATA (BRAT(I)  ,I=   1, 346)/43*0D0,0.00003D0,0.001765D0,
598      &0.998205D0,35*0D0,1D0,6*0D0,0.1783D0,0.1735D0,0.1131D0,0.2494D0,
599      &0.003D0,0.09D0,0.0027D0,0.01D0,0.0014D0,0.0012D0,2*0.00025D0,
600      &0.0071D0,0.012D0,0.0004D0,0.00075D0,0.00006D0,2*0.00078D0,
601      &0.0034D0,0.08D0,0.011D0,0.0191D0,0.00006D0,0.005D0,0.0133D0,
602      &0.0067D0,0.0005D0,0.0035D0,0.0006D0,0.0015D0,0.00021D0,0.0002D0,
603      &0.00075D0,0.0001D0,0.0002D0,0.0011D0,3*0.0002D0,0.00022D0,
604      &0.0004D0,0.0001D0,2*0.00205D0,2*0.00069D0,0.00025D0,0.00051D0,
605      &0.00025D0,35*0D0,0.153995D0,0.11942D0,0.153984D0,0.119259D0,
606      &0.152272D0,3*0D0,0.033576D0,0.066806D0,0.033576D0,0.066806D0,
607      &0.0335D0,0.066806D0,2*0D0,0.321369D0,0.016494D0,2*0D0,0.016502D0,
608      &0.320615D0,2*0D0,0.00001D0,0.000591D0,6*0D0,2*0.108166D0,
609      &0.108087D0,0D0,0.000001D0,0D0,0.000349D0,0.048707D0,0.768308D0,
610      &4*0D0,0.000227D0,0.064048D0,0D0,0.040621D0,0.002043D0,0.000615D0,
611      &0.006981D0,0.068099D0,62*0D0,0.145835D0,0.113276D0,0.145835D0,
612      &0.113271D0,0.145781D0,0.049002D0,2*0D0,0.032025D0,0.063642D0,
613      &0.032025D0,0.063642D0,0.032022D0,0.063642D0,8*0D0,0.251225D0,
614      &0.0129D0,0.000006D0,0D0,0.0129D0,0.250764D0,0.00038D0,0D0,
615      &0.000008D0,0.000465D0,0.215418D0,5*0D0,2*0.085312D0,0.08531D0,
616      &7*0D0,0.000049D0,0.000774D0,5*0D0,0.000074D0,0D0,0.000417D0/
617       DATA (BRAT(I)  ,I= 347, 651)/0.000015D0,0.000061D0,0.30671D0,
618      &0.689011D0,0D0,0.002889D0,69*0D0,0.000001D0,0.000121D0,
619      &0.001924D0,4*0D0,0.000001D0,0.000184D0,0D0,0.003106D0,0.000015D0,
620      &0.000003D0,2*0D0,0.994646D0,66*0D0,0.000021D0,0.090135D0,2*0D0,
621      &0.000013D0,0.003714D0,0D0,0.906117D0,18*0D0,3*0.215119D0,
622      &0.214724D0,2*0D0,0.06996D0,0.069959D0,0D0,2*1D0,2*0.08D0,0.76D0,
623      &0.08D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,
624      &0.005D0,0.988D0,0.012D0,0.998739D0,0.00079D0,0.00038D0,
625      &0.000046D0,0.000045D0,2*0.34725D0,0.144D0,0.104D0,0.0245D0,
626      &2*0.01225D0,0.0028D0,0.0057D0,0.2112D0,0.1256D0,2*0.1939D0,
627      &2*0.1359D0,0.002D0,0.001D0,0.0006D0,0.999877D0,0.000123D0,
628      &0.99955D0,0.00045D0,2*0.34725D0,0.144D0,0.104D0,0.049D0,0.0028D0,
629      &0.0057D0,0.3923D0,0.321D0,0.2317D0,0.0478D0,0.0049D0,0.0013D0,
630      &0.0003D0,0.0007D0,0.89D0,0.08693D0,0.0221D0,0.00083D0,
631      &2*0.00007D0,0.564D0,0.282D0,0.072D0,0.028D0,0.023D0,2*0.0115D0,
632      &0.005D0,0.003D0,0.6861D0,0.3139D0,2*0.5D0,0.665D0,0.333D0,
633      &0.002D0,0.333D0,0.166D0,0.168D0,0.084D0,0.087D0,0.043D0,0.059D0,
634      &2*0.029D0,0.002D0,0.6352D0,0.2116D0,0.0559D0,0.0173D0,0.0482D0,
635      &0.0318D0,0.666D0,0.333D0,0.001D0,0.332D0,0.166D0,0.168D0,0.084D0,
636      &0.086D0,0.043D0,0.059D0,2*0.029D0,2*0.002D0,0.437D0,0.208D0/
637       DATA (BRAT(I)  ,I= 652, 823)/0.302D0,0.0302D0,0.0212D0,0.0016D0,
638      &0.48947D0,0.34D0,3*0.043D0,0.027D0,0.0126D0,0.0013D0,0.0003D0,
639      &0.00025D0,0.00008D0,0.444D0,2*0.222D0,0.104D0,2*0.004D0,0.07D0,
640      &0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,0.07D0,0.065D0,2*0.005D0,
641      &2*0.011D0,5*0.001D0,0.026D0,0.019D0,0.066D0,0.041D0,0.045D0,
642      &0.076D0,0.0073D0,2*0.0047D0,0.026D0,0.001D0,0.0006D0,0.0066D0,
643      &0.005D0,2*0.003D0,2*0.0006D0,2*0.001D0,0.006D0,0.005D0,0.012D0,
644      &0.0057D0,0.067D0,0.008D0,0.0022D0,0.027D0,0.004D0,0.019D0,
645      &0.012D0,0.002D0,0.009D0,0.0218D0,0.001D0,0.022D0,0.087D0,0.001D0,
646      &0.0019D0,0.0015D0,0.0028D0,0.683D0,0.306D0,0.011D0,0.3D0,0.15D0,
647      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.034D0,0.027D0,
648      &2*0.002D0,2*0.004D0,2*0.002D0,0.034D0,0.027D0,2*0.002D0,
649      &2*0.004D0,2*0.002D0,0.0365D0,0.045D0,0.073D0,0.062D0,3*0.021D0,
650      &0.0061D0,0.015D0,0.025D0,0.0088D0,0.074D0,0.0109D0,0.0041D0,
651      &0.002D0,0.0035D0,0.0011D0,0.001D0,0.0027D0,2*0.0016D0,0.0018D0,
652      &0.011D0,0.0063D0,0.0052D0,0.018D0,0.016D0,0.0034D0,0.0036D0,
653      &0.0009D0,0.0006D0,0.015D0,0.0923D0,0.018D0,0.022D0,0.0077D0,
654      &0.009D0,0.0075D0,0.024D0,0.0085D0,0.067D0,0.0511D0,0.017D0,
655      &0.0004D0,0.0028D0,0.619D0,0.381D0,0.3D0,0.15D0,0.16D0,0.08D0,
656      &0.13D0,0.06D0,0.08D0,0.04D0,0.01D0,2*0.02D0,0.03D0,2*0.005D0/
657       DATA (BRAT(I)  ,I= 824, 991)/2*0.02D0,0.03D0,2*0.005D0,0.015D0,
658      &0.037D0,0.028D0,0.079D0,0.095D0,0.052D0,0.0078D0,4*0.001D0,
659      &0.028D0,0.033D0,0.026D0,0.05D0,0.01D0,4*0.005D0,0.25D0,0.0952D0,
660      &0.94D0,0.06D0,2*0.4D0,2*0.1D0,1D0,0.0602D0,0.0601D0,0.8797D0,
661      &0.135D0,0.865D0,0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.02D0,
662      &0.055D0,2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,
663      &0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,0.0185D0,0.0135D0,
664      &0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,0.0019D0,0.0025D0,
665      &0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,1D0,0.3D0,0.15D0,
666      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.02D0,0.055D0,
667      &2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,
668      &0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0,
669      &0.018D0,0.015D0,0.0185D0,0.0135D0,0.025D0,0.0004D0,0.0007D0,
670      &0.0008D0,0.0014D0,0.0019D0,0.0025D0,0.4291D0,0.08D0,0.07D0,
671      &0.02D0,0.015D0,0.005D0,1D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,
672      &0.06D0,0.08D0,0.04D0,0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,
673      &0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,0.0035D0,
674      &0.011D0,0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,0.0185D0,
675      &0.0135D0,0.025D0,2*0.0002D0,0.0007D0,2*0.0004D0,0.0014D0,0.001D0,
676      &0.0009D0,0.0025D0,0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0/
677       DATA (BRAT(I)  ,I= 992,1183)/1D0,2*0.3D0,2*0.2D0,0.047D0,0.122D0,
678      &0.006D0,0.012D0,0.035D0,0.012D0,0.035D0,0.003D0,0.007D0,0.15D0,
679      &0.037D0,0.008D0,0.002D0,0.05D0,0.015D0,0.003D0,0.001D0,0.014D0,
680      &0.042D0,0.014D0,0.042D0,0.24D0,0.065D0,0.012D0,0.003D0,0.001D0,
681      &0.002D0,0.001D0,0.002D0,0.014D0,0.003D0,1D0,2*0.3D0,2*0.2D0,1D0,
682      &0.0252D0,0.0248D0,0.0267D0,0.015D0,0.045D0,0.015D0,0.045D0,
683      &0.7743D0,0.029D0,0.22D0,0.78D0,1D0,0.331D0,0.663D0,0.006D0,
684      &0.663D0,0.331D0,0.006D0,1D0,0.999D0,0.001D0,0.88D0,2*0.06D0,
685      &0.639D0,0.358D0,0.002D0,0.001D0,1D0,0.88D0,2*0.06D0,0.516D0,
686      &0.483D0,0.001D0,0.88D0,2*0.06D0,0.9988D0,0.0001D0,0.0006D0,
687      &0.0004D0,0.0001D0,0.667D0,0.333D0,0.9954D0,0.0011D0,0.0035D0,
688      &0.333D0,0.667D0,0.676D0,0.234D0,0.085D0,0.005D0,2*1D0,0.018D0,
689      &2*0.005D0,0.003D0,0.002D0,2*0.006D0,0.018D0,2*0.005D0,0.003D0,
690      &0.002D0,2*0.006D0,0.0066D0,0.025D0,0.016D0,0.0088D0,2*0.005D0,
691      &0.0058D0,0.005D0,0.0055D0,4*0.004D0,2*0.002D0,2*0.004D0,0.003D0,
692      &0.002D0,2*0.003D0,3*0.002D0,2*0.001D0,0.002D0,2*0.001D0,
693      &2*0.002D0,0.0013D0,0.0018D0,5*0.001D0,4*0.003D0,2*0.005D0,
694      &2*0.002D0,2*0.001D0,2*0.002D0,2*0.001D0,0.2432D0,0.057D0,
695      &2*0.035D0,0.15D0,2*0.075D0,0.03D0,2*0.015D0,2*0.08D0,0.76D0,
696      &0.08D0,4*1D0,2*0.08D0,0.76D0,0.08D0,1D0,2*0.5D0,1D0,2*0.5D0/
697       DATA (BRAT(I)  ,I=1184,1377)/2*0.08D0,0.76D0,0.08D0,1D0,2*0.08D0,
698      &0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,
699      &0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,0.08D0,2*1D0,2*0.105D0,
700      &0.04D0,0.0077D0,0.02D0,0.0235D0,0.0285D0,0.0435D0,0.0011D0,
701      &0.0022D0,0.0044D0,0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,
702      &2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,
703      &2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,
704      &4*1D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,
705      &0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,
706      &0.005D0,4*1D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
707      &0.015D0,0.005D0,1D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
708      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
709      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
710      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
711      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
712      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
713      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
714      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
715      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,
716      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0/
717       DATA (BRAT(I)  ,I=1378,1580)/0.015D0,0.005D0,2*0.105D0,0.04D0,
718      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
719      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
720      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
721      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
722      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
723      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
724      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,
725      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,0.52D0,0.26D0,
726      &0.11D0,2*0.055D0,0.333D0,0.334D0,0.333D0,0.667D0,0.333D0,0.28D0,
727      &0.14D0,0.313D0,0.157D0,0.11D0,0.667D0,0.333D0,0.28D0,0.14D0,
728      &0.313D0,0.157D0,0.11D0,0.36D0,0.18D0,0.03D0,2*0.015D0,2*0.2D0,
729      &4*0.25D0,0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,
730      &0.333D0,4*0.5D0,0.007D0,0.993D0,1D0,0.667D0,0.333D0,0.667D0,
731      &0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,8*0.5D0,0.02D0,0.98D0,
732      &1D0,4*0.5D0,3*0.146D0,3*0.05D0,0.15D0,2*0.05D0,4*0.024D0,0.066D0,
733      &0.667D0,0.333D0,0.667D0,0.333D0,4*0.25D0,0.667D0,0.333D0,0.667D0,
734      &0.333D0,2*0.5D0,0.273D0,0.727D0,0.667D0,0.333D0,0.667D0,0.333D0,
735      &4*0.5D0,0.35D0,0.65D0,2*0.0083D0,0.1866D0,0.324D0,0.184D0,
736      &0.027D0,0.001D0,0.093D0,0.087D0,0.078D0,0.0028D0,3*0.014D0/
737       DATA (BRAT(I)  ,I=1581,4149)/0.008D0,0.024D0,0.008D0,0.024D0,
738      &0.425D0,0.02D0,0.185D0,0.088D0,0.043D0,0.067D0,0.066D0,2404*0D0,
739      &0.017431D0,0.054048D0,0.857694D0,2*0D0,0.00025D0,0.070578D0,0D0,
740      &0.022748D0,0.026576D0,0.359486D0,0.561581D0,2*0D0,0.000104D0,
741      &0.029504D0,0.011185D0,0.034681D0,0.550354D0,2*0D0,0.00016D0,
742      &0.045287D0,0.358333D0,0.445781D0,0D0,0.554219D0,0.144051D0,
743      &2*0.351902D0,0D0,0.082107D0,0.029566D0,0.001511D0,0.000726D0,
744      &0.004518D0,0.006522D0,0.004518D0,0.006522D0,0.004513D0,3*0D0,
745      &0.002908D0,0.000973D0,0.002908D0,0.000973D0,0.002908D0,
746      &0.000973D0,2*0D0,0.143982D0,0.489888D0,0.1951D0,0D0,0.114302D0,
747      &0.008426D0,0.014868D0,0.000763D0,2*0D0,0.000763D0,0.01484D0,
748      &0.000003D0,2*0D0,0.000027D0,0.001945D0,5*0D0,3*0.00503D0,0D0,
749      &0.133776D0,0.003284D0,0.37169D0,0.006838D0,2*0.030954D0,
750      &0.00163D0,0D0,0.047224D0,0.073737D0,0.047224D0,0.073732D0,
751      &0.047179D0,3*0D0,0.034761D0,0.009166D0,0.034761D0,0.009166D0,
752      &0.034759D0,0.009166D0,2*0D0,4*0.009069D0,0.510147D0,0.453576D0,
753      &6*0D0,1D0,6*0D0,1D0,4*0.001128D0,0.571047D0,0.382288D0,
754      &0.042153D0,4*0.016597D0,0.93361D0,0D0,4*0.016597D0,0.93361D0,0D0,
755      &4*0.05515D0,0.34469D0,0D0,0.228998D0,0.164208D0,0.041503D0,
756      &0.850973D0,0.005411D0,0.045025D0,0.098591D0,0.849898D0/
757       DATA (BRAT(I)  ,I=4150,4280)/0.021617D0,0.030018D0,0.098466D0,
758      &0.294448D0,0.10945D0,0.596102D0,0.389906D0,0.610094D0,3*0.0633D0,
759      &0.063299D0,0.063295D0,0.056281D0,2*0D0,6*0.020495D0,2*0D0,
760      &0.327919D0,0.04099D0,0.045236D0,0.090112D0,0.19874D0,0.010204D0,
761      &0.000003D0,0.010205D0,0.198356D0,0.000151D0,0.000006D0,
762      &0.000367D0,0.081967D0,0.19874D0,0.010204D0,0.000003D0,0.010205D0,
763      &0.198356D0,0.000151D0,0.000006D0,0.000367D0,0.081967D0,4*0D0,
764      &0.198776D0,0.010206D0,0.000003D0,0.010207D0,0.19839D0,0.000151D0,
765      &0.000006D0,0.000367D0,0.081893D0,0.198776D0,0.010206D0,
766      &0.000003D0,0.010207D0,0.19839D0,0.000151D0,0.000006D0,0.000367D0,
767      &0.081893D0,4*0D0,0.199344D0,0.010234D0,0.000003D0,0.010236D0,
768      &0.198928D0,0.000149D0,0.000006D0,0.000368D0,0.080733D0,
769      &0.199344D0,0.010234D0,0.000003D0,0.010236D0,0.198928D0,
770      &0.000149D0,0.000006D0,0.000368D0,0.080733D0,4*0D0,0.184738D0,
771      &0.104588D0,0.184738D0,0.104587D0,0.184731D0,0.09582D0,0.022902D0,
772      &0.008429D0,0.015602D0,0.022902D0,0.008429D0,0.015602D0,
773      &0.022902D0,0.008429D0,0.015602D0,0.28959D0,0.01487D0,0.000008D0,
774      &0.01487D0,0.289061D0,0.000492D0,0.000009D0,0.000536D0,0.27911D0,
775      &2*0.037151D0,0.03715D0,0.090266D0,2*0.001805D0,0.090266D0,
776      &0.001805D0,0.812263D0,0.00179D0,0.090428D0,0.001809D0,0.001808D0/
777       DATA (BRAT(I)  ,I=4281,8000)/0.090428D0,0.001808D0,0.81372D0,0D0,
778      &3716*0D0/
779       DATA (KFDP(I,1),I=   1, 377)/21,22,23,4*-24,25,21,22,23,4*24,25,
780      &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23,
781      &4*24,25,37,1000022,1000023,1000025,1000035,1000021,1000039,21,22,
782      &23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23,-24,25,23,24,-12,
783      &22,23,-24,25,23,24,-12,-14,48*16,22,23,-24,25,23,24,22,23,-24,25,
784      &-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,
785      &3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1,4*-3,4*-5,4*-7,-11,-13,
786      &-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,1000022,
787      &2*1000023,3*1000025,4*1000035,2*1000024,2*1000037,1000001,
788      &2000001,1000001,-1000001,1000002,2000002,1000002,-1000002,
789      &1000003,2000003,1000003,-1000003,1000004,2000004,1000004,
790      &-1000004,1000005,2000005,1000005,-1000005,1000006,2000006,
791      &1000006,-1000006,1000011,2000011,1000011,-1000011,1000012,
792      &2000012,1000012,-1000012,1000013,2000013,1000013,-1000013,
793      &1000014,2000014,1000014,-1000014,1000015,2000015,1000015,
794      &-1000015,1000016,2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,12,
795      &13,14,15,16,17,18,24,37,2*23,25,35,4*-1,4*-3,4*-5,4*-7,-11,-13,
796      &-15,-17,3*24,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,23,25,24,
797      &37,23,25,36,1000022,2*1000023,3*1000025,4*1000035,2*1000024,
798      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002/
799       DATA (KFDP(I,1),I= 378, 580)/1000002,-1000002,1000003,2000003,
800      &1000003,-1000003,1000004,2000004,1000004,-1000004,1000005,
801      &2000005,1000005,-1000005,1000006,2000006,1000006,-1000006,
802      &1000011,2000011,1000011,-1000011,1000012,2000012,1000012,
803      &-1000012,1000013,2000013,1000013,-1000013,1000014,2000014,
804      &1000014,-1000014,1000015,2000015,1000015,-1000015,1000016,
805      &2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,
806      &24,23,25,24,37,1000022,2*1000023,3*1000025,4*1000035,2*1000024,
807      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002,
808      &1000002,-1000002,1000003,2000003,1000003,-1000003,1000004,
809      &2000004,1000004,-1000004,1000005,2000005,1000005,-1000005,
810      &1000006,2000006,1000006,-1000006,1000011,2000011,1000011,
811      &-1000011,1000012,2000012,1000012,-1000012,1000013,2000013,
812      &1000013,-1000013,1000014,2000014,1000014,-1000014,1000015,
813      &2000015,1000015,-1000015,1000016,2000016,1000016,-1000016,-1,-3,
814      &-5,-7,-11,-13,-15,-17,24,2*1000022,2*1000023,2*1000025,2*1000035,
815      &1000006,2000006,1000006,2000006,-1000001,-1000003,-1000011,
816      &-1000013,-1000015,-2000015,1,2,3,4,5,6,11,13,15,2,82,-11,-13,2*2,
817      &-12,-14,-16,2*-2,2*-4,-2,-4,2*22,211,111,221,13,11,213,-213,221,
818      &223,321,130,310,111,331,111,211,-12,12,-14,14,211,111,22,-13,-11/
819       DATA (KFDP(I,1),I= 581, 992)/2*211,213,113,221,223,321,211,331,
820      &22,111,211,2*22,211,22,111,211,22,211,221,111,11,211,111,2*211,
821      &321,130,310,221,111,211,111,130,310,321,2*311,321,311,323,313,
822      &323,313,321,3*311,-13,3*211,12,14,311,2*321,311,321,313,323,313,
823      &323,311,4*321,211,111,3*22,111,321,130,-213,113,213,211,22,111,
824      &11,13,211,321,130,310,221,211,111,11*-11,11*-13,-311,-313,-311,
825      &-313,-20313,2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,
826      &2*333,-311,-313,2*-321,211,-311,-321,333,-311,-313,-321,211,
827      &2*-321,2*-311,-321,211,113,421,2*411,421,411,423,413,423,413,421,
828      &411,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311,-313,2*-311,
829      &-321,-10323,-321,-323,-321,-311,2*-313,211,111,333,3*-321,-311,
830      &-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211,-321,3*-311,
831      &211,113,321,2*421,411,421,413,423,413,423,411,421,-15,5*-11,
832      &5*-13,221,331,333,221,331,333,10221,211,213,211,213,321,323,321,
833      &323,2212,221,331,333,221,2*2,2*431,421,411,423,413,82,11,13,82,
834      &443,82,6*12,6*14,2*16,3*-411,3*-413,2*-411,2*-413,2*441,2*443,
835      &2*20443,2*2,2*4,2,4,511,521,511,523,513,523,513,521,511,6*12,
836      &6*14,2*16,3*-421,3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,
837      &2*4,2,4,521,511,521,513,523,513,523,511,521,6*12,6*14,2*16,
838      &3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4,531/
839       DATA (KFDP(I,1),I= 993,1402)/521,511,523,513,16,2*4,2*12,2*14,
840      &2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13,2*-1,541,511,521,
841      &513,523,21,11,13,15,1,2,3,4,21,22,553,21,2112,2212,2*2112,2212,
842      &2112,2*2212,2112,-12,3122,3212,3112,2212,2*2112,-12,2*3122,3222,
843      &3112,2212,2112,2212,3122,3222,3212,3122,3112,-12,-14,-12,3322,
844      &3312,2*3122,3212,3322,3312,3122,3322,3312,-12,2*4122,7*-11,7*-13,
845      &2*2224,2*2212,2*2214,2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,
846      &3324,2*2224,7*2212,5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,
847      &2*3222,2*3224,4*2,3,2*2,1,2*2,-11,-13,2*2,4*4122,-11,-13,2*2,
848      &3*4132,3*4232,-11,-13,2*2,4332,-11,-13,2*2,-11,-13,2*2,-11,-13,
849      &2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,2*5122,-12,
850      &-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,
851      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,4*5122,-12,-14,-16,2*-2,
852      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,2*5132,2*5232,-12,-14,-16,
853      &2*-2,2*-4,-2,-4,5332,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,
854      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,
855      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,
856      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,
857      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,
858      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2/
859       DATA (KFDP(I,1),I=1403,1713)/2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,
860      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,
861      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,221,223,221,
862      &223,211,111,321,130,310,213,113,-213,321,311,321,311,323,313,
863      &2*311,321,311,321,313,323,321,211,111,321,130,310,2*211,313,-313,
864      &323,-323,421,411,423,413,411,421,413,423,411,421,423,413,443,
865      &2*82,521,511,523,513,511,521,513,523,521,511,523,513,511,521,513,
866      &523,553,2*21,213,-213,113,213,10211,10111,-10211,2*221,213,2*113,
867      &-213,2*321,2*311,113,323,2*313,323,313,-313,323,-323,423,2*413,
868      &2*423,413,443,82,523,2*513,2*523,2*513,523,553,21,11,13,82,4*443,
869      &10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553,10551,20553,555,
870      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,
871      &1000002,2000002,1000002,2000002,1000021,3*-12,3*-14,3*-16,12,11,
872      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,
873      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000001,
874      &2000001,1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,
875      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,
876      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,
877      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,
878      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000003/
879       DATA (KFDP(I,1),I=1714,1984)/2000003,1000003,2000003,1000021,
880      &3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,-1000037,1000022,
881      &1000023,1000025,1000035,1000006,2000006,1000006,2000006,1000021,
882      &3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,14,13,16,15,16,
883      &15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,1000022,1000023,
884      &1000025,1000035,1000005,2000005,1000005,2000005,1000021,1000022,
885      &1000016,-1000015,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,
886      &-1000037,1000022,1000023,1000025,1000035,1000012,2000012,1000012,
887      &2*12,2*14,2*16,3*-14,3*-16,3*-2,3*-4,3*-6,1000039,1000024,
888      &1000037,1000022,1000023,1000025,1000035,1000011,2000011,1000011,
889      &2000011,3*-13,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,
890      &1000022,1000023,1000025,1000035,1000014,2000014,1000014,2000014,
891      &2*12,2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,1000024,
892      &1000037,1000022,1000023,1000025,1000035,1000013,2000013,1000013,
893      &2000013,3*-11,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,
894      &1000022,1000023,1000025,1000035,1000016,2000016,1000016,2000016,
895      &2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,1000039,1000024,
896      &1000037,1000022,1000023,1000025,1000035,1000015,2000015,1000015,
897      &2000015,3*-11,3*-13,3*-1,3*-3,3*-5,1000039,1000001,-1000001,
898      &2000001,-2000001,1000002,-1000002,2000002,-2000002,1000003/
899       DATA (KFDP(I,1),I=1985,2321)/-1000003,2000003,-2000003,1000004,
900      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,
901      &1000006,-1000006,2000006,-2000006,6*1000022,6*1000023,6*1000025,
902      &6*1000035,1000024,-1000024,1000024,-1000024,1000024,-1000024,
903      &1000037,-1000037,1000037,-1000037,1000037,-1000037,-12,12,-11,11,
904      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,
905      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,
906      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,
907      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,
908      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,
909      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,
910      &-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039,4,1,-12,12,-12,12,-12,12,
911      &-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,14,-14,14,-14,14,
912      &-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,12,-11,11,-12,12,
913      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,
914      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,-14,14,
915      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,
916      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,-16,16,
917      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,
918      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,-4,4,-4/
919       DATA (KFDP(I,1),I=2322,2573)/4,-4,4,-6,6,-6,6,-6,6,5*1000039,
920      &16*1000022,1000024,-1000024,1000024,-1000024,1000024,-1000024,
921      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000037,
922      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037,
923      &1000037,-1000037,1000037,-1000037,1000024,-1000024,1000037,
924      &-1000037,1000001,-1000001,2000001,-2000001,1000002,-1000002,
925      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,
926      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,
927      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,
928      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,
929      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,
930      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,
931      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,
932      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,
933      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,
934      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,
935      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,
936      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,
937      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,
938      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16/
939       DATA (KFDP(I,1),I=2574,2892)/16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,
940      &-4,4,-6,6,-6,6,-6,6,2*1000039,6*1000022,6*1000023,6*1000025,
941      &6*1000035,1000022,1000023,1000025,1000035,1000002,2000002,
942      &-1000001,-2000001,1000004,2000004,-1000003,-2000003,1000006,
943      &2000006,-1000005,-2000005,1000012,2000012,-1000011,-2000011,
944      &1000014,2000014,-1000013,-2000013,1000016,2000016,-1000015,
945      &-2000015,2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,
946      &-12,12,-11,-12,12,-11,-14,-13,-14,-13,-14,-13,-14,14,-13,-14,14,
947      &-13,-14,14,-13,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,
948      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,
949      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-14,2*-13,14,
950      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,
951      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16,2*-15,16,-16,2*-15,16,
952      &-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,
953      &-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1,2,-1,3*2,-1,2*4,-3,
954      &3*4,-3,2*6,5*1000039,16*1000022,16*1000023,1000024,-1000024,
955      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000024,
956      &-1000024,1000024,-1000024,1000037,-1000037,1000037,-1000037,
957      &1000037,-1000037,1000037,-1000037,1000037,-1000037,1000037,
958      &-1000037,1000024,-1000024,1000037,-1000037,1000001,-1000001/
959       DATA (KFDP(I,1),I=2893,3182)/2000001,-2000001,1000002,-1000002,
960      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,
961      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,
962      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,
963      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,
964      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,
965      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,
966      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,
967      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,
968      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,
969      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,
970      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,
971      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,
972      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,
973      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,
974      &16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039,
975      &16*1000022,16*1000023,16*1000025,1000024,-1000024,1000024,
976      &-1000024,1000024,-1000024,1000024,-1000024,1000024,-1000024,
977      &1000024,-1000024,1000037,-1000037,1000037,-1000037,1000037,
978      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037/
979       DATA (KFDP(I,1),I=3183,3459)/1000024,-1000024,1000037,-1000037,
980      &1000001,-1000001,2000001,-2000001,1000002,-1000002,2000002,
981      &-2000002,1000003,-1000003,2000003,-2000003,1000004,-1000004,
982      &2000004,-2000004,1000005,-1000005,2000005,-2000005,1000006,
983      &-1000006,2000006,-2000006,1000011,-1000011,2000011,-2000011,
984      &1000012,-1000012,2000012,-2000012,1000013,-1000013,2000013,
985      &-2000013,1000014,-1000014,2000014,-2000014,1000015,-1000015,
986      &2000015,-2000015,1000016,-1000016,2000016,-2000016,5*1000021,-12,
987      &12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,
988      &14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,
989      &12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,
990      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,
991      &14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,
992      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,
993      &16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,
994      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,
995      &-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,2*1000039,15*1000024,
996      &6*1000022,6*1000023,6*1000025,6*1000035,1000022,1000023,1000025,
997      &1000035,1000002,2000002,-1000001,-2000001,1000004,2000004,
998      &-1000003,-2000003,1000006,2000006,-1000005,-2000005,1000012/
999       DATA (KFDP(I,1),I=3460,3782)/2000012,-1000011,-2000011,1000014,
1000      &2000014,-1000013,-2000013,1000016,2000016,-1000015,-2000015,
1001      &2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,
1002      &-12,12,-11,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,
1003      &-13,-14,14,-13,-16,16,-15,-16,16,-15,-16,16,-15,-16,16,-15,-16,
1004      &16,-15,-16,16,-15,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,
1005      &2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,
1006      &2*-11,12,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,
1007      &2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16,
1008      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,
1009      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1,
1010      &2,-1,3*2,-1,2*4,-3,3*4,-3,2*6,1000039,-1000024,-1000037,1000022,
1011      &1000023,1000025,1000035,4*1000001,1000002,2000002,1000002,
1012      &2000002,1000021,3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,
1013      &14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,
1014      &1000022,1000023,1000025,1000035,4*1000002,1000001,2000001,
1015      &1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,
1016      &-1000024,-1000037,1000022,1000023,1000025,1000035,4*1000003,
1017      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,
1018      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6/
1019       DATA (KFDP(I,1),I=3783,4127)/1000039,1000024,1000037,1000022,
1020      &1000023,1000025,1000035,4*1000004,1000003,2000003,1000003,
1021      &2000003,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,
1022      &-1000037,1000022,1000023,1000025,1000035,4*1000005,1000006,
1023      &2000006,1000006,2000006,1000021,3*-12,3*-14,3*-16,12,11,12,11,12,
1024      &11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,
1025      &1000024,1000037,1000022,1000023,1000025,1000035,4*1000006,
1026      &1000005,2000005,1000005,2000005,1000021,3*-11,3*-13,3*-15,2*-1,
1027      &-3,1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,
1028      &4*1000011,1000012,2000012,1000012,2000012,2*12,2*14,2*16,3*-14,
1029      &3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,1000022,1000023,
1030      &1000025,1000035,4*1000013,1000014,2000014,1000014,2000014,2*12,
1031      &2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,
1032      &1000022,1000023,1000025,1000035,4*1000015,1000016,2000016,
1033      &1000016,2000016,2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,3,4,5,
1034      &6,11,13,15,21,2*4,2,4,24,-11,-13,-15,3,4,5,6,11,13,15,21,5,6,21,
1035      &2*24,2*3000211,2*22,2*23,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,
1036      &2*24,3*3000211,24,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,22,23,22,
1037      &23,24,3000211,24,3000211,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,
1038      &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/
1039       DATA (KFDP(I,1),I=4128,8000)/5,6,1,2,3,4,5,6,1,2,3,4,5,6,21,
1040      &3100111,3200111,21,22,23,-24,21,22,23,24,22,23,-24,23,24,1,2,3,4,
1041      &5,6,7,8,11,12,13,14,15,16,17,18,21,22,23,24,9*11,9*-11,2*11,
1042      &2*-11,9*13,9*-13,2*13,2*-13,9*15,9*-15,2*15,2*-15,1,2,3,4,5,6,11,
1043      &12,9900012,13,14,9900014,15,16,9900016,3*-1,3*-3,3*-5,-11,-13,
1044      &-15,3*-11,2*-13,-15,24,3*-11,2*-13,-15,9900024,3716*0/
1045       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,
1046      &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,
1047      &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,
1048      &13,11,13,-211,-213,-211,-213,-211,-213,-211,-213,2*-211,-321,
1049      &-323,-321,2*-323,3*-321,4*-211,-213,-211,-213,-211,-213,-211,
1050      &-213,-211,-213,3*-211,-213,4*-211,-323,-321,2*-211,2*-321,3*-211,
1051      &2*15,16,15,16,15,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21,
1052      &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8,
1053      &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,
1054      &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,
1055      &-24,2*1000022,1000023,1000022,1000023,1000025,1000022,1000023,
1056      &1000025,1000035,-1000024,-1000037,-1000024,-1000037,-1000001,
1057      &2*-2000001,2000001,-1000002,2*-2000002,2000002,-1000003,
1058      &2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005,
1059      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,
1060      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,
1061      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,
1062      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6,
1063      &-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24,-37,22,25,2*36,2,4,6,8,
1064      &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/
1065       DATA (KFDP(I,2),I= 340, 533)/-7,-8,-11,-13,-15,-17,21,22,2*23,
1066      &-24,2*25,-37,-24,3*36,2*1000022,1000023,1000022,1000023,1000025,
1067      &1000022,1000023,1000025,1000035,-1000024,-1000037,-1000024,
1068      &-1000037,-1000001,2*-2000001,2000001,-1000002,2*-2000002,2000002,
1069      &-1000003,2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005,
1070      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,
1071      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,
1072      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,
1073      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6,
1074      &-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25,-37,-24,2*1000022,
1075      &1000023,1000022,1000023,1000025,1000022,1000023,1000025,1000035,
1076      &-1000024,-1000037,-1000024,-1000037,-1000001,2*-2000001,2000001,
1077      &-1000002,2*-2000002,2000002,-1000003,2*-2000003,2000003,-1000004,
1078      &2*-2000004,2000004,-1000005,2*-2000005,2000005,-1000006,
1079      &2*-2000006,2000006,-1000011,2*-2000011,2000011,-1000012,
1080      &2*-2000012,2000012,-1000013,2*-2000013,2000013,-1000014,
1081      &2*-2000014,2000014,-1000015,2*-2000015,2000015,-1000016,
1082      &2*-2000016,2000016,2,4,6,8,12,14,16,18,25,1000024,1000037,
1083      &1000024,1000037,1000024,1000037,1000024,1000037,2*-1000005,
1084      &2*-2000005,1000002,1000004,1000012,1000014,2*1000016,-3,-4,-5,-6/
1085       DATA (KFDP(I,2),I= 534, 938)/-7,-8,-13,-15,-17,11,-82,12,14,-1,
1086      &-3,11,13,15,1,4,3,4,1,3,22,11,-211,2*22,-13,-11,-211,211,111,211,
1087      &-321,130,310,22,2*111,-211,11,-11,13,-13,-211,111,22,14,12,111,
1088      &22,111,3*211,-311,22,211,22,111,-211,211,11,-211,13,22,-211,111,
1089      &-211,22,111,-11,-211,111,2*-211,-321,130,310,221,111,-211,111,
1090      &2*0,-211,111,22,-211,111,-211,111,-211,211,-213,113,223,221,14,
1091      &111,211,111,-11,-13,211,111,22,211,111,211,111,2*211,213,113,223,
1092      &221,22,-211,111,113,223,22,111,-321,310,211,111,2*-211,221,22,
1093      &-11,-13,-211,-321,130,310,221,-211,111,11*12,11*14,2*211,2*213,
1094      &211,20213,2*321,2*323,211,213,211,213,211,213,211,213,211,213,
1095      &211,213,3*211,213,211,2*321,8*211,2*113,3*211,111,22,211,111,211,
1096      &111,4*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,
1097      &211,2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310,
1098      &211,-211,4*211,321,4*211,113,2*211,-321,111,22,-211,111,-211,111,
1099      &-211,211,-211,211,16,5*12,5*14,3*211,3*213,211,2*111,2*113,
1100      &2*-311,2*-313,-2112,3*321,323,2*-1,22,111,321,311,321,311,-82,
1101      &-11,-13,-82,22,-82,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,
1102      &431,433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,22,
1103      &-211,111,-211,111,-211,211,-211,211,6*-11,6*-13,2*-15,211,213,
1104      &20213,211,213,20213,431,433,431,433,321,323,321,323,321,323,-1/
1105       DATA (KFDP(I,2),I= 939,1352)/-4,-3,-4,-1,-3,22,211,111,211,111,
1106      &4*211,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,
1107      &433,221,331,333,221,331,333,221,331,333,-1,-4,-3,-4,-1,-3,22,
1108      &-321,-311,-321,-311,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3,-4,-3,
1109      &-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,411,421,411,421,21,
1110      &-11,-13,-15,-1,-2,-3,-4,2*21,22,21,2*-211,111,22,111,211,22,211,
1111      &-211,11,2*-211,111,-211,111,22,11,22,111,-211,211,111,211,22,211,
1112      &111,211,-211,22,11,13,11,-211,2*111,2*22,111,211,-321,-211,111,
1113      &11,2*-211,7*12,7*14,-321,-323,-311,-313,-311,-313,211,213,211,
1114      &213,211,213,111,221,331,113,223,111,221,113,223,321,323,321,-211,
1115      &-213,111,221,331,113,223,333,10221,111,221,331,113,223,211,213,
1116      &211,213,321,323,321,323,321,323,311,313,311,313,2*-1,-3,-1,2203,
1117      &3201,3203,2203,2101,2103,12,14,-1,-3,2*111,2*211,12,14,-1,-3,22,
1118      &111,2*22,111,22,12,14,-1,-3,22,12,14,-1,-3,12,14,-1,-3,12,14,-1,
1119      &-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,2*-211,11,13,
1120      &15,-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,11,13,15,1,4,3,
1121      &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,
1122      &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,
1123      &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,
1124      &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/
1125       DATA (KFDP(I,2),I=1353,1815)/11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,
1126      &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,
1127      &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,
1128      &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,
1129      &2*111,2*211,-211,111,-321,130,310,-211,111,211,-211,111,-213,113,
1130      &-211,111,223,211,111,213,113,211,111,223,-211,111,-321,130,310,
1131      &2*-211,-311,311,-321,321,211,111,211,111,-211,111,-211,111,311,
1132      &2*321,311,22,2*-82,-211,111,-211,111,211,111,211,111,-321,-311,
1133      &-321,-311,411,421,411,421,22,2*21,-211,2*211,111,-211,111,2*211,
1134      &111,-211,211,111,211,-321,2*-311,-321,22,-211,111,211,111,-311,
1135      &311,-321,321,211,111,-211,111,321,311,22,-82,-211,111,211,111,
1136      &-321,-311,411,421,22,21,-11,-13,-82,211,111,221,111,4*22,-11,-13,
1137      &-15,-1,-2,-3,-4,2*21,211,111,3*22,1,2*2,4*1,2*-24,2*-37,2*1,3,5,
1138      &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,
1139      &-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,
1140      &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,
1141      &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,
1142      &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,
1143      &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,
1144      &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/
1145       DATA (KFDP(I,2),I=1816,2317)/11,13,11,13,15,11,13,15,1,3,5,1,3,5,
1146      &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,
1147      &13,2*14,4*13,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3,
1148      &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,
1149      &5,1,3,5,15,2*16,4*15,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,
1150      &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,
1151      &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,
1152      &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,
1153      &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,
1154      &-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,
1155      &-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,
1156      &-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,
1157      &-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,
1158      &-3,3,-1,1,-1,1,-3,3,22,23,25,35,36,-1,-3,-13,13,-13,13,-13,13,
1159      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,
1160      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,
1161      &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,
1162      &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,
1163      &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,
1164      &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/
1165       DATA (KFDP(I,2),I=2318,2770)/3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,22,
1166      &23,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,-24,24,11,
1167      &-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,-15,1,-1,3,
1168      &-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,-4,4,-5,5,-5,
1169      &5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13,13,-14,14,-14,
1170      &14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,
1171      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,
1172      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,
1173      &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,
1174      &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,
1175      &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,
1176      &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,
1177      &3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,24,37,24,-11,-13,-15,-1,-3,24,
1178      &-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,4*37,
1179      &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,
1180      &-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,16,2*-15,16,-15,
1181      &6*-11,-15,16,2*-15,16,2*-15,16,-15,6*-11,6*-13,-1,-2,-1,2,-1,-2,
1182      &-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,
1183      &-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,
1184      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1/
1185       DATA (KFDP(I,2),I=2771,3221)/2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,
1186      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1,
1187      &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,
1188      &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,
1189      &25,35,36,-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,
1190      &-13,15,-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,
1191      &-4,4,-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,
1192      &-13,13,-14,14,-14,14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,
1193      &13,-13,13,-13,13,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,
1194      &15,-15,15,-15,15,-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,
1195      &-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,
1196      &-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,
1197      &-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,
1198      &-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,
1199      &-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,
1200      &22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,
1201      &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,
1202      &-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,
1203      &-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,
1204      &-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13/
1205       DATA (KFDP(I,2),I=3222,3669)/13,-14,14,-14,14,-15,15,-15,15,-16,
1206      &16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,-15,15,-15,15,-15,15,
1207      &-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,
1208      &-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,
1209      &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,
1210      &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,
1211      &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,
1212      &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,
1213      &1,-1,1,-3,3,24,37,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,24,-11,
1214      &-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,
1215      &-13,-15,-1,-3,4*37,2*-1,2*2,2*-3,2*4,2*-5,2*6,2*-11,2*12,2*-13,
1216      &2*14,2*-15,2*16,-1,-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,
1217      &16,2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-15,16,2*-15,16,
1218      &2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-13,14,2*-13,14,2*-13,
1219      &14,-13,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,
1220      &-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,
1221      &-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,
1222      &6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,
1223      &-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1,2*4,
1224      &-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/
1225       DATA (KFDP(I,2),I=3670,4136)/2*-37,2*1,3,5,1,3,5,1,3,5,1,2,3,4,5,
1226      &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,
1227      &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,
1228      &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,
1229      &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,
1230      &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,
1231      &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,
1232      &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,
1233      &2*12,4*11,23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,
1234      &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,
1235      &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,
1236      &23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3,
1237      &5,1,3,5,1,3,5,-3,-4,-5,-6,-11,-13,-15,21,-1,-3,2*-5,5,12,14,16,
1238      &-3,-4,-5,-6,-11,-13,-15,21,-5,-6,21,-24,-3000211,-24,-3000211,
1239      &3000111,3000221,3000111,3000221,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,
1240      &-13,-14,-15,-16,-17,-18,23,3000111,23,3000111,22,3000221,2,4,6,8,
1241      &2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,2*3000111,2*3000221,-3000211,
1242      &2*-24,-3000211,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,
1243      &-17,-18,-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,-4,-5,-6,
1244      &21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,-1/
1245       DATA (KFDP(I,2),I=4137,8000)/-2,-3,-4,-5,-6,3*21,3*1,4*2,1,2*11,
1246      &2*12,11,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,
1247      &21,22,23,-24,3*-1,3*-3,3*-5,3*1,3*3,3*5,2*-13,2*15,3*-1,3*-3,
1248      &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,
1249      &2*13,-1,-2,-3,-4,-5,-6,-11,-12,9900012,-13,-14,9900014,-15,-16,
1250      &9900016,2,4,6,2,4,6,2,4,6,9900012,9900014,9900016,-11,-13,-15,
1251      &-13,2*-15,24,-11,-13,-15,-13,2*-15,9900024,3716*0/
1252       DATA (KFDP(I,3),I=   1,1021)/81*0,14,6*0,2*16,2*0,6*111,310,130,
1253      &2*0,3*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221,
1254      &2*113,221,2*113,2*213,-213,113,2*111,310,130,310,130,2*310,130,
1255      &402*0,4*3,4*4,1,4,3,2*2,0,-11,8*0,-211,5*0,2*111,211,-211,211,
1256      &-211,10*0,111,4*0,2*111,-211,-11,11,-13,22,111,3*0,22,3*0,111,
1257      &211,4*0,111,11*0,111,-211,6*0,-211,3*111,7*0,111,-211,5*0,2*221,
1258      &3*0,111,5*0,111,11*0,-311,-313,-311,-321,-313,-323,111,221,331,
1259      &113,223,-311,-313,-311,-321,-313,-323,111,221,331,113,223,22*0,
1260      &111,113,2*211,-211,-311,211,111,3*211,-211,7*211,7*0,111,-211,
1261      &111,-211,-321,-323,-311,-321,-313,-323,-211,-213,-321,-323,-311,
1262      &-321,-313,-323,-211,-213,22*0,111,113,-311,2*-211,211,-211,310,
1263      &-211,2*111,211,2*-211,-321,-211,2*211,-211,111,-211,2*211,6*0,
1264      &111,-211,111,-211,0,221,331,333,321,311,221,331,333,321,311,20*0,
1265      &3,13*0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413,
1266      &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,
1267      &111,-211,-421,-423,-10423,-10421,-20423,-425,-421,-423,-10423,
1268      &-10421,-20423,-425,-421,-423,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,
1269      &111,-211,-431,-433,-10433,-10431,-20433,-435,-431,-433,-10433,
1270      &-10431,-20433,-435,-431,-433,19*0,-4,-1,-4,-3,2*-2,8*0,441,443,
1271      &441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531,533,531,533,3,2,3,2/
1272       DATA (KFDP(I,3),I=1022,2223)/511,513,511,513,1,2,13*0,2*21,11*0,
1273      &2112,6*0,2212,12*0,2*3122,3212,10*0,3322,2*0,3122,3212,3214,2112,
1274      &2114,2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,6*0,
1275      &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,
1276      &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,
1277      &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,
1278      &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,
1279      &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,
1280      &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,
1281      &3,2*2,31*0,211,111,45*0,-211,2*111,-211,3*111,-211,111,211,30*0,
1282      &-211,111,13*0,2*21,-211,111,199*0,2*5,210*0,-1,-3,-5,-2,-4,-6,-1,
1283      &-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-2,2,-4,4,-6,
1284      &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,
1285      &-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,
1286      &-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,
1287      &-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,
1288      &-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,
1289      &-5,5,-5,5,5*0,11,12,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,
1290      &-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,
1291      &-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3/
1292       DATA (KFDP(I,3),I=2224,2783)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,
1293      &-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,
1294      &-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,
1295      &-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,
1296      &-5,5,-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,
1297      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12,
1298      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15,
1299      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,
1300      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,
1301      &-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,
1302      &-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,
1303      &-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,
1304      &-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,
1305      &-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,
1306      &4,0,12,14,16,2,4,0,12,14,16,2,4,28*0,2,4,12,-11,11,14,-13,13,16,
1307      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,11,14,13,16,15,12,-11,11,
1308      &14,-13,13,16,-15,15,12,11,14,13,16,15,12,11,14,13,16,15,2*2,1,-1,
1309      &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,
1310      &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,
1311      &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/
1312       DATA (KFDP(I,3),I=2784,3354)/2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,
1313      &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,
1314      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,
1315      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12,
1316      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15,
1317      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,
1318      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,
1319      &-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,
1320      &-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,
1321      &-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,
1322      &-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,
1323      &-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,-16,
1324      &-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,
1325      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,
1326      &-2,2,-4,4,2*0,-12,12,-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,
1327      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,
1328      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,
1329      &-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,
1330      &-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,
1331      &-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/
1332       DATA (KFDP(I,3),I=3355,8000)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,
1333      &-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,
1334      &-5,5,-3,3,-5,5,-5,5,3*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,
1335      &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,
1336      &28*0,2,4,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,
1337      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,
1338      &15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,15,
1339      &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,
1340      &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,
1341      &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,
1342      &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,
1343      &1,3,-3,5,-5,1,3,5,-5,1,5,-5,1,3,5,-5,1,3,351*0,-5,169*0,2,4,6,2,
1344      &4,6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900014,2*9900016,2,4,6,2,
1345      &4,6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900016,2,4,6,2,
1346      &4,6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900014,3757*0/
1347       DATA (KFDP(I,4),I=   1,8000)/94*0,4*111,6*0,111,2*0,-211,0,-211,
1348      &3*0,111,2*-211,0,111,0,2*111,113,221,2*111,-213,-211,211,113,
1349      &6*111,310,2*130,402*0,13*81,41*0,-11,10*0,111,-211,4*0,111,62*0,
1350      &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111,
1351      &-211,2*211,2*-211,13*0,-211,111,-211,111,4*0,-211,111,-211,111,
1352      &34*0,111,-211,3*111,3*-211,2*111,3*-211,14*0,-321,-311,3*0,-321,
1353      &-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,
1354      &2*-5,67*0,-211,111,5*0,-211,111,52*0,2101,2103,2*2101,6*0,4*81,
1355      &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,
1356      &162*81,31*0,-211,111,6516*0/
1357       DATA (KFDP(I,5),I=   1,8000)/96*0,2*111,17*0,111,7*0,2*111,0,
1358      &3*111,0,111,597*0,-211,2*111,-211,111,-211,111,65*0,111,-211,
1359      &3*111,-211,111,7193*0/
1360  
1361 C...PYDAT4, with particle names (character strings).
1362       DATA (CHAF(I,1),I=   1, 100)/'d','u','s','c','b','t','b''','t''',
1363      &2*' ','e-','nu_e','mu-','nu_mu','tau-','nu_tau','tau''-',
1364      &'nu''_tau',2*' ','g','gamma','Z0','W+','h0',6*' ','Z''0','Z"0',
1365      &'W''+','H0','A0','H+',' ','Graviton',' ','R0','LQ_ue',38*' ',
1366      &'specflav','rndmflav','phasespa','c-hadron','b-hadron',2*' ',
1367      &'junction',' ','system','cluster','string','indep.','CMshower',
1368      &'SPHEaxis','THRUaxis','CLUSjet','CELLjet','table',' '/
1369       DATA (CHAF(I,1),I= 101, 202)/'reggeon','pi0',
1370      &'rho0','a_20','K_L0','pi+','rho+','a_2+','eta','omega','f_2',
1371      &'K_S0','K0','K*0','K*_20','K+','K*+','K*_2+','eta''','phi',
1372      &'f''_2','D+','D*+','D*_2+','D0','D*0','D*_20','D_s+','D*_s+',
1373      &'D*_2s+','eta_c','J/psi','chi_2c','B0','B*0','B*_20','B+','B*+',
1374      &'B*_2+','B_s0','B*_s0','B*_2s0','B_c+','B*_c+','B*_2c+','eta_b',
1375      &'Upsilon','chi_2b','pomeron','dd_1','Delta-','ud_0','ud_1','n0',
1376      &'Delta0','uu_1','p+','Delta+','Delta++','sd_0','sd_1','Sigma-',
1377      &'Sigma*-','Lambda0','su_0','su_1','Sigma0','Sigma*0','Sigma+',
1378      &'Sigma*+','ss_1','Xi-','Xi*-','Xi0','Xi*0','Omega-','cd_0',
1379      &'cd_1','Sigma_c0','Sigma*_c0','Lambda_c+','Xi_c0','cu_0','cu_1',
1380      &'Sigma_c+','Sigma*_c+','Sigma_c++','Sigma*_c++','Xi_c+','cs_0',
1381      &'cs_1','Xi''_c0','Xi*_c0','Xi''_c+','Xi*_c+','Omega_c0',
1382      &'Omega*_c0','cc_1','Xi_cc+','Xi*_cc+','Xi_cc++','Xi*_cc++'/
1383       DATA (CHAF(I,1),I= 203, 332)/'Omega_cc+','Omega*_cc+',
1384      &'Omega*_ccc++','bd_0','bd_1','Sigma_b-','Sigma*_b-','Lambda_b0',
1385      &'Xi_b-','Xi_bc0','bu_0','bu_1','Sigma_b0','Sigma*_b0','Sigma_b+',
1386      &'Sigma*_b+','Xi_b0','Xi_bc+','bs_0','bs_1','Xi''_b-','Xi*_b-',
1387      &'Xi''_b0','Xi*_b0','Omega_b-','Omega*_b-','Omega_bc0','bc_0',
1388      &'bc_1','Xi''_bc0','Xi*_bc0','Xi''_bc+','Xi*_bc+','Omega''_bc0',
1389      &'Omega*_bc0','Omega_bcc+','Omega*_bcc+','bb_1','Xi_bb-',
1390      &'Xi*_bb-','Xi_bb0','Xi*_bb0','Omega_bb-','Omega*_bb-',
1391      &'Omega_bbc0','Omega*_bbc0','Omega*_bbb-','a_00','b_10','a_0+',
1392      &'b_1+','f_0','h_1','K*_00','K_10','K*_0+','K_1+','f''_0','h''_1',
1393      &'D*_0+','D_1+','D*_00','D_10','D*_0s+','D_1s+','chi_0c','h_1c',
1394      &'B*_00','B_10','B*_0+','B_1+','B*_0s0','B_1s0','B*_0c+','B_1c+',
1395      &'chi_0b','h_1b','a_10','a_1+','f_1','K*_10','K*_1+','f''_1',
1396      &'D*_1+','D*_10','D*_1s+','chi_1c','B*_10','B*_1+','B*_1s0',
1397      &'B*_1c+','chi_1b','psi''','Upsilon''','~d_L','~u_L','~s_L',
1398      &'~c_L','~b_1','~t_1','~e_L-','~nu_eL','~mu_L-','~nu_muL',
1399      &'~tau_1-','~nu_tauL','~g','~chi_10','~chi_20','~chi_1+',
1400      &'~chi_30','~chi_40','~chi_2+','~Gravitino','~d_R','~u_R','~s_R',
1401      &'~c_R','~b_2','~t_2','~e_R-','~nu_eR','~mu_R-','~nu_muR',
1402      &'~tau_2-','~nu_tauR','pi_tc0','pi_tc+','pi''_tc0','eta_tc0'/
1403       DATA (CHAF(I,1),I= 333, 500)/'rho_tc0','rho_tc+','omega_tc',
1404      &'V8_tc','pi_22_1_tc','pi_22_8_tc','rho_11_tc','rho_12_tc',
1405      &'rho_21_tc','rho_22_tc','d*','u*','e*-','nu*_e0','Graviton*',
1406      &'nu_Re','nu_Rmu','nu_Rtau','Z_R0','W_R+','H_L++','H_R++',
1407      &'rho_diff0','pi_diffr+','omega_di','phi_diff','J/psi_di',
1408      &'n_diffr0','p_diffr+',139*' '/
1409       DATA (CHAF(I,2),I=   1, 205)/'dbar','ubar','sbar','cbar','bbar',
1410      &'tbar','b''bar','t''bar',2*' ','e+','nu_ebar','mu+','nu_mubar',
1411      &'tau+','nu_taubar','tau''+','nu''_taubar',5*' ','W-',9*' ',
1412      &'W''-',2*' ','H-',3*' ','Rbar0','LQ_uebar',39*' ','rndmflavbar',
1413      &' ','c-hadronbar','b-hadronbar',20*' ','pi-','rho-','a_2-',4*' ',
1414      &'Kbar0','K*bar0','K*_2bar0','K-','K*-','K*_2-',3*' ','D-','D*-',
1415      &'D*_2-','Dbar0','D*bar0','D*_2bar0','D_s-','D*_s-','D*_2s-',
1416      &3*' ','Bbar0','B*bar0','B*_2bar0','B-','B*-','B*_2-','B_sbar0',
1417      &'B*_sbar0','B*_2sbar0','B_c-','B*_c-','B*_2c-',4*' ','dd_1bar',
1418      &'Deltabar+','ud_0bar','ud_1bar','nbar0','Deltabar0','uu_1bar',
1419      &'pbar-','Deltabar-','Deltabar--','sd_0bar','sd_1bar','Sigmabar+',
1420      &'Sigma*bar+','Lambdabar0','su_0bar','su_1bar','Sigmabar0',
1421      &'Sigma*bar0','Sigmabar-','Sigma*bar-','ss_1bar','Xibar+',
1422      &'Xi*bar+','Xibar0','Xi*bar0','Omegabar+','cd_0bar','cd_1bar',
1423      &'Sigma_cbar0','Sigma*_cbar0','Lambda_cbar-','Xi_cbar0','cu_0bar',
1424      &'cu_1bar','Sigma_cbar-','Sigma*_cbar-','Sigma_cbar--',
1425      &'Sigma*_cbar--','Xi_cbar-','cs_0bar','cs_1bar','Xi''_cbar0',
1426      &'Xi*_cbar0','Xi''_cbar-','Xi*_cbar-','Omega_cbar0',
1427      &'Omega*_cbar0','cc_1bar','Xi_ccbar-','Xi*_ccbar-','Xi_ccbar--',
1428      &'Xi*_ccbar--','Omega_ccbar-','Omega*_ccbar-','Omega*_cccbar-'/
1429       DATA (CHAF(I,2),I= 206, 325)/'bd_0bar','bd_1bar','Sigma_bbar+',
1430      &'Sigma*_bbar+','Lambda_bbar0','Xi_bbar+','Xi_bcbar0','bu_0bar',
1431      &'bu_1bar','Sigma_bbar0','Sigma*_bbar0','Sigma_bbar-',
1432      &'Sigma*_bbar-','Xi_bbar0','Xi_bcbar-','bs_0bar','bs_1bar',
1433      &'Xi''_bbar+','Xi*_bbar+','Xi''_bbar0','Xi*_bbar0','Omega_bbar+',
1434      &'Omega*_bbar+','Omega_bcbar0','bc_0bar','bc_1bar','Xi''_bcbar0',
1435      &'Xi*_bcbar0','Xi''_bcbar-','Xi*_bcbar-','Omega''_bcba',
1436      &'Omega*_bcbar0','Omega_bccbar-','Omega*_bccbar-','bb_1bar',
1437      &'Xi_bbbar+','Xi*_bbbar+','Xi_bbbar0','Xi*_bbbar0','Omega_bbbar+',
1438      &'Omega*_bbbar+','Omega_bbcbar0','Omega*_bbcbar0',
1439      &'Omega*_bbbbar+',2*' ','a_0-','b_1-',2*' ','K*_0bar0','K_1bar0',
1440      &'K*_0-','K_1-',2*' ','D*_0-','D_1-','D*_0bar0','D_1bar0',
1441      &'D*_0s-','D_1s-',2*' ','B*_0bar0','B_1bar0','B*_0-','B_1-',
1442      &'B*_0sbar0','B_1sbar0','B*_0c-','B_1c-',3*' ','a_1-',' ',
1443      &'K*_1bar0','K*_1-',' ','D*_1-','D*_1bar0','D*_1s-',' ',
1444      &'B*_1bar0','B*_1-','B*_1sbar0','B*_1c-',3*' ','~d_Lbar',
1445      &'~u_Lbar','~s_Lbar','~c_Lbar','~b_1bar','~t_1bar','~e_L+',
1446      &'~nu_eLbar','~mu_L+','~nu_muLbar','~tau_1+','~nu_tauLbar',3*' ',
1447      &'~chi_1-',2*' ','~chi_2-',' ','~d_Rbar','~u_Rbar','~s_Rbar',
1448      &'~c_Rbar','~b_2bar','~t_2bar','~e_R+','~nu_eRbar','~mu_R+'/
1449       DATA (CHAF(I,2),I= 326, 500)/'~nu_muRbar','~tau_2+',
1450      &'~nu_tauRbar',' ','pi_tc-',3*' ','rho_tc-',8*' ','d*bar','u*bar',
1451      &'e*bar+','nu*_ebar0',5*' ','W_R-','H_L--','H_R--',' ',
1452      &'pi_diffr-',3*' ','n_diffrbar0','p_diffrbar-',139*' '/
1453  
1454 C...PYDATR, with initial values for the random number generator.
1455       DATA MRPY/19780503,0,0,97,33,0/
1456  
1457 C...Default values for allowed processes and kinematics constraints.
1458       DATA MSEL/1/
1459       DATA MSUB/500*0/
1460       DATA ((KFIN(I,J),J=-40,40),I=1,2)/16*0,4*1,4*0,6*1,5*0,5*1,0,
1461      &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,
1462      &6*1,4*0,4*1,16*0/
1463       DATA CKIN/
1464      &  2.0D0, -1.0D0,  0.0D0, -1.0D0,  1.0D0,
1465      &  1.0D0,  -10D0,   10D0,  -40D0,   40D0,
1466      1  -40D0,   40D0,  -40D0,   40D0,  -40D0,
1467      1   40D0, -1.0D0,  1.0D0, -1.0D0,  1.0D0,
1468      2  0.0D0,  1.0D0,  0.0D0,  1.0D0, -1.0D0,
1469      2  1.0D0, -1.0D0,  1.0D0,    0D0,    0D0,
1470      3  2.0D0, -1.0D0,    0D0,    0D0,  0.0D0,
1471      3 -1.0D0,  0.0D0, -1.0D0,  4.0D0, -1.0D0,
1472      4 12.0D0, -1.0D0, 12.0D0, -1.0D0, 12.0D0,
1473      4 -1.0D0, 12.0D0, -1.0D0,    0D0,    0D0,
1474      5  0.0D0, -1.0D0,  0.0D0, -1.0D0,  0.0D0,
1475      5 -1.0D0,    0D0,    0D0,    0D0,    0D0,
1476      6 0.0001D0, 0.99D0, 0.0001D0, 0.99D0,    0D0,
1477      6   -1D0,    0D0,   -1D0,    0D0,   -1D0,
1478      7    0D0,   -1D0, 0.0001D0, 0.99D0, 0.0001D0,
1479      7 0.99D0,    2D0,   -1D0,    0D0,    0D0,
1480      8  120*0D0/
1481  
1482 C...Default values for main switches and parameters. Reset information.
1483       DATA (MSTP(I),I=1,100)/
1484      &  3,    1,    2,    0,    0,    0,    0,    0,    0,    0,
1485      1  1,    0,    1,   30,    0,    1,    4,    3,    4,    3,
1486      2  1,    0,    1,    0,    0,    0,    0,    0,    0,    1,
1487      3  1,    8,    0,    1,    0,    2,    1,    5,    2,    0,
1488      4  2,    1,    3,    7,    3,    1,    1,    0,    1,    0,
1489      5  7,    1,    3,    1,    5,    1,    1,    5,    1,    7,
1490      6  2,    3,    2,    2,    1,    5,    2,    1,    0,    0,
1491      7  1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1492      8  1,    1,  100,    0,    0,    2,    0,    0,    0,    0,
1493      9  1,    3,    1,    3,    0,    0,    0,    0,    0,    0/
1494       DATA (MSTP(I),I=101,200)/
1495      &  3,    1,    0,    0,    0,    0,    0,    0,    0,    0,
1496      1  1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
1497      2  0,    1,    2,    1,    1,  100,    0,    0,   10,    0,
1498      3  0,    4,    0,    1,    0,    0,    0,    0,    0,    0,
1499      4  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1500      5  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1501      6  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1502      7  0,    2,    0,    0,    0,    0,    0,    0,    0,    0,
1503      8  6,  214, 2003,   01,   22,    0,    0,    0,    0,    0,
1504      9  0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1505       DATA (PARP(I),I=1,100)/
1506      &  0.25D0,  10D0, 8*0D0,
1507      1  0D0, 0D0, 1.0D0, 0.01D0, 0.5D0, 1.0D0, 1.0D0, 0.4D0, 2*0D0,
1508      2  10*0D0,
1509      3  1.5D0,2.0D0,0.075D0,1.0D0,0.2D0,0D0,1.0D0,0.70D0,0.006D0,0D0,
1510      4  0.02D0,2.0D0,0.10D0,1000D0,2054D0,123D0,246D0,50D0,0D0,0.054D0,
1511      5  10*0D0,
1512      6  0.25D0, 1.0D0,0.25D0, 1.0D0, 2.0D0,1D-3, 1.0D0,1D-3,2*0D0,
1513      7  4.0D0, 0.25D0, 8*0D0,
1514      8  1.90D0, 1.90D0, 0.5D0, 0.2D0, 0.33D0,
1515      8  0.66D0, 0.7D0, 0.5D0, 1000D0, 0.16D0,
1516      9  1.0D0,0.40D0,5.0D0,1.0D0,0D0,3.0D0,1.0D0,0.75D0,1.0D0,5.0D0/
1517       DATA (PARP(I),I=101,200)/
1518      &  0.5D0, 0.28D0,  1.0D0, 0.8D0, 0D0, 0D0, 0D0, 0D0, 0D0, 1D0,
1519      1  2.0D0, 3*0D0, 1.5D0, 0.5D0, 0.6D0, 2.5D0, 2.0D0, 1.0D0,
1520      2  1.0D0,  0.4D0, 8*0D0,
1521      3  0.01D0, 9*0D0,
1522      4  10*0D0,
1523      5  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
1524      6  2.20D0, 23.6D0, 18.4D0, 11.5D0, 0.5D0, 0D0, 0D0, 0D0, 2*0D0,
1525      7  0D0,   0D0,   0D0,  1.0D0, 6*0D0,
1526      8  0.1D0, 0.01D0, 0.01D0, 0.01D0, 0.1D0, 0.01D0, 0.01D0, 0.01D0,
1527      8  0.3D0, 0.64D0,
1528      9  0.64D0, 5.0D0, 8*0D0/
1529       DATA MSTI/200*0/
1530       DATA PARI/200*0D0/
1531       DATA MINT/400*0/
1532       DATA VINT/400*0D0/
1533  
1534 C...Constants for the generation of the various processes.
1535       DATA (ISET(I),I=1,100)/
1536      &  1,    1,    1,   -1,    3,   -1,   -1,    3,   -2,    2,
1537      1  2,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1538      2 -1,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1539      3  2,    2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,
1540      4 -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1541      5 -1,   -1,    2,    2,   -1,   -1,   -1,    2,   -1,   -1,
1542      6 -1,   -1,   -1,   -1,   -1,   -1,   -1,    2,    2,    2,
1543      7  4,    4,    4,   -1,   -1,    4,    4,   -1,   -1,    2,
1544      8  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1545      9  0,    0,    0,    0,    0,    9,   -2,   -2,    8,   -2/
1546       DATA (ISET(I),I=101,200)/
1547      & -1,    1,    1,    1,    1,    2,    2,    2,   -2,    2,
1548      1  2,    2,    2,    2,    2,   -1,   -1,   -1,   -2,   -2,
1549      2  5,    5,    5,    5,   -2,   -2,   -2,   -2,   -2,   -2,
1550      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1551      4  1,    1,    1,    1,    1,    1,    1,    1,    1,   -2,
1552      5  1,    1,    1,   -2,   -2,    1,    1,    1,   -2,   -2,
1553      6  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1554      7  2,    2,    5,    5,   -2,    2,    2,    5,    5,   -2,
1555      8  5,    5,    2,    2,    2,    5,    5,    2,    2,    2,
1556      9  1,    1,    1,    2,    2,   -2,   -2,   -2,   -2,   -2/
1557       DATA (ISET(I),I=201,300)/
1558      &  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1559      1  2,    2,    2,    2,   -2,    2,    2,    2,    2,    2,
1560      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1561      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1562      4  2,    2,    2,    2,   -1,    2,    2,    2,    2,    2,
1563      5  2,    2,    2,    2,   -1,    2,   -1,    2,    2,   -2,
1564      6  2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,   -1,
1565      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1566      8  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1567      9  2,    2,    2,    2,    2,    2,    2,    2,    2,    2/
1568       DATA (ISET(I),I=301,500)/
1569      &  2,   39*-2,
1570      4  1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
1571      5  5,    5,    1,    1,   -1,   -1,   -1,   -1,   -1,   -1,
1572      6  2,    2,    2,    2,    2,    2,    2,    2,   -1,    2,
1573      7  2,    2,    2,    2,    2,    2,    2,   -1,   -1,   -1,
1574      8  2,    2,    2,    2,    2,    2,    2,    2,   -2,   -2,
1575      9  1,    1,    2,    2,    2, 5*-2,
1576      &  100*-2/
1577       DATA ((KFPR(I,J),J=1,2),I=1,50)/
1578      &  23,    0,   24,    0,   25,    0,   24,    0,   25,    0,
1579      &  24,    0,   23,    0,   25,    0,    0,    0,    0,    0,
1580      1   0,    0,    0,    0,   21,   21,   21,   22,   21,   23,
1581      1  21,   24,   21,   25,   22,   22,   22,   23,   22,   24,
1582      2  22,   25,   23,   23,   23,   24,   23,   25,   24,   24,
1583      2  24,   25,   25,   25,    0,   21,    0,   22,    0,   23,
1584      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1585      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1586      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1587      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23/
1588       DATA ((KFPR(I,J),J=1,2),I=51,100)/
1589      5   0,   24,    0,   25,    0,    0,    0,    0,    0,    0,
1590      5   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1591      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1592      6   0,    0,    0,    0,   21,   21,   24,   24,   23,   24,
1593      7  23,   23,   24,   24,   23,   24,   23,   25,   22,   22,
1594      7  23,   23,   24,   24,   24,   25,   25,   25,    0,  211,
1595      8   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1596      8 443,   21,10441,   21,20443,   21,  445,   21,    0,    0,
1597      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1598      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1599       DATA ((KFPR(I,J),J=1,2),I=101,150)/
1600      &  23,    0,   25,    0,   25,    0,10441,    0,  445,    0,
1601      & 443,   22,  443,   21,  443,   22,    0,    0,   22,   25,
1602      1  21,   25,    0,   25,   21,   25,   22,   22,   21,   22,
1603      1  22,   23,   23,   23,   24,   24,    0,    0,    0,    0,
1604      2  25,    6,   25,    6,   25,    0,   25,    0,    0,    0,
1605      2   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1606      3   0,   21,    0,   21,    0,   22,    0,   22,    0,    0,
1607      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1608      4  32,    0,   34,    0,   37,    0,   41,    0,   42,    0,
1609      4 4000011, 0, 4000001, 0, 4000002, 0, 3000331, 0,   0,    0/
1610       DATA ((KFPR(I,J),J=1,2),I=151,200)/
1611      5  35,    0,   35,    0,   35,    0,    0,    0,    0,    0,
1612      5  36,    0,   36,    0,   36,    0,    0,    0,    0,    0,
1613      6   6,   37,   42,    0,   42,   42,   42,   42,   11,    0,
1614      6  11,    0, 0, 4000001, 0, 4000002, 0, 4000011,    0,    0,
1615      7  23,   35,   24,   35,   35,    0,   35,    0,    0,    0,
1616      7  23,   36,   24,   36,   36,    0,   36,    0,    0,    0,
1617      8  35,    6,   35,    6,   21,   35,    0,   35,   21,   35,
1618      8  36,    6,   36,    6,   21,   36,    0,   36,   21,   36,
1619      9  3000113, 0, 3000213, 0, 3000223, 0, 11,    0,   11,    0,
1620      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1621       DATA ((KFPR(I,J),J=1,2),I=201,240)/
1622      &  1000011,   1000011,   2000011,   2000011,   1000011,
1623      &  2000011,   1000013,   1000013,   2000013,   2000013,
1624      &  1000013,   2000013,   1000015,   1000015,   2000015,
1625      &  2000015,   1000015,   2000015,   1000011,   1000012,
1626      1  1000015,   1000016,   2000015,   1000016,   1000012,
1627      1  1000012,   1000016,   1000016,         0,         0,
1628      1  1000022,   1000022,   1000023,   1000023,   1000025,
1629      1  1000025,   1000035,   1000035,   1000022,   1000023,
1630      2  1000022,   1000025,   1000022,   1000035,   1000023,
1631      2  1000025,   1000023,   1000035,   1000025,   1000035,
1632      2  1000024,   1000024,   1000037,   1000037,   1000024,
1633      2  1000037,   1000022,   1000024,   1000023,   1000024,
1634      3  1000025,   1000024,   1000035,   1000024,   1000022,
1635      3  1000037,   1000023,   1000037,   1000025,   1000037,
1636      3  1000035,   1000037,   1000021,   1000022,   1000021,
1637      3  1000023,   1000021,   1000025,   1000021,   1000035/
1638       DATA ((KFPR(I,J),J=1,2),I=241,280)/
1639      4  1000021,   1000024,   1000021,   1000037,   1000021,
1640      4  1000021,   1000021,   1000021,         0,         0,
1641      4  1000002,   1000022,   2000002,   1000022,   1000002,
1642      4  1000023,   2000002,   1000023,   1000002,   1000025,
1643      5  2000002,   1000025,   1000002,   1000035,   2000002,
1644      5  1000035,   1000001,   1000024,   2000005,   1000024,
1645      5  1000001,   1000037,   2000005,   1000037,   1000002,
1646      5  1000021,   2000002,   1000021,         0,         0,
1647      6  1000006,   1000006,   2000006,   2000006,   1000006,
1648      6  2000006,   1000006,   1000006,   2000006,   2000006,
1649      6        0,         0,         0,         0,         0,
1650      6        0,         0,         0,         0,         0,
1651      7  1000002,   1000002,   2000002,   2000002,   1000002,
1652      7  2000002,   1000002,   1000002,   2000002,   2000002,
1653      7  1000002,   2000002,   1000002,   1000002,   2000002,
1654      7  2000002,   1000002,   1000002,   2000002,   2000002/
1655       DATA ((KFPR(I,J),J=1,2),I=281,350)/
1656      8  1000005,   1000002,   2000005,   2000002,   1000005,
1657      8  2000002,   1000005,   1000002,   2000005,   2000002,
1658      8  1000005,   2000002,   1000005,   1000005,   2000005,
1659      8  2000005,   1000005,   1000005,   2000005,   2000005,
1660      9  1000005,   1000005,   2000005,   2000005,   1000005,
1661      9  2000005,   1000005,   1000021,   2000005,   1000021,
1662      9  1000005,   2000005,        37,        25,        37,
1663      9       35,        36,        25,        36,        35,
1664      &       37,        37,      78*0,
1665      4  9900041,         0,   9900042,         0,   9900041,
1666      4       11,   9900042,        11,   9900041,        13,
1667      4  9900042,        13,   9900041,        15,   9900042,
1668      4       15,   9900041,   9900041,   9900042,   9900042/
1669       DATA ((KFPR(I,J),J=1,2),I=351,500)/
1670      5  9900041,         0,   9900042,         0,   9900023,
1671      5        0,   9900024,         0,         0,         0,
1672      5        0,         0,         0,         0,         0,
1673      5        0,         0,         0,         0,         0,
1674      6       24,        24,        24,   3000211,   3000211,
1675      6  3000211,        22,   3000111,        22,   3000221,
1676      6       23,   3000111,        23,   3000221,        24,
1677      6  3000211,         0,         0,        24,        23,
1678      7       24,   3000111,   3000211,        23,   3000211,
1679      7  3000111,        22,   3000211,        23,   3000211,
1680      7       24,   3000111,        24,   3000221,         0,
1681      7        0,         0,         0,         0,         0,
1682      8   0,    0,    0,    0,   21,   21,    0,   21,    0,    0,
1683      8  21,   21,    0,    0,    0,    0,    0,    0,    0,    0,
1684      9  5000039,         0,   5000039,         0,        21,
1685      9  5000039,         0,   5000039,        21,   5000039,
1686      9     10*0,
1687      &    200*0/
1688       DATA COEF/10000*0D0/
1689       DATA (((ICOL(I,J,K),K=1,2),J=1,4),I=1,40)/
1690      &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,
1691      &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,
1692      &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,
1693      &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,
1694      &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,
1695      &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,
1696      &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,
1697      &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,
1698      &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,
1699      &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/
1700  
1701 C...Treatment of resonances.
1702       DATA (MWID(I)  ,I=   1, 500)/5*0,3*1,8*0,1,5*0,3*1,6*0,1,0,4*1,
1703      &3*0,2*1,254*0,19*2,0,7*2,0,2,0,2,0,26*1,146*0/
1704  
1705 C...Character constants: name of processes.
1706       DATA PROC(0)/                    'All included subprocesses   '/
1707       DATA (PROC(I),I=1,20)/
1708      &'f + fbar -> gamma*/Z0       ',  'f + fbar'' -> W+/-           ',
1709      &'f + fbar -> h0              ',  'gamma + W+/- -> W+/-        ',
1710      &'Z0 + Z0 -> h0               ',  'Z0 + W+/- -> W+/-           ',
1711      &'                            ',  'W+ + W- -> h0               ',
1712      &'                            ',  'f + f'' -> f + f'' (QFD)      ',
1713      1'f + f'' -> f + f'' (QCD)      ','f + fbar -> f'' + fbar''      ',
1714      1'f + fbar -> g + g           ',  'f + fbar -> g + gamma       ',
1715      1'f + fbar -> g + Z0          ',  'f + fbar'' -> g + W+/-       ',
1716      1'f + fbar -> g + h0          ',  'f + fbar -> gamma + gamma   ',
1717      1'f + fbar -> gamma + Z0      ',  'f + fbar'' -> gamma + W+/-   '/
1718       DATA (PROC(I),I=21,40)/
1719      2'f + fbar -> gamma + h0      ',  'f + fbar -> Z0 + Z0         ',
1720      2'f + fbar'' -> Z0 + W+/-      ', 'f + fbar -> Z0 + h0         ',
1721      2'f + fbar -> W+ + W-         ',  'f + fbar'' -> W+/- + h0      ',
1722      2'f + fbar -> h0 + h0         ',  'f + g -> f + g              ',
1723      2'f + g -> f + gamma          ',  'f + g -> f + Z0             ',
1724      3'f + g -> f'' + W+/-          ', 'f + g -> f + h0             ',
1725      3'f + gamma -> f + g          ',  'f + gamma -> f + gamma      ',
1726      3'f + gamma -> f + Z0         ',  'f + gamma -> f'' + W+/-      ',
1727      3'f + gamma -> f + h0         ',  'f + Z0 -> f + g             ',
1728      3'f + Z0 -> f + gamma         ',  'f + Z0 -> f + Z0            '/
1729       DATA (PROC(I),I=41,60)/
1730      4'f + Z0 -> f'' + W+/-         ', 'f + Z0 -> f + h0            ',
1731      4'f + W+/- -> f'' + g          ', 'f + W+/- -> f'' + gamma      ',
1732      4'f + W+/- -> f'' + Z0         ', 'f + W+/- -> f'' + W+/-       ',
1733      4'f + W+/- -> f'' + h0         ', 'f + h0 -> f + g             ',
1734      4'f + h0 -> f + gamma         ',  'f + h0 -> f + Z0            ',
1735      5'f + h0 -> f'' + W+/-         ', 'f + h0 -> f + h0            ',
1736      5'g + g -> f + fbar           ',  'g + gamma -> f + fbar       ',
1737      5'g + Z0 -> f + fbar          ',  'g + W+/- -> f + fbar''       ',
1738      5'g + h0 -> f + fbar          ',  'gamma + gamma -> f + fbar   ',
1739      5'gamma + Z0 -> f + fbar      ',  'gamma + W+/- -> f + fbar''   '/
1740       DATA (PROC(I),I=61,80)/
1741      6'gamma + h0 -> f + fbar      ',  'Z0 + Z0 -> f + fbar         ',
1742      6'Z0 + W+/- -> f + fbar''      ', 'Z0 + h0 -> f + fbar         ',
1743      6'W+ + W- -> f + fbar         ',  'W+/- + h0 -> f + fbar''      ',
1744      6'h0 + h0 -> f + fbar         ',  'g + g -> g + g              ',
1745      6'gamma + gamma -> W+ + W-    ',  'gamma + W+/- -> Z0 + W+/-   ',
1746      7'Z0 + Z0 -> Z0 + Z0          ',  'Z0 + Z0 -> W+ + W-          ',
1747      7'Z0 + W+/- -> Z0 + W+/-      ',  'Z0 + Z0 -> Z0 + h0          ',
1748      7'W+ + W- -> gamma + gamma    ',  'W+ + W- -> Z0 + Z0          ',
1749      7'W+/- + W+/- -> W+/- + W+/-  ',  'W+/- + h0 -> W+/- + h0      ',
1750      7'h0 + h0 -> h0 + h0          ',  'q + gamma -> q'' + pi+/-     '/
1751       DATA (PROC(I),I=81,100)/
1752      8'q + qbar -> Q + Qbar, mass  ',  'g + g -> Q + Qbar, massive  ',
1753      8'f + q -> f'' + Q, massive    ', 'g + gamma -> Q + Qbar, mass ',
1754      8'gamma + gamma -> F + Fbar, m',  'g + g -> J/Psi + g          ',
1755      8'g + g -> chi_0c + g         ',  'g + g -> chi_1c + g         ',
1756      8'g + g -> chi_2c + g         ',  '                            ',
1757      9'Elastic scattering          ',  'Single diffractive (XB)     ',
1758      9'Single diffractive (AX)     ',  'Double  diffractive         ',
1759      9'Low-pT scattering           ',  'Semihard QCD 2 -> 2         ',
1760      9'                            ',  '                            ',
1761      9'q + gamma* -> q             ',  '                            '/
1762       DATA (PROC(I),I=101,120)/
1763      &'g + g -> gamma*/Z0          ',  'g + g -> h0                 ',
1764      &'gamma + gamma -> h0         ',  'g + g -> chi_0c             ',
1765      &'g + g -> chi_2c             ',  'g + g -> J/Psi + gamma      ',
1766      &'gamma + g -> J/Psi + g      ',  'gamma+gamma -> J/Psi + gamma',
1767      &'                            ',  'f + fbar -> gamma + h0      ',
1768      1'q + qbar -> g + h0          ',  'q + g -> q + h0             ',
1769      1'g + g -> g + h0             ',  'g + g -> gamma + gamma      ',
1770      1'g + g -> g + gamma          ',  'g + g -> gamma + Z0         ',
1771      1'g + g -> Z0 + Z0            ',  'g + g -> W+ + W-            ',
1772      1'                            ',  '                            '/
1773       DATA (PROC(I),I=121,140)/
1774      2'g + g -> Q + Qbar + h0      ',  'q + qbar -> Q + Qbar + h0   ',
1775      2'f + f'' -> f + f'' + h0       ',
1776      2'f + f'' -> f" + f"'' + h0     ',
1777      2'                            ',  '                            ',
1778      2'                            ',  '                            ',
1779      2'                            ',  '                            ',
1780      3'f + gamma*_T -> f + g       ',  'f + gamma*_L -> f + g       ',
1781      3'f + gamma*_T -> f + gamma   ',  'f + gamma*_L -> f + gamma   ',
1782      3'g + gamma*_T -> f + fbar    ',  'g + gamma*_L -> f + fbar    ',
1783      3'gamma*_T+gamma*_T -> f+fbar ',  'gamma*_T+gamma*_L -> f+fbar ',
1784      3'gamma*_L+gamma*_T -> f+fbar ',  'gamma*_L+gamma*_L -> f+fbar '/
1785       DATA (PROC(I),I=141,160)/
1786      4'f + fbar -> gamma*/Z0/Z''0   ', 'f + fbar'' -> W''+/-          ',
1787      4'f + fbar'' -> H+/-           ', 'f + fbar'' -> R              ',
1788      4'q + l -> LQ                 ',  'e + gamma -> e*             ',
1789      4'd + g -> d*                 ',  'u + g -> u*                 ',
1790      4'g + g -> eta_tc             ',  '                            ',
1791      5'f + fbar -> H0              ',  'g + g -> H0                 ',
1792      5'gamma + gamma -> H0         ',  '                            ',
1793      5'                            ',  'f + fbar -> A0              ',
1794      5'g + g -> A0                 ',  'gamma + gamma -> A0         ',
1795      5'                            ',  '                            '/
1796       DATA (PROC(I),I=161,180)/
1797      6'f + g -> f'' + H+/-          ', 'q + g -> LQ + lbar          ',
1798      6'g + g -> LQ + LQbar         ',  'q + qbar -> LQ + LQbar      ',
1799      6'f + fbar -> f'' + fbar'' (g/Z)',
1800      6'f +fbar'' -> f" + fbar"'' (W) ',
1801      6'q + q'' -> q" + d*           ',  'q + q'' -> q" + u*           ',
1802      6'q + qbar -> e + e*          ',  '                            ',
1803      7'f + fbar -> Z0 + H0         ', 'f + fbar'' -> W+/- + H0      ',
1804      7'f + f'' -> f + f'' + H0       ',
1805      7'f + f'' -> f" + f"'' + H0     ',
1806      7'                            ',  'f + fbar -> Z0 + A0         ',
1807      7'f + fbar'' -> W+/- + A0      ',
1808      7'f + f'' -> f + f'' + A0       ',
1809      7'f + f'' -> f" + f"'' + A0     ',
1810      7'                            '/
1811       DATA (PROC(I),I=181,200)/
1812      8'g + g -> Q + Qbar + H0      ',  'q + qbar -> Q + Qbar + H0   ',
1813      8'q + qbar -> g + H0          ',  'q + g -> q + H0             ',
1814      8'g + g -> g + H0             ',  'g + g -> Q + Qbar + A0      ',
1815      8'q + qbar -> Q + Qbar + A0   ',  'q + qbar -> g + A0          ',
1816      8'q + g -> q + A0             ',  'g + g -> g + A0             ',
1817      9'f + fbar -> rho_tc0         ',  'f + f'' -> rho_tc+/-         ',
1818      9'f + fbar -> omega_tc0      ',  'f+fbar -> f''+fbar'' (ETC)  ',
1819      9'f+fbar'' -> f"+fbar"'' (ETC)','                          ',
1820      9'                            ',  '                            ',
1821      9'                            ',  '                            '/
1822       DATA (PROC(I),I=201,220)/
1823      &'f + fbar -> ~e_L + ~e_Lbar  ',  'f + fbar -> ~e_R + ~e_Rbar  ',
1824      &'f + fbar -> ~e_R + ~e_Lbar  ',  'f + fbar -> ~mu_L + ~mu_Lbar',
1825      &'f + fbar -> ~mu_R + ~mu_Rbar',  'f + fbar -> ~mu_L + ~mu_Rbar',
1826      &'f+fbar -> ~tau_1 + ~tau_1bar',  'f+fbar -> ~tau_2 + ~tau_2bar',
1827      &'f+fbar -> ~tau_1 + ~tau_2bar',  'q + qbar'' -> ~l_L + ~nulbar ',
1828      1'q+qbar''-> ~tau_1 + ~nutaubar', 'q+qbar''-> ~tau_2 + ~nutaubar',
1829      1'f + fbar -> ~nul + ~nulbar  ',  'f+fbar -> ~nutau + ~nutaubar',
1830      1'                            ',  'f + fbar -> ~chi1 + ~chi1   ',
1831      1'f + fbar -> ~chi2 + ~chi2   ',  'f + fbar -> ~chi3 + ~chi3   ',
1832      1'f + fbar -> ~chi4 + ~chi4   ',  'f + fbar -> ~chi1 + ~chi2   '/
1833       DATA (PROC(I),I=221,240)/
1834      2'f + fbar -> ~chi1 + ~chi3   ',  'f + fbar -> ~chi1 + ~chi4   ',
1835      2'f + fbar -> ~chi2 + ~chi3   ',  'f + fbar -> ~chi2 + ~chi4   ',
1836      2'f + fbar -> ~chi3 + ~chi4   ',  'f+fbar -> ~chi+-1 + ~chi-+1 ',
1837      2'f+fbar -> ~chi+-2 + ~chi-+2 ',  'f+fbar -> ~chi+-1 + ~chi-+2 ',
1838      2'q + qbar'' -> ~chi1 + ~chi+-1', 'q + qbar'' -> ~chi2 + ~chi+-1',
1839      3'q + qbar'' -> ~chi3 + ~chi+-1', 'q + qbar'' -> ~chi4 + ~chi+-1',
1840      3'q + qbar'' -> ~chi1 + ~chi+-2', 'q + qbar'' -> ~chi2 + ~chi+-2',
1841      3'q + qbar'' -> ~chi3 + ~chi+-2', 'q + qbar'' -> ~chi4 + ~chi+-2',
1842      3'q + qbar -> ~chi1 + ~g      ',  'q + qbar -> ~chi2 + ~g      ',
1843      3'q + qbar -> ~chi3 + ~g      ',  'q + qbar -> ~chi4 + ~g      '/
1844       DATA (PROC(I),I=241,260)/
1845      4'q + qbar'' -> ~chi+-1 + ~g   ', 'q + qbar'' -> ~chi+-2 + ~g  ',
1846      4'q + qbar -> ~g + ~g         ',  'g + g -> ~g + ~g            ',
1847      4'                            ',  'qj + g -> ~qj_L + ~chi1     ',
1848      4'qj + g -> ~qj_R + ~chi1     ',  'qj + g -> ~qj_L + ~chi2     ',
1849      4'qj + g -> ~qj_R + ~chi2     ',  'qj + g -> ~qj_L + ~chi3     ',
1850      5'qj + g -> ~qj_R + ~chi3     ',  'qj + g -> ~qj_L + ~chi4     ',
1851      5'qj + g -> ~qj_R + ~chi4     ',  'qj + g -> ~qk_L + ~chi+-1   ',
1852      5'qj + g -> ~qk_R + ~chi+-1   ',  'qj + g -> ~qk_L + ~chi+-2   ',
1853      5'qj + g -> ~qk_R + ~chi+-2   ',  'qj + g -> ~qj_L + ~g        ',
1854      5'qj + g -> ~qj_R + ~g        ',  '                            '/
1855       DATA (PROC(I),I=261,300)/
1856      6'f + fbar -> ~t_1 + ~t_1bar  ',  'f + fbar -> ~t_2 + ~t_2bar  ',
1857      6'f + fbar -> ~t_1 + ~t_2bar  ',  'g + g -> ~t_1 + ~t_1bar     ',
1858      6'g + g -> ~t_2 + ~t_2bar     ',  '                            ',
1859      6'                            ',  '                            ',
1860      6'                            ',  '                            ',
1861      7'qi + qj -> ~qi_L + ~qj_L    ',  'qi + qj -> ~qi_R + ~qj_R    ',
1862      7'qi + qj -> ~qi_L + ~qj_R    ',  'qi+qjbar -> ~qi_L + ~qj_Lbar',
1863      7'qi+qjbar -> ~qi_R + ~qj_Rbar',  'qi+qjbar -> ~qi_L + ~qj_Rbar',
1864      7'f + fbar -> ~qi_L + ~qi_Lbar',  'f + fbar -> ~qi_R + ~qi_Rbar',
1865      7'g + g -> ~qi_L + ~qi_Lbar   ',  'g + g -> ~qi_R + ~qi_Rbar   ',
1866      8'b + qj -> ~b_1 + ~qj_L      ',  'b + qj -> ~b_2 + ~qj_R      ',
1867      8'b + qj -> ~b_1 + ~qj_R      ',  'b + qjbar -> ~b_1 + ~qj_Lbar',
1868      8'b + qjbar -> ~b_2 + ~qj_Rbar',  'b + qjbar -> ~b_1 + ~qj_Rbar',
1869      8'f + fbar -> ~b_1 + ~b_1bar  ',  'f + fbar -> ~b_2 + ~b_2bar  ',
1870      8'g + g -> ~b_1 + ~b_1bar     ',  'g + g -> ~b_2 + ~b_2bar     ',
1871      9'b + b -> ~b_1 + ~b_1        ',  'b + b -> ~b_2 + ~b_2        ',
1872      9'b + b -> ~b_1 + ~b_2        ',  'b + g -> ~b_1 + ~g          ',
1873      9'b + g -> ~b_2 + ~g          ',  'b + bbar -> ~b_1 + ~b_2bar  ',
1874      9'f + fbar'' -> H+/- + h0     ',  'f + fbar -> H+/- + H0       ',
1875      9'f + fbar -> A0 + h0         ',  'f + fbar -> A0 + H0         '/
1876       DATA (PROC(I),I=301,340)/
1877      &'f + fbar -> H+ + H-         ', 39*'                          '/
1878       DATA (PROC(I),I=341,380)/
1879      4'l + l -> H_L++/--           ',  'l + l -> H_R++/--           ',
1880      4'l + gamma -> H_L++/-- e-/+  ',  'l + gamma -> H_R++/-- e-/+  ',
1881      4'l + gamma -> H_L++/-- mu-/+ ',  'l + gamma -> H_R++/-- mu-/+ ',
1882      4'l + gamma -> H_L++/-- tau-/+',  'l + gamma -> H_R++/-- tau-/+',
1883      4'f + fbar -> H_L++ + H_L--   ',  'f + fbar -> H_R++ + H_R--   ',
1884      5'f + f -> f'' + f'' + H_L++/-- ',
1885      5'f + f -> f'' + f'' + H_R++/-- ','f + fbar -> Z_R0            ',
1886      5'f + fbar'' -> W_R+/-         ',5*'                            ',
1887      6'                            ',  'f + fbar -> W_L+ W_L-       ',
1888      6'f + fbar -> W_L+/- pi_T-/+  ',  'f + fbar -> pi_T+ pi_T-     ',
1889      6'f + fbar -> gamma pi_T0     ',  'f + fbar -> gamma pi_T0''    ',
1890      6'f + fbar -> Z0 pi_T0        ',  'f + fbar -> Z0 pi_T0''       ',
1891      6'f + fbar -> W+/- pi_T-/+    ',  '                            ',
1892      7'f + fbar'' -> W_L+/- Z_L0    ', 'f + fbar'' -> W_L+/- pi_T0   ',
1893      7'f + fbar'' -> pi_T+/- Z_L0   ', 'f + fbar'' -> pi_T+/- pi_T0  ',
1894      7'f + fbar'' -> gamma pi_T+/-  ', 'f + fbar'' -> Z0 pi_T+/-     ',
1895      7'f + fbar'' -> W+/- pi_T0     ',
1896      7'f + fbar'' -> W+/- pi_T0''    ',
1897      7'                            ','                              ',
1898      7'                            '/
1899       DATA (PROC(I),I=381,500)/
1900      8'f + f'' -> f + f'' (ETC)      ','f + fbar -> f'' + fbar'' (ETC)',
1901      8'f + fbar -> g + g (ETC)     ',  'f + g -> f + g (ETC)        ',
1902      8'g + g -> f + fbar (ETC)     ',  'g + g -> g + g (ETC)        ',
1903      8'q + qbar -> Q + Qbar (ETC)  ',  'g + g -> Q + Qbar (ETC)     ',
1904      8'                            ',  '                            ',
1905      9'f + fbar -> G*              ', 'g + g -> G*                   ',
1906      9'q + qbar -> g + G*          ', 'q + g -> q + G*               ',
1907      9'g + g -> g + G*             ','                              ',
1908      & 104*'                      '/
1909  
1910 C...Cross sections and slope offsets.
1911       DATA SIGT/294*0D0/
1912  
1913 C...Supersymmetry switches and parameters.
1914       DATA IMSS/0,
1915      &  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
1916      1  89*0/
1917       DATA RMSS/0D0,
1918      &  80D0,160D0,500D0,800D0,2D0,250D0,200D0,800D0,700D0,800D0,
1919      1  700D0,500D0,250D0,200D0,800D0,400D0,0D0,0.1D0,850D0,0.041D0,
1920      2   1D0,800D0,1D4,1D4,1D4,0D0,0D0,0D0,24D17,0D0,
1921      3  69*0D0/
1922 C...Initial values for R-violating SUSY couplings.
1923 C...Should not be changed here. See PYMSIN.
1924       DATA RVLAM/27*0D0/
1925       DATA RVLAMP/27*0D0/
1926       DATA RVLAMB/27*0D0/
1927  
1928 C...Technicolor switches and parameters
1929       DATA ITCM/0,
1930      &  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
1931      1  89*0/
1932       DATA RTCM/0D0,
1933      &  82D0,1.333D0,.333D0,0.408D0,1D0,1D0,.0182D0,1D0,0D0,1.333D0,
1934      1  .05D0,200D0,200D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
1935      2  .283D0,.707D0,0D0,0D0,0D0,1.667D0,250D0,250D0,.707D0,0D0,
1936      3  .707D0,0D0,1D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
1937      4  1000D0, 1D0, 1D0, 1D0, 1D0, 0D0, 4*0D0,
1938      4  49*0D0/
1939  
1940 C...Data for histogramming routines.
1941       DATA IHIST/1000,20000,55,1/
1942       DATA INDX/1000*0/
1943  
1944       END
1945  
1946 C*********************************************************************
1947  
1948 C...PYTEST
1949 C...A simple program (disguised as subroutine) to run at installation
1950 C...as a check that the program works as intended.
1951  
1952       SUBROUTINE PYTEST(MTEST)
1953  
1954 C...Double precision and integer declarations.
1955       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1956       IMPLICIT INTEGER(I-N)
1957       INTEGER PYK,PYCHGE,PYCOMP
1958 C...Commonblocks.
1959       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
1960       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1961       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
1962       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
1963       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
1964       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
1965       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
1966 C...Local arrays.
1967       DIMENSION PSUM(5),PINI(6),PFIN(6)
1968  
1969 C...Save defaults for values that are changed.
1970       MSTJ1=MSTJ(1)
1971       MSTJ3=MSTJ(3)
1972       MSTJ11=MSTJ(11)
1973       MSTJ42=MSTJ(42)
1974       MSTJ43=MSTJ(43)
1975       MSTJ44=MSTJ(44)
1976       PARJ17=PARJ(17)
1977       PARJ22=PARJ(22)
1978       PARJ43=PARJ(43)
1979       PARJ54=PARJ(54)
1980       MST101=MSTJ(101)
1981       MST104=MSTJ(104)
1982       MST105=MSTJ(105)
1983       MST107=MSTJ(107)
1984       MST116=MSTJ(116)
1985  
1986 C...First part: loop over simple events to be generated.
1987       IF(MTEST.GE.1) CALL PYTABU(20)
1988       NERR=0
1989       DO 180 IEV=1,500
1990  
1991 C...Reset parameter values. Switch on some nonstandard features.
1992         MSTJ(1)=1
1993         MSTJ(3)=0
1994         MSTJ(11)=1
1995         MSTJ(42)=2
1996         MSTJ(43)=4
1997         MSTJ(44)=2
1998         PARJ(17)=0.1D0
1999         PARJ(22)=1.5D0
2000         PARJ(43)=1D0
2001         PARJ(54)=-0.05D0
2002         MSTJ(101)=5
2003         MSTJ(104)=5
2004         MSTJ(105)=0
2005         MSTJ(107)=1
2006         IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3
2007  
2008 C...Ten events each for some single jets configurations.
2009         IF(IEV.LE.50) THEN
2010           ITY=(IEV+9)/10
2011           MSTJ(3)=-1
2012           IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2
2013           IF(ITY.EQ.1) CALL PY1ENT(1,1,15D0,0D0,0D0)
2014           IF(ITY.EQ.2) CALL PY1ENT(1,3101,15D0,0D0,0D0)
2015           IF(ITY.EQ.3) CALL PY1ENT(1,-2203,15D0,0D0,0D0)
2016           IF(ITY.EQ.4) CALL PY1ENT(1,-4,30D0,0D0,0D0)
2017           IF(ITY.EQ.5) CALL PY1ENT(1,21,15D0,0D0,0D0)
2018  
2019 C...Ten events each for some simple jet systems; string fragmentation.
2020         ELSEIF(IEV.LE.130) THEN
2021           ITY=(IEV-41)/10
2022           IF(ITY.EQ.1) CALL PY2ENT(1,1,-1,40D0)
2023           IF(ITY.EQ.2) CALL PY2ENT(1,4,-4,30D0)
2024           IF(ITY.EQ.3) CALL PY2ENT(1,2,2103,100D0)
2025           IF(ITY.EQ.4) CALL PY2ENT(1,21,21,40D0)
2026           IF(ITY.EQ.5) CALL PY3ENT(1,2101,21,-3203,30D0,0.6D0,0.8D0)
2027           IF(ITY.EQ.6) CALL PY3ENT(1,5,21,-5,40D0,0.9D0,0.8D0)
2028           IF(ITY.EQ.7) CALL PY3ENT(1,21,21,21,60D0,0.7D0,0.5D0)
2029           IF(ITY.EQ.8) CALL PY4ENT(1,2,21,21,-2,40D0,
2030      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2031  
2032 C...Seventy events with independent fragmentation and momentum cons.
2033         ELSEIF(IEV.LE.200) THEN
2034           ITY=1+(IEV-131)/16
2035           MSTJ(2)=1+MOD(IEV-131,4)
2036           MSTJ(3)=1+MOD((IEV-131)/4,4)
2037           IF(ITY.EQ.1) CALL PY2ENT(1,4,-5,40D0)
2038           IF(ITY.EQ.2) CALL PY3ENT(1,3,21,-3,40D0,0.9D0,0.4D0)
2039           IF(ITY.EQ.3) CALL PY4ENT(1,2,21,21,-2,40D0,
2040      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2041           IF(ITY.GE.4) CALL PY4ENT(1,2,-3,3,-2,40D0,
2042      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2043  
2044 C...A hundred events with random jets (check invariant mass).
2045         ELSEIF(IEV.LE.300) THEN
2046   100     DO 110 J=1,5
2047             PSUM(J)=0D0
2048   110     CONTINUE
2049           NJET=2D0+6D0*PYR(0)
2050           DO 130 I=1,NJET
2051             KFL=21
2052             IF(I.EQ.1) KFL=INT(1D0+4D0*PYR(0))
2053             IF(I.EQ.NJET) KFL=-INT(1D0+4D0*PYR(0))
2054             EJET=5D0+20D0*PYR(0)
2055             THETA=ACOS(2D0*PYR(0)-1D0)
2056             PHI=6.2832D0*PYR(0)
2057             IF(I.LT.NJET) CALL PY1ENT(-I,KFL,EJET,THETA,PHI)
2058             IF(I.EQ.NJET) CALL PY1ENT(I,KFL,EJET,THETA,PHI)
2059             IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1
2060             IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+PYMASS(KFL)
2061             DO 120 J=1,4
2062               PSUM(J)=PSUM(J)+P(I,J)
2063   120       CONTINUE
2064   130     CONTINUE
2065           IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT.
2066      &    (PSUM(5)+PARJ(32))**2) GOTO 100
2067  
2068 C...Fifty e+e- continuum events with matrix elements.
2069         ELSEIF(IEV.LE.350) THEN
2070           MSTJ(101)=2
2071           CALL PYEEVT(0,40D0)
2072  
2073 C...Fifty e+e- continuum event with varying shower options.
2074         ELSEIF(IEV.LE.400) THEN
2075           MSTJ(42)=1+MOD(IEV,2)
2076           MSTJ(43)=1+MOD(IEV/2,4)
2077           MSTJ(44)=MOD(IEV/8,3)
2078           CALL PYEEVT(0,90D0)
2079  
2080 C...Fifty e+e- continuum events with coherent shower.
2081         ELSEIF(IEV.LE.450) THEN
2082           CALL PYEEVT(0,500D0)
2083  
2084 C...Fifty Upsilon decays to ggg or gammagg with coherent shower.
2085         ELSE
2086           CALL PYONIA(5,9.46D0)
2087         ENDIF
2088  
2089 C...Generate event. Find total momentum, energy and charge.
2090         DO 140 J=1,4
2091           PINI(J)=PYP(0,J)
2092   140   CONTINUE
2093         PINI(6)=PYP(0,6)
2094         CALL PYEXEC
2095         DO 150 J=1,4
2096           PFIN(J)=PYP(0,J)
2097   150   CONTINUE
2098         PFIN(6)=PYP(0,6)
2099  
2100 C...Check conservation of energy, momentum and charge;
2101 C...usually exact, but only approximate for single jets.
2102         MERR=0
2103         IF(IEV.LE.50) THEN
2104           IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.10D0)
2105      &    MERR=MERR+1
2106           EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3)
2107           IF(EPZREM.LT.0D0.OR.EPZREM.GT.2D0*PARJ(31)) MERR=MERR+1
2108           IF(ABS(PFIN(6)-PINI(6)).GT.2.1D0) MERR=MERR+1
2109         ELSE
2110           DO 160 J=1,4
2111             IF(ABS(PFIN(J)-PINI(J)).GT.0.0001D0*PINI(4)) MERR=MERR+1
2112   160     CONTINUE
2113           IF(ABS(PFIN(6)-PINI(6)).GT.0.1D0) MERR=MERR+1
2114         ENDIF
2115         IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2116      &  (PFIN(J),J=1,4),PFIN(6)
2117  
2118 C...Check that all KF codes are known ones, and that partons/particles
2119 C...satisfy energy-momentum-mass relation. Store particle statistics.
2120         DO 170 I=1,N
2121           IF(K(I,1).GT.20) GOTO 170
2122           IF(PYCOMP(K(I,2)).EQ.0) THEN
2123             WRITE(MSTU(11),5100) I
2124             MERR=MERR+1
2125           ENDIF
2126           PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
2127           IF(ABS(PD).GT.MAX(0.1D0,0.001D0*P(I,4)**2).OR.P(I,4).LT.0D0)
2128      &    THEN
2129             WRITE(MSTU(11),5200) I
2130             MERR=MERR+1
2131           ENDIF
2132   170   CONTINUE
2133         IF(MTEST.GE.1) CALL PYTABU(21)
2134  
2135 C...List all erroneous events and some normal ones.
2136         IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN
2137           IF(MERR.GE.1) WRITE(MSTU(11),6400)
2138           CALL PYLIST(2)
2139         ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN
2140           CALL PYLIST(1)
2141         ENDIF
2142  
2143 C...Stop execution if too many errors.
2144         IF(MERR.NE.0) NERR=NERR+1
2145         IF(NERR.GE.10) THEN
2146           WRITE(MSTU(11),6300)
2147           CALL PYLIST(1)
2148           STOP
2149         ENDIF
2150   180 CONTINUE
2151  
2152 C...Summarize result of run.
2153       IF(MTEST.GE.1) CALL PYTABU(22)
2154  
2155 C...Reset commonblock variables changed during run.
2156       MSTJ(1)=MSTJ1
2157       MSTJ(3)=MSTJ3
2158       MSTJ(11)=MSTJ11
2159       MSTJ(42)=MSTJ42
2160       MSTJ(43)=MSTJ43
2161       MSTJ(44)=MSTJ44
2162       PARJ(17)=PARJ17
2163       PARJ(22)=PARJ22
2164       PARJ(43)=PARJ43
2165       PARJ(54)=PARJ54
2166       MSTJ(101)=MST101
2167       MSTJ(104)=MST104
2168       MSTJ(105)=MST105
2169       MSTJ(107)=MST107
2170       MSTJ(116)=MST116
2171  
2172 C...Second part: complete events of various kinds.
2173 C...Common initial values. Loop over initiating conditions.
2174       MSTP(122)=MAX(0,MIN(2,MTEST))
2175       MDCY(PYCOMP(111),1)=0
2176       DO 230 IPROC=1,8
2177  
2178 C...Reset process type, kinematics cuts, and the flags used.
2179         MSEL=0
2180         DO 190 ISUB=1,500
2181           MSUB(ISUB)=0
2182   190   CONTINUE
2183         CKIN(1)=2D0
2184         CKIN(3)=0D0
2185         MSTP(2)=1
2186         MSTP(11)=0
2187         MSTP(33)=0
2188         MSTP(81)=1
2189         MSTP(82)=1
2190         MSTP(111)=1
2191         MSTP(131)=0
2192         MSTP(133)=0
2193         PARP(131)=0.01D0
2194  
2195 C...Prompt photon production at fixed target.
2196         IF(IPROC.EQ.1) THEN
2197           PZSUM=300D0
2198           PESUM=SQRT(PZSUM**2+PYMASS(211)**2)+PYMASS(2212)
2199           PQSUM=2D0
2200           MSEL=10
2201           CKIN(3)=5D0
2202           CALL PYINIT('FIXT','pi+','p',PZSUM)
2203  
2204 C...QCD processes at ISR energies.
2205         ELSEIF(IPROC.EQ.2) THEN
2206           PESUM=63D0
2207           PZSUM=0D0
2208           PQSUM=2D0
2209           MSEL=1
2210           CKIN(3)=5D0
2211           CALL PYINIT('CMS','p','p',PESUM)
2212  
2213 C...W production + multiple interactions at CERN Collider.
2214         ELSEIF(IPROC.EQ.3) THEN
2215           PESUM=630D0
2216           PZSUM=0D0
2217           PQSUM=0D0
2218           MSEL=12
2219           CKIN(1)=20D0
2220           MSTP(82)=4
2221           MSTP(2)=2
2222           MSTP(33)=3
2223           CALL PYINIT('CMS','p','pbar',PESUM)
2224  
2225 C...W/Z gauge boson pairs + pileup events at the Tevatron.
2226         ELSEIF(IPROC.EQ.4) THEN
2227           PESUM=1800D0
2228           PZSUM=0D0
2229           PQSUM=0D0
2230           MSUB(22)=1
2231           MSUB(23)=1
2232           MSUB(25)=1
2233           CKIN(1)=200D0
2234           MSTP(111)=0
2235           MSTP(131)=1
2236           MSTP(133)=2
2237           PARP(131)=0.04D0
2238           CALL PYINIT('CMS','p','pbar',PESUM)
2239  
2240 C...Higgs production at LHC.
2241         ELSEIF(IPROC.EQ.5) THEN
2242           PESUM=15400D0
2243           PZSUM=0D0
2244           PQSUM=2D0
2245           MSUB(3)=1
2246           MSUB(102)=1
2247           MSUB(123)=1
2248           MSUB(124)=1
2249           PMAS(25,1)=300D0
2250           CKIN(1)=200D0
2251           MSTP(81)=0
2252           MSTP(111)=0
2253           CALL PYINIT('CMS','p','p',PESUM)
2254  
2255 C...Z' production at SSC.
2256         ELSEIF(IPROC.EQ.6) THEN
2257           PESUM=40000D0
2258           PZSUM=0D0
2259           PQSUM=2D0
2260           MSEL=21
2261           PMAS(32,1)=600D0
2262           CKIN(1)=400D0
2263           MSTP(81)=0
2264           MSTP(111)=0
2265           CALL PYINIT('CMS','p','p',PESUM)
2266  
2267 C...W pair production at 1 TeV e+e- collider.
2268         ELSEIF(IPROC.EQ.7) THEN
2269           PESUM=1000D0
2270           PZSUM=0D0
2271           PQSUM=0D0
2272           MSUB(25)=1
2273           MSUB(69)=1
2274           MSTP(11)=1
2275           CALL PYINIT('CMS','e+','e-',PESUM)
2276  
2277 C...Deep inelastic scattering at a LEP+LHC ep collider.
2278         ELSEIF(IPROC.EQ.8) THEN
2279           P(1,1)=0D0
2280           P(1,2)=0D0
2281           P(1,3)=8000D0
2282           P(2,1)=0D0
2283           P(2,2)=0D0
2284           P(2,3)=-80D0
2285           PESUM=8080D0
2286           PZSUM=7920D0
2287           PQSUM=0D0
2288           MSUB(10)=1
2289           CKIN(3)=50D0
2290           MSTP(111)=0
2291           CALL PYINIT('3MOM','p','e-',PESUM)
2292         ENDIF
2293  
2294 C...Generate 20 events of each required type.
2295         DO 220 IEV=1,20
2296           CALL PYEVNT
2297           PESUMM=PESUM
2298           IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
2299  
2300 C...Check conservation of energy/momentum/flavour.
2301           PINI(1)=0D0
2302           PINI(2)=0D0
2303           PINI(3)=PZSUM
2304           PINI(4)=PESUMM
2305           PINI(6)=PQSUM
2306           DO 200 J=1,4
2307             PFIN(J)=PYP(0,J)
2308   200     CONTINUE
2309           PFIN(6)=PYP(0,6)
2310           MERR=0
2311           DEVE=ABS(PFIN(4)-PINI(4))+ABS(PFIN(3)-PINI(3))
2312           DEVT=ABS(PFIN(1)-PINI(1))+ABS(PFIN(2)-PINI(2))
2313           DEVQ=ABS(PFIN(6)-PINI(6))
2314           IF(DEVE.GT.2D-3*PESUM.OR.DEVT.GT.MAX(0.01D0,1D-4*PESUM).OR.
2315      &    DEVQ.GT.0.1D0) MERR=1
2316           IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2317      &    (PFIN(J),J=1,4),PFIN(6)
2318  
2319 C...Check that all KF codes are known ones, and that partons/particles
2320 C...satisfy energy-momentum-mass relation.
2321           DO 210 I=1,N
2322             IF(K(I,1).GT.20) GOTO 210
2323             IF(PYCOMP(K(I,2)).EQ.0) THEN
2324               WRITE(MSTU(11),5100) I
2325               MERR=MERR+1
2326             ENDIF
2327             PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
2328      &      SIGN(1D0,P(I,5))
2329             IF(ABS(PD).GT.MAX(0.1D0,0.002D0*P(I,4)**2,0.002D0*P(I,5)**2)
2330      &      .OR.(P(I,5).GE.0D0.AND.P(I,4).LT.0D0)) THEN
2331               WRITE(MSTU(11),5200) I
2332               MERR=MERR+1
2333             ENDIF
2334   210     CONTINUE
2335  
2336 C...Listing of erroneous events, and first event of each type.
2337           IF(MERR.GE.1) NERR=NERR+1
2338           IF(NERR.GE.10) THEN
2339             WRITE(MSTU(11),6300)
2340             CALL PYLIST(1)
2341             STOP
2342           ENDIF
2343           IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
2344             IF(MERR.GE.1) WRITE(MSTU(11),6400)
2345             CALL PYLIST(1)
2346           ENDIF
2347   220   CONTINUE
2348  
2349 C...List statistics for each process type.
2350         IF(MTEST.GE.1) CALL PYSTAT(1)
2351   230 CONTINUE
2352  
2353 C...Summarize result of run.
2354       IF(NERR.EQ.0) WRITE(MSTU(11),6500)
2355       IF(NERR.GT.0) WRITE(MSTU(11),6600) NERR
2356  
2357 C...Format statements for output.
2358  5000 FORMAT(/' Momentum, energy and/or charge were not conserved ',
2359      &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X,
2360      &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X,
2361      &4(1X,F12.5),1X,F8.2)
2362  5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
2363  5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
2364      &'kinematics')
2365  6300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
2366      &'wrong.'/5X,'Execution will be stopped after listing of event.')
2367  6400 FORMAT(5X,'Faulty event follows:')
2368  6500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
2369  6600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
2370      &5X,'This should not have happened!')
2371  
2372       RETURN
2373       END
2374  
2375 C*********************************************************************
2376  
2377 C...PYHEPC
2378 C...Converts PYTHIA event record contents to or from
2379 C...the standard event record commonblock.
2380  
2381       SUBROUTINE PYHEPC(MCONV)
2382  
2383 C...Double precision and integer declarations.
2384       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2385       IMPLICIT INTEGER(I-N)
2386       INTEGER PYK,PYCHGE,PYCOMP
2387 C...Commonblocks.
2388       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
2389       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2390       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2391       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
2392 C...HEPEVT commonblock.
2393       PARAMETER (NMXHEP=4000)
2394       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
2395      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
2396       DOUBLE PRECISION PHEP,VHEP
2397       SAVE /HEPEVT/
2398  
2399 C...Conversion from PYTHIA to standard, the easy part.
2400       IF(MCONV.EQ.1) THEN
2401         NEVHEP=0
2402         IF(N.GT.NMXHEP) CALL PYERRM(8,
2403      &  '(PYHEPC:) no more space in /HEPEVT/')
2404         NHEP=MIN(N,NMXHEP)
2405         DO 150 I=1,NHEP
2406           ISTHEP(I)=0
2407           IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1
2408           IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2
2409           IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3
2410           IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1)
2411           IDHEP(I)=K(I,2)
2412           JMOHEP(1,I)=K(I,3)
2413           JMOHEP(2,I)=0
2414           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN
2415             JDAHEP(1,I)=K(I,4)
2416             JDAHEP(2,I)=K(I,5)
2417           ELSE
2418             JDAHEP(1,I)=0
2419             JDAHEP(2,I)=0
2420           ENDIF
2421           DO 100 J=1,5
2422             PHEP(J,I)=P(I,J)
2423   100     CONTINUE
2424           DO 110 J=1,4
2425             VHEP(J,I)=V(I,J)
2426   110     CONTINUE
2427  
2428 C...Check if new event (from pileup).
2429           IF(I.EQ.1) THEN
2430             INEW=1
2431           ELSE
2432             IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I
2433           ENDIF
2434  
2435 C...Fill in missing mother information.
2436           IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN
2437             IMO1=I-2
2438   120       IF(IMO1.GT.INEW.AND.K(IMO1+1,1).EQ.21.AND.K(IMO1+1,3).EQ.0)
2439      &      THEN
2440               IMO1=IMO1-1
2441               GOTO 120
2442             ENDIF
2443             JMOHEP(1,I)=IMO1
2444             JMOHEP(2,I)=IMO1+1
2445           ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN
2446             I1=K(I,3)-1
2447   130       I1=I1+1
2448             IF(I1.GE.I) CALL PYERRM(8,
2449      &      '(PYHEPC:) translation of inconsistent event history')
2450             IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 130
2451             KC=PYCOMP(K(I1,2))
2452             IF(I1.LT.I.AND.KC.EQ.0) GOTO 130
2453             IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 130
2454             JMOHEP(2,I)=I1
2455           ELSEIF(K(I,2).EQ.94) THEN
2456             NJET=2
2457             IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3
2458             IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4
2459             JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5))
2460             IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)=
2461      &      MOD(K(I+1,4)/MSTU(5),MSTU(5))
2462           ENDIF
2463  
2464 C...Fill in missing daughter information.
2465           IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN
2466             DO 140 I1=JDAHEP(1,I),JDAHEP(2,I)
2467               I2=MOD(K(I1,4)/MSTU(5),MSTU(5))
2468               JDAHEP(1,I2)=I
2469   140       CONTINUE
2470           ENDIF
2471           IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 150
2472           I1=JMOHEP(1,I)
2473           IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 150
2474           IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 150
2475           IF(JDAHEP(1,I1).EQ.0) THEN
2476             JDAHEP(1,I1)=I
2477           ELSE
2478             JDAHEP(2,I1)=I
2479           ENDIF
2480   150   CONTINUE
2481         DO 160 I=1,NHEP
2482           IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 160
2483           IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I)
2484   160   CONTINUE
2485  
2486 C...Conversion from standard to PYTHIA, the easy part.
2487       ELSE
2488         IF(NHEP.GT.MSTU(4)) CALL PYERRM(8,
2489      &  '(PYHEPC:) no more space in /PYJETS/')
2490         N=MIN(NHEP,MSTU(4))
2491         NKQ=0
2492         KQSUM=0
2493         DO 190 I=1,N
2494           K(I,1)=0
2495           IF(ISTHEP(I).EQ.1) K(I,1)=1
2496           IF(ISTHEP(I).EQ.2) K(I,1)=11
2497           IF(ISTHEP(I).EQ.3) K(I,1)=21
2498           K(I,2)=IDHEP(I)
2499           K(I,3)=JMOHEP(1,I)
2500           K(I,4)=JDAHEP(1,I)
2501           K(I,5)=JDAHEP(2,I)
2502           DO 170 J=1,5
2503             P(I,J)=PHEP(J,I)
2504   170     CONTINUE
2505           DO 180 J=1,4
2506             V(I,J)=VHEP(J,I)
2507   180     CONTINUE
2508           V(I,5)=0D0
2509           IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN
2510             I1=JDAHEP(1,I)
2511             IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))*
2512      &      PHEP(5,I)/PHEP(4,I)
2513           ENDIF
2514  
2515 C...Fill in missing information on colour connection in jet systems.
2516           IF(ISTHEP(I).EQ.1) THEN
2517             KC=PYCOMP(K(I,2))
2518             KQ=0
2519             IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
2520             IF(KQ.NE.0) NKQ=NKQ+1
2521             IF(KQ.NE.2) KQSUM=KQSUM+KQ
2522             IF(KQ.NE.0.AND.KQSUM.NE.0) THEN
2523               K(I,1)=2
2524             ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN
2525               IF(K(I+1,2).EQ.21) K(I,1)=2
2526             ENDIF
2527           ENDIF
2528   190   CONTINUE
2529         IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL PYERRM(8,
2530      &  '(PYHEPC:) input parton configuration not colour singlet')
2531       ENDIF
2532  
2533       END
2534  
2535 C*********************************************************************
2536  
2537 C...PYINIT
2538 C...Initializes the generation procedure; finds maxima of the
2539 C...differential cross-sections to be used for weighting.
2540  
2541       SUBROUTINE PYINIT(FRAME,BEAM,TARGET,WIN)
2542  
2543 C...Double precision and integer declarations.
2544       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2545       IMPLICIT INTEGER(I-N)
2546       INTEGER PYK,PYCHGE,PYCOMP
2547 C...Commonblocks.
2548       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2549       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2550       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2551       COMMON/PYDAT4/CHAF(500,2)
2552       CHARACTER CHAF*16
2553       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2554       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2555       COMMON/PYINT1/MINT(400),VINT(400)
2556       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
2557       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
2558       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
2559      &/PYINT1/,/PYINT2/,/PYINT5/
2560 C...Local arrays and character variables.
2561       DIMENSION ALAMIN(20),NFIN(20)
2562       CHARACTER*(*) FRAME,BEAM,TARGET
2563       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHLH(2)*6
2564  
2565 C...Interface to PDFLIB.
2566       COMMON/W50512/QCDL4,QCDL5
2567       SAVE /W50512/
2568       DOUBLE PRECISION VALUE(20),QCDL4,QCDL5
2569       CHARACTER*20 PARM(20)
2570       DATA VALUE/20*0D0/,PARM/20*' '/
2571  
2572 C...Data:Lambda and n_f values for parton distributions..
2573       DATA ALAMIN/0.177D0,0.239D0,0.247D0,0.2322D0,0.248D0,0.248D0,
2574      &0.192D0,0.326D0,2*0.2D0,0.2D0,0.2D0,0.29D0,0.2D0,0.4D0,5*0.2D0/,
2575      &NFIN/20*4/
2576       DATA CHLH/'lepton','hadron'/
2577  
2578 C...Reset MINT and VINT arrays. Write headers.
2579       MSTI(53)=0
2580       DO 100 J=1,400
2581         MINT(J)=0
2582         VINT(J)=0D0
2583   100 CONTINUE
2584       IF(MSTU(12).GE.1) CALL PYLIST(0)
2585       IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
2586  
2587 C...Call user process initialization routine.
2588       IF(FRAME(1:1).EQ.'u'.OR.FRAME(1:1).EQ.'U') THEN
2589         MSEL=0
2590         CALL UPINIT
2591         MSEL=0
2592       ENDIF
2593  
2594 C...Maximum 4 generations; set maximum number of allowed flavours.
2595       MSTP(1)=MIN(4,MSTP(1))
2596       MSTU(114)=MIN(MSTU(114),2*MSTP(1))
2597       MSTP(58)=MIN(MSTP(58),2*MSTP(1))
2598  
2599 C...Sum up Cabibbo-Kobayashi-Maskawa factors for each quark/lepton.
2600       DO 120 I=-20,20
2601         VINT(180+I)=0D0
2602         IA=IABS(I)
2603         IF(IA.GE.1.AND.IA.LE.2*MSTP(1)) THEN
2604           DO 110 J=1,MSTP(1)
2605             IB=2*J-1+MOD(IA,2)
2606             IF(IB.GE.6.AND.MSTP(9).EQ.0) GOTO 110
2607             IPM=(5-ISIGN(1,I))/2
2608             IDC=J+MDCY(IA,2)+2
2609             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) VINT(180+I)=
2610      &      VINT(180+I)+VCKM((IA+1)/2,(IB+1)/2)
2611   110     CONTINUE
2612         ELSEIF(IA.GE.11.AND.IA.LE.10+2*MSTP(1)) THEN
2613           VINT(180+I)=1D0
2614         ENDIF
2615   120 CONTINUE
2616  
2617 C...Initialize parton distributions: PDFLIB.
2618       IF(MSTP(52).EQ.2) THEN
2619         PARM(1)='NPTYPE'
2620         VALUE(1)=1
2621         PARM(2)='NGROUP'
2622         VALUE(2)=MSTP(51)/1000
2623         PARM(3)='NSET'
2624         VALUE(3)=MOD(MSTP(51),1000)
2625         PARM(4)='TMAS'
2626         VALUE(4)=PMAS(6,1)
2627         CALL PDFSET_ALICE(PARM,VALUE)
2628         MINT(93)=1000000+MSTP(51)
2629       ENDIF
2630  
2631 C...Choose Lambda value to use in alpha-strong.
2632       MSTU(111)=MSTP(2)
2633       IF(MSTP(3).GE.2) THEN
2634         ALAM=0.2D0
2635         NF=4
2636         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
2637           ALAM=ALAMIN(MSTP(51))
2638           NF=NFIN(MSTP(51))
2639         ELSEIF(MSTP(52).EQ.2) THEN
2640           ALAM=QCDL4
2641           NF=4
2642         ENDIF
2643         PARP(1)=ALAM
2644         PARP(61)=ALAM
2645         PARP(72)=ALAM
2646         PARU(112)=ALAM
2647         MSTU(112)=NF
2648         IF(MSTP(3).EQ.3) PARJ(81)=ALAM
2649       ENDIF
2650  
2651 C...Initialize the SUSY generation: couplings, masses,
2652 C...decay modes, branching ratios, and so on.
2653       CALL PYMSIN
2654 C...Initialize widths and partial widths for resonances.
2655       CALL PYINRE
2656 C...Set Z0 mass and width for e+e- routines.
2657       PARJ(123)=PMAS(23,1)
2658       PARJ(124)=PMAS(23,2)
2659  
2660 C...Identify beam and target particles and frame of process.
2661       CHFRAM=FRAME//' '
2662       CHBEAM=BEAM//' '
2663       CHTARG=TARGET//' '
2664       CALL PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
2665       IF(MINT(65).EQ.1) GOTO 170
2666  
2667 C...For gamma-p or gamma-gamma allow many (3 or 6) alternatives.
2668 C...For e-gamma allow 2 alternatives.
2669       MINT(121)=1
2670       IF(MSTP(14).EQ.10.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2671         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2672      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
2673         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=6
2674         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2675      &  (IABS(MINT(11)).EQ.11.OR.IABS(MINT(12)).EQ.11)) MINT(121)=2
2676       ELSEIF(MSTP(14).EQ.20.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2677         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2678      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
2679         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=9
2680       ELSEIF(MSTP(14).EQ.25.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2681         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2682      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=2
2683         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=4
2684       ELSEIF(MSTP(14).EQ.30.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2685         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2686      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=4
2687         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=13
2688       ENDIF
2689       MINT(123)=MSTP(14)
2690       IF((MSTP(14).EQ.10.OR.MSTP(14).EQ.20.OR.MSTP(14).EQ.25.OR.
2691      &MSTP(14).EQ.30).AND.MSEL.NE.1.AND.MSEL.NE.2) MINT(123)=0
2692       IF(MSTP(14).GE.11.AND.MSTP(14).LE.19) THEN
2693         IF(MSTP(14).EQ.11) MINT(123)=0
2694         IF(MSTP(14).EQ.12.OR.MSTP(14).EQ.14) MINT(123)=5
2695         IF(MSTP(14).EQ.13.OR.MSTP(14).EQ.17) MINT(123)=6
2696         IF(MSTP(14).EQ.15) MINT(123)=2
2697         IF(MSTP(14).EQ.16.OR.MSTP(14).EQ.18) MINT(123)=7
2698         IF(MSTP(14).EQ.19) MINT(123)=3
2699       ELSEIF(MSTP(14).GE.21.AND.MSTP(14).LE.24) THEN
2700         IF(MSTP(14).EQ.21) MINT(123)=0
2701         IF(MSTP(14).EQ.22.OR.MSTP(14).EQ.23) MINT(123)=4
2702         IF(MSTP(14).EQ.24) MINT(123)=1
2703       ELSEIF(MSTP(14).GE.26.AND.MSTP(14).LE.29) THEN
2704         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28) MINT(123)=8
2705         IF(MSTP(14).EQ.27.OR.MSTP(14).EQ.29) MINT(123)=9
2706       ENDIF
2707  
2708 C...Set up kinematics of process.
2709       CALL PYINKI(0)
2710  
2711 C...Set up kinematics for photons inside leptons.
2712       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(1,WTGAGA)
2713  
2714 C...Precalculate flavour selection weights.
2715       CALL PYKFIN
2716  
2717 C...Loop over gamma-p or gamma-gamma alternatives.
2718       CKIN3=CKIN(3)
2719       MSAV48=0
2720       DO 160 IGA=1,MINT(121)
2721         CKIN(3)=CKIN3
2722         MINT(122)=IGA
2723  
2724 C...Select partonic subprocesses to be included in the simulation.
2725         CALL PYINPR
2726         MINT(101)=1
2727         MINT(102)=1
2728         MINT(103)=MINT(11)
2729         MINT(104)=MINT(12)
2730  
2731 C...Count number of subprocesses on.
2732         MINT(48)=0
2733         DO 130 ISUB=1,500
2734           IF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
2735      &    MSUB(ISUB).EQ.1.AND.MINT(121).GT.1) THEN
2736             MSUB(ISUB)=0
2737           ELSEIF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
2738      &    MSUB(ISUB).EQ.1) THEN
2739             WRITE(MSTU(11),5200) ISUB,CHLH(MINT(41)),CHLH(MINT(42))
2740             STOP
2741           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).EQ.-1) THEN
2742             WRITE(MSTU(11),5300) ISUB
2743             STOP
2744           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).LE.-2) THEN
2745             WRITE(MSTU(11),5400) ISUB
2746             STOP
2747           ELSEIF(MSUB(ISUB).EQ.1) THEN
2748             MINT(48)=MINT(48)+1
2749           ENDIF
2750   130   CONTINUE
2751  
2752 C...Stop or raise warning flag if no subprocesses on.
2753         IF(MINT(121).EQ.1.AND.MINT(48).EQ.0) THEN
2754           IF(MSTP(127).NE.1) THEN
2755             WRITE(MSTU(11),5500)
2756             STOP
2757           ELSE
2758             WRITE(MSTU(11),5700)
2759             MSTI(53)=1
2760           ENDIF
2761         ENDIF
2762         MINT(49)=MINT(48)-MSUB(91)-MSUB(92)-MSUB(93)-MSUB(94)
2763         MSAV48=MSAV48+MINT(48)
2764  
2765 C...Reset variables for cross-section calculation.
2766         DO 150 I=0,500
2767           DO 140 J=1,3
2768             NGEN(I,J)=0
2769             XSEC(I,J)=0D0
2770   140     CONTINUE
2771   150   CONTINUE
2772  
2773 C...Find parametrized total cross-sections.
2774         CALL PYXTOT
2775         VINT(318)=VINT(317)
2776  
2777 C...Maxima of differential cross-sections.
2778         IF(MSTP(121).LE.1) CALL PYMAXI
2779  
2780 C...Initialize possibility of pileup events.
2781         IF(MINT(121).GT.1) MSTP(131)=0
2782         IF(MSTP(131).NE.0) CALL PYPILE(1)
2783  
2784 C...Initialize multiple interactions with variable impact parameter.
2785         IF(MINT(50).EQ.1) THEN
2786           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
2787           IF(MSTP(81).EQ.0.AND.CKIN(3).GT.PTMN) MSTP(82)=MIN(1,MSTP(82))
2788           IF((MINT(49).NE.0.OR.MSTP(131).NE.0).AND.MSTP(82).GE.2)
2789      &    CALL PYMULT(1)
2790         ENDIF
2791  
2792 C...Save results for gamma-p and gamma-gamma alternatives.
2793         IF(MINT(121).GT.1) CALL PYSAVE(1,IGA)
2794   160 CONTINUE
2795  
2796 C...Initialization finished.
2797       IF(MSAV48.EQ.0) THEN
2798         IF(MSTP(127).NE.1) THEN
2799           WRITE(MSTU(11),5500)
2800           STOP
2801         ELSE
2802           WRITE(MSTU(11),5700)
2803           MSTI(53)=1
2804         ENDIF
2805       ENDIF
2806   170 IF(MSTP(122).GE.1) WRITE(MSTU(11),5600)
2807  
2808 C...Formats for initialization information.
2809  5100 FORMAT('1',18('*'),1X,'PYINIT: initialization of PYTHIA ',
2810      &'routines',1X,17('*'))
2811  5200 FORMAT(1X,'Error: process number ',I3,' not meaningful for ',A6,
2812      &'-',A6,' interactions.'/1X,'Execution stopped!')
2813  5300 FORMAT(1X,'Error: requested subprocess',I4,' not implemented.'/
2814      &1X,'Execution stopped!')
2815  5400 FORMAT(1X,'Error: requested subprocess',I4,' not existing.'/
2816      &1X,'Execution stopped!')
2817  5500 FORMAT(1X,'Error: no subprocess switched on.'/
2818      &1X,'Execution stopped.')
2819  5600 FORMAT(/1X,22('*'),1X,'PYINIT: initialization completed',1X,
2820      &22('*'))
2821  5700 FORMAT(1X,'Error: no subprocess switched on.'/
2822      &1X,'Execution will stop if you try to generate events.')
2823  
2824       RETURN
2825       END
2826  
2827 C*********************************************************************
2828  
2829 C...PYEVNT
2830 C...Administers the generation of a high-pT event via calls to
2831 C...a number of subroutines.
2832  
2833       SUBROUTINE PYEVNT
2834  
2835 C...Double precision and integer declarations.
2836       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2837       IMPLICIT INTEGER(I-N)
2838       INTEGER PYK,PYCHGE,PYCOMP
2839 C...Commonblocks.
2840       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
2841       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2842       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2843       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2844       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2845       COMMON/PYINT1/MINT(400),VINT(400)
2846       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
2847       COMMON/PYINT4/MWID(500),WIDS(500,5)
2848       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
2849       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,
2850      &/PYINT2/,/PYINT4/,/PYINT5/
2851 C...Local array.
2852       DIMENSION VTX(4)
2853  
2854 C...Stop if no subprocesses on.
2855       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
2856         WRITE(MSTU(11),5100)
2857         STOP
2858       ENDIF
2859  
2860 C...Initial values for some counters.
2861       N=0
2862       MINT(5)=MINT(5)+1
2863       MINT(7)=0
2864       MINT(8)=0
2865       MINT(83)=0
2866       MINT(84)=MSTP(126)
2867       MSTU(24)=0
2868       MSTU70=0
2869       MSTJ14=MSTJ(14)
2870  
2871 C...If variable energies: redo incoming kinematics and cross-section.
2872       MSTI(61)=0
2873       IF(MSTP(171).EQ.1) THEN
2874         CALL PYINKI(1)
2875         IF(MSTI(61).EQ.1) THEN
2876           MINT(5)=MINT(5)-1
2877           RETURN
2878         ENDIF
2879         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
2880         CALL PYXTOT
2881       ENDIF
2882  
2883 C...Loop over number of pileup events; check space left.
2884       IF(MSTP(131).LE.0) THEN
2885         NPILE=1
2886       ELSE
2887         CALL PYPILE(2)
2888         NPILE=MINT(81)
2889       ENDIF
2890       DO 250 IPILE=1,NPILE
2891         IF(MINT(84)+100.GE.MSTU(4)) THEN
2892           CALL PYERRM(11,
2893      &    '(PYEVNT:) no more space in PYJETS for pileup events')
2894           IF(MSTU(21).GE.1) GOTO 260
2895         ENDIF
2896         MINT(82)=IPILE
2897  
2898 C...Generate variables of hard scattering.
2899         MINT(51)=0
2900         MSTI(52)=0
2901   100   CONTINUE
2902         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
2903         MINT(31)=0
2904         MINT(51)=0
2905         MINT(57)=0
2906         CALL PYRAND
2907         IF(MSTI(61).EQ.1) THEN
2908           MINT(5)=MINT(5)-1
2909           RETURN
2910         ENDIF
2911         IF(MINT(51).EQ.2) RETURN
2912         ISUB=MINT(1)
2913         IF(MSTP(111).EQ.-1) GOTO 240
2914  
2915         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
2916 C...Hard scattering (including low-pT):
2917 C...reconstruct kinematics and colour flow of hard scattering.
2918           MINT31=MINT(31)
2919   110     MINT(31)=MINT31
2920           MINT(51)=0
2921           CALL PYSCAT
2922           IF(MINT(51).EQ.1) GOTO 100
2923           IPU1=MINT(84)+1
2924           IPU2=MINT(84)+2
2925           IF(ISUB.EQ.95) GOTO 120
2926  
2927 C...Showering of initial state partons (optional).
2928           NFIN=N
2929           ALAMSV=PARJ(81)
2930           PARJ(81)=PARP(72)
2931           IF(MSTP(61).GE.1.AND.MINT(47).GE.2) CALL PYSSPA(IPU1,IPU2)
2932           PARJ(81)=ALAMSV
2933           IF(MINT(51).EQ.1) GOTO 100
2934  
2935 C...Showering of final state partons (optional).
2936           ALAMSV=PARJ(81)
2937           PARJ(81)=PARP(72)
2938           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10)
2939      &    THEN
2940             IPU3=MINT(84)+3
2941             IPU4=MINT(84)+4
2942             IF(ISET(ISUB).EQ.5) IPU4=-3
2943             QMAX=VINT(55)
2944             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
2945             CALL PYSHOW(IPU3,IPU4,QMAX)
2946           ELSEIF(ISET(ISUB).EQ.11) THEN
2947             CALL PYADSH(NFIN)
2948           ENDIF
2949           PARJ(81)=ALAMSV
2950  
2951 C...Decay of final state resonances.
2952           MINT(32)=0
2953           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0)
2954           IF(MINT(51).EQ.1) GOTO 100
2955           MINT(52)=N
2956  
2957 C...Multiple interactions.
2958           IF(MSTP(81).GE.1.AND.MINT(50).EQ.1) CALL PYMULT(6)
2959           MINT(53)=N
2960  
2961 C...Hadron remnants and primordial kT.
2962   120     CALL PYREMN(IPU1,IPU2)
2963           IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO 110
2964           IF(MINT(51).EQ.1) GOTO 100
2965  
2966          ELSEIF(ISUB.NE.99) THEN
2967 C...Diffractive and elastic scattering.
2968           CALL PYDIFF
2969  
2970         ELSE
2971 C...DIS scattering (photon flux external).
2972           CALL PYDISG
2973           IF(MINT(51).EQ.1) GOTO 100
2974         ENDIF
2975  
2976 C...Check that no odd resonance left undecayed.
2977         IF(MSTP(111).GE.1) THEN
2978           NFIX=N
2979           DO 130 I=MINT(84)+1,NFIX
2980             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
2981      &      K(I,2).NE.22) THEN
2982               KCA=PYCOMP(K(I,2))
2983               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
2984                 CALL PYRESD(I)
2985                 IF(MINT(51).EQ.1) GOTO 100
2986               ENDIF
2987             ENDIF
2988   130     CONTINUE
2989         ENDIF
2990  
2991 C...Boost hadronic subsystem to overall rest frame.
2992 C..(Only relevant when photon inside lepton beam.)
2993         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
2994  
2995 C...Recalculate energies from momenta and masses (if desired).
2996         IF(MSTP(113).GE.1) THEN
2997           DO 140 I=MINT(83)+1,N
2998             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
2999      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3000   140     CONTINUE
3001           NRECAL=N
3002         ENDIF
3003  
3004 C...Rearrange partons along strings, check invariant mass cuts.
3005         MSTU(28)=0
3006         IF(MSTP(111).LE.0) MSTJ(14)=-1
3007         CALL PYPREP(MINT(84)+1)
3008         MSTJ(14)=MSTJ14
3009         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3010         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3011           DO 170 I=MINT(84)+1,N
3012             IF(K(I,2).EQ.94) THEN
3013               DO 160 I1=I+1,MIN(N,I+10)
3014                 IF(K(I1,3).EQ.I) THEN
3015                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3016                   IF(K(I1,3).EQ.0) THEN
3017                     DO 150 II=MINT(84)+1,I-1
3018                         IF(K(II,2).EQ.K(I1,2)) THEN
3019                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3020      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3021                         ENDIF
3022   150               CONTINUE
3023                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3024                   ENDIF
3025                 ENDIF
3026   160         CONTINUE
3027             ENDIF
3028   170     CONTINUE
3029           CALL PYEDIT(12)
3030           CALL PYEDIT(14)
3031           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3032           IF(MSTP(125).EQ.0) MINT(4)=0
3033           DO 190 I=MINT(83)+1,N
3034             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3035               DO 180 I1=I+1,N
3036                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3037                 IF(K(I1,3).EQ.I) K(I,5)=I1
3038   180         CONTINUE
3039             ENDIF
3040   190     CONTINUE
3041         ENDIF
3042  
3043 C...Introduce separators between sections in PYLIST event listing.
3044         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3045           MSTU70=1
3046           MSTU(71)=N
3047         ELSEIF(IPILE.EQ.1) THEN
3048           MSTU70=3
3049           MSTU(71)=2
3050           MSTU(72)=MINT(4)
3051           MSTU(73)=N
3052         ENDIF
3053  
3054 C...Go back to lab frame (needed for vertices, also in fragmentation).
3055         CALL PYFRAM(1)
3056  
3057 C...Set nonvanishing production vertex (optional).
3058         IF(MSTP(151).EQ.1) THEN
3059           DO 200 J=1,4
3060             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3061      &      SIN(PARU(2)*PYR(0))
3062   200     CONTINUE
3063           DO 220 I=MINT(83)+1,N
3064             DO 210 J=1,4
3065               V(I,J)=V(I,J)+VTX(J)
3066   210       CONTINUE
3067   220     CONTINUE
3068         ENDIF
3069  
3070 C...Perform hadronization (if desired).
3071         IF(MSTP(111).GE.1) THEN
3072           CALL PYEXEC
3073           IF(MSTU(24).NE.0) GOTO 100
3074         ENDIF
3075         IF(MSTP(113).GE.1) THEN
3076           DO 230 I=NRECAL,N
3077             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3078      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3079   230     CONTINUE
3080         ENDIF
3081         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3082  
3083 C...Store event information and calculate Monte Carlo estimates of
3084 C...subprocess cross-sections.
3085   240   IF(IPILE.EQ.1) CALL PYDOCU
3086  
3087 C...Set counters for current pileup event and loop to next one.
3088         MSTI(41)=IPILE
3089         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3090         IF(MSTU70.LT.10) THEN
3091           MSTU70=MSTU70+1
3092           MSTU(70+MSTU70)=N
3093         ENDIF
3094         MINT(83)=N
3095         MINT(84)=N+MSTP(126)
3096         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3097   250 CONTINUE
3098  
3099 C...Generic information on pileup events. Reconstruct missing history.
3100       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3101         PARI(91)=VINT(132)
3102         PARI(92)=VINT(133)
3103         PARI(93)=VINT(134)
3104         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3105       ENDIF
3106       CALL PYEDIT(16)
3107  
3108 C...Transform to the desired coordinate frame.
3109   260 CALL PYFRAM(MSTP(124))
3110       MSTU(70)=MSTU70
3111       PARU(21)=VINT(1)
3112  
3113 C...Error messages
3114  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3115      &1X,'Execution stopped.')
3116  
3117       RETURN
3118       END
3119  
3120 C***********************************************************************
3121  
3122 C...PYSTAT
3123 C...Prints out information about cross-sections, decay widths, branching
3124 C...ratios, kinematical limits, status codes and parameter values.
3125  
3126       SUBROUTINE PYSTAT(MSTAT)
3127  
3128 C...Double precision and integer declarations.
3129       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3130       IMPLICIT INTEGER(I-N)
3131       INTEGER PYK,PYCHGE,PYCOMP
3132 C...Parameter statement to help give large particle numbers.
3133       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
3134      &KEXCIT=4000000,KDIMEN=5000000)
3135       PARAMETER (EPS=1D-3)
3136 C...Commonblocks.
3137       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3138       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3139       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3140       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
3141       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3142       COMMON/PYINT1/MINT(400),VINT(400)
3143       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3144       COMMON/PYINT4/MWID(500),WIDS(500,5)
3145       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3146       COMMON/PYINT6/PROC(0:500)
3147       CHARACTER PROC*28, CHTMP*16
3148       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
3149       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
3150       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
3151      &/PYINT2/,/PYINT4/,/PYINT5/,/PYINT6/,/PYMSSM/,/PYMSRV/
3152 C...Local arrays, character variables and data.
3153       DIMENSION WDTP(0:400),WDTE(0:400,0:5),NMODES(0:20),PBRAT(10)
3154       CHARACTER PROGA(6)*28,CHAU*16,CHKF*16,CHD1*16,CHD2*16,CHD3*16,
3155      &CHIN(2)*12,STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28,
3156      &PROGG9(13)*28,PROGG4(4)*28,PROGG2(2)*28,PROGP4(4)*28
3157       CHARACTER*24 CHD0, CHDC(10)
3158       CHARACTER*6 DNAME(3)
3159       DATA PROGA/
3160      &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
3161      &'VMD/hadron * anomalous      ','direct * direct             ',
3162      &'direct * anomalous          ','anomalous * anomalous       '/
3163       DATA DISGA/'e * VMD','e * anomalous'/
3164       DATA PROGG9/
3165      &'direct * direct             ','direct * VMD                ',
3166      &'direct * anomalous          ','VMD * direct                ',
3167      &'VMD * VMD                   ','VMD * anomalous             ',
3168      &'anomalous * direct          ','anomalous * VMD             ',
3169      &'anomalous * anomalous       ','DIS * VMD                   ',
3170      &'DIS * anomalous             ','VMD * DIS                   ',
3171      &'anomalous * DIS             '/
3172       DATA PROGG4/
3173      &'direct * direct             ','direct * resolved           ',
3174      &'resolved * direct           ','resolved * resolved         '/
3175       DATA PROGG2/
3176      &'direct * hadron             ','resolved * hadron           '/
3177       DATA PROGP4/
3178      &'VMD * hadron                ','direct * hadron             ',
3179      &'anomalous * hadron          ','DIS * hadron                '/
3180       DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
3181      &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
3182      &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
3183      &'     y*_small     ','    eta*_large    ','    eta*_small    ',
3184      &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
3185      &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
3186      &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
3187      &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
3188      &'       tau''       '/
3189       DATA DNAME /'q     ','lepton','nu    '/
3190  
3191 C...Cross-sections.
3192       IF(MSTAT.LE.1) THEN
3193         IF(MINT(121).GT.1) CALL PYSAVE(5,0)
3194         WRITE(MSTU(11),5000)
3195         WRITE(MSTU(11),5100)
3196         WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
3197         DO 100 I=1,500
3198           IF(MSUB(I).NE.1) GOTO 100
3199           WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
3200   100   CONTINUE
3201         IF(MINT(121).GT.1) THEN
3202           WRITE(MSTU(11),5300)
3203           DO 110 IGA=1,MINT(121)
3204             CALL PYSAVE(3,IGA)
3205             IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
3206               WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
3207      &        XSEC(0,3)
3208             ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
3209               WRITE(MSTU(11),5200) IGA,PROGG9(IGA),NGEN(0,3),NGEN(0,1),
3210      &        XSEC(0,3)
3211             ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.30) THEN
3212               WRITE(MSTU(11),5200) IGA,PROGP4(IGA),NGEN(0,3),NGEN(0,1),
3213      &        XSEC(0,3)
3214             ELSEIF(MINT(121).EQ.4) THEN
3215               WRITE(MSTU(11),5200) IGA,PROGG4(IGA),NGEN(0,3),NGEN(0,1),
3216      &        XSEC(0,3)
3217             ELSEIF(MINT(121).EQ.2) THEN
3218               WRITE(MSTU(11),5200) IGA,PROGG2(IGA),NGEN(0,3),NGEN(0,1),
3219      &        XSEC(0,3)
3220             ELSE
3221               WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
3222      &        XSEC(0,3)
3223             ENDIF
3224   110     CONTINUE
3225           CALL PYSAVE(5,0)
3226         ENDIF
3227         WRITE(MSTU(11),5400) 1D0-DBLE(NGEN(0,3))/
3228      &  MAX(1D0,DBLE(NGEN(0,2)))
3229  
3230 C...Decay widths and branching ratios.
3231       ELSEIF(MSTAT.EQ.2) THEN
3232         WRITE(MSTU(11),5500)
3233         WRITE(MSTU(11),5600)
3234         DO 140 KC=1,500
3235           KF=KCHG(KC,4)
3236           CALL PYNAME(KF,CHKF)
3237           IOFF=0
3238           IF(KC.LE.22) THEN
3239             IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 140
3240             IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 140
3241             IF(KC.LE.5.OR.(KC.GE.11.AND.KC.LE.16)) IOFF=1
3242             IF(KC.EQ.18.AND.PMAS(18,1).LT.1D0) IOFF=1
3243             IF(KC.EQ.21.OR.KC.EQ.22) IOFF=1
3244           ELSE
3245             IF(MWID(KC).LE.0) GOTO 140
3246             IF(IMSS(1).LE.0.AND.(KF/KSUSY1.EQ.1.OR.
3247      &      KF/KSUSY1.EQ.2)) GOTO 140
3248           ENDIF
3249 C...Off-shell branchings.
3250           IF(IOFF.EQ.1) THEN
3251             NGP=0
3252             IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
3253             IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KF,CHKF(1:10),
3254      &      PMAS(KC,1),0D0,0D0,STATE(MDCY(KC,1)),0D0
3255             DO 120 J=1,MDCY(KC,3)
3256               IDC=J+MDCY(KC,2)-1
3257               NGP1=0
3258               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
3259      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
3260               NGP2=0
3261               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
3262      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
3263               CALL PYNAME(KFDP(IDC,1),CHD1)
3264               CALL PYNAME(KFDP(IDC,2),CHD2)
3265               IF(KFDP(IDC,3).EQ.0) THEN
3266                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3267      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800) IDC,CHD1(1:10),
3268      &          CHD2(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3269               ELSE
3270                 CALL PYNAME(KFDP(IDC,3),CHD3)
3271                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3272      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5900) IDC,CHD1(1:10),
3273      &          CHD2(1:10),CHD3(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3274               ENDIF
3275   120       CONTINUE
3276 C...On-shell decays.
3277           ELSE
3278             CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
3279             BRFIN=1D0
3280             IF(WDTE(0,0).LE.0D0) BRFIN=0D0
3281             WRITE(MSTU(11),5700) KF,CHKF(1:10),PMAS(KC,1),WDTP(0),1D0,
3282      &      STATE(MDCY(KC,1)),BRFIN
3283             DO 130 J=1,MDCY(KC,3)
3284               IDC=J+MDCY(KC,2)-1
3285               NGP1=0
3286               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
3287      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
3288               NGP2=0
3289               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
3290      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
3291               BRFIN=0D0
3292               IF(WDTE(0,0).GT.0D0) BRFIN=WDTE(J,0)/WDTE(0,0)
3293               CALL PYNAME(KFDP(IDC,1),CHD1)
3294               CALL PYNAME(KFDP(IDC,2),CHD2)
3295               IF(KFDP(IDC,3).EQ.0) THEN
3296                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
3297      &          WRITE(MSTU(11),5800) IDC,CHD1(1:10),
3298      &          CHD2(1:10),WDTP(J),WDTP(J)/WDTP(0),
3299      &          STATE(MDME(IDC,1)),BRFIN
3300               ELSE
3301                 CALL PYNAME(KFDP(IDC,3),CHD3)
3302                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
3303      &          WRITE(MSTU(11),5900) IDC,CHD1(1:10),
3304      &          CHD2(1:10),CHD3(1:10),WDTP(J),WDTP(J)/WDTP(0),
3305      &          STATE(MDME(IDC,1)),BRFIN
3306               ENDIF
3307   130       CONTINUE
3308           ENDIF
3309   140   CONTINUE
3310         WRITE(MSTU(11),6000)
3311  
3312 C...Allowed incoming partons/particles at hard interaction.
3313       ELSEIF(MSTAT.EQ.3) THEN
3314         WRITE(MSTU(11),6100)
3315         CALL PYNAME(MINT(11),CHAU)
3316         CHIN(1)=CHAU(1:12)
3317         CALL PYNAME(MINT(12),CHAU)
3318         CHIN(2)=CHAU(1:12)
3319         WRITE(MSTU(11),6200) CHIN(1),CHIN(2)
3320         DO 150 I=-20,22
3321           IF(I.EQ.0) GOTO 150
3322           IA=IABS(I)
3323           IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 150
3324           IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 150
3325           CALL PYNAME(I,CHAU)
3326           WRITE(MSTU(11),6300) CHAU,STATE(KFIN(1,I)),CHAU,
3327      &    STATE(KFIN(2,I))
3328   150   CONTINUE
3329         WRITE(MSTU(11),6400)
3330  
3331 C...User-defined limits on kinematical variables.
3332       ELSEIF(MSTAT.EQ.4) THEN
3333         WRITE(MSTU(11),6500)
3334         WRITE(MSTU(11),6600)
3335         SHRMAX=CKIN(2)
3336         IF(SHRMAX.LT.0D0) SHRMAX=VINT(1)
3337         WRITE(MSTU(11),6700) CKIN(1),CHKIN(1),SHRMAX
3338         PTHMIN=MAX(CKIN(3),CKIN(5))
3339         PTHMAX=CKIN(4)
3340         IF(PTHMAX.LT.0D0) PTHMAX=0.5D0*SHRMAX
3341         WRITE(MSTU(11),6800) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
3342         WRITE(MSTU(11),6900) CHKIN(3),CKIN(6)
3343         DO 160 I=4,14
3344           WRITE(MSTU(11),6700) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
3345   160   CONTINUE
3346         SPRMAX=CKIN(32)
3347         IF(SPRMAX.LT.0D0) SPRMAX=VINT(1)
3348         WRITE(MSTU(11),6700) CKIN(31),CHKIN(15),SPRMAX
3349         WRITE(MSTU(11),7000)
3350  
3351 C...Status codes and parameter values.
3352       ELSEIF(MSTAT.EQ.5) THEN
3353         WRITE(MSTU(11),7100)
3354         WRITE(MSTU(11),7200)
3355         DO 170 I=1,100
3356           WRITE(MSTU(11),7300) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
3357      &    PARP(100+I)
3358   170   CONTINUE
3359  
3360 C...List of all processes implemented in the program.
3361       ELSEIF(MSTAT.EQ.6) THEN
3362         WRITE(MSTU(11),7400)
3363         WRITE(MSTU(11),7500)
3364         DO 180 I=1,500
3365           IF(ISET(I).LT.0) GOTO 180
3366           WRITE(MSTU(11),7600) I,PROC(I),ISET(I),KFPR(I,1),KFPR(I,2)
3367   180   CONTINUE
3368         WRITE(MSTU(11),7700)
3369  
3370       ELSEIF(MSTAT.EQ.7) THEN
3371       WRITE (MSTU(11),8000)
3372       NMODES(0)=0
3373       NMODES(10)=0
3374       NMODES(9)=0
3375       DO 290 ILR=1,2
3376         DO 280 KFSM=1,16
3377           KFSUSY=ILR*KSUSY1+KFSM
3378           NRVDC=0
3379 C...SDOWN DECAYS
3380           IF (KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5) THEN
3381             NRVDC=3
3382             DO 190 I=1,NRVDC
3383               PBRAT(I)=0D0
3384               NMODES(I)=0
3385   190       CONTINUE
3386             CALL PYNAME(KFSUSY,CHTMP)
3387             CHD0=CHTMP//' '
3388             CHDC(1)=DNAME(3) // ' + ' // DNAME(1)
3389             CHDC(2)=DNAME(2) // ' + ' // DNAME(1)
3390             CHDC(3)=DNAME(1) // ' + ' // DNAME(1)
3391             KC=PYCOMP(KFSUSY)
3392             DO 200 J=1,MDCY(KC,3)
3393               IDC=J+MDCY(KC,2)-1
3394               ID1=IABS(KFDP(IDC,1))
3395               ID2=IABS(KFDP(IDC,2))
3396               IF (KFDP(IDC,3).EQ.0) THEN
3397                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
3398      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3399                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
3400                   NMODES(1)=NMODES(1)+1
3401                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3402                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3403                 ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3404      &                 .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6)) THEN
3405                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
3406                   NMODES(2)=NMODES(2)+1
3407                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3408                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3409                 ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
3410      &                 .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3411                   PBRAT(3)=PBRAT(3)+BRAT(IDC)
3412                   NMODES(3)=NMODES(3)+1
3413                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3414                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3415                 ENDIF
3416               ENDIF
3417   200       CONTINUE
3418           ENDIF
3419 C...SUP DECAYS
3420           IF (KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6) THEN
3421             NRVDC=2
3422             DO 210 I=1,NRVDC
3423               NMODES(I)=0
3424               PBRAT(I)=0D0
3425   210       CONTINUE
3426             CALL PYNAME(KFSUSY,CHTMP)
3427             CHD0=CHTMP//' '
3428             CHDC(1)=DNAME(2) // ' + ' // DNAME(1)
3429             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
3430             KC=PYCOMP(KFSUSY)
3431             DO 220 J=1,MDCY(KC,3)
3432               IDC=J+MDCY(KC,2)-1
3433               ID1=IABS(KFDP(IDC,1))
3434               ID2=IABS(KFDP(IDC,2))
3435               IF (KFDP(IDC,3).EQ.0) THEN
3436                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
3437      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3438                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
3439                   NMODES(1)=NMODES(1)+1
3440                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3441                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3442                 ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
3443      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3444                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
3445                   NMODES(2)=NMODES(2)+1
3446                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3447                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3448                 ENDIF
3449               ENDIF
3450   220       CONTINUE
3451           ENDIF
3452 C...SLEPTON DECAYS
3453           IF (KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15) THEN
3454             NRVDC=2
3455             DO 230 I=1,NRVDC
3456               PBRAT(I)=0D0
3457               NMODES(I)=0
3458   230       CONTINUE
3459             CALL PYNAME(KFSUSY,CHTMP)
3460             CHD0=CHTMP//' '
3461             CHDC(1)=DNAME(3) // ' + ' // DNAME(2)
3462             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
3463             KC=PYCOMP(KFSUSY)
3464             DO 240 J=1,MDCY(KC,3)
3465               IDC=J+MDCY(KC,2)-1
3466               ID1=IABS(KFDP(IDC,1))
3467               ID2=IABS(KFDP(IDC,2))
3468               IF (KFDP(IDC,3).EQ.0) THEN
3469                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
3470      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
3471                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
3472                   NMODES(1)=NMODES(1)+1
3473                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3474                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3475                 ENDIF
3476                 IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND.(ID2
3477      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3478                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
3479                   NMODES(2)=NMODES(2)+1
3480                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3481                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3482                 ENDIF
3483               ENDIF
3484   240       CONTINUE
3485           ENDIF
3486 C...SNEUTRINO DECAYS
3487           IF ((KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16).AND.ILR.EQ.1)
3488      &         THEN
3489             NRVDC=2
3490             DO 250 I=1,NRVDC
3491               PBRAT(I)=0D0
3492               NMODES(I)=0
3493   250       CONTINUE
3494             CALL PYNAME(KFSUSY,CHTMP)
3495             CHD0=CHTMP//' '
3496             CHDC(1)=DNAME(2) // ' + ' // DNAME(2)
3497             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
3498             KC=PYCOMP(KFSUSY)
3499             DO 260 J=1,MDCY(KC,3)
3500               IDC=J+MDCY(KC,2)-1
3501               ID1=IABS(KFDP(IDC,1))
3502               ID2=IABS(KFDP(IDC,2))
3503               IF (KFDP(IDC,3).EQ.0) THEN
3504                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
3505      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
3506                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
3507                   NMODES(1)=NMODES(1)+1
3508                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3509                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3510                 ENDIF
3511                 IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
3512      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
3513                   NMODES(2)=NMODES(2)+1
3514                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
3515                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3516                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3517                 ENDIF
3518               ENDIF
3519   260       CONTINUE
3520           ENDIF
3521           IF (NRVDC.NE.0) THEN
3522             DO 270 I=1,NRVDC
3523               WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
3524               NMODES(0)=NMODES(0)+NMODES(I)
3525   270       CONTINUE
3526           ENDIF
3527   280   CONTINUE
3528   290 CONTINUE
3529       DO 370 KFSM=21,37
3530         KFSUSY=KSUSY1+KFSM
3531         NRVDC=0
3532 C...NEUTRALINO DECAYS
3533         IF (KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
3534           NRVDC=4
3535           DO 300 I=1,NRVDC
3536             PBRAT(I)=0D0
3537             NMODES(I)=0
3538   300     CONTINUE
3539           CALL PYNAME(KFSUSY,CHTMP)
3540           CHD0=CHTMP//' '
3541           CHDC(1)=DNAME(3) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
3542           CHDC(2)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3543           CHDC(3)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3544           CHDC(4)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3545           KC=PYCOMP(KFSUSY)
3546           DO 310 J=1,MDCY(KC,3)
3547             IDC=J+MDCY(KC,2)-1
3548             ID1=IABS(KFDP(IDC,1))
3549             ID2=IABS(KFDP(IDC,2))
3550             ID3=IABS(KFDP(IDC,3))
3551             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
3552      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.11.OR
3553      &           .ID3.EQ.13.OR.ID3.EQ.15)) THEN
3554               PBRAT(1)=PBRAT(1)+BRAT(IDC)
3555               NMODES(1)=NMODES(1)+1
3556               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3557               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3558             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
3559      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
3560      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3561               PBRAT(2)=PBRAT(2)+BRAT(IDC)
3562               NMODES(2)=NMODES(2)+1
3563               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3564               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3565             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3566      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
3567      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3568               PBRAT(3)=PBRAT(3)+BRAT(IDC)
3569               NMODES(3)=NMODES(3)+1
3570               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3571               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3572             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
3573      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
3574      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3575               PBRAT(4)=PBRAT(4)+BRAT(IDC)
3576               NMODES(4)=NMODES(4)+1
3577               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3578               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3579             ENDIF
3580   310     CONTINUE
3581         ENDIF
3582 C...CHARGINO DECAYS
3583         IF (KFSM.EQ.24.OR.KFSM.EQ.37) THEN
3584           NRVDC=5
3585           DO 320 I=1,NRVDC
3586             PBRAT(I)=0D0
3587             NMODES(I)=0
3588   320     CONTINUE
3589           CALL PYNAME(KFSUSY,CHTMP)
3590           CHD0=CHTMP//' '
3591           CHDC(1)=DNAME(3) // ' + ' // DNAME(3) // ' + ' // DNAME(2)
3592           CHDC(2)=DNAME(2) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
3593           CHDC(3)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3594           CHDC(4)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3595           CHDC(5)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3596           KC=PYCOMP(KFSUSY)
3597           DO 330 J=1,MDCY(KC,3)
3598             IDC=J+MDCY(KC,2)-1
3599             ID1=IABS(KFDP(IDC,1))
3600             ID2=IABS(KFDP(IDC,2))
3601             ID3=IABS(KFDP(IDC,3))
3602             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
3603      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.12.OR
3604      &           .ID3.EQ.14.OR.ID3.EQ.16)) THEN
3605               PBRAT(1)=PBRAT(1)+BRAT(IDC)
3606               NMODES(1)=NMODES(1)+1
3607               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3608               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3609             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
3610      &             .(ID2.EQ.12.OR.ID2.EQ.14.OR.ID2.EQ.16).AND.(ID3.EQ
3611      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
3612               PBRAT(1)=PBRAT(1)+BRAT(IDC)
3613               NMODES(1)=NMODES(1)+1
3614               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3615               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3616             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3617      &             .(ID2.EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ
3618      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
3619               PBRAT(2)=PBRAT(2)+BRAT(IDC)
3620               NMODES(2)=NMODES(2)+1
3621               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3622               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3623             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
3624      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
3625      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
3626               PBRAT(3)=PBRAT(3)+BRAT(IDC)
3627               NMODES(3)=NMODES(3)+1
3628               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3629               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3630             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
3631      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
3632      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3633               PBRAT(3)=PBRAT(3)+BRAT(IDC)
3634               NMODES(3)=NMODES(3)+1
3635               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3636               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3637             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3638      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
3639      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
3640               PBRAT(4)=PBRAT(4)+BRAT(IDC)
3641               NMODES(4)=NMODES(4)+1
3642               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3643               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3644             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3645      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
3646      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3647               PBRAT(4)=PBRAT(4)+BRAT(IDC)
3648               NMODES(4)=NMODES(4)+1
3649               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3650               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3651             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
3652      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
3653      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3654               PBRAT(5)=PBRAT(5)+BRAT(IDC)
3655               NMODES(5)=NMODES(5)+1
3656               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3657               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3658             ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND
3659      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
3660      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3661               PBRAT(5)=PBRAT(5)+BRAT(IDC)
3662               NMODES(5)=NMODES(5)+1
3663               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3664               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3665             ENDIF
3666   330     CONTINUE
3667         ENDIF
3668 C...GLUINO DECAYS
3669         IF (KFSM.EQ.21) THEN
3670           NRVDC=3
3671           DO 340 I=1,NRVDC
3672             PBRAT(I)=0D0
3673             NMODES(I)=0
3674   340     CONTINUE
3675           CALL PYNAME(KFSUSY,CHTMP)
3676           CHD0=CHTMP//' '
3677           CHDC(1)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3678           CHDC(2)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3679           CHDC(3)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
3680           KC=PYCOMP(KFSUSY)
3681           DO 350 J=1,MDCY(KC,3)
3682             IDC=J+MDCY(KC,2)-1
3683             ID1=IABS(KFDP(IDC,1))
3684             ID2=IABS(KFDP(IDC,2))
3685             ID3=IABS(KFDP(IDC,3))
3686             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
3687      &           .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1.OR
3688      &           .ID3.EQ.3.OR.ID3.EQ.5)) THEN
3689               PBRAT(1)=PBRAT(1)+BRAT(IDC)
3690               NMODES(1)=NMODES(1)+1
3691               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3692               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3693             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
3694      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
3695      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3696               PBRAT(2)=PBRAT(2)+BRAT(IDC)
3697               NMODES(2)=NMODES(2)+1
3698               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3699               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3700             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
3701      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
3702      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
3703               PBRAT(3)=PBRAT(3)+BRAT(IDC)
3704               NMODES(3)=NMODES(3)+1
3705               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
3706               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
3707             ENDIF
3708   350     CONTINUE
3709         ENDIF
3710  
3711         IF (NRVDC.NE.0) THEN
3712           DO 360 I=1,NRVDC
3713             WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
3714             NMODES(0)=NMODES(0)+NMODES(I)
3715   360     CONTINUE
3716         ENDIF
3717   370 CONTINUE
3718       WRITE (MSTU(11),8100) NMODES(0), NMODES(10), NMODES(9)
3719  
3720       IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
3721         WRITE (MSTU(11),8500)
3722         DO 400 IRV=1,3
3723           DO 390 JRV=1,3
3724             DO 380 KRV=1,3
3725               WRITE (MSTU(11),8700) IRV,JRV,KRV,RVLAM(IRV,JRV,KRV)
3726      &             ,RVLAMP(IRV,JRV,KRV),RVLAMB(IRV,JRV,KRV)
3727   380       CONTINUE
3728   390     CONTINUE
3729   400   CONTINUE
3730         WRITE (MSTU(11),8600)
3731       ENDIF
3732       ENDIF
3733  
3734 C...Formats for printouts.
3735  5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
3736      &'Events and Cross-sections',1X,9('*'))
3737  5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
3738      &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
3739      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
3740      &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
3741      &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
3742      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
3743      &'I',12X,'I')
3744  5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
3745      &D10.3,1X,'I')
3746  5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
3747      &1X,'I',34X,'I',28X,'I',12X,'I')
3748  5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
3749      &1X,'********* Fraction of events that fail fragmentation ',
3750      &'cuts =',1X,F8.5,' *********'/)
3751  5500 FORMAT('1',27('*'),1X,'PYSTAT:  Decay Widths and Branching ',
3752      &'Ratios',1X,27('*'))
3753  5600 FORMAT(/1X,98('=')/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
3754      &1X,'I',5X,'Mother  -->  Branching/Decay Channel',8X,'I',1X,
3755      &'Width (GeV)',1X,'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,
3756      &'Eff. B.R.',1X,'I'/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
3757      &1X,98('='))
3758  5700 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
3759      &I8,2X,A10,3X,'(m =',F10.3,')',2X,'-->',5X,'I',2X,1P,D10.3,0P,1X,
3760      &'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,D10.3,0P,1X,'I')
3761  5800 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,15X,'I',2X,
3762      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
3763      &1P,D10.3,0P,1X,'I')
3764  5900 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,1X,'+',1X,A10,2X,'I',2X,
3765      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
3766      &1P,D10.3,0P,1X,'I')
3767  6000 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,98('='))
3768  6100 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
3769      &'Particles at Hard Interaction',1X,7('*'))
3770  6200 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
3771      &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
3772      &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
3773      &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
3774      &78('=')/1X,'I',38X,'I',37X,'I')
3775  6300 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
3776  6400 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
3777  6500 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
3778      &'Kinematical Variables',1X,12('*'))
3779  6600 FORMAT(/1X,78('=')/1X,'I',76X,'I')
3780  6700 FORMAT(1X,'I',16X,1P,D10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,D10.3,0P,
3781      &16X,'I')
3782  6800 FORMAT(1X,'I',3X,1P,D10.3,0P,1X,'(',1P,D10.3,0P,')',1X,'<',1X,A,
3783      &1X,'<',1X,1P,D10.3,0P,16X,'I')
3784  6900 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,D10.3,0P,16X,'I')
3785  7000 FORMAT(1X,'I',76X,'I'/1X,78('='))
3786  7100 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
3787      &'Parameter Values',1X,12('*'))
3788  7200 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
3789      &'PARP(I)'/)
3790  7300 FORMAT(1X,I3,5X,I6,6X,1P,D10.3,0P,18X,I3,5X,I6,6X,1P,D10.3)
3791  7400 FORMAT('1',13('*'),1X,'PYSTAT: List of implemented processes',
3792      &1X,13('*'))
3793  7500 FORMAT(/1X,65('=')/1X,'I',34X,'I',28X,'I'/1X,'I',12X,
3794      &'Subprocess',12X,'I',1X,'ISET',2X,'KFPR(I,1)',2X,'KFPR(I,2)',1X,
3795      &'I'/1X,'I',34X,'I',28X,'I'/1X,65('=')/1X,'I',34X,'I',28X,'I')
3796  7600 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I4,1X,I10,1X,I10,1X,'I')
3797  7700 FORMAT(1X,'I',34X,'I',28X,'I'/1X,65('='))
3798  8000 FORMAT(1X/ 1X/
3799      &     17X,'Sums over R-Violating branching ratios',1X/ 1X
3800      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I'/1X,'I',4X
3801      &     ,'Mother  -->  Sum over final state flavours',4X,'I',2X
3802      &     ,'BR(sum)',2X,'I',2X,'N',2X,'I'/1X,'I',50X,'I',11X,'I',5X,'I'
3803      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I')
3804  8100 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I'/1X,70('=')/1X,'I',1X
3805      &     ,'Total number of R-Violating modes :',3X,I5,24X,'I'/
3806      &     1X,'I',1X,'Total number with non-vanishing BR :',2X,I5,24X
3807      &     ,'I'/1X,'I',1X,'Total number with BR > 0.001 :',8X,I5,24X,'I'
3808      &     /1X,70('='))
3809  8200 FORMAT(1X,'I',1X,A9,1X,'-->',1X,A24,11X,
3810      &     'I',2X,1P,D8.2,0P,1X,'I',2X,I2,1X,'I')
3811  8300 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I')
3812  8500 FORMAT(1X/ 1X/
3813      &     1X,'R-Violating couplings',1X/ 1X /
3814      &     1X,55('=')/
3815      &     1X,'I',1X,'IJK',1X,'I',2X,'LAMBDA(IJK)',2X,'I',2X
3816      &     ,'LAMBDA''(IJK)',1X,'I',1X,"LAMBDA''(IJK)",1X,'I'/1X,'I',5X
3817      &     ,'I',15X,'I',15X,'I',15X,'I')
3818  8600 FORMAT(1X,55('='))
3819  8700 FORMAT(1X,'I',1X,I1,I1,I1,1X,'I',1X,1P,D13.3,0P,1X,'I',1X,1P
3820      &     ,D13.3,0P,1X,'I',1X,1P,D13.3,0P,1X,'I')
3821  
3822       RETURN
3823       END
3824  
3825 C*********************************************************************
3826  
3827 C...PYINRE
3828 C...Calculates full and effective widths of gauge bosons, stores
3829 C...masses and widths, rescales coefficients to be used for
3830 C...resonance production generation.
3831  
3832       SUBROUTINE PYINRE
3833  
3834 C...Double precision and integer declarations.
3835       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3836       IMPLICIT INTEGER(I-N)
3837       INTEGER PYK,PYCHGE,PYCOMP
3838 C...Parameter statement to help give large particle numbers.
3839       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
3840      &KEXCIT=4000000,KDIMEN=5000000)
3841 C...Commonblocks.
3842       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3843       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3844       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3845       COMMON/PYDAT4/CHAF(500,2)
3846       CHARACTER CHAF*16
3847       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
3848       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3849       COMMON/PYINT1/MINT(400),VINT(400)
3850       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3851       COMMON/PYINT4/MWID(500),WIDS(500,5)
3852       COMMON/PYINT6/PROC(0:500)
3853       CHARACTER PROC*28
3854       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
3855       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
3856      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/,/PYMSSM/
3857 C...Local arrays and data.
3858       DIMENSION WDTP(0:400),WDTE(0:400,0:5),WDTPM(0:400),
3859      &WDTEM(0:400,0:5),KCORD(500),PMORD(500)
3860  
3861 C...Born level couplings in MSSM Higgs doublet sector.
3862       XW=PARU(102)
3863       XWV=XW
3864       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
3865       XW1=1D0-XW
3866       IF(MSTP(4).EQ.2) THEN
3867         TANBE=PARU(141)
3868         RATBE=((1D0-TANBE**2)/(1D0+TANBE**2))**2
3869         SQMZ=PMAS(23,1)**2
3870         SQMW=PMAS(24,1)**2
3871         SQMH=PMAS(25,1)**2
3872         SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
3873         SQMHP=0.5D0*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4D0*SQMA*SQMZ*RATBE))
3874         SQMHC=SQMA+SQMW
3875         IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0D0) THEN
3876           WRITE(MSTU(11),5000)
3877           STOP
3878         ENDIF
3879         PMAS(35,1)=SQRT(SQMHP)
3880         PMAS(36,1)=SQRT(SQMA)
3881         PMAS(37,1)=SQRT(SQMHC)
3882         ALSU=0.5D0*ATAN(2D0*TANBE*(SQMA+SQMZ)/((1D0-TANBE**2)*
3883      &  (SQMA-SQMZ)))
3884         BESU=ATAN(TANBE)
3885         PARU(142)=1D0
3886         PARU(143)=1D0
3887         PARU(161)=-SIN(ALSU)/COS(BESU)
3888         PARU(162)=COS(ALSU)/SIN(BESU)
3889         PARU(163)=PARU(161)
3890         PARU(164)=SIN(BESU-ALSU)
3891         PARU(165)=PARU(164)
3892         PARU(168)=SIN(BESU-ALSU)+0.5D0*COS(2D0*BESU)*SIN(BESU+ALSU)/XW
3893         PARU(171)=COS(ALSU)/COS(BESU)
3894         PARU(172)=SIN(ALSU)/SIN(BESU)
3895         PARU(173)=PARU(171)
3896         PARU(174)=COS(BESU-ALSU)
3897         PARU(175)=PARU(174)
3898         PARU(176)=COS(2D0*ALSU)*COS(BESU+ALSU)-2D0*SIN(2D0*ALSU)*
3899      &  SIN(BESU+ALSU)
3900         PARU(177)=COS(2D0*BESU)*COS(BESU+ALSU)
3901         PARU(178)=COS(BESU-ALSU)-0.5D0*COS(2D0*BESU)*COS(BESU+ALSU)/XW
3902         PARU(181)=TANBE
3903         PARU(182)=1D0/TANBE
3904         PARU(183)=PARU(181)
3905         PARU(184)=0D0
3906         PARU(185)=PARU(184)
3907         PARU(186)=COS(BESU-ALSU)
3908         PARU(187)=SIN(BESU-ALSU)
3909         PARU(188)=PARU(186)
3910         PARU(189)=PARU(187)
3911         PARU(190)=0D0
3912         PARU(195)=COS(BESU-ALSU)
3913       ENDIF
3914  
3915 C...Reset effective widths of gauge bosons.
3916       DO 110 I=1,500
3917         DO 100 J=1,5
3918           WIDS(I,J)=1D0
3919   100   CONTINUE
3920   110 CONTINUE
3921  
3922 C...Order resonances by increasing mass (except Z0 and W+/-).
3923       NRES=0
3924       DO 140 KC=1,500
3925         KF=KCHG(KC,4)
3926         IF(KF.EQ.0) GOTO 140
3927         IF(MWID(KC).EQ.0) GOTO 140
3928         IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
3929           IF(MSTP(1).LE.3) GOTO 140
3930         ENDIF
3931         IF(KF/KSUSY1.EQ.1.OR.KF/KSUSY1.EQ.2) THEN
3932           IF(IMSS(1).LE.0) GOTO 140
3933         ENDIF
3934         NRES=NRES+1
3935         PMRES=PMAS(KC,1)
3936         IF(KC.EQ.23.OR.KC.EQ.24) PMRES=0D0
3937         DO 120 I1=NRES-1,1,-1
3938           IF(PMRES.GE.PMORD(I1)) GOTO 130
3939           KCORD(I1+1)=KCORD(I1)
3940           PMORD(I1+1)=PMORD(I1)
3941   120   CONTINUE
3942   130   KCORD(I1+1)=KC
3943         PMORD(I1+1)=PMRES
3944   140 CONTINUE
3945  
3946 C...Loop over possible resonances.
3947       DO 180 I=1,NRES
3948         KC=KCORD(I)
3949         KF=KCHG(KC,4)
3950  
3951 C...Check that no fourth generation channels on by mistake.
3952         IF(MSTP(1).LE.3) THEN
3953           DO 150 J=1,MDCY(KC,3)
3954             IDC=J+MDCY(KC,2)-1
3955             KFA1=IABS(KFDP(IDC,1))
3956             KFA2=IABS(KFDP(IDC,2))
3957             IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.
3958      &      KFA2.EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18)
3959      &      MDME(IDC,1)=-1
3960   150     CONTINUE
3961         ENDIF
3962  
3963 C...Check that no supersymmetric channels on by mistake.
3964         IF(IMSS(1).LE.0) THEN
3965           DO 160 J=1,MDCY(KC,3)
3966             IDC=J+MDCY(KC,2)-1
3967             KFA1S=IABS(KFDP(IDC,1))/KSUSY1
3968             KFA2S=IABS(KFDP(IDC,2))/KSUSY1
3969             IF(KFA1S.EQ.1.OR.KFA1S.EQ.2.OR.KFA2S.EQ.1.OR.KFA2S.EQ.2)
3970      &      MDME(IDC,1)=-1
3971   160     CONTINUE
3972         ENDIF
3973  
3974 C...Find mass and evaluate width.
3975         PMR=PMAS(KC,1)
3976         IF(KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) MINT(62)=1
3977         IF(MWID(KC).EQ.3) MINT(63)=1
3978         CALL PYWIDT(KF,PMR**2,WDTP,WDTE)
3979         MINT(51)=0
3980  
3981 C...Evaluate suppression factors due to non-simulated channels.
3982 C...AM
3983 C...Protection against division by 0 since rho_21_tc is causing problem here
3984         IF (WDTP(0) .GT. 0.) THEN
3985            
3986            IF(KCHG(KC,3).EQ.0) THEN
3987               WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
3988      &             2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
3989      &             2D0*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
3990               WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
3991               WIDS(KC,3)=0D0
3992               WIDS(KC,4)=0D0
3993               WIDS(KC,5)=0D0
3994            ELSE
3995               IF(MWID(KC).EQ.3) MINT(63)=1
3996               CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
3997               MINT(51)=0
3998               WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
3999      &             (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
4000      &             (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
4001      &             WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))/WDTP(0)**2
4002               WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
4003               WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))/WDTP(0)
4004               WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
4005      &             2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
4006      &             2D0*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
4007               WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
4008      &             2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
4009      &             2D0*WDTEM(0,4)*WDTEM(0,5))/WDTP(0)**2
4010            ENDIF
4011            
4012         ENDIF
4013 C...Set resonance widths and branching ratios;
4014 C...also on/off switch for decays.
4015         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
4016           PMAS(KC,2)=WDTP(0)
4017           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
4018           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
4019           DO 170 J=1,MDCY(KC,3)
4020             IDC=J+MDCY(KC,2)-1
4021             BRAT(IDC)=0D0
4022             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
4023   170     CONTINUE
4024         ENDIF
4025   180 CONTINUE
4026  
4027 C...Flavours of leptoquark: redefine charge and name.
4028       KFLQQ=KFDP(MDCY(42,2),1)
4029       KFLQL=KFDP(MDCY(42,2),2)
4030       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
4031      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
4032       LL=1
4033       IF(IABS(KFLQL).EQ.13) LL=2
4034       IF(IABS(KFLQL).EQ.15) LL=3
4035       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
4036      &CHAF(IABS(KFLQL),1)(1:LL)//' '
4037       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
4038  
4039 C...Special cases in treatment of gamma*/Z0: redefine process name.
4040       IF(MSTP(43).EQ.1) THEN
4041         PROC(1)='f + fbar -> gamma*'
4042         PROC(15)='f + fbar -> g + gamma*'
4043         PROC(19)='f + fbar -> gamma + gamma*'
4044         PROC(30)='f + g -> f + gamma*'
4045         PROC(35)='f + gamma -> f + gamma*'
4046       ELSEIF(MSTP(43).EQ.2) THEN
4047         PROC(1)='f + fbar -> Z0'
4048         PROC(15)='f + fbar -> g + Z0'
4049         PROC(19)='f + fbar -> gamma + Z0'
4050         PROC(30)='f + g -> f + Z0'
4051         PROC(35)='f + gamma -> f + Z0'
4052       ELSEIF(MSTP(43).EQ.3) THEN
4053         PROC(1)='f + fbar -> gamma*/Z0'
4054         PROC(15)='f + fbar -> g + gamma*/Z0'
4055         PROC(19)='f + fbar -> gamma + gamma*/Z0'
4056         PROC(30)='f + g -> f + gamma*/Z0'
4057         PROC(35)='f + gamma -> f + gamma*/Z0'
4058       ENDIF
4059  
4060 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
4061       IF(MSTP(44).EQ.1) THEN
4062         PROC(141)='f + fbar -> gamma*'
4063       ELSEIF(MSTP(44).EQ.2) THEN
4064         PROC(141)='f + fbar -> Z0'
4065       ELSEIF(MSTP(44).EQ.3) THEN
4066         PROC(141)='f + fbar -> Z''0'
4067       ELSEIF(MSTP(44).EQ.4) THEN
4068         PROC(141)='f + fbar -> gamma*/Z0'
4069       ELSEIF(MSTP(44).EQ.5) THEN
4070         PROC(141)='f + fbar -> gamma*/Z''0'
4071       ELSEIF(MSTP(44).EQ.6) THEN
4072         PROC(141)='f + fbar -> Z0/Z''0'
4073       ELSEIF(MSTP(44).EQ.7) THEN
4074         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
4075       ENDIF
4076  
4077 C...Special cases in treatment of WW -> WW: redefine process name.
4078       IF(MSTP(45).EQ.1) THEN
4079         PROC(77)='W+ + W+ -> W+ + W+'
4080       ELSEIF(MSTP(45).EQ.2) THEN
4081         PROC(77)='W+ + W- -> W+ + W-'
4082       ELSEIF(MSTP(45).EQ.3) THEN
4083         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
4084       ENDIF
4085  
4086 C...Format for error information.
4087  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
4088      &'combination'/1X,'Execution stopped!')
4089  
4090       RETURN
4091       END
4092  
4093 C*********************************************************************
4094  
4095 C...PYINBM
4096 C...Identifies the two incoming particles and the choice of frame.
4097  
4098        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
4099  
4100 C...Double precision and integer declarations.
4101       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4102       IMPLICIT INTEGER(I-N)
4103       INTEGER PYK,PYCHGE,PYCOMP
4104  
4105 C...User process initialization commonblock.
4106       INTEGER MAXPUP
4107       PARAMETER (MAXPUP=100)
4108       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4109       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4110       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4111      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4112      &LPRUP(MAXPUP)
4113       SAVE /HEPRUP/
4114  
4115 C...Commonblocks.
4116       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4117       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4118       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4119       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4120       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4121       COMMON/PYINT1/MINT(400),VINT(400)
4122       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
4123  
4124 C...Local arrays, character variables and data.
4125       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
4126      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
4127       DIMENSION LEN(3),KCDE(39),PM(2)
4128       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
4129      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
4130       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
4131      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
4132      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
4133      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
4134      &'nbar0       ','p+          ','pbar-       ','gamma       ',
4135      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
4136      &'xi-         ','xi0         ','omega-      ','pi0         ',
4137      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
4138      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
4139      &'k+          ','k-          ','ks0         ','kl0         '/
4140       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
4141      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
4142      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
4143  
4144 C...Store initial energy. Default frame.
4145       VINT(290)=WIN
4146       MINT(111)=0
4147  
4148 C...Special user process initialization; convert to normal input.
4149       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
4150         MINT(111)=11
4151         CALL PYNAME(IDBMUP(1),CHNAME)
4152         CHBEAM=CHNAME(1:12)
4153         CALL PYNAME(IDBMUP(2),CHNAME)
4154         CHTARG=CHNAME(1:12)
4155       ENDIF
4156  
4157 C...Convert character variables to lowercase and find their length.
4158       CHCOM(1)=CHFRAM
4159       CHCOM(2)=CHBEAM
4160       CHCOM(3)=CHTARG
4161       DO 130 I=1,3
4162         LEN(I)=12
4163         DO 110 LL=12,1,-1
4164           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
4165           DO 100 LA=1,26
4166             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
4167      &      CHALP(1)(LA:LA)
4168   100     CONTINUE
4169   110   CONTINUE
4170         CHIDNT(I)=CHCOM(I)
4171  
4172 C...Fix up bar, underscore and charge in particle name (if needed).
4173         DO 120 LL=1,10
4174           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
4175             CHTEMP=CHIDNT(I)
4176             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
4177           ENDIF
4178   120   CONTINUE
4179         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
4180           CHTEMP=CHIDNT(I)
4181           CHIDNT(I)='nu_'//CHTEMP(3:7)
4182         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
4183           CHIDNT(I)(1:3)='n0 '
4184         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
4185           CHIDNT(I)(1:5)='nbar0'
4186         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
4187           CHIDNT(I)(1:3)='p+ '
4188         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
4189      &    CHIDNT(I)(1:2).EQ.'p-') THEN
4190           CHIDNT(I)(1:5)='pbar-'
4191         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
4192           CHIDNT(I)(7:7)='0'
4193         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
4194           CHIDNT(I)(1:7)='reggeon'
4195         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
4196           CHIDNT(I)(1:7)='pomeron'
4197         ENDIF
4198   130 CONTINUE
4199  
4200 C...Identify free initialization.
4201       IF(CHCOM(1)(1:2).EQ.'no') THEN
4202         MINT(65)=1
4203         RETURN
4204       ENDIF
4205  
4206 C...Identify incoming beam and target particles.
4207       DO 160 I=1,2
4208         DO 140 J=1,39
4209           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
4210   140   CONTINUE
4211         PM(I)=PYMASS(MINT(10+I))
4212         VINT(2+I)=PM(I)
4213         MINT(140+I)=0
4214         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
4215           CHTEMP=CHIDNT(I+1)(7:12)//' '
4216           DO 150 J=1,12
4217             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
4218   150     CONTINUE
4219           PM(I)=PYMASS(MINT(140+I))
4220           VINT(302+I)=PM(I)
4221         ENDIF
4222   160 CONTINUE
4223       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
4224       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
4225       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) STOP
4226  
4227 C...Identify choice of frame and input energies.
4228       CHINIT=' '
4229  
4230 C...Events defined in the CM frame.
4231       IF(CHCOM(1)(1:2).EQ.'cm') THEN
4232         MINT(111)=1
4233         S=WIN**2
4234         IF(MSTP(122).GE.1) THEN
4235           IF(CHCOM(2)(1:1).NE.'e') THEN
4236             LOFFS=(31-(LEN(2)+LEN(3)))/2
4237             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
4238      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4239      &      ' collider'//' '
4240           ELSE
4241             LOFFS=(30-(LEN(2)+LEN(3)))/2
4242             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
4243      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4244      &      ' collider'//' '
4245           ENDIF
4246           WRITE(MSTU(11),5200) CHINIT
4247           WRITE(MSTU(11),5300) WIN
4248         ENDIF
4249  
4250 C...Events defined in fixed target frame.
4251       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
4252         MINT(111)=2
4253         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
4254         IF(MSTP(122).GE.1) THEN
4255           LOFFS=(29-(LEN(2)+LEN(3)))/2
4256           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4257      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4258      &    ' fixed target'//' '
4259           WRITE(MSTU(11),5200) CHINIT
4260           WRITE(MSTU(11),5400) WIN
4261           WRITE(MSTU(11),5500) SQRT(S)
4262         ENDIF
4263  
4264 C...Frame defined by user three-vectors.
4265       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
4266         MINT(111)=3
4267         P(1,5)=PM(1)
4268         P(2,5)=PM(2)
4269         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
4270         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
4271         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4272      &  (P(1,3)+P(2,3))**2
4273         IF(MSTP(122).GE.1) THEN
4274           LOFFS=(22-(LEN(2)+LEN(3)))/2
4275           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4276      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4277      &    ' user configuration'//' '
4278           WRITE(MSTU(11),5200) CHINIT
4279           WRITE(MSTU(11),5600)
4280           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4281           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4282           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4283         ENDIF
4284  
4285 C...Frame defined by user four-vectors.
4286       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
4287         MINT(111)=4
4288         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
4289         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
4290         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
4291         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
4292         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4293      &  (P(1,3)+P(2,3))**2
4294         IF(MSTP(122).GE.1) THEN
4295           LOFFS=(22-(LEN(2)+LEN(3)))/2
4296           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4297      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4298      &    ' user configuration'//' '
4299           WRITE(MSTU(11),5200) CHINIT
4300           WRITE(MSTU(11),5600)
4301           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4302           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4303           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4304         ENDIF
4305  
4306 C...Frame defined by user five-vectors.
4307       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
4308         MINT(111)=5
4309         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4310      &  (P(1,3)+P(2,3))**2
4311         IF(MSTP(122).GE.1) THEN
4312           LOFFS=(22-(LEN(2)+LEN(3)))/2
4313           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4314      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4315      &    ' user configuration'//' '
4316           WRITE(MSTU(11),5200) CHINIT
4317           WRITE(MSTU(11),5600)
4318           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4319           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4320           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4321         ENDIF
4322  
4323 C...Frame defined by HEPRUP common block.
4324       ELSEIF(MINT(111).EQ.11) THEN
4325         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
4326      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
4327         IF(MSTP(122).GE.1) THEN
4328           LOFFS=(22-(LEN(2)+LEN(3)))/2
4329           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4330      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4331      &    ' user configuration'//' '
4332           WRITE(MSTU(11),5200) CHINIT
4333           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
4334           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4335         ENDIF
4336  
4337 C...Unknown frame. Error for too low CM energy.
4338       ELSE
4339         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
4340         STOP
4341       ENDIF
4342       IF(S.LT.PARP(2)**2) THEN
4343         WRITE(MSTU(11),5900) SQRT(S)
4344         STOP
4345       ENDIF
4346  
4347 C...Formats for initialization and error information.
4348  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
4349      &1X,'Execution stopped!')
4350  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
4351      &1X,'Execution stopped!')
4352  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
4353  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
4354      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
4355  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
4356  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
4357      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
4358  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
4359      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
4360  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
4361  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
4362      &1X,'Execution stopped!')
4363  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
4364      &'generation.'/1X,'Execution stopped!')
4365  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
4366      &'GeV beam energies',13X,'I')
4367  
4368       RETURN
4369       END
4370  
4371 C*********************************************************************
4372  
4373 C...PYINKI
4374 C...Sets up kinematics, including rotations and boosts to/from CM frame.
4375  
4376       SUBROUTINE PYINKI(MODKI)
4377  
4378 C...Double precision and integer declarations.
4379       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4380       IMPLICIT INTEGER(I-N)
4381       INTEGER PYK,PYCHGE,PYCOMP
4382  
4383 C...User process initialization commonblock.
4384       INTEGER MAXPUP
4385       PARAMETER (MAXPUP=100)
4386       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4387       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4388       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4389      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4390      &LPRUP(MAXPUP)
4391       SAVE /HEPRUP/
4392  
4393 C...Commonblocks.
4394       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4395       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4396       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4397       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4398       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4399       COMMON/PYINT1/MINT(400),VINT(400)
4400       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
4401  
4402 C...Set initial flavour state.
4403       N=2
4404       DO 100 I=1,2
4405         K(I,1)=1
4406         K(I,2)=MINT(10+I)
4407         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
4408   100 CONTINUE
4409  
4410 C...Reset boost. Do kinematics for various cases.
4411       DO 110 J=6,10
4412         VINT(J)=0D0
4413   110 CONTINUE
4414  
4415 C...Set up kinematics for events defined in CM frame.
4416       IF(MINT(111).EQ.1) THEN
4417         WIN=VINT(290)
4418         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
4419         S=WIN**2
4420         P(1,5)=VINT(3)
4421         P(2,5)=VINT(4)
4422         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4423         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4424         P(1,1)=0D0
4425         P(1,2)=0D0
4426         P(2,1)=0D0
4427         P(2,2)=0D0
4428         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
4429      &  (4D0*S))
4430         P(2,3)=-P(1,3)
4431         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
4432         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
4433  
4434 C...Set up kinematics for fixed target events.
4435       ELSEIF(MINT(111).EQ.2) THEN
4436         WIN=VINT(290)
4437         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
4438         P(1,5)=VINT(3)
4439         P(2,5)=VINT(4)
4440         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4441         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4442         P(1,1)=0D0
4443         P(1,2)=0D0
4444         P(2,1)=0D0
4445         P(2,2)=0D0
4446         P(1,3)=WIN
4447         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
4448         P(2,3)=0D0
4449         P(2,4)=P(2,5)
4450         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
4451         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
4452         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
4453  
4454 C...Set up kinematics for events in user-defined frame.
4455       ELSEIF(MINT(111).EQ.3) THEN
4456         P(1,5)=VINT(3)
4457         P(2,5)=VINT(4)
4458         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4459         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4460         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
4461         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
4462         DO 120 J=1,3
4463           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4464   120   CONTINUE
4465         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4466         VINT(7)=PYANGL(P(1,1),P(1,2))
4467         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4468         VINT(6)=PYANGL(P(1,3),P(1,1))
4469         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4470         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
4471  
4472 C...Set up kinematics for events with user-defined four-vectors.
4473       ELSEIF(MINT(111).EQ.4) THEN
4474         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
4475         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
4476         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
4477         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
4478         DO 130 J=1,3
4479           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4480   130   CONTINUE
4481         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4482         VINT(7)=PYANGL(P(1,1),P(1,2))
4483         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4484         VINT(6)=PYANGL(P(1,3),P(1,1))
4485         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4486         S=(P(1,4)+P(2,4))**2
4487  
4488 C...Set up kinematics for events with user-defined five-vectors.
4489       ELSEIF(MINT(111).EQ.5) THEN
4490         DO 140 J=1,3
4491           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4492   140   CONTINUE
4493         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4494         VINT(7)=PYANGL(P(1,1),P(1,2))
4495         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4496         VINT(6)=PYANGL(P(1,3),P(1,1))
4497         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4498         S=(P(1,4)+P(2,4))**2
4499  
4500 C...Set up kinematics for events with external user processes.
4501       ELSEIF(MINT(111).EQ.11) THEN
4502         P(1,5)=VINT(3)
4503         P(2,5)=VINT(4)
4504         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4505         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4506         P(1,1)=0D0
4507         P(1,2)=0D0
4508         P(2,1)=0D0
4509         P(2,2)=0D0
4510         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
4511         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
4512         P(1,4)=EBMUP(1)
4513         P(2,4)=EBMUP(2)
4514         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
4515         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
4516         S=(P(1,4)+P(2,4))**2
4517       ENDIF
4518  
4519 C...Return or error for too low CM energy.
4520       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
4521         IF(MSTP(172).LE.1) THEN
4522           CALL PYERRM(23,
4523      &    '(PYINKI:) too low invariant mass in this event')
4524         ELSE
4525           MSTI(61)=1
4526           RETURN
4527         ENDIF
4528       ENDIF
4529  
4530 C...Save information on incoming particles.
4531       VINT(1)=SQRT(S)
4532       VINT(2)=S
4533       IF(MINT(111).GE.4) THEN
4534         IF(MINT(141).EQ.0) THEN
4535           VINT(3)=P(1,5)
4536           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
4537         ELSE
4538           VINT(303)=P(1,5)
4539         ENDIF
4540         IF(MINT(142).EQ.0) THEN
4541           VINT(4)=P(2,5)
4542           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
4543         ELSE
4544           VINT(304)=P(2,5)
4545         ENDIF
4546       ENDIF
4547       VINT(5)=P(1,3)
4548       IF(MODKI.EQ.0) VINT(289)=S
4549       DO 150 J=1,5
4550         V(1,J)=0D0
4551         V(2,J)=0D0
4552         VINT(290+J)=P(1,J)
4553         VINT(295+J)=P(2,J)
4554   150 CONTINUE
4555  
4556 C...Store pT cut-off and related constants to be used in generation.
4557       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
4558       IF(MSTP(82).LE.1) THEN
4559         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
4560       ELSE
4561         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
4562       ENDIF
4563       VINT(149)=4D0*PTMN**2/S
4564       VINT(154)=PTMN
4565  
4566       RETURN
4567       END
4568  
4569 C*********************************************************************
4570  
4571 C...PYINPR
4572 C...Selects partonic subprocesses to be included in the simulation.
4573  
4574       SUBROUTINE PYINPR
4575  
4576 C...Double precision and integer declarations.
4577       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4578       IMPLICIT INTEGER(I-N)
4579       INTEGER PYK,PYCHGE,PYCOMP
4580  
4581 C...User process initialization commonblock.
4582       INTEGER MAXPUP
4583       PARAMETER (MAXPUP=100)
4584       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4585       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4586       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4587      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4588      &LPRUP(MAXPUP)
4589       SAVE /HEPRUP/
4590  
4591 C...Commonblocks and character variables.
4592       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4593       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4594       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4595       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4596       COMMON/PYINT1/MINT(400),VINT(400)
4597       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4598       COMMON/PYINT6/PROC(0:500)
4599       CHARACTER PROC*28
4600       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
4601      &/PYINT6/
4602       CHARACTER CHIPR*10
4603  
4604 C...Reset processes to be included.
4605       IF(MSEL.NE.0) THEN
4606         DO 100 I=1,500
4607           MSUB(I)=0
4608   100   CONTINUE
4609       ENDIF
4610  
4611 C...Set running pTmin scale.
4612       IF(MSTP(82).LE.1) THEN
4613         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
4614       ELSE
4615         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
4616       ENDIF
4617  
4618 C...Begin by assuming incoming photon to enter subprocess.
4619       IF(MINT(11).EQ.22) MINT(15)=22
4620       IF(MINT(12).EQ.22) MINT(16)=22
4621  
4622 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
4623       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
4624         MSUB(10)=1
4625         MINT(123)=MINT(122)+1
4626  
4627 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
4628 C...allow mixture.
4629 C...Here also set a few parameters otherwise normally not touched.
4630       ELSEIF(MINT(121).GT.1) THEN
4631  
4632 C...Parton distributions dampened at small Q2; go to low energies,
4633 C...alpha_s <1; no minimum pT cut-off a priori.
4634         IF(MSTP(18).EQ.2) THEN
4635           MSTP(57)=3
4636           PARP(2)=2D0
4637           PARU(115)=1D0
4638           CKIN(5)=0.2D0
4639           CKIN(6)=0.2D0
4640         ENDIF
4641  
4642 C...Define pT cut-off parameters and whether run involves low-pT.
4643         PTMVMD=PTMRUN
4644         VINT(154)=PTMVMD
4645         PTMDIR=PTMVMD
4646         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
4647         PTMANO=PTMVMD
4648         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
4649      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
4650         IPTL=1
4651         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
4652         IF(MSEL.EQ.2) IPTL=1
4653  
4654 C...Set up for p/gamma * gamma; real or virtual photons.
4655         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
4656      &  MSTP(14).EQ.30)) THEN
4657  
4658 C...Set up for p/VMD * VMD.
4659         IF(MINT(122).EQ.1) THEN
4660           MINT(123)=2
4661           MSUB(11)=1
4662           MSUB(12)=1
4663           MSUB(13)=1
4664           MSUB(28)=1
4665           MSUB(53)=1
4666           MSUB(68)=1
4667           IF(IPTL.EQ.1) MSUB(95)=1
4668           IF(MSEL.EQ.2) THEN
4669             MSUB(91)=1
4670             MSUB(92)=1
4671             MSUB(93)=1
4672             MSUB(94)=1
4673           ENDIF
4674           IF(IPTL.EQ.1) CKIN(3)=0D0
4675  
4676 C...Set up for p/VMD * direct gamma.
4677         ELSEIF(MINT(122).EQ.2) THEN
4678           MINT(123)=0
4679           IF(MINT(121).EQ.6) MINT(123)=5
4680           MSUB(131)=1
4681           MSUB(132)=1
4682           MSUB(135)=1
4683           MSUB(136)=1
4684           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4685  
4686 C...Set up for p/VMD * anomalous gamma.
4687         ELSEIF(MINT(122).EQ.3) THEN
4688           MINT(123)=3
4689           IF(MINT(121).EQ.6) MINT(123)=7
4690           MSUB(11)=1
4691           MSUB(12)=1
4692           MSUB(13)=1
4693           MSUB(28)=1
4694           MSUB(53)=1
4695           MSUB(68)=1
4696           IF(IPTL.EQ.1) MSUB(95)=1
4697           IF(MSEL.EQ.2) THEN
4698             MSUB(91)=1
4699             MSUB(92)=1
4700             MSUB(93)=1
4701             MSUB(94)=1
4702           ENDIF
4703           IF(IPTL.EQ.1) CKIN(3)=0D0
4704  
4705 C...Set up for DIS * p.
4706         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
4707      &  IABS(MINT(12)).GT.100)) THEN
4708           MINT(123)=8
4709           IF(IPTL.EQ.1) MSUB(99)=1
4710  
4711 C...Set up for direct * direct gamma (switch off leptons).
4712         ELSEIF(MINT(122).EQ.4) THEN
4713           MINT(123)=0
4714           MSUB(137)=1
4715           MSUB(138)=1
4716           MSUB(139)=1
4717           MSUB(140)=1
4718           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4719             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4720   110     CONTINUE
4721           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4722  
4723 C...Set up for direct * anomalous gamma.
4724         ELSEIF(MINT(122).EQ.5) THEN
4725           MINT(123)=6
4726           MSUB(131)=1
4727           MSUB(132)=1
4728           MSUB(135)=1
4729           MSUB(136)=1
4730           IF(IPTL.EQ.1) CKIN(3)=PTMANO
4731  
4732 C...Set up for anomalous * anomalous gamma.
4733         ELSEIF(MINT(122).EQ.6) THEN
4734           MINT(123)=3
4735           MSUB(11)=1
4736           MSUB(12)=1
4737           MSUB(13)=1
4738           MSUB(28)=1
4739           MSUB(53)=1
4740           MSUB(68)=1
4741           IF(IPTL.EQ.1) MSUB(95)=1
4742           IF(MSEL.EQ.2) THEN
4743             MSUB(91)=1
4744             MSUB(92)=1
4745             MSUB(93)=1
4746             MSUB(94)=1
4747           ENDIF
4748           IF(IPTL.EQ.1) CKIN(3)=0D0
4749         ENDIF
4750  
4751 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
4752         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
4753  
4754 C...Set up for direct * direct gamma (switch off leptons).
4755         IF(MINT(122).EQ.1) THEN
4756           MINT(123)=0
4757           MSUB(137)=1
4758           MSUB(138)=1
4759           MSUB(139)=1
4760           MSUB(140)=1
4761           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4762             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4763   120     CONTINUE
4764           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4765  
4766 C...Set up for direct * VMD and VMD * direct gamma.
4767         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
4768           MINT(123)=5
4769           MSUB(131)=1
4770           MSUB(132)=1
4771           MSUB(135)=1
4772           MSUB(136)=1
4773           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4774  
4775 C...Set up for direct * anomalous and anomalous * direct gamma.
4776         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
4777           MINT(123)=6
4778           MSUB(131)=1
4779           MSUB(132)=1
4780           MSUB(135)=1
4781           MSUB(136)=1
4782           IF(IPTL.EQ.1) CKIN(3)=PTMANO
4783  
4784 C...Set up for VMD*VMD.
4785         ELSEIF(MINT(122).EQ.5) THEN
4786           MINT(123)=2
4787           MSUB(11)=1
4788           MSUB(12)=1
4789           MSUB(13)=1
4790           MSUB(28)=1
4791           MSUB(53)=1
4792           MSUB(68)=1
4793           IF(IPTL.EQ.1) MSUB(95)=1
4794           IF(MSEL.EQ.2) THEN
4795             MSUB(91)=1
4796             MSUB(92)=1
4797             MSUB(93)=1
4798             MSUB(94)=1
4799           ENDIF
4800           IF(IPTL.EQ.1) CKIN(3)=0D0
4801  
4802 C...Set up for VMD * anomalous and anomalous * VMD gamma.
4803         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
4804           MINT(123)=7
4805           MSUB(11)=1
4806           MSUB(12)=1
4807           MSUB(13)=1
4808           MSUB(28)=1
4809           MSUB(53)=1
4810           MSUB(68)=1
4811           IF(IPTL.EQ.1) MSUB(95)=1
4812           IF(MSEL.EQ.2) THEN
4813             MSUB(91)=1
4814             MSUB(92)=1
4815             MSUB(93)=1
4816             MSUB(94)=1
4817           ENDIF
4818           IF(IPTL.EQ.1) CKIN(3)=0D0
4819  
4820 C...Set up for anomalous * anomalous gamma.
4821         ELSEIF(MINT(122).EQ.9) THEN
4822           MINT(123)=3
4823           MSUB(11)=1
4824           MSUB(12)=1
4825           MSUB(13)=1
4826           MSUB(28)=1
4827           MSUB(53)=1
4828           MSUB(68)=1
4829           IF(IPTL.EQ.1) MSUB(95)=1
4830           IF(MSEL.EQ.2) THEN
4831             MSUB(91)=1
4832             MSUB(92)=1
4833             MSUB(93)=1
4834             MSUB(94)=1
4835           ENDIF
4836           IF(IPTL.EQ.1) CKIN(3)=0D0
4837  
4838 C...Set up for DIS * VMD and VMD * DIS gamma.
4839         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
4840           MINT(123)=8
4841           IF(IPTL.EQ.1) MSUB(99)=1
4842  
4843 C...Set up for DIS * anomalous and anomalous * DIS gamma.
4844         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
4845           MINT(123)=9
4846           IF(IPTL.EQ.1) MSUB(99)=1
4847         ENDIF
4848  
4849 C...Set up for gamma* * p; virtual photons = dir, res.
4850         ELSEIF(MINT(121).EQ.2) THEN
4851  
4852 C...Set up for direct * p.
4853         IF(MINT(122).EQ.1) THEN
4854           MINT(123)=0
4855           MSUB(131)=1
4856           MSUB(132)=1
4857           MSUB(135)=1
4858           MSUB(136)=1
4859           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4860  
4861 C...Set up for resolved * p.
4862         ELSEIF(MINT(122).EQ.2) THEN
4863           MINT(123)=1
4864           MSUB(11)=1
4865           MSUB(12)=1
4866           MSUB(13)=1
4867           MSUB(28)=1
4868           MSUB(53)=1
4869           MSUB(68)=1
4870           IF(IPTL.EQ.1) MSUB(95)=1
4871           IF(MSEL.EQ.2) THEN
4872             MSUB(91)=1
4873             MSUB(92)=1
4874             MSUB(93)=1
4875             MSUB(94)=1
4876           ENDIF
4877           IF(IPTL.EQ.1) CKIN(3)=0D0
4878         ENDIF
4879  
4880 C...Set up for gamma* * gamma*; virtual photons = dir, res.
4881         ELSEIF(MINT(121).EQ.4) THEN
4882  
4883 C...Set up for direct * direct gamma (switch off leptons).
4884         IF(MINT(122).EQ.1) THEN
4885           MINT(123)=0
4886           MSUB(137)=1
4887           MSUB(138)=1
4888           MSUB(139)=1
4889           MSUB(140)=1
4890           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4891             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4892   130     CONTINUE
4893           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4894  
4895 C...Set up for direct * resolved and resolved * direct gamma.
4896         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
4897           MINT(123)=5
4898           MSUB(131)=1
4899           MSUB(132)=1
4900           MSUB(135)=1
4901           MSUB(136)=1
4902           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4903  
4904 C...Set up for resolved * resolved gamma.
4905         ELSEIF(MINT(122).EQ.4) THEN
4906           MINT(123)=2
4907           MSUB(11)=1
4908           MSUB(12)=1
4909           MSUB(13)=1
4910           MSUB(28)=1
4911           MSUB(53)=1
4912           MSUB(68)=1
4913           IF(IPTL.EQ.1) MSUB(95)=1
4914           IF(MSEL.EQ.2) THEN
4915             MSUB(91)=1
4916             MSUB(92)=1
4917             MSUB(93)=1
4918             MSUB(94)=1
4919           ENDIF
4920           IF(IPTL.EQ.1) CKIN(3)=0D0
4921         ENDIF
4922  
4923 C...End of special set up for gamma-p and gamma-gamma.
4924         ENDIF
4925         CKIN(1)=2D0*CKIN(3)
4926       ENDIF
4927  
4928 C...Flavour information for individual beams.
4929       DO 140 I=1,2
4930         MINT(40+I)=1
4931         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
4932         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
4933         MINT(44+I)=MINT(40+I)
4934         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
4935      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
4936   140 CONTINUE
4937  
4938 C...If two real gammas, whereof one direct, pick the first.
4939 C...For two virtual photons, keep requested order.
4940       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
4941         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
4942           MINT(41)=1
4943           MINT(45)=1
4944         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
4945      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
4946           MINT(41)=1
4947           MINT(45)=1
4948         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
4949      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
4950           MINT(42)=1
4951           MINT(46)=1
4952         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
4953      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
4954           MINT(41)=1
4955           MINT(45)=1
4956         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
4957      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
4958           MINT(42)=1
4959           MINT(46)=1
4960         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
4961           MINT(41)=1
4962           MINT(45)=1
4963         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
4964           MINT(42)=1
4965           MINT(46)=1
4966         ENDIF
4967       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
4968         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
4969           IF(MINT(11).EQ.22) THEN
4970             MINT(41)=1
4971             MINT(45)=1
4972           ELSE
4973             MINT(42)=1
4974             MINT(46)=1
4975           ENDIF
4976         ENDIF
4977         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
4978      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
4979       ENDIF
4980  
4981 C...Flavour information on combination of incoming particles.
4982       MINT(43)=2*MINT(41)+MINT(42)-2
4983       MINT(44)=MINT(43)
4984       IF(MINT(123).LE.0) THEN
4985         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
4986         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
4987       ELSEIF(MINT(123).LE.3) THEN
4988         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
4989         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
4990       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
4991         MINT(43)=4
4992         MINT(44)=1
4993       ENDIF
4994       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
4995       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
4996       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
4997       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
4998       MINT(50)=0
4999       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) MINT(50)=1
5000       MINT(107)=0
5001       MINT(108)=0
5002       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
5003         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
5004      &  MINT(107)=2
5005         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
5006      &  MINT(107)=3
5007         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
5008         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
5009      &  MINT(122).EQ.10) MINT(108)=2
5010         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
5011      &  MINT(122).EQ.11) MINT(108)=3
5012         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
5013       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
5014         IF(MINT(122).GE.3) MINT(107)=1
5015         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
5016       ELSEIF(MINT(121).EQ.2) THEN
5017         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
5018         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
5019       ELSE
5020         IF(MINT(11).EQ.22) THEN
5021           MINT(107)=MINT(123)
5022           IF(MINT(123).GE.4) MINT(107)=0
5023           IF(MINT(123).EQ.7) MINT(107)=2
5024           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
5025           IF(MSTP(14).EQ.28) MINT(107)=2
5026           IF(MSTP(14).EQ.29) MINT(107)=3
5027           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
5028      &    MINT(107)=4
5029         ENDIF
5030         IF(MINT(12).EQ.22) THEN
5031           MINT(108)=MINT(123)
5032           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
5033           IF(MINT(123).EQ.7) MINT(108)=3
5034           IF(MSTP(14).EQ.26) MINT(108)=2
5035           IF(MSTP(14).EQ.27) MINT(108)=3
5036           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
5037           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
5038      &    MINT(108)=4
5039         ENDIF
5040         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
5041      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
5042           MINTTP=MINT(107)
5043           MINT(107)=MINT(108)
5044           MINT(108)=MINTTP
5045         ENDIF
5046       ENDIF
5047       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
5048       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
5049  
5050 C...Select default processes according to incoming beams
5051 C...(already done for gamma-p and gamma-gamma with
5052 C...MSTP(14) = 10, 20, 25 or 30).
5053       IF(MINT(121).GT.1) THEN
5054       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
5055  
5056         IF(MINT(43).EQ.1) THEN
5057 C...Lepton + lepton -> gamma/Z0 or W.
5058           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
5059           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
5060  
5061         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
5062      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
5063 C...Unresolved photon + lepton: Compton scattering.
5064           MSUB(133)=1
5065           MSUB(134)=1
5066  
5067         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
5068      &  .OR.MINT(12).EQ.22)) THEN
5069 C...DIS as pure gamma* + f -> f process.
5070           MSUB(99)=1
5071  
5072         ELSEIF(MINT(43).LE.3) THEN
5073 C...Lepton + hadron: deep inelastic scattering.
5074           MSUB(10)=1
5075  
5076         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
5077      &    MINT(12).EQ.22) THEN
5078 C...Two unresolved photons: fermion pair production,
5079 C...exclude lepton pairs.
5080           DO 150 ISUB=137,140
5081             MSUB(ISUB)=1
5082   150     CONTINUE
5083           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5084             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5085   160     CONTINUE
5086           PTMDIR=PTMRUN
5087           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
5088           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
5089           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
5090  
5091         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
5092      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
5093      &    MINT(12).EQ.22)) THEN
5094 C...Unresolved photon + hadron: photon-parton scattering.
5095           DO 170 ISUB=131,136
5096             MSUB(ISUB)=1
5097   170     CONTINUE
5098  
5099         ELSEIF(MSEL.EQ.1) THEN
5100 C...High-pT QCD processes:
5101           MSUB(11)=1
5102           MSUB(12)=1
5103           MSUB(13)=1
5104           MSUB(28)=1
5105           MSUB(53)=1
5106           MSUB(68)=1
5107           PTMN=PTMRUN
5108           VINT(154)=PTMN
5109           IF(CKIN(3).LT.PTMN) MSUB(95)=1
5110           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
5111  
5112         ELSE
5113 C...All QCD processes:
5114           MSUB(11)=1
5115           MSUB(12)=1
5116           MSUB(13)=1
5117           MSUB(28)=1
5118           MSUB(53)=1
5119           MSUB(68)=1
5120           MSUB(91)=1
5121           MSUB(92)=1
5122           MSUB(93)=1
5123           MSUB(94)=1
5124           MSUB(95)=1
5125         ENDIF
5126  
5127       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
5128 C...Heavy quark production.
5129         MSUB(81)=1
5130         MSUB(82)=1
5131         MSUB(84)=1
5132         DO 180 J=1,MIN(8,MDCY(21,3))
5133           MDME(MDCY(21,2)+J-1,1)=0
5134   180   CONTINUE
5135         MDME(MDCY(21,2)+MSEL-1,1)=1
5136         MSUB(85)=1
5137         DO 190 J=1,MIN(12,MDCY(22,3))
5138           MDME(MDCY(22,2)+J-1,1)=0
5139   190   CONTINUE
5140         MDME(MDCY(22,2)+MSEL-1,1)=1
5141  
5142       ELSEIF(MSEL.EQ.10) THEN
5143 C...Prompt photon production:
5144         MSUB(14)=1
5145         MSUB(18)=1
5146         MSUB(29)=1
5147  
5148       ELSEIF(MSEL.EQ.11) THEN
5149 C...Z0/gamma* production:
5150         MSUB(1)=1
5151  
5152       ELSEIF(MSEL.EQ.12) THEN
5153 C...W+/- production:
5154         MSUB(2)=1
5155  
5156       ELSEIF(MSEL.EQ.13) THEN
5157 C...Z0 + jet:
5158         MSUB(15)=1
5159         MSUB(30)=1
5160  
5161       ELSEIF(MSEL.EQ.14) THEN
5162 C...W+/- + jet:
5163         MSUB(16)=1
5164         MSUB(31)=1
5165  
5166       ELSEIF(MSEL.EQ.15) THEN
5167 C...Z0 & W+/- pair production:
5168         MSUB(19)=1
5169         MSUB(20)=1
5170         MSUB(22)=1
5171         MSUB(23)=1
5172         MSUB(25)=1
5173  
5174       ELSEIF(MSEL.EQ.16) THEN
5175 C...h0 production:
5176         MSUB(3)=1
5177         MSUB(102)=1
5178         MSUB(103)=1
5179         MSUB(123)=1
5180         MSUB(124)=1
5181  
5182       ELSEIF(MSEL.EQ.17) THEN
5183 C...h0 & Z0 or W+/- pair production:
5184         MSUB(24)=1
5185         MSUB(26)=1
5186  
5187       ELSEIF(MSEL.EQ.18) THEN
5188 C...h0 production; interesting processes in e+e-.
5189         MSUB(24)=1
5190         MSUB(103)=1
5191         MSUB(123)=1
5192         MSUB(124)=1
5193  
5194       ELSEIF(MSEL.EQ.19) THEN
5195 C...h0, H0 and A0 production; interesting processes in e+e-.
5196         MSUB(24)=1
5197         MSUB(103)=1
5198         MSUB(123)=1
5199         MSUB(124)=1
5200         MSUB(153)=1
5201         MSUB(171)=1
5202         MSUB(173)=1
5203         MSUB(174)=1
5204         MSUB(158)=1
5205         MSUB(176)=1
5206         MSUB(178)=1
5207         MSUB(179)=1
5208  
5209       ELSEIF(MSEL.EQ.21) THEN
5210 C...Z'0 production:
5211         MSUB(141)=1
5212  
5213       ELSEIF(MSEL.EQ.22) THEN
5214 C...W'+/- production:
5215         MSUB(142)=1
5216  
5217       ELSEIF(MSEL.EQ.23) THEN
5218 C...H+/- production:
5219         MSUB(143)=1
5220  
5221       ELSEIF(MSEL.EQ.24) THEN
5222 C...R production:
5223         MSUB(144)=1
5224  
5225       ELSEIF(MSEL.EQ.25) THEN
5226 C...LQ (leptoquark) production.
5227         MSUB(145)=1
5228         MSUB(162)=1
5229         MSUB(163)=1
5230         MSUB(164)=1
5231  
5232       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
5233 C...Production of one heavy quark (W exchange):
5234         MSUB(83)=1
5235         DO 200 J=1,MIN(8,MDCY(21,3))
5236           MDME(MDCY(21,2)+J-1,1)=0
5237   200   CONTINUE
5238         MDME(MDCY(21,2)+MSEL-31,1)=1
5239  
5240 CMRENNA++Define SUSY alternatives.
5241       ELSEIF(MSEL.EQ.39) THEN
5242 C...Turn on all SUSY processes.
5243         IF(MINT(43).EQ.4) THEN
5244 C...Hadron-hadron processes.
5245           DO 210 I=201,301
5246             IF(ISET(I).GE.0) MSUB(I)=1
5247   210     CONTINUE
5248         ELSEIF(MINT(43).EQ.1) THEN
5249 C...Lepton-lepton processes: QED production of squarks.
5250           DO 220 I=201,214
5251             MSUB(I)=1
5252   220     CONTINUE
5253           MSUB(210)=0
5254           MSUB(211)=0
5255           MSUB(212)=0
5256           DO 230 I=216,228
5257             MSUB(I)=1
5258   230     CONTINUE
5259           DO 240 I=261,263
5260             MSUB(I)=1
5261   240     CONTINUE
5262           MSUB(277)=1
5263           MSUB(278)=1
5264         ENDIF
5265  
5266       ELSEIF(MSEL.EQ.40) THEN
5267 C...Gluinos and squarks.
5268         IF(MINT(43).EQ.4) THEN
5269           MSUB(243)=1
5270           MSUB(244)=1
5271           MSUB(258)=1
5272           MSUB(259)=1
5273           MSUB(261)=1
5274           MSUB(262)=1
5275           MSUB(264)=1
5276           MSUB(265)=1
5277           DO 250 I=271,296
5278             MSUB(I)=1
5279   250     CONTINUE
5280         ELSEIF(MINT(43).EQ.1) THEN
5281           MSUB(277)=1
5282           MSUB(278)=1
5283         ENDIF
5284  
5285       ELSEIF(MSEL.EQ.41) THEN
5286 C...Stop production.
5287         MSUB(261)=1
5288         MSUB(262)=1
5289         MSUB(263)=1
5290         IF(MINT(43).EQ.4) THEN
5291           MSUB(264)=1
5292           MSUB(265)=1
5293         ENDIF
5294  
5295       ELSEIF(MSEL.EQ.42) THEN
5296 C...Slepton production.
5297         DO 260 I=201,214
5298           MSUB(I)=1
5299   260   CONTINUE
5300         IF(MINT(43).NE.4) THEN
5301           MSUB(210)=0
5302           MSUB(211)=0
5303           MSUB(212)=0
5304         ENDIF
5305  
5306       ELSEIF(MSEL.EQ.43) THEN
5307 C...Neutralino/Chargino + Gluino/Squark.
5308         IF(MINT(43).EQ.4) THEN
5309           DO 270 I=237,242
5310             MSUB(I)=1
5311   270     CONTINUE
5312           DO 280 I=246,257
5313             MSUB(I)=1
5314   280     CONTINUE
5315         ENDIF
5316  
5317       ELSEIF(MSEL.EQ.44) THEN
5318 C...Neutralino/Chargino pair production.
5319         IF(MINT(43).EQ.4) THEN
5320           DO 290 I=216,236
5321             MSUB(I)=1
5322   290     CONTINUE
5323         ELSEIF(MINT(43).EQ.1) THEN
5324           DO 300 I=216,228
5325             MSUB(I)=1
5326   300     CONTINUE
5327         ENDIF
5328  
5329       ELSEIF(MSEL.EQ.45) THEN
5330 C...Sbottom production.
5331         MSUB(287)=1
5332         MSUB(288)=1
5333         IF(MINT(43).EQ.4) THEN
5334           DO 310 I=281,296
5335             MSUB(I)=1
5336   310     CONTINUE
5337         ENDIF
5338  
5339       ELSEIF(MSEL.EQ.50) THEN
5340 C...Pair production of technipions and gauge bosons.
5341         DO 320 I=361,368
5342           MSUB(I)=1
5343   320   CONTINUE
5344         IF(MINT(43).EQ.4) THEN
5345           DO 330 I=370,377
5346             MSUB(I)=1
5347   330     CONTINUE
5348         ENDIF
5349  
5350       ELSEIF(MSEL.EQ.51) THEN
5351 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
5352         DO 340 I=381,386
5353           MSUB(I)=1
5354   340   CONTINUE
5355       ENDIF
5356  
5357 C...Find heaviest new quark flavour allowed in processes 81-84.
5358       KFLQM=1
5359       DO 350 I=1,MIN(8,MDCY(21,3))
5360         IDC=I+MDCY(21,2)-1
5361         IF(MDME(IDC,1).LE.0) GOTO 350
5362         KFLQM=I
5363   350 CONTINUE
5364       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
5365      &KFLQM=MSTP(7)
5366       MINT(55)=KFLQM
5367       KFPR(81,1)=KFLQM
5368       KFPR(81,2)=KFLQM
5369       KFPR(82,1)=KFLQM
5370       KFPR(82,2)=KFLQM
5371       KFPR(83,1)=KFLQM
5372       KFPR(84,1)=KFLQM
5373       KFPR(84,2)=KFLQM
5374  
5375 C...Find heaviest new fermion flavour allowed in process 85.
5376       KFLFM=1
5377       DO 360 I=1,MIN(12,MDCY(22,3))
5378         IDC=I+MDCY(22,2)-1
5379         IF(MDME(IDC,1).LE.0) GOTO 360
5380         KFLFM=KFDP(IDC,1)
5381   360 CONTINUE
5382       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
5383      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
5384       MINT(56)=KFLFM
5385       KFPR(85,1)=KFLFM
5386       KFPR(85,2)=KFLFM
5387  
5388 C...Import relevant information on external user processes.
5389       IF(MINT(111).EQ.11) THEN
5390         IPYPR=0
5391         DO 390 IUP=1,NPRUP
5392 C...Find next empty PYTHIA process number slot and enable it.
5393   370     IPYPR=IPYPR+1
5394           IF(IPYPR.GT.500) CALL PYERRM(26,
5395      &    '(PYINPR.) no more empty slots for user processes')
5396           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
5397           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
5398           ISET(IPYPR)=11
5399 C...Overwrite KFPR with references back to process number and ID.
5400           KFPR(IPYPR,1)=IUP
5401           KFPR(IPYPR,2)=LPRUP(IUP)
5402 C...Process title.
5403           WRITE(CHIPR,'(I10)') LPRUP(IUP)
5404           ICHIN=1
5405           DO 380 ICH=1,9
5406             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
5407   380     CONTINUE
5408           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
5409 C...Switch on process.
5410           MSUB(IPYPR)=1
5411   390   CONTINUE
5412       ENDIF
5413  
5414       RETURN
5415       END
5416  
5417 C*********************************************************************
5418  
5419 C...PYXTOT
5420 C...Parametrizes total, elastic and diffractive cross-sections
5421 C...for different energies and beams. Donnachie-Landshoff for
5422 C...total and Schuler-Sjostrand for elastic and diffractive.
5423 C...Process code IPROC:
5424 C...=  1 : p + p;
5425 C...=  2 : pbar + p;
5426 C...=  3 : pi+ + p;
5427 C...=  4 : pi- + p;
5428 C...=  5 : pi0 + p;
5429 C...=  6 : phi + p;
5430 C...=  7 : J/psi + p;
5431 C...= 11 : rho + rho;
5432 C...= 12 : rho + phi;
5433 C...= 13 : rho + J/psi;
5434 C...= 14 : phi + phi;
5435 C...= 15 : phi + J/psi;
5436 C...= 16 : J/psi + J/psi;
5437 C...= 21 : gamma + p (DL);
5438 C...= 22 : gamma + p (VDM).
5439 C...= 23 : gamma + pi (DL);
5440 C...= 24 : gamma + pi (VDM);
5441 C...= 25 : gamma + gamma (DL);
5442 C...= 26 : gamma + gamma (VDM).
5443  
5444       SUBROUTINE PYXTOT
5445  
5446 C...Double precision and integer declarations.
5447       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5448       IMPLICIT INTEGER(I-N)
5449       INTEGER PYK,PYCHGE,PYCOMP
5450 C...Commonblocks.
5451       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5452       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5453       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5454       COMMON/PYINT1/MINT(400),VINT(400)
5455       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
5456       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
5457       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
5458 C...Local arrays.
5459       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
5460      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
5461      &CEFFD(10,9),SIGTMP(6,0:5)
5462  
5463 C...Common constants.
5464       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
5465      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
5466      &FACDD/0.0084D0/
5467  
5468 C...Number of multiple processes to be evaluated (= 0 : undefined).
5469       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
5470 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
5471       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
5472      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
5473      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
5474       DATA YPAR/
5475      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
5476      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
5477      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
5478  
5479 C...Beam and target hadron class:
5480 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
5481       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
5482       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
5483 C...Characteristic class masses, slope parameters, beta = sqrt(X).
5484       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
5485       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
5486       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
5487  
5488 C...Fitting constants used in parametrizations of diffractive results.
5489       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
5490       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
5491       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
5492      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
5493      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
5494      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
5495      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
5496      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
5497      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
5498      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
5499      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
5500      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
5501      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
5502       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
5503      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
5504      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
5505      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
5506      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
5507      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
5508      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
5509      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
5510      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
5511      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
5512      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
5513      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
5514      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
5515      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
5516      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
5517      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
5518  
5519 C...Parameters. Combinations of the energy.
5520       AEM=PARU(101)
5521       PMTH=PARP(102)
5522       S=VINT(2)
5523       SRT=VINT(1)
5524       SEPS=S**EPS
5525       SETA=S**ETA
5526       SLOG=LOG(S)
5527  
5528 C...Ratio of gamma/pi (for rescaling in parton distributions).
5529       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
5530      &(XPAR(5)*SEPS+YPAR(5)*SETA)
5531       VINT(317)=1D0
5532       IF(MINT(50).NE.1) RETURN
5533  
5534 C...Order flavours of incoming particles: KF1 < KF2.
5535       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
5536         KF1=IABS(MINT(11))
5537         KF2=IABS(MINT(12))
5538         IORD=1
5539       ELSE
5540         KF1=IABS(MINT(12))
5541         KF2=IABS(MINT(11))
5542         IORD=2
5543       ENDIF
5544       ISGN12=ISIGN(1,MINT(11)*MINT(12))
5545  
5546 C...Find process number (for lookup tables).
5547       IF(KF1.GT.1000) THEN
5548         IPROC=1
5549         IF(ISGN12.LT.0) IPROC=2
5550       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
5551         IPROC=3
5552         IF(ISGN12.LT.0) IPROC=4
5553         IF(KF1.EQ.111) IPROC=5
5554       ELSEIF(KF1.GT.100) THEN
5555         IPROC=11
5556       ELSEIF(KF2.GT.1000) THEN
5557         IPROC=21
5558         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
5559       ELSEIF(KF2.GT.100) THEN
5560         IPROC=23
5561         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
5562       ELSE
5563         IPROC=25
5564         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
5565       ENDIF
5566  
5567 C... Number of multiple processes to be stored; beam/target side.
5568       NPR=NPROC(IPROC)
5569       MINT(101)=1
5570       MINT(102)=1
5571       IF(NPR.EQ.3) THEN
5572         MINT(100+IORD)=4
5573       ELSEIF(NPR.EQ.6) THEN
5574         MINT(101)=4
5575         MINT(102)=4
5576       ENDIF
5577       N1=0
5578       IF(MINT(101).EQ.4) N1=4
5579       N2=0
5580       IF(MINT(102).EQ.4) N2=4
5581  
5582 C...Do not do any more for user-set or undefined cross-sections.
5583       IF(MSTP(31).LE.0) RETURN
5584       IF(NPR.EQ.0) CALL PYERRM(26,
5585      &'(PYXTOT:) cross section for this process not yet implemented')
5586  
5587 C...Parameters. Combinations of the energy.
5588       AEM=PARU(101)
5589       PMTH=PARP(102)
5590       S=VINT(2)
5591       SRT=VINT(1)
5592       SEPS=S**EPS
5593       SETA=S**ETA
5594       SLOG=LOG(S)
5595  
5596 C...Loop over multiple processes (for VDM).
5597       DO 110 I=1,NPR
5598         IF(NPR.EQ.1) THEN
5599           IPR=IPROC
5600         ELSEIF(NPR.EQ.3) THEN
5601           IPR=I+4
5602           IF(KF2.LT.1000) IPR=I+10
5603         ELSEIF(NPR.EQ.6) THEN
5604           IPR=I+10
5605         ENDIF
5606  
5607 C...Evaluate hadron species, mass, slope contribution and fit number.
5608         IHA=IHADA(IPR)
5609         IHB=IHADB(IPR)
5610         PMA=PMHAD(IHA)
5611         PMB=PMHAD(IHB)
5612         BHA=BHAD(IHA)
5613         BHB=BHAD(IHB)
5614         ISD=IFITSD(IPR)
5615         IDD=IFITDD(IPR)
5616  
5617 C...Skip if energy too low relative to masses.
5618         DO 100 J=0,5
5619           SIGTMP(I,J)=0D0
5620   100   CONTINUE
5621         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
5622  
5623 C...Total cross-section. Elastic slope parameter and cross-section.
5624         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
5625         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
5626         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
5627  
5628 C...Diffractive scattering A + B -> X + B.
5629         BSD=2D0*BHB
5630         SQML=(PMA+PMTH)**2
5631         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
5632         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
5633      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
5634         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
5635         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
5636      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
5637         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
5638  
5639 C...Diffractive scattering A + B -> A + X.
5640         BSD=2D0*BHA
5641         SQML=(PMB+PMTH)**2
5642         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
5643         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
5644      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
5645         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
5646         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
5647      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
5648         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
5649  
5650 C...Order single diffractive correctly.
5651         IF(IORD.EQ.2) THEN
5652           SIGSAV=SIGTMP(I,2)
5653           SIGTMP(I,2)=SIGTMP(I,3)
5654           SIGTMP(I,3)=SIGSAV
5655         ENDIF
5656  
5657 C...Double diffractive scattering A + B -> X1 + X2.
5658         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
5659         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
5660         SUM1=DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0)/(2D0*ALP)
5661         IF(YEFF.LE.0) SUM1=0D0
5662         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
5663         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
5664         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
5665         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
5666      &  (2D0*ALP)
5667         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
5668         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
5669         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
5670      &  (2D0*ALP)
5671         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
5672         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB*PMRC)))
5673         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
5674      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
5675         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
5676  
5677 C...Non-diffractive by unitarity.
5678         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
5679      &  SIGTMP(I,4)
5680   110 CONTINUE
5681  
5682 C...Put temporary results in output array: only one process.
5683       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
5684         DO 120 J=0,5
5685           SIGT(0,0,J)=SIGTMP(1,J)
5686   120   CONTINUE
5687  
5688 C...Beam multiple processes.
5689       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
5690         IF(MINT(107).EQ.2) THEN
5691           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
5692         ELSE
5693           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5694      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
5695         ENDIF
5696         IF(MSTP(20).GT.0) THEN
5697           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
5698         ENDIF
5699         DO 140 I=1,4
5700           IF(MINT(107).EQ.2) THEN
5701             CONV=(AEM/PARP(160+I))*VINT(317)
5702           ELSEIF(VINT(154).GT.PARP(15)) THEN
5703             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
5704      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5705           ELSE
5706             CONV=0D0
5707           ENDIF
5708           I1=MAX(1,I-1)
5709           DO 130 J=0,5
5710             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
5711   130     CONTINUE
5712   140   CONTINUE
5713         DO 150 J=0,5
5714           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
5715   150   CONTINUE
5716  
5717 C...Target multiple processes.
5718       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
5719         IF(MINT(108).EQ.2) THEN
5720           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
5721         ELSE
5722           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5723      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
5724         ENDIF
5725         IF(MSTP(20).GT.0) THEN
5726           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
5727         ENDIF
5728         DO 170 I=1,4
5729           IF(MINT(108).EQ.2) THEN
5730             CONV=(AEM/PARP(160+I))*VINT(317)
5731           ELSEIF(VINT(154).GT.PARP(15)) THEN
5732             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
5733      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5734           ELSE
5735             CONV=0D0
5736           ENDIF
5737           IV=MAX(1,I-1)
5738           DO 160 J=0,5
5739             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
5740   160     CONTINUE
5741   170   CONTINUE
5742         DO 180 J=0,5
5743           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
5744   180   CONTINUE
5745  
5746 C...Both beam and target multiple processes.
5747       ELSE
5748         IF(MINT(107).EQ.2) THEN
5749           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
5750         ELSE
5751           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5752      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
5753         ENDIF
5754         IF(MINT(108).EQ.2) THEN
5755           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
5756         ELSE
5757           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
5758      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
5759         ENDIF
5760         IF(MSTP(20).GT.0) THEN
5761           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
5762      &    VINT(308)))**MSTP(20)
5763         ENDIF
5764         DO 210 I1=1,4
5765           DO 200 I2=1,4
5766             IF(MINT(107).EQ.2) THEN
5767               CONV=(AEM/PARP(160+I1))*VINT(317)
5768             ELSEIF(VINT(154).GT.PARP(15)) THEN
5769               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
5770      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5771             ELSE
5772               CONV=0D0
5773             ENDIF
5774             IF(MINT(108).EQ.2) THEN
5775               CONV=CONV*(AEM/PARP(160+I2))
5776             ELSEIF(VINT(154).GT.PARP(15)) THEN
5777               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
5778      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
5779             ELSE
5780               CONV=0D0
5781             ENDIF
5782             IF(I1.LE.2) THEN
5783               IV=MAX(1,I2-1)
5784             ELSEIF(I2.LE.2) THEN
5785               IV=MAX(1,I1-1)
5786             ELSEIF(I1.EQ.I2) THEN
5787               IV=2*I1-2
5788             ELSE
5789               IV=5
5790             ENDIF
5791             DO 190 J=0,5
5792               JV=J
5793               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
5794               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
5795   190       CONTINUE
5796   200     CONTINUE
5797   210   CONTINUE
5798         DO 230 J=0,5
5799           DO 220 I=1,4
5800             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
5801             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
5802   220     CONTINUE
5803           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
5804   230   CONTINUE
5805       ENDIF
5806  
5807 C...Scale up uniformly for Donnachie-Landshoff parametrization.
5808       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
5809         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
5810         DO 260 I1=0,N1
5811           DO 250 I2=0,N2
5812             DO 240 J=0,5
5813               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
5814   240       CONTINUE
5815   250     CONTINUE
5816   260   CONTINUE
5817       ENDIF
5818  
5819       RETURN
5820       END
5821  
5822 C*********************************************************************
5823  
5824 C...PYMAXI
5825 C...Finds optimal set of coefficients for kinematical variable selection
5826 C...and the maximum of the part of the differential cross-section used
5827 C...in the event weighting.
5828  
5829       SUBROUTINE PYMAXI
5830  
5831 C...Double precision and integer declarations.
5832       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5833       IMPLICIT INTEGER(I-N)
5834       INTEGER PYK,PYCHGE,PYCOMP
5835 C...Parameter statement to help give large particle numbers.
5836       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
5837      &KEXCIT=4000000,KDIMEN=5000000)
5838  
5839 C...User process initialization commonblock.
5840       INTEGER MAXPUP
5841       PARAMETER (MAXPUP=100)
5842       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5843       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5844       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5845      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5846      &LPRUP(MAXPUP)
5847       SAVE /HEPRUP/
5848  
5849 C...Commonblocks.
5850       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5851       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5852       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5853       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5854       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5855       COMMON/PYINT1/MINT(400),VINT(400)
5856       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5857       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
5858       COMMON/PYINT4/MWID(500),WIDS(500,5)
5859       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
5860       COMMON/PYINT6/PROC(0:500)
5861       CHARACTER PROC*28
5862       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
5863       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
5864      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/
5865 C...Local arrays, character variables and data.
5866       CHARACTER CVAR(4)*4
5867       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
5868      &NAREL(7),WTREL(7),WTMAT(7,7),WTRELN(7),COEFU(7),COEFO(7),
5869      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2)
5870       DATA CVAR/'tau ','tau''','y*  ','cth '/
5871       DATA SIGSSM/3*0D0/
5872  
5873 C...Initial values and loop over subprocesses.
5874       NPOSI=0
5875       VINT(143)=1D0
5876       VINT(144)=1D0
5877       XSEC(0,1)=0D0
5878       DO 460 ISUB=1,500
5879         MINT(1)=ISUB
5880         MINT(51)=0
5881  
5882 C...Find maximum weight factors for photon flux.
5883         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
5884           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
5885         ENDIF
5886  
5887 C...Select subprocess to study: skip cases not applicable.
5888         IF(ISET(ISUB).EQ.11) THEN
5889           IF(MSUB(ISUB).NE.1) GOTO 460
5890 C...User process intialization: cross section model dependent.
5891           IF(IABS(IDWTUP).EQ.1) THEN
5892             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
5893      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
5894             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
5895           ELSE
5896             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
5897      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
5898      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
5899             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
5900      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
5901             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
5902           ENDIF
5903           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5904      &    WTGAGA*XSEC(ISUB,1)
5905           NPOSI=NPOSI+1
5906           GOTO 450
5907         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
5908           CALL PYSIGH(NCHN,SIGS)
5909           XSEC(ISUB,1)=SIGS
5910           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5911      &    WTGAGA*XSEC(ISUB,1)
5912           IF(MSUB(ISUB).NE.1) GOTO 460
5913           NPOSI=NPOSI+1
5914           GOTO 450
5915         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
5916           CALL PYSIGH(NCHN,SIGS)
5917           XSEC(ISUB,1)=SIGS
5918           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5919      &    WTGAGA*XSEC(ISUB,1)
5920           IF(XSEC(ISUB,1).EQ.0D0) THEN
5921             MSUB(ISUB)=0
5922           ELSE
5923             NPOSI=NPOSI+1
5924           ENDIF
5925           GOTO 450
5926         ELSEIF(ISUB.EQ.96) THEN
5927           IF(MINT(50).EQ.0) GOTO 460
5928           IF(MSUB(95).NE.1.AND.MSTP(81).LE.0.AND.MSTP(131).LE.0)
5929      &    GOTO 460
5930           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
5931         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
5932      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
5933           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
5934         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
5935           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
5936         ELSE
5937           IF(MSUB(ISUB).NE.1) GOTO 460
5938         ENDIF
5939         ISTSB=ISET(ISUB)
5940         IF(ISUB.EQ.96) ISTSB=2
5941         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
5942         MWTXS=0
5943         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
5944      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
5945  
5946 C...Find resonances (explicit or implicit in cross-section).
5947         MINT(72)=0
5948         KFR1=0
5949         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
5950           KFR1=KFPR(ISUB,1)
5951         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
5952      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
5953           KFR1=23
5954         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
5955      &    .OR.ISUB.EQ.177) THEN
5956           KFR1=24
5957         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
5958           KFR1=25
5959           IF(MSTP(46).EQ.5) THEN
5960             KFR1=89
5961             PMAS(89,1)=PARP(45)
5962             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
5963           ENDIF
5964         ELSEIF(ISUB.EQ.194) THEN
5965           KFR1=KTECHN+113
5966         ELSEIF(ISUB.EQ.195) THEN
5967           KFR1=KTECHN+213
5968         ELSEIF(ISUB.GE.361.AND.ISUB.LE.368) THEN
5969           KFR1=KTECHN+113
5970         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
5971           KFR1=KTECHN+213
5972         ENDIF
5973         CKMX=CKIN(2)
5974         IF(CKMX.LE.0D0) CKMX=VINT(1)
5975         KCR1=PYCOMP(KFR1)
5976         IF(KFR1.NE.0) THEN
5977           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
5978      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
5979         ENDIF
5980         IF(KFR1.NE.0) THEN
5981           TAUR1=PMAS(KCR1,1)**2/VINT(2)
5982           IF(KFR1.EQ.KTECHN+113) THEN
5983             CALL PYTECM(S1,S2)
5984             TAUR1=S1/VINT(2)
5985           ENDIF
5986           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
5987           MINT(72)=1
5988           MINT(73)=KFR1
5989           VINT(73)=TAUR1
5990           VINT(74)=GAMR1
5991         ENDIF
5992         KFR2=0
5993         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.(ISUB.GE.364.AND.ISUB.LE.368))
5994      $  THEN
5995           KFR2=23
5996           IF(ISUB.EQ.194) THEN
5997             KFR2=KTECHN+223
5998           ELSEIF(ISUB.GE.364.AND.ISUB.LE.368) THEN
5999             KFR2=KTECHN+223
6000           ENDIF
6001           KCR2=PYCOMP(KFR2)
6002           TAUR2=PMAS(KCR2,1)**2/VINT(2)
6003           IF(KFR2.EQ.KTECHN+223) THEN
6004             CALL PYTECM(S1,S2)
6005             TAUR2=S2/VINT(2)
6006           ENDIF
6007           GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
6008           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
6009      &    CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) KFR2=0
6010           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
6011             MINT(72)=2
6012             MINT(74)=KFR2
6013             VINT(75)=TAUR2
6014             VINT(76)=GAMR2
6015           ELSEIF(KFR2.NE.0) THEN
6016             KFR1=KFR2
6017             TAUR1=TAUR2
6018             GAMR1=GAMR2
6019             MINT(72)=1
6020             MINT(73)=KFR1
6021             VINT(73)=TAUR1
6022             VINT(74)=GAMR1
6023             KFR2=0
6024           ENDIF
6025         ENDIF
6026  
6027 C...Find product masses and minimum pT of process.
6028         SQM3=0D0
6029         SQM4=0D0
6030         MINT(71)=0
6031         VINT(71)=CKIN(3)
6032         VINT(80)=1D0
6033         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
6034           NBW=0
6035           DO 110 I=1,2
6036             PMMN(I)=0D0
6037             IF(KFPR(ISUB,I).EQ.0) THEN
6038             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
6039      &        PARP(41)) THEN
6040               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
6041               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
6042             ELSE
6043               NBW=NBW+1
6044 C...This prevents SUSY/t particles from becoming too light.
6045               KFLW=KFPR(ISUB,I)
6046               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
6047                 KCW=PYCOMP(KFLW)
6048                 PMMN(I)=PMAS(KCW,1)
6049                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
6050                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
6051                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
6052      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
6053                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
6054      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
6055                     PMMN(I)=MIN(PMMN(I),PMSUM)
6056                   ENDIF
6057   100           CONTINUE
6058               ELSEIF(KFLW.EQ.6) THEN
6059                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
6060               ENDIF
6061             ENDIF
6062   110     CONTINUE
6063           IF(NBW.GE.1) THEN
6064             CKIN41=CKIN(41)
6065             CKIN43=CKIN(43)
6066             CKIN(41)=MAX(PMMN(1),CKIN(41))
6067             CKIN(43)=MAX(PMMN(2),CKIN(43))
6068             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
6069             CKIN(41)=CKIN41
6070             CKIN(43)=CKIN43
6071             IF(MINT(51).EQ.1) THEN
6072               WRITE(MSTU(11),5100) ISUB
6073               MSUB(ISUB)=0
6074               GOTO 460
6075             ENDIF
6076             SQM3=PQM3**2
6077             SQM4=PQM4**2
6078           ENDIF
6079           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
6080           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
6081           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
6082             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
6083           ELSEIF(ISUB.EQ.96) THEN
6084             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
6085           ENDIF
6086         ENDIF
6087         VINT(63)=SQM3
6088         VINT(64)=SQM4
6089  
6090 C...Prepare for additional variable choices in 2 -> 3.
6091         IF(ISTSB.EQ.5) THEN
6092           VINT(201)=0D0
6093           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
6094           VINT(206)=VINT(201)
6095           VINT(204)=PMAS(23,1)
6096           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
6097           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
6098           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
6099      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
6100           VINT(209)=VINT(204)
6101         ENDIF
6102  
6103 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
6104         NPTS(1)=2+2*MINT(72)
6105         IF(MINT(47).EQ.1) THEN
6106           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
6107         ELSEIF(MINT(47).GE.5) THEN
6108           IF(ISTSB.LE.2.OR.ISTSB.GT.5) NPTS(1)=NPTS(1)+1
6109         ENDIF
6110         NPTS(2)=1
6111         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
6112           IF(MINT(47).GE.2) NPTS(2)=2
6113           IF(MINT(47).GE.5) NPTS(2)=3
6114         ENDIF
6115         NPTS(3)=1
6116         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
6117           NPTS(3)=3
6118           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
6119           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
6120         ENDIF
6121         NPTS(4)=1
6122         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
6123         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
6124  
6125 C...Reset coefficients of cross-section weighting.
6126         DO 120 J=1,20
6127           COEF(ISUB,J)=0D0
6128   120   CONTINUE
6129         COEF(ISUB,1)=1D0
6130         COEF(ISUB,8)=0.5D0
6131         COEF(ISUB,9)=0.5D0
6132         COEF(ISUB,13)=1D0
6133         COEF(ISUB,18)=1D0
6134         MCTH=0
6135         MTAUP=0
6136         METAUP=0
6137         VINT(23)=0D0
6138         VINT(26)=0D0
6139         SIGSAM=0D0
6140  
6141 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
6142 C...in grid of phase space points.
6143         CALL PYKLIM(1)
6144         METAU=MINT(51)
6145         NACC=0
6146         DO 150 ITRY=1,NTRY
6147           MINT(51)=0
6148           IF(METAU.EQ.1) GOTO 150
6149           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
6150             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
6151             IF(MTAU.GT.2+2*MINT(72)) MTAU=7
6152             RTAU=0.5D0
6153 C...Special case when both resonances have same mass,
6154 C...as is often the case in process 194.
6155             IF(MINT(72).EQ.2) THEN
6156               IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
6157      &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
6158                 IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
6159                   RTAU=0.4D0
6160                 ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
6161                   RTAU=0.6D0
6162                 ENDIF
6163               ENDIF
6164             ENDIF
6165             CALL PYKMAP(1,MTAU,RTAU)
6166             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
6167             METAUP=MINT(51)
6168           ENDIF
6169           IF(METAUP.EQ.1) GOTO 150
6170           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
6171      &    .EQ.0) THEN
6172             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
6173             CALL PYKMAP(4,MTAUP,0.5D0)
6174           ENDIF
6175           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
6176             CALL PYKLIM(2)
6177             MEYST=MINT(51)
6178           ENDIF
6179           IF(MEYST.EQ.1) GOTO 150
6180           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
6181             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
6182             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
6183             CALL PYKMAP(2,MYST,0.5D0)
6184             CALL PYKLIM(3)
6185             MECTH=MINT(51)
6186           ENDIF
6187           IF(MECTH.EQ.1) GOTO 150
6188           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
6189             MCTH=1+MOD(ITRY-1,NPTS(4))
6190             CALL PYKMAP(3,MCTH,0.5D0)
6191           ENDIF
6192           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
6193  
6194 C...Store position and limits.
6195           MINT(51)=0
6196           CALL PYKLIM(0)
6197           IF(MINT(51).EQ.1) GOTO 150
6198           NACC=NACC+1
6199           MVARPT(NACC,1)=MTAU
6200           MVARPT(NACC,2)=MTAUP
6201           MVARPT(NACC,3)=MYST
6202           MVARPT(NACC,4)=MCTH
6203           DO 130 J=1,30
6204             VINTPT(NACC,J)=VINT(10+J)
6205   130     CONTINUE
6206  
6207 C...Normal case: calculate cross-section.
6208           IF(ISTSB.NE.5) THEN
6209             CALL PYSIGH(NCHN,SIGS)
6210             IF(MWTXS.EQ.1) THEN
6211               CALL PYEVWT(WTXS)
6212               SIGS=WTXS*SIGS
6213             ENDIF
6214  
6215 C..2 -> 3: find highest value out of a number of tries.
6216           ELSE
6217             SIGS=0D0
6218             DO 140 IKIN3=1,MSTP(129)
6219               CALL PYKMAP(5,0,0D0)
6220               IF(MINT(51).EQ.1) GOTO 140
6221               CALL PYSIGH(NCHN,SIGTMP)
6222               IF(MWTXS.EQ.1) THEN
6223                 CALL PYEVWT(WTXS)
6224                 SIGTMP=WTXS*SIGTMP
6225               ENDIF
6226               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6227   140       CONTINUE
6228           ENDIF
6229  
6230 C...Store cross-section.
6231           SIGSPT(NACC)=SIGS
6232           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
6233           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
6234      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
6235   150   CONTINUE
6236         IF(NACC.EQ.0) THEN
6237           WRITE(MSTU(11),5100) ISUB
6238           MSUB(ISUB)=0
6239           GOTO 460
6240         ELSEIF(SIGSAM.EQ.0D0) THEN
6241           WRITE(MSTU(11),5300) ISUB
6242           MSUB(ISUB)=0
6243           GOTO 460
6244         ENDIF
6245         IF(ISUB.NE.96) NPOSI=NPOSI+1
6246  
6247 C...Calculate integrals in tau over maximal phase space limits.
6248         TAUMIN=VINT(11)
6249         TAUMAX=VINT(31)
6250         ATAU1=LOG(TAUMAX/TAUMIN)
6251         IF(NPTS(1).GE.2) THEN
6252           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
6253         ENDIF
6254         IF(NPTS(1).GE.4) THEN
6255           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
6256           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
6257      &    GAMR1
6258         ENDIF
6259         IF(NPTS(1).GE.6) THEN
6260           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
6261           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
6262      &    GAMR2
6263         ENDIF
6264         IF(NPTS(1).GT.2+2*MINT(72)) THEN
6265           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
6266         ENDIF
6267  
6268 C...Reset. Sum up cross-sections in points calculated.
6269         DO 320 IVAR=1,4
6270           IF(NPTS(IVAR).EQ.1) GOTO 320
6271           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
6272           NBIN=NPTS(IVAR)
6273           DO 170 J1=1,NBIN
6274             NAREL(J1)=0
6275             WTREL(J1)=0D0
6276             COEFU(J1)=0D0
6277             DO 160 J2=1,NBIN
6278               WTMAT(J1,J2)=0D0
6279   160       CONTINUE
6280   170     CONTINUE
6281           DO 180 IACC=1,NACC
6282             IBIN=MVARPT(IACC,IVAR)
6283             IF(IVAR.EQ.1.AND.IBIN.EQ.7) IBIN=3+2*MINT(72)
6284             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
6285             NAREL(IBIN)=NAREL(IBIN)+1
6286             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
6287  
6288 C...Sum up tau cross-section pieces in points used.
6289             IF(IVAR.EQ.1) THEN
6290               TAU=VINTPT(IACC,11)
6291               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6292               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
6293               IF(NBIN.GE.4) THEN
6294                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
6295                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
6296      &          ((TAU-TAUR1)**2+GAMR1**2)
6297               ENDIF
6298               IF(NBIN.GE.6) THEN
6299                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
6300                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
6301      &          ((TAU-TAUR2)**2+GAMR2**2)
6302               ENDIF
6303               IF(NBIN.GT.2+2*MINT(72)) THEN
6304                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(ATAU1/ATAU7)*
6305      &          TAU/MAX(2D-10,1D0-TAU)
6306               ENDIF
6307  
6308 C...Sum up tau' cross-section pieces in points used.
6309             ELSEIF(IVAR.EQ.2) THEN
6310               TAU=VINTPT(IACC,11)
6311               TAUP=VINTPT(IACC,16)
6312               TAUPMN=VINTPT(IACC,6)
6313               TAUPMX=VINTPT(IACC,26)
6314               ATAUP1=LOG(TAUPMX/TAUPMN)
6315               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
6316               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6317               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
6318      &        (1D0-TAU/TAUP)**3/TAUP
6319               IF(NBIN.GE.3) THEN
6320                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
6321                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
6322      &          TAUP/MAX(2D-10,1D0-TAUP)
6323               ENDIF
6324  
6325 C...Sum up y* cross-section pieces in points used.
6326             ELSEIF(IVAR.EQ.3) THEN
6327               YST=VINTPT(IACC,12)
6328               YSTMIN=VINTPT(IACC,2)
6329               YSTMAX=VINTPT(IACC,22)
6330               AYST0=YSTMAX-YSTMIN
6331               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
6332               AYST2=AYST1
6333               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
6334               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
6335               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
6336               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
6337               IF(MINT(45).EQ.3) THEN
6338                 TAUE=VINTPT(IACC,11)
6339                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
6340                 YST0=-0.5D0*LOG(TAUE)
6341                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
6342      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
6343                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
6344      &          MAX(1D-10,1D0-EXP(YST-YST0))
6345               ENDIF
6346               IF(MINT(46).EQ.3) THEN
6347                 TAUE=VINTPT(IACC,11)
6348                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
6349                 YST0=-0.5D0*LOG(TAUE)
6350                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
6351      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
6352                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
6353      &          MAX(1D-10,1D0-EXP(-YST-YST0))
6354               ENDIF
6355  
6356 C...Sum up cos(theta-hat) cross-section pieces in points used.
6357             ELSE
6358               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
6359               RSQM=1D0+RM34
6360               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
6361               CTHMIN=-CTHMAX
6362               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
6363      &        (TAUMAX*VINT(2)))
6364               ACTH1=CTHMAX-CTHMIN
6365               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
6366               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
6367               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
6368               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
6369               CTH=VINTPT(IACC,13)
6370               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6371               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
6372      &        MAX(RM34,RSQM-CTH)
6373               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
6374      &        MAX(RM34,RSQM+CTH)
6375               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
6376      &        MAX(RM34,RSQM-CTH)**2
6377               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
6378      &        MAX(RM34,RSQM+CTH)**2
6379             ENDIF
6380   180     CONTINUE
6381  
6382 C...Check that equation system solvable.
6383           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
6384           MSOLV=1
6385           WTRELS=0D0
6386           DO 190 IBIN=1,NBIN
6387             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
6388      &      IRED=1,NBIN),WTREL(IBIN)
6389             IF(NAREL(IBIN).EQ.0) MSOLV=0
6390             WTRELS=WTRELS+WTREL(IBIN)
6391   190     CONTINUE
6392           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
6393  
6394 C...Solve to find relative importance of cross-section pieces.
6395           IF(MSOLV.EQ.1) THEN
6396             DO 200 IBIN=1,NBIN
6397               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
6398   200       CONTINUE
6399             DO 230 IRED=1,NBIN-1
6400               DO 220 IBIN=IRED+1,NBIN
6401                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
6402                   MSOLV=0
6403                   GOTO 260
6404                 ENDIF
6405                 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
6406                 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
6407                 DO 210 ICOE=IRED,NBIN
6408                   WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
6409   210           CONTINUE
6410   220         CONTINUE
6411   230       CONTINUE
6412             DO 250 IRED=NBIN,1,-1
6413               DO 240 ICOE=IRED+1,NBIN
6414                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
6415   240         CONTINUE
6416               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
6417   250       CONTINUE
6418           ENDIF
6419  
6420 C...Share evenly if failure.
6421   260     IF(MSOLV.EQ.0) THEN
6422             DO 270 IBIN=1,NBIN
6423               COEFU(IBIN)=1D0
6424               WTRELN(IBIN)=0.1D0
6425               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
6426      &        WTREL(IBIN)/WTRELS)
6427   270       CONTINUE
6428           ENDIF
6429  
6430 C...Normalize coefficients, with piece shared democratically.
6431           COEFSU=0D0
6432           WTRELS=0D0
6433           DO 280 IBIN=1,NBIN
6434             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
6435             COEFSU=COEFSU+COEFU(IBIN)
6436             WTRELS=WTRELS+WTRELN(IBIN)
6437   280     CONTINUE
6438           IF(COEFSU.GT.0D0) THEN
6439             DO 290 IBIN=1,NBIN
6440               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
6441      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
6442   290       CONTINUE
6443           ELSE
6444             DO 300 IBIN=1,NBIN
6445               COEFO(IBIN)=1D0/NBIN
6446   300       CONTINUE
6447           ENDIF
6448           IF(IVAR.EQ.1) IOFF=0
6449           IF(IVAR.EQ.2) IOFF=17
6450           IF(IVAR.EQ.3) IOFF=7
6451           IF(IVAR.EQ.4) IOFF=12
6452           DO 310 IBIN=1,NBIN
6453             ICOF=IOFF+IBIN
6454             IF(IVAR.EQ.1.AND.IBIN.GT.2+2*MINT(72)) ICOF=7
6455             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
6456             COEF(ISUB,ICOF)=COEFO(IBIN)
6457   310     CONTINUE
6458           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
6459      &    (COEFO(IBIN),IBIN=1,NBIN)
6460   320   CONTINUE
6461  
6462 C...Find two most promising maxima among points previously determined.
6463         DO 330 J=1,4
6464           IACCMX(J)=0
6465           SIGSMX(J)=0D0
6466   330   CONTINUE
6467         NMAX=0
6468         DO 390 IACC=1,NACC
6469           DO 340 J=1,30
6470             VINT(10+J)=VINTPT(IACC,J)
6471   340     CONTINUE
6472           IF(ISTSB.NE.5) THEN
6473             CALL PYSIGH(NCHN,SIGS)
6474             IF(MWTXS.EQ.1) THEN
6475               CALL PYEVWT(WTXS)
6476               SIGS=WTXS*SIGS
6477             ENDIF
6478           ELSE
6479             SIGS=0D0
6480             DO 350 IKIN3=1,MSTP(129)
6481               CALL PYKMAP(5,0,0D0)
6482               IF(MINT(51).EQ.1) GOTO 350
6483               CALL PYSIGH(NCHN,SIGTMP)
6484               IF(MWTXS.EQ.1) THEN
6485                 CALL PYEVWT(WTXS)
6486                 SIGTMP=WTXS*SIGTMP
6487               ENDIF
6488               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6489   350       CONTINUE
6490           ENDIF
6491           IEQ=0
6492           DO 360 IMV=1,NMAX
6493             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
6494   360     CONTINUE
6495           IF(IEQ.EQ.0) THEN
6496             DO 370 IMV=NMAX,1,-1
6497               IIN=IMV+1
6498               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
6499               IACCMX(IMV+1)=IACCMX(IMV)
6500               SIGSMX(IMV+1)=SIGSMX(IMV)
6501   370       CONTINUE
6502             IIN=1
6503   380       IACCMX(IIN)=IACC
6504             SIGSMX(IIN)=SIGS
6505             IF(NMAX.LE.1) NMAX=NMAX+1
6506           ENDIF
6507   390   CONTINUE
6508  
6509 C...Read out starting position for search.
6510         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
6511         SIGSAM=SIGSMX(1)
6512         DO 440 IMAX=1,NMAX
6513           IACC=IACCMX(IMAX)
6514           MTAU=MVARPT(IACC,1)
6515           MTAUP=MVARPT(IACC,2)
6516           MYST=MVARPT(IACC,3)
6517           MCTH=MVARPT(IACC,4)
6518           VTAU=0.5D0
6519           VYST=0.5D0
6520           VCTH=0.5D0
6521           VTAUP=0.5D0
6522  
6523 C...Starting point and step size in parameter space.
6524           DO 430 IRPT=1,2
6525             DO 420 IVAR=1,4
6526               IF(NPTS(IVAR).EQ.1) GOTO 420
6527               IF(IVAR.EQ.1) VVAR=VTAU
6528               IF(IVAR.EQ.2) VVAR=VTAUP
6529               IF(IVAR.EQ.3) VVAR=VYST
6530               IF(IVAR.EQ.4) VVAR=VCTH
6531               IF(IVAR.EQ.1) MVAR=MTAU
6532               IF(IVAR.EQ.2) MVAR=MTAUP
6533               IF(IVAR.EQ.3) MVAR=MYST
6534               IF(IVAR.EQ.4) MVAR=MCTH
6535               IF(IRPT.EQ.1) VDEL=0.1D0
6536               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
6537      &        0.98D0-VVAR))
6538               IF(IRPT.EQ.1) VMAR=0.02D0
6539               IF(IRPT.EQ.2) VMAR=0.002D0
6540               IMOV0=1
6541               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
6542               DO 410 IMOV=IMOV0,8
6543  
6544 C...Define new point in parameter space.
6545                 IF(IMOV.EQ.0) THEN
6546                   INEW=2
6547                   VNEW=VVAR
6548                 ELSEIF(IMOV.EQ.1) THEN
6549                   INEW=3
6550                   VNEW=VVAR+VDEL
6551                 ELSEIF(IMOV.EQ.2) THEN
6552                   INEW=1
6553                   VNEW=VVAR-VDEL
6554                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
6555      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
6556                   VVAR=VVAR+VDEL
6557                   SIGSSM(1)=SIGSSM(2)
6558                   SIGSSM(2)=SIGSSM(3)
6559                   INEW=3
6560                   VNEW=VVAR+VDEL
6561                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
6562      &            VVAR-2D0*VDEL.GT.VMAR) THEN
6563                   VVAR=VVAR-VDEL
6564                   SIGSSM(3)=SIGSSM(2)
6565                   SIGSSM(2)=SIGSSM(1)
6566                   INEW=1
6567                   VNEW=VVAR-VDEL
6568                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
6569                   VDEL=0.5D0*VDEL
6570                   VVAR=VVAR+VDEL
6571                   SIGSSM(1)=SIGSSM(2)
6572                   INEW=2
6573                   VNEW=VVAR
6574                 ELSE
6575                   VDEL=0.5D0*VDEL
6576                   VVAR=VVAR-VDEL
6577                   SIGSSM(3)=SIGSSM(2)
6578                   INEW=2
6579                   VNEW=VVAR
6580                 ENDIF
6581  
6582 C...Convert to relevant variables and find derived new limits.
6583                 ILERR=0
6584                 IF(IVAR.EQ.1) THEN
6585                   VTAU=VNEW
6586                   CALL PYKMAP(1,MTAU,VTAU)
6587                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
6588                     CALL PYKLIM(4)
6589                     IF(MINT(51).EQ.1) ILERR=1
6590                   ENDIF
6591                 ENDIF
6592                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
6593      &          ILERR.EQ.0) THEN
6594                   IF(IVAR.EQ.2) VTAUP=VNEW
6595                   CALL PYKMAP(4,MTAUP,VTAUP)
6596                 ENDIF
6597                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
6598                   CALL PYKLIM(2)
6599                   IF(MINT(51).EQ.1) ILERR=1
6600                 ENDIF
6601                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
6602                   IF(IVAR.EQ.3) VYST=VNEW
6603                   CALL PYKMAP(2,MYST,VYST)
6604                   CALL PYKLIM(3)
6605                   IF(MINT(51).EQ.1) ILERR=1
6606                 ENDIF
6607                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
6608      &          ILERR.EQ.0) THEN
6609                   IF(IVAR.EQ.4) VCTH=VNEW
6610                   CALL PYKMAP(3,MCTH,VCTH)
6611                 ENDIF
6612                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
6613  
6614 C...Evaluate cross-section. Save new maximum. Final maximum.
6615                 IF(ILERR.NE.0) THEN
6616                    SIGS=0.
6617                 ELSEIF(ISTSB.NE.5) THEN
6618                   CALL PYSIGH(NCHN,SIGS)
6619                   IF(MWTXS.EQ.1) THEN
6620                     CALL PYEVWT(WTXS)
6621                     SIGS=WTXS*SIGS
6622                   ENDIF
6623                 ELSE
6624                   SIGS=0D0
6625                   DO 400 IKIN3=1,MSTP(129)
6626                     CALL PYKMAP(5,0,0D0)
6627                     IF(MINT(51).EQ.1) GOTO 400
6628                     CALL PYSIGH(NCHN,SIGTMP)
6629                     IF(MWTXS.EQ.1) THEN
6630                         CALL PYEVWT(WTXS)
6631                         SIGTMP=WTXS*SIGTMP
6632                     ENDIF
6633                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6634   400             CONTINUE
6635                 ENDIF
6636                 SIGSSM(INEW)=SIGS
6637                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
6638                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
6639      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
6640   410         CONTINUE
6641   420       CONTINUE
6642   430     CONTINUE
6643   440   CONTINUE
6644         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
6645         XSEC(ISUB,1)=1.05D0*SIGSAM
6646         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
6647      &  WTGAGA*XSEC(ISUB,1)
6648   450   CONTINUE
6649         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
6650      &  PARP(174)*XSEC(ISUB,1)
6651         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
6652   460 CONTINUE
6653       MINT(51)=0
6654  
6655 C...Print summary table.
6656       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
6657         IF(MSTP(127).NE.1) THEN
6658           WRITE(MSTU(11),5900)
6659           STOP
6660         ELSE
6661           WRITE(MSTU(11),6400)
6662           MSTI(53)=1
6663         ENDIF
6664       ENDIF
6665       IF(MSTP(122).GE.1) THEN
6666         WRITE(MSTU(11),6000)
6667         WRITE(MSTU(11),6100)
6668         DO 470 ISUB=1,500
6669           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
6670           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
6671           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MSTP(81).LE.0) GOTO 470
6672           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
6673           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
6674      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
6675           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
6676           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
6677   470   CONTINUE
6678         WRITE(MSTU(11),6300)
6679       ENDIF
6680  
6681 C...Format statements for maximization results.
6682  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
6683      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
6684      &'cth',9X,'tau''',7X,'sigma')
6685  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
6686      &'phase space.'/1X,'Process switched off!')
6687  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
6688  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
6689      &'cross-section.'/1X,'Process switched off!')
6690  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
6691  5500 FORMAT(1X,1P,8D11.3)
6692  5600 FORMAT(1X,'Result for ',A4,':',7F9.4)
6693  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
6694      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
6695  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
6696  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
6697      &'cross-section.'/1X,'Execution stopped!')
6698  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
6699      &'cross-section maximum search',1X,8('*'))
6700  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
6701      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
6702      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
6703  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
6704  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
6705  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
6706      &'cross-section.'/
6707      &1X,'Execution will stop if you try to generate events.')
6708  
6709       RETURN
6710       END
6711  
6712 C*********************************************************************
6713  
6714 C...PYPILE
6715 C...Initializes multiplicity distribution and selects mutliplicity
6716 C...of pileup events, i.e. several events occuring at the same
6717 C...beam crossing.
6718  
6719       SUBROUTINE PYPILE(MPILE)
6720  
6721 C...Double precision and integer declarations.
6722       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6723       IMPLICIT INTEGER(I-N)
6724       INTEGER PYK,PYCHGE,PYCOMP
6725 C...Commonblocks.
6726       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6727       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6728       COMMON/PYINT1/MINT(400),VINT(400)
6729       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6730       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
6731 C...Local arrays and saved variables.
6732       DIMENSION WTI(0:200)
6733       SAVE IMIN,IMAX,WTI,WTS
6734  
6735 C...Sum of allowed cross-sections for pileup events.
6736       IF(MPILE.EQ.1) THEN
6737         VINT(131)=SIGT(0,0,5)
6738         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
6739         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
6740         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
6741         IF(MSTP(133).LE.0) RETURN
6742  
6743 C...Initialize multiplicity distribution at maximum.
6744         XNAVE=VINT(131)*PARP(131)
6745         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
6746         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
6747         WTI(INAVE)=1D0
6748         WTS=WTI(INAVE)
6749         WTN=WTI(INAVE)*INAVE
6750  
6751 C...Find shape of multiplicity distribution below maximum.
6752         IMIN=INAVE
6753         DO 100 I=INAVE-1,1,-1
6754           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
6755           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
6756           IF(WTI(I).LT.1D-6) GOTO 110
6757           WTS=WTS+WTI(I)
6758           WTN=WTN+WTI(I)*I
6759           IMIN=I
6760   100   CONTINUE
6761  
6762 C...Find shape of multiplicity distribution above maximum.
6763   110   IMAX=INAVE
6764         DO 120 I=INAVE+1,200
6765           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
6766           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
6767           IF(WTI(I).LT.1D-6) GOTO 130
6768           WTS=WTS+WTI(I)
6769           WTN=WTN+WTI(I)*I
6770           IMAX=I
6771   120   CONTINUE
6772   130   VINT(132)=XNAVE
6773         VINT(133)=WTN/WTS
6774         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
6775      &  WTS/(WTS+WTI(1)/XNAVE)
6776         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
6777         IF(MSTP(133).GE.2) VINT(134)=XNAVE
6778  
6779 C...Pick multiplicity of pileup events.
6780       ELSE
6781         IF(MSTP(133).LE.0) THEN
6782           MINT(81)=MAX(1,MSTP(134))
6783         ELSE
6784           WTR=WTS*PYR(0)
6785           DO 140 I=IMIN,IMAX
6786             MINT(81)=I
6787             WTR=WTR-WTI(I)
6788             IF(WTR.LE.0D0) GOTO 150
6789   140     CONTINUE
6790   150     CONTINUE
6791         ENDIF
6792       ENDIF
6793  
6794 C...Format statement for error message.
6795  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
6796      &'crossing too large, ',1P,D12.4)
6797  
6798       RETURN
6799       END
6800  
6801 C*********************************************************************
6802  
6803 C...PYSAVE
6804 C...Saves and restores parameter and cross section values for the
6805 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
6806 C...Also makes random choice between alternatives.
6807  
6808       SUBROUTINE PYSAVE(ISAVE,IGA)
6809  
6810 C...Double precision and integer declarations.
6811       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6812       IMPLICIT INTEGER(I-N)
6813       INTEGER PYK,PYCHGE,PYCOMP
6814 C...Commonblocks.
6815       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
6816       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6817       COMMON/PYINT1/MINT(400),VINT(400)
6818       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
6819       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6820       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6821       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
6822 C...Local arrays and saved variables.
6823       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
6824      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
6825      &INTCP(15,20),RECP(15,20)
6826       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
6827  
6828 C...Save list of subprocesses and cross-section information.
6829       IF(ISAVE.EQ.1) THEN
6830         ICP=0
6831         DO 120 I=1,500
6832           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
6833           ICP=ICP+1
6834           NSUBCP(IGA,ICP)=I
6835           MSUBCP(IGA,ICP)=MSUB(I)
6836           DO 100 J=1,20
6837             COEFCP(IGA,ICP,J)=COEF(I,J)
6838   100     CONTINUE
6839           DO 110 J=1,3
6840             NGENCP(IGA,ICP,J)=NGEN(I,J)
6841             XSECCP(IGA,ICP,J)=XSEC(I,J)
6842   110     CONTINUE
6843   120   CONTINUE
6844         NCP(IGA)=ICP
6845         DO 130 J=1,3
6846           NGENCP(IGA,0,J)=NGEN(0,J)
6847           XSECCP(IGA,0,J)=XSEC(0,J)
6848   130   CONTINUE
6849         DO 160 I1=0,6
6850           DO 150 I2=0,6
6851             DO 140 J=0,5
6852               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
6853   140       CONTINUE
6854   150     CONTINUE
6855   160   CONTINUE
6856  
6857 C...Save various common process variables.
6858         DO 170 J=1,10
6859           INTCP(IGA,J)=MINT(40+J)
6860   170   CONTINUE
6861         INTCP(IGA,11)=MINT(101)
6862         INTCP(IGA,12)=MINT(102)
6863         INTCP(IGA,13)=MINT(107)
6864         INTCP(IGA,14)=MINT(108)
6865         INTCP(IGA,15)=MINT(123)
6866         RECP(IGA,1)=CKIN(3)
6867         RECP(IGA,2)=VINT(318)
6868  
6869 C...Save cross-section information only.
6870       ELSEIF(ISAVE.EQ.2) THEN
6871         DO 190 ICP=1,NCP(IGA)
6872           I=NSUBCP(IGA,ICP)
6873           DO 180 J=1,3
6874             NGENCP(IGA,ICP,J)=NGEN(I,J)
6875             XSECCP(IGA,ICP,J)=XSEC(I,J)
6876   180     CONTINUE
6877   190   CONTINUE
6878         DO 200 J=1,3
6879           NGENCP(IGA,0,J)=NGEN(0,J)
6880           XSECCP(IGA,0,J)=XSEC(0,J)
6881   200   CONTINUE
6882  
6883 C...Choose between allowed alternatives.
6884       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
6885         IF(ISAVE.EQ.4) THEN
6886           XSUMCP=0D0
6887           DO 210 IG=1,MINT(121)
6888             XSUMCP=XSUMCP+XSECCP(IG,0,1)
6889   210     CONTINUE
6890           XSUMCP=XSUMCP*PYR(0)
6891           DO 220 IG=1,MINT(121)
6892             IGA=IG
6893             XSUMCP=XSUMCP-XSECCP(IG,0,1)
6894             IF(XSUMCP.LE.0D0) GOTO 230
6895   220     CONTINUE
6896   230     CONTINUE
6897         ENDIF
6898  
6899 C...Restore cross-section information.
6900         DO 240 I=1,500
6901           MSUB(I)=0
6902   240   CONTINUE
6903         DO 270 ICP=1,NCP(IGA)
6904           I=NSUBCP(IGA,ICP)
6905           MSUB(I)=MSUBCP(IGA,ICP)
6906           DO 250 J=1,20
6907             COEF(I,J)=COEFCP(IGA,ICP,J)
6908   250     CONTINUE
6909           DO 260 J=1,3
6910             NGEN(I,J)=NGENCP(IGA,ICP,J)
6911             XSEC(I,J)=XSECCP(IGA,ICP,J)
6912   260     CONTINUE
6913   270   CONTINUE
6914         DO 280 J=1,3
6915           NGEN(0,J)=NGENCP(IGA,0,J)
6916           XSEC(0,J)=XSECCP(IGA,0,J)
6917   280   CONTINUE
6918         DO 310 I1=0,6
6919           DO 300 I2=0,6
6920             DO 290 J=0,5
6921               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
6922   290       CONTINUE
6923   300     CONTINUE
6924   310   CONTINUE
6925  
6926 C...Restore various common process variables.
6927         DO 320 J=1,10
6928           MINT(40+J)=INTCP(IGA,J)
6929   320   CONTINUE
6930         MINT(101)=INTCP(IGA,11)
6931         MINT(102)=INTCP(IGA,12)
6932         MINT(107)=INTCP(IGA,13)
6933         MINT(108)=INTCP(IGA,14)
6934         MINT(123)=INTCP(IGA,15)
6935         CKIN(3)=RECP(IGA,1)
6936         CKIN(1)=2D0*CKIN(3)
6937         VINT(318)=RECP(IGA,2)
6938  
6939 C...Sum up cross-section info (for PYSTAT).
6940       ELSEIF(ISAVE.EQ.5) THEN
6941         DO 330 I=1,500
6942           MSUB(I)=0
6943           NGEN(I,1)=0
6944           NGEN(I,3)=0
6945           XSEC(I,3)=0D0
6946   330   CONTINUE
6947         NGEN(0,1)=0
6948         NGEN(0,2)=0
6949         NGEN(0,3)=0
6950         XSEC(0,3)=0
6951         DO 350 IG=1,MINT(121)
6952           DO 340 ICP=1,NCP(IG)
6953             I=NSUBCP(IG,ICP)
6954             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
6955             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
6956             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
6957             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
6958   340     CONTINUE
6959           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
6960           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
6961           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
6962           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
6963   350   CONTINUE
6964       ENDIF
6965  
6966       RETURN
6967       END
6968  
6969 C*********************************************************************
6970  
6971 C...PYGAGA
6972 C...For lepton beams it gives photon-hadron or photon-photon systems
6973 C...to be treated with the ordinary machinery and combines this with a
6974 C...description of the lepton -> lepton + photon branching.
6975  
6976       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
6977  
6978 C...Double precision and integer declarations.
6979       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6980       IMPLICIT INTEGER(I-N)
6981       INTEGER PYK,PYCHGE,PYCOMP
6982 C...Commonblocks.
6983       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
6984       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6985       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6986       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
6987       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6988       COMMON/PYINT1/MINT(400),VINT(400)
6989       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6990       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
6991      &/PYINT5/
6992 C...Local variables and data statement.
6993       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
6994      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
6995       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
6996       DATA EPS/1D-4/
6997  
6998 C...Initialize generation of photons inside leptons.
6999       IF(IGAGA.EQ.1) THEN
7000  
7001 C...Save quantities on incoming lepton system.
7002         VINT(301)=VINT(1)
7003         VINT(302)=VINT(2)
7004         PMS(1)=VINT(303)**2
7005         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
7006         PMS(2)=VINT(304)**2
7007         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
7008         PMC(3)=VINT(302)-PMS(1)-PMS(2)
7009         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
7010  
7011 C...Calculate range of x and Q2 values allowed in generation.
7012         DO 100 I=1,2
7013           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
7014           IF(MINT(140+I).NE.0) THEN
7015             XMIN(I)=MAX(CKIN(59+2*I),EPS)
7016             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
7017      &      PMC(I),1D0-EPS)
7018             YMIN=MAX(CKIN(71+2*I),EPS)
7019             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
7020             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
7021      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
7022             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
7023             THEMIN=MAX(CKIN(67+2*I),0D0)
7024             THEMAX=MIN(CKIN(68+2*I),PARU(1))
7025             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
7026             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
7027      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
7028      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
7029             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
7030      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
7031      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
7032             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
7033 C...W limits when lepton on one side only.
7034             IF(MINT(143-I).EQ.0) THEN
7035               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
7036               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
7037      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
7038             ENDIF
7039           ENDIF
7040   100   CONTINUE
7041  
7042 C...W limits when lepton on both sides.
7043         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7044           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
7045      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
7046           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
7047      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
7048           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
7049             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
7050      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
7051             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
7052      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
7053           ELSE
7054             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
7055             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
7056           ENDIF
7057         ENDIF
7058  
7059 C...Q2 and W values and photon flux weight factors for initialization.
7060       ELSEIF(IGAGA.EQ.2) THEN
7061         ISUB=MINT(1)
7062         MINT(15)=0
7063         MINT(16)=0
7064  
7065 C...W value for photon on one or both sides, and for processes
7066 C...with gamma-gamma cross section peaked at small shat.
7067         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
7068           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
7069         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
7070           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
7071         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
7072           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
7073           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
7074         ELSE
7075           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
7076           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
7077         ENDIF
7078         VINT(1)=SQRT(MAX(0D0,VINT(2)))
7079  
7080 C...Upper estimate of photon flux weight factor.
7081 C...Initialization Q2 scale. Flag incoming unresolved photon.
7082         WTGAGA=1D0
7083         DO 110 I=1,2
7084           IF(MINT(140+I).NE.0) THEN
7085             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
7086      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
7087             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
7088      &      THEN
7089               Q2INIT=5D0+Q2MIN(3-I)
7090             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
7091               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
7092             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
7093               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
7094             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
7095      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
7096               Q2INIT=VINT(2)/3D0
7097             ELSEIF(ISUB.EQ.140) THEN
7098               Q2INIT=VINT(2)/2D0
7099             ELSE
7100               Q2INIT=Q2MIN(I)
7101             ENDIF
7102             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
7103             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
7104      &      MINT(14+I)=22
7105             VINT(306+I)=VINT(2+I)**2
7106           ENDIF
7107   110   CONTINUE
7108         VINT(320)=WTGAGA
7109  
7110 C...Update pTmin and cross section information.
7111         IF(MSTP(82).LE.1) THEN
7112           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7113         ELSE
7114           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7115         ENDIF
7116         VINT(149)=4D0*PTMN**2/VINT(2)
7117         VINT(154)=PTMN
7118         CALL PYXTOT
7119         VINT(318)=VINT(317)
7120  
7121 C...Generate photons inside leptons and
7122 C...calculate photon flux weight factors.
7123       ELSEIF(IGAGA.EQ.3) THEN
7124         ISUB=MINT(1)
7125         MINT(15)=0
7126         MINT(16)=0
7127  
7128 C...Generate phase space point and check against cuts.
7129         LOOP=0
7130   120   LOOP=LOOP+1
7131         DO 130 I=1,2
7132           IF(MINT(140+I).NE.0) THEN
7133 C...Pick x and Q2
7134             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
7135             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
7136 C...Cuts on internal consistency in x and Q2.
7137             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
7138             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
7139      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
7140 C...Cuts on y and theta.
7141             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
7142             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
7143             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
7144      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
7145             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
7146             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
7147             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
7148      &      GOTO 120
7149  
7150 C...Phi angle isotropic. Reconstruct pT.
7151             PHI(I)=PARU(2)*PYR(0)
7152             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
7153      &      PMS(I))*SIN(THETA(I))
7154  
7155 C...Store info on variables selected, for documentation purposes.
7156             VINT(2+I)=-SQRT(Q2(I))
7157             VINT(304+I)=X(I)
7158             VINT(306+I)=Q2(I)
7159             VINT(308+I)=Y(I)
7160             VINT(310+I)=THETA(I)
7161             VINT(312+I)=PHI(I)
7162           ELSE
7163             VINT(304+I)=1D0
7164             VINT(306+I)=0D0
7165             VINT(308+I)=1D0
7166             VINT(310+I)=0D0
7167             VINT(312+I)=0D0
7168           ENDIF
7169   130   CONTINUE
7170  
7171 C...Cut on W combines info from two sides.
7172         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7173           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
7174      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
7175      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
7176      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
7177           IF(W2.LT.W2MIN) GOTO 120
7178           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
7179           PMS1=-Q2(1)
7180           PMS2=-Q2(2)
7181         ELSEIF(MINT(141).NE.0) THEN
7182           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
7183           PMS1=-Q2(1)
7184           PMS2=PMS(2)
7185         ELSEIF(MINT(142).NE.0) THEN
7186           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
7187           PMS1=PMS(1)
7188           PMS2=-Q2(2)
7189         ENDIF
7190  
7191 C...Store kinematics info for photon(s) in subsystem cm frame.
7192         VINT(2)=W2
7193         VINT(1)=SQRT(W2)
7194         VINT(291)=0D0
7195         VINT(292)=0D0
7196         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
7197         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
7198         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
7199         VINT(296)=0D0
7200         VINT(297)=0D0
7201         VINT(298)=-VINT(293)
7202         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
7203         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
7204  
7205 C...Assign weight for photon flux; different for transverse and
7206 C...longitudinal photons. Flag incoming unresolved photon.
7207         WTGAGA=1D0
7208         DO 140 I=1,2
7209           IF(MINT(140+I).NE.0) THEN
7210             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
7211      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
7212             IF(MSTP(16).EQ.0) THEN
7213               XY=X(I)
7214             ELSE
7215               WTGAGA=WTGAGA*X(I)/Y(I)
7216               XY=Y(I)
7217             ENDIF
7218             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
7219               WTGAGA=WTGAGA*(1D0-XY)
7220             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
7221               WTGAGA=WTGAGA*(1D0-XY)
7222             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
7223               WTGAGA=WTGAGA*(1D0-XY)
7224             ELSE
7225               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
7226      &        PMS(I)*XY**2/Q2(I))
7227             ENDIF
7228             IF(MINT(106+I).EQ.0) MINT(14+I)=22
7229           ENDIF
7230   140   CONTINUE
7231         VINT(319)=WTGAGA
7232         MINT(143)=LOOP
7233  
7234 C...Update pTmin and cross section information.
7235         IF(MSTP(82).LE.1) THEN
7236           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7237         ELSE
7238           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7239         ENDIF
7240         VINT(149)=4D0*PTMN**2/VINT(2)
7241         VINT(154)=PTMN
7242         CALL PYXTOT
7243  
7244 C...Reconstruct kinematics of photons inside leptons.
7245       ELSEIF(IGAGA.EQ.4) THEN
7246  
7247 C...Make place for incoming particles and scattered leptons.
7248         MOVE=3
7249         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
7250         MINT(4)=MINT(4)+MOVE
7251         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
7252           IF(K(I,1).EQ.21) THEN
7253             DO 150 J=1,5
7254               K(I+MOVE,J)=K(I,J)
7255               P(I+MOVE,J)=P(I,J)
7256               V(I+MOVE,J)=V(I,J)
7257   150       CONTINUE
7258             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
7259      &      K(I+MOVE,3)=K(I,3)+MOVE
7260             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
7261      &      K(I+MOVE,4)=K(I,4)+MOVE
7262             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
7263      &      K(I+MOVE,5)=K(I,5)+MOVE
7264           ENDIF
7265   160   CONTINUE
7266         DO 170 I=MINT(84)+1,N
7267           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
7268      &    K(I,3)=K(I,3)+MOVE
7269   170   CONTINUE
7270  
7271 C...Fill in incoming particles.
7272         DO 190 I=MINT(83)+1,MINT(83)+MOVE
7273           DO 180 J=1,5
7274             K(I,J)=0
7275             P(I,J)=0D0
7276             V(I,J)=0D0
7277   180     CONTINUE
7278   190   CONTINUE
7279         DO 200 I=1,2
7280           K(MINT(83)+I,1)=21
7281           IF(MINT(140+I).NE.0) THEN
7282             K(MINT(83)+I,2)=MINT(140+I)
7283             P(MINT(83)+I,5)=VINT(302+I)
7284           ELSE
7285             K(MINT(83)+I,2)=MINT(10+I)
7286             P(MINT(83)+I,5)=VINT(2+I)
7287           ENDIF
7288           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
7289      &    VINT(302))*(-1D0)**(I+1)
7290           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
7291   200   CONTINUE
7292  
7293 C...New mother-daughter relations in documentation section.
7294         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7295           K(MINT(83)+1,4)=MINT(83)+3
7296           K(MINT(83)+1,5)=MINT(83)+5
7297           K(MINT(83)+2,4)=MINT(83)+4
7298           K(MINT(83)+2,5)=MINT(83)+6
7299           K(MINT(83)+3,3)=MINT(83)+1
7300           K(MINT(83)+5,3)=MINT(83)+1
7301           K(MINT(83)+4,3)=MINT(83)+2
7302           K(MINT(83)+6,3)=MINT(83)+2
7303         ELSEIF(MINT(141).NE.0) THEN
7304           K(MINT(83)+1,4)=MINT(83)+3
7305           K(MINT(83)+1,5)=MINT(83)+4
7306           K(MINT(83)+2,4)=MINT(83)+5
7307           K(MINT(83)+3,3)=MINT(83)+1
7308           K(MINT(83)+4,3)=MINT(83)+1
7309           K(MINT(83)+5,3)=MINT(83)+2
7310         ELSEIF(MINT(142).NE.0) THEN
7311           K(MINT(83)+1,4)=MINT(83)+4
7312           K(MINT(83)+2,4)=MINT(83)+3
7313           K(MINT(83)+2,5)=MINT(83)+5
7314           K(MINT(83)+3,3)=MINT(83)+2
7315           K(MINT(83)+4,3)=MINT(83)+1
7316           K(MINT(83)+5,3)=MINT(83)+2
7317         ENDIF
7318  
7319 C...Fill scattered lepton(s).
7320         DO 210 I=1,2
7321           IF(MINT(140+I).NE.0) THEN
7322             LSC=MINT(83)+MIN(I+2,MOVE)
7323             K(LSC,1)=21
7324             K(LSC,2)=MINT(140+I)
7325             P(LSC,1)=PT(I)*COS(PHI(I))
7326             P(LSC,2)=PT(I)*SIN(PHI(I))
7327             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
7328             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
7329      &      (-1D0)**(I-1)
7330             P(LSC,5)=VINT(302+I)
7331           ENDIF
7332   210   CONTINUE
7333  
7334 C...Find incoming four-vectors to subprocess.
7335         K(N+1,1)=21
7336         IF(MINT(141).NE.0) THEN
7337           DO 220 J=1,4
7338             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
7339   220     CONTINUE
7340         ELSE
7341           DO 230 J=1,4
7342             P(N+1,J)=P(MINT(83)+1,J)
7343   230     CONTINUE
7344         ENDIF
7345         K(N+2,1)=21
7346         IF(MINT(142).NE.0) THEN
7347           DO 240 J=1,4
7348             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
7349   240     CONTINUE
7350         ELSE
7351           DO 250 J=1,4
7352             P(N+2,J)=P(MINT(83)+2,J)
7353   250     CONTINUE
7354         ENDIF
7355  
7356 C...Define boost and rotation between hadronic subsystem and
7357 C...collision rest frame; boost hadronic subsystem to this frame.
7358         DO 260 J=1,3
7359           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
7360   260   CONTINUE
7361         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
7362         BPHI=PYANGL(P(N+1,1),P(N+1,2))
7363         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
7364         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
7365         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
7366      &  BETA(3))
7367  
7368 C...Add on scattered leptons to final state.
7369         DO 280 I=1,2
7370           IF(MINT(140+I).NE.0) THEN
7371             LSC=MINT(83)+MIN(I+2,MOVE)
7372             N=N+1
7373             DO 270 J=1,5
7374               K(N,J)=K(LSC,J)
7375               P(N,J)=P(LSC,J)
7376               V(N,J)=V(LSC,J)
7377   270       CONTINUE
7378             K(N,1)=1
7379             K(N,3)=LSC
7380           ENDIF
7381   280   CONTINUE
7382       ENDIF
7383  
7384       RETURN
7385       END
7386  
7387 C*********************************************************************
7388  
7389 C...PYRAND
7390 C...Generates quantities characterizing the high-pT scattering at the
7391 C...parton level according to the matrix elements. Chooses incoming,
7392 C...reacting partons, their momentum fractions and one of the possible
7393 C...subprocesses.
7394  
7395       SUBROUTINE PYRAND
7396  
7397 C...Double precision and integer declarations.
7398       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
7399       IMPLICIT INTEGER(I-N)
7400       INTEGER PYK,PYCHGE,PYCOMP
7401 C...Parameter statement to help give large particle numbers.
7402       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
7403      &KEXCIT=4000000,KDIMEN=5000000)
7404  
7405 C...User process initialization and event commonblocks.
7406       INTEGER MAXPUP
7407       PARAMETER (MAXPUP=100)
7408       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
7409       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
7410       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
7411      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
7412      &LPRUP(MAXPUP)
7413       INTEGER MAXNUP
7414       PARAMETER (MAXNUP=500)
7415       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
7416       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
7417       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
7418      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
7419      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
7420       SAVE /HEPRUP/,/HEPEUP/
7421  
7422 C...Commonblocks.
7423       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
7424       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
7425       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
7426       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
7427       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
7428       COMMON/PYINT1/MINT(400),VINT(400)
7429       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
7430       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
7431       COMMON/PYINT4/MWID(500),WIDS(500,5)
7432       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
7433       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
7434       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
7435       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
7436      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/
7437 C...Local arrays.
7438       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
7439  
7440 C...Parameters and data used in elastic/diffractive treatment.
7441       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
7442      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
7443  
7444 C...Initial values, specifically for (first) semihard interaction.
7445       MINT(10)=0
7446       MINT(17)=0
7447       MINT(18)=0
7448       VINT(97)=1D0
7449       VINT(143)=1D0
7450       VINT(144)=1D0
7451       VINT(157)=0D0
7452       VINT(158)=0D0
7453       MFAIL=0
7454       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
7455       ISUB=0
7456       ISTSB=0
7457       LOOP=0
7458   100 LOOP=LOOP+1
7459       MINT(51)=0
7460       MINT(143)=1
7461  
7462 C...Start by assuming incoming photon is entering subprocess.
7463       IF(MINT(11).EQ.22) THEN
7464          MINT(15)=22
7465          VINT(307)=VINT(3)**2
7466       ENDIF
7467       IF(MINT(12).EQ.22) THEN
7468          MINT(16)=22
7469          VINT(308)=VINT(4)**2
7470       ENDIF
7471       MINT(103)=MINT(11)
7472       MINT(104)=MINT(12)
7473  
7474 C...Choice of process type - first event of pileup.
7475       INMULT=0
7476       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
7477       ELSEIF(MINT(82).EQ.1) THEN
7478  
7479 C...For gamma-p or gamma-gamma first pick between alternatives.
7480         IGA=0
7481         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
7482         MINT(122)=IGA
7483  
7484 C...For real gamma + gamma with different nature, flip at random.
7485         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
7486      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
7487           MINTSV=MINT(41)
7488           MINT(41)=MINT(42)
7489           MINT(42)=MINTSV
7490           MINTSV=MINT(45)
7491           MINT(45)=MINT(46)
7492           MINT(46)=MINTSV
7493           MINTSV=MINT(107)
7494           MINT(107)=MINT(108)
7495           MINT(108)=MINTSV
7496           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
7497         ENDIF
7498  
7499 C...Pick process type, possibly by user process machinery.
7500 C...(If the latter, also event will be picked here.)
7501         IF(MINT(111).EQ.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
7502           CALL UPEVNT
7503         ELSEIF(MINT(111).EQ.11.AND.IABS(IDWTUP).GE.3) THEN
7504           CALL UPEVNT
7505           ISUB=0
7506   110     ISUB=ISUB+1
7507           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
7508      &    ISUB.LT.500) GOTO 110
7509         ELSE
7510           RSUB=XSEC(0,1)*PYR(0)
7511           DO 120 I=1,500
7512             IF(MSUB(I).NE.1) GOTO 120
7513             ISUB=I
7514             RSUB=RSUB-XSEC(I,1)
7515             IF(RSUB.LE.0D0) GOTO 130
7516   120     CONTINUE
7517   130     IF(ISUB.EQ.95) ISUB=96
7518           IF(ISUB.EQ.96) INMULT=1
7519           IF(ISET(ISUB).EQ.11) THEN
7520             IDPRUP=KFPR(ISUB,2)
7521             CALL UPEVNT
7522           ENDIF
7523         ENDIF
7524  
7525 C...Choice of inclusive process type - pileup events.
7526       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
7527         RSUB=VINT(131)*PYR(0)
7528         ISUB=96
7529         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
7530         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
7531         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
7532         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
7533      &  ISUB=91
7534         IF(ISUB.EQ.96) INMULT=1
7535       ENDIF
7536  
7537 C...Choice of photon energy and flux factor inside lepton.
7538       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
7539         CALL PYGAGA(3,WTGAGA)
7540         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
7541           CKIN(3)=MAX(VINT(285),VINT(154))
7542           CKIN(1)=2D0*CKIN(3)
7543         ENDIF
7544 C...When necessary set direct/resolved photon by hand.
7545       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
7546         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
7547         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
7548       ENDIF
7549  
7550 C...Restrict direct*resolved processes to pTmin >= Q,
7551 C...to avoid doublecounting  with DIS.
7552       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
7553         IF(MINT(15).EQ.22) THEN
7554           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
7555         ELSE
7556           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
7557         ENDIF
7558         CKIN(1)=2D0*CKIN(3)
7559       ENDIF
7560  
7561 C...Set up for multiple interactions.
7562       IF(INMULT.EQ.1) CALL PYMULT(2)
7563  
7564 C...Loopback point for minimum bias in photon physics.
7565       LOOP2=0
7566   140 LOOP2=LOOP2+1
7567       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
7568       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
7569       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
7570      &NGEN(97,1)=NGEN(97,1)+MINT(143)
7571       MINT(1)=ISUB
7572       ISTSB=ISET(ISUB)
7573  
7574 C...Random choice of flavour for some SUSY processes.
7575       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
7576 C...~e_L ~nu_e or ~mu_L ~nu_mu.
7577         IF(ISUB.EQ.210) THEN
7578           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
7579           KFPR(ISUB,2)=KFPR(ISUB,1)+1
7580 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
7581         ELSEIF(ISUB.EQ.213) THEN
7582           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
7583           KFPR(ISUB,2)=KFPR(ISUB,1)
7584 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
7585         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259) THEN
7586           IF(ISUB.GE.258) THEN
7587             RKF=4D0
7588           ELSE
7589             RKF=5D0
7590           ENDIF
7591           IF(MOD(ISUB,2).EQ.0) THEN
7592             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
7593           ELSE
7594             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
7595           ENDIF
7596 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
7597         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
7598           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
7599             KSU1=KSUSY1
7600             KSU2=KSUSY1
7601           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
7602             KSU1=KSUSY2
7603             KSU2=KSUSY2
7604           ELSEIF(PYR(0).LT.0.5D0) THEN
7605             KSU1=KSUSY1
7606             KSU2=KSUSY2
7607           ELSE
7608             KSU1=KSUSY2
7609             KSU2=KSUSY1
7610           ENDIF
7611           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
7612           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
7613 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
7614         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
7615           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
7616           KFPR(ISUB,2)=KFPR(ISUB,1)
7617         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
7618           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
7619           KFPR(ISUB,2)=KFPR(ISUB,1)
7620 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
7621         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
7622           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
7623             KSU1=KSUSY1
7624             KSU2=KSUSY1
7625           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
7626             KSU1=KSUSY2
7627             KSU2=KSUSY2
7628           ELSEIF(PYR(0).LT.0.5D0) THEN
7629             KSU1=KSUSY1
7630             KSU2=KSUSY2
7631           ELSE
7632             KSU1=KSUSY2
7633             KSU2=KSUSY1
7634           ENDIF
7635           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
7636             RKF=5D0
7637           ELSE
7638             RKF=4D0
7639           ENDIF
7640           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
7641         ENDIF
7642       ENDIF
7643  
7644 C...Find resonances (explicit or implicit in cross-section).
7645       MINT(72)=0
7646       KFR1=0
7647       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
7648         KFR1=KFPR(ISUB,1)
7649       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
7650      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
7651         KFR1=23
7652       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
7653      &  ISUB.EQ.177) THEN
7654         KFR1=24
7655       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
7656         KFR1=25
7657         IF(MSTP(46).EQ.5) THEN
7658           KFR1=89
7659           PMAS(89,1)=PARP(45)
7660           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
7661         ENDIF
7662       ELSEIF(ISUB.EQ.194) THEN
7663         KFR1=KTECHN+113
7664       ELSEIF(ISUB.EQ.195) THEN
7665         KFR1=KTECHN+213
7666       ELSEIF(ISUB.GE.361.AND.ISUB.LE.368) THEN
7667         KFR1=KTECHN+113
7668       ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
7669         KFR1=KTECHN+213
7670       ENDIF
7671       CKMX=CKIN(2)
7672       IF(CKMX.LE.0D0) CKMX=VINT(1)
7673       KCR1=PYCOMP(KFR1)
7674       IF(KFR1.NE.0) THEN
7675         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
7676      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
7677       ENDIF
7678       IF(KFR1.NE.0) THEN
7679         TAUR1=PMAS(KCR1,1)**2/VINT(2)
7680         IF(KFR1.EQ.KTECHN+113) THEN
7681           CALL PYTECM(S1,S2)
7682           TAUR1=S1/VINT(2)
7683         ENDIF
7684         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
7685         MINT(72)=1
7686         MINT(73)=KFR1
7687         VINT(73)=TAUR1
7688         VINT(74)=GAMR1
7689       ENDIF
7690       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.(ISUB.GE.364.AND.ISUB.LE.368))
7691      $THEN
7692         KFR2=23
7693         IF(ISUB.EQ.194) THEN
7694           KFR2=KTECHN+223
7695         ELSEIF(ISUB.GE.364.AND.ISUB.LE.368) THEN
7696           KFR2=KTECHN+223
7697         ENDIF
7698         KCR2=PYCOMP(KFR2)
7699         TAUR2=PMAS(KCR2,1)**2/VINT(2)
7700         IF(KFR2.EQ.KTECHN+223) THEN
7701           CALL PYTECM(S1,S2)
7702           TAUR2=S2/VINT(2)
7703         ENDIF
7704         GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
7705         IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
7706      &  CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) KFR2=0
7707         IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
7708           MINT(72)=2
7709           MINT(74)=KFR2
7710           VINT(75)=TAUR2
7711           VINT(76)=GAMR2
7712         ELSEIF(KFR2.NE.0) THEN
7713           KFR1=KFR2
7714           TAUR1=TAUR2
7715           GAMR1=GAMR2
7716           MINT(72)=1
7717           MINT(73)=KFR1
7718           VINT(73)=TAUR1
7719           VINT(74)=GAMR1
7720         ENDIF
7721       ENDIF
7722  
7723 C...Find product masses and minimum pT of process,
7724 C...optionally with broadening according to a truncated Breit-Wigner.
7725       VINT(63)=0D0
7726       VINT(64)=0D0
7727       MINT(71)=0
7728       VINT(71)=CKIN(3)
7729       IF(MINT(82).GE.2) VINT(71)=0D0
7730       VINT(80)=1D0
7731       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7732         NBW=0
7733         DO 160 I=1,2
7734           PMMN(I)=0D0
7735           IF(KFPR(ISUB,I).EQ.0) THEN
7736           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
7737      &      PARP(41)) THEN
7738             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7739           ELSE
7740             NBW=NBW+1
7741 C...This prevents SUSY/t particles from becoming too light.
7742             KFLW=KFPR(ISUB,I)
7743             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
7744               KCW=PYCOMP(KFLW)
7745               PMMN(I)=PMAS(KCW,1)
7746               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
7747                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
7748                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
7749      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
7750                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
7751      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
7752                   PMMN(I)=MIN(PMMN(I),PMSUM)
7753                 ENDIF
7754   150         CONTINUE
7755             ELSEIF(KFLW.EQ.6) THEN
7756               PMMN(I)=PMAS(24,1)+PMAS(5,1)
7757             ENDIF
7758           ENDIF
7759   160   CONTINUE
7760         IF(NBW.GE.1) THEN
7761           CKIN41=CKIN(41)
7762           CKIN43=CKIN(43)
7763           CKIN(41)=MAX(PMMN(1),CKIN(41))
7764           CKIN(43)=MAX(PMMN(2),CKIN(43))
7765           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
7766           CKIN(41)=CKIN41
7767           CKIN(43)=CKIN43
7768           IF(MINT(51).EQ.1) THEN
7769             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
7770             IF(MFAIL.EQ.1) THEN
7771               MSTI(61)=1
7772               RETURN
7773             ENDIF
7774             GOTO 100
7775           ENDIF
7776           VINT(63)=PQM3**2
7777           VINT(64)=PQM4**2
7778         ENDIF
7779         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
7780         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
7781       ENDIF
7782  
7783 C...Prepare for additional variable choices in 2 -> 3.
7784       IF(ISTSB.EQ.5) THEN
7785         VINT(201)=0D0
7786         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
7787         VINT(206)=VINT(201)
7788         VINT(204)=PMAS(23,1)
7789         IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
7790         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
7791         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
7792      &  ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
7793         VINT(209)=VINT(204)
7794       ENDIF
7795  
7796 C...Select incoming VDM particle (rho/omega/phi/J/psi).
7797       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
7798      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
7799         VRN=PYR(0)*SIGT(0,0,5)
7800         IF(MINT(101).LE.1) THEN
7801           I1MN=0
7802           I1MX=0
7803         ELSE
7804           I1MN=1
7805           I1MX=MINT(101)
7806         ENDIF
7807         IF(MINT(102).LE.1) THEN
7808           I2MN=0
7809           I2MX=0
7810         ELSE
7811           I2MN=1
7812           I2MX=MINT(102)
7813         ENDIF
7814         DO 180 I1=I1MN,I1MX
7815           KFV1=110*I1+3
7816           DO 170 I2=I2MN,I2MX
7817             KFV2=110*I2+3
7818             VRN=VRN-SIGT(I1,I2,5)
7819             IF(VRN.LE.0D0) GOTO 190
7820   170     CONTINUE
7821   180   CONTINUE
7822   190   IF(MINT(101).GE.2) MINT(103)=KFV1
7823         IF(MINT(102).GE.2) MINT(104)=KFV2
7824       ENDIF
7825  
7826       IF(ISTSB.EQ.0) THEN
7827 C...Elastic scattering or single or double diffractive scattering.
7828  
7829 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
7830         MINT(103)=MINT(11)
7831         MINT(104)=MINT(12)
7832         PMM(1)=VINT(3)
7833         PMM(2)=VINT(4)
7834         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
7835           JJ=ISUB-90
7836           VRN=PYR(0)*SIGT(0,0,JJ)
7837           IF(MINT(101).LE.1) THEN
7838             I1MN=0
7839             I1MX=0
7840           ELSE
7841             I1MN=1
7842             I1MX=MINT(101)
7843           ENDIF
7844           IF(MINT(102).LE.1) THEN
7845             I2MN=0
7846             I2MX=0
7847           ELSE
7848             I2MN=1
7849             I2MX=MINT(102)
7850           ENDIF
7851           DO 210 I1=I1MN,I1MX
7852             KFV1=110*I1+3
7853             DO 200 I2=I2MN,I2MX
7854               KFV2=110*I2+3
7855               VRN=VRN-SIGT(I1,I2,JJ)
7856               IF(VRN.LE.0D0) GOTO 220
7857   200       CONTINUE
7858   210     CONTINUE
7859   220     IF(MINT(101).GE.2) THEN
7860             MINT(103)=KFV1
7861             PMM(1)=PYMASS(KFV1)
7862           ENDIF
7863           IF(MINT(102).GE.2) THEN
7864             MINT(104)=KFV2
7865             PMM(2)=PYMASS(KFV2)
7866           ENDIF
7867         ENDIF
7868         VINT(67)=PMM(1)
7869         VINT(68)=PMM(2)
7870  
7871 C...Select mass for GVMD states (rejecting previous assignment).
7872         Q0S=4D0*PARP(15)**2
7873         Q1S=4D0*VINT(154)**2
7874         LOOP3=0
7875   230   LOOP3=LOOP3+1
7876         DO 240 JT=1,2
7877           IF(MINT(106+JT).EQ.3) THEN
7878             PS=VINT(2+JT)**2
7879             PMM(JT)=(Q0S+PS)*(Q1S+PS)/
7880      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
7881             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
7882      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
7883           ENDIF
7884   240   CONTINUE
7885         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
7886           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
7887      &    GOTO 230
7888           GOTO 100
7889         ENDIF
7890  
7891 C...Side/sides of diffractive system.
7892         MINT(17)=0
7893         MINT(18)=0
7894         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
7895         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
7896  
7897 C...Find masses of particles and minimal masses of diffractive states.
7898         DO 250 JT=1,2
7899           PDIF(JT)=PMM(JT)
7900           VINT(68+JT)=PDIF(JT)
7901           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
7902   250   CONTINUE
7903         SH=VINT(2)
7904         SQM1=PMM(1)**2
7905         SQM2=PMM(2)**2
7906         SQM3=PDIF(1)**2
7907         SQM4=PDIF(2)**2
7908         SMRES1=(PMM(1)+PMRC)**2
7909         SMRES2=(PMM(2)+PMRC)**2
7910  
7911 C...Find elastic slope and lower limit diffractive slope.
7912         IHA=MAX(2,IABS(MINT(103))/110)
7913         IF(IHA.GE.5) IHA=1
7914         IHB=MAX(2,IABS(MINT(104))/110)
7915         IF(IHB.GE.5) IHB=1
7916         IF(ISUB.EQ.91) THEN
7917           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
7918         ELSEIF(ISUB.EQ.92) THEN
7919           BMN=MAX(2D0,2D0*BHAD(IHB))
7920         ELSEIF(ISUB.EQ.93) THEN
7921           BMN=MAX(2D0,2D0*BHAD(IHA))
7922         ELSEIF(ISUB.EQ.94) THEN
7923           BMN=2D0*ALP*4D0
7924         ENDIF
7925  
7926 C...Determine maximum possible t range and coefficient of generation.
7927         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
7928         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
7929         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
7930         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
7931         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
7932      &  (SQM1*SQM4-SQM2*SQM3)/SH
7933         THL=-0.5D0*(THA+THB)
7934         THU=THC/THL
7935         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
7936  
7937 C...Select diffractive mass/masses according to dm^2/m^2.
7938         LOOP3=0
7939   260   LOOP3=LOOP3+1
7940         DO 270 JT=1,2
7941           IF(MINT(16+JT).EQ.0) THEN
7942             PDIF(2+JT)=PDIF(JT)
7943           ELSE
7944             PMMIN=PDIF(JT)
7945             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
7946             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
7947           ENDIF
7948   270   CONTINUE
7949         SQM3=PDIF(3)**2
7950         SQM4=PDIF(4)**2
7951  
7952 C..Additional mass factors, including resonance enhancement.
7953         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
7954           IF(LOOP3.LT.100) GOTO 260
7955           GOTO 100
7956         ENDIF
7957         IF(ISUB.EQ.92) THEN
7958           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
7959           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
7960         ELSEIF(ISUB.EQ.93) THEN
7961           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
7962           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
7963         ELSEIF(ISUB.EQ.94) THEN
7964           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
7965      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
7966      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
7967           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
7968         ENDIF
7969  
7970 C...Select t according to exp(Bmn*t) and correct to right slope.
7971         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
7972         IF(ISUB.GE.92) THEN
7973           IF(ISUB.EQ.92) THEN
7974             BADD=2D0*ALP*LOG(SH/SQM3)
7975             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
7976           ELSEIF(ISUB.EQ.93) THEN
7977             BADD=2D0*ALP*LOG(SH/SQM4)
7978             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
7979           ELSEIF(ISUB.EQ.94) THEN
7980             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
7981           ENDIF
7982           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
7983         ENDIF
7984  
7985 C...Check whether m^2 and t choices are consistent.
7986         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
7987         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
7988         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
7989         IF(THB.LE.1D-8) GOTO 260
7990         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
7991      &  (SQM1*SQM4-SQM2*SQM3)/SH
7992         THLM=-0.5D0*(THA+THB)
7993         THUM=THC/THLM
7994         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
7995  
7996 C...Information to output.
7997         VINT(21)=1D0
7998         VINT(22)=0D0
7999         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
8000         VINT(45)=TH
8001         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
8002         VINT(63)=PDIF(3)**2
8003         VINT(64)=PDIF(4)**2
8004         VINT(283)=PMM(1)**2/4D0
8005         VINT(284)=PMM(2)**2/4D0
8006  
8007 C...Note: in the following, by In is meant the integral over the
8008 C...quantity multiplying coefficient cn.
8009 C...Choose tau according to h1(tau)/tau, where
8010 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
8011 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
8012 C...I1/I5*c5*1/(tau+tau_R') +
8013 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
8014 C...I1/I7*c7*tau/(1.-tau), and
8015 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
8016       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
8017         CALL PYKLIM(1)
8018         IF(MINT(51).NE.0) THEN
8019           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8020           IF(MFAIL.EQ.1) THEN
8021             MSTI(61)=1
8022             RETURN
8023           ENDIF
8024           GOTO 100
8025         ENDIF
8026         RTAU=PYR(0)
8027         MTAU=1
8028         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
8029         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
8030         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
8031         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
8032      &  MTAU=5
8033         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
8034      &  COEF(ISUB,5)) MTAU=6
8035         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
8036      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
8037         CALL PYKMAP(1,MTAU,PYR(0))
8038  
8039 C...2 -> 3, 4 processes:
8040 C...Choose tau' according to h4(tau,tau')/tau', where
8041 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
8042 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
8043         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
8044           CALL PYKLIM(4)
8045           IF(MINT(51).NE.0) THEN
8046             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8047             IF(MFAIL.EQ.1) THEN
8048               MSTI(61)=1
8049               RETURN
8050             ENDIF
8051             GOTO 100
8052           ENDIF
8053           RTAUP=PYR(0)
8054           MTAUP=1
8055           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
8056           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
8057           CALL PYKMAP(4,MTAUP,PYR(0))
8058         ENDIF
8059  
8060 C...Choose y* according to h2(y*), where
8061 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
8062 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
8063 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
8064 C...and c1 + c2 + c3 + c4 + c5 = 1.
8065         CALL PYKLIM(2)
8066         IF(MINT(51).NE.0) THEN
8067           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8068           IF(MFAIL.EQ.1) THEN
8069             MSTI(61)=1
8070             RETURN
8071           ENDIF
8072           GOTO 100
8073         ENDIF
8074         RYST=PYR(0)
8075         MYST=1
8076         IF(RYST.GT.COEF(ISUB,8)) MYST=2
8077         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
8078         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
8079         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
8080      &  COEF(ISUB,11)) MYST=5
8081         CALL PYKMAP(2,MYST,PYR(0))
8082  
8083 C...2 -> 2 processes:
8084 C...Choose cos(theta-hat) (cth) according to h3(cth), where
8085 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
8086 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
8087 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
8088 C...and c0 + c1 + c2 + c3 + c4 = 1.
8089         CALL PYKLIM(3)
8090         IF(MINT(51).NE.0) THEN
8091           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8092           IF(MFAIL.EQ.1) THEN
8093             MSTI(61)=1
8094             RETURN
8095           ENDIF
8096           GOTO 100
8097         ENDIF
8098         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
8099           RCTH=PYR(0)
8100           MCTH=1
8101           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
8102           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
8103           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
8104           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
8105      &    COEF(ISUB,16)) MCTH=5
8106           CALL PYKMAP(3,MCTH,PYR(0))
8107         ENDIF
8108  
8109 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
8110         IF(ISTSB.EQ.5) THEN
8111           CALL PYKMAP(5,0,0D0)
8112           IF(MINT(51).NE.0) THEN
8113             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8114             IF(MFAIL.EQ.1) THEN
8115               MSTI(61)=1
8116               RETURN
8117             ENDIF
8118             GOTO 100
8119           ENDIF
8120         ENDIF
8121  
8122 C...DIS as f + gamma* -> f process: set dummy values.
8123       ELSEIF(ISTSB.EQ.8) THEN
8124         VINT(21)=0.9D0
8125         VINT(22)=0D0
8126         VINT(23)=0D0
8127         VINT(47)=0D0
8128         VINT(48)=0D0
8129  
8130 C...Low-pT or multiple interactions (first semihard interaction).
8131       ELSEIF(ISTSB.EQ.9) THEN
8132         CALL PYMULT(3)
8133         ISUB=MINT(1)
8134  
8135 C...Study user-defined process: kinematics plus weight.
8136       ELSEIF(ISTSB.EQ.11) THEN
8137         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
8138      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
8139         MSTI(51)=0
8140         IF(NUP.LE.0) THEN
8141           MINT(51)=2
8142           MSTI(51)=1
8143           IF(MINT(82).EQ.1) THEN
8144             NGEN(0,1)=NGEN(0,1)-1
8145             NGEN(ISUB,1)=NGEN(ISUB,1)-1
8146           ENDIF
8147           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8148           RETURN
8149         ENDIF
8150  
8151 C...Extract cross section event weight.
8152         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
8153           SIGS=1D-9*XWGTUP
8154         ELSE
8155           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
8156         ENDIF
8157         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
8158           VINT(97)=SIGN(1D0,XWGTUP)
8159         ELSE
8160           VINT(97)=1D-9*XWGTUP
8161         ENDIF
8162  
8163 C...Construct 'trivial' kinematical variables needed.
8164         KFL1=IDUP(1)
8165         KFL2=IDUP(2)
8166         VINT(41)=PUP(4,1)/EBMUP(1)
8167         VINT(42)=PUP(4,2)/EBMUP(2)
8168         VINT(21)=VINT(41)*VINT(42)
8169         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
8170         VINT(44)=VINT(21)*VINT(2)
8171         VINT(43)=SQRT(MAX(0D0,VINT(44)))
8172         VINT(55)=SCALUP
8173         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
8174         VINT(56)=VINT(55)**2
8175         VINT(57)=AQEDUP
8176         VINT(58)=AQCDUP
8177  
8178 C...Construct other kinematical variables needed (approximately).
8179         VINT(23)=0D0
8180         VINT(26)=VINT(21)
8181         VINT(45)=-0.5D0*VINT(44)
8182         VINT(46)=-0.5D0*VINT(44)
8183         VINT(49)=VINT(43)
8184         VINT(50)=VINT(44)
8185         VINT(51)=VINT(55)
8186         VINT(52)=VINT(56)
8187         VINT(53)=VINT(55)
8188         VINT(54)=VINT(56)
8189         VINT(25)=0D0
8190         VINT(48)=0D0
8191         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
8192      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
8193         DO 280 IUP=3,NUP
8194           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
8195      &    '(PYRAND:) unacceptable ISTUP code for particles')
8196           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
8197      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
8198           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
8199      &    PUP(2,IUP)**2)
8200   280   CONTINUE
8201         VINT(47)=SQRT(VINT(48))
8202       ENDIF
8203  
8204 C...Choose azimuthal angle.
8205       VINT(24)=0D0
8206       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
8207  
8208 C...Check against user cuts on kinematics at parton level.
8209       MINT(51)=0
8210       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
8211       IF(MINT(51).NE.0) THEN
8212         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8213         IF(MFAIL.EQ.1) THEN
8214           MSTI(61)=1
8215           RETURN
8216         ENDIF
8217         GOTO 100
8218       ENDIF
8219       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
8220         MCUT=0
8221         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
8222      &  CALL PYKCUT(MCUT)
8223         IF(MCUT.NE.0) THEN
8224           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8225           IF(MFAIL.EQ.1) THEN
8226             MSTI(61)=1
8227             RETURN
8228           ENDIF
8229           GOTO 100
8230         ENDIF
8231       ENDIF
8232  
8233 C...Calculate differential cross-section for different subprocesses.
8234       IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
8235       SIGSOR=SIGS
8236       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
8237  
8238 C...Multiply cross section by lepton -> photon flux factor.
8239       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
8240         SIGS=WTGAGA*SIGS
8241         DO 290 ICHN=1,NCHN
8242           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
8243   290   CONTINUE
8244         SIGLPT=WTGAGA*SIGLPT
8245       ENDIF
8246  
8247 C...Multiply cross-section by user-defined weights.
8248       IF(MSTP(173).EQ.1) THEN
8249         SIGS=PARP(173)*SIGS
8250         DO 300 ICHN=1,NCHN
8251           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
8252   300   CONTINUE
8253         SIGLPT=PARP(173)*SIGLPT
8254       ENDIF
8255       WTXS=1D0
8256       SIGSWT=SIGS
8257       VINT(99)=1D0
8258       VINT(100)=1D0
8259       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
8260         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
8261      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
8262         SIGSWT=WTXS*SIGS
8263         VINT(99)=WTXS
8264         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
8265       ENDIF
8266  
8267 C...Calculations for Monte Carlo estimate of all cross-sections.
8268       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
8269         IF(MSTP(142).LE.1) THEN
8270           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
8271         ELSE
8272           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
8273         ENDIF
8274       ELSEIF(MINT(82).EQ.1) THEN
8275         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
8276       ENDIF
8277       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
8278      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
8279  
8280 C...Multiple interactions: store results of cross-section calculation.
8281       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
8282         VINT(153)=SIGSOR
8283         CALL PYMULT(4)
8284       ENDIF
8285  
8286 C...Ratio of actual to maximum cross section.
8287       IF(ISTSB.NE.11) THEN
8288         VIOL=SIGSWT/XSEC(ISUB,1)
8289         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
8290       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
8291         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
8292       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
8293         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
8294       ELSE
8295         VIOL=1D0
8296       ENDIF
8297  
8298 C...Check that weight not negative.
8299       IF(MSTP(123).LE.0) THEN
8300         IF(VIOL.LT.-1D-3) THEN
8301           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
8302           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
8303      &    VINT(22),VINT(23),VINT(26)
8304           STOP
8305         ENDIF
8306       ELSE
8307         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
8308           VINT(109)=VIOL
8309           WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
8310           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
8311      &    VINT(22),VINT(23),VINT(26)
8312         ENDIF
8313       ENDIF
8314  
8315 C...Weighting using estimate of maximum of differential cross-section.
8316       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
8317         IF(VIOL.LT.PYR(0)) THEN
8318           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8319           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
8320           GOTO 100
8321         ENDIF
8322       ELSEIF(MFAIL.EQ.0) THEN
8323         RATND=SIGLPT/XSEC(95,1)
8324         VIOL=VIOL/RATND
8325         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
8326           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
8327      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
8328           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8329           ISUB=0
8330           GOTO 100
8331         ENDIF
8332         IF(VIOL.LT.PYR(0)) THEN
8333           GOTO 140
8334         ENDIF
8335       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
8336         IF(VIOL.LT.PYR(0)) THEN
8337           MSTI(61)=1
8338           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8339           RETURN
8340         ENDIF
8341       ELSE
8342         RATND=SIGLPT/XSEC(95,1)
8343         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
8344           MSTI(61)=1
8345           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8346           RETURN
8347         ENDIF
8348         VIOL=VIOL/RATND
8349         IF(VIOL.LT.PYR(0)) THEN
8350           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8351           GOTO 100
8352         ENDIF
8353       ENDIF
8354  
8355 C...Check for possible violation of estimated maximum of differential
8356 C...cross-section used in weighting.
8357       IF(MSTP(123).LE.0) THEN
8358         IF(VIOL.GT.1D0) THEN
8359           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
8360           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8361      &    VINT(22),VINT(23),VINT(26)
8362           STOP
8363         ENDIF
8364       ELSEIF(MSTP(123).EQ.1) THEN
8365         IF(VIOL.GT.VINT(108)) THEN
8366           VINT(108)=VIOL
8367           IF(VIOL.GT.1.0001D0) THEN
8368             MINT(10)=1
8369             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
8370             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8371      &      VINT(22),VINT(23),VINT(26)
8372           ENDIF
8373         ENDIF
8374       ELSEIF(VIOL.GT.VINT(108)) THEN
8375         VINT(108)=VIOL
8376         IF(VIOL.GT.1D0) THEN
8377           MINT(10)=1
8378           WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
8379           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
8380      &    THEN
8381             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
8382             IF(KFPR(ISUB,1).LE.9) THEN
8383               WRITE(MSTU(11),5800) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8384             ELSEIF(KFPR(ISUB,1).LE.99) THEN
8385               WRITE(MSTU(11),5900) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8386             ELSE
8387               WRITE(MSTU(11),6000) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8388             ENDIF
8389           ENDIF
8390           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
8391             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
8392             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
8393             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
8394      &      XSEC(0,1)=XSEC(0,1)+XDIF
8395             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8396      &      VINT(22),VINT(23),VINT(26)
8397             IF(ISUB.LE.9) THEN
8398               WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
8399             ELSEIF(ISUB.LE.99) THEN
8400               WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
8401             ELSE
8402               WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
8403             ENDIF
8404           ENDIF
8405           VINT(108)=1D0
8406         ENDIF
8407       ENDIF
8408  
8409 C...Multiple interactions: choose impact parameter.
8410       VINT(148)=1D0
8411       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
8412      &MSTP(82).GE.3) THEN
8413         CALL PYMULT(5)
8414         IF(VINT(150).LT.PYR(0)) THEN
8415           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8416           IF(MFAIL.EQ.1) THEN
8417             MSTI(61)=1
8418             RETURN
8419           ENDIF
8420           GOTO 100
8421         ENDIF
8422       ENDIF
8423       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
8424       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
8425         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
8426         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
8427       ENDIF
8428       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
8429  
8430 C...Choose flavour of reacting partons (and subprocess).
8431       IF(ISTSB.GE.11) GOTO 320
8432       RSIGS=SIGS*PYR(0)
8433       QT2=VINT(48)
8434       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
8435      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
8436       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
8437      &PYR(0).GT.RQQBAR)) THEN
8438         DO 310 ICHN=1,NCHN
8439           KFL1=ISIG(ICHN,1)
8440           KFL2=ISIG(ICHN,2)
8441           MINT(2)=ISIG(ICHN,3)
8442           RSIGS=RSIGS-SIGH(ICHN)
8443           IF(RSIGS.LE.0D0) GOTO 320
8444   310   CONTINUE
8445  
8446 C...Multiple interactions: choose qqbar preferentially at small pT.
8447       ELSEIF(ISUB.EQ.96) THEN
8448         MINT(105)=MINT(103)
8449         MINT(109)=MINT(107)
8450         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
8451         MINT(105)=MINT(104)
8452         MINT(109)=MINT(108)
8453         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
8454         MINT(1)=11
8455         MINT(2)=1
8456         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
8457  
8458 C...Low-pT: choose string drawing configuration.
8459       ELSE
8460         KFL1=21
8461         KFL2=21
8462         RSIGS=6D0*PYR(0)
8463         MINT(2)=1
8464         IF(RSIGS.GT.1D0) MINT(2)=2
8465         IF(RSIGS.GT.2D0) MINT(2)=3
8466       ENDIF
8467  
8468 C...Reassign QCD process. Partons before initial state radiation.
8469   320 IF(MINT(2).GT.10) THEN
8470         MINT(1)=MINT(2)/10
8471         MINT(2)=MOD(MINT(2),10)
8472       ENDIF
8473       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
8474      &NGEN(MINT(1),2)+1
8475       MINT(15)=KFL1
8476       MINT(16)=KFL2
8477       MINT(13)=MINT(15)
8478       MINT(14)=MINT(16)
8479       VINT(141)=VINT(41)
8480       VINT(142)=VINT(42)
8481       VINT(151)=0D0
8482       VINT(152)=0D0
8483  
8484 C...Calculate x value of photon for parton inside photon inside e.
8485       DO 350 JT=1,2
8486         MINT(18+JT)=0
8487         VINT(154+JT)=0D0
8488         MSPLI=0
8489         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
8490         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
8491         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
8492         IF(MSPLI.EQ.2) THEN
8493           KFLH=MINT(14+JT)
8494           XHRD=VINT(140+JT)
8495           Q2HRD=VINT(54)
8496           MINT(105)=MINT(102+JT)
8497           MINT(109)=MINT(106+JT)
8498           VINT(120)=VINT(2+JT)
8499           IF(MSTP(57).LE.1) THEN
8500             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
8501           ELSE
8502             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
8503           ENDIF
8504           WTMX=4D0*XPQ(KFLH)
8505           IF(MSTP(13).EQ.2) THEN
8506             Q2PMS=Q2HRD/PMAS(11,1)**2
8507             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
8508           ENDIF
8509   330     XE=XHRD**PYR(0)
8510           XG=MIN(1D0-1D-10,XHRD/XE)
8511           IF(MSTP(57).LE.1) THEN
8512             CALL PYPDFU(22,XG,Q2HRD,XPQ)
8513           ELSE
8514             CALL PYPDFL(22,XG,Q2HRD,XPQ)
8515           ENDIF
8516           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
8517           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
8518           IF(WT.LT.PYR(0)*WTMX) GOTO 330
8519           MINT(18+JT)=1
8520           VINT(154+JT)=XE
8521           DO 340 KFLS=-25,25
8522             XSFX(JT,KFLS)=XPQ(KFLS)
8523   340     CONTINUE
8524         ENDIF
8525   350 CONTINUE
8526  
8527 C...Pick scale where photon is resolved.
8528       Q0S=PARP(15)**2
8529       Q1S=VINT(154)**2
8530       VINT(283)=0D0
8531       IF(MINT(107).EQ.3) THEN
8532         IF(MSTP(66).EQ.1) THEN
8533           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
8534         ELSEIF(MSTP(66).EQ.2) THEN
8535           PS=VINT(3)**2
8536           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
8537      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
8538           Q2INT=SQRT(Q0S*Q2EFF)
8539           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
8540         ELSEIF(MSTP(66).EQ.3) THEN
8541           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
8542         ELSEIF(MSTP(66).GE.4) THEN
8543           PS=0.25D0*VINT(3)**2
8544           VINT(283)=(Q0S+PS)*(Q1S+PS)/
8545      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
8546         ENDIF
8547       ENDIF
8548       VINT(284)=0D0
8549       IF(MINT(108).EQ.3) THEN
8550         IF(MSTP(66).EQ.1) THEN
8551           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
8552         ELSEIF(MSTP(66).EQ.2) THEN
8553           PS=VINT(4)**2
8554           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
8555      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
8556           Q2INT=SQRT(Q0S*Q2EFF)
8557           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
8558         ELSEIF(MSTP(66).EQ.3) THEN
8559           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
8560         ELSEIF(MSTP(66).GE.4) THEN
8561           PS=0.25D0*VINT(4)**2
8562           VINT(284)=(Q0S+PS)*(Q1S+PS)/
8563      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
8564         ENDIF
8565       ENDIF
8566       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8567  
8568 C...Format statements for differential cross-section maximum violations.
8569  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
8570      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
8571  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
8572      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
8573  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
8574      &'in event',1X,I7)
8575  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
8576      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
8577  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
8578      &'in event',1X,I7)
8579  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
8580  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
8581  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
8582  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
8583  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
8584  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
8585  
8586       RETURN
8587       END
8588  
8589 C*********************************************************************
8590  
8591 C...PYSCAT
8592 C...Finds outgoing flavours and event type; sets up the kinematics
8593 C...and colour flow of the hard scattering
8594  
8595       SUBROUTINE PYSCAT
8596  
8597 C...Double precision and integer declarations
8598       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8599       IMPLICIT INTEGER(I-N)
8600       INTEGER PYK,PYCHGE,PYCOMP
8601 C...Parameter statement to help give large particle numbers.
8602       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
8603      &KEXCIT=4000000,KDIMEN=5000000)
8604  
8605 C...User process event common block.
8606       INTEGER MAXNUP
8607       PARAMETER (MAXNUP=500)
8608       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
8609       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
8610       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
8611      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
8612      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
8613       SAVE /HEPEUP/
8614  
8615 C...Commonblocks
8616       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
8617       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8618       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8619       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
8620       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8621       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8622       COMMON/PYINT1/MINT(400),VINT(400)
8623       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8624       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
8625       COMMON/PYINT4/MWID(500),WIDS(500,5)
8626       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8627       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
8628      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
8629       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
8630       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
8631      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,/PYTCSM/
8632 C...Local arrays and saved variables
8633       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
8634      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
8635       SAVE VINTSV
8636  
8637 C...Read out process
8638       ISUB=MINT(1)
8639       ISUBSV=ISUB
8640  
8641 C...Restore information for low-pT processes
8642       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
8643         DO 100 J=41,66
8644   100   VINT(J)=VINTSV(J)
8645       ENDIF
8646  
8647 C...Convert H' or A process into equivalent H one
8648       IHIGG=1
8649       KFHIGG=25
8650       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
8651      &ISUB.LE.190)) THEN
8652         IHIGG=2
8653         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
8654         KFHIGG=33+IHIGG
8655         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
8656         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
8657         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
8658         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
8659         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
8660         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
8661         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
8662         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
8663         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
8664         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
8665         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
8666         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
8667       ENDIF
8668  
8669 C...Choice of subprocess, number of documentation lines
8670       IDOC=6+ISET(ISUB)
8671       IF(ISUB.EQ.95) IDOC=8
8672       IF(ISET(ISUB).EQ.5) IDOC=9
8673       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
8674       MINT(3)=IDOC-6
8675       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
8676       MINT(4)=IDOC
8677       IPU1=MINT(84)+1
8678       IPU2=MINT(84)+2
8679       IPU3=MINT(84)+3
8680       IPU4=MINT(84)+4
8681       IPU5=MINT(84)+5
8682       IPU6=MINT(84)+6
8683  
8684 C...Reset K, P and V vectors. Store incoming particles
8685       DO 120 JT=1,MSTP(126)+100
8686         I=MINT(83)+JT
8687         IF(I.GT.MSTU(4)) GOTO 120
8688         DO 110 J=1,5
8689           K(I,J)=0
8690           P(I,J)=0D0
8691           V(I,J)=0D0
8692   110   CONTINUE
8693   120 CONTINUE
8694       DO 140 JT=1,2
8695         I=MINT(83)+JT
8696         K(I,1)=21
8697         K(I,2)=MINT(10+JT)
8698         DO 130 J=1,5
8699           P(I,J)=VINT(285+5*JT+J)
8700   130   CONTINUE
8701   140 CONTINUE
8702       MINT(6)=2
8703       KFRES=0
8704  
8705 C...Store incoming partons in their CM-frame
8706       SH=VINT(44)
8707       SHR=SQRT(SH)
8708       SHP=VINT(26)*VINT(2)
8709       SHPR=SQRT(SHP)
8710       SHUSER=SHR
8711       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
8712       DO 150 JT=1,2
8713         I=MINT(84)+JT
8714         K(I,1)=14
8715         K(I,2)=MINT(14+JT)
8716         K(I,3)=MINT(83)+2+JT
8717         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
8718         P(I,4)=0.5D0*SHUSER
8719   150 CONTINUE
8720  
8721 C...Copy incoming partons to documentation lines
8722       DO 170 JT=1,2
8723         I1=MINT(83)+4+JT
8724         I2=MINT(84)+JT
8725         K(I1,1)=21
8726         K(I1,2)=K(I2,2)
8727         K(I1,3)=I1-2
8728         DO 160 J=1,5
8729           P(I1,J)=P(I2,J)
8730   160   CONTINUE
8731   170 CONTINUE
8732  
8733 C...Choose new quark/lepton flavour for relevant annihilation graphs
8734       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
8735      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
8736         IGLGA=21
8737         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
8738         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
8739   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
8740         DO 190 I=1,MDCY(IGLGA,3)
8741           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
8742           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
8743           IF(RKFL.LE.0D0) GOTO 200
8744   190   CONTINUE
8745   200   CONTINUE
8746         IF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.2) THEN
8747           IF(KFLF.GE.4) GOTO 180
8748         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.4) THEN
8749           KFLF=4
8750           MINT(2)=MINT(2)-2
8751         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385) THEN
8752           KFLF=5
8753           MINT(2)=MINT(2)-4
8754         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
8755      &  .AND.IABS(KFLF).GE.3) THEN
8756           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
8757      &    VINT(44)**2
8758           FACCIB=VINT(46)**2/RTCM(41)**4
8759           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
8760         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
8761           KFLF=5
8762           MINT(2)=1
8763         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
8764           IF(KFLF.EQ.5) GOTO 180
8765         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
8766           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
8767         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
8768           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
8769         ENDIF
8770       ENDIF
8771  
8772 C...Final state flavours and colour flow: default values
8773       JS=1
8774       MINT(21)=MINT(15)
8775       MINT(22)=MINT(16)
8776       MINT(23)=0
8777       MINT(24)=0
8778       KCC=20
8779       KCS=ISIGN(1,MINT(15))
8780  
8781       IF(ISET(ISUB).EQ.11) THEN
8782 C...User-defined processes: find products
8783         MINT(3)=0
8784         DO 210 IUP=3,NUP
8785           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
8786           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
8787             MINT(21+IUP)=IDUP(IUP)
8788           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
8789      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
8790           ELSEIF(IDUP(IUP).EQ.0) THEN
8791           ELSE
8792             MINT(3)=MINT(3)+1
8793             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
8794           ENDIF
8795   210   CONTINUE
8796  
8797       ELSEIF(ISUB.LE.10) THEN
8798         IF(ISUB.EQ.1) THEN
8799 C...f + fbar -> gamma*/Z0
8800           KFRES=23
8801  
8802         ELSEIF(ISUB.EQ.2) THEN
8803 C...f + fbar' -> W+/-
8804           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
8805           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
8806           KFRES=ISIGN(24,KCH1+KCH2)
8807  
8808         ELSEIF(ISUB.EQ.3) THEN
8809 C...f + fbar -> h0 (or H0, or A0)
8810           KFRES=KFHIGG
8811  
8812         ELSEIF(ISUB.EQ.4) THEN
8813 C...gamma + W+/- -> W+/-
8814  
8815         ELSEIF(ISUB.EQ.5) THEN
8816 C...Z0 + Z0 -> h0
8817           XH=SH/SHP
8818           MINT(21)=MINT(15)
8819           MINT(22)=MINT(16)
8820           PMQ(1)=PYMASS(MINT(21))
8821           PMQ(2)=PYMASS(MINT(22))
8822   220     JT=INT(1.5D0+PYR(0))
8823           ZMIN=2D0*PMQ(JT)/SHPR
8824           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
8825      &    (SHPR*(SHPR-PMQ(3-JT)))
8826           ZMAX=MIN(1D0-XH,ZMAX)
8827           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
8828           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
8829      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
8830           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
8831           IF(SQC1.LT.1D-8) GOTO 220
8832           C1=SQRT(SQC1)
8833           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
8834           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8835           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
8836           Z(3-JT)=1D0-XH/(1D0-Z(JT))
8837           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
8838           IF(SQC1.LT.1D-8) GOTO 220
8839           C1=SQRT(SQC1)
8840           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
8841           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8842           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
8843           PHIR=PARU(2)*PYR(0)
8844           CPHI=COS(PHIR)
8845           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
8846      &    SQRT(1D0-CTHE(2)**2)*CPHI
8847           Z1=2D0-Z(JT)
8848           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
8849           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
8850           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
8851      &    PMQ(3-JT)**2/SHP))
8852           ZMIN=2D0*PMQ(3-JT)/SHPR
8853           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
8854           ZMAX=MIN(1D0-XH,ZMAX)
8855           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
8856           KCC=22
8857           KFRES=25
8858  
8859         ELSEIF(ISUB.EQ.6) THEN
8860 C...Z0 + W+/- -> W+/-
8861  
8862         ELSEIF(ISUB.EQ.7) THEN
8863 C...W+ + W- -> Z0
8864  
8865         ELSEIF(ISUB.EQ.8) THEN
8866 C...W+ + W- -> h0
8867           XH=SH/SHP
8868   230     DO 260 JT=1,2
8869             I=MINT(14+JT)
8870             IA=IABS(I)
8871             IF(IA.LE.10) THEN
8872               RVCKM=VINT(180+I)*PYR(0)
8873               DO 240 J=1,MSTP(1)
8874                 IB=2*J-1+MOD(IA,2)
8875                 IPM=(5-ISIGN(1,I))/2
8876                 IDC=J+MDCY(IA,2)+2
8877                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
8878                 MINT(20+JT)=ISIGN(IB,I)
8879                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
8880                 IF(RVCKM.LE.0D0) GOTO 250
8881   240         CONTINUE
8882             ELSE
8883               IB=2*((IA+1)/2)-1+MOD(IA,2)
8884               MINT(20+JT)=ISIGN(IB,I)
8885             ENDIF
8886   250       PMQ(JT)=PYMASS(MINT(20+JT))
8887   260     CONTINUE
8888           JT=INT(1.5D0+PYR(0))
8889           ZMIN=2D0*PMQ(JT)/SHPR
8890           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
8891      &    (SHPR*(SHPR-PMQ(3-JT)))
8892           ZMAX=MIN(1D0-XH,ZMAX)
8893           IF(ZMIN.GE.ZMAX) GOTO 230
8894           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
8895           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
8896      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
8897           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
8898           IF(SQC1.LT.1D-8) GOTO 230
8899           C1=SQRT(SQC1)
8900           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
8901           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8902           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
8903           Z(3-JT)=1D0-XH/(1D0-Z(JT))
8904           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
8905           IF(SQC1.LT.1D-8) GOTO 230
8906           C1=SQRT(SQC1)
8907           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
8908           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8909           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
8910           PHIR=PARU(2)*PYR(0)
8911           CPHI=COS(PHIR)
8912           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
8913      &    SQRT(1D0-CTHE(2)**2)*CPHI
8914           Z1=2D0-Z(JT)
8915           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
8916           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
8917           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
8918      &    PMQ(3-JT)**2/SHP))
8919           ZMIN=2D0*PMQ(3-JT)/SHPR
8920           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
8921           ZMAX=MIN(1D0-XH,ZMAX)
8922           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
8923           KCC=22
8924           KFRES=25
8925  
8926         ELSEIF(ISUB.EQ.10) THEN
8927 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
8928           IF(MINT(2).EQ.1) THEN
8929             KCC=22
8930           ELSE
8931 C...W exchange: need to mix flavours according to CKM matrix
8932             DO 280 JT=1,2
8933               I=MINT(14+JT)
8934               IA=IABS(I)
8935               IF(IA.LE.10) THEN
8936                 RVCKM=VINT(180+I)*PYR(0)
8937                 DO 270 J=1,MSTP(1)
8938                   IB=2*J-1+MOD(IA,2)
8939                   IPM=(5-ISIGN(1,I))/2
8940                   IDC=J+MDCY(IA,2)+2
8941                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
8942                   MINT(20+JT)=ISIGN(IB,I)
8943                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
8944                   IF(RVCKM.LE.0D0) GOTO 280
8945   270           CONTINUE
8946               ELSE
8947                 IB=2*((IA+1)/2)-1+MOD(IA,2)
8948                 MINT(20+JT)=ISIGN(IB,I)
8949               ENDIF
8950   280       CONTINUE
8951             KCC=22
8952           ENDIF
8953         ENDIF
8954  
8955       ELSEIF(ISUB.LE.20) THEN
8956         IF(ISUB.EQ.11) THEN
8957 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
8958           KCC=MINT(2)
8959           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
8960  
8961         ELSEIF(ISUB.EQ.12) THEN
8962 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
8963           MINT(21)=ISIGN(KFLF,MINT(15))
8964           MINT(22)=-MINT(21)
8965           KCC=4
8966  
8967         ELSEIF(ISUB.EQ.13) THEN
8968 C...f + fbar -> g + g; th arbitrary
8969           MINT(21)=21
8970           MINT(22)=21
8971           KCC=MINT(2)+4
8972  
8973         ELSEIF(ISUB.EQ.14) THEN
8974 C...f + fbar -> g + gamma; th arbitrary
8975           IF(PYR(0).GT.0.5D0) JS=2
8976           MINT(20+JS)=21
8977           MINT(23-JS)=22
8978           KCC=17+JS
8979  
8980         ELSEIF(ISUB.EQ.15) THEN
8981 C...f + fbar -> g + Z0; th arbitrary
8982           IF(PYR(0).GT.0.5D0) JS=2
8983           MINT(20+JS)=21
8984           MINT(23-JS)=23
8985           KCC=17+JS
8986  
8987         ELSEIF(ISUB.EQ.16) THEN
8988 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
8989           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
8990           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
8991           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
8992           MINT(20+JS)=21
8993           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
8994           KCC=17+JS
8995  
8996         ELSEIF(ISUB.EQ.17) THEN
8997 C...f + fbar -> g + h0; th arbitrary
8998           IF(PYR(0).GT.0.5D0) JS=2
8999           MINT(20+JS)=21
9000           MINT(23-JS)=25
9001           KCC=17+JS
9002  
9003         ELSEIF(ISUB.EQ.18) THEN
9004 C...f + fbar -> gamma + gamma; th arbitrary
9005           MINT(21)=22
9006           MINT(22)=22
9007  
9008         ELSEIF(ISUB.EQ.19) THEN
9009 C...f + fbar -> gamma + Z0; th arbitrary
9010           IF(PYR(0).GT.0.5D0) JS=2
9011           MINT(20+JS)=22
9012           MINT(23-JS)=23
9013  
9014         ELSEIF(ISUB.EQ.20) THEN
9015 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
9016 C...(p(fbar')-p(W+))**2
9017           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9018           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9019           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
9020           MINT(20+JS)=22
9021           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
9022         ENDIF
9023  
9024       ELSEIF(ISUB.LE.30) THEN
9025         IF(ISUB.EQ.21) THEN
9026 C...f + fbar -> gamma + h0; th arbitrary
9027           IF(PYR(0).GT.0.5D0) JS=2
9028           MINT(20+JS)=22
9029           MINT(23-JS)=25
9030  
9031         ELSEIF(ISUB.EQ.22) THEN
9032 C...f + fbar -> Z0 + Z0; th arbitrary
9033           MINT(21)=23
9034           MINT(22)=23
9035  
9036         ELSEIF(ISUB.EQ.23) THEN
9037 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
9038           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9039           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9040           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
9041           MINT(20+JS)=23
9042           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
9043  
9044         ELSEIF(ISUB.EQ.24) THEN
9045 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
9046           IF(PYR(0).GT.0.5D0) JS=2
9047           MINT(20+JS)=23
9048           MINT(23-JS)=KFHIGG
9049  
9050         ELSEIF(ISUB.EQ.25) THEN
9051 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
9052           MINT(21)=-ISIGN(24,MINT(15))
9053           MINT(22)=-MINT(21)
9054  
9055         ELSEIF(ISUB.EQ.26) THEN
9056 C...f + fbar' -> W+/- + h0 (or H0, or A0);
9057 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
9058           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9059           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9060           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
9061           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
9062           MINT(23-JS)=KFHIGG
9063  
9064         ELSEIF(ISUB.EQ.27) THEN
9065 C...f + fbar -> h0 + h0
9066  
9067         ELSEIF(ISUB.EQ.28) THEN
9068 C...f + g -> f + g; th = (p(f)-p(f))**2
9069           IF(MINT(15).EQ.21) JS=2
9070           KCC=MINT(2)+6
9071           IF(MINT(15).EQ.21) KCC=KCC+2
9072           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
9073           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
9074  
9075         ELSEIF(ISUB.EQ.29) THEN
9076 C...f + g -> f + gamma; th = (p(f)-p(f))**2
9077           IF(MINT(15).EQ.21) JS=2
9078           MINT(23-JS)=22
9079           KCC=15+JS
9080           KCS=ISIGN(1,MINT(14+JS))
9081  
9082         ELSEIF(ISUB.EQ.30) THEN
9083 C...f + g -> f + Z0; th = (p(f)-p(f))**2
9084           IF(MINT(15).EQ.21) JS=2
9085           MINT(23-JS)=23
9086           KCC=15+JS
9087           KCS=ISIGN(1,MINT(14+JS))
9088         ENDIF
9089  
9090       ELSEIF(ISUB.LE.40) THEN
9091         IF(ISUB.EQ.31) THEN
9092 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
9093           IF(MINT(15).EQ.21) JS=2
9094           I=MINT(14+JS)
9095           IA=IABS(I)
9096           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
9097           RVCKM=VINT(180+I)*PYR(0)
9098           DO 290 J=1,MSTP(1)
9099             IB=2*J-1+MOD(IA,2)
9100             IPM=(5-ISIGN(1,I))/2
9101             IDC=J+MDCY(IA,2)+2
9102             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
9103             MINT(20+JS)=ISIGN(IB,I)
9104             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9105             IF(RVCKM.LE.0D0) GOTO 300
9106   290     CONTINUE
9107   300     KCC=15+JS
9108           KCS=ISIGN(1,MINT(14+JS))
9109  
9110         ELSEIF(ISUB.EQ.32) THEN
9111 C...f + g -> f + h0; th = (p(f)-p(f))**2
9112           IF(MINT(15).EQ.21) JS=2
9113           MINT(23-JS)=25
9114           KCC=15+JS
9115           KCS=ISIGN(1,MINT(14+JS))
9116  
9117         ELSEIF(ISUB.EQ.33) THEN
9118 C...f + gamma -> f + g; th=(p(f)-p(f))**2
9119           IF(MINT(15).EQ.22) JS=2
9120           MINT(23-JS)=21
9121           KCC=24+JS
9122           KCS=ISIGN(1,MINT(14+JS))
9123  
9124         ELSEIF(ISUB.EQ.34) THEN
9125 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
9126           IF(MINT(15).EQ.22) JS=2
9127           KCC=22
9128           KCS=ISIGN(1,MINT(14+JS))
9129  
9130         ELSEIF(ISUB.EQ.35) THEN
9131 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
9132           IF(MINT(15).EQ.22) JS=2
9133           MINT(23-JS)=23
9134           KCC=22
9135  
9136         ELSEIF(ISUB.EQ.36) THEN
9137 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
9138           IF(MINT(15).EQ.22) JS=2
9139           I=MINT(14+JS)
9140           IA=IABS(I)
9141           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
9142           IF(IA.LE.10) THEN
9143             RVCKM=VINT(180+I)*PYR(0)
9144             DO 310 J=1,MSTP(1)
9145               IB=2*J-1+MOD(IA,2)
9146               IPM=(5-ISIGN(1,I))/2
9147               IDC=J+MDCY(IA,2)+2
9148               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
9149               MINT(20+JS)=ISIGN(IB,I)
9150               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9151               IF(RVCKM.LE.0D0) GOTO 320
9152   310       CONTINUE
9153           ELSE
9154             IB=2*((IA+1)/2)-1+MOD(IA,2)
9155             MINT(20+JS)=ISIGN(IB,I)
9156           ENDIF
9157   320     KCC=22
9158  
9159         ELSEIF(ISUB.EQ.37) THEN
9160 C...f + gamma -> f + h0
9161  
9162         ELSEIF(ISUB.EQ.38) THEN
9163 C...f + Z0 -> f + g
9164  
9165         ELSEIF(ISUB.EQ.39) THEN
9166 C...f + Z0 -> f + gamma
9167  
9168         ELSEIF(ISUB.EQ.40) THEN
9169 C...f + Z0 -> f + Z0
9170         ENDIF
9171  
9172       ELSEIF(ISUB.LE.50) THEN
9173         IF(ISUB.EQ.41) THEN
9174 C...f + Z0 -> f' + W+/-
9175  
9176         ELSEIF(ISUB.EQ.42) THEN
9177 C...f + Z0 -> f + h0
9178  
9179         ELSEIF(ISUB.EQ.43) THEN
9180 C...f + W+/- -> f' + g
9181  
9182         ELSEIF(ISUB.EQ.44) THEN
9183 C...f + W+/- -> f' + gamma
9184  
9185         ELSEIF(ISUB.EQ.45) THEN
9186 C...f + W+/- -> f' + Z0
9187  
9188         ELSEIF(ISUB.EQ.46) THEN
9189 C...f + W+/- -> f' + W+/-
9190  
9191         ELSEIF(ISUB.EQ.47) THEN
9192 C...f + W+/- -> f' + h0
9193  
9194         ELSEIF(ISUB.EQ.48) THEN
9195 C...f + h0 -> f + g
9196  
9197         ELSEIF(ISUB.EQ.49) THEN
9198 C...f + h0 -> f + gamma
9199  
9200         ELSEIF(ISUB.EQ.50) THEN
9201 C...f + h0 -> f + Z0
9202         ENDIF
9203  
9204       ELSEIF(ISUB.LE.60) THEN
9205         IF(ISUB.EQ.51) THEN
9206 C...f + h0 -> f' + W+/-
9207  
9208         ELSEIF(ISUB.EQ.52) THEN
9209 C...f + h0 -> f + h0
9210  
9211         ELSEIF(ISUB.EQ.53) THEN
9212 C...g + g -> f + fbar; th arbitrary
9213           KCS=(-1)**INT(1.5D0+PYR(0))
9214           MINT(21)=ISIGN(KFLF,KCS)
9215           MINT(22)=-MINT(21)
9216           KCC=MINT(2)+10
9217  
9218         ELSEIF(ISUB.EQ.54) THEN
9219 C...g + gamma -> f + fbar; th arbitrary
9220           KCS=(-1)**INT(1.5D0+PYR(0))
9221           MINT(21)=ISIGN(KFLF,KCS)
9222           MINT(22)=-MINT(21)
9223           KCC=27
9224           IF(MINT(16).EQ.21) KCC=28
9225  
9226         ELSEIF(ISUB.EQ.55) THEN
9227 C...g + Z0 -> f + fbar
9228  
9229         ELSEIF(ISUB.EQ.56) THEN
9230 C...g + W+/- -> f + fbar'
9231  
9232         ELSEIF(ISUB.EQ.57) THEN
9233 C...g + h0 -> f + fbar
9234  
9235         ELSEIF(ISUB.EQ.58) THEN
9236 C...gamma + gamma -> f + fbar; th arbitrary
9237           KCS=(-1)**INT(1.5D0+PYR(0))
9238           MINT(21)=ISIGN(KFLF,KCS)
9239           MINT(22)=-MINT(21)
9240           KCC=21
9241  
9242         ELSEIF(ISUB.EQ.59) THEN
9243 C...gamma + Z0 -> f + fbar
9244  
9245         ELSEIF(ISUB.EQ.60) THEN
9246 C...gamma + W+/- -> f + fbar'
9247         ENDIF
9248  
9249       ELSEIF(ISUB.LE.70) THEN
9250         IF(ISUB.EQ.61) THEN
9251 C...gamma + h0 -> f + fbar
9252  
9253         ELSEIF(ISUB.EQ.62) THEN
9254 C...Z0 + Z0 -> f + fbar
9255  
9256         ELSEIF(ISUB.EQ.63) THEN
9257 C...Z0 + W+/- -> f + fbar'
9258  
9259         ELSEIF(ISUB.EQ.64) THEN
9260 C...Z0 + h0 -> f + fbar
9261  
9262         ELSEIF(ISUB.EQ.65) THEN
9263 C...W+ + W- -> f + fbar
9264  
9265         ELSEIF(ISUB.EQ.66) THEN
9266 C...W+/- + h0 -> f + fbar'
9267  
9268         ELSEIF(ISUB.EQ.67) THEN
9269 C...h0 + h0 -> f + fbar
9270  
9271         ELSEIF(ISUB.EQ.68) THEN
9272 C...g + g -> g + g; th arbitrary
9273           KCC=MINT(2)+12
9274           KCS=(-1)**INT(1.5D0+PYR(0))
9275  
9276         ELSEIF(ISUB.EQ.69) THEN
9277 C...gamma + gamma -> W+ + W-; th arbitrary
9278           MINT(21)=24
9279           MINT(22)=-24
9280           KCC=21
9281  
9282         ELSEIF(ISUB.EQ.70) THEN
9283 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
9284           IF(MINT(15).EQ.22) MINT(21)=23
9285           IF(MINT(16).EQ.22) MINT(22)=23
9286           KCC=21
9287         ENDIF
9288  
9289       ELSEIF(ISUB.LE.80) THEN
9290         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
9291 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
9292           XH=SH/SHP
9293           MINT(21)=MINT(15)
9294           MINT(22)=MINT(16)
9295           PMQ(1)=PYMASS(MINT(21))
9296           PMQ(2)=PYMASS(MINT(22))
9297   330     JT=INT(1.5D0+PYR(0))
9298           ZMIN=2D0*PMQ(JT)/SHPR
9299           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9300      &    (SHPR*(SHPR-PMQ(3-JT)))
9301           ZMAX=MIN(1D0-XH,ZMAX)
9302           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9303           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9304      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
9305           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9306           IF(SQC1.LT.1D-8) GOTO 330
9307           C1=SQRT(SQC1)
9308           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9309           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9310           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9311           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9312           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9313           IF(SQC1.LT.1D-8) GOTO 330
9314           C1=SQRT(SQC1)
9315           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9316           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9317           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9318           PHIR=PARU(2)*PYR(0)
9319           CPHI=COS(PHIR)
9320           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9321      &    SQRT(1D0-CTHE(2)**2)*CPHI
9322           Z1=2D0-Z(JT)
9323           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9324           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9325           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9326      &    PMQ(3-JT)**2/SHP))
9327           ZMIN=2D0*PMQ(3-JT)/SHPR
9328           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9329           ZMAX=MIN(1D0-XH,ZMAX)
9330           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
9331           KCC=22
9332  
9333         ELSEIF(ISUB.EQ.73) THEN
9334 C...Z0 + W+/- -> Z0 + W+/-
9335           JS=MINT(2)
9336           XH=SH/SHP
9337   340     JT=3-MINT(2)
9338           I=MINT(14+JT)
9339           IA=IABS(I)
9340           IF(IA.LE.10) THEN
9341             RVCKM=VINT(180+I)*PYR(0)
9342             DO 350 J=1,MSTP(1)
9343               IB=2*J-1+MOD(IA,2)
9344               IPM=(5-ISIGN(1,I))/2
9345               IDC=J+MDCY(IA,2)+2
9346               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
9347               MINT(20+JT)=ISIGN(IB,I)
9348               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9349               IF(RVCKM.LE.0D0) GOTO 360
9350   350       CONTINUE
9351           ELSE
9352             IB=2*((IA+1)/2)-1+MOD(IA,2)
9353             MINT(20+JT)=ISIGN(IB,I)
9354           ENDIF
9355   360     PMQ(JT)=PYMASS(MINT(20+JT))
9356           MINT(23-JT)=MINT(17-JT)
9357           PMQ(3-JT)=PYMASS(MINT(23-JT))
9358           JT=INT(1.5D0+PYR(0))
9359           ZMIN=2D0*PMQ(JT)/SHPR
9360           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9361      &    (SHPR*(SHPR-PMQ(3-JT)))
9362           ZMAX=MIN(1D0-XH,ZMAX)
9363           IF(ZMIN.GE.ZMAX) GOTO 340
9364           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9365           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9366      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
9367           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9368           IF(SQC1.LT.1D-8) GOTO 340
9369           C1=SQRT(SQC1)
9370           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9371           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9372           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9373           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9374           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9375           IF(SQC1.LT.1D-8) GOTO 340
9376           C1=SQRT(SQC1)
9377           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9378           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9379           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9380           PHIR=PARU(2)*PYR(0)
9381           CPHI=COS(PHIR)
9382           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9383      &    SQRT(1D0-CTHE(2)**2)*CPHI
9384           Z1=2D0-Z(JT)
9385           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9386           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9387           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9388      &    PMQ(3-JT)**2/SHP))
9389           ZMIN=2D0*PMQ(3-JT)/SHPR
9390           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9391           ZMAX=MIN(1D0-XH,ZMAX)
9392           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
9393           KCC=22
9394  
9395         ELSEIF(ISUB.EQ.74) THEN
9396 C...Z0 + h0 -> Z0 + h0
9397  
9398         ELSEIF(ISUB.EQ.75) THEN
9399 C...W+ + W- -> gamma + gamma
9400  
9401         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
9402 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
9403           XH=SH/SHP
9404   370     DO 400 JT=1,2
9405             I=MINT(14+JT)
9406             IA=IABS(I)
9407             IF(IA.LE.10) THEN
9408               RVCKM=VINT(180+I)*PYR(0)
9409               DO 380 J=1,MSTP(1)
9410                 IB=2*J-1+MOD(IA,2)
9411                 IPM=(5-ISIGN(1,I))/2
9412                 IDC=J+MDCY(IA,2)+2
9413                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
9414                 MINT(20+JT)=ISIGN(IB,I)
9415                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9416                 IF(RVCKM.LE.0D0) GOTO 390
9417   380         CONTINUE
9418             ELSE
9419               IB=2*((IA+1)/2)-1+MOD(IA,2)
9420               MINT(20+JT)=ISIGN(IB,I)
9421             ENDIF
9422   390       PMQ(JT)=PYMASS(MINT(20+JT))
9423   400     CONTINUE
9424           JT=INT(1.5D0+PYR(0))
9425           ZMIN=2D0*PMQ(JT)/SHPR
9426           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9427      &    (SHPR*(SHPR-PMQ(3-JT)))
9428           ZMAX=MIN(1D0-XH,ZMAX)
9429           IF(ZMIN.GE.ZMAX) GOTO 370
9430           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9431           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9432      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
9433           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9434           IF(SQC1.LT.1D-8) GOTO 370
9435           C1=SQRT(SQC1)
9436           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9437           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9438           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9439           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9440           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9441           IF(SQC1.LT.1D-8) GOTO 370
9442           C1=SQRT(SQC1)
9443           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9444           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9445           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9446           PHIR=PARU(2)*PYR(0)
9447           CPHI=COS(PHIR)
9448           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9449      &    SQRT(1D0-CTHE(2)**2)*CPHI
9450           Z1=2D0-Z(JT)
9451           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9452           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9453           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9454      &    PMQ(3-JT)**2/SHP))
9455           ZMIN=2D0*PMQ(3-JT)/SHPR
9456           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9457           ZMAX=MIN(1D0-XH,ZMAX)
9458           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
9459           KCC=22
9460  
9461         ELSEIF(ISUB.EQ.78) THEN
9462 C...W+/- + h0 -> W+/- + h0
9463  
9464         ELSEIF(ISUB.EQ.79) THEN
9465 C...h0 + h0 -> h0 + h0
9466  
9467         ELSEIF(ISUB.EQ.80) THEN
9468 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
9469           IF(MINT(15).EQ.22) JS=2
9470           I=MINT(14+JS)
9471           IA=IABS(I)
9472           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
9473           IB=3-IA
9474           MINT(20+JS)=ISIGN(IB,I)
9475           KCC=22
9476         ENDIF
9477  
9478       ELSEIF(ISUB.LE.90) THEN
9479         IF(ISUB.EQ.81) THEN
9480 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
9481           MINT(21)=ISIGN(MINT(55),MINT(15))
9482           MINT(22)=-MINT(21)
9483           KCC=4
9484  
9485         ELSEIF(ISUB.EQ.82) THEN
9486 C...g + g -> Q + Qbar; th arbitrary
9487           KCS=(-1)**INT(1.5D0+PYR(0))
9488           MINT(21)=ISIGN(MINT(55),KCS)
9489           MINT(22)=-MINT(21)
9490           KCC=MINT(2)+10
9491  
9492         ELSEIF(ISUB.EQ.83) THEN
9493 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
9494           KFOLD=MINT(16)
9495           IF(MINT(2).EQ.2) KFOLD=MINT(15)
9496           KFAOLD=IABS(KFOLD)
9497           IF(KFAOLD.GT.10) THEN
9498             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
9499           ELSE
9500             RCKM=VINT(180+KFOLD)*PYR(0)
9501             IPM=(5-ISIGN(1,KFOLD))/2
9502             KFANEW=-MOD(KFAOLD+1,2)
9503   410       KFANEW=KFANEW+2
9504             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
9505             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
9506               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
9507      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
9508               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
9509      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
9510             ENDIF
9511             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
9512           ENDIF
9513           IF(MINT(2).EQ.1) THEN
9514             MINT(21)=ISIGN(MINT(55),MINT(15))
9515             MINT(22)=ISIGN(KFANEW,MINT(16))
9516           ELSE
9517             MINT(21)=ISIGN(KFANEW,MINT(15))
9518             MINT(22)=ISIGN(MINT(55),MINT(16))
9519             JS=2
9520           ENDIF
9521           KCC=22
9522  
9523         ELSEIF(ISUB.EQ.84) THEN
9524 C...g + gamma -> Q + Qbar; th arbitary
9525           KCS=(-1)**INT(1.5D0+PYR(0))
9526           MINT(21)=ISIGN(MINT(55),KCS)
9527           MINT(22)=-MINT(21)
9528           KCC=27
9529           IF(MINT(16).EQ.21) KCC=28
9530  
9531         ELSEIF(ISUB.EQ.85) THEN
9532 C...gamma + gamma -> F + Fbar; th arbitary
9533           KCS=(-1)**INT(1.5D0+PYR(0))
9534           MINT(21)=ISIGN(MINT(56),KCS)
9535           MINT(22)=-MINT(21)
9536           KCC=21
9537  
9538         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
9539 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
9540           MINT(21)=KFPR(ISUB,1)
9541           MINT(22)=KFPR(ISUB,2)
9542           KCC=24
9543           KCS=(-1)**INT(1.5D0+PYR(0))
9544         ENDIF
9545  
9546       ELSEIF(ISUB.LE.100) THEN
9547         IF(ISUB.EQ.95) THEN
9548 C...Low-pT ( = energyless g + g -> g + g)
9549           KCC=MINT(2)+12
9550           KCS=(-1)**INT(1.5D0+PYR(0))
9551  
9552         ELSEIF(ISUB.EQ.96) THEN
9553 C...Multiple interactions (should be reassigned to QCD process)
9554         ENDIF
9555  
9556       ELSEIF(ISUB.LE.110) THEN
9557         IF(ISUB.EQ.101) THEN
9558 C...g + g -> gamma*/Z0
9559           KCC=21
9560           KFRES=22
9561  
9562         ELSEIF(ISUB.EQ.102) THEN
9563 C...g + g -> h0 (or H0, or A0)
9564           KCC=21
9565           KFRES=KFHIGG
9566  
9567         ELSEIF(ISUB.EQ.103) THEN
9568 C...gamma + gamma -> h0 (or H0, or A0)
9569           KCC=21
9570           KFRES=KFHIGG
9571  
9572         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
9573 C...g + g -> chi_0c or chi_2c.
9574           KCC=21
9575           KFRES=KFPR(ISUB,1)
9576  
9577         ELSEIF(ISUB.EQ.106) THEN
9578 C...g + g -> J/Psi + gamma
9579           MINT(21)=KFPR(ISUB,1)
9580           MINT(22)=KFPR(ISUB,2)
9581           KCC=21
9582  
9583         ELSEIF(ISUB.EQ.107) THEN
9584 C...g + gamma -> J/Psi + g
9585           MINT(21)=KFPR(ISUB,1)
9586           MINT(22)=KFPR(ISUB,2)
9587           KCC=22
9588           IF(MINT(16).EQ.22) KCC=33
9589  
9590         ELSEIF(ISUB.EQ.108) THEN
9591 C...gamma + gamma -> J/Psi + gamma
9592           MINT(21)=KFPR(ISUB,1)
9593           MINT(22)=KFPR(ISUB,2)
9594  
9595         ELSEIF(ISUB.EQ.110) THEN
9596 C...f + fbar -> gamma + h0; th arbitrary
9597           IF(PYR(0).GT.0.5D0) JS=2
9598           MINT(20+JS)=22
9599           MINT(23-JS)=KFHIGG
9600         ENDIF
9601  
9602       ELSEIF(ISUB.LE.120) THEN
9603         IF(ISUB.EQ.111) THEN
9604 C...f + fbar -> g + h0; th arbitrary
9605           IF(PYR(0).GT.0.5D0) JS=2
9606           MINT(20+JS)=21
9607           MINT(23-JS)=KFHIGG
9608           KCC=17+JS
9609  
9610         ELSEIF(ISUB.EQ.112) THEN
9611 C...f + g -> f + h0; th = (p(f) - p(f))**2
9612           IF(MINT(15).EQ.21) JS=2
9613           MINT(23-JS)=KFHIGG
9614           KCC=15+JS
9615           KCS=ISIGN(1,MINT(14+JS))
9616  
9617         ELSEIF(ISUB.EQ.113) THEN
9618 C...g + g -> g + h0; th arbitrary
9619           IF(PYR(0).GT.0.5D0) JS=2
9620           MINT(23-JS)=KFHIGG
9621           KCC=22+JS
9622           KCS=(-1)**INT(1.5D0+PYR(0))
9623  
9624         ELSEIF(ISUB.EQ.114) THEN
9625 C...g + g -> gamma + gamma; th arbitrary
9626           IF(PYR(0).GT.0.5D0) JS=2
9627           MINT(21)=22
9628           MINT(22)=22
9629           KCC=21
9630  
9631         ELSEIF(ISUB.EQ.115) THEN
9632 C...g + g -> g + gamma; th arbitrary
9633           IF(PYR(0).GT.0.5D0) JS=2
9634           MINT(23-JS)=22
9635           KCC=22+JS
9636           KCS=(-1)**INT(1.5D0+PYR(0))
9637  
9638         ELSEIF(ISUB.EQ.116) THEN
9639 C...g + g -> gamma + Z0
9640  
9641         ELSEIF(ISUB.EQ.117) THEN
9642 C...g + g -> Z0 + Z0
9643  
9644         ELSEIF(ISUB.EQ.118) THEN
9645 C...g + g -> W+ + W-
9646         ENDIF
9647  
9648       ELSEIF(ISUB.LE.140) THEN
9649         IF(ISUB.EQ.121) THEN
9650 C...g + g -> Q + Qbar + h0
9651           KCS=(-1)**INT(1.5D0+PYR(0))
9652           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
9653           MINT(22)=-MINT(21)
9654           KCC=11+INT(0.5D0+PYR(0))
9655           KFRES=KFHIGG
9656  
9657         ELSEIF(ISUB.EQ.122) THEN
9658 C...q + qbar -> Q + Qbar + h0
9659           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
9660           MINT(22)=-MINT(21)
9661           KCC=4
9662           KFRES=KFHIGG
9663  
9664         ELSEIF(ISUB.EQ.123) THEN
9665 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
9666 C...inner process)
9667           KCC=22
9668           KFRES=KFHIGG
9669  
9670         ELSEIF(ISUB.EQ.124) THEN
9671 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
9672 C...inner process)
9673           DO 430 JT=1,2
9674             I=MINT(14+JT)
9675             IA=IABS(I)
9676             IF(IA.LE.10) THEN
9677               RVCKM=VINT(180+I)*PYR(0)
9678               DO 420 J=1,MSTP(1)
9679                 IB=2*J-1+MOD(IA,2)
9680                 IPM=(5-ISIGN(1,I))/2
9681                 IDC=J+MDCY(IA,2)+2
9682                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
9683                 MINT(20+JT)=ISIGN(IB,I)
9684                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9685                 IF(RVCKM.LE.0D0) GOTO 430
9686   420         CONTINUE
9687             ELSE
9688               IB=2*((IA+1)/2)-1+MOD(IA,2)
9689               MINT(20+JT)=ISIGN(IB,I)
9690             ENDIF
9691   430     CONTINUE
9692           KCC=22
9693           KFRES=KFHIGG
9694  
9695         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
9696 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
9697           IF(MINT(15).EQ.22) JS=2
9698           MINT(23-JS)=21
9699           KCC=24+JS
9700           KCS=ISIGN(1,MINT(14+JS))
9701  
9702         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
9703 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
9704           IF(MINT(15).EQ.22) JS=2
9705           KCC=22
9706           KCS=ISIGN(1,MINT(14+JS))
9707  
9708         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
9709 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
9710           KCS=(-1)**INT(1.5D0+PYR(0))
9711           MINT(21)=ISIGN(KFLF,KCS)
9712           MINT(22)=-MINT(21)
9713           KCC=27
9714           IF(MINT(16).EQ.21) KCC=28
9715  
9716         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
9717 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
9718           KCS=(-1)**INT(1.5D0+PYR(0))
9719           MINT(21)=ISIGN(KFLF,KCS)
9720           MINT(22)=-MINT(21)
9721           KCC=21
9722  
9723         ENDIF
9724  
9725       ELSEIF(ISUB.LE.160) THEN
9726         IF(ISUB.EQ.141) THEN
9727 C...f + fbar -> gamma*/Z0/Z'0
9728           KFRES=32
9729  
9730         ELSEIF(ISUB.EQ.142) THEN
9731 C...f + fbar' -> W'+/-
9732           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9733           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9734           KFRES=ISIGN(34,KCH1+KCH2)
9735  
9736         ELSEIF(ISUB.EQ.143) THEN
9737 C...f + fbar' -> H+/-
9738           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9739           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9740           KFRES=ISIGN(37,KCH1+KCH2)
9741  
9742         ELSEIF(ISUB.EQ.144) THEN
9743 C...f + fbar' -> R
9744           KFRES=ISIGN(41,MINT(15)+MINT(16))
9745  
9746         ELSEIF(ISUB.EQ.145) THEN
9747 C...q + l -> LQ (leptoquark)
9748           IF(IABS(MINT(16)).LE.8) JS=2
9749           KFRES=ISIGN(42,MINT(14+JS))
9750           KCC=28+JS
9751           KCS=ISIGN(1,MINT(14+JS))
9752  
9753         ELSEIF(ISUB.EQ.146) THEN
9754 C...e + gamma -> e* (excited lepton)
9755           IF(MINT(15).EQ.22) JS=2
9756           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
9757           KCC=22
9758  
9759         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
9760 C...q + g -> q* (excited quark)
9761           IF(MINT(15).EQ.21) JS=2
9762           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
9763           KCC=30+JS
9764           KCS=ISIGN(1,MINT(14+JS))
9765  
9766         ELSEIF(ISUB.EQ.149) THEN
9767 C...g + g -> eta_tc
9768           KFRES=KTECHN+331
9769           KCC=23
9770           KCS=(-1)**INT(1.5D0+PYR(0))
9771         ENDIF
9772  
9773       ELSEIF(ISUB.LE.200) THEN
9774         IF(ISUB.EQ.161) THEN
9775 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
9776           IF(MINT(15).EQ.21) JS=2
9777           I=MINT(14+JS)
9778           IA=IABS(I)
9779           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
9780           IB=IA+MOD(IA,2)-MOD(IA+1,2)
9781           MINT(20+JS)=ISIGN(IB,I)
9782           KCC=15+JS
9783           KCS=ISIGN(1,MINT(14+JS))
9784  
9785         ELSEIF(ISUB.EQ.162) THEN
9786 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
9787           IF(MINT(15).EQ.21) JS=2
9788           MINT(20+JS)=ISIGN(42,MINT(14+JS))
9789           KFLQL=KFDP(MDCY(42,2),2)
9790           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
9791           KCC=15+JS
9792           KCS=ISIGN(1,MINT(14+JS))
9793  
9794         ELSEIF(ISUB.EQ.163) THEN
9795 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
9796           KCS=(-1)**INT(1.5D0+PYR(0))
9797           MINT(21)=ISIGN(42,KCS)
9798           MINT(22)=-MINT(21)
9799           KCC=MINT(2)+10
9800  
9801         ELSEIF(ISUB.EQ.164) THEN
9802 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
9803           MINT(21)=ISIGN(42,MINT(15))
9804           MINT(22)=-MINT(21)
9805           KCC=4
9806  
9807         ELSEIF(ISUB.EQ.165) THEN
9808 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
9809           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9810           MINT(22)=-MINT(21)
9811  
9812         ELSEIF(ISUB.EQ.166) THEN
9813 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
9814           IF(MOD(MINT(15),2).EQ.0) THEN
9815             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
9816             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
9817           ELSE
9818             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9819             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
9820           ENDIF
9821  
9822         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
9823 C...q + q' -> q" + q* (excited quark)
9824           KFQSTR=KFPR(ISUB,2)
9825           KFQEXC=MOD(KFQSTR,KEXCIT)
9826           JS=MINT(2)
9827           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
9828           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
9829      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
9830           KCC=22
9831           JS=3-JS
9832  
9833         ELSEIF(ISUB.EQ.169) THEN
9834 C...q + qbar -> e + e* (excited lepton)
9835           KFQSTR=KFPR(ISUB,2)
9836           KFQEXC=MOD(KFQSTR,KEXCIT)
9837           JS=MINT(2)
9838           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
9839           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
9840           JS=3-JS
9841  
9842         ELSEIF(ISUB.EQ.191) THEN
9843 C...f + fbar -> rho_tc0.
9844           KFRES=KTECHN+113
9845  
9846         ELSEIF(ISUB.EQ.192) THEN
9847 C...f + fbar' -> rho_tc+/-
9848           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9849           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9850           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
9851  
9852         ELSEIF(ISUB.EQ.193) THEN
9853 C...f + fbar -> omega_tc0.
9854           KFRES=KTECHN+223
9855  
9856         ELSEIF(ISUB.EQ.194) THEN
9857 C...f + fbar -> f' + fbar' via mixture of s-channel
9858 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
9859           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9860           MINT(22)=-MINT(21)
9861  
9862         ELSEIF(ISUB.EQ.195) THEN
9863 C...f + fbar' -> f'' + fbar''' via s-channel
9864 C...rho_tc+ th=(p(f)-p(f'))**2
9865 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
9866           IF(MOD(MINT(15),2).EQ.0) THEN
9867             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
9868             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
9869           ELSE
9870             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9871             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
9872           ENDIF
9873         ENDIF
9874  
9875 CMRENNA++
9876       ELSEIF(ISUB.LE.215) THEN
9877         IF(ISUB.EQ.201) THEN
9878 C...f + fbar -> ~e_L + ~e_Lbar
9879           MINT(21)=ISIGN(KSUSY1+11,KCS)
9880           MINT(22)=-MINT(21)
9881  
9882         ELSEIF(ISUB.EQ.202) THEN
9883 C...f + fbar -> ~e_R + ~e_Rbar
9884           MINT(21)=ISIGN(KSUSY2+11,KCS)
9885           MINT(22)=-MINT(21)
9886  
9887         ELSEIF(ISUB.EQ.203) THEN
9888 C...f + fbar -> ~e_L + ~e_Rbar
9889           IF(MINT(15).LT.0) JS=2
9890           IF(MINT(2).EQ.1) THEN
9891             MINT(20+JS)=KFPR(ISUB,1)
9892             MINT(23-JS)=-KFPR(ISUB,2)
9893           ELSE
9894             MINT(20+JS)=-KFPR(ISUB,1)
9895             MINT(23-JS)=KFPR(ISUB,2)
9896           ENDIF
9897  
9898         ELSEIF(ISUB.EQ.204) THEN
9899 C...f + fbar -> ~mu_L + ~mu_Lbar
9900           MINT(21)=ISIGN(KSUSY1+13,KCS)
9901           MINT(22)=-MINT(21)
9902  
9903         ELSEIF(ISUB.EQ.205) THEN
9904 C...f + fbar -> ~mu_R + ~mu_Rbar
9905           MINT(21)=ISIGN(KSUSY2+13,KCS)
9906           MINT(22)=-MINT(21)
9907  
9908         ELSEIF(ISUB.EQ.206) THEN
9909 C...f + fbar -> ~mu_L + ~mu_Rbar
9910           IF(MINT(15).LT.0) JS=2
9911           IF(MINT(2).EQ.1) THEN
9912             MINT(20+JS)=KFPR(ISUB,1)
9913             MINT(23-JS)=-KFPR(ISUB,2)
9914           ELSE
9915             MINT(20+JS)=-KFPR(ISUB,1)
9916             MINT(23-JS)=KFPR(ISUB,2)
9917           ENDIF
9918  
9919         ELSEIF(ISUB.EQ.207) THEN
9920 C...f + fbar -> ~tau_1 + ~tau_1bar
9921           MINT(21)=ISIGN(KSUSY1+15,KCS)
9922           MINT(22)=-MINT(21)
9923  
9924         ELSEIF(ISUB.EQ.208) THEN
9925 C...f + fbar -> ~tau_2 + ~tau_2bar
9926           MINT(21)=ISIGN(KSUSY2+15,KCS)
9927           MINT(22)=-MINT(21)
9928  
9929         ELSEIF(ISUB.EQ.209) THEN
9930 C...f + fbar -> ~tau_1 + ~tau_2bar
9931           IF(MINT(15).LT.0) JS=2
9932           IF(MINT(2).EQ.1) THEN
9933             MINT(20+JS)=KFPR(ISUB,1)
9934             MINT(23-JS)=-KFPR(ISUB,2)
9935           ELSE
9936             MINT(20+JS)=-KFPR(ISUB,1)
9937             MINT(23-JS)=KFPR(ISUB,2)
9938           ENDIF
9939  
9940         ELSEIF(ISUB.EQ.210) THEN
9941 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
9942           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9943           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9944           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
9945           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
9946  
9947         ELSEIF(ISUB.EQ.211) THEN
9948 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
9949           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9950           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9951           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
9952           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
9953  
9954         ELSEIF(ISUB.EQ.212) THEN
9955 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
9956           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9957           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9958           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
9959           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
9960  
9961         ELSEIF(ISUB.EQ.213) THEN
9962 C...f + fbar -> ~nul + ~nulbar
9963           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
9964           MINT(22)=-MINT(21)
9965  
9966         ELSEIF(ISUB.EQ.214) THEN
9967 C...f + fbar -> ~nutau + ~nutaubar
9968           MINT(21)=ISIGN(KSUSY1+16,KCS)
9969           MINT(22)=-MINT(21)
9970         ENDIF
9971  
9972       ELSEIF(ISUB.LE.225) THEN
9973         IF(ISUB.EQ.216) THEN
9974 C...f + fbar -> ~chi01 + ~chi01
9975           MINT(21)=KSUSY1+22
9976           MINT(22)=KSUSY1+22
9977  
9978         ELSEIF(ISUB.EQ.217) THEN
9979 C...f + fbar -> ~chi02 + ~chi02
9980           MINT(21)=KSUSY1+23
9981           MINT(22)=KSUSY1+23
9982  
9983         ELSEIF(ISUB.EQ.218 ) THEN
9984 C...f + fbar -> ~chi03 + ~chi03
9985           MINT(21)=KSUSY1+25
9986           MINT(22)=KSUSY1+25
9987  
9988         ELSEIF(ISUB.EQ.219 ) THEN
9989 C...f + fbar -> ~chi04 + ~chi04
9990           MINT(21)=KSUSY1+35
9991           MINT(22)=KSUSY1+35
9992  
9993         ELSEIF(ISUB.EQ.220 ) THEN
9994 C...f + fbar -> ~chi01 + ~chi02
9995           IF(MINT(15).LT.0) JS=2
9996 C          IF(PYR(0).GT.0.5D0) JS=2
9997           MINT(20+JS)=KSUSY1+22
9998           MINT(23-JS)=KSUSY1+23
9999  
10000         ELSEIF(ISUB.EQ.221 ) THEN
10001 C...f + fbar -> ~chi01 + ~chi03
10002           IF(MINT(15).LT.0) JS=2
10003 C          IF(PYR(0).GT.0.5D0) JS=2
10004           MINT(20+JS)=KSUSY1+22
10005           MINT(23-JS)=KSUSY1+25
10006  
10007         ELSEIF(ISUB.EQ.222) THEN
10008 C...f + fbar -> ~chi01 + ~chi04
10009           IF(MINT(15).LT.0) JS=2
10010 C          IF(PYR(0).GT.0.5D0) JS=2
10011           MINT(20+JS)=KSUSY1+22
10012           MINT(23-JS)=KSUSY1+35
10013  
10014         ELSEIF(ISUB.EQ.223) THEN
10015 C...f + fbar -> ~chi02 + ~chi03
10016           IF(MINT(15).LT.0) JS=2
10017 C          IF(PYR(0).GT.0.5D0) JS=2
10018           MINT(20+JS)=KSUSY1+23
10019           MINT(23-JS)=KSUSY1+25
10020  
10021         ELSEIF(ISUB.EQ.224) THEN
10022 C...f + fbar -> ~chi02 + ~chi04
10023           IF(MINT(15).LT.0) JS=2
10024 C          IF(PYR(0).GT.0.5D0) JS=2
10025           MINT(20+JS)=KSUSY1+23
10026           MINT(23-JS)=KSUSY1+35
10027  
10028         ELSEIF(ISUB.EQ.225) THEN
10029 C...f + fbar -> ~chi03 + ~chi04
10030           IF(MINT(15).LT.0) JS=2
10031 C          IF(PYR(0).GT.0.5D0) JS=2
10032           MINT(20+JS)=KSUSY1+25
10033           MINT(23-JS)=KSUSY1+35
10034         ENDIF
10035  
10036       ELSEIF(ISUB.LE.236) THEN
10037         IF(ISUB.EQ.226) THEN
10038 C...f + fbar -> ~chi+-1 + ~chi-+1
10039 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
10040           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10041           MINT(21)=ISIGN(KSUSY1+24,KCH1)
10042           MINT(22)=-MINT(21)
10043  
10044         ELSEIF(ISUB.EQ.227) THEN
10045 C...f + fbar -> ~chi+-2 + ~chi-+2
10046           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10047           MINT(21)=ISIGN(KSUSY1+37,KCH1)
10048           MINT(22)=-MINT(21)
10049  
10050         ELSEIF(ISUB.EQ.228) THEN
10051 C...f + fbar -> ~chi+-1 + ~chi-+2
10052 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
10053 C...js=1 if pyr<.5, js=2 if pyr>.5
10054 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
10055 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
10056 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
10057 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
10058           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10059           KCH2=INT(1-KCH1)/2
10060           IF(MINT(2).EQ.1) THEN
10061             MINT(21)= ISIGN(KSUSY1+24,KCH1)
10062             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
10063 c            IF(KCH2.EQ.0) JS=2
10064           ELSE
10065             MINT(21)= ISIGN(KSUSY1+37,KCH1)
10066             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
10067             JS=2
10068 c            IF(KCH2.EQ.1) JS=2
10069           ENDIF
10070  
10071         ELSEIF(ISUB.EQ.229) THEN
10072 C...q + qbar' -> ~chi01 + ~chi+-1
10073 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
10074           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10075           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10076 C...CHECK THIS
10077           IF(MOD(MINT(15),2).EQ.0) JS=2
10078           MINT(20+JS)=KSUSY1+22
10079           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10080  
10081         ELSEIF(ISUB.EQ.230) THEN
10082 C...q + qbar' -> ~chi02 + ~chi+-1
10083           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10084           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10085           IF(MOD(MINT(15),2).EQ.0) JS=2
10086           MINT(20+JS)=KSUSY1+23
10087           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10088  
10089         ELSEIF(ISUB.EQ.231) THEN
10090 C...q + qbar' -> ~chi03 + ~chi+-1
10091           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10092           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10093           IF(MOD(MINT(15),2).EQ.0) JS=2
10094           MINT(20+JS)=KSUSY1+25
10095           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10096  
10097         ELSEIF(ISUB.EQ.232) THEN
10098 C...q + qbar' -> ~chi04 + ~chi+-1
10099           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10100           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10101           IF(MOD(MINT(15),2).EQ.0) JS=2
10102           MINT(20+JS)=KSUSY1+35
10103           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10104  
10105         ELSEIF(ISUB.EQ.233) THEN
10106 C...q + qbar' -> ~chi01 + ~chi+-2
10107           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10108           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10109           IF(MOD(MINT(15),2).EQ.0) JS=2
10110           MINT(20+JS)=KSUSY1+22
10111           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10112  
10113         ELSEIF(ISUB.EQ.234) THEN
10114 C...q + qbar' -> ~chi02 + ~chi+-2
10115           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10116           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10117           IF(MOD(MINT(15),2).EQ.0) JS=2
10118           MINT(20+JS)=KSUSY1+23
10119           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10120  
10121         ELSEIF(ISUB.EQ.235) THEN
10122 C...q + qbar' -> ~chi03 + ~chi+-2
10123           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10124           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10125           IF(MOD(MINT(15),2).EQ.0) JS=2
10126           MINT(20+JS)=KSUSY1+25
10127           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10128  
10129         ELSEIF(ISUB.EQ.236) THEN
10130 C...q + qbar' -> ~chi04 + ~chi+-2
10131           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10132           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10133           IF(MOD(MINT(15),2).EQ.0) JS=2
10134           MINT(20+JS)=KSUSY1+35
10135           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10136         ENDIF
10137  
10138       ELSEIF(ISUB.LE.245) THEN
10139         IF(ISUB.EQ.237) THEN
10140 C...q + qbar -> ~chi01 + ~g
10141 C...th arbitrary
10142           IF(PYR(0).GT.0.5D0) JS=2
10143           MINT(20+JS)=KSUSY1+21
10144           MINT(23-JS)=KSUSY1+22
10145           KCC=17+JS
10146  
10147         ELSEIF(ISUB.EQ.238) THEN
10148 C...q + qbar -> ~chi02 + ~g
10149 C...th arbitrary
10150           IF(PYR(0).GT.0.5D0) JS=2
10151           MINT(20+JS)=KSUSY1+21
10152           MINT(23-JS)=KSUSY1+23
10153           KCC=17+JS
10154  
10155         ELSEIF(ISUB.EQ.239) THEN
10156 C...q + qbar -> ~chi03 + ~g
10157 C...th arbitrary
10158           IF(PYR(0).GT.0.5D0) JS=2
10159           MINT(20+JS)=KSUSY1+21
10160           MINT(23-JS)=KSUSY1+25
10161           KCC=17+JS
10162  
10163         ELSEIF(ISUB.EQ.240) THEN
10164 C...q + qbar -> ~chi04 + ~g
10165 C...th arbitrary
10166           IF(PYR(0).GT.0.5D0) JS=2
10167           MINT(20+JS)=KSUSY1+21
10168           MINT(23-JS)=KSUSY1+35
10169           KCC=17+JS
10170  
10171         ELSEIF(ISUB.EQ.241) THEN
10172 C...q + qbar' -> ~chi+-1 + ~g
10173 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
10174 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
10175 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
10176 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
10177 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
10178           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10179           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10180           JS=1
10181           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10182           MINT(20+JS)=KSUSY1+21
10183           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10184           KCC=17+JS
10185  
10186         ELSEIF(ISUB.EQ.242) THEN
10187 C...q + qbar' -> ~chi+-2 + ~g
10188 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
10189 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
10190 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
10191 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
10192 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
10193           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10194           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10195           JS=1
10196           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10197           MINT(20+JS)=KSUSY1+21
10198           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10199           KCC=17+JS
10200  
10201         ELSEIF(ISUB.EQ.243) THEN
10202 C...q + qbar -> ~g + ~g ; th arbitrary
10203           MINT(21)=KSUSY1+21
10204           MINT(22)=KSUSY1+21
10205           KCC=MINT(2)+4
10206  
10207         ELSEIF(ISUB.EQ.244) THEN
10208 C...g + g -> ~g + ~g ; th arbitrary
10209           KCC=MINT(2)+12
10210           KCS=(-1)**INT(1.5D0+PYR(0))
10211           MINT(21)=KSUSY1+21
10212           MINT(22)=KSUSY1+21
10213         ENDIF
10214  
10215       ELSEIF(ISUB.LE.260) THEN
10216         IF(ISUB.EQ.246) THEN
10217 C...qj + g -> ~qj_L + ~chi01
10218           IF(MINT(15).EQ.21) JS=2
10219           I=MINT(14+JS)
10220           IA=IABS(I)
10221           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10222           MINT(23-JS)=KSUSY1+22
10223           KCC=15+JS
10224           KCS=ISIGN(1,MINT(14+JS))
10225  
10226         ELSEIF(ISUB.EQ.247) THEN
10227 C...qj + g -> ~qj_R + ~chi01
10228           IF(MINT(15).EQ.21) JS=2
10229           I=MINT(14+JS)
10230           IA=IABS(I)
10231           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10232           MINT(23-JS)=KSUSY1+22
10233           KCC=15+JS
10234           KCS=ISIGN(1,MINT(14+JS))
10235  
10236         ELSEIF(ISUB.EQ.248) THEN
10237 C...qj + g -> ~qj_L + ~chi02
10238           IF(MINT(15).EQ.21) JS=2
10239           I=MINT(14+JS)
10240           IA=IABS(I)
10241           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10242           MINT(23-JS)=KSUSY1+23
10243           KCC=15+JS
10244           KCS=ISIGN(1,MINT(14+JS))
10245  
10246         ELSEIF(ISUB.EQ.249) THEN
10247 C...qj + g -> ~qj_R + ~chi02
10248           IF(MINT(15).EQ.21) JS=2
10249           I=MINT(14+JS)
10250           IA=IABS(I)
10251           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10252           MINT(23-JS)=KSUSY1+23
10253           KCC=15+JS
10254           KCS=ISIGN(1,MINT(14+JS))
10255  
10256         ELSEIF(ISUB.EQ.250) THEN
10257 C...qj + g -> ~qj_L + ~chi03
10258           IF(MINT(15).EQ.21) JS=2
10259           I=MINT(14+JS)
10260           IA=IABS(I)
10261           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10262           MINT(23-JS)=KSUSY1+25
10263           KCC=15+JS
10264           KCS=ISIGN(1,MINT(14+JS))
10265  
10266         ELSEIF(ISUB.EQ.251) THEN
10267 C...qj + g -> ~qj_R + ~chi03
10268           IF(MINT(15).EQ.21) JS=2
10269           I=MINT(14+JS)
10270           IA=IABS(I)
10271           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10272           MINT(23-JS)=KSUSY1+25
10273           KCC=15+JS
10274           KCS=ISIGN(1,MINT(14+JS))
10275  
10276         ELSEIF(ISUB.EQ.252) THEN
10277 C...qj + g -> ~qj_L + ~chi04
10278           IF(MINT(15).EQ.21) JS=2
10279           I=MINT(14+JS)
10280           IA=IABS(I)
10281           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10282           MINT(23-JS)=KSUSY1+35
10283           KCC=15+JS
10284           KCS=ISIGN(1,MINT(14+JS))
10285  
10286         ELSEIF(ISUB.EQ.253) THEN
10287 C...qj + g -> ~qj_R + ~chi04
10288           IF(MINT(15).EQ.21) JS=2
10289           I=MINT(14+JS)
10290           IA=IABS(I)
10291           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10292           MINT(23-JS)=KSUSY1+35
10293           KCC=15+JS
10294           KCS=ISIGN(1,MINT(14+JS))
10295  
10296         ELSEIF(ISUB.EQ.254) THEN
10297 C...qj + g -> ~qk_L + ~chi+-1
10298           IF(MINT(15).EQ.21) JS=2
10299           I=MINT(14+JS)
10300           IA=IABS(I)
10301           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
10302           IB=-IA+INT((IA+1)/2)*4-1
10303           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
10304           KCC=15+JS
10305           KCS=ISIGN(1,MINT(14+JS))
10306  
10307         ELSEIF(ISUB.EQ.255) THEN
10308 C...qj + g -> ~qk_L + ~chi+-1
10309           IF(MINT(15).EQ.21) JS=2
10310           I=MINT(14+JS)
10311           IA=IABS(I)
10312           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
10313           IB=-IA+INT((IA+1)/2)*4-1
10314           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
10315           KCC=15+JS
10316           KCS=ISIGN(1,MINT(14+JS))
10317  
10318         ELSEIF(ISUB.EQ.256) THEN
10319 C...qj + g -> ~qk_L + ~chi+-2
10320           IF(MINT(15).EQ.21) JS=2
10321           I=MINT(14+JS)
10322           IA=IABS(I)
10323           IB=-IA+INT((IA+1)/2)*4-1
10324           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
10325           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
10326           KCC=15+JS
10327           KCS=ISIGN(1,MINT(14+JS))
10328  
10329         ELSEIF(ISUB.EQ.257) THEN
10330 C...qj + g -> ~qk_R + ~chi+-2
10331           IF(MINT(15).EQ.21) JS=2
10332           I=MINT(14+JS)
10333           IA=IABS(I)
10334           IB=-IA+INT((IA+1)/2)*4-1
10335           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
10336           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
10337           KCC=15+JS
10338           KCS=ISIGN(1,MINT(14+JS))
10339  
10340         ELSEIF(ISUB.EQ.258) THEN
10341 C...qj + g -> ~qj_L + ~g
10342           IF(MINT(15).EQ.21) JS=2
10343           I=MINT(14+JS)
10344           IA=IABS(I)
10345           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10346           MINT(23-JS)=KSUSY1+21
10347           KCC=MINT(2)+6
10348           IF(JS.EQ.2) KCC=KCC+2
10349           KCS=ISIGN(1,I)
10350  
10351         ELSEIF(ISUB.EQ.259) THEN
10352 C...qj + g -> ~qj_R + ~g
10353           IF(MINT(15).EQ.21) JS=2
10354           I=MINT(14+JS)
10355           IA=IABS(I)
10356           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10357           MINT(23-JS)=KSUSY1+21
10358           KCC=MINT(2)+6
10359           IF(JS.EQ.2) KCC=KCC+2
10360           KCS=ISIGN(1,I)
10361         ENDIF
10362  
10363       ELSEIF(ISUB.LE.270) THEN
10364         IF(ISUB.EQ.261) THEN
10365 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
10366           ISGN=1
10367           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10368           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10369           MINT(22)=-MINT(21)
10370 C...Correct color combination
10371           IF(MINT(43).EQ.4) KCC=4
10372  
10373         ELSEIF(ISUB.EQ.262) THEN
10374 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
10375           ISGN=1
10376           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10377           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10378           MINT(22)=-MINT(21)
10379 C...Correct color combination
10380           IF(MINT(43).EQ.4) KCC=4
10381  
10382         ELSEIF(ISUB.EQ.263) THEN
10383 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
10384           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
10385      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
10386             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10387             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
10388           ELSE
10389             JS=2
10390             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
10391             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
10392           ENDIF
10393 C...Correct color combination
10394           IF(MINT(43).EQ.4) KCC=4
10395  
10396         ELSEIF(ISUB.EQ.264) THEN
10397 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
10398           KCS=(-1)**INT(1.5D0+PYR(0))
10399           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10400           MINT(22)=-MINT(21)
10401           KCC=MINT(2)+10
10402  
10403         ELSEIF(ISUB.EQ.265) THEN
10404 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
10405           KCS=(-1)**INT(1.5D0+PYR(0))
10406           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10407           MINT(22)=-MINT(21)
10408           KCC=MINT(2)+10
10409         ENDIF
10410  
10411       ELSEIF(ISUB.LE.296) THEN
10412         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
10413 C...qi + qj -> ~qi_L + ~qj_L
10414           KCC=MINT(2)
10415           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10416           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
10417           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
10418  
10419         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
10420 C...qi + qj -> ~qi_R + ~qj_R
10421           KCC=MINT(2)
10422           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10423           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
10424           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
10425  
10426         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
10427 C...qi + qj -> ~qi_L + ~qj_R
10428           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
10429           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
10430           KCC=MINT(2)
10431           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10432  
10433         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
10434 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
10435           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
10436           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
10437           KCC=MINT(2)
10438           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10439  
10440         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
10441 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
10442           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
10443           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
10444           KCC=MINT(2)
10445           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10446  
10447         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
10448 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
10449           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
10450           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
10451           KCC=MINT(2)
10452           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10453  
10454         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
10455 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
10456           ISGN=1
10457           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10458           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10459           MINT(22)=-MINT(21)
10460           IF(MINT(43).EQ.4) KCC=4
10461  
10462         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
10463 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
10464           ISGN=1
10465           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10466           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10467           MINT(22)=-MINT(21)
10468           IF(MINT(43).EQ.4) KCC=4
10469  
10470         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
10471 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
10472 C...pure LL + RR
10473           KCS=(-1)**INT(1.5D0+PYR(0))
10474           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10475           MINT(22)=-MINT(21)
10476           KCC=MINT(2)+10
10477  
10478         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
10479 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
10480           KCS=(-1)**INT(1.5D0+PYR(0))
10481           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10482           MINT(22)=-MINT(21)
10483           KCC=MINT(2)+10
10484  
10485         ELSEIF(ISUB.EQ.294) THEN
10486 C...qj + g -> ~qj_L + ~g
10487           IF(MINT(15).EQ.21) JS=2
10488           I=MINT(14+JS)
10489           IA=IABS(I)
10490           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10491           MINT(23-JS)=KSUSY1+21
10492           KCC=MINT(2)+6
10493           IF(JS.EQ.2) KCC=KCC+2
10494           KCS=ISIGN(1,I)
10495  
10496         ELSEIF(ISUB.EQ.295) THEN
10497 C...qj + g -> ~qj_R + ~g
10498           IF(MINT(15).EQ.21) JS=2
10499           I=MINT(14+JS)
10500           IA=IABS(I)
10501           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10502           MINT(23-JS)=KSUSY1+21
10503           KCC=MINT(2)+6
10504           IF(JS.EQ.2) KCC=KCC+2
10505           KCS=ISIGN(1,I)
10506         ENDIF
10507  
10508       ELSEIF(ISUB.LE.340) THEN
10509  
10510         IF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
10511 C...q + qbar' -> H+ + H0
10512           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10513           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10514           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10515           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
10516           MINT(23-JS)=KFPR(ISUB,2)
10517         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
10518 C...f + fbar -> A0 + H0; th arbitrary
10519           IF(PYR(0).GT.0.5D0) JS=2
10520           MINT(20+JS)=KFPR(ISUB,1)
10521           MINT(23-JS)=KFPR(ISUB,2)
10522         ELSEIF(ISUB.EQ.301) THEN
10523 C...f + fbar -> H+ H-
10524           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10525           MINT(22)=-MINT(21)
10526         ENDIF
10527 CMRENNA--
10528  
10529       ELSEIF(ISUB.LE.360) THEN
10530  
10531         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
10532 C...l + l -> H_L++/--, H_R++/--
10533           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10534           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10535           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
10536  
10537         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
10538 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
10539           IF(MINT(15).EQ.22) JS=2
10540           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
10541           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
10542           KCC=22
10543  
10544         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
10545 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
10546           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
10547           MINT(22)=-MINT(21)
10548  
10549         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
10550 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
10551 C...as inner process).
10552           DO 450 JT=1,2
10553             I=MINT(14+JT)
10554             IA=IABS(I)
10555             IF(IA.LE.10) THEN
10556               RVCKM=VINT(180+I)*PYR(0)
10557               DO 440 J=1,MSTP(1)
10558                 IB=2*J-1+MOD(IA,2)
10559                 IPM=(5-ISIGN(1,I))/2
10560                 IDC=J+MDCY(IA,2)+2
10561                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
10562                 MINT(20+JT)=ISIGN(IB,I)
10563                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10564                 IF(RVCKM.LE.0D0) GOTO 450
10565   440         CONTINUE
10566             ELSE
10567               IB=2*((IA+1)/2)-1+MOD(IA,2)
10568               MINT(20+JT)=ISIGN(IB,I)
10569             ENDIF
10570   450     CONTINUE
10571           KCC=22
10572           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
10573           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
10574  
10575         ELSEIF(ISUB.EQ.353) THEN
10576 C...f + fbar -> Z_R0
10577           KFRES=KFPR(ISUB,1)
10578  
10579         ELSEIF(ISUB.EQ.354) THEN
10580 C...f + fbar' -> W+/-
10581           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10582           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10583           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
10584  
10585         ENDIF
10586  
10587       ELSEIF(ISUB.LE.380) THEN
10588  
10589         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
10590 C...f + fbar -> charged+ charged- technicolor
10591           KSW=(-1)**INT(1.5D0+PYR(0))
10592           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
10593           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
10594  
10595         ELSEIF(ISUB.LE.367) THEN
10596 C...f + fbar -> neutral neutral technicolor
10597           MINT(21)=KFPR(ISUB,1)
10598           MINT(22)=KFPR(ISUB,2)
10599  
10600         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375) THEN
10601 C...f + fbar' -> neutral charged technicolor
10602           IN=1
10603           IC=2
10604           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10605           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10606           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10607           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
10608           MINT(20+JS)=KFPR(ISUB,IN)
10609  
10610         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
10611 C...f + fbar' -> charged neutral technicolor
10612           IN=2
10613           IC=1
10614           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10615           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10616           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10617           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
10618           MINT(23-JS)=KFPR(ISUB,IN)
10619         ENDIF
10620  
10621       ELSEIF(ISUB.LE.400) THEN
10622         IF(ISUB.EQ.381) THEN
10623 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
10624           KCC=MINT(2)
10625           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10626  
10627         ELSEIF(ISUB.EQ.382) THEN
10628 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
10629           MINT(21)=ISIGN(KFLF,MINT(15))
10630           MINT(22)=-MINT(21)
10631           KCC=4
10632  
10633         ELSEIF(ISUB.EQ.383) THEN
10634 C...f + fbar -> g + g; th arbitrary, TC extensions
10635           MINT(21)=21
10636           MINT(22)=21
10637           KCC=MINT(2)+4
10638  
10639         ELSEIF(ISUB.EQ.384) THEN
10640 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
10641           IF(MINT(15).EQ.21) JS=2
10642           KCC=MINT(2)+6
10643           IF(MINT(15).EQ.21) KCC=KCC+2
10644           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
10645           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
10646  
10647         ELSEIF(ISUB.EQ.385) THEN
10648 C...g + g -> f + fbar; th arbitrary, TC extensions
10649           KCS=(-1)**INT(1.5D0+PYR(0))
10650           MINT(21)=ISIGN(KFLF,KCS)
10651           MINT(22)=-MINT(21)
10652           KCC=MINT(2)+10
10653  
10654         ELSEIF(ISUB.EQ.386) THEN
10655 C...g + g -> g + g; th arbitrary, TC extensions
10656           KCC=MINT(2)+12
10657           KCS=(-1)**INT(1.5D0+PYR(0))
10658  
10659         ELSEIF(ISUB.EQ.387) THEN
10660 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
10661           MINT(21)=ISIGN(MINT(55),MINT(15))
10662           MINT(22)=-MINT(21)
10663           KCC=4
10664  
10665         ELSEIF(ISUB.EQ.388) THEN
10666 C...g + g -> Q + Qbar; th arbitrary, TC extensions
10667           KCS=(-1)**INT(1.5D0+PYR(0))
10668           MINT(21)=ISIGN(MINT(55),KCS)
10669           MINT(22)=-MINT(21)
10670           KCC=MINT(2)+10
10671  
10672         ELSEIF(ISUB.EQ.391) THEN
10673 C...f + fbar -> G*.
10674           KFRES=KFPR(ISUB,1)
10675  
10676         ELSEIF(ISUB.EQ.392) THEN
10677 C...g + g -> G*.
10678           KCC=21
10679           KFRES=KFPR(ISUB,1)
10680  
10681         ELSEIF(ISUB.EQ.393) THEN
10682 C...q + qbar -> g + G*;  th arbitrary.
10683           IF(PYR(0).GT.0.5D0) JS=2
10684           MINT(20+JS)=KFPR(ISUB,1)
10685           MINT(23-JS)=KFPR(ISUB,2)
10686           KCC=17+JS
10687  
10688         ELSEIF(ISUB.EQ.394) THEN
10689 C...q + g -> q + G*;  th = (p(f) - p(f))**2
10690           IF(MINT(15).EQ.21) JS=2
10691           MINT(23-JS)=KFPR(ISUB,2)
10692           KCC=15+JS
10693           KCS=ISIGN(1,MINT(14+JS))
10694  
10695         ELSEIF(ISUB.EQ.395) THEN
10696 C...g + g -> G* + g;  th arbitrary.
10697           IF(PYR(0).GT.0.5D0) JS=2
10698           MINT(23-JS)=KFPR(ISUB,2)
10699           KCC=22+JS
10700         ENDIF
10701       ENDIF
10702  
10703       IF(ISET(ISUB).EQ.11) THEN
10704 C...Store documentation for user-defined processes
10705         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
10706         KUPPO(1)=MINT(83)+5
10707         KUPPO(2)=MINT(83)+6
10708         I=MINT(83)+6
10709         DO 470 IUP=3,NUP
10710           KUPPO(IUP)=0
10711           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
10712             IDOC=IDOC-1
10713             MINT(4)=MINT(4)-1
10714             GOTO 470
10715           ENDIF
10716           I=I+1
10717           KUPPO(IUP)=I
10718           K(I,1)=21
10719           K(I,2)=IDUP(IUP)
10720           IF(IDUP(IUP).EQ.0) K(I,2)=90
10721           K(I,3)=0
10722           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
10723           K(I,4)=0
10724           K(I,5)=0
10725           DO 460 J=1,5
10726             P(I,J)=PUP(J,IUP)
10727   460     CONTINUE
10728           V(I,5)=VTIMUP(IUP)
10729   470   CONTINUE
10730         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
10731      &  -BEZUP)
10732  
10733 C...Store final state partons for user-defined processes
10734         N=IPU2
10735         DO 490 IUP=3,NUP
10736           N=N+1
10737           K(N,1)=1
10738           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
10739           K(N,2)=IDUP(IUP)
10740           IF(IDUP(IUP).EQ.0) K(N,2)=90
10741           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
10742             K(N,3)=KUPPO(IUP)
10743           ELSE
10744             K(N,3)=MINT(84)+MOTHUP(1,IUP)
10745           ENDIF
10746           K(N,4)=0
10747           K(N,5)=0
10748           DO 480 J=1,5
10749             P(N,J)=PUP(J,IUP)
10750   480     CONTINUE
10751           V(N,5)=VTIMUP(IUP)
10752   490   CONTINUE
10753         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
10754  
10755 C...Arrange colour flow for user-defined processes
10756         NLBL=0
10757         DO 540 IUP1=1,NUP
10758           I1=MINT(84)+IUP1
10759           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
10760           IF(K(I1,1).EQ.1) K(I1,1)=3
10761           IF(K(I1,1).EQ.11) K(I1,1)=14
10762 C...Find a not yet considered colour/anticolour line.
10763           DO 530 ISDE1=1,2
10764             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
10765             NMAT=0
10766             DO 500 ILBL=1,NLBL
10767               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
10768   500       CONTINUE
10769             IF(NMAT.EQ.0) THEN
10770               NLBL=NLBL+1
10771               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
10772 C...Find all others belonging to same line.
10773               I3=I1
10774               I4=0
10775               DO 520 IUP2=IUP1+1,NUP
10776                 I2=MINT(84)+IUP2
10777                 DO 510 ISDE2=1,2
10778                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
10779                     IF(ISDE2.EQ.ISDE1) THEN
10780                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
10781                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
10782                       I3=I2
10783                     ELSEIF(I4.NE.0) THEN
10784                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
10785                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
10786                       I4=I2
10787                     ELSEIF(IUP2.LE.2) THEN
10788                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
10789                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
10790                       I4=I2
10791                     ELSE
10792                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
10793                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
10794                       I4=I2
10795                     ENDIF
10796                   ENDIF
10797   510           CONTINUE
10798   520         CONTINUE
10799             ENDIF
10800   530     CONTINUE
10801   540   CONTINUE
10802  
10803       ELSEIF(IDOC.EQ.7) THEN
10804 C...Resonance not decaying; store kinematics
10805         I=MINT(83)+7
10806         K(IPU3,1)=1
10807         K(IPU3,2)=KFRES
10808         K(IPU3,3)=I
10809         P(IPU3,4)=SHUSER
10810         P(IPU3,5)=SHUSER
10811         K(I,1)=21
10812         K(I,2)=KFRES
10813         P(I,4)=SHUSER
10814         P(I,5)=SHUSER
10815         N=IPU3
10816         MINT(21)=KFRES
10817         MINT(22)=0
10818  
10819 C...Special cases: colour flow in coloured resonances
10820         KCRES=PYCOMP(KFRES)
10821         IF(KCHG(KCRES,2).NE.0) THEN
10822           K(IPU3,1)=3
10823           DO 550 J=1,2
10824             JC=J
10825             IF(KCS.EQ.-1) JC=3-J
10826             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
10827      &      MINT(84)+ICOL(KCC,1,JC)
10828             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
10829      &      MINT(84)+ICOL(KCC,2,JC)
10830             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
10831      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
10832   550     CONTINUE
10833         ELSE
10834           K(IPU1,4)=IPU2
10835           K(IPU1,5)=IPU2
10836           K(IPU2,4)=IPU1
10837           K(IPU2,5)=IPU1
10838         ENDIF
10839  
10840       ELSEIF(IDOC.EQ.8) THEN
10841 C...2 -> 2 processes: store outgoing partons in their CM-frame
10842         DO 560 JT=1,2
10843           I=MINT(84)+2+JT
10844           KCA=PYCOMP(MINT(20+JT))
10845           K(I,1)=1
10846           IF(KCHG(KCA,2).NE.0) K(I,1)=3
10847           K(I,2)=MINT(20+JT)
10848           K(I,3)=MINT(83)+IDOC+JT-2
10849           KFAA=IABS(K(I,2))
10850           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
10851             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
10852           ELSE
10853             P(I,5)=PYMASS(K(I,2))
10854           ENDIF
10855           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
10856      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
10857   560   CONTINUE
10858         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
10859           KFA1=IABS(MINT(21))
10860           KFA2=IABS(MINT(22))
10861           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
10862      &    THEN
10863             MINT(51)=1
10864             RETURN
10865           ENDIF
10866           P(IPU3,5)=0D0
10867           P(IPU4,5)=0D0
10868         ENDIF
10869         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
10870         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
10871         P(IPU4,4)=SHR-P(IPU3,4)
10872         P(IPU4,3)=-P(IPU3,3)
10873         N=IPU4
10874         MINT(7)=MINT(83)+7
10875         MINT(8)=MINT(83)+8
10876  
10877 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
10878         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
10879  
10880       ELSEIF(IDOC.EQ.9) THEN
10881 C...2 -> 3 processes: store outgoing partons in their CM frame
10882         DO 570 JT=1,2
10883           I=MINT(84)+2+JT
10884           KCA=PYCOMP(MINT(20+JT))
10885           K(I,1)=1
10886           IF(KCHG(KCA,2).NE.0) K(I,1)=3
10887           K(I,2)=MINT(20+JT)
10888           K(I,3)=MINT(83)+IDOC+JT-3
10889           IF(IABS(K(I,2)).LE.22) THEN
10890             P(I,5)=PYMASS(K(I,2))
10891           ELSE
10892             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
10893           ENDIF
10894           PT=SQRT(MAX(0D0,VINT(197+5*JT)-P(I,5)**2+VINT(196+5*JT)**2))
10895           P(I,1)=PT*COS(VINT(198+5*JT))
10896           P(I,2)=PT*SIN(VINT(198+5*JT))
10897   570   CONTINUE
10898         K(IPU5,1)=1
10899         K(IPU5,2)=KFRES
10900         K(IPU5,3)=MINT(83)+IDOC
10901         P(IPU5,5)=SHR
10902         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
10903         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
10904         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
10905         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
10906         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
10907         PMT3=SQRT(PMS3)
10908         P(IPU5,3)=PMT3*SINH(VINT(211))
10909         P(IPU5,4)=PMT3*COSH(VINT(211))
10910         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
10911         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
10912         IF(SQL12.LE.0D0) THEN
10913           MINT(51)=1
10914           RETURN
10915         ENDIF
10916         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
10917      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
10918         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
10919         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
10920         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
10921         MINT(23)=KFRES
10922         N=IPU5
10923         MINT(7)=MINT(83)+7
10924         MINT(8)=MINT(83)+8
10925  
10926       ELSEIF(IDOC.EQ.11) THEN
10927 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
10928         PHI(1)=PARU(2)*PYR(0)
10929         PHI(2)=PHI(1)-PHIR
10930         DO 580 JT=1,2
10931           I=MINT(84)+2+JT
10932           K(I,1)=1
10933           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
10934           K(I,2)=MINT(20+JT)
10935           K(I,3)=MINT(83)+IDOC+JT-2
10936           P(I,5)=PYMASS(K(I,2))
10937           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
10938             MINT(51)=1
10939             RETURN
10940           ENDIF
10941           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
10942           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
10943           P(I,1)=PTABS*COS(PHI(JT))
10944           P(I,2)=PTABS*SIN(PHI(JT))
10945           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
10946           P(I,4)=0.5D0*SHPR*Z(JT)
10947           IZW=MINT(83)+6+JT
10948           K(IZW,1)=21
10949           K(IZW,2)=23
10950           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
10951           K(IZW,3)=IZW-2
10952           P(IZW,1)=-P(I,1)
10953           P(IZW,2)=-P(I,2)
10954           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
10955           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
10956           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
10957   580   CONTINUE
10958         I=MINT(83)+9
10959         K(IPU5,1)=1
10960         K(IPU5,2)=KFRES
10961         K(IPU5,3)=I
10962         P(IPU5,5)=SHR
10963         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
10964         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
10965         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
10966         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
10967         K(I,1)=21
10968         K(I,2)=KFRES
10969         DO 590 J=1,5
10970           P(I,J)=P(IPU5,J)
10971   590   CONTINUE
10972         N=IPU5
10973         MINT(23)=KFRES
10974  
10975       ELSEIF(IDOC.EQ.12) THEN
10976 C...Z0 and W+/- scattering: store bosons and outgoing partons
10977         PHI(1)=PARU(2)*PYR(0)
10978         PHI(2)=PHI(1)-PHIR
10979         JTRAN=INT(1.5D0+PYR(0))
10980         DO 600 JT=1,2
10981           I=MINT(84)+2+JT
10982           K(I,1)=1
10983           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
10984           K(I,2)=MINT(20+JT)
10985           K(I,3)=MINT(83)+IDOC+JT-2
10986           P(I,5)=PYMASS(K(I,2))
10987           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
10988           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
10989           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
10990           P(I,1)=PTABS*COS(PHI(JT))
10991           P(I,2)=PTABS*SIN(PHI(JT))
10992           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
10993           P(I,4)=0.5D0*SHPR*Z(JT)
10994           IZW=MINT(83)+6+JT
10995           K(IZW,1)=21
10996           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
10997             K(IZW,2)=23
10998           ELSE
10999             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
11000           ENDIF
11001           K(IZW,3)=IZW-2
11002           P(IZW,1)=-P(I,1)
11003           P(IZW,2)=-P(I,2)
11004           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
11005           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
11006           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
11007           IPU=MINT(84)+4+JT
11008           K(IPU,1)=3
11009           K(IPU,2)=KFPR(ISUB,JT)
11010           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
11011           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
11012           K(IPU,3)=MINT(83)+8+JT
11013           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
11014             P(IPU,5)=PYMASS(K(IPU,2))
11015           ELSE
11016             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
11017           ENDIF
11018           MINT(22+JT)=K(IPU,2)
11019   600   CONTINUE
11020 C...Find rotation and boost for hard scattering subsystem
11021         I1=MINT(83)+7
11022         I2=MINT(83)+8
11023         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
11024         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
11025         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
11026         GAMCM=(P(I1,4)+P(I2,4))/SHR
11027         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
11028         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
11029         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
11030         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
11031         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
11032         PHICM=PYANGL(PX,PY)
11033 C...Store hard scattering subsystem. Rotate and boost it
11034         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
11035      &  P(IPU6,5)**2
11036         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
11037         CTHWZ=VINT(23)
11038         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
11039         PHIWZ=VINT(24)-PHICM
11040         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
11041         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
11042         P(IPU5,3)=PABS*CTHWZ
11043         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
11044         P(IPU6,1)=-P(IPU5,1)
11045         P(IPU6,2)=-P(IPU5,2)
11046         P(IPU6,3)=-P(IPU5,3)
11047         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
11048         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
11049         DO 620 JT=1,2
11050           I1=MINT(83)+8+JT
11051           I2=MINT(84)+4+JT
11052           K(I1,1)=21
11053           K(I1,2)=K(I2,2)
11054           DO 610 J=1,5
11055             P(I1,J)=P(I2,J)
11056   610     CONTINUE
11057   620   CONTINUE
11058         N=IPU6
11059         MINT(7)=MINT(83)+9
11060         MINT(8)=MINT(83)+10
11061       ENDIF
11062  
11063       IF(ISET(ISUB).EQ.11) THEN
11064       ELSEIF(IDOC.GE.8) THEN
11065 C...Store colour connection indices
11066         DO 630 J=1,2
11067           JC=J
11068           IF(KCS.EQ.-1) JC=3-J
11069           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
11070      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
11071           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
11072      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
11073           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
11074      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
11075           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
11076      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
11077   630   CONTINUE
11078  
11079 C...Copy outgoing partons to documentation lines
11080         IMAX=2
11081         IF(IDOC.EQ.9) IMAX=3
11082         DO 650 I=1,IMAX
11083           I1=MINT(83)+IDOC-IMAX+I
11084           I2=MINT(84)+2+I
11085           K(I1,1)=21
11086           K(I1,2)=K(I2,2)
11087           IF(IDOC.LE.9) K(I1,3)=0
11088           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
11089           DO 640 J=1,5
11090             P(I1,J)=P(I2,J)
11091   640     CONTINUE
11092   650   CONTINUE
11093  
11094       ELSEIF(IDOC.EQ.9) THEN
11095 C...Store colour connection indices
11096         DO 660 J=1,2
11097           JC=J
11098           IF(KCS.EQ.-1) JC=3-J
11099           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
11100      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
11101      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
11102           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
11103      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
11104      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
11105           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
11106      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
11107           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
11108      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
11109   660   CONTINUE
11110  
11111 C...Copy outgoing partons to documentation lines
11112         DO 680 I=1,3
11113           I1=MINT(83)+IDOC-3+I
11114           I2=MINT(84)+2+I
11115           K(I1,1)=21
11116           K(I1,2)=K(I2,2)
11117           K(I1,3)=0
11118           DO 670 J=1,5
11119             P(I1,J)=P(I2,J)
11120   670     CONTINUE
11121   680   CONTINUE
11122       ENDIF
11123  
11124 C...Low-pT events: remove gluons used for string drawing purposes
11125       IF(ISUB.EQ.95) THEN
11126         K(IPU3,1)=K(IPU3,1)+10
11127         K(IPU4,1)=K(IPU4,1)+10
11128         DO 690 J=41,66
11129           VINTSV(J)=VINT(J)
11130           VINT(J)=0D0
11131   690   CONTINUE
11132         DO 710 I=MINT(83)+5,MINT(83)+8
11133           DO 700 J=1,5
11134             P(I,J)=0D0
11135   700     CONTINUE
11136   710   CONTINUE
11137       ENDIF
11138  
11139       RETURN
11140       END
11141  
11142 C*********************************************************************
11143  
11144 C...PYSSPA
11145 C...Generates spacelike parton showers.
11146  
11147       SUBROUTINE PYSSPA(IPU1,IPU2)
11148  
11149 C...Double precision and integer declarations.
11150       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
11151       IMPLICIT INTEGER(I-N)
11152       INTEGER PYK,PYCHGE,PYCOMP
11153 C...Commonblocks.
11154       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
11155       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
11156       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
11157       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
11158       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
11159       COMMON/PYINT1/MINT(400),VINT(400)
11160       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
11161       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
11162       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
11163      &/PYINT2/,/PYINT3/
11164 C...Local arrays and data.
11165       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
11166      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
11167      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
11168      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
11169      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
11170       DATA IS/2*0/
11171  
11172 C...Read out basic information; set global Q^2 scale.
11173       IPUS1=IPU1
11174       IPUS2=IPU2
11175       ISUB=MINT(1)
11176       Q2MX=VINT(56)
11177       IF(ISET(ISUB).EQ.2) Q2MX=MIN(VINT(2),PARP(67)*VINT(56))
11178       FCQ2MX=1D0
11179  
11180 C...Define which processes ME corrections have been implemented for.
11181       MECOR=0
11182       IF(MSTP(68).EQ.1) THEN
11183         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
11184      &  ISUB.EQ.144) MECOR=1
11185         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
11186       ENDIF
11187  
11188 C...Initialize QCD evolution and check phase space.
11189       Q2MNC=PARP(62)**2
11190       Q2MNCS(1)=Q2MNC
11191       Q2MNCS(2)=Q2MNC
11192       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
11193         Q0S=PARP(15)**2
11194         PS=VINT(3)**2
11195         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
11196      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
11197         Q2INT=SQRT(Q0S*Q2EFF)
11198         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
11199       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
11200         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
11201       ENDIF
11202       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
11203         Q0S=PARP(15)**2
11204         PS=VINT(4)**2
11205         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
11206      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
11207         Q2INT=SQRT(Q0S*Q2EFF)
11208         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
11209       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
11210         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
11211       ENDIF
11212       MCEV=0
11213       ALAMS=PARU(112)
11214       PARU(112)=PARP(61)
11215       FQ2C=1D0
11216       TCMX=0D0
11217       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
11218         MCEV=1
11219         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
11220         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
11221         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
11222         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
11223      &  MCEV=0
11224       ENDIF
11225  
11226 C...Initialize QED evolution and check phase space.
11227       MEEV=0
11228       XEE=1D-10
11229       SPME=PMAS(11,1)**2
11230       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
11231      &SPME=PMAS(13,1)**2
11232       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
11233      &SPME=PMAS(15,1)**2
11234       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
11235       TEMX=0D0
11236       FWTE=10D0
11237       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
11238         MEEV=1
11239         TEMX=LOG(Q2MX/SPME)
11240         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
11241       ENDIF
11242       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
11243         MEEV=2
11244         TEMX=TCMX
11245         FWTE=1D0
11246       ENDIF
11247       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
11248  
11249 C...Loopback point in case of failure to reconstruct kinematics.
11250       NS=N
11251       LOOP=0
11252   100 LOOP=LOOP+1
11253       IF(LOOP.GT.100) THEN
11254         MINT(51)=1
11255         RETURN
11256       ENDIF
11257       N=NS
11258  
11259 C...Initial values: flavours, momenta, virtualities.
11260       DO 120 JT=1,2
11261         MORE(JT)=1
11262         KFBEAM(JT)=MINT(10+JT)
11263         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
11264         KFLS(JT)=MINT(14+JT)
11265         KFLS(JT+2)=KFLS(JT)
11266         XS(JT)=VINT(40+JT)
11267         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
11268         ZS(JT)=1D0
11269         Q2S(JT)=FCQ2MX*Q2MX
11270         DQ2(JT)=0D0
11271         TEVCSV(JT)=TCMX
11272         ALAM(JT)=PARP(61)
11273         THE2(JT)=1D0
11274         TEVESV(JT)=TEMX
11275         MCESV(JT)=0
11276 C...Calculate initial parton distribution weights.
11277         MINT(105)=MINT(102+JT)
11278         MINT(109)=MINT(106+JT)
11279         VINT(120)=VINT(2+JT)
11280 C.... ALICE
11281 C.... Store side in MINT(124)
11282         MINT(124) = JT
11283 C....
11284         IF(XS(JT).LT.1D0-XEE) THEN
11285           IF(MSTP(57).LE.1) THEN
11286             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
11287           ELSE
11288             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
11289           ENDIF
11290         ENDIF
11291         DO 110 KFL=-25,25
11292           XFS(JT,KFL)=XFB(KFL)
11293   110   CONTINUE
11294 C...Special kinematics check for c/b quarks (that g -> c cbar or
11295 C...b bbar kinematically possible).
11296       KFLCB=IABS(KFLS(JT))
11297       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
11298         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
11299           MINT(51)=1
11300           RETURN
11301         ENDIF
11302       ENDIF
11303   120 CONTINUE
11304       DSH=VINT(44)
11305       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
11306  
11307 C...Find if interference with final state partons.
11308       MFIS=0
11309       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
11310       IF(MFIS.NE.0) THEN
11311         DO 140 I=1,2
11312           KCFI(I)=0
11313           KCA=PYCOMP(IABS(KFLS(I)))
11314           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
11315           NFIS(I)=0
11316           IF(KCFI(I).NE.0) THEN
11317             IF(I.EQ.1) IPFS=IPUS1
11318             IF(I.EQ.2) IPFS=IPUS2
11319             DO 130 J=1,2
11320               ICSI=MOD(K(IPFS,3+J),MSTU(5))
11321               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
11322      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
11323                 NFIS(I)=NFIS(I)+1
11324                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
11325      &          P(ICSI,2)**2))
11326                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
11327               ENDIF
11328   130       CONTINUE
11329           ENDIF
11330   140   CONTINUE
11331         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
11332       ENDIF
11333  
11334 C...Pick up leg with highest virtuality.
11335       JTOLD=1
11336   150 N=N+1
11337       JT=1
11338       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
11339       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
11340       IF(MORE(JT).EQ.0) JT=3-JT
11341       JTOLD=JT
11342       KFLB=KFLS(JT)
11343       XB=XS(JT)
11344       DO 160 KFL=-25,25
11345         XFB(KFL)=XFS(JT,KFL)
11346   160 CONTINUE
11347       DSHR=2D0*SQRT(DSH)
11348       DSHZ=DSH/ZS(JT)
11349  
11350 C...Check if allowed to branch.
11351       MCEV=0
11352       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
11353         MCEV=1
11354         XEC=MAX(PARP(65)*DSHR/VINT(2),XB*(1D0/(1D0-PARP(66))-1D0))
11355         IF(XB.GE.1D0-2D0*XEC) MCEV=0
11356       ENDIF
11357       MEEV=0
11358       IF(MINT(44+JT).EQ.3) THEN
11359         MEEV=1
11360         IF(XB.GE.1D0-2D0*XEE) MEEV=0
11361         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
11362      &  MEEV=0
11363 C***Currently kill QED shower for resolved photoproduction.
11364         IF(MINT(18+JT).EQ.1) MEEV=0
11365 C***Currently kill shower for W inside electron.
11366         IF(IABS(KFLB).EQ.24) THEN
11367           MCEV=0
11368           MEEV=0
11369         ENDIF
11370       ENDIF
11371       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
11372      &MEEV=2
11373       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
11374         Q2B=0D0
11375         GOTO 260
11376       ENDIF
11377  
11378 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
11379       Q2B=Q2S(JT)
11380       TEVCB=TEVCSV(JT)
11381       TEVEB=TEVESV(JT)
11382       IF(MSTP(62).LE.1) THEN
11383         IF(ZS(JT).GT.0.99999D0) THEN
11384           Q2B=Q2S(JT)
11385         ELSE
11386           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
11387      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
11388      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
11389         ENDIF
11390         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11391         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
11392       ENDIF
11393       IF(MCEV.EQ.1) THEN
11394         ALSDUM=PYALPS(FQ2C*Q2B)
11395         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
11396         ALAM(JT)=PARU(117)
11397         B0=(33D0-2D0*MSTU(118))/6D0
11398       ENDIF
11399       IF(MEEV.EQ.2) TEVEB=TEVCB
11400       TEVCBS=TEVCB
11401       TEVEBS=TEVEB
11402  
11403 C...Select side for interference with final state partons.
11404       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
11405         IFI=N-NS
11406         ISFI(IFI)=0
11407         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
11408           ISFI(IFI)=1
11409         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
11410           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
11411         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
11412           ISFI(IFI)=1
11413           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
11414         ENDIF
11415       ENDIF
11416  
11417 C...Calculate preweighting factor for ME-corrected processes.
11418       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
11419  
11420 C...Calculate Altarelli-Parisi weights.
11421       DO 170 KFL=-25,25
11422         WTAPC(KFL)=0D0
11423         WTAPE(KFL)=0D0
11424         WTSF(KFL)=0D0
11425   170 CONTINUE
11426 C...q -> q (g or gamma emission), g -> q.
11427       IF(IABS(KFLB).LE.10) THEN
11428         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
11429         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
11430         EQ2=1D0/9D0
11431         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
11432         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
11433      &  (XEC*(1D0-XEC)))
11434         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11435           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
11436           WTAPC(21)=WTGF*WTAPC(21)
11437           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
11438         ENDIF
11439 C...f -> f, gamma -> f.
11440       ELSEIF(IABS(KFLB).LE.20) THEN
11441         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
11442         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
11443         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
11444         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
11445         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11446           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
11447           WTAPE(22)=WTGF*WTAPE(22)
11448         ENDIF
11449 C...f -> g, g -> g.
11450       ELSEIF(KFLB.EQ.21) THEN
11451         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
11452         DO 180 KFL=1,MSTP(58)
11453           WTAPC(KFL)=WTAPQ
11454           WTAPC(-KFL)=WTAPQ
11455   180   CONTINUE
11456         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
11457         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11458           DO 190 KFL=1,MSTP(58)
11459             WTAPC(KFL)=WTFG*WTAPC(KFL)
11460             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
11461   190     CONTINUE
11462           WTAPC(21)=WTGG*WTAPC(21)
11463         ENDIF
11464 C...f -> gamma, W+, W-.
11465       ELSEIF(KFLB.EQ.22) THEN
11466         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
11467         WTAPE(11)=WTAPF
11468         WTAPE(-11)=WTAPF
11469         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11470           WTAPE(11)=WTFG*WTAPE(11)
11471           WTAPE(-11)=WTFG*WTAPE(-11)
11472         ENDIF
11473       ELSEIF(KFLB.EQ.24) THEN
11474         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
11475      &  (XEE*(XB+XEE)))/XB
11476       ELSEIF(KFLB.EQ.-24) THEN
11477         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
11478      &  (XEE*(XB+XEE)))/XB
11479       ENDIF
11480  
11481 C...Calculate parton distribution weights and sum.
11482       NTRY=0
11483   200 NTRY=NTRY+1
11484       IF(NTRY.GT.500) THEN
11485         MINT(51)=1
11486         RETURN
11487       ENDIF
11488       WTSUMC=0D0
11489       WTSUME=0D0
11490       XFBO=MAX(1D-10,XFB(KFLB))
11491       DO 210 KFL=-25,25
11492         WTSF(KFL)=XFB(KFL)/XFBO
11493         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
11494         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
11495   210 CONTINUE
11496       WTSUMC=MAX(0.0001D0,WTSUMC)
11497       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
11498  
11499 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
11500       NTRY2=0
11501   220 NTRY2=NTRY2+1
11502       IF(NTRY2.GT.500) THEN
11503         MINT(51)=1
11504         RETURN
11505       ENDIF
11506       IF(MCEV.EQ.1) THEN
11507         IF(MSTP(64).LE.0) THEN
11508           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
11509         ELSEIF(MSTP(64).EQ.1) THEN
11510           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
11511         ELSE
11512           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
11513         ENDIF
11514       ENDIF
11515       IF(MEEV.EQ.1) THEN
11516         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
11517      &  (PARU(101)*FWTE*WTSUME*TEMX)))
11518       ELSEIF(MEEV.EQ.2) THEN
11519         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
11520       ENDIF
11521  
11522 C...Translate t into Q2 scale; choose between QCD and QED evolution.
11523   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
11524       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
11525       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
11526 C...Ensure that Q2 is above threshold for charm/bottom.
11527       KFLCB=IABS(KFLB)
11528       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
11529      &MCEV.EQ.1) THEN
11530         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
11531           Q2CB=1.1D0*PMAS(KFLCB,1)**2
11532           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11533           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
11534         ENDIF
11535       ENDIF
11536       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
11537      &MEEV.EQ.2) THEN
11538         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
11539       ENDIF
11540       MCE=0
11541       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
11542       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
11543         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
11544       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
11545         IF(Q2EB.GT.Q2MNE) MCE=2
11546       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
11547         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
11548       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
11549         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
11550         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
11551       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
11552         MCE=1
11553         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
11554         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
11555       ELSE
11556         MCE=2
11557         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
11558         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
11559       ENDIF
11560  
11561 C...Evolution possibly ended. Update t values.
11562       IF(MCE.EQ.0) THEN
11563         Q2B=0D0
11564         GOTO 260
11565       ELSEIF(MCE.EQ.1) THEN
11566         Q2B=Q2CB
11567         Q2REF=FQ2C*Q2B
11568         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
11569         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11570       ELSE
11571         Q2B=Q2EB
11572         Q2REF=Q2B
11573         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11574       ENDIF
11575  
11576 C...Select flavour for branching parton.
11577       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
11578       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
11579       KFLA=-25
11580   240 KFLA=KFLA+1
11581       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
11582       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
11583       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
11584       IF(KFLA.EQ.25) THEN
11585         Q2B=0D0
11586         GOTO 260
11587       ENDIF
11588  
11589 C...Choose z value and corrective weight.
11590       WTZ=0D0
11591 C...q -> q + g or q -> q + gamma.
11592       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
11593         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
11594      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
11595         WTZ=0.5D0*(1D0+Z**2)
11596 C...q -> g + q.
11597       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
11598         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
11599         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
11600 C...f -> f + gamma.
11601       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
11602         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
11603           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
11604      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
11605         ELSE
11606           Z=XB+XB*(XEE/(1D0-XEE))*
11607      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
11608         ENDIF
11609         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
11610 C...f -> gamma + f.
11611       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
11612         Z=XB+XB*(XEE/(1D0-XEE))*
11613      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
11614         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
11615 C...f -> W+- + f.
11616       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) THEN
11617         Z=XB+XB*(XEE/(1D0-XEE))*
11618      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
11619         WTZ=0.5D0*(1D0+(1D0-Z)**2)*(XB*(Z-XB)/Z)*
11620      &  (Q2B/(Q2B+PMAS(24,1)**2))
11621 C...g -> q + qbar.
11622       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
11623         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
11624         WTZ=1D0-2D0*Z*(1D0-Z)
11625 C...g -> g + g.
11626       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
11627         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
11628         WTZ=(1D0-Z*(1D0-Z))**2
11629 C...gamma -> f + fbar.
11630       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
11631         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
11632         WTZ=1D0-2D0*Z*(1D0-Z)
11633       ENDIF
11634       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
11635  
11636 C...Option with resummation of soft gluon emission as effective z shift.
11637       IF(MCE.EQ.1) THEN
11638         IF(MSTP(65).GE.1) THEN
11639           RSOFT=6D0
11640           IF(KFLB.NE.21) RSOFT=8D0/3D0
11641           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
11642           IF(Z.LE.XB) GOTO 220
11643         ENDIF
11644  
11645 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
11646         IF(MSTP(64).GE.2) THEN
11647           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
11648           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
11649           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
11650           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
11651         ENDIF
11652       ENDIF
11653  
11654 C...Remove kinematically impossible branchings.
11655       UHAT=Q2B-DSH*(1D0-Z)/Z
11656       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
11657  
11658 C...Select phi angle of branching at random.
11659       PHIBR=PARU(2)*PYR(0)
11660  
11661 C...Matrix-element corrections for some processes.
11662       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11663         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
11664           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
11665           WTZ=WTZ*WTME/WTFF
11666         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
11667           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
11668           WTZ=WTZ*WTME/WTGF
11669         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
11670           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
11671           WTZ=WTZ*WTME/WTFG
11672         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
11673           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
11674           WTZ=WTZ*WTME/WTGG
11675         ENDIF
11676       ENDIF
11677  
11678 C...Impose angular constraint in first branching from interference
11679 C...with final state partons.
11680       IF(MCE.EQ.1) THEN
11681         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
11682           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
11683           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
11684             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
11685           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
11686             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
11687           ENDIF
11688         ENDIF
11689  
11690 C...Option with angular ordering requirement.
11691         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
11692           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT(2))
11693           IF(THE2T.GT.THE2(JT)) GOTO 220
11694         ENDIF
11695       ENDIF
11696  
11697 C...Weighting with new parton distributions.
11698       MINT(105)=MINT(102+JT)
11699       MINT(109)=MINT(106+JT)
11700       VINT(120)=VINT(2+JT)
11701 C.... ALICE
11702 C.... Store side in MINT(124)
11703       MINT(124)=JT
11704 C....
11705       IF(MSTP(57).LE.1) THEN
11706         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
11707       ELSE
11708         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
11709       ENDIF
11710       XFBN=XFN(KFLB)
11711       IF(XFBN.LT.1D-20) THEN
11712         IF(KFLA.EQ.KFLB) THEN
11713           TEVCB=TEVCBS
11714           TEVEB=TEVEBS
11715           WTAPC(KFLB)=0D0
11716           WTAPE(KFLB)=0D0
11717           GOTO 200
11718         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
11719           TEVCB=0.5D0*(TEVCBS+TEVCB)
11720           GOTO 230
11721         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
11722           TEVEB=0.5D0*(TEVEBS+TEVEB)
11723           GOTO 230
11724         ELSE
11725           XFBN=1D-10
11726           XFN(KFLB)=XFBN
11727         ENDIF
11728       ENDIF
11729       DO 250 KFL=-25,25
11730         XFB(KFL)=XFN(KFL)
11731   250 CONTINUE
11732       XA=XB/Z
11733 C.... ALICE
11734 C.... Store side in MINT(124)
11735       MINT(124) = JT
11736 C....
11737       IF(MSTP(57).LE.1) THEN
11738         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
11739       ELSE
11740         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
11741       ENDIF
11742       XFAN=XFA(KFLA)
11743       IF(XFAN.LT.1D-20) GOTO 200
11744       WTSFA=WTSF(KFLA)
11745       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
11746  
11747 C...Define two hard scatterers in their CM-frame.
11748   260 IF(N.EQ.NS+2) THEN
11749         DQ2(JT)=Q2B
11750         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
11751         DO 280 JR=1,2
11752           I=NS+JR
11753           IF(JR.EQ.1) IPO=IPUS1
11754           IF(JR.EQ.2) IPO=IPUS2
11755           DO 270 J=1,5
11756             K(I,J)=0
11757             P(I,J)=0D0
11758             V(I,J)=0D0
11759   270     CONTINUE
11760           K(I,1)=14
11761           K(I,2)=KFLS(JR+2)
11762           K(I,4)=IPO
11763           K(I,5)=IPO
11764           P(I,3)=DPLCM*(-1)**(JR+1)
11765           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
11766           P(I,5)=-SQRT(DQ2(JR))
11767           K(IPO,1)=14
11768           K(IPO,3)=I
11769           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
11770           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
11771   280   CONTINUE
11772  
11773 C...Find maximum allowed mass of timelike parton.
11774       ELSEIF(N.GT.NS+2) THEN
11775         JR=3-JT
11776         DQ2(3)=Q2B
11777         DPC(1)=P(IS(1),4)
11778         DPC(2)=P(IS(2),4)
11779         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
11780         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
11781         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
11782         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
11783         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
11784         IKIN=0
11785         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
11786      &  1D-10*DPD(1)) IKIN=1
11787         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
11788      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
11789         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
11790      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
11791  
11792 C...Generate timelike parton shower (if required).
11793         IT=N
11794         DO 290 J=1,5
11795           K(IT,J)=0
11796           P(IT,J)=0D0
11797           V(IT,J)=0D0
11798   290   CONTINUE
11799 C...f -> f + g (gamma).
11800         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
11801           K(IT,2)=21
11802           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
11803 C...f -> g (gamma, W+-) + f.
11804         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
11805           K(IT,2)=KFLB
11806           IF(KFLS(JT+2).EQ.24) THEN
11807             K(IT,2)=-12
11808           ELSEIF(KFLS(JT+2).EQ.-24) THEN
11809             K(IT,2)=12
11810           ENDIF
11811 C...g (gamma) -> f + fbar, g + g.
11812         ELSE
11813           K(IT,2)=-KFLS(JT+2)
11814           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
11815         ENDIF
11816         K(IT,1)=3
11817         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
11818      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
11819         P(IT,5)=PYMASS(K(IT,2))
11820         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
11821         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
11822           MSTJ48=MSTJ(48)
11823           PARJ85=PARJ(85)
11824           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
11825           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
11826           IF(MSTP(63).EQ.1) THEN
11827             Q2TIM=DMSMA
11828           ELSEIF(MSTP(63).EQ.2) THEN
11829             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
11830           ELSE
11831             Q2TIM=DMSMA
11832             MSTJ(48)=1
11833             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
11834             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
11835      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
11836             PARJ(85)=SQRT(MAX(0D0,DPT2))*
11837      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
11838           ENDIF
11839           CALL PYSHOW(IT,0,SQRT(Q2TIM))
11840           MSTJ(48)=MSTJ48
11841           PARJ(85)=PARJ85
11842           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
11843         ENDIF
11844  
11845 C...Reconstruct kinematics of branching: timelike parton shower.
11846         DMS=P(IT,5)**2
11847         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
11848         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
11849      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
11850      &  (4D0*DSH*DPC(3)**2)
11851         IF(DPT2.LT.0D0) GOTO 100
11852         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
11853      &  DSHR)/DPC(3)-DPC(3)
11854         P(IT,1)=SQRT(DPT2)
11855         P(IT,3)=DPB(1)*(-1)**(JT+1)
11856         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
11857         IF(N.GE.IT+1) THEN
11858           DPB(1)=SQRT(DPB(1)**2+DPT2)
11859           DPB(2)=SQRT(DPB(1)**2+DMS)
11860           DPB(3)=P(IT+1,3)
11861           DPB(4)=SQRT(DPB(3)**2+DMS)
11862           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
11863      &    DPB(1))
11864           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
11865           THE=PYANGL(P(IT,3),P(IT,1))
11866           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
11867         ENDIF
11868  
11869 C...Reconstruct kinematics of branching: spacelike parton.
11870         DO 300 J=1,5
11871           K(N+1,J)=0
11872           P(N+1,J)=0D0
11873           V(N+1,J)=0D0
11874   300   CONTINUE
11875         K(N+1,1)=14
11876         K(N+1,2)=KFLB
11877         P(N+1,1)=P(IT,1)
11878         P(N+1,3)=P(IT,3)+P(IS(JT),3)
11879         P(N+1,4)=P(IT,4)+P(IS(JT),4)
11880         P(N+1,5)=-SQRT(DQ2(3))
11881  
11882 C...Define colour flow of branching.
11883         K(IS(JT),3)=N+1
11884         K(IT,3)=N+1
11885         IM1=N+1
11886         IM2=N+1
11887 C...f -> f + gamma (Z, W).
11888         IF(IABS(K(IT,2)).GE.22) THEN
11889           K(IT,1)=1
11890           ID1=IS(JT)
11891           ID2=IS(JT)
11892 C...f -> gamma (Z, W) + f.
11893         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
11894           ID1=IT
11895           ID2=IT
11896 C...gamma -> q + qbar, g + g.
11897         ELSEIF(K(N+1,2).EQ.22) THEN
11898           ID1=IS(JT)
11899           ID2=IT
11900           IM1=ID2
11901           IM2=ID1
11902 C...q -> q + g.
11903         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
11904           ID1=IT
11905           ID2=IS(JT)
11906 C...q -> g + q.
11907         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
11908           ID1=IS(JT)
11909           ID2=IT
11910 C...qbar -> qbar + g.
11911         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
11912           ID1=IS(JT)
11913           ID2=IT
11914 C...qbar -> g + qbar.
11915         ELSEIF(K(N+1,2).LT.0) THEN
11916           ID1=IT
11917           ID2=IS(JT)
11918 C...g -> g + g; g -> q + qbar.
11919         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
11920           ID1=IS(JT)
11921           ID2=IT
11922         ELSE
11923           ID1=IT
11924           ID2=IS(JT)
11925         ENDIF
11926         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
11927         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
11928         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
11929         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
11930         IF(ID1.NE.ID2) THEN
11931           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
11932           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
11933         ENDIF
11934         N=N+1
11935         IF(K(IT,1).EQ.1) THEN
11936           K(IT,4)=0
11937           K(IT,5)=0
11938         ENDIF
11939  
11940 C...Boost to new CM-frame.
11941         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
11942         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
11943         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
11944         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
11945         IR=N+(JT-1)*(IS(1)-N)
11946         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
11947      &  0D0,0D0,0D0)
11948       ENDIF
11949  
11950 C...Update kinematics variables.
11951       IS(JT)=N
11952       DQ2(JT)=Q2B
11953       IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THE2(JT)=THE2T
11954       DSH=DSHZ
11955  
11956 C...Save quantities; loop back.
11957       Q2S(JT)=Q2B
11958       DPHI(JT)=PHIBR
11959       MCESV(JT)=MCE
11960       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
11961      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
11962         KFLS(JT+2)=KFLS(JT)
11963         KFLS(JT)=KFLA
11964         XS(JT)=XA
11965         ZS(JT)=Z
11966         DO 310 KFL=-25,25
11967           XFS(JT,KFL)=XFA(KFL)
11968   310   CONTINUE
11969         TEVCSV(JT)=TEVCB
11970         TEVESV(JT)=TEVEB
11971       ELSE
11972         MORE(JT)=0
11973         IF(JT.EQ.1) IPU1=N
11974         IF(JT.EQ.2) IPU2=N
11975       ENDIF
11976       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
11977         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
11978         IF(MSTU(21).GE.1) N=NS
11979         IF(MSTU(21).GE.1) RETURN
11980       ENDIF
11981       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
11982  
11983 C...Boost hard scattering partons to frame of shower initiators.
11984       DO 320 J=1,3
11985         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
11986   320 CONTINUE
11987       K(N+2,1)=1
11988       DO 330 J=1,5
11989         P(N+2,J)=P(NS+1,J)
11990   330 CONTINUE
11991       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
11992       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
11993       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
11994       CALL PYROBO(MINT(83)+5,NS,0D0,-ROBO(2),0D0,0D0,0D0)
11995       CALL PYROBO(MINT(83)+5,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),
11996      &ROBO(5))
11997  
11998 C...Store user information. Reset Lambda value.
11999       K(IPU1,3)=MINT(83)+3
12000       K(IPU2,3)=MINT(83)+4
12001       DO 340 JT=1,2
12002         MINT(12+JT)=KFLS(JT)
12003         VINT(140+JT)=XS(JT)
12004         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
12005   340 CONTINUE
12006       PARU(112)=ALAMS
12007  
12008       RETURN
12009       END
12010  
12011 C*********************************************************************
12012  
12013 C...PYMEMX
12014 C...Generates maximum ME weight in some initial-state showers.
12015 C...Inparameter MECOR: kind of hard scattering process
12016 C...Outparameter WTFF: maximum weight for fermion -> fermion
12017 C...             WTGF: maximum weight for gluon/photon -> fermion
12018 C...             WTFG: maximum weight for fermion -> gluon/photon
12019 C...             WTGG: maximum weight for gluon -> gluon
12020  
12021       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
12022  
12023 C...Double precision and integer declarations.
12024       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12025       IMPLICIT INTEGER(I-N)
12026       INTEGER PYK,PYCHGE,PYCOMP
12027 C...Commonblocks.
12028       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12029       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12030       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12031       COMMON/PYINT1/MINT(400),VINT(400)
12032       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12033       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
12034  
12035 C...Default maximum weight.
12036       WTFF=1D0
12037       WTGF=1D0
12038       WTFG=1D0
12039       WTGG=1D0
12040  
12041 C...Select maximum weight by process.
12042       IF(MECOR.EQ.1) THEN
12043         WTFF=1D0
12044         WTGF=3D0
12045       ELSEIF(MECOR.EQ.2) THEN
12046         WTFG=1D0
12047         WTGG=1D0
12048       ENDIF
12049  
12050       RETURN
12051       END
12052  
12053 C*********************************************************************
12054  
12055 C...PYMEWT
12056 C...Calculates actual ME weight in some initial-state showers.
12057 C...Inparameter MECOR: kind of hard scattering process
12058 C...            IFLCB: flavour combination of branching,
12059 C...                   1 for fermion -> fermion,
12060 C...                   2 for gluon/photon -> fermion
12061 C...                   3 for fermion -> gluon/photon,
12062 C...                   4 for gluon -> gluon
12063 C...            Q2:    Q2 value of shower branching
12064 C...            Z:     Z value of branching
12065 C...In+outparameter PHIBR: azimuthal angle of branching
12066 C...Outparameter WTME: actual ME weight
12067  
12068       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
12069  
12070 C...Double precision and integer declarations.
12071       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12072       IMPLICIT INTEGER(I-N)
12073       INTEGER PYK,PYCHGE,PYCOMP
12074 C...Commonblocks.
12075       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12076       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12077       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12078       COMMON/PYINT1/MINT(400),VINT(400)
12079       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12080       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
12081  
12082 C...Default output.
12083       WTME=1D0
12084  
12085 C...Define kinematics of shower branching in Mandelstam variables.
12086       SQM=VINT(44)
12087       SH=SQM/Z
12088       TH=-Q2
12089       UH=Q2-SQM*(1D0-Z)/Z
12090  
12091 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
12092       IF(MECOR.EQ.1) THEN
12093         IF(IFLCB.EQ.1) THEN
12094           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
12095         ELSEIF(IFLCB.EQ.2) THEN
12096           WTME=(SH**2+UH**2+2D0*SQM*TH)/((SH-SQM)**2+SQM**2)
12097         ENDIF
12098  
12099 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
12100       ELSEIF(MECOR.EQ.2) THEN
12101         IF(IFLCB.EQ.3) THEN
12102           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
12103         ELSEIF(IFLCB.EQ.4) THEN
12104           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
12105         ENDIF
12106       ENDIF
12107  
12108       RETURN
12109       END
12110  
12111 C*********************************************************************
12112  
12113 C...PYADSH
12114 C...Administers the generation of successive final-state showers
12115 C...in external processes.
12116  
12117       SUBROUTINE PYADSH(NFIN)
12118  
12119 C...Double precision and integer declarations.
12120       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12121       IMPLICIT INTEGER(I-N)
12122       INTEGER PYK,PYCHGE,PYCOMP
12123 C...Commonblocks.
12124       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12125       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12126       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12127       COMMON/PYINT1/MINT(400),VINT(400)
12128       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
12129 C...Local array.
12130       DIMENSION IBEG(100),KSAV(10,5),IORD(10),PSUM(4),BETA(3)
12131  
12132 C...Set primary vertex.
12133       DO 100 J=1,5
12134         V(MINT(83)+5,J)=0D0
12135         V(MINT(83)+6,J)=0D0
12136         V(MINT(84)+1,J)=0D0
12137         V(MINT(84)+2,J)=0D0
12138   100 CONTINUE
12139  
12140 C...Isolate systems of particles with the same mother.
12141       NSYS=0
12142       IMS=-1
12143       DO 140 I=MINT(84)+3,NFIN
12144         IM=K(I,3)
12145         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
12146         IF(IM.NE.IMS) THEN
12147           NSYS=NSYS+1
12148           IBEG(NSYS)=I
12149           IMS=IM
12150         ENDIF
12151  
12152 C...Set production vertices.
12153         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
12154      &  THEN
12155           DO 110 J=1,4
12156             V(I,J)=0D0
12157   110     CONTINUE
12158         ELSE
12159           DO 120 J=1,4
12160             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
12161   120     CONTINUE
12162         ENDIF
12163         IF(MSTP(125).GE.1) THEN
12164           IDOC=I-MSTP(126)+4
12165           DO 130 J=1,5
12166             V(IDOC,J)=V(I,J)
12167   130     CONTINUE
12168         ENDIF
12169   140 CONTINUE
12170  
12171 C...End loop over systems. Return if no showers to be performed.
12172       IBEG(NSYS+1)=NFIN+1
12173       IF(MSTP(71).LE.0) RETURN
12174  
12175 C...Loop through systems of particles; check that sensible size.
12176       DO 260 ISYS=1,NSYS
12177         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
12178         IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
12179         ELSEIF(NSIZ.LE.1) THEN
12180           CALL PYERRM(2,'(PYADSH:) only one particle in system')
12181         ELSEIF(NSIZ.GT.7) THEN
12182           CALL PYERRM(2,'(PYADSH:) more than seven particles in system')
12183         ELSE
12184  
12185 C...Save status codes and daughters of showering pair; reset them.
12186           DO 150 J=1,4
12187             PSUM(J)=0D0
12188   150     CONTINUE
12189           DO 170 II=1,NSIZ
12190             I=IBEG(ISYS)-1+II
12191             KSAV(II,1)=K(I,1)
12192             IF(K(I,1).GT.10) THEN
12193               K(I,1)=1
12194               IF(KSAV(II,1).EQ.14) K(I,1)=3
12195             ENDIF
12196             IF(KSAV(II,1).LE.10) THEN
12197             ELSEIF(K(I,1).EQ.1) THEN
12198               KSAV(II,4)=K(I,4)
12199               KSAV(II,5)=K(I,5)
12200               K(I,4)=0
12201               K(I,5)=0
12202             ELSE
12203               KSAV(II,4)=MOD(K(I,4),MSTU(5))
12204               KSAV(II,5)=MOD(K(I,5),MSTU(5))
12205               K(I,4)=K(I,4)-KSAV(II,4)
12206               K(I,5)=K(I,5)-KSAV(II,5)
12207             ENDIF
12208             DO 160 J=1,4
12209               PSUM(J)=PSUM(J)+P(I,J)
12210   160       CONTINUE
12211   170     CONTINUE
12212  
12213 C...Perform shower.
12214           QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
12215      &    PSUM(3)**2))
12216           IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
12217           NSAV=N
12218           IF(NSIZ.EQ.2) THEN
12219             CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
12220           ELSE
12221             CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
12222           ENDIF
12223  
12224 C...Look up showered copies of original showering particles.
12225           DO 250 II=1,NSIZ
12226             I=IBEG(ISYS)-1+II
12227             IMV=I
12228             IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
12229             ELSEIF(K(I,1).EQ.11) THEN
12230   180         IMV=MOD(K(IMV,4),MSTU(5))
12231               IF(K(IMV,1).EQ.11) GOTO 180
12232             ELSE
12233               KDA1=MOD(K(I,4),MSTU(5))
12234               KDA2=MOD(K(I,5),MSTU(5))
12235               DO 190 I3=I+1,N
12236                 IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
12237      &          THEN
12238                   IMV=I3
12239                   KDA1=MOD(K(I3,4),MSTU(5))
12240                   KDA2=MOD(K(I3,5),MSTU(5))
12241                 ENDIF
12242   190         CONTINUE
12243             ENDIF
12244  
12245 C...Restore daughter info of original partons to showered copies.
12246             IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
12247             IF(KSAV(II,1).LE.10) THEN
12248             ELSEIF(K(I,1).EQ.1) THEN
12249               K(IMV,4)=KSAV(II,4)
12250               K(IMV,5)=KSAV(II,5)
12251             ELSE
12252               K(IMV,4)=K(IMV,4)+KSAV(II,4)
12253               K(IMV,5)=K(IMV,5)+KSAV(II,5)
12254             ENDIF
12255  
12256 C...Reset mother info of existing daughters to showered copies.
12257             DO 200 I3=IBEG(ISYS+1),NFIN
12258               IF(K(I3,3).EQ.I) K(I3,3)=IMV
12259               IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
12260                 IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
12261                 IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
12262               ENDIF
12263   200       CONTINUE
12264  
12265 C...Boost all original daughters to new frame of showered copy.
12266             IF(IMV.NE.I) THEN
12267               DO 210 J=1,3
12268                 BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
12269   210         CONTINUE
12270               FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
12271               DO 220 J=1,3
12272                 BETA(J)=FAC*BETA(J)
12273   220         CONTINUE
12274               DO 240 I3=IBEG(ISYS+1),NFIN
12275                 IMO=I3
12276   230           IMO=K(IMO,3)
12277                 IF(MSTP(128).LE.0) THEN
12278                   IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 230
12279                   IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3))) 
12280      &            CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
12281                 ELSE
12282                   IF(IMO.EQ.IMV) THEN
12283                     CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
12284                   ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
12285                     GOTO 230
12286                   ENDIF
12287                 ENDIF 
12288   240         CONTINUE
12289             ENDIF
12290   250     CONTINUE
12291  
12292 C...End of loop over showering systems
12293         ENDIF
12294   260 CONTINUE
12295  
12296       RETURN
12297       END
12298  
12299 C*********************************************************************
12300  
12301 C...PYRESD
12302 C...Allows resonances to decay (including parton showers for hadronic
12303 C...channels).
12304  
12305       SUBROUTINE PYRESD(IRES)
12306  
12307 C...Double precision and integer declarations.
12308       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12309       IMPLICIT INTEGER(I-N)
12310       INTEGER PYK,PYCHGE,PYCOMP
12311 C...Parameter statement to help give large particle numbers.
12312       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
12313      &KEXCIT=4000000,KDIMEN=5000000)
12314 C...Commonblocks.
12315       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12316       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12317       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
12318       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
12319       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
12320       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12321       COMMON/PYINT1/MINT(400),VINT(400)
12322       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12323       COMMON/PYINT4/MWID(500),WIDS(500,5)
12324       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
12325      &/PYINT1/,/PYINT2/,/PYINT4/
12326 C...Local arrays and complex and character variables.
12327       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
12328      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(3),ILIN(6),
12329      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
12330      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),XM(5),VDCY(4),
12331      &ITJUNC(3),CTM2(3)
12332       COMPLEX FGK,HA(6,6),HC(6,6)
12333       REAL TIR,UIR
12334       CHARACTER CODE*9,MASS*9
12335  
12336 C...The F, Xi and Xj functions of Gunion and Kunszt
12337 C...(Phys. Rev. D33, 665, plus errata from the authors).
12338       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
12339      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
12340       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
12341      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
12342       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
12343      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
12344      &2D0*(D34/D56+D56/D34))
12345  
12346 C...Some general constants.
12347       XW=PARU(102)
12348       XWV=XW
12349       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
12350       XW1=1D0-XW
12351       SQMZ=PMAS(23,1)**2
12352  
12353       GMMZ=PMAS(23,1)*PMAS(23,2)
12354       SQMW=PMAS(24,1)**2
12355       GMMW=PMAS(24,1)*PMAS(24,2)
12356       SH=VINT(44)
12357  
12358 C...Boost and rotate to rest frame of incoming partons,
12359 C...to get proper amount of smearing of decay angles.
12360       IBST=0
12361       IF(IRES.EQ.0) THEN
12362         IBST=1
12363         ETOTIN=P(MINT(84)+1,4)+P(MINT(84)+2,4)
12364         BEXIN=(P(MINT(84)+1,1)+P(MINT(84)+2,1))/ETOTIN
12365         BEYIN=(P(MINT(84)+1,2)+P(MINT(84)+2,2))/ETOTIN
12366         BEZIN=(P(MINT(84)+1,3)+P(MINT(84)+2,3))/ETOTIN
12367         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
12368         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
12369         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
12370         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
12371         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
12372       ENDIF
12373  
12374 C...Reset original resonance configuration.
12375       DO 100 JT=1,8
12376         IREF(1,JT)=0
12377   100 CONTINUE
12378  
12379 C...Define initial one, two or three objects for subprocess.
12380       IHDEC=0
12381       IF(IRES.EQ.0) THEN
12382         ISUB=MINT(1)
12383         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
12384           IREF(1,1)=MINT(84)+2+ISET(ISUB)
12385           IREF(1,4)=MINT(83)+6+ISET(ISUB)
12386           JTMAX=1
12387         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
12388           IREF(1,1)=MINT(84)+1+ISET(ISUB)
12389           IREF(1,2)=MINT(84)+2+ISET(ISUB)
12390           IREF(1,4)=MINT(83)+5+ISET(ISUB)
12391           IREF(1,5)=MINT(83)+6+ISET(ISUB)
12392           JTMAX=2
12393         ELSEIF(ISET(ISUB).EQ.5) THEN
12394           IREF(1,1)=MINT(84)+3
12395           IREF(1,2)=MINT(84)+4
12396           IREF(1,3)=MINT(84)+5
12397           IREF(1,4)=MINT(83)+7
12398           IREF(1,5)=MINT(83)+8
12399           IREF(1,6)=MINT(83)+9
12400           JTMAX=3
12401         ENDIF
12402  
12403 C...Define original resonance for odd cases.
12404       ELSE
12405         ISUB=0
12406         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
12407      &  IHDEC=1
12408         IF(IHDEC.EQ.1) ISUB=3
12409         IREF(1,1)=IRES
12410         IREF(1,4)=K(IRES,3)
12411         JTMAX=1
12412       ENDIF
12413  
12414 C...Check if initial resonance has been moved (in resonance + jet).
12415       DO 120 JT=1,3
12416         IF(IREF(1,JT).GT.0) THEN
12417           IF(K(IREF(1,JT),1).GT.10) THEN
12418             KFA=IABS(K(IREF(1,JT),2))
12419             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
12420               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
12421               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
12422               DO 110 I=IREF(1,JT)+1,N
12423                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
12424      &          I.EQ.KDA2)) THEN
12425                   IREF(1,JT)=I
12426                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
12427                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
12428                 ENDIF
12429   110         CONTINUE
12430             ELSE
12431               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
12432               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
12433             ENDIF
12434           ENDIF
12435         ENDIF
12436   120 CONTINUE
12437  
12438 C.....Set decay vertex for initial resonances
12439       DO 140 JT=1,JTMAX
12440         DO 130 I=1,4
12441           V(IREF(1,JT),I)=0D0
12442   130   CONTINUE
12443   140 CONTINUE
12444  
12445 C...Loop over decay history.
12446       NP=1
12447       IP=0
12448   150 IP=IP+1
12449       NINH=0
12450       JTMAX=2
12451       IF(IREF(IP,2).EQ.0) JTMAX=1
12452       IF(IREF(IP,3).NE.0) JTMAX=3
12453       IT4=0
12454       NSAV=N
12455
12456 C...Check for Higgs which appears as decay product of user-process.
12457       IF(ISUB.EQ.0) THEN
12458         IHDEC=0
12459         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
12460      &  .EQ.36) IHDEC=1
12461         IF(IHDEC.EQ.1) ISUB=3
12462       ENDIF
12463
12464 C...Start treatment of one, two or three resonances in parallel.
12465   160 N=NSAV
12466       DO 320 JT=1,JTMAX
12467         ID=IREF(IP,JT)
12468         KDCY(JT)=0
12469         KFL1(JT)=0
12470         KFL2(JT)=0
12471         KFL3(JT)=0
12472         KEQL(JT)=0
12473         NSD(JT)=ID
12474         ITJUNC(JT)=0
12475  
12476 C...Check whether particle can/is allowed to decay.
12477         IF(ID.EQ.0) GOTO 310
12478         KFA=IABS(K(ID,2))
12479         KCA=PYCOMP(KFA)
12480         IF(MWID(KCA).EQ.0) GOTO 310
12481         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 310
12482         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
12483      &  KFA.EQ.18) IT4=IT4+1
12484         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
12485         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
12486  
12487 C...Choose lifetime and determine decay vertex.
12488         IF(K(ID,1).EQ.5) THEN
12489           V(ID,5)=0D0
12490         ELSEIF(K(ID,1).NE.4) THEN
12491           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
12492         ENDIF
12493         DO 170 J=1,4
12494           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
12495   170   CONTINUE
12496  
12497 C...Determine whether decay allowed or not.
12498         MOUT=0
12499         IF(MSTJ(22).EQ.2) THEN
12500           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
12501         ELSEIF(MSTJ(22).EQ.3) THEN
12502           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
12503         ELSEIF(MSTJ(22).EQ.4) THEN
12504           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
12505           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
12506         ENDIF
12507         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
12508           K(ID,1)=4
12509           GOTO 310
12510         ENDIF
12511  
12512 C...Info for selection of decay channel: sign, pairings.
12513         IF(KCHG(KCA,3).EQ.0) THEN
12514           IPM=2
12515         ELSE
12516           IPM=(5-ISIGN(1,K(ID,2)))/2
12517         ENDIF
12518         KFB=0
12519         IF(JTMAX.EQ.2) THEN
12520           KFB=IABS(K(IREF(IP,3-JT),2))
12521         ELSEIF(JTMAX.EQ.3) THEN
12522           JT2=JT+1-3*(JT/3)
12523           KFB=IABS(K(IREF(IP,JT2),2))
12524           IF(KFB.NE.KFA) THEN
12525             JT2=JT+2-3*((JT+1)/3)
12526             KFB=IABS(K(IREF(IP,JT2),2))
12527           ENDIF
12528         ENDIF
12529  
12530 C...Select decay channel.
12531         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
12532      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
12533         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
12534         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
12535         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
12536         IF(WDTE0S.LE.0D0) GOTO 310
12537         RKFL=WDTE0S*PYR(0)
12538         IDL=0
12539   180   IDL=IDL+1
12540         IDC=IDL+MDCY(KCA,2)-1
12541         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
12542         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
12543         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 180
12544  
12545 C...Read out flavours and colour charges of decay channel chosen.
12546         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
12547         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
12548         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
12549         KFC1A=PYCOMP(IABS(KFL1(JT)))
12550         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
12551         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
12552         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
12553         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
12554         KFC2A=PYCOMP(IABS(KFL2(JT)))
12555         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
12556         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
12557         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
12558         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
12559         KCQ3(JT)=0
12560         IF(KFL3(JT).NE.0) THEN
12561           KFC3A=PYCOMP(IABS(KFL3(JT)))
12562           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
12563           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
12564           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
12565         ENDIF
12566  
12567 C...Set/save further info on channel.
12568         KDCY(JT)=1
12569         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
12570         NSD(JT)=N
12571         HGZ(JT,1)=VINT(111)
12572         HGZ(JT,2)=VINT(112)
12573         HGZ(JT,3)=VINT(114)
12574         JTZ=JT
12575  
12576 C...Select masses; to begin with assume resonances narrow.
12577         DO 200 I=1,3
12578           P(N+I,5)=0D0
12579           PMMN(I)=0D0
12580           IF(I.EQ.1) THEN
12581             KFLW=IABS(KFL1(JT))
12582             KCW=KFC1A
12583           ELSEIF(I.EQ.2) THEN
12584             KFLW=IABS(KFL2(JT))
12585             KCW=KFC2A
12586           ELSEIF(I.EQ.3) THEN
12587             IF(KFL3(JT).EQ.0) GOTO 200
12588             KFLW=IABS(KFL3(JT))
12589             KCW=KFC3A
12590           ENDIF
12591           P(N+I,5)=PMAS(KCW,1)
12592 CMRENNA++
12593 C...This prevents SUSY/t particles from becoming too light.
12594           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
12595             PMMN(I)=PMAS(KCW,1)
12596             DO 190 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
12597               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
12598                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
12599      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
12600                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
12601      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
12602                 PMMN(I)=MIN(PMMN(I),PMSUM)
12603               ENDIF
12604   190       CONTINUE
12605 CMRENNA--
12606           ELSEIF(KFLW.EQ.6) THEN
12607             PMMN(I)=PMAS(24,1)+PMAS(5,1)
12608           ENDIF
12609   200   CONTINUE
12610  
12611 C...Check which two out of three are widest.
12612         IWID1=1
12613         IWID2=2
12614         PWID1=PMAS(KFC1A,2)
12615         PWID2=PMAS(KFC2A,2)
12616         KFLW1=IABS(KFL1(JT))
12617         KFLW2=IABS(KFL2(JT))
12618         IF(KFL3(JT).NE.0) THEN
12619           PWID3=PMAS(KFC3A,2)
12620           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
12621             IWID1=3
12622             PWID1=PWID3
12623             KFLW1=IABS(KFL3(JT))
12624           ELSEIF(PWID3.GT.PWID2) THEN
12625             IWID2=3
12626             PWID2=PWID3
12627             KFLW2=IABS(KFL3(JT))
12628           ENDIF
12629         ENDIF
12630  
12631 C...If all narrow then only check that masses consistent.
12632         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
12633      &  PWID2.LT.PARP(41))) THEN
12634 CMRENNA++
12635 C....Handle near degeneracy cases.
12636           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
12637             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
12638               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
12639               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
12640             ENDIF
12641           ENDIF
12642 CMRENNA--
12643           IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
12644             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
12645             MINT(51)=1
12646             GOTO 700
12647           ELSEIF(P(N+1,5)+P(N+2,5)+P(N+3,5)+PARJ(64).GT.P(ID,5)) THEN
12648             CALL PYERRM(3,'(PYRESD:) daughter masses too large')
12649             MINT(51)=1
12650             GOTO 700
12651           ENDIF
12652  
12653 C...For three wide resonances select narrower of three
12654 C...according to BW decoupled from rest.
12655         ELSE
12656           PMTOT=P(ID,5)
12657           IF(KFL3(JT).NE.0) THEN
12658             IWID3=6-IWID1-IWID2
12659             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
12660      &      KFLW1-KFLW2
12661             LOOP=0
12662   210       LOOP=LOOP+1
12663             P(N+IWID3,5)=PYMASS(KFLW3)
12664             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 210
12665             PMTOT=PMTOT-P(N+IWID3,5)
12666           ENDIF
12667 C...Select other two correlated within remaining phase space.
12668           IF(IP.EQ.1) THEN
12669             CKIN45=CKIN(45)
12670             CKIN47=CKIN(47)
12671             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
12672             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
12673             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
12674      &      P(N+IWID2,5))
12675             CKIN(45)=CKIN45
12676             CKIN(47)=CKIN47
12677           ELSE
12678             CKIN(49)=PMMN(IWID1)
12679             CKIN(50)=PMMN(IWID2)
12680             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
12681      &      P(N+IWID2,5))
12682             CKIN(49)=0D0
12683             CKIN(50)=0D0
12684           ENDIF
12685           IF(MINT(51).EQ.1) GOTO 700
12686         ENDIF
12687  
12688 C...Begin fill decay products, with colour flow for coloured objects.
12689         MSTU10=MSTU(10)
12690         MSTU(10)=1
12691         MSTU(19)=1
12692  
12693 CMRENNA++
12694 C...1) Three-body decays of SUSY particles (plus special case top).
12695         IF(KFL3(JT).NE.0) THEN
12696           DO 230 I=N+1,N+3
12697             DO 220 J=1,5
12698               K(I,J)=0
12699               V(I,J)=0D0
12700   220       CONTINUE
12701   230     CONTINUE
12702           K(N+1,1)=1
12703           K(N+1,2)=KFL1(JT)
12704           K(N+2,1)=1
12705           K(N+2,2)=KFL2(JT)
12706           K(N+3,1)=1
12707           K(N+3,2)=KFL3(JT)
12708           IDIN=ID
12709           CALL PYTBDY(IDIN)
12710  
12711 C...Set colour flow for t -> W + b + Z.
12712           IF(KFA.EQ.6) THEN
12713             K(N+2,1)=3
12714             ISID=4
12715             IF(KCQM(JT).EQ.-1) ISID=5
12716             IDAU=N+2
12717             K(ID,ISID)=K(ID,ISID)+IDAU
12718             K(IDAU,ISID)=MSTU(5)*ID
12719  
12720 C...Set colour flow in three-body decays - programmed as special cases.
12721           ELSEIF(KFC2A.LE.6) THEN
12722             K(N+2,1)=3
12723             K(N+3,1)=3
12724             ISID=4
12725             IF(KFL2(JT).LT.0) ISID=5
12726             K(N+2,ISID)=MSTU(5)*(N+3)
12727             K(N+3,9-ISID)=MSTU(5)*(N+2)
12728           ENDIF
12729           IF(KFL1(JT).EQ.KSUSY1+21) THEN
12730             K(N+1,1)=3
12731             K(N+2,1)=3
12732             K(N+3,1)=3
12733             ISID=4
12734             IF(KFL2(JT).LT.0) ISID=5
12735             K(N+1,ISID)=MSTU(5)*(N+2)
12736             K(N+1,9-ISID)=MSTU(5)*(N+3)
12737             K(N+2,ISID)=MSTU(5)*(N+1)
12738             K(N+3,9-ISID)=MSTU(5)*(N+1)
12739           ENDIF
12740           IF(KFA.EQ.KSUSY1+21) THEN
12741             K(N+2,1)=3
12742             K(N+3,1)=3
12743             ISID=4
12744             IF(KFL2(JT).LT.0) ISID=5
12745             K(ID,ISID)=K(ID,ISID)+(N+2)
12746             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
12747             K(N+2,ISID)=MSTU(5)*ID
12748             K(N+3,9-ISID)=MSTU(5)*ID
12749           ENDIF
12750 CMRENNA--
12751  
12752           IF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
12753      &    IABS(KCQ2(JT)).EQ.1) THEN
12754             K(N+2,1)=3
12755             K(N+3,1)=3
12756             ISID=4
12757             IF(KFL2(JT).LT.0) ISID=5
12758             K(N+2,ISID)=MSTU(5)*(N+3)
12759             K(N+3,9-ISID)=MSTU(5)*(N+2)
12760           ENDIF
12761  
12762 C...Set colour flow in three-body decays with baryon number violation.
12763 C...Neutralino and chargino decays first.
12764           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
12765           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
12766             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
12767             K(N+4,4)=ITJUNC(JT)*MSTU(5)
12768 C...Insert junction to keep track of colours.
12769             IF(KCQ1(JT).NE.0) K(N+1,1)=3
12770             IF(KCQ2(JT).NE.0) K(N+2,1)=3
12771             IF(KCQ3(JT).NE.0) K(N+3,1)=3
12772 C...Set special junction codes:
12773             K(N+4,1)=42
12774             K(N+4,2)=88
12775  
12776 C...Order decay products by invariant mass. (will be used in PYSTRF).
12777             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)-
12778      &      P(N+1,3)*P(N+2,3)
12779             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)-
12780      &      P(N+1,3)*P(N+3,3)
12781             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)-
12782      &      P(N+2,3)*P(N+3,3)
12783             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
12784               K(N+4,4)=N+3+K(N+4,4)
12785               K(N+4,5)=N+1+MSTU(5)*(N+2)
12786             ELSEIF(PM13.LT.PM23) THEN
12787               K(N+4,4)=N+2+K(N+4,4)
12788               K(N+4,5)=N+1+MSTU(5)*(N+3)
12789             ELSE
12790               K(N+4,4)=N+1+K(N+4,4)
12791               K(N+4,5)=N+2+MSTU(5)*(N+3)
12792             ENDIF
12793             DO 240 J=1,5
12794               P(N+4,J)=0D0
12795               V(N+4,J)=0D0
12796   240       CONTINUE
12797 C...Connect daughters to junction.
12798             DO 250 II=N+1,N+3
12799               K(II,4)=0
12800               K(II,5)=0
12801               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
12802   250       CONTINUE
12803 C...Particle counter should be stepped up one extra for junction.
12804             N=N+1
12805  
12806 C...Gluino decays.
12807           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
12808             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
12809             K(N+4,4)=ITJUNC(JT)*MSTU(5)
12810 C...Insert junction to keep track of colours.
12811             IF(KCQ1(JT).NE.0) K(N+1,1)=3
12812             IF(KCQ2(JT).NE.0) K(N+2,1)=3
12813             IF(KCQ3(JT).NE.0) K(N+3,1)=3
12814             K(N+4,1)=42
12815             K(N+4,2)=88
12816             DO 260 J=1,5
12817               P(N+4,J)=0D0
12818               V(N+4,J)=0D0
12819   260       CONTINUE
12820             CTMSUM=0D0
12821             DO 270 II=N+1,N+3
12822               K(II,4)=0
12823               K(II,5)=0
12824 C...Start by connecting all daughters to junction.
12825               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
12826 C...Only consider colour topologies with off shell resonances.
12827               RMQ1=PMAS(PYCOMP(K(II,2)),1)
12828               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
12829               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
12830               IF (RMGLU-RMQ1.LT.RMRES) THEN
12831 C...Calculate propagators for each colour topology.
12832                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
12833      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
12834                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
12835               ELSE
12836                 CTM2(II-N)=0D0
12837               ENDIF
12838               CTMSUM=CTMSUM+CTM2(II-N)
12839   270       CONTINUE
12840             CTMSUM=PYR(0)*CTMSUM
12841 C...Select colour topology J, with most off shell least likely.
12842             J=0
12843   280       J=J+1
12844             CTMSUM=CTMSUM-CTM2(J)
12845             IF (CTMSUM.GT.0D0) GOTO 280
12846 C...The lucky winner gets its colour (anti-colour) directly from gluino.
12847             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
12848             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
12849 C...The other gluino colour is connected to junction
12850             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
12851      &      MSTU(5)
12852             K(N+4,4)=K(N+4,4)+ID
12853 C...Lastly, connect junction to remaining daughters.
12854             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
12855 C...Particle counter should be stepped up one extra for junction.
12856             N=N+1
12857          ENDIF
12858  
12859 C...Update particle counter.
12860           N=N+3
12861  
12862 C...2) Everything else two-body decay.
12863         ELSE
12864           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
12865 C...First set colour flow as if mother colour singlet.
12866           IF(KCQ1(JT).NE.0) THEN
12867             K(N-1,1)=3
12868             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
12869             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
12870           ENDIF
12871           IF(KCQ2(JT).NE.0) THEN
12872             K(N,1)=3
12873             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
12874             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
12875           ENDIF
12876 C...Then redirect colour flow if mother (anti)triplet.
12877           IF(KCQM(JT).EQ.0) THEN
12878           ELSEIF(KCQM(JT).NE.2) THEN
12879             ISID=4
12880             IF(KCQM(JT).EQ.-1) ISID=5
12881             IDAU=N-1
12882             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
12883             K(ID,ISID)=K(ID,ISID)+IDAU
12884             K(IDAU,ISID)=MSTU(5)*ID
12885 C...Then redirect colour flow if mother octet.
12886           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
12887             IDAU=N-1
12888             IF(KCQ1(JT).EQ.0) IDAU=N
12889             K(ID,4)=K(ID,4)+IDAU
12890             K(ID,5)=K(ID,5)+IDAU
12891             K(IDAU,4)=MSTU(5)*ID
12892             K(IDAU,5)=MSTU(5)*ID
12893           ELSE
12894             ISID=4
12895             IF(KCQ1(JT).EQ.-1) ISID=5
12896             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
12897             K(ID,ISID)=K(ID,ISID)+(N-1)
12898             K(ID,9-ISID)=K(ID,9-ISID)+N
12899             K(N-1,ISID)=MSTU(5)*ID
12900             K(N,9-ISID)=MSTU(5)*ID
12901           ENDIF
12902  
12903 C...Insert junction
12904           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
12905             N=N+1
12906 C...~q* mother: type 3 junction. ~q mother: type 4.
12907             ITJUNC(JT)=(7+KCQM(JT))/2
12908 C...Specify junction KF and set colour flow from junction
12909             K(N,1)=42
12910             K(N,2)=88
12911             K(N,3)=ID
12912 C...Junction type encoded together with mother:
12913             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
12914             K(N,5)=N-1+MSTU(5)*(N-2)
12915 C...Zero P and V for junction (V filled later)
12916             DO 290 J=1,5
12917               P(N,J)=0D0
12918               V(N,J)=0D0
12919   290       CONTINUE
12920 C...Set colour flow from mother to junction
12921             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
12922 C...Set colour flow from daughters to junction
12923             DO 300 II=N-2,N-1
12924               K(II,4) = 0
12925               K(II,5) = 0
12926 C...(Anti-)colour mother is junction.
12927               K(II,1+ITJUNC(JT)) = MSTU(5)*(N)
12928   300       CONTINUE
12929           ENDIF
12930         ENDIF
12931  
12932 C...End loop over resonances for daughter flavour and mass selection.
12933         MSTU(10)=MSTU10
12934   310   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
12935      &  NINH=NINH+1
12936         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
12937      &  KFL1(JT).EQ.0) THEN
12938           WRITE(CODE,'(I9)') K(ID,2)
12939           WRITE(MASS,'(F9.3)') P(ID,5)
12940           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
12941      &    CODE//' with mass'//MASS)
12942           MINT(51)=1
12943           GOTO 700
12944         ENDIF
12945   320 CONTINUE
12946  
12947 C...Check for allowed combinations. Skip if no decays.
12948       IF(JTMAX.EQ.1) THEN
12949         IF(KDCY(1).EQ.0) GOTO 690
12950       ELSEIF(JTMAX.EQ.2) THEN
12951         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 690
12952         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 160
12953         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 160
12954       ELSEIF(JTMAX.EQ.3) THEN
12955         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 690
12956         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 160
12957         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 160
12958         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 160
12959         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 160
12960         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 160
12961         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 160
12962       ENDIF
12963  
12964 C...Special case: matrix element option for Z0 decay to quarks.
12965       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
12966      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
12967  
12968 C...Check consistency of MSTJ options set.
12969         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
12970           CALL PYERRM(6,
12971      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
12972           MSTJ(110)=1
12973         ENDIF
12974         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
12975           CALL PYERRM(6,
12976      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
12977  
12978           MSTJ(111)=0
12979         ENDIF
12980  
12981 C...Select alpha_strong behaviour.
12982         MST111=MSTU(111)
12983         PAR112=PARU(112)
12984         MSTU(111)=MSTJ(108)
12985         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
12986      &  MSTU(111)=1
12987         PARU(112)=PARJ(121)
12988         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
12989  
12990 C...Find axial fraction in total cross section for scalar gluon model.
12991         PARJ(171)=0D0
12992         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
12993      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
12994           POLL=1D0-PARJ(131)*PARJ(132)
12995           SFF=1D0/(16D0*XW*XW1)
12996           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
12997      &    (PARJ(123)*PARJ(124))**2)
12998           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
12999           VE=4D0*XW-1D0
13000           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
13001           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
13002      &    (PARJ(132)-PARJ(131)))
13003           KFLC=IABS(KFL1(1))
13004           PMQ=PYMASS(KFLC)
13005           QF=KCHG(KFLC,1)/3D0
13006           VQ=1D0
13007           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
13008      &    1D0-(2D0*PMQ/P(ID,5))**2))
13009           VF=SIGN(1D0,QF)-4D0*QF*XW
13010           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
13011      &    VF**2*HF1W)+VQ**3*HF1W
13012           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
13013         ENDIF
13014  
13015 C...Choice of jet configuration.
13016         CALL PYXJET(P(ID,5),NJET,CUT)
13017         KFLC=IABS(KFL1(1))
13018         KFLN=21
13019  
13020         IF(NJET.EQ.4) THEN
13021           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
13022         ELSEIF(NJET.EQ.3) THEN
13023           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
13024         ELSE
13025           MSTJ(120)=1
13026         ENDIF
13027  
13028 C...Fill jet configuration; return if incorrect kinematics.
13029         NC=N-2
13030         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
13031           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
13032         ELSEIF(NJET.EQ.2) THEN
13033           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
13034         ELSEIF(NJET.EQ.3) THEN
13035           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
13036         ELSEIF(KFLN.EQ.21) THEN
13037           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
13038      &    X12,X14)
13039         ELSE
13040           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
13041      &    X12,X14)
13042         ENDIF
13043         IF(MSTU(24).NE.0) THEN
13044           MINT(51)=1
13045           MSTU(111)=MST111
13046           PARU(112)=PAR112
13047           GOTO 700
13048         ENDIF
13049  
13050 C...Angular orientation according to matrix element.
13051         IF(MSTJ(106).EQ.1) THEN
13052           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
13053           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
13054           CTHE(1)=COS(THEZ)
13055           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
13056           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
13057         ENDIF
13058  
13059 C...Boost partons to Z0 rest frame.
13060         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
13061      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
13062  
13063 C...Mark decayed resonance and add documentation lines,
13064         K(ID,1)=K(ID,1)+10
13065         IDOC=MINT(83)+MINT(4)
13066         DO 340 I=NC+1,N
13067           I1=MINT(83)+MINT(4)+1
13068           K(I,3)=I1
13069           IF(MSTP(128).GE.1) K(I,3)=ID
13070           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
13071             MINT(4)=MINT(4)+1
13072             K(I1,1)=21
13073             K(I1,2)=K(I,2)
13074             K(I1,3)=IREF(IP,4)
13075             DO 330 J=1,5
13076               P(I1,J)=P(I,J)
13077   330       CONTINUE
13078           ENDIF
13079   340   CONTINUE
13080  
13081 C...Generate parton shower.
13082         IF(MSTJ(101).EQ.5) CALL PYSHOW(N-1,N,P(ID,5))
13083  
13084 C... End special case for Z0: skip ahead.
13085         MSTU(111)=MST111
13086         PARU(112)=PAR112
13087         GOTO 680
13088       ENDIF
13089  
13090 C...Order incoming partons and outgoing resonances.
13091       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
13092      &NINH.EQ.0) THEN
13093         ILIN(1)=MINT(84)+1
13094         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
13095         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
13096      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
13097         ILIN(2)=2*MINT(84)+3-ILIN(1)
13098         IMIN=1
13099         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
13100      &  .EQ.36) IMIN=3
13101         IMAX=2
13102         IORD=1
13103         IF(K(IREF(IP,1),2).EQ.23) IORD=2
13104         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
13105         IAKIPD=IABS(K(IREF(IP,IORD),2))
13106         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
13107         IF(KDCY(IORD).EQ.0) IORD=3-IORD
13108  
13109 C...Order decay products of resonances.
13110         DO 350 JT=IORD,3-IORD,3-2*IORD
13111           IF(KDCY(JT).EQ.0) THEN
13112             ILIN(IMAX+1)=NSD(JT)
13113             IMAX=IMAX+1
13114           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
13115             ILIN(IMAX+1)=N+2*JT-1
13116             ILIN(IMAX+2)=N+2*JT
13117             IMAX=IMAX+2
13118             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
13119             K(N+2*JT,2)=K(NSD(JT)+2,2)
13120           ELSE
13121             ILIN(IMAX+1)=N+2*JT
13122  
13123             ILIN(IMAX+2)=N+2*JT-1
13124             IMAX=IMAX+2
13125             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
13126             K(N+2*JT,2)=K(NSD(JT)+2,2)
13127           ENDIF
13128   350   CONTINUE
13129  
13130 C...Find charge, isospin, left- and righthanded couplings.
13131         DO 370 I=IMIN,IMAX
13132           DO 360 J=1,4
13133             COUP(I,J)=0D0
13134   360     CONTINUE
13135           KFA=IABS(K(ILIN(I),2))
13136           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 370
13137           COUP(I,1)=KCHG(KFA,1)/3D0
13138           COUP(I,2)=(-1)**MOD(KFA,2)
13139           COUP(I,4)=-2D0*COUP(I,1)*XWV
13140           COUP(I,3)=COUP(I,2)+COUP(I,4)
13141   370   CONTINUE
13142  
13143 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
13144         IF(ISUB.EQ.22) THEN
13145           DO 400 I=3,5,2
13146             I1=IORD
13147             IF(I.EQ.5) I1=3-IORD
13148             DO 390 J1=1,2
13149               DO 380 J2=1,2
13150                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
13151      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
13152      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
13153      &          COUP(I,J2+2)**2
13154   380         CONTINUE
13155   390       CONTINUE
13156   400     CONTINUE
13157           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
13158      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
13159           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
13160      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
13161  
13162           IF(COWT12.LT.PYR(0)*COMX12) GOTO 160
13163         ENDIF
13164       ENDIF
13165  
13166 C...Select angular orientation type - Z'/W' only.
13167       MZPWP=0
13168       IF(ISUB.EQ.141) THEN
13169         IF(PYR(0).LT.PARU(130)) MZPWP=1
13170         IF(IP.EQ.2) THEN
13171           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
13172           IAKIR=IABS(K(IREF(2,2),2))
13173           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
13174           IF(IAKIR.LE.20) MZPWP=2
13175         ENDIF
13176         IF(IP.GE.3) MZPWP=2
13177       ELSEIF(ISUB.EQ.142) THEN
13178         IF(PYR(0).LT.PARU(136)) MZPWP=1
13179         IF(IP.EQ.2) THEN
13180           IAKIR=IABS(K(IREF(2,2),2))
13181           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
13182           IF(IAKIR.LE.20) MZPWP=2
13183         ENDIF
13184         IF(IP.GE.3) MZPWP=2
13185       ENDIF
13186  
13187 C...Select random angles (begin of weighting procedure).
13188   410 DO 420 JT=1,JTMAX
13189         IF(KDCY(JT).EQ.0) GOTO 420
13190         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
13191           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
13192           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
13193           PHI(JT)=VINT(24)
13194         ELSE
13195           CTHE(JT)=2D0*PYR(0)-1D0
13196           PHI(JT)=PARU(2)*PYR(0)
13197         ENDIF
13198   420 CONTINUE
13199  
13200       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
13201 C...Construct massless four-vectors.
13202         DO 440 I=N+1,N+4
13203           K(I,1)=1
13204           DO 430 J=1,5
13205             P(I,J)=0D0
13206             V(I,J)=0D0
13207   430     CONTINUE
13208   440   CONTINUE
13209         DO 450 JT=1,JTMAX
13210           IF(KDCY(JT).EQ.0) GOTO 450
13211           ID=IREF(IP,JT)
13212           P(N+2*JT-1,3)=0.5D0*P(ID,5)
13213           P(N+2*JT-1,4)=0.5D0*P(ID,5)
13214           P(N+2*JT,3)=-0.5D0*P(ID,5)
13215           P(N+2*JT,4)=0.5D0*P(ID,5)
13216           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
13217      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
13218   450   CONTINUE
13219  
13220 C...Store incoming and outgoing momenta, with random rotation to
13221 C...avoid accidental zeroes in HA expressions.
13222         IF(ISUB.NE.0) THEN
13223           DO 470 I=IMIN,IMAX
13224             K(N+4+I,1)=1
13225             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
13226      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
13227             P(N+4+I,5)=P(ILIN(I),5)
13228             DO 460 J=1,3
13229               P(N+4+I,J)=P(ILIN(I),J)
13230   460       CONTINUE
13231   470     CONTINUE
13232   480     THERR=ACOS(2D0*PYR(0)-1D0)
13233           PHIRR=PARU(2)*PYR(0)
13234           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
13235           DO 500 I=IMIN,IMAX
13236             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*P(N+4+I,4)**2)
13237      &      GOTO 480
13238             DO 490 J=1,4
13239               PK(I,J)=P(N+4+I,J)
13240   490       CONTINUE
13241   500     CONTINUE
13242         ENDIF
13243  
13244 C...Calculate internal products.
13245         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
13246      &  ISUB.EQ.142) THEN
13247           DO 520 I1=IMIN,IMAX-1
13248             DO 510 I2=I1+1,IMAX
13249               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
13250      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
13251      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
13252      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
13253      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
13254      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
13255               HC(I1,I2)=CONJG(HA(I1,I2))
13256               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
13257               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
13258               HA(I2,I1)=-HA(I1,I2)
13259               HC(I2,I1)=-HC(I1,I2)
13260   510       CONTINUE
13261   520     CONTINUE
13262         ENDIF
13263  
13264 C...Calculate four-products.
13265         IF(ISUB.NE.0) THEN
13266           DO 540 I=1,2
13267             DO 530 J=1,4
13268               PK(I,J)=-PK(I,J)
13269   530       CONTINUE
13270   540     CONTINUE
13271           DO 560 I1=IMIN,IMAX-1
13272             DO 550 I2=I1+1,IMAX
13273               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
13274      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
13275               PKK(I2,I1)=PKK(I1,I2)
13276   550       CONTINUE
13277   560     CONTINUE
13278         ENDIF
13279       ENDIF
13280  
13281       KFAGM=IABS(IREF(IP,7))
13282       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
13283 C...Isotropic decay selected by user.
13284         WT=1D0
13285         WTMAX=1D0
13286  
13287       ELSEIF(JTMAX.EQ.3) THEN
13288 C...Isotropic decay when three mother particles.
13289         WT=1D0
13290         WTMAX=1D0
13291  
13292       ELSEIF(IT4.GE.1) THEN
13293 C... Isotropic decay t -> b + W etc for 4th generation q and l.
13294         WT=1D0
13295         WTMAX=1D0
13296  
13297       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
13298      &  IREF(IP,7).EQ.36) THEN
13299 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
13300 C...CP-odd case added by Kari Ertresvag Myklevoll.
13301         IF(IP.EQ.1) WTMAX=SH**2
13302         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
13303         KFA=IABS(K(IREF(IP,1),2))
13304         IF(KFA.EQ.23) THEN
13305           KFLF1A=IABS(KFL1(1))
13306           EF1=KCHG(KFLF1A,1)/3D0
13307           AF1=SIGN(1D0,EF1+0.1D0)
13308           VF1=AF1-4D0*EF1*XWV
13309           KFLF2A=IABS(KFL1(2))
13310           EF2=KCHG(KFLF2A,1)/3D0
13311           AF2=SIGN(1D0,EF2+0.1D0)
13312           VF2=AF2-4D0*EF2*XWV
13313           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)
13314      &      *(VF2**2+AF2**2))
13315           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
13316      &      THEN
13317 C...CP-even decay
13318             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
13319      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
13320           ELSE
13321 C...CP-odd decay
13322             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
13323      &        -2*PKK(3,4)*PKK(5,6)
13324      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
13325      &        (PKK(3,4)*PKK(5,6))
13326      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
13327      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
13328           ENDIF
13329         ELSEIF(KFA.EQ.24) THEN
13330           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
13331      &      THEN
13332 C...CP-even decay
13333             WT=16D0*PKK(3,5)*PKK(4,6)
13334           ELSE
13335 C...CP-odd decay
13336             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
13337      &        -2*PKK(3,4)*PKK(5,6)
13338      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
13339      &        (PKK(3,4)*PKK(5,6))
13340      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
13341      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
13342           ENDIF
13343         ELSE
13344             WT=WTMAX
13345         ENDIF
13346  
13347       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
13348      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
13349      &  THEN
13350 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
13351         I1=IREF(IP,8)
13352         IF(MOD(KFAGM,2).EQ.0) THEN
13353           I2=N+1
13354           I3=N+2
13355         ELSE
13356           I2=N+2
13357           I3=N+1
13358         ENDIF
13359         I4=IREF(IP,2)
13360         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
13361      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
13362      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
13363         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
13364  
13365       ELSEIF(ISUB.EQ.1) THEN
13366 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
13367         EI=KCHG(IABS(MINT(15)),1)/3D0
13368         AI=SIGN(1D0,EI+0.1D0)
13369         VI=AI-4D0*EI*XWV
13370         EF=KCHG(IABS(KFL1(1)),1)/3D0
13371         AF=SIGN(1D0,EF+0.1D0)
13372  
13373         VF=AF-4D0*EF*XWV
13374         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
13375         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13376      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
13377         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13378      &  (VI**2+AI**2)*VINT(114)*VF**2)
13379         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
13380      &  4D0*VI*AI*VINT(114)*VF*AF)
13381         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
13382      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
13383         WTMAX=2D0*(WT1+ABS(WT3))
13384  
13385       ELSEIF(ISUB.EQ.2) THEN
13386 C...Angular weight for W+/- -> 2 quarks/leptons.
13387         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
13388         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
13389         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
13390         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
13391         WTMAX=4D0
13392  
13393       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
13394 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
13395 C...-> gluon/gamma + 2 quarks/leptons.
13396         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13397      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13398      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
13399         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13400      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13401      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
13402         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13403      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13404      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
13405         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13406      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13407      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
13408         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
13409      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
13410         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
13411      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
13412  
13413       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
13414 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
13415 C...-> gluon/gamma + 2 quarks/leptons.
13416         WT=PKK(1,3)**2+PKK(2,4)**2
13417         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
13418  
13419       ELSEIF(ISUB.EQ.22) THEN
13420 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
13421         S34=P(IREF(IP,IORD),5)**2
13422         S56=P(IREF(IP,3-IORD),5)**2
13423         TI=PKK(1,3)+PKK(1,4)+S34
13424         UI=PKK(1,5)+PKK(1,6)+S56
13425         TIR=REAL(TI)
13426         UIR=REAL(UI)
13427         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
13428         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
13429         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
13430         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
13431         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
13432         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
13433         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
13434         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
13435  
13436         WT=
13437      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
13438      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
13439      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
13440      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
13441         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
13442      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
13443      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
13444      &  1D0/UI**2))
13445  
13446       ELSEIF(ISUB.EQ.23) THEN
13447 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
13448         D34=P(IREF(IP,IORD),5)**2
13449         D56=P(IREF(IP,3-IORD),5)**2
13450         DT=PKK(1,3)+PKK(1,4)+D34
13451         DU=PKK(1,5)+PKK(1,6)+D56
13452         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
13453         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
13454         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
13455         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
13456  
13457      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
13458         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
13459      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
13460         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
13461         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
13462      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
13463  
13464       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
13465 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
13466 C...(or H0, or A0).
13467         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
13468      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
13469      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
13470         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
13471      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
13472  
13473       ELSEIF(ISUB.EQ.25) THEN
13474 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
13475         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
13476         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
13477         D34=P(IREF(IP,IORD),5)**2
13478         D56=P(IREF(IP,3-IORD),5)**2
13479         DT=PKK(1,3)+PKK(1,4)+D34
13480         DU=PKK(1,5)+PKK(1,6)+D56
13481         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
13482         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
13483         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
13484         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
13485         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
13486         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
13487      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
13488         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
13489         IF(MSTP(50).LE.0) THEN
13490           WT=FGK135**2+(CCWW*FGK253)**2
13491           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
13492      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
13493      &    DJGK(DT,DU)))
13494         ELSE
13495           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
13496           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
13497      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
13498      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
13499         ENDIF
13500  
13501       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
13502 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
13503 C...(or H0, or A0).
13504         WT=PKK(1,3)*PKK(2,4)
13505         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
13506  
13507       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
13508 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
13509 C...-> f + 2 quarks/leptons.
13510         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13511      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13512      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
13513         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13514      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13515      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
13516         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13517      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13518      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
13519         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13520      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13521      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
13522         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
13523      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
13524         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
13525      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
13526         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
13527      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
13528  
13529       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
13530 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
13531         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
13532         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
13533         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
13534  
13535       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
13536      &  ISUB.EQ.77) THEN
13537 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
13538         WT=16D0*PKK(3,5)*PKK(4,6)
13539         WTMAX=SH**2
13540  
13541       ELSEIF(ISUB.EQ.110) THEN
13542 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
13543         WT=1D0
13544         WTMAX=1D0
13545  
13546       ELSEIF(ISUB.EQ.141) THEN
13547         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
13548 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
13549 C...Couplings of incoming flavour.
13550           KFAI=IABS(MINT(15))
13551           EI=KCHG(KFAI,1)/3D0
13552           AI=SIGN(1D0,EI+0.1D0)
13553           VI=AI-4D0*EI*XWV
13554           KFAIC=1
13555           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
13556           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
13557           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
13558           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
13559             VPI=PARU(119+2*KFAIC)
13560             API=PARU(120+2*KFAIC)
13561           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
13562             VPI=PARJ(178+2*KFAIC)
13563             API=PARJ(179+2*KFAIC)
13564           ELSE
13565             VPI=PARJ(186+2*KFAIC)
13566             API=PARJ(187+2*KFAIC)
13567           ENDIF
13568 C...Couplings of final flavour.
13569           KFAF=IABS(KFL1(1))
13570           EF=KCHG(KFAF,1)/3D0
13571           AF=SIGN(1D0,EF+0.1D0)
13572           VF=AF-4D0*EF*XWV
13573           KFAFC=1
13574           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
13575           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
13576           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
13577           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
13578             VPF=PARU(119+2*KFAFC)
13579             APF=PARU(120+2*KFAFC)
13580           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
13581             VPF=PARJ(178+2*KFAFC)
13582             APF=PARJ(179+2*KFAFC)
13583           ELSE
13584             VPF=PARJ(186+2*KFAFC)
13585             APF=PARJ(187+2*KFAFC)
13586           ENDIF
13587 C...Asymmetry and weight.
13588           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
13589      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
13590      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
13591      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13592      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
13593      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
13594      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
13595           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
13596           WTMAX=2D0+ABS(ASYM)
13597         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
13598 C...Angular weight for f + fbar -> Z' -> W+ + W-.
13599           RM1=P(NSD(1)+1,5)**2/SH
13600           RM2=P(NSD(1)+2,5)**2/SH
13601           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
13602      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
13603           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
13604      &    (RM2-RM1)**2)
13605           WT=CFLAT+CCOS2*CTHE(1)**2
13606           WTMAX=CFLAT+MAX(0D0,CCOS2)
13607         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
13608      &    IABS(KFL1(1)).EQ.37)) THEN
13609 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
13610           WT=1D0-CTHE(1)**2
13611           WTMAX=1D0
13612         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
13613 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
13614           RM1=P(NSD(1)+1,5)**2/SH
13615           RM2=P(NSD(1)+2,5)**2/SH
13616           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
13617           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
13618           WTMAX=1D0+FLAM2/(8D0*RM1)
13619         ELSEIF(MZPWP.EQ.0) THEN
13620 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
13621 C...(W:s like if intermediate Z).
13622           D34=P(IREF(IP,IORD),5)**2
13623           D56=P(IREF(IP,3-IORD),5)**2
13624           DT=PKK(1,3)+PKK(1,4)+D34
13625           DU=PKK(1,5)+PKK(1,6)+D56
13626           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
13627           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
13628           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
13629           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
13630      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
13631         ELSEIF(MZPWP.EQ.1) THEN
13632 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
13633 C...(W:s approximately longitudinal, like if intermediate H).
13634           WT=16D0*PKK(3,5)*PKK(4,6)
13635           WTMAX=SH**2
13636         ELSE
13637 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
13638 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
13639           WT=1D0
13640           WTMAX=1D0
13641         ENDIF
13642  
13643       ELSEIF(ISUB.EQ.142) THEN
13644         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
13645 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
13646           KFAI=IABS(MINT(15))
13647           KFAIC=1
13648           IF(KFAI.GT.10) KFAIC=2
13649           VI=PARU(129+2*KFAIC)
13650           AI=PARU(130+2*KFAIC)
13651           KFAF=IABS(KFL1(1))
13652           KFAFC=1
13653           IF(KFAF.GT.10) KFAFC=2
13654           VF=PARU(129+2*KFAFC)
13655           AF=PARU(130+2*KFAFC)
13656           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
13657           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
13658           WTMAX=2D0+ABS(ASYM)
13659         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
13660 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
13661           RM1=P(NSD(1)+1,5)**2/SH
13662           RM2=P(NSD(1)+2,5)**2/SH
13663           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
13664      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
13665           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
13666      &    (RM2-RM1)**2)
13667           WT=CFLAT+CCOS2*CTHE(1)**2
13668           WTMAX=CFLAT+MAX(0D0,CCOS2)
13669         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
13670 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
13671           RM1=P(NSD(1)+1,5)**2/SH
13672           RM2=P(NSD(1)+2,5)**2/SH
13673           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
13674           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
13675           WTMAX=1D0+FLAM2/(8D0*RM1)
13676         ELSEIF(MZPWP.EQ.0) THEN
13677 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
13678 C...(W/Z like if intermediate W).
13679           D34=P(IREF(IP,IORD),5)**2
13680           D56=P(IREF(IP,3-IORD),5)**2
13681           DT=PKK(1,3)+PKK(1,4)+D34
13682           DU=PKK(1,5)+PKK(1,6)+D56
13683           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
13684           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
13685           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
13686           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
13687      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
13688         ELSEIF(MZPWP.EQ.1) THEN
13689 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
13690 C...(W/Z approximately longitudinal, like if intermediate H).
13691           WT=16D0*PKK(3,5)*PKK(4,6)
13692           WTMAX=SH**2
13693         ELSE
13694 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
13695 C...t + bbar -> t + W + bbar.
13696           WT=1D0
13697           WTMAX=1D0
13698         ENDIF
13699  
13700       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
13701      &  THEN
13702 C...Isotropic decay of leptoquarks (assumed spin 0).
13703         WT=1D0
13704         WTMAX=1D0
13705  
13706       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
13707 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
13708         SIDE=1D0
13709         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
13710         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
13711           WT=1D0+SIDE*CTHE(1)
13712           WTMAX=2D0
13713         ELSEIF(IP.EQ.1) THEN
13714  
13715           RM1=P(NSD(1)+1,5)**2/SH
13716           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
13717           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
13718         ELSE
13719 C...W/Z decay assumed isotropic, since not known.
13720           WT=1D0
13721           WTMAX=1D0
13722         ENDIF
13723  
13724       ELSEIF(ISUB.EQ.149) THEN
13725 C...Isotropic decay of techni-eta.
13726         WT=1D0
13727         WTMAX=1D0
13728  
13729       ELSEIF(ISUB.EQ.191) THEN
13730         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13731 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
13732 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
13733           WT=1D0-CTHE(1)**2
13734           WTMAX=1D0
13735         ELSEIF(IP.EQ.1) THEN
13736 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
13737           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13738           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
13739           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
13740           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
13741           KFAI=IABS(MINT(15))
13742           EI=KCHG(KFAI,1)/3D0
13743           AI=SIGN(1D0,EI+0.1D0)
13744           VI=AI-4D0*EI*XWV
13745           VALI=0.5D0*(VI+AI)
13746           VARI=0.5D0*(VI-AI)
13747           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
13748           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
13749           KFAF=IABS(KFL1(1))
13750           EF=KCHG(KFAF,1)/3D0
13751           AF=SIGN(1D0,EF+0.1D0)
13752           VF=AF-4D0*EF*XWV
13753           VALF=0.5D0*(VF+AF)
13754           VARF=0.5D0*(VF-AF)
13755           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
13756           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
13757           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
13758           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
13759           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
13760           WTMAX=4D0*MAX(ASAME,AFLIP)
13761         ELSE
13762 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
13763           WT=1D0
13764           WTMAX=1D0
13765         ENDIF
13766  
13767       ELSEIF(ISUB.EQ.192) THEN
13768         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13769 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
13770 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
13771           WT=1D0-CTHE(1)**2
13772           WTMAX=1D0
13773         ELSEIF(IP.EQ.1) THEN
13774 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
13775           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13776           WT=(1D0+CTHESG)**2
13777           WTMAX=4D0
13778         ELSE
13779 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
13780           WT=1D0
13781           WTMAX=1D0
13782         ENDIF
13783  
13784       ELSEIF(ISUB.EQ.193) THEN
13785         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13786 C...Angular weight for f + fbar -> omega_tc0 ->
13787 C...gamma pi_tc0 or Z0 pi_tc0.
13788           WT=1D0+CTHE(1)**2
13789           WTMAX=2D0
13790         ELSEIF(IP.EQ.1) THEN
13791 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
13792           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13793           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
13794           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
13795           KFAI=IABS(MINT(15))
13796           EI=KCHG(KFAI,1)/3D0
13797           AI=SIGN(1D0,EI+0.1D0)
13798           VI=AI-4D0*EI*XWV
13799           VALI=0.5D0*(VI+AI)
13800           VARI=0.5D0*(VI-AI)
13801           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
13802           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
13803           KFAF=IABS(KFL1(1))
13804           EF=KCHG(KFAF,1)/3D0
13805           AF=SIGN(1D0,EF+0.1D0)
13806           VF=AF-4D0*EF*XWV
13807           VALF=0.5D0*(VF+AF)
13808           VARF=0.5D0*(VF-AF)
13809           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
13810           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
13811           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
13812           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
13813           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
13814           WTMAX=4D0*MAX(BSAME,BFLIP)
13815         ELSE
13816 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
13817           WT=1D0
13818           WTMAX=1D0
13819         ENDIF
13820  
13821       ELSEIF(ISUB.EQ.353) THEN
13822 C...Angular weight for Z_R0 -> 2 quarks/leptons.
13823         EI=KCHG(IABS(MINT(15)),1)/3D0
13824         AI=SIGN(1D0,EI+0.1D0)
13825         VI=AI-4D0*EI*XWV
13826         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
13827         AF=SIGN(1D0,EF+0.1D0)
13828         VF=AF-4D0*EF*XWV
13829         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
13830         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
13831         WT2=RMF*(VI**2+AI**2)*VF**2
13832         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
13833         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
13834      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
13835         WTMAX=2D0*(WT1+ABS(WT3))
13836  
13837       ELSEIF(ISUB.EQ.354) THEN
13838 C...Angular weight for W_R+/- -> 2 quarks/leptons.
13839         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
13840         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
13841         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
13842         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
13843         WTMAX=4D0
13844  
13845       ELSEIF(ISUB.EQ.391) THEN
13846 C...Angular weight for f + fbar -> G* -> f + fbar
13847         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
13848           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
13849           WTMAX=2D0
13850 C...Other G* decays not yet implemented angular distributions.
13851         ELSE
13852           WT=1D0
13853           WTMAX=1D0
13854         ENDIF
13855  
13856       ELSEIF(ISUB.EQ.392) THEN
13857 C...Angular weight for g + g -> G* -> f + fbar
13858         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
13859           WT=1D0-CTHE(1)**4
13860           WTMAX=1D0
13861 C...Other G* decays not yet implemented angular distributions.
13862         ELSE
13863           WT=1D0
13864           WTMAX=1D0
13865         ENDIF
13866  
13867 C...Obtain correct angular distribution by rejection techniques.
13868       ELSE
13869         WT=1D0
13870         WTMAX=1D0
13871       ENDIF
13872       IF(WT.LT.PYR(0)*WTMAX) GOTO 410
13873  
13874 C...Construct massive four-vectors using angles chosen.
13875   570 DO 670 JT=1,JTMAX
13876         IF(KDCY(JT).EQ.0) GOTO 670
13877         ID=IREF(IP,JT)
13878         DO 580 J=1,5
13879           DPMO(J)=P(ID,J)
13880   580   CONTINUE
13881         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
13882 CMRENNA++
13883         IF(KFL3(JT).EQ.0) THEN
13884           CALL PYROBO(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
13885      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
13886           N0=NSD(JT)+2
13887         ELSE
13888           CALL PYROBO(NSD(JT)+1,NSD(JT)+3,ACOS(CTHE(JT)),PHI(JT),
13889      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
13890           N0=NSD(JT)+3
13891         ENDIF
13892  
13893         DO 590 J=1,4
13894           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
13895   590   CONTINUE
13896 C...Fill in position of decay vertex.
13897         DO 610 I=NSD(JT)+1,N0
13898           DO 600 J=1,4
13899             V(I,J)=VDCY(J)
13900   600     CONTINUE
13901           V(I,5)=0D0
13902  
13903   610   CONTINUE
13904 CMRENNA--
13905  
13906 C...Mark decayed resonances; trace history.
13907         K(ID,1)=K(ID,1)+10
13908         KFA=IABS(K(ID,2))
13909         KCA=PYCOMP(KFA)
13910         IF(KCQM(JT).NE.0) THEN
13911 C...Do not kill colour flow through coloured resonance!
13912         ELSE
13913           K(ID,4)=NSD(JT)+1
13914           K(ID,5)=NSD(JT)+2
13915 C...If 3-body or 2-body with junction:
13916           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
13917 C...If 3-body with junction:
13918           IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
13919         ENDIF
13920  
13921 C...Add documentation lines.
13922         ISUBRG=MAX(1,MIN(500,MINT(1)))
13923         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
13924           IDOC=MINT(83)+MINT(4)
13925 CMRENNA+++
13926           IHI=NSD(JT)+2
13927           IF(KFL3(JT).NE.0) IHI=IHI+1
13928           DO 630 I=NSD(JT)+1,IHI
13929 CMRENNA---
13930             I1=MINT(83)+MINT(4)+1
13931             K(I,3)=I1
13932             IF(MSTP(128).GE.1) K(I,3)=ID
13933             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
13934               MINT(4)=MINT(4)+1
13935               K(I1,1)=21
13936               K(I1,2)=K(I,2)
13937               K(I1,3)=IREF(IP,JT+3)
13938               DO 620 J=1,5
13939                 P(I1,J)=P(I,J)
13940   620         CONTINUE
13941             ENDIF
13942   630     CONTINUE
13943         ELSE
13944           K(NSD(JT)+1,3)=ID
13945           K(NSD(JT)+2,3)=ID
13946 C...If 3-body or 2-body with junction:
13947           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
13948 C...If 3-body with junction:
13949           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
13950         ENDIF
13951  
13952 C...Do showering of two or three objects.
13953         NSHBEF=N
13954         IF(MSTP(71).GE.1) THEN
13955           IF(KFL3(JT).EQ.0) THEN
13956             CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
13957           ELSE
13958             CALL PYSHOW(NSD(JT)+1,-3,P(ID,5))
13959           ENDIF
13960         ENDIF
13961         NSHAFT=N
13962         IF(JT.EQ.1) NAFT1=N
13963  
13964 C...Check if decay products moved by shower.
13965         NSD1=NSD(JT)+1
13966         NSD2=NSD(JT)+2
13967         NSD3=NSD(JT)+3
13968         IF(NSHAFT.GT.NSHBEF) THEN
13969           IF(K(NSD1,1).GT.10) THEN
13970             DO 640 I=NSHBEF+1,NSHAFT
13971               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
13972   640       CONTINUE
13973           ENDIF
13974           IF(K(NSD2,1).GT.10) THEN
13975             DO 650 I=NSHBEF+1,NSHAFT
13976               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
13977      &        I.NE.NSD1) NSD2=I
13978   650       CONTINUE
13979           ENDIF
13980           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
13981             DO 660 I=NSHBEF+1,NSHAFT
13982               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
13983      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
13984   660       CONTINUE
13985           ENDIF
13986         ENDIF
13987  
13988 C...Store decay products for further treatment.
13989         NP=NP+1
13990         IREF(NP,1)=NSD1
13991         IREF(NP,2)=NSD2
13992         IREF(NP,3)=0
13993         IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
13994         IREF(NP,4)=IDOC+1
13995         IREF(NP,5)=IDOC+2
13996         IREF(NP,6)=0
13997         IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
13998         IREF(NP,7)=K(IREF(IP,JT),2)
13999         IREF(NP,8)=IREF(IP,JT)
14000   670 CONTINUE
14001  
14002 C...Fill information for 2 -> 1 -> 2.
14003   680 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
14004         MINT(7)=MINT(83)+6+2*ISET(ISUB)
14005         MINT(8)=MINT(83)+7+2*ISET(ISUB)
14006         MINT(25)=KFL1(1)
14007         MINT(26)=KFL2(1)
14008         VINT(23)=CTHE(1)
14009         RM3=P(N-1,5)**2/SH
14010         RM4=P(N,5)**2/SH
14011         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
14012         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
14013         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
14014         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
14015         VINT(47)=SQRT(VINT(48))
14016       ENDIF
14017  
14018 C...Possibility of colour rearrangement in W+W- events.
14019       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
14020         IAKF1=IABS(KFL1(1))
14021         IAKF2=IABS(KFL1(2))
14022         IAKF3=IABS(KFL2(1))
14023         IAKF4=IABS(KFL2(2))
14024         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
14025      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
14026      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
14027       ENDIF
14028  
14029 C...Loop back if needed.
14030   690 IF(IP.LT.NP) GOTO 150
14031  
14032 C...Boost back to standard frame.
14033   700 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
14034      &BEZIN)
14035  
14036       RETURN
14037       END
14038  
14039 C*********************************************************************
14040  
14041 C...PYMULT
14042 C...Initializes treatment of multiple interactions, selects kinematics
14043 C...of hardest interaction if low-pT physics included in run, and
14044 C...generates all non-hardest interactions.
14045  
14046       SUBROUTINE PYMULT(MMUL)
14047  
14048 C...Double precision and integer declarations.
14049       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14050       IMPLICIT INTEGER(I-N)
14051       INTEGER PYK,PYCHGE,PYCOMP
14052 C...Commonblocks.
14053       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14054       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14055       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14056       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
14057       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14058       COMMON/PYINT1/MINT(400),VINT(400)
14059       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14060       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
14061       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
14062       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
14063       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
14064      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
14065 C...Local arrays and saved variables.
14066       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
14067       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM
14068  
14069 C...Initialization of multiple interaction treatment.
14070       IF(MMUL.EQ.1) THEN
14071         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
14072         ISUB=96
14073         MINT(1)=96
14074         VINT(63)=0D0
14075         VINT(64)=0D0
14076         VINT(143)=1D0
14077         VINT(144)=1D0
14078  
14079 C...Loop over phase space points: xT2 choice in 20 bins.
14080   100   SIGSUM=0D0
14081         DO 120 IXT2=1,20
14082           NMUL(IXT2)=MSTP(83)
14083           SIGM(IXT2)=0D0
14084           DO 110 ITRY=1,MSTP(83)
14085             RSCA=0.05D0*((21-IXT2)-PYR(0))
14086             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
14087             XT2=MAX(0.01D0*VINT(149),XT2)
14088             VINT(25)=XT2
14089  
14090 C...Choose tau and y*. Calculate cos(theta-hat).
14091             IF(PYR(0).LE.COEF(ISUB,1)) THEN
14092               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14093               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14094             ELSE
14095               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14096             ENDIF
14097             VINT(21)=TAU
14098             CALL PYKLIM(2)
14099             RYST=PYR(0)
14100             MYST=1
14101             IF(RYST.GT.COEF(ISUB,8)) MYST=2
14102             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14103             CALL PYKMAP(2,MYST,PYR(0))
14104             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14105  
14106 C...Calculate differential cross-section.
14107             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
14108             CALL PYSIGH(NCHN,SIGS)
14109             SIGM(IXT2)=SIGM(IXT2)+SIGS
14110   110     CONTINUE
14111           SIGSUM=SIGSUM+SIGM(IXT2)
14112   120   CONTINUE
14113         SIGSUM=SIGSUM/(20D0*MSTP(83))
14114  
14115 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
14116         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
14117           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
14118      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
14119           PARP(82)=0.9D0*PARP(82)
14120           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
14121      &    VINT(2)
14122           GOTO 100
14123         ENDIF
14124         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
14125      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
14126  
14127 C...Start iteration to find k factor.
14128         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
14129         SO=0.5D0
14130         XI=0D0
14131         YI=0D0
14132         XF=0D0
14133         YF=0D0
14134         XK=0.5D0
14135         IIT=0
14136   130   IF(IIT.EQ.0) THEN
14137           XK=2D0*XK
14138         ELSEIF(IIT.EQ.1) THEN
14139           XK=0.5D0*XK
14140         ELSE
14141           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
14142         ENDIF
14143  
14144 C...Evaluate overlap integrals.
14145         IF(MSTP(82).EQ.2) THEN
14146           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
14147           SOP=SP/PARU(1)
14148         ELSE
14149           IF(MSTP(82).EQ.3) DELTAB=0.02D0
14150           IF(MSTP(82).EQ.4) DELTAB=MIN(0.01D0,0.05D0*PARP(84))
14151           SP=0D0
14152           SOP=0D0
14153           B=-0.5D0*DELTAB
14154   140     B=B+DELTAB
14155           IF(MSTP(82).EQ.3) THEN
14156             OV=EXP(-B**2)/PARU(2)
14157           ELSE
14158             CQ2=PARP(84)**2
14159             OV=((1D0-PARP(83))**2*EXP(-MIN(50D0,B**2))+
14160      &      2D0*PARP(83)*(1D0-PARP(83))*2D0/(1D0+CQ2)*
14161      &      EXP(-MIN(50D0,B**2*2D0/(1D0+CQ2)))+
14162      &      PARP(83)**2/CQ2*EXP(-MIN(50D0,B**2/CQ2)))/PARU(2)
14163           ENDIF
14164           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
14165           SP=SP+PARU(2)*B*DELTAB*PACC
14166           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
14167           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
14168         ENDIF
14169         YK=PARU(1)*XK*SO/SP
14170  
14171 C...Continue iteration until convergence.
14172         IF(YK.LT.YKE) THEN
14173           XI=XK
14174           YI=YK
14175           IF(IIT.EQ.1) IIT=2
14176         ELSE
14177           XF=XK
14178           YF=YK
14179           IF(IIT.EQ.0) IIT=1
14180         ENDIF
14181         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
14182  
14183 C...Store some results for subsequent use.
14184         VINT(145)=SIGSUM
14185         VINT(146)=SOP/SO
14186         VINT(147)=SOP/SP
14187  
14188 C...Initialize iteration in xT2 for hardest interaction.
14189       ELSEIF(MMUL.EQ.2) THEN
14190         IF(MSTP(82).LE.0) THEN
14191         ELSEIF(MSTP(82).EQ.1) THEN
14192           XT2=1D0
14193           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
14194           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
14195      &    VINT(317)/(VINT(318)*VINT(320))
14196           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
14197         ELSEIF(MSTP(82).EQ.2) THEN
14198           XT2=1D0
14199           XT2FAC=VINT(146)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
14200      &    VINT(149)*(1D0+VINT(149))
14201         ELSE
14202           XC2=4D0*CKIN(3)**2/VINT(2)
14203           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
14204         ENDIF
14205  
14206       ELSEIF(MMUL.EQ.3) THEN
14207 C...Low-pT or multiple interactions (first semihard interaction):
14208 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
14209 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
14210         ISUB=MINT(1)
14211         IF(MSTP(82).LE.0) THEN
14212           XT2=0D0
14213         ELSEIF(MSTP(82).EQ.1) THEN
14214           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
14215         ELSEIF(MSTP(82).EQ.2) THEN
14216           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
14217      &    VINT(149)))).GT.PYR(0)) XT2=1D0
14218           IF(XT2.GE.1D0) THEN
14219             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
14220      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
14221      &      VINT(149)
14222           ELSE
14223             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
14224      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
14225      &      VINT(149)
14226           ENDIF
14227           XT2=MAX(0.01D0*VINT(149),XT2)
14228         ELSE
14229           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
14230      &    PYR(0)*(1D0-XC2))-VINT(149)
14231           XT2=MAX(0.01D0*VINT(149),XT2)
14232         ENDIF
14233         VINT(25)=XT2
14234  
14235 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
14236         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
14237           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
14238           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
14239           ISUB=95
14240           MINT(1)=ISUB
14241           VINT(21)=0.01D0*VINT(149)
14242           VINT(22)=0D0
14243           VINT(23)=0D0
14244           VINT(25)=0.01D0*VINT(149)
14245  
14246         ELSE
14247 C...Multiple interactions (first semihard interaction).
14248 C...Choose tau and y*. Calculate cos(theta-hat).
14249           IF(PYR(0).LE.COEF(ISUB,1)) THEN
14250             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14251             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14252           ELSE
14253             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14254           ENDIF
14255           VINT(21)=TAU
14256           CALL PYKLIM(2)
14257           RYST=PYR(0)
14258           MYST=1
14259           IF(RYST.GT.COEF(ISUB,8)) MYST=2
14260           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14261           CALL PYKMAP(2,MYST,PYR(0))
14262           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14263         ENDIF
14264         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
14265  
14266 C...Store results of cross-section calculation.
14267       ELSEIF(MMUL.EQ.4) THEN
14268         ISUB=MINT(1)
14269         XTS=VINT(25)
14270         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
14271         IF(ISET(ISUB).EQ.2)
14272      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
14273         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
14274         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
14275      &  (XTS+VINT(149))))
14276         IRBIN=INT(1D0+20D0*RBIN)
14277         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
14278           NMUL(IRBIN)=NMUL(IRBIN)+1
14279           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
14280         ENDIF
14281  
14282 C...Choose impact parameter.
14283       ELSEIF(MMUL.EQ.5) THEN
14284         ISUB=MINT(1)
14285   150   IF(MSTP(82).EQ.3) THEN
14286           VINT(148)=PYR(0)/(PARU(2)*VINT(147))
14287         ELSE
14288           RTYPE=PYR(0)
14289           CQ2=PARP(84)**2
14290           IF(RTYPE.LT.(1D0-PARP(83))**2) THEN
14291             B2=-LOG(PYR(0))
14292           ELSEIF(RTYPE.LT.1D0-PARP(83)**2) THEN
14293             B2=-0.5D0*(1D0+CQ2)*LOG(PYR(0))
14294           ELSE
14295             B2=-CQ2*LOG(PYR(0))
14296           ENDIF
14297           VINT(148)=((1D0-PARP(83))**2*EXP(-MIN(50D0,B2))+2D0*PARP(83)*
14298      &    (1D0-PARP(83))*2D0/(1D0+CQ2)*EXP(-MIN(50D0,B2*2D0/(1D0+CQ2)))+
14299      &    PARP(83)**2/CQ2*EXP(-MIN(50D0,B2/CQ2)))/(PARU(2)*VINT(147))
14300         ENDIF
14301  
14302 C...Multiple interactions (variable impact parameter) : reject with
14303 C...probability exp(-overlap*cross-section above pT/normalization).
14304         RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
14305         SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
14306         DO 160 IBIN=IRBIN+1,20
14307           RNCOR=RNCOR+NMUL(IBIN)
14308           SIGCOR=SIGCOR+SIGM(IBIN)
14309   160   CONTINUE
14310         SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
14311         IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
14312         VINT(150)=EXP(-MIN(50D0,VINT(146)*VINT(148)*
14313      &  SIGABV/MAX(1D-10,SIGT(0,0,5))))
14314         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
14315      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
14316      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
14317           IF(VINT(150).LT.PYR(0)) GOTO 150
14318           VINT(150)=1D0
14319         ENDIF
14320  
14321 C...Generate additional multiple semihard interactions.
14322       ELSEIF(MMUL.EQ.6) THEN
14323         ISUBSV=MINT(1)
14324         DO 170 J=11,80
14325           VINTSV(J)=VINT(J)
14326   170   CONTINUE
14327         ISUB=96
14328         MINT(1)=96
14329         VINT(151)=0D0
14330         VINT(152)=0D0
14331  
14332 C...Reconstruct strings in hard scattering.
14333         NMAX=MINT(84)+4
14334         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
14335         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
14336         NSTR=0
14337         DO 190 I=MINT(84)+1,NMAX
14338           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
14339           IF(KCS.EQ.0) GOTO 190
14340           DO 180 J=1,4
14341             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 180
14342             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 180
14343             IF(J.LE.2) THEN
14344               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
14345             ELSE
14346               IST=MOD(K(I,J+1),MSTU(5))
14347             ENDIF
14348             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 180
14349             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 180
14350             NSTR=NSTR+1
14351             IF(J.EQ.1.OR.J.EQ.4) THEN
14352               KSTR(NSTR,1)=I
14353               KSTR(NSTR,2)=IST
14354             ELSE
14355               KSTR(NSTR,1)=IST
14356               KSTR(NSTR,2)=I
14357             ENDIF
14358   180     CONTINUE
14359   190   CONTINUE
14360  
14361 C...Set up starting values for iteration in xT2.
14362         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
14363      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
14364      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
14365      &  ISUBSV.NE.96)) THEN
14366           XT2=(1D0-VINT(141))*(1D0-VINT(142))
14367         ELSE
14368           XT2=VINT(25)
14369           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
14370           IF(ISET(ISUBSV).EQ.2)
14371      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
14372           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
14373         ENDIF
14374         IF(MSTP(82).LE.1) THEN
14375           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
14376           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
14377      &    VINT(317)/(VINT(318)*VINT(320))
14378           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
14379         ELSE
14380           XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
14381      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
14382         ENDIF
14383         VINT(63)=0D0
14384         VINT(64)=0D0
14385         VINT(143)=1D0-VINT(141)
14386         VINT(144)=1D0-VINT(142)
14387  
14388 C...Iterate downwards in xT2.
14389   200   IF(MSTP(82).LE.1) THEN
14390           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
14391           IF(XT2.LT.VINT(149)) GOTO 250
14392         ELSE
14393           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 250
14394           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
14395      &    LOG(PYR(0)))-VINT(149)
14396           IF(XT2.LE.0D0) GOTO 250
14397           XT2=MAX(0.01D0*VINT(149),XT2)
14398         ENDIF
14399         VINT(25)=XT2
14400  
14401 C...Choose tau and y*. Calculate cos(theta-hat).
14402         IF(PYR(0).LE.COEF(ISUB,1)) THEN
14403           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14404           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14405         ELSE
14406           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14407         ENDIF
14408         VINT(21)=TAU
14409         CALL PYKLIM(2)
14410         RYST=PYR(0)
14411         MYST=1
14412         IF(RYST.GT.COEF(ISUB,8)) MYST=2
14413         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14414         CALL PYKMAP(2,MYST,PYR(0))
14415         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14416  
14417 C...Check that x not used up. Accept or reject kinematical variables.
14418         X1M=SQRT(TAU)*EXP(VINT(22))
14419         X2M=SQRT(TAU)*EXP(-VINT(22))
14420         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 200
14421         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
14422         CALL PYSIGH(NCHN,SIGS)
14423         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
14424         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 200
14425  
14426 C...Reset K, P and V vectors. Select some variables.
14427         DO 220 I=N+1,N+2
14428           DO 210 J=1,5
14429             K(I,J)=0
14430             P(I,J)=0D0
14431             V(I,J)=0D0
14432   210     CONTINUE
14433   220   CONTINUE
14434         RFLAV=PYR(0)
14435         PT=0.5D0*VINT(1)*SQRT(XT2)
14436         PHI=PARU(2)*PYR(0)
14437         CTH=VINT(23)
14438  
14439 C...Add first parton to event record.
14440         K(N+1,1)=3
14441         K(N+1,2)=21
14442         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
14443      &  1+INT((2D0+PARJ(2))*PYR(0))
14444         P(N+1,1)=PT*COS(PHI)
14445         P(N+1,2)=PT*SIN(PHI)
14446         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
14447         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
14448         P(N+1,5)=0D0
14449  
14450 C...Add second parton to event record.
14451         K(N+2,1)=3
14452         K(N+2,2)=21
14453         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
14454         P(N+2,1)=-P(N+1,1)
14455         P(N+2,2)=-P(N+1,2)
14456         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
14457         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
14458         P(N+2,5)=0D0
14459  
14460         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
14461 C....Choose relevant string pieces to place gluons on.
14462           DO 240 I=N+1,N+2
14463             DMIN=1D8
14464             DO 230 ISTR=1,NSTR
14465               I1=KSTR(ISTR,1)
14466               I2=KSTR(ISTR,2)
14467               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
14468      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
14469      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
14470      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
14471               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
14472                 DMIN=DIST
14473                 IST1=I1
14474                 IST2=I2
14475                 ISTM=ISTR
14476               ENDIF
14477   230       CONTINUE
14478  
14479 C....Colour flow adjustments, new string pieces.
14480             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
14481      &      MOD(K(IST1,4),MSTU(5))
14482             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
14483      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
14484             K(I,5)=MSTU(5)*IST1
14485             K(I,4)=MSTU(5)*IST2
14486             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
14487      &      MOD(K(IST2,5),MSTU(5))
14488             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
14489      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
14490             KSTR(ISTM,2)=I
14491             KSTR(NSTR+1,1)=I
14492             KSTR(NSTR+1,2)=IST2
14493             NSTR=NSTR+1
14494   240     CONTINUE
14495  
14496 C...String drawing and colour flow for gluon loop.
14497         ELSEIF(K(N+1,2).EQ.21) THEN
14498           K(N+1,4)=MSTU(5)*(N+2)
14499           K(N+1,5)=MSTU(5)*(N+2)
14500           K(N+2,4)=MSTU(5)*(N+1)
14501           K(N+2,5)=MSTU(5)*(N+1)
14502           KSTR(NSTR+1,1)=N+1
14503           KSTR(NSTR+1,2)=N+2
14504           KSTR(NSTR+2,1)=N+2
14505           KSTR(NSTR+2,2)=N+1
14506           NSTR=NSTR+2
14507  
14508 C...String drawing and colour flow for qqbar pair.
14509         ELSE
14510           K(N+1,4)=MSTU(5)*(N+2)
14511           K(N+2,5)=MSTU(5)*(N+1)
14512           KSTR(NSTR+1,1)=N+1
14513           KSTR(NSTR+1,2)=N+2
14514           NSTR=NSTR+1
14515         ENDIF
14516  
14517 C...Update remaining energy; iterate.
14518         N=N+2
14519         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
14520           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
14521           IF(MSTU(21).GE.1) RETURN
14522         ENDIF
14523         MINT(31)=MINT(31)+1
14524         VINT(151)=VINT(151)+VINT(41)
14525         VINT(152)=VINT(152)+VINT(42)
14526         VINT(143)=VINT(143)-VINT(41)
14527         VINT(144)=VINT(144)-VINT(42)
14528         IF(MINT(31).LT.240) GOTO 200
14529   250   CONTINUE
14530         MINT(1)=ISUBSV
14531         DO 260 J=11,80
14532           VINT(J)=VINTSV(J)
14533   260   CONTINUE
14534       ENDIF
14535  
14536 C...Format statements for printout.
14537  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
14538      &'actions for MSTP(82) =',I2,' ******')
14539  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
14540      &D9.2,' mb: rejected')
14541  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
14542      &D9.2,' mb: accepted')
14543  
14544       RETURN
14545       END
14546  
14547 C*********************************************************************
14548  
14549 C...PYREMN
14550 C...Adds on target remnants (one or two from each side) and
14551 C...includes primordial kT for hadron beams.
14552  
14553       SUBROUTINE PYREMN(IPU1,IPU2)
14554  
14555 C...Double precision and integer declarations.
14556       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14557       IMPLICIT INTEGER(I-N)
14558       INTEGER PYK,PYCHGE,PYCOMP
14559 C...Commonblocks.
14560       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14561       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14562       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14563       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14564       COMMON/PYINT1/MINT(400),VINT(400)
14565       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
14566 C...Local arrays.
14567       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
14568      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
14569  
14570 C...Find event type and remaining energy.
14571       ISUB=MINT(1)
14572       NS=N
14573       IF(MINT(50).EQ.0.OR.MSTP(81).LE.0) THEN
14574         VINT(143)=1D0-VINT(141)
14575         VINT(144)=1D0-VINT(142)
14576       ENDIF
14577  
14578 C...Define initial partons.
14579       NTRY=0
14580   100 NTRY=NTRY+1
14581       DO 130 JT=1,2
14582         I=MINT(83)+JT+2
14583         IF(JT.EQ.1) IPU=IPU1
14584         IF(JT.EQ.2) IPU=IPU2
14585         K(I,1)=21
14586         K(I,2)=K(IPU,2)
14587         K(I,3)=I-2
14588         PMS(JT)=0D0
14589         VINT(156+JT)=0D0
14590         VINT(158+JT)=0D0
14591         IF(MINT(47).EQ.1) THEN
14592           DO 110 J=1,5
14593             P(I,J)=P(I-2,J)
14594   110     CONTINUE
14595         ELSEIF(ISUB.EQ.95) THEN
14596           K(I,2)=21
14597         ELSE
14598           P(I,5)=P(IPU,5)
14599  
14600 C...No primordial kT, or chosen according to truncated Gaussian or
14601 C...exponential, or (for photon) predetermined or power law.
14602   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
14603             IF(MSTP(91).LE.0) THEN
14604               PT=0D0
14605             ELSEIF(MSTP(91).EQ.1) THEN
14606               PT=PARP(91)*SQRT(-LOG(PYR(0)))
14607             ELSE
14608               RPT1=PYR(0)
14609               RPT2=PYR(0)
14610               PT=-PARP(92)*LOG(RPT1*RPT2)
14611             ENDIF
14612             IF(PT.GT.PARP(93)) GOTO 120
14613           ELSEIF(MINT(106+JT).EQ.3) THEN
14614             PTA=SQRT(VINT(282+JT))
14615             PTB=0D0
14616             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
14617               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
14618             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
14619               RPT1=PYR(0)
14620               RPT2=PYR(0)
14621               PTB=-PARP(99)*LOG(RPT1*RPT2)
14622             ENDIF
14623             IF(PTB.GT.PARP(100)) GOTO 120
14624             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
14625             PT=PT*0.8D0**MINT(57)
14626             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
14627           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
14628             IF(MSTP(93).LE.0) THEN
14629               PT=0D0
14630             ELSEIF(MSTP(93).EQ.1) THEN
14631               PT=PARP(99)*SQRT(-LOG(PYR(0)))
14632             ELSEIF(MSTP(93).EQ.2) THEN
14633               RPT1=PYR(0)
14634               RPT2=PYR(0)
14635               PT=-PARP(99)*LOG(RPT1*RPT2)
14636             ELSEIF(MSTP(93).EQ.3) THEN
14637               HA=PARP(99)**2
14638               HB=PARP(100)**2
14639               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
14640             ELSE
14641               HA=PARP(99)**2
14642               HB=PARP(100)**2
14643               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
14644               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
14645             ENDIF
14646             IF(PT.GT.PARP(100)) GOTO 120
14647           ELSE
14648             PT=0D0
14649           ENDIF
14650           VINT(156+JT)=PT
14651           PHI=PARU(2)*PYR(0)
14652           P(I,1)=PT*COS(PHI)
14653           P(I,2)=PT*SIN(PHI)
14654           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14655         ENDIF
14656   130 CONTINUE
14657       IF(MINT(47).EQ.1) RETURN
14658  
14659 C...Kinematics construction for initial partons.
14660       I1=MINT(83)+3
14661       I2=MINT(83)+4
14662       IF(ISUB.EQ.95) THEN
14663         SHS=0D0
14664         SHR=0D0
14665       ELSE
14666         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
14667      &  (P(I1,2)+P(I2,2))**2
14668         SHR=SQRT(MAX(0D0,SHS))
14669         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
14670         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
14671         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
14672         P(I2,4)=SHR-P(I1,4)
14673         P(I2,3)=-P(I1,3)
14674  
14675 C...Transform partons to overall CM-frame.
14676         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
14677         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
14678         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
14679         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
14680         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
14681         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
14682         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
14683         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
14684         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
14685         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
14686         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
14687       ENDIF
14688  
14689 C...Optionally fix up x and Q2 definitions for leptoproduction.
14690       IDISXQ=0
14691       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
14692      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
14693       IF(IDISXQ.EQ.1) THEN
14694  
14695 C...Find where incoming and outgoing leptons/partons are sitting.
14696         LESD=1
14697         IF(MINT(42).EQ.1) LESD=2
14698         LPIN=MINT(83)+3-LESD
14699         LEIN=MINT(84)+LESD
14700         LQIN=MINT(84)+3-LESD
14701         LEOUT=MINT(84)+2+LESD
14702         LQOUT=MINT(84)+5-LESD
14703         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
14704         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
14705         LSCMS=0
14706         DO 140 I=MINT(84)+5,N
14707           IF(K(I,2).EQ.94) THEN
14708             LSCMS=I
14709             LEOUT=I+LESD
14710             LQOUT=I+3-LESD
14711           ENDIF
14712   140   CONTINUE
14713         LQBG=IPU1
14714         IF(LESD.EQ.1) LQBG=IPU2
14715  
14716 C...Calculate actual and wanted momentum transfer.
14717         XNOM=VINT(43-LESD)
14718         Q2NOM=-VINT(45)
14719         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
14720      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
14721      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
14722         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
14723         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
14724         P(N+1,1)=FAC*P(LEOUT,1)
14725         P(N+1,2)=FAC*P(LEOUT,2)
14726         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
14727      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
14728         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
14729      &  P(N+1,3)**2)
14730         DO 150 J=1,4
14731           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
14732           QNEW(J)=P(LEIN,J)-P(N+1,J)
14733   150   CONTINUE
14734  
14735 C...Boost outgoing electron and daughters.
14736         IF(LSCMS.EQ.0) THEN
14737           DO 160 J=1,4
14738             P(LEOUT,J)=P(N+1,J)
14739   160     CONTINUE
14740         ELSE
14741           DO 170 J=1,3
14742             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
14743   170     CONTINUE
14744           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
14745           DO 180 J=1,3
14746             DBE(J)=PINV*P(N+2,J)
14747   180     CONTINUE
14748           DO 200 I=LSCMS+1,N
14749             IORIG=I
14750   190       IORIG=K(IORIG,3)
14751             IF(IORIG.GT.LEOUT) GOTO 190
14752             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
14753      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
14754   200     CONTINUE
14755         ENDIF
14756  
14757 C...Copy shower initiator and all outgoing partons.
14758         NCOP=N+1
14759         K(NCOP,3)=LQBG
14760         DO 210 J=1,5
14761           P(NCOP,J)=P(LQBG,J)
14762   210   CONTINUE
14763         DO 240 I=MINT(84)+1,N
14764           ICOP=0
14765           IF(K(I,1).GT.10) GOTO 240
14766           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
14767             ICOP=I
14768           ELSE
14769             IORIG=I
14770   220       IORIG=K(IORIG,3)
14771             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
14772               ICOP=IORIG
14773             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
14774               GOTO 220
14775             ENDIF
14776           ENDIF
14777           IF(ICOP.NE.0) THEN
14778             NCOP=NCOP+1
14779             K(NCOP,3)=I
14780             DO 230 J=1,5
14781               P(NCOP,J)=P(I,J)
14782   230       CONTINUE
14783           ENDIF
14784   240   CONTINUE
14785  
14786 C...Calculate relative rescaling factors.
14787         SLC=3-2*LESD
14788         PLCSUM=0D0
14789         DO 250 I=N+2,NCOP
14790           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
14791   250   CONTINUE
14792         DO 260 I=N+2,NCOP
14793           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
14794   260   CONTINUE
14795  
14796 C...Transfer extra three-momentum of current.
14797         DO 280 I=N+2,NCOP
14798           DO 270 J=1,3
14799             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
14800   270     CONTINUE
14801           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
14802   280   CONTINUE
14803  
14804 C...Iterate change of initiator momentum to get energy right.
14805         ITER=0
14806   290   ITER=ITER+1
14807         PEEX=-P(N+1,4)-QNEW(4)
14808         PEMV=-P(N+1,3)/P(N+1,4)
14809         DO 300 I=N+2,NCOP
14810           PEEX=PEEX+P(I,4)
14811           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
14812   300   CONTINUE
14813         IF(ABS(PEMV).LT.1D-10) THEN
14814           MINT(51)=1
14815           MINT(57)=MINT(57)+1
14816           RETURN
14817         ENDIF
14818         PZCH=-PEEX/PEMV
14819         P(N+1,3)=P(N+1,3)+PZCH
14820         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)
14821         DO 310 I=N+2,NCOP
14822           P(I,3)=P(I,3)+V(I,1)*PZCH
14823           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
14824   310   CONTINUE
14825         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
14826  
14827 C...Modify momenta in event record.
14828         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
14829      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
14830         IF(ABS(HBE).GE.1D0) THEN
14831           MINT(51)=1
14832           MINT(57)=MINT(57)+1
14833           RETURN
14834         ENDIF
14835         I=MINT(83)+5-LESD
14836         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
14837         DO 330 I=N+1,NCOP
14838           ICOP=K(I,3)
14839           DO 320 J=1,4
14840             P(ICOP,J)=P(I,J)
14841   320     CONTINUE
14842   330   CONTINUE
14843       ENDIF
14844  
14845 C...Check minimum invariant mass of remnant system(s).
14846       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
14847       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
14848       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
14849       PMIN(0)=SQRT(PMS(0))
14850       DO 340 JT=1,2
14851         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
14852         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
14853         PMIN(JT)=0D0
14854         IF(MINT(44+JT).EQ.1) GOTO 340
14855         MINT(105)=MINT(102+JT)
14856         MINT(109)=MINT(106+JT)
14857         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
14858         IF(MINT(51).NE.0) THEN
14859           MINT(57)=MINT(57)+1
14860           RETURN
14861         ENDIF
14862         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
14863         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
14864         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
14865         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
14866      &  P(MINT(83)+JT+2,2)**2)
14867   340 CONTINUE
14868       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
14869      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
14870      &PSYS(2,4))) THEN
14871         MINT(51)=1
14872         MINT(57)=MINT(57)+1
14873         RETURN
14874       ENDIF
14875  
14876 C...Loop over two remnants; skip if none there.
14877       I=NS
14878       DO 410 JT=1,2
14879         ISN(JT)=0
14880         IF(MINT(44+JT).EQ.1) GOTO 410
14881         IF(JT.EQ.1) IPU=IPU1
14882         IF(JT.EQ.2) IPU=IPU2
14883  
14884 C...Store first remnant parton.
14885         I=I+1
14886         IS(JT)=I
14887         ISN(JT)=1
14888         DO 350 J=1,5
14889           K(I,J)=0
14890           P(I,J)=0D0
14891           V(I,J)=0D0
14892   350   CONTINUE
14893         K(I,1)=1
14894         K(I,2)=KFLSP(JT)
14895         K(I,3)=MINT(83)+JT
14896         P(I,5)=PYMASS(K(I,2))
14897  
14898 C...First parton colour connections and kinematics.
14899         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
14900         IF(KCOL.EQ.2) THEN
14901           K(I,1)=3
14902           K(I,4)=MSTU(5)*IPU+IPU
14903           K(I,5)=MSTU(5)*IPU+IPU
14904           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
14905           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
14906         ELSEIF(KCOL.NE.0) THEN
14907           K(I,1)=3
14908           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
14909           K(I,KFLS+3)=IPU
14910           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
14911         ENDIF
14912         IF(KFLCH(JT).EQ.0) THEN
14913           P(I,1)=-P(MINT(83)+JT+2,1)
14914           P(I,2)=-P(MINT(83)+JT+2,2)
14915           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14916           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
14917           P(I,3)=PSYS(JT,3)
14918           P(I,4)=PSYS(JT,4)
14919  
14920 C...When extra remnant parton or hadron: store extra remnant.
14921         ELSE
14922           I=I+1
14923           ISN(JT)=2
14924           DO 360 J=1,5
14925             K(I,J)=0
14926             P(I,J)=0D0
14927             V(I,J)=0D0
14928   360     CONTINUE
14929           K(I,1)=1
14930           K(I,2)=KFLCH(JT)
14931           K(I,3)=MINT(83)+JT
14932           P(I,5)=PYMASS(K(I,2))
14933  
14934 C...Find parton colour connections of extra remnant.
14935           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
14936           IF(KCOL.EQ.2) THEN
14937             K(I,1)=3
14938             K(I,4)=MSTU(5)*IPU+IPU
14939             K(I,5)=MSTU(5)*IPU+IPU
14940             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
14941             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
14942           ELSEIF(KCOL.NE.0) THEN
14943             K(I,1)=3
14944             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
14945             K(I,KFLS+3)=IPU
14946             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
14947           ENDIF
14948  
14949 C...Relative transverse momentum when two remnants.
14950           LOOP=0
14951   370     LOOP=LOOP+1
14952           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
14953           IF(IABS(MINT(10+JT)).LT.20) THEN
14954             P(I-1,1)=0D0
14955             P(I-1,2)=0D0
14956           ELSE
14957             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
14958             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
14959           ENDIF
14960           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
14961           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
14962           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
14963           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14964  
14965 C...Meson or baryon; photon as meson. For splitup below.
14966           IMB=1
14967           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
14968  
14969 C***Relative distribution for electron into two electrons. Temporary!
14970           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
14971      &    THEN
14972             CHI(JT)=PYR(0)
14973  
14974 C...Relative distribution of electron energy into electron plus parton.
14975           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
14976             XHRD=VINT(140+JT)
14977             XE=VINT(154+JT)
14978             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
14979  
14980 C...Relative distribution of energy for particle into two jets.
14981           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
14982             CHIK=PARP(92+2*IMB)
14983             IF(MSTP(92).LE.1) THEN
14984               IF(IMB.EQ.1) CHI(JT)=PYR(0)
14985               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
14986             ELSEIF(MSTP(92).EQ.2) THEN
14987               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
14988             ELSEIF(MSTP(92).EQ.3) THEN
14989               CUT=2D0*0.3D0/VINT(1)
14990   380         CHI(JT)=PYR(0)**2
14991               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
14992      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
14993             ELSEIF(MSTP(92).EQ.4) THEN
14994               CUT=2D0*0.3D0/VINT(1)
14995               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
14996   390         CHIR=CUT*CUTR**PYR(0)
14997               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
14998               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
14999             ELSE
15000               CUT=2D0*0.3D0/VINT(1)
15001               CUTA=CUT**(1D0-PARP(98))
15002               CUTB=(1D0+CUT)**(1D0-PARP(98))
15003   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
15004               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
15005      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
15006             ENDIF
15007  
15008 C...Relative distribution of energy for particle into jet plus particle.
15009           ELSE
15010             IF(MSTP(94).LE.1) THEN
15011               IF(IMB.EQ.1) CHI(JT)=PYR(0)
15012               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
15013               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
15014             ELSEIF(MSTP(94).EQ.2) THEN
15015               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
15016               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
15017             ELSEIF(MSTP(94).EQ.3) THEN
15018               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
15019               CHI(JT)=ZZ
15020             ELSE
15021               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
15022               CHI(JT)=ZZ
15023             ENDIF
15024           ENDIF
15025  
15026 C...Construct total transverse mass; reject if too large.
15027           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
15028           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
15029           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
15030             IF(LOOP.LT.100) THEN
15031               GOTO 370
15032             ELSE
15033               MINT(51)=1
15034               MINT(57)=MINT(57)+1
15035               RETURN
15036             ENDIF
15037           ENDIF
15038           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
15039           VINT(158+JT)=CHI(JT)
15040  
15041 C...Subdivide longitudinal momentum according to value selected above.
15042           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
15043           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
15044           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
15045           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
15046           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
15047         ENDIF
15048   410 CONTINUE
15049       N=I
15050  
15051 C...Check if longitudinal boosts needed - if so pick two systems.
15052       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
15053      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
15054       IF(PDEV.LE.1D-6*VINT(1)) RETURN
15055       IF(ISN(1).EQ.0) THEN
15056         IR=0
15057         IL=2
15058       ELSEIF(ISN(2).EQ.0) THEN
15059         IR=1
15060         IL=0
15061       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
15062         IR=1
15063         IL=2
15064       ELSEIF(VINT(143).GT.0.2D0) THEN
15065         IR=1
15066         IL=0
15067       ELSEIF(VINT(144).GT.0.2D0) THEN
15068         IR=0
15069         IL=2
15070       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
15071         IR=1
15072         IL=0
15073       ELSE
15074         IR=0
15075         IL=2
15076       ENDIF
15077       IG=3-IR-IL
15078  
15079 C...E+-pL wanted for system to be modified.
15080       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
15081         PPB=VINT(1)
15082         PNB=VINT(1)
15083       ELSE
15084         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
15085         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
15086       ENDIF
15087  
15088 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
15089       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
15090         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
15091         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
15092         DO 420 J=1,4
15093           PSYS(0,J)=0D0
15094   420   CONTINUE
15095         DO 450 I=MINT(84)+1,NS
15096           IF(K(I,1).GT.10) GOTO 450
15097           INCL=0
15098           IORIG=I
15099   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15100           IORIG=K(IORIG,3)
15101           IF(IORIG.GT.LPIN) GOTO 430
15102           IF(INCL.EQ.0) GOTO 450
15103           DO 440 J=1,4
15104             PSYS(0,J)=PSYS(0,J)+P(I,J)
15105   440     CONTINUE
15106   450   CONTINUE
15107         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
15108         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
15109         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
15110       ENDIF
15111  
15112 C...Construct longitudinal boosts.
15113       DPMTB=PPB*PNB
15114       DPMTR=PMS(IR)
15115       DPMTL=PMS(IL)
15116       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
15117       IF(DSQLAM.LE.1D-6*DPMTB) THEN
15118         MINT(51)=1
15119         MINT(57)=MINT(57)+1
15120         RETURN
15121       ENDIF
15122       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
15123       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
15124      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
15125       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
15126      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
15127       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
15128       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
15129  
15130 C...Perform longitudinal boosts.
15131       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
15132         P(IS(1),3)=0D0
15133         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
15134       ELSEIF(IR.EQ.1) THEN
15135         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
15136       ELSEIF(IDISXQ.EQ.1) THEN
15137         DO 470 I=I1,NS
15138           INCL=0
15139           IORIG=I
15140   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15141           IORIG=K(IORIG,3)
15142           IF(IORIG.GT.LPIN) GOTO 460
15143           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
15144   470   CONTINUE
15145       ELSE
15146         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
15147       ENDIF
15148       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
15149         P(IS(2),3)=0D0
15150         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
15151       ELSEIF(IL.EQ.2) THEN
15152         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
15153       ELSEIF(IDISXQ.EQ.1) THEN
15154         DO 490 I=I1,NS
15155           INCL=0
15156           IORIG=I
15157   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15158           IORIG=K(IORIG,3)
15159           IF(IORIG.GT.LPIN) GOTO 480
15160           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
15161   490   CONTINUE
15162       ELSE
15163         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
15164       ENDIF
15165  
15166 C...Final check that energy-momentum conservation worked.
15167       PESUM=0D0
15168       PZSUM=0D0
15169       DO 500 I=MINT(84)+1,N
15170         IF(K(I,1).GT.10) GOTO 500
15171         PESUM=PESUM+P(I,4)
15172         PZSUM=PZSUM+P(I,3)
15173   500 CONTINUE
15174       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
15175       IF(PDEV.GT.1D-4*VINT(1)) THEN
15176         MINT(51)=1
15177         MINT(57)=MINT(57)+1
15178         RETURN
15179       ENDIF
15180  
15181 C...Calculate rotation and boost from overall CM frame to
15182 C...hadronic CM frame in leptoproduction.
15183       MINT(91)=0
15184       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
15185         MINT(91)=1
15186         LESD=1
15187         IF(MINT(42).EQ.1) LESD=2
15188         LPIN=MINT(83)+3-LESD
15189  
15190 C...Sum upp momenta of everything not lepton or photon to define boost.
15191         DO 510 J=1,4
15192           PSUM(J)=0D0
15193   510   CONTINUE
15194         DO 530 I=1,N
15195           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
15196           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
15197           IF(K(I,2).EQ.22) GOTO 530
15198           DO 520 J=1,4
15199             PSUM(J)=PSUM(J)+P(I,J)
15200   520     CONTINUE
15201   530   CONTINUE
15202         VINT(223)=-PSUM(1)/PSUM(4)
15203         VINT(224)=-PSUM(2)/PSUM(4)
15204         VINT(225)=-PSUM(3)/PSUM(4)
15205  
15206 C...Boost incoming hadron to hadronic CM frame to determine rotations.
15207         K(N+1,1)=1
15208         DO 540 J=1,5
15209           P(N+1,J)=P(LPIN,J)
15210           V(N+1,J)=V(LPIN,J)
15211   540   CONTINUE
15212         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
15213         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
15214         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
15215         IF(LESD.EQ.2) THEN
15216           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
15217         ELSE
15218           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
15219         ENDIF
15220       ENDIF
15221  
15222       RETURN
15223       END
15224  
15225 C*********************************************************************
15226  
15227 C...PYDIFF
15228 C...Handles diffractive and elastic scattering.
15229  
15230       SUBROUTINE PYDIFF
15231  
15232 C...Double precision and integer declarations.
15233       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15234       IMPLICIT INTEGER(I-N)
15235       INTEGER PYK,PYCHGE,PYCOMP
15236 C...Commonblocks.
15237       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15238       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15239       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15240       COMMON/PYINT1/MINT(400),VINT(400)
15241       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
15242  
15243 C...Reset K, P and V vectors. Store incoming particles.
15244       DO 110 JT=1,MSTP(126)+10
15245         I=MINT(83)+JT
15246         DO 100 J=1,5
15247           K(I,J)=0
15248           P(I,J)=0D0
15249           V(I,J)=0D0
15250   100   CONTINUE
15251   110 CONTINUE
15252       N=MINT(84)
15253       MINT(3)=0
15254       MINT(21)=0
15255       MINT(22)=0
15256       MINT(23)=0
15257       MINT(24)=0
15258       MINT(4)=4
15259       DO 130 JT=1,2
15260         I=MINT(83)+JT
15261         K(I,1)=21
15262         K(I,2)=MINT(10+JT)
15263         DO 120 J=1,5
15264           P(I,J)=VINT(285+5*JT+J)
15265   120   CONTINUE
15266   130 CONTINUE
15267       MINT(6)=2
15268  
15269 C...Subprocess; kinematics.
15270       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
15271       PZ=SQRT(SQLAM)/(2D0*VINT(1))
15272       DO 200 JT=1,2
15273         I=MINT(83)+JT
15274         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
15275         KFH=MINT(102+JT)
15276  
15277 C...Elastically scattered particle. (Except elastic GVMD states.)
15278         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
15279      &  MINT(106+JT).NE.3)) THEN
15280           N=N+1
15281           K(N,1)=1
15282           K(N,2)=KFH
15283           K(N,3)=I+2
15284           P(N,3)=PZ*(-1)**(JT+1)
15285           P(N,4)=PE
15286           P(N,5)=SQRT(VINT(62+JT))
15287  
15288 C...Decay rho from elastic scattering of gamma with sin**2(theta)
15289 C...distribution of decay products (in rho rest frame).
15290           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
15291             NSAV=N
15292             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
15293             P(N,3)=0D0
15294             P(N,4)=P(N,5)
15295             CALL PYDECY(NSAV)
15296             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
15297               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
15298               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
15299               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
15300               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
15301   140         CTHE=2D0*PYR(0)-1D0
15302               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
15303               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
15304             ENDIF
15305             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
15306           ENDIF
15307  
15308 C...Diffracted particle: low-mass system to two particles.
15309         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
15310           N=N+2
15311           K(N-1,1)=1
15312           K(N,1)=1
15313           K(N-1,3)=I+2
15314           K(N,3)=I+2
15315           PMMAS=SQRT(VINT(62+JT))
15316           NTRY=0
15317   150     NTRY=NTRY+1
15318           IF(NTRY.LT.20) THEN
15319             MINT(105)=MINT(102+JT)
15320             MINT(109)=MINT(106+JT)
15321             CALL PYSPLI(KFH,21,KFL1,KFL2)
15322             CALL PYKFDI(KFL1,0,KFL3,KF1)
15323             IF(KF1.EQ.0) GOTO 150
15324             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
15325             IF(KF2.EQ.0) GOTO 150
15326           ELSE
15327             KF1=KFH
15328             KF2=111
15329           ENDIF
15330           PM1=PYMASS(KF1)
15331           PM2=PYMASS(KF2)
15332           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
15333           K(N-1,2)=KF1
15334           K(N,2)=KF2
15335           P(N-1,5)=PM1
15336           P(N,5)=PM2
15337           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
15338      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
15339           P(N-1,3)=PZP
15340           P(N,3)=-PZP
15341           P(N-1,4)=SQRT(PM1**2+PZP**2)
15342           P(N,4)=SQRT(PM2**2+PZP**2)
15343           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
15344      &    0D0,0D0,0D0)
15345           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
15346           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
15347  
15348 C...Diffracted particle: valence quark kicked out.
15349         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
15350      &    PARP(101))) THEN
15351           N=N+2
15352           K(N-1,1)=2
15353           K(N,1)=1
15354           K(N-1,3)=I+2
15355           K(N,3)=I+2
15356           MINT(105)=MINT(102+JT)
15357           MINT(109)=MINT(106+JT)
15358           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
15359           P(N-1,5)=PYMASS(K(N-1,2))
15360           P(N,5)=PYMASS(K(N,2))
15361           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
15362      &    4D0*P(N-1,5)**2*P(N,5)**2
15363           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
15364      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
15365           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
15366           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
15367           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
15368  
15369 C...Diffracted particle: gluon kicked out.
15370         ELSE
15371           N=N+3
15372           K(N-2,1)=2
15373           K(N-1,1)=2
15374           K(N,1)=1
15375           K(N-2,3)=I+2
15376           K(N-1,3)=I+2
15377           K(N,3)=I+2
15378           MINT(105)=MINT(102+JT)
15379           MINT(109)=MINT(106+JT)
15380           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
15381           K(N-1,2)=21
15382           P(N-2,5)=PYMASS(K(N-2,2))
15383           P(N-1,5)=0D0
15384           P(N,5)=PYMASS(K(N,2))
15385 C...Energy distribution for particle into two jets.
15386   160     IMB=1
15387           IF(MOD(KFH/1000,10).NE.0) IMB=2
15388           CHIK=PARP(92+2*IMB)
15389           IF(MSTP(92).LE.1) THEN
15390             IF(IMB.EQ.1) CHI=PYR(0)
15391             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
15392           ELSEIF(MSTP(92).EQ.2) THEN
15393             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
15394           ELSEIF(MSTP(92).EQ.3) THEN
15395             CUT=2D0*0.3D0/VINT(1)
15396   170       CHI=PYR(0)**2
15397             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
15398      &      PYR(0)) GOTO 170
15399           ELSEIF(MSTP(92).EQ.4) THEN
15400             CUT=2D0*0.3D0/VINT(1)
15401             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
15402   180       CHIR=CUT*CUTR**PYR(0)
15403             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
15404             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
15405           ELSE
15406             CUT=2D0*0.3D0/VINT(1)
15407             CUTA=CUT**(1D0-PARP(98))
15408             CUTB=(1D0+CUT)**(1D0-PARP(98))
15409   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
15410             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
15411      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
15412           ENDIF
15413           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
15414      &    VINT(62+JT)) GOTO 160
15415           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
15416           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
15417      &    (2D0*VINT(62+JT))
15418           PEI=SQRT(PZI**2+SQM)
15419           PQQP=(1D0-CHI)*(PEI+PZI)
15420           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
15421           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
15422           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
15423           P(N-1,3)=P(N-1,4)*(-1)**JT
15424           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
15425           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
15426         ENDIF
15427  
15428 C...Documentation lines.
15429         K(I+2,1)=21
15430         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
15431         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
15432      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
15433         K(I+2,3)=I
15434         P(I+2,3)=PZ*(-1)**(JT+1)
15435         P(I+2,4)=PE
15436         P(I+2,5)=SQRT(VINT(62+JT))
15437   200 CONTINUE
15438  
15439 C...Rotate outgoing partons/particles using cos(theta).
15440       IF(VINT(23).LT.0.9D0) THEN
15441         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
15442       ELSE
15443         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
15444       ENDIF
15445  
15446       RETURN
15447       END
15448  
15449 C*********************************************************************
15450  
15451 C...PYDISG
15452 C...Set up a DIS process as gamma* + f -> f, with beam remnant
15453 C...and showering added consecutively. Photon flux by the PYGAGA
15454 C...routine (if at all).
15455  
15456       SUBROUTINE PYDISG
15457  
15458 C...Double precision and integer declarations.
15459       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15460       IMPLICIT INTEGER(I-N)
15461       INTEGER PYK,PYCHGE,PYCOMP
15462 C...Parameter statement to help give large particle numbers.
15463       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
15464      &KEXCIT=4000000,KDIMEN=5000000)
15465 C...Commonblocks.
15466       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15467       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15468       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
15469       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
15470       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15471       COMMON/PYINT1/MINT(400),VINT(400)
15472       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
15473 C...Local arrays.
15474       DIMENSION PMS(4)
15475  
15476 C...Choice of subprocess, number of documentation lines
15477       IDOC=7
15478       MINT(3)=IDOC-6
15479       MINT(4)=IDOC
15480       IPU1=MINT(84)+1
15481       IPU2=MINT(84)+2
15482       IPU3=MINT(84)+3
15483       ISIDE=1
15484       IF(MINT(107).EQ.4) ISIDE=2
15485  
15486 C...Reset K, P and V vectors. Store incoming particles
15487       DO 110 JT=1,MSTP(126)+20
15488         I=MINT(83)+JT
15489         DO 100 J=1,5
15490           K(I,J)=0
15491           P(I,J)=0D0
15492           V(I,J)=0D0
15493   100   CONTINUE
15494   110 CONTINUE
15495       DO 130 JT=1,2
15496         I=MINT(83)+JT
15497         K(I,1)=21
15498         K(I,2)=MINT(10+JT)
15499         DO 120 J=1,5
15500           P(I,J)=VINT(285+5*JT+J)
15501   120   CONTINUE
15502   130 CONTINUE
15503       MINT(6)=2
15504  
15505 C...Store incoming partons in hadronic CM-frame
15506       DO 140 JT=1,2
15507         I=MINT(84)+JT
15508         K(I,1)=14
15509         K(I,2)=MINT(14+JT)
15510         K(I,3)=MINT(83)+2+JT
15511   140 CONTINUE
15512       IF(MINT(15).EQ.22) THEN
15513         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
15514         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
15515         P(MINT(84)+1,5)=-SQRT(VINT(307))
15516         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
15517         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
15518         KFRES=MINT(16)
15519         ISIDE=2
15520       ELSE
15521         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
15522         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
15523         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
15524         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
15525         P(MINT(84)+1,5)=-SQRT(VINT(308))
15526         KFRES=MINT(15)
15527         ISIDE=1
15528       ENDIF
15529       SIDESG=(-1D0)**(ISIDE-1)
15530  
15531 C...Copy incoming partons to documentation lines.
15532       DO 170 JT=1,2
15533         I1=MINT(83)+4+JT
15534         I2=MINT(84)+JT
15535         K(I1,1)=21
15536         K(I1,2)=K(I2,2)
15537         K(I1,3)=I1-2
15538         DO 150 J=1,5
15539           P(I1,J)=P(I2,J)
15540   150   CONTINUE
15541  
15542 C...Second copy for partons before ISR shower, since no such.
15543         I1=MINT(83)+2+JT
15544         K(I1,1)=21
15545         K(I1,2)=K(I2,2)
15546         K(I1,3)=I1-2
15547         DO 160 J=1,5
15548           P(I1,J)=P(I2,J)
15549   160   CONTINUE
15550   170 CONTINUE
15551  
15552 C...Define initial partons.
15553       NTRY=0
15554   180 NTRY=NTRY+1
15555       IF(NTRY.GT.100) THEN
15556         MINT(51)=1
15557         RETURN
15558       ENDIF
15559  
15560 C...Scattered quark in hadronic CM frame.
15561       I=MINT(83)+7
15562       K(IPU3,1)=3
15563       K(IPU3,2)=KFRES
15564       K(IPU3,3)=I
15565       P(IPU3,5)=PYMASS(KFRES)
15566       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
15567       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
15568       P(IPU3,5)=0D0
15569       K(I,1)=21
15570       K(I,2)=KFRES
15571       K(I,3)=MINT(83)+4+ISIDE
15572       P(I,3)=P(IPU3,3)
15573       P(I,4)=P(IPU3,4)
15574       P(I,5)=P(IPU3,5)
15575       N=IPU3
15576       MINT(21)=KFRES
15577       MINT(22)=0
15578  
15579 C...No primordial kT, or chosen according to truncated Gaussian or
15580 C...exponential, or (for photon) predetermined or power law.
15581   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
15582         IF(MSTP(91).LE.0) THEN
15583           PT=0D0
15584         ELSEIF(MSTP(91).EQ.1) THEN
15585           PT=PARP(91)*SQRT(-LOG(PYR(0)))
15586         ELSE
15587           RPT1=PYR(0)
15588           RPT2=PYR(0)
15589           PT=-PARP(92)*LOG(RPT1*RPT2)
15590         ENDIF
15591         IF(PT.GT.PARP(93)) GOTO 190
15592       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
15593         PTA=SQRT(VINT(282+ISIDE))
15594         PTB=0D0
15595         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
15596           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
15597         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
15598           RPT1=PYR(0)
15599           RPT2=PYR(0)
15600           PTB=-PARP(99)*LOG(RPT1*RPT2)
15601         ENDIF
15602         IF(PTB.GT.PARP(100)) GOTO 190
15603         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
15604         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
15605       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
15606         IF(MSTP(93).LE.0) THEN
15607           PT=0D0
15608         ELSEIF(MSTP(93).EQ.1) THEN
15609           PT=PARP(99)*SQRT(-LOG(PYR(0)))
15610         ELSEIF(MSTP(93).EQ.2) THEN
15611           RPT1=PYR(0)
15612           RPT2=PYR(0)
15613           PT=-PARP(99)*LOG(RPT1*RPT2)
15614         ELSEIF(MSTP(93).EQ.3) THEN
15615           HA=PARP(99)**2
15616           HB=PARP(100)**2
15617           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
15618         ELSE
15619           HA=PARP(99)**2
15620           HB=PARP(100)**2
15621           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
15622           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
15623         ENDIF
15624         IF(PT.GT.PARP(100)) GOTO 190
15625       ELSE
15626         PT=0D0
15627       ENDIF
15628       VINT(156+ISIDE)=PT
15629       PHI=PARU(2)*PYR(0)
15630       P(IPU3,1)=PT*COS(PHI)
15631       P(IPU3,2)=PT*SIN(PHI)
15632       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
15633       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
15634       PCP=P(IPU3,4)+ABS(P(IPU3,3))
15635  
15636 C...Find one or two beam remnants.
15637       MINT(105)=MINT(102+ISIDE)
15638       MINT(109)=MINT(106+ISIDE)
15639       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
15640       IF(MINT(51).NE.0) THEN
15641         MINT(51)=0
15642         GOTO 180
15643       ENDIF
15644  
15645 C...Store first remnant parton, with colour info and kinematics.
15646       I=N+1
15647       K(I,1)=1
15648       K(I,2)=KFLSP
15649       K(I,3)=MINT(83)+ISIDE
15650       P(I,5)=PYMASS(K(I,2))
15651       KCOL=KCHG(PYCOMP(KFLSP),2)
15652       IF(KCOL.NE.0) THEN
15653         K(I,1)=3
15654         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
15655         K(I,KFLS+3)=MSTU(5)*IPU3
15656         K(IPU3,6-KFLS)=MSTU(5)*I
15657         ICOLR=I
15658       ENDIF
15659       IF(KFLCH.EQ.0) THEN
15660         P(I,1)=-P(IPU3,1)
15661         P(I,2)=-P(IPU3,2)
15662         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
15663         P(I,3)=-P(IPU3,3)
15664         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
15665         PRP=P(I,4)+ABS(P(I,3))
15666  
15667 C...When extra remnant parton or hadron: store extra remnant.
15668       ELSE
15669         I=I+1
15670         K(I,1)=1
15671         K(I,2)=KFLCH
15672         K(I,3)=MINT(83)+ISIDE
15673         P(I,5)=PYMASS(K(I,2))
15674         KCOL=KCHG(PYCOMP(KFLCH),2)
15675         IF(KCOL.NE.0) THEN
15676           K(I,1)=3
15677           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
15678           K(I,KFLS+3)=MSTU(5)*IPU3
15679           K(IPU3,6-KFLS)=MSTU(5)*I
15680           ICOLR=I
15681         ENDIF
15682  
15683 C...Relative transverse momentum when two remnants.
15684         LOOP=0
15685   200   LOOP=LOOP+1
15686         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
15687         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
15688         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
15689         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
15690         P(I,1)=-P(IPU3,1)-P(I-1,1)
15691         P(I,2)=-P(IPU3,2)-P(I-1,2)
15692         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
15693  
15694 C...Relative distribution of energy for particle into jet plus particle.
15695         IMB=1
15696         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
15697         IF(MSTP(94).LE.1) THEN
15698           IF(IMB.EQ.1) CHI=PYR(0)
15699           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
15700           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
15701         ELSEIF(MSTP(94).EQ.2) THEN
15702           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
15703           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
15704         ELSEIF(MSTP(94).EQ.3) THEN
15705           CALL PYZDIS(1,0,PMS(4),ZZ)
15706           CHI=ZZ
15707         ELSE
15708           CALL PYZDIS(1000,0,PMS(4),ZZ)
15709           CHI=ZZ
15710         ENDIF
15711  
15712 C...Construct total transverse mass; reject if too large.
15713         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
15714         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
15715         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
15716           IF(LOOP.LT.10) GOTO 200
15717           GOTO 180
15718         ENDIF
15719         VINT(158+ISIDE)=CHI
15720  
15721 C...Subdivide longitudinal momentum according to value selected above.
15722         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
15723         PW1=(1D0-CHI)*PRP
15724         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
15725         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
15726         PW2=CHI*PRP
15727         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
15728         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
15729       ENDIF
15730       N=I
15731  
15732 C...Boost current and remnant systems to correct frame.
15733       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
15734       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
15735       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
15736      &(2D0*VINT(1)*PCP)
15737       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
15738      &(2D0*VINT(1)*PRP)
15739       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
15740       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
15741       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
15742       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
15743  
15744 C...Let current quark shower; recoil but no showering by colour partner.
15745       QMAX=2D0*SQRT(VINT(309-ISIDE))
15746       MSTJ48=MSTJ(48)
15747       MSTJ(48)=1
15748       PARJ86=PARJ(86)
15749       PARJ(86)=0D0
15750       IF(MSTP(71).EQ.1) CALL PYSHOW(IPU3,ICOLR,QMAX)
15751       MSTJ(48)=MSTJ48
15752       PARJ(86)=PARJ86
15753  
15754       RETURN
15755       END
15756  
15757 C*********************************************************************
15758  
15759 C...PYDOCU
15760 C...Handles the documentation of the process in MSTI and PARI,
15761 C...and also computes cross-sections based on accumulated statistics.
15762  
15763       SUBROUTINE PYDOCU
15764  
15765 C...Double precision and integer declarations.
15766       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15767       IMPLICIT INTEGER(I-N)
15768       INTEGER PYK,PYCHGE,PYCOMP
15769 C...Commonblocks.
15770       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15771       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15772       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15773       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
15774       COMMON/PYINT1/MINT(400),VINT(400)
15775       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15776       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
15777       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
15778      &/PYINT5/
15779  
15780 C...Calculate Monte Carlo estimates of cross-sections.
15781       ISUB=MINT(1)
15782       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
15783       NGEN(0,3)=NGEN(0,3)+1
15784       XSEC(0,3)=0D0
15785       DO 100 I=1,500
15786         IF(I.EQ.96.OR.I.EQ.97) THEN
15787           XSEC(I,3)=0D0
15788         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
15789      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
15790           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
15791      &    DBLE(NGEN(96,2)))
15792         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
15793           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
15794      &    DBLE(NGEN(96,2)))
15795         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
15796           XSEC(I,3)=0D0
15797         ELSEIF(NGEN(I,2).EQ.0) THEN
15798           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
15799      &    DBLE(NGEN(0,2)))
15800         ELSE
15801           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
15802      &    DBLE(NGEN(I,2)))
15803         ENDIF
15804         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
15805   100 CONTINUE
15806  
15807 C...Rescale to known low-pT cross-section for standard QCD processes.
15808       IF(MSUB(95).EQ.1) THEN
15809         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
15810      &  XSEC(68,3)+XSEC(95,3)
15811         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
15812         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
15813           FAC=XSECW/XSECH
15814           XSEC(11,3)=FAC*XSEC(11,3)
15815           XSEC(12,3)=FAC*XSEC(12,3)
15816           XSEC(13,3)=FAC*XSEC(13,3)
15817           XSEC(28,3)=FAC*XSEC(28,3)
15818           XSEC(53,3)=FAC*XSEC(53,3)
15819           XSEC(68,3)=FAC*XSEC(68,3)
15820           XSEC(95,3)=FAC*XSEC(95,3)
15821           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
15822         ENDIF
15823       ENDIF
15824  
15825 C...Save information for gamma-p and gamma-gamma.
15826       IF(MINT(121).GT.1) THEN
15827         IGA=MINT(122)
15828         CALL PYSAVE(2,IGA)
15829         CALL PYSAVE(5,0)
15830       ENDIF
15831  
15832 C...Reset information on hard interaction.
15833       DO 110 J=1,200
15834         MSTI(J)=0
15835         PARI(J)=0D0
15836   110 CONTINUE
15837  
15838 C...Copy integer valued information from MINT into MSTI.
15839       DO 120 J=1,32
15840         MSTI(J)=MINT(J)
15841   120 CONTINUE
15842       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
15843  
15844 C...Store cross-section variables in PARI.
15845       PARI(1)=XSEC(0,3)
15846       PARI(2)=XSEC(0,3)/MINT(5)
15847       PARI(7)=VINT(97)
15848       PARI(9)=VINT(99)
15849       PARI(10)=VINT(100)
15850       VINT(98)=VINT(98)+VINT(100)
15851       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
15852  
15853 C...Store kinematics variables in PARI.
15854       PARI(11)=VINT(1)
15855       PARI(12)=VINT(2)
15856       IF(ISUB.NE.95) THEN
15857         DO 130 J=13,26
15858           PARI(J)=VINT(30+J)
15859   130   CONTINUE
15860         PARI(31)=VINT(141)
15861         PARI(32)=VINT(142)
15862         PARI(33)=VINT(41)
15863         PARI(34)=VINT(42)
15864         PARI(35)=PARI(33)-PARI(34)
15865         PARI(36)=VINT(21)
15866         PARI(37)=VINT(22)
15867         PARI(38)=VINT(26)
15868         PARI(39)=VINT(157)
15869         PARI(40)=VINT(158)
15870         PARI(41)=VINT(23)
15871         PARI(42)=2D0*VINT(47)/VINT(1)
15872       ENDIF
15873  
15874 C...Store information on scattered partons in PARI.
15875       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
15876         DO 140 IS=7,8
15877           I=MINT(IS)
15878           PARI(36+IS)=P(I,3)/VINT(1)
15879           PARI(38+IS)=P(I,4)/VINT(1)
15880           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
15881           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
15882      &    SQRT(PR),1D20)),P(I,3))
15883           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
15884           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
15885      &    SQRT(PR),1D20)),P(I,3))
15886           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
15887           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
15888           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
15889   140   CONTINUE
15890       ENDIF
15891  
15892 C...Store sum up transverse and longitudinal momenta.
15893       PARI(65)=2D0*PARI(17)
15894       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
15895         DO 150 I=MSTP(126)+1,N
15896           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
15897           PT=SQRT(P(I,1)**2+P(I,2)**2)
15898           PARI(69)=PARI(69)+PT
15899           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
15900           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
15901   150   CONTINUE
15902         PARI(67)=PARI(68)
15903         PARI(71)=VINT(151)
15904         PARI(72)=VINT(152)
15905         PARI(73)=VINT(151)
15906         PARI(74)=VINT(152)
15907       ELSE
15908         PARI(66)=PARI(65)
15909         PARI(69)=PARI(65)
15910       ENDIF
15911  
15912 C...Store various other pieces of information into PARI.
15913       PARI(61)=VINT(148)
15914       PARI(75)=VINT(155)
15915       PARI(76)=VINT(156)
15916       PARI(77)=VINT(159)
15917       PARI(78)=VINT(160)
15918       PARI(81)=VINT(138)
15919  
15920 C...Store information on lepton -> lepton + gamma in PYGAGA.
15921       MSTI(71)=MINT(141)
15922       MSTI(72)=MINT(142)
15923       PARI(101)=VINT(301)
15924       PARI(102)=VINT(302)
15925       DO 160 I=103,114
15926         PARI(I)=VINT(I+202)
15927   160 CONTINUE
15928  
15929 C...Set information for PYTABU.
15930       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
15931         MSTU(161)=MINT(21)
15932         MSTU(162)=0
15933       ELSEIF(ISET(ISUB).EQ.5) THEN
15934         MSTU(161)=MINT(23)
15935         MSTU(162)=0
15936       ELSE
15937         MSTU(161)=MINT(21)
15938         MSTU(162)=MINT(22)
15939       ENDIF
15940  
15941       RETURN
15942       END
15943  
15944 C*********************************************************************
15945  
15946 C...PYFRAM
15947 C...Performs transformations between different coordinate frames.
15948  
15949       SUBROUTINE PYFRAM(IFRAME)
15950  
15951 C...Double precision and integer declarations.
15952       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15953       IMPLICIT INTEGER(I-N)
15954       INTEGER PYK,PYCHGE,PYCOMP
15955 C...Commonblocks.
15956       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15957       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15958       COMMON/PYINT1/MINT(400),VINT(400)
15959       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
15960  
15961 C...Check that transformation can and should be done.
15962       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
15963      &MINT(91).EQ.1)) THEN
15964         IF(IFRAME.EQ.MINT(6)) RETURN
15965       ELSE
15966         WRITE(MSTU(11),5000) IFRAME,MINT(6)
15967         RETURN
15968       ENDIF
15969  
15970       IF(MINT(6).EQ.1) THEN
15971 C...Transform from fixed target or user specified frame to
15972 C...overall CM frame.
15973         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
15974         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
15975         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
15976       ELSEIF(MINT(6).EQ.3) THEN
15977 C...Transform from hadronic CM frame in DIS to overall CM frame.
15978         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
15979      &  -VINT(225))
15980       ENDIF
15981  
15982       IF(IFRAME.EQ.1) THEN
15983 C...Transform from overall CM frame to fixed target or user specified
15984 C...frame.
15985         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
15986       ELSEIF(IFRAME.EQ.3) THEN
15987 C...Transform from overall CM frame to hadronic CM frame in DIS.
15988         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
15989         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
15990         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
15991       ENDIF
15992  
15993 C...Set information about new frame.
15994       MINT(6)=IFRAME
15995       MSTI(6)=IFRAME
15996  
15997  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
15998      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
15999      &1X,I5)
16000  
16001       RETURN
16002       END
16003  
16004 C*********************************************************************
16005  
16006 C...PYWIDT
16007 C...Calculates full and partial widths of resonances.
16008  
16009       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
16010  
16011 C...Double precision and integer declarations.
16012       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16013       IMPLICIT INTEGER(I-N)
16014       INTEGER PYK,PYCHGE,PYCOMP
16015 C...Parameter statement to help give large particle numbers.
16016       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
16017      &KEXCIT=4000000,KDIMEN=5000000)
16018 C...Commonblocks.
16019       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16020       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16021       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16022       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
16023       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16024       COMMON/PYINT1/MINT(400),VINT(400)
16025       COMMON/PYINT4/MWID(500),WIDS(500,5)
16026       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
16027       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
16028      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
16029       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
16030       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
16031      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/
16032 C...Local arrays and saved variables.
16033       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
16034       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
16035      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
16036       SAVE MOFSV,WIDWSV,WID2SV
16037       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
16038  
16039 C...Compressed code and sign; mass.
16040       KFLA=IABS(KFLR)
16041       KFLS=ISIGN(1,KFLR)
16042       KC=PYCOMP(KFLA)
16043       SHR=SQRT(SH)
16044       PMR=PMAS(KC,1)
16045  
16046 C...Reset width information.
16047       DO 110 I=0,MDCY(KC,3)
16048         WDTP(I)=0D0
16049         DO 100 J=0,5
16050           WDTE(I,J)=0D0
16051   100   CONTINUE
16052   110 CONTINUE
16053  
16054 C...Allow for fudge factor to rescale resonance width.
16055       FUDGE=1D0
16056       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
16057      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
16058         IF(MSTP(110).EQ.KFLA) THEN
16059           FUDGE=PARP(110)
16060         ELSEIF(MSTP(110).EQ.-1) THEN
16061           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
16062         ELSEIF(MSTP(110).EQ.-2) THEN
16063           FUDGE=PARP(110)
16064         ENDIF
16065       ENDIF
16066  
16067 C...Not to be treated as a resonance: return.
16068       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
16069      &KFLA.NE.22) THEN
16070         WDTP(0)=1D0
16071         WDTE(0,0)=1D0
16072         MINT(61)=0
16073         MINT(62)=0
16074         MINT(63)=0
16075         RETURN
16076  
16077 C...Treatment as a resonance based on tabulated branching ratios.
16078       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
16079 C...Loop over possible decay channels; skip irrelevant ones.
16080         DO 120 I=1,MDCY(KC,3)
16081           IDC=I+MDCY(KC,2)-1
16082           IF(MDME(IDC,1).LT.0) GOTO 120
16083  
16084 C...Read out decay products and nominal masses.
16085           KFD1=KFDP(IDC,1)
16086           KFC1=PYCOMP(KFD1)
16087           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
16088           PM1=PMAS(KFC1,1)
16089           KFD2=KFDP(IDC,2)
16090           KFC2=PYCOMP(KFD2)
16091           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
16092           PM2=PMAS(KFC2,1)
16093           KFD3=KFDP(IDC,3)
16094           PM3=0D0
16095           IF(KFD3.NE.0) THEN
16096             KFC3=PYCOMP(KFD3)
16097             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
16098             PM3=PMAS(KFC3,1)
16099           ENDIF
16100  
16101 C...Naive partial width and alternative threshold factors.
16102           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
16103           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
16104      &    PM1+PM2+PM3.GE.SHR) THEN
16105              WDTP(I)=0D0
16106           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
16107             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
16108      &      4D0*PM1**2*PM2**2))/SH
16109           ELSEIF(MDME(IDC,2).EQ.52) THEN
16110             PMA=MAX(PM1,PM2,PM3)
16111             PMC=MIN(PM1,PM2,PM3)
16112             PMB=PM1+PM2+PM3-PMA-PMC
16113             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
16114             PMAN=PMA**2/SH
16115             PMBN=PMB**2/SH
16116             PMCN=PMC**2/SH
16117             PMBCN=PMBC**2/SH
16118             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
16119      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16120      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16121      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
16122      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
16123      &      ((1D0-PMBCN)*PMBCN*SH)
16124           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
16125             WDTP(I)=WDTP(I)*SQRT(
16126      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
16127      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
16128           ELSEIF(MDME(IDC,2).EQ.53) THEN
16129             PMA=MAX(PM1,PM2,PM3)
16130             PMC=MIN(PM1,PM2,PM3)
16131             PMB=PM1+PM2+PM3-PMA-PMC
16132             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
16133             PMAN=PMA**2/SH
16134             PMBN=PMB**2/SH
16135             PMCN=PMC**2/SH
16136             PMBCN=PMBC**2/SH
16137             FACACT=SQRT(MAX(0D0,
16138      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16139      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16140      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
16141      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
16142      &      ((1D0-PMBCN)*PMBCN*SH)
16143             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
16144             PMAN=PMA**2/PMR**2
16145             PMBN=PMB**2/PMR**2
16146             PMCN=PMC**2/PMR**2
16147             PMBCN=PMBC**2/PMR**2
16148             FACNOM=SQRT(MAX(0D0,
16149      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16150      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16151      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
16152      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
16153      &      ((1D0-PMBCN)*PMBCN*PMR**2)
16154             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
16155           ENDIF
16156           WDTP(I)=FUDGE*WDTP(I)
16157           WDTP(0)=WDTP(0)+WDTP(I)
16158  
16159 C...Calculate secondary width (at most two identical/opposite).
16160           WID2=1D0
16161           IF(MDME(IDC,1).GT.0) THEN
16162             IF(KFD2.EQ.KFD1) THEN
16163               IF(KCHG(KFC1,3).EQ.0) THEN
16164                 WID2=WIDS(KFC1,1)
16165               ELSEIF(KFD1.GT.0) THEN
16166                 WID2=WIDS(KFC1,4)
16167               ELSE
16168                 WID2=WIDS(KFC1,5)
16169               ENDIF
16170               IF(KFD3.GT.0) THEN
16171                 WID2=WID2*WIDS(KFC3,2)
16172               ELSEIF(KFD3.LT.0) THEN
16173                 WID2=WID2*WIDS(KFC3,3)
16174               ENDIF
16175             ELSEIF(KFD2.EQ.-KFD1) THEN
16176               WID2=WIDS(KFC1,1)
16177               IF(KFD3.GT.0) THEN
16178                 WID2=WID2*WIDS(KFC3,2)
16179               ELSEIF(KFD3.LT.0) THEN
16180                 WID2=WID2*WIDS(KFC3,3)
16181               ENDIF
16182             ELSEIF(KFD3.EQ.KFD1) THEN
16183               IF(KCHG(KFC1,3).EQ.0) THEN
16184                 WID2=WIDS(KFC1,1)
16185               ELSEIF(KFD1.GT.0) THEN
16186                 WID2=WIDS(KFC1,4)
16187               ELSE
16188                 WID2=WIDS(KFC1,5)
16189               ENDIF
16190               IF(KFD2.GT.0) THEN
16191                 WID2=WID2*WIDS(KFC2,2)
16192               ELSEIF(KFD2.LT.0) THEN
16193                 WID2=WID2*WIDS(KFC2,3)
16194               ENDIF
16195             ELSEIF(KFD3.EQ.-KFD1) THEN
16196               WID2=WIDS(KFC1,1)
16197               IF(KFD2.GT.0) THEN
16198                 WID2=WID2*WIDS(KFC2,2)
16199               ELSEIF(KFD2.LT.0) THEN
16200                 WID2=WID2*WIDS(KFC2,3)
16201               ENDIF
16202             ELSEIF(KFD3.EQ.KFD2) THEN
16203               IF(KCHG(KFC2,3).EQ.0) THEN
16204                 WID2=WIDS(KFC2,1)
16205               ELSEIF(KFD2.GT.0) THEN
16206                 WID2=WIDS(KFC2,4)
16207               ELSE
16208                 WID2=WIDS(KFC2,5)
16209               ENDIF
16210               IF(KFD1.GT.0) THEN
16211                 WID2=WID2*WIDS(KFC1,2)
16212               ELSEIF(KFD1.LT.0) THEN
16213                 WID2=WID2*WIDS(KFC1,3)
16214               ENDIF
16215             ELSEIF(KFD3.EQ.-KFD2) THEN
16216               WID2=WIDS(KFC2,1)
16217               IF(KFD1.GT.0) THEN
16218                 WID2=WID2*WIDS(KFC1,2)
16219               ELSEIF(KFD1.LT.0) THEN
16220                 WID2=WID2*WIDS(KFC1,3)
16221               ENDIF
16222             ELSE
16223               IF(KFD1.GT.0) THEN
16224                 WID2=WIDS(KFC1,2)
16225               ELSE
16226                 WID2=WIDS(KFC1,3)
16227               ENDIF
16228               IF(KFD2.GT.0) THEN
16229                 WID2=WID2*WIDS(KFC2,2)
16230               ELSE
16231                 WID2=WID2*WIDS(KFC2,3)
16232               ENDIF
16233               IF(KFD3.GT.0) THEN
16234                 WID2=WID2*WIDS(KFC3,2)
16235               ELSEIF(KFD3.LT.0) THEN
16236                 WID2=WID2*WIDS(KFC3,3)
16237               ENDIF
16238             ENDIF
16239  
16240 C...Store effective widths according to case.
16241             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16242             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16243             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16244             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16245           ENDIF
16246   120   CONTINUE
16247 C...Return.
16248         MINT(61)=0
16249         MINT(62)=0
16250         MINT(63)=0
16251         RETURN
16252       ENDIF
16253  
16254 C...Here begins detailed dynamical calculation of resonance widths.
16255 C...Shared treatment of Higgs states.
16256       KFHIGG=25
16257       IHIGG=1
16258       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
16259         KFHIGG=KFLA
16260         IHIGG=KFLA-33
16261       ENDIF
16262  
16263 C...Common electroweak and strong constants.
16264       XW=PARU(102)
16265       XWV=XW
16266       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
16267       XW1=1D0-XW
16268       AEM=PYALEM(SH)
16269       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
16270       AS=PYALPS(SH)
16271       RADC=1D0+AS/PARU(1)
16272  
16273       IF(KFLA.EQ.6) THEN
16274 C...t quark.
16275         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16276         RADCT=1D0-2.5D0*AS/PARU(1)
16277         DO 140 I=1,MDCY(KC,3)
16278           IDC=I+MDCY(KC,2)-1
16279           IF(MDME(IDC,1).LT.0) GOTO 140
16280           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16281           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16282           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
16283           WID2=1D0
16284           IF(I.GE.4.AND.I.LE.7) THEN
16285 C...t -> W + q; including approximate QCD correction factor.
16286             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
16287      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16288      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16289             IF(KFLR.GT.0) THEN
16290               WID2=WIDS(24,2)
16291               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
16292             ELSE
16293               WID2=WIDS(24,3)
16294               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
16295             ENDIF
16296           ELSEIF(I.EQ.9) THEN
16297 C...t -> H + b.
16298             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16299      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16300             WID2=WIDS(37,2)
16301             IF(KFLR.LT.0) WID2=WIDS(37,3)
16302 CMRENNA++
16303           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
16304 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
16305             BETA=ATAN(RMSS(5))
16306             SINB=SIN(BETA)
16307             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
16308             ET=KCHG(6,1)/3D0
16309             T3L=SIGN(0.5D0,ET)
16310             KFC1=PYCOMP(KFDP(IDC,1))
16311             KFC2=PYCOMP(KFDP(IDC,2))
16312             PMNCHI=PMAS(KFC1,1)
16313             PMSTOP=PMAS(KFC2,1)
16314             IF(SHR.GT.PMNCHI+PMSTOP) THEN
16315               IZ=I-9
16316               DO 130 IK=1,4
16317                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
16318   130         CONTINUE
16319               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
16320               AR=-ET*ZMIXC(IZ,1)*TANW
16321               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
16322               BR=AL
16323               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
16324               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
16325               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
16326      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
16327               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
16328      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
16329      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
16330               IF(KFLR.GT.0) THEN
16331                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
16332               ELSE
16333                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
16334               ENDIF
16335             ENDIF
16336           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
16337 C...t -> ~g + ~t
16338             KFC1=PYCOMP(KFDP(IDC,1))
16339             KFC2=PYCOMP(KFDP(IDC,2))
16340             PMNCHI=PMAS(KFC1,1)
16341             PMSTOP=PMAS(KFC2,1)
16342             IF(SHR.GT.PMNCHI+PMSTOP) THEN
16343               RL=SFMIX(6,1)
16344               RR=-SFMIX(6,2)
16345               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
16346      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
16347               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
16348      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
16349               IF(KFLR.GT.0) THEN
16350                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
16351               ELSE
16352                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
16353               ENDIF
16354             ENDIF
16355           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
16356 C...t -> ~gravitino + ~t
16357             XMP2=RMSS(29)**2
16358             KFC1=PYCOMP(KFDP(IDC,1))
16359             XMGR2=PMAS(KFC1,1)**2
16360             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
16361             KFC2=PYCOMP(KFDP(IDC,2))
16362             WID2=WIDS(KFC2,2)
16363             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
16364 CMRENNA--
16365           ENDIF
16366           WDTP(I)=FUDGE*WDTP(I)
16367           WDTP(0)=WDTP(0)+WDTP(I)
16368           IF(MDME(IDC,1).GT.0) THEN
16369             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16370             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16371             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16372             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16373           ENDIF
16374   140   CONTINUE
16375  
16376       ELSEIF(KFLA.EQ.7) THEN
16377 C...b' quark.
16378         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16379         DO 150 I=1,MDCY(KC,3)
16380           IDC=I+MDCY(KC,2)-1
16381           IF(MDME(IDC,1).LT.0) GOTO 150
16382           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16383           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16384           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
16385           WID2=1D0
16386           IF(I.GE.4.AND.I.LE.7) THEN
16387 C...b' -> W + q.
16388             WDTP(I)=FAC*VCKM(I-3,4)*
16389      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16390      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16391             IF(KFLR.GT.0) THEN
16392               WID2=WIDS(24,3)
16393               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
16394               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
16395             ELSE
16396               WID2=WIDS(24,2)
16397               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
16398               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
16399             ENDIF
16400             WID2=WIDS(24,3)
16401             IF(KFLR.LT.0) WID2=WIDS(24,2)
16402           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
16403 C...b' -> H + q.
16404             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16405      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
16406             IF(KFLR.GT.0) THEN
16407               WID2=WIDS(37,3)
16408               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
16409             ELSE
16410               WID2=WIDS(37,2)
16411               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
16412             ENDIF
16413           ENDIF
16414           WDTP(I)=FUDGE*WDTP(I)
16415           WDTP(0)=WDTP(0)+WDTP(I)
16416           IF(MDME(IDC,1).GT.0) THEN
16417             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16418             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16419             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16420             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16421           ENDIF
16422   150   CONTINUE
16423  
16424       ELSEIF(KFLA.EQ.8) THEN
16425 C...t' quark.
16426         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16427         DO 160 I=1,MDCY(KC,3)
16428           IDC=I+MDCY(KC,2)-1
16429           IF(MDME(IDC,1).LT.0) GOTO 160
16430           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16431           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16432           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
16433           WID2=1D0
16434           IF(I.GE.4.AND.I.LE.7) THEN
16435 C...t' -> W + q.
16436             WDTP(I)=FAC*VCKM(4,I-3)*
16437      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16438      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16439             IF(KFLR.GT.0) THEN
16440               WID2=WIDS(24,2)
16441               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
16442             ELSE
16443               WID2=WIDS(24,3)
16444               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
16445             ENDIF
16446           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
16447 C...t' -> H + q.
16448             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16449      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16450             IF(KFLR.GT.0) THEN
16451               WID2=WIDS(37,2)
16452               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
16453             ELSE
16454               WID2=WIDS(37,3)
16455               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
16456             ENDIF
16457           ENDIF
16458           WDTP(I)=FUDGE*WDTP(I)
16459           WDTP(0)=WDTP(0)+WDTP(I)
16460           IF(MDME(IDC,1).GT.0) THEN
16461             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16462             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16463             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16464             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16465           ENDIF
16466   160   CONTINUE
16467  
16468       ELSEIF(KFLA.EQ.17) THEN
16469 C...tau' lepton.
16470         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16471         DO 170 I=1,MDCY(KC,3)
16472           IDC=I+MDCY(KC,2)-1
16473           IF(MDME(IDC,1).LT.0) GOTO 170
16474           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16475           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16476           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
16477           WID2=1D0
16478           IF(I.EQ.3) THEN
16479 C...tau' -> W + nu'_tau.
16480             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16481      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16482             IF(KFLR.GT.0) THEN
16483               WID2=WIDS(24,3)
16484               WID2=WID2*WIDS(18,2)
16485             ELSE
16486               WID2=WIDS(24,2)
16487               WID2=WID2*WIDS(18,3)
16488             ENDIF
16489           ELSEIF(I.EQ.5) THEN
16490 C...tau' -> H + nu'_tau.
16491             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16492      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
16493             IF(KFLR.GT.0) THEN
16494               WID2=WIDS(37,3)
16495               WID2=WID2*WIDS(18,2)
16496             ELSE
16497               WID2=WIDS(37,2)
16498               WID2=WID2*WIDS(18,3)
16499             ENDIF
16500           ENDIF
16501           WDTP(I)=FUDGE*WDTP(I)
16502           WDTP(0)=WDTP(0)+WDTP(I)
16503           IF(MDME(IDC,1).GT.0) THEN
16504             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16505             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16506             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16507             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16508           ENDIF
16509   170   CONTINUE
16510  
16511       ELSEIF(KFLA.EQ.18) THEN
16512 C...nu'_tau neutrino.
16513         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16514         DO 180 I=1,MDCY(KC,3)
16515           IDC=I+MDCY(KC,2)-1
16516           IF(MDME(IDC,1).LT.0) GOTO 180
16517           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16518           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16519           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
16520           WID2=1D0
16521           IF(I.EQ.2) THEN
16522 C...nu'_tau -> W + tau'.
16523             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16524      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16525             IF(KFLR.GT.0) THEN
16526               WID2=WIDS(24,2)
16527               WID2=WID2*WIDS(17,2)
16528             ELSE
16529               WID2=WIDS(24,3)
16530               WID2=WID2*WIDS(17,3)
16531             ENDIF
16532           ELSEIF(I.EQ.3) THEN
16533 C...nu'_tau -> H + tau'.
16534             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16535      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16536             IF(KFLR.GT.0) THEN
16537               WID2=WIDS(37,2)
16538               WID2=WID2*WIDS(17,2)
16539             ELSE
16540               WID2=WIDS(37,3)
16541               WID2=WID2*WIDS(17,3)
16542             ENDIF
16543           ENDIF
16544           WDTP(I)=FUDGE*WDTP(I)
16545           WDTP(0)=WDTP(0)+WDTP(I)
16546           IF(MDME(IDC,1).GT.0) THEN
16547             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16548             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16549             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16550             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16551           ENDIF
16552   180   CONTINUE
16553  
16554       ELSEIF(KFLA.EQ.21) THEN
16555 C...QCD:
16556 C***Note that widths are not given in dimensional quantities here.
16557         DO 190 I=1,MDCY(KC,3)
16558           IDC=I+MDCY(KC,2)-1
16559           IF(MDME(IDC,1).LT.0) GOTO 190
16560           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16561           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16562           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
16563           WID2=1D0
16564           IF(I.LE.8) THEN
16565 C...QCD -> q + qbar
16566             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16567             IF(I.EQ.6) WID2=WIDS(6,1)
16568             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16569           ENDIF
16570           WDTP(I)=FUDGE*WDTP(I)
16571           WDTP(0)=WDTP(0)+WDTP(I)
16572           IF(MDME(IDC,1).GT.0) THEN
16573             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16574             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16575             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16576             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16577           ENDIF
16578   190   CONTINUE
16579  
16580       ELSEIF(KFLA.EQ.22) THEN
16581 C...QED photon.
16582 C***Note that widths are not given in dimensional quantities here.
16583         DO 200 I=1,MDCY(KC,3)
16584           IDC=I+MDCY(KC,2)-1
16585           IF(MDME(IDC,1).LT.0) GOTO 200
16586           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16587           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16588           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
16589           WID2=1D0
16590           IF(I.LE.8) THEN
16591 C...QED -> q + qbar.
16592             EF=KCHG(I,1)/3D0
16593             FCOF=3D0*RADC
16594             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
16595             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16596             IF(I.EQ.6) WID2=WIDS(6,1)
16597             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16598           ELSEIF(I.LE.12) THEN
16599 C...QED -> l+ + l-.
16600             EF=KCHG(9+2*(I-8),1)/3D0
16601             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16602             IF(I.EQ.12) WID2=WIDS(17,1)
16603           ENDIF
16604           WDTP(I)=FUDGE*WDTP(I)
16605           WDTP(0)=WDTP(0)+WDTP(I)
16606           IF(MDME(IDC,1).GT.0) THEN
16607             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16608             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16609             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16610             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16611           ENDIF
16612   200   CONTINUE
16613  
16614       ELSEIF(KFLA.EQ.23) THEN
16615 C...Z0:
16616         ICASE=1
16617         XWC=1D0/(16D0*XW*XW1)
16618         FAC=(AEM*XWC/3D0)*SHR
16619   210   CONTINUE
16620         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
16621           VINT(111)=0D0
16622           VINT(112)=0D0
16623           VINT(114)=0D0
16624         ENDIF
16625         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
16626           KFI=IABS(MINT(15))
16627           IF(KFI.GT.20) KFI=IABS(MINT(16))
16628           EI=KCHG(KFI,1)/3D0
16629           AI=SIGN(1D0,EI)
16630           VI=AI-4D0*EI*XWV
16631           SQMZ=PMAS(23,1)**2
16632           HZ=SHR*WDTP(0)
16633           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
16634           IF(MSTP(43).EQ.3) VINT(112)=
16635      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
16636           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
16637      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
16638         ENDIF
16639         DO 220 I=1,MDCY(KC,3)
16640           IDC=I+MDCY(KC,2)-1
16641           IF(MDME(IDC,1).LT.0) GOTO 220
16642           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16643           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16644           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
16645           WID2=1D0
16646           IF(I.LE.8) THEN
16647 C...Z0 -> q + qbar
16648             EF=KCHG(I,1)/3D0
16649             AF=SIGN(1D0,EF+0.1D0)
16650             VF=AF-4D0*EF*XWV
16651             FCOF=3D0*RADC
16652             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
16653             IF(I.EQ.6) WID2=WIDS(6,1)
16654             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16655           ELSEIF(I.LE.16) THEN
16656 C...Z0 -> l+ + l-, nu + nubar
16657             EF=KCHG(I+2,1)/3D0
16658             AF=SIGN(1D0,EF+0.1D0)
16659             VF=AF-4D0*EF*XWV
16660             FCOF=1D0
16661             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
16662           ENDIF
16663           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
16664           IF(ICASE.EQ.1) THEN
16665             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
16666      &      BE34
16667           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
16668             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
16669      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
16670      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
16671           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
16672             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
16673             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
16674             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
16675           ENDIF
16676           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
16677           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
16678           IF(MDME(IDC,1).GT.0) THEN
16679             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
16680      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
16681               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16682               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
16683      &        WDTE(I,MDME(IDC,1))
16684               WDTE(I,0)=WDTE(I,MDME(IDC,1))
16685               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16686             ENDIF
16687             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
16688               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
16689      &        VINT(111)+FGGF*WID2
16690               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
16691               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
16692      &        VINT(114)+FZZF*WID2
16693             ENDIF
16694           ENDIF
16695   220   CONTINUE
16696         IF(MINT(61).GE.1) ICASE=3-ICASE
16697         IF(ICASE.EQ.2) GOTO 210
16698  
16699       ELSEIF(KFLA.EQ.24) THEN
16700 C...W+/-:
16701         FAC=(AEM/(24D0*XW))*SHR
16702         DO 230 I=1,MDCY(KC,3)
16703           IDC=I+MDCY(KC,2)-1
16704           IF(MDME(IDC,1).LT.0) GOTO 230
16705           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16706           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16707           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
16708           WID2=1D0
16709           IF(I.LE.16) THEN
16710 C...W+/- -> q + qbar'
16711             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
16712             IF(KFLR.GT.0) THEN
16713               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
16714               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
16715               IF(I.GE.13) WID2=WID2*WIDS(7,3)
16716             ELSE
16717               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
16718               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
16719               IF(I.GE.13) WID2=WID2*WIDS(7,2)
16720             ENDIF
16721           ELSEIF(I.LE.20) THEN
16722 C...W+/- -> l+/- + nu
16723             FCOF=1D0
16724             IF(KFLR.GT.0) THEN
16725               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
16726             ELSE
16727               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
16728             ENDIF
16729           ENDIF
16730           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
16731      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
16732           WDTP(I)=FUDGE*WDTP(I)
16733           WDTP(0)=WDTP(0)+WDTP(I)
16734           IF(MDME(IDC,1).GT.0) THEN
16735             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16736             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16737             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16738             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16739           ENDIF
16740   230   CONTINUE
16741  
16742       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
16743 C...h0 (or H0, or A0):
16744         SHFS=SH
16745         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
16746         DO 270 I=1,MDCY(KFHIGG,3)
16747           IDC=I+MDCY(KFHIGG,2)-1
16748           IF(MDME(IDC,1).LT.0) GOTO 270
16749           KFC1=PYCOMP(KFDP(IDC,1))
16750           KFC2=PYCOMP(KFDP(IDC,2))
16751           RM1=PMAS(KFC1,1)**2/SH
16752           RM2=PMAS(KFC2,1)**2/SH
16753           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
16754      &    GOTO 270
16755           WID2=1D0
16756  
16757           IF(I.LE.8) THEN
16758 C...h0 -> q + qbar
16759             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
16760      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
16761 C...A0 behaves like beta, ho and H0 like beta**3.
16762             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
16763             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16764               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
16765               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
16766               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
16767                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
16768                 IF(IHIGG.NE.3) THEN
16769                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
16770      &            PARU(151+10*IHIGG))**2
16771                 ENDIF
16772               ENDIF
16773             ENDIF
16774             IF(I.EQ.6) WID2=WIDS(6,1)
16775             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16776           ELSEIF(I.LE.12) THEN
16777 C...h0 -> l+ + l-
16778             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
16779 C...A0 behaves like beta, ho and H0 like beta**3.
16780             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
16781             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
16782      &      PARU(153+10*IHIGG)**2
16783             IF(I.EQ.12) WID2=WIDS(17,1)
16784  
16785           ELSEIF(I.EQ.13) THEN
16786 C...h0 -> g + g; quark loop contribution only
16787             ETARE=0D0
16788             ETAIM=0D0
16789             DO 240 J=1,2*MSTP(1)
16790               EPS=(2D0*PMAS(J,1))**2/SH
16791 C...Loop integral; function of eps=4m^2/shat; different for A0.
16792               IF(EPS.LE.1D0) THEN
16793                 IF(EPS.GT.1D-4) THEN
16794                   ROOT=SQRT(1D0-EPS)
16795                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16796                 ELSE
16797                   RLN=LOG(4D0/EPS-2D0)
16798                 ENDIF
16799                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16800                 PHIIM=0.5D0*PARU(1)*RLN
16801               ELSE
16802                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16803                 PHIIM=0D0
16804               ENDIF
16805               IF(IHIGG.LE.2) THEN
16806                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
16807                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
16808               ELSE
16809                 ETAREJ=-0.5D0*EPS*PHIRE
16810                 ETAIMJ=-0.5D0*EPS*PHIIM
16811               ENDIF
16812 C...Couplings (=1 for standard model Higgs).
16813               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16814                 IF(MOD(J,2).EQ.1) THEN
16815                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
16816                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
16817                 ELSE
16818                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
16819                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
16820                 ENDIF
16821               ENDIF
16822               ETARE=ETARE+ETAREJ
16823               ETAIM=ETAIM+ETAIMJ
16824   240       CONTINUE
16825             ETA2=ETARE**2+ETAIM**2
16826             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
16827  
16828           ELSEIF(I.EQ.14) THEN
16829 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
16830             ETARE=0D0
16831             ETAIM=0D0
16832             JMAX=3*MSTP(1)+1
16833             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
16834             DO 250 J=1,JMAX
16835               IF(J.LE.2*MSTP(1)) THEN
16836                 EJ=KCHG(J,1)/3D0
16837                 EPS=(2D0*PMAS(J,1))**2/SH
16838               ELSEIF(J.LE.3*MSTP(1)) THEN
16839                 JL=2*(J-2*MSTP(1))-1
16840                 EJ=KCHG(10+JL,1)/3D0
16841                 EPS=(2D0*PMAS(10+JL,1))**2/SH
16842               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16843                 EPS=(2D0*PMAS(24,1))**2/SH
16844               ELSE
16845                 EPS=(2D0*PMAS(37,1))**2/SH
16846               ENDIF
16847 C...Loop integral; function of eps=4m^2/shat.
16848               IF(EPS.LE.1D0) THEN
16849                 IF(EPS.GT.1D-4) THEN
16850                   ROOT=SQRT(1D0-EPS)
16851                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16852                 ELSE
16853                   RLN=LOG(4D0/EPS-2D0)
16854                 ENDIF
16855                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16856                 PHIIM=0.5D0*PARU(1)*RLN
16857               ELSE
16858                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16859                 PHIIM=0D0
16860               ENDIF
16861               IF(J.LE.3*MSTP(1)) THEN
16862 C...Fermion loops: loop integral different for A0; charges.
16863                 IF(IHIGG.LE.2) THEN
16864                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
16865                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
16866                 ELSE
16867                   PHIPRE=-0.5D0*EPS*PHIRE
16868                   PHIPIM=-0.5D0*EPS*PHIIM
16869                 ENDIF
16870                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
16871                   EJC=3D0*EJ**2
16872                   EJH=PARU(151+10*IHIGG)
16873                 ELSEIF(J.LE.2*MSTP(1)) THEN
16874                   EJC=3D0*EJ**2
16875                   EJH=PARU(152+10*IHIGG)
16876                 ELSE
16877                   EJC=EJ**2
16878                   EJH=PARU(153+10*IHIGG)
16879                 ENDIF
16880                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
16881                 ETAREJ=EJC*EJH*PHIPRE
16882                 ETAIMJ=EJC*EJH*PHIPIM
16883               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16884 C...W loops: loop integral and charges.
16885                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
16886                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
16887                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16888                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
16889                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
16890                 ENDIF
16891               ELSE
16892 C...Charged H loops: loop integral and charges.
16893                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
16894      &          PARU(158+10*IHIGG+2*(IHIGG/3))
16895                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
16896                 ETAIMJ=-EPS**2*PHIIM*FACHHH
16897               ENDIF
16898               ETARE=ETARE+ETAREJ
16899               ETAIM=ETAIM+ETAIMJ
16900   250       CONTINUE
16901             ETA2=ETARE**2+ETAIM**2
16902             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
16903  
16904           ELSEIF(I.EQ.15) THEN
16905 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
16906             ETARE=0D0
16907             ETAIM=0D0
16908             JMAX=3*MSTP(1)+1
16909             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
16910             DO 260 J=1,JMAX
16911               IF(J.LE.2*MSTP(1)) THEN
16912                 EJ=KCHG(J,1)/3D0
16913                 AJ=SIGN(1D0,EJ+0.1D0)
16914                 VJ=AJ-4D0*EJ*XWV
16915                 EPS=(2D0*PMAS(J,1))**2/SH
16916                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
16917               ELSEIF(J.LE.3*MSTP(1)) THEN
16918                 JL=2*(J-2*MSTP(1))-1
16919                 EJ=KCHG(10+JL,1)/3D0
16920                 AJ=SIGN(1D0,EJ+0.1D0)
16921                 VJ=AJ-4D0*EJ*XWV
16922                 EPS=(2D0*PMAS(10+JL,1))**2/SH
16923                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
16924               ELSE
16925                 EPS=(2D0*PMAS(24,1))**2/SH
16926                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
16927               ENDIF
16928 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
16929               IF(EPS.LE.1D0) THEN
16930                 ROOT=SQRT(1D0-EPS)
16931                 IF(EPS.GT.1D-4) THEN
16932                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16933                 ELSE
16934                   RLN=LOG(4D0/EPS-2D0)
16935                 ENDIF
16936                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16937                 PHIIM=0.5D0*PARU(1)*RLN
16938                 PSIRE=0.5D0*ROOT*RLN
16939                 PSIIM=-0.5D0*ROOT*PARU(1)
16940               ELSE
16941                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16942                 PHIIM=0D0
16943                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
16944                 PSIIM=0D0
16945               ENDIF
16946               IF(EPSP.LE.1D0) THEN
16947                 ROOT=SQRT(1D0-EPSP)
16948                 IF(EPSP.GT.1D-4) THEN
16949                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16950                 ELSE
16951                   RLN=LOG(4D0/EPSP-2D0)
16952                 ENDIF
16953                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
16954                 PHIIMP=0.5D0*PARU(1)*RLN
16955                 PSIREP=0.5D0*ROOT*RLN
16956                 PSIIMP=-0.5D0*ROOT*PARU(1)
16957               ELSE
16958                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
16959                 PHIIMP=0D0
16960                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
16961                 PSIIMP=0D0
16962               ENDIF
16963               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
16964      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
16965               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
16966      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
16967               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
16968               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
16969               IF(J.LE.3*MSTP(1)) THEN
16970 C...Fermion loops: loop integral different for A0; charges.
16971                 IF(IHIGG.EQ.3) FXYRE=0D0
16972                 IF(IHIGG.EQ.3) FXYIM=0D0
16973                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
16974                   EJC=-3D0*EJ*VJ
16975                   EJH=PARU(151+10*IHIGG)
16976                 ELSEIF(J.LE.2*MSTP(1)) THEN
16977                   EJC=-3D0*EJ*VJ
16978                   EJH=PARU(152+10*IHIGG)
16979                 ELSE
16980                   EJC=-EJ*VJ
16981                   EJH=PARU(153+10*IHIGG)
16982                 ENDIF
16983                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
16984                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
16985                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
16986               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16987 C...W loops: loop integral and charges.
16988                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
16989                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
16990                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
16991                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16992                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
16993                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
16994                 ENDIF
16995               ELSE
16996 C...Charged H loops: loop integral and charges.
16997                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
16998      &          PARU(158+10*IHIGG+2*(IHIGG/3))
16999                 ETAREJ=FACHHH*FXYRE
17000                 ETAIMJ=FACHHH*FXYIM
17001               ENDIF
17002               ETARE=ETARE+ETAREJ
17003               ETAIM=ETAIM+ETAIMJ
17004   260       CONTINUE
17005             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
17006             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
17007             WID2=WIDS(23,2)
17008  
17009           ELSEIF(I.LE.17) THEN
17010 C...h0 -> Z0 + Z0, W+ + W-
17011             PM1=PMAS(IABS(KFDP(IDC,1)),1)
17012             PG1=PMAS(IABS(KFDP(IDC,1)),2)
17013             IF(MINT(62).GE.1) THEN
17014               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
17015      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
17016      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
17017                 MOFSV(IHIGG,I-15)=0
17018                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
17019      &          1D0-4D0*RM1))
17020                 WID2=1D0
17021               ELSE
17022                 MOFSV(IHIGG,I-15)=1
17023                 RMAS=SQRT(MAX(0D0,SH))
17024                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
17025      &          WID2)
17026                 WIDWSV(IHIGG,I-15)=WIDW
17027                 WID2SV(IHIGG,I-15)=WID2
17028               ENDIF
17029             ELSE
17030               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
17031                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
17032      &          1D0-4D0*RM1))
17033                 WID2=1D0
17034               ELSE
17035                 WIDW=WIDWSV(IHIGG,I-15)
17036                 WID2=WID2SV(IHIGG,I-15)
17037               ENDIF
17038             ENDIF
17039             WDTP(I)=FAC*WIDW/(2D0*(18-I))
17040             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
17041             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
17042      &      PARU(138+I+10*IHIGG)**2
17043             WID2=WID2*WIDS(7+I,1)
17044  
17045           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
17046 C...H0 -> Z0 + h0, A0-> Z0 + h0
17047             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
17048      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17049             IF(IHIGG.EQ.2) THEN
17050              WDTP(I)=WDTP(I)*PARU(179)**2
17051             ELSEIF(IHIGG.EQ.3) THEN
17052              WDTP(I)=WDTP(I)*PARU(186)**2
17053             ENDIF
17054             WID2=WIDS(23,2)*WIDS(25,2)
17055  
17056           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
17057 C...H0 -> h0 + h0, A0-> h0 + h0
17058             WDTP(I)=FAC*0.25D0*
17059      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17060             IF(IHIGG.EQ.2) THEN
17061              WDTP(I)=WDTP(I)*PARU(176)**2
17062             ELSEIF(IHIGG.EQ.3) THEN
17063              WDTP(I)=WDTP(I)*PARU(169)**2
17064             ENDIF
17065             WID2=WIDS(25,1)
17066           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
17067 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
17068             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
17069      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17070      &      *PARU(195+IHIGG)**2
17071             IF(I.EQ.20) THEN
17072               WID2=WIDS(24,2)*WIDS(37,3)
17073             ELSEIF(I.EQ.21) THEN
17074               WID2=WIDS(24,3)*WIDS(37,2)
17075             ENDIF
17076  
17077           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
17078 C...H0 -> Z0 + A0.
17079             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
17080      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*0.0D0
17081             WID2=WIDS(36,2)*WIDS(23,2)
17082  
17083           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
17084 C...H0 -> h0 + A0.
17085             WDTP(I)=FAC*0.5D0*PARU(180)**2*
17086      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17087             WID2=WIDS(25,2)*WIDS(36,2)
17088  
17089           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
17090 C...H0 -> A0 + A0
17091             WDTP(I)=FAC*0.25D0*PARU(177)**2*
17092      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17093             WID2=WIDS(36,1)
17094  
17095 CMRENNA++
17096           ELSE
17097 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
17098             RM10=RM1*SH/PMR**2
17099             RM20=RM2*SH/PMR**2
17100             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
17101             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
17102             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
17103               WFAC=0D0
17104             ELSE
17105               WFAC=WFAC/WFAC0
17106             ENDIF
17107             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
17108 CMRENNA--
17109             IF(KFC2.EQ.KFC1) THEN
17110               WID2=WIDS(KFC1,1)
17111             ELSE
17112               KSGN1=2
17113               IF(KFDP(IDC,1).LT.0) KSGN1=3
17114               KSGN2=2
17115               IF(KFDP(IDC,2).LT.0) KSGN2=3
17116               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
17117             ENDIF
17118           ENDIF
17119           WDTP(I)=FUDGE*WDTP(I)
17120           WDTP(0)=WDTP(0)+WDTP(I)
17121           IF(MDME(IDC,1).GT.0) THEN
17122             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17123             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17124             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17125             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17126           ENDIF
17127   270   CONTINUE
17128  
17129       ELSEIF(KFLA.EQ.32) THEN
17130 C...Z'0:
17131         ICASE=1
17132         XWC=1D0/(16D0*XW*XW1)
17133         FAC=(AEM*XWC/3D0)*SHR
17134         VINT(117)=0D0
17135   280   CONTINUE
17136         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
17137           VINT(111)=0D0
17138           VINT(112)=0D0
17139           VINT(113)=0D0
17140           VINT(114)=0D0
17141           VINT(115)=0D0
17142           VINT(116)=0D0
17143         ENDIF
17144         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17145           KFAI=IABS(MINT(15))
17146           EI=KCHG(KFAI,1)/3D0
17147           AI=SIGN(1D0,EI+0.1D0)
17148           VI=AI-4D0*EI*XWV
17149           KFAIC=1
17150           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
17151           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
17152           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
17153           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
17154             VPI=PARU(119+2*KFAIC)
17155             API=PARU(120+2*KFAIC)
17156           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
17157             VPI=PARJ(178+2*KFAIC)
17158             API=PARJ(179+2*KFAIC)
17159           ELSE
17160             VPI=PARJ(186+2*KFAIC)
17161             API=PARJ(187+2*KFAIC)
17162           ENDIF
17163           SQMZ=PMAS(23,1)**2
17164           HZ=SHR*VINT(117)
17165           SQMZP=PMAS(32,1)**2
17166           HZP=SHR*WDTP(0)
17167           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
17168      &    MSTP(44).EQ.7) VINT(111)=1D0
17169           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
17170      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
17171           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
17172      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
17173           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
17174      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
17175           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
17176      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
17177      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
17178           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
17179      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
17180         ENDIF
17181         DO 290 I=1,MDCY(KC,3)
17182           IDC=I+MDCY(KC,2)-1
17183           IF(MDME(IDC,1).LT.0) GOTO 290
17184           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17185           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17186           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
17187           WID2=1D0
17188           IF(I.LE.16) THEN
17189             IF(I.LE.8) THEN
17190 C...Z'0 -> q + qbar
17191               EF=KCHG(I,1)/3D0
17192               AF=SIGN(1D0,EF+0.1D0)
17193               VF=AF-4D0*EF*XWV
17194               IF(I.LE.2) THEN
17195                 VPF=PARU(123-2*MOD(I,2))
17196                 APF=PARU(124-2*MOD(I,2))
17197               ELSEIF(I.LE.4) THEN
17198                 VPF=PARJ(182-2*MOD(I,2))
17199                 APF=PARJ(183-2*MOD(I,2))
17200               ELSE
17201                 VPF=PARJ(190-2*MOD(I,2))
17202                 APF=PARJ(191-2*MOD(I,2))
17203               ENDIF
17204               FCOF=3D0*RADC
17205               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
17206      &        PYHFTH(SH,SH*RM1,1D0)
17207               IF(I.EQ.6) WID2=WIDS(6,1)
17208               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
17209             ELSEIF(I.LE.16) THEN
17210 C...Z'0 -> l+ + l-, nu + nubar
17211               EF=KCHG(I+2,1)/3D0
17212               AF=SIGN(1D0,EF+0.1D0)
17213               VF=AF-4D0*EF*XWV
17214               IF(I.LE.10) THEN
17215                 VPF=PARU(127-2*MOD(I,2))
17216                 APF=PARU(128-2*MOD(I,2))
17217               ELSEIF(I.LE.12) THEN
17218                 VPF=PARJ(186-2*MOD(I,2))
17219                 APF=PARJ(187-2*MOD(I,2))
17220               ELSE
17221                 VPF=PARJ(194-2*MOD(I,2))
17222                 APF=PARJ(195-2*MOD(I,2))
17223               ENDIF
17224               FCOF=1D0
17225               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
17226             ENDIF
17227             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
17228             IF(ICASE.EQ.1) THEN
17229               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
17230               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
17231      &        APF**2*(1D0-4D0*RM1))*BE34
17232             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17233               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
17234      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
17235      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
17236      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
17237      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
17238      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
17239             ELSEIF(MINT(61).EQ.2) THEN
17240               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
17241               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
17242               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
17243               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
17244               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
17245      &        BE34
17246               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
17247      &        BE34
17248             ENDIF
17249           ELSEIF(I.EQ.17) THEN
17250 C...Z'0 -> W+ + W-
17251             WDTPZP=PARU(129)**2*XW1**2*
17252      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17253      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17254             IF(ICASE.EQ.1) THEN
17255               WDTPZ=0D0
17256               WDTP(I)=FAC*WDTPZP
17257             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17258               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
17259             ELSEIF(MINT(61).EQ.2) THEN
17260               FGGF=0D0
17261               FGZF=0D0
17262               FGZPF=0D0
17263               FZZF=0D0
17264               FZZPF=0D0
17265               FZPZPF=WDTPZP
17266             ENDIF
17267             WID2=WIDS(24,1)
17268           ELSEIF(I.EQ.18) THEN
17269 C...Z'0 -> H+ + H-
17270             CZC=2D0*(1D0-2D0*XW)
17271             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
17272             IF(ICASE.EQ.1) THEN
17273               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
17274               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
17275             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17276               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
17277      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
17278      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
17279      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
17280      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
17281             ELSEIF(MINT(61).EQ.2) THEN
17282               FGGF=0.25D0*BE34C
17283               FGZF=0.25D0*PARU(142)*CZC*BE34C
17284               FGZPF=0.25D0*PARU(143)*CZC*BE34C
17285               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
17286               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
17287               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
17288             ENDIF
17289             WID2=WIDS(37,1)
17290           ELSEIF(I.EQ.19) THEN
17291 C...Z'0 -> Z0 + gamma.
17292           ELSEIF(I.EQ.20) THEN
17293 C...Z'0 -> Z0 + h0
17294             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17295             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
17296      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
17297             IF(ICASE.EQ.1) THEN
17298               WDTPZ=0D0
17299               WDTP(I)=FAC*WDTPZP
17300             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17301               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
17302             ELSEIF(MINT(61).EQ.2) THEN
17303               FGGF=0D0
17304               FGZF=0D0
17305               FGZPF=0D0
17306               FZZF=0D0
17307               FZZPF=0D0
17308               FZPZPF=WDTPZP
17309             ENDIF
17310             WID2=WIDS(23,2)*WIDS(25,2)
17311           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
17312 C...Z' -> h0 + A0 or H0 + A0.
17313             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17314             IF(I.EQ.21) THEN
17315               CZAH=PARU(186)
17316               CZPAH=PARU(188)
17317             ELSE
17318               CZAH=PARU(187)
17319               CZPAH=PARU(189)
17320             ENDIF
17321             IF(ICASE.EQ.1) THEN
17322               WDTPZ=CZAH**2*BE34C
17323               WDTP(I)=FAC*CZPAH**2*BE34C
17324             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17325               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
17326      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
17327      &        VINT(116))*BE34C
17328             ELSEIF(MINT(61).EQ.2) THEN
17329               FGGF=0D0
17330               FGZF=0D0
17331               FGZPF=0D0
17332               FZZF=CZAH**2*BE34C
17333               FZZPF=CZAH*CZPAH*BE34C
17334               FZPZPF=CZPAH**2*BE34C
17335             ENDIF
17336             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
17337             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
17338           ENDIF
17339           IF(ICASE.EQ.1) THEN
17340             VINT(117)=VINT(117)+FAC*WDTPZ
17341             WDTP(I)=FUDGE*WDTP(I)
17342             WDTP(0)=WDTP(0)+WDTP(I)
17343           ENDIF
17344           IF(MDME(IDC,1).GT.0) THEN
17345             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
17346      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
17347               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17348               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
17349      &        WDTE(I,MDME(IDC,1))
17350               WDTE(I,0)=WDTE(I,MDME(IDC,1))
17351               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17352             ENDIF
17353             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
17354               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
17355      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
17356               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
17357      &        FGZF*WID2
17358               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
17359      &        FGZPF*WID2
17360               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
17361      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
17362               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
17363      &        FZZPF*WID2
17364               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
17365      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
17366             ENDIF
17367           ENDIF
17368   290   CONTINUE
17369         IF(MINT(61).GE.1) ICASE=3-ICASE
17370         IF(ICASE.EQ.2) GOTO 280
17371  
17372       ELSEIF(KFLA.EQ.34) THEN
17373 C...W'+/-:
17374         FAC=(AEM/(24D0*XW))*SHR
17375         DO 300 I=1,MDCY(KC,3)
17376           IDC=I+MDCY(KC,2)-1
17377           IF(MDME(IDC,1).LT.0) GOTO 300
17378           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17379           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17380           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
17381           WID2=1D0
17382           IF(I.LE.20) THEN
17383             IF(I.LE.16) THEN
17384 C...W'+/- -> q + qbar'
17385               FCOF=3D0*RADC*(PARU(131)**2+PARU(132)**2)*
17386      &        VCKM((I-1)/4+1,MOD(I-1,4)+1)
17387               IF(KFLR.GT.0) THEN
17388                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
17389                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
17390                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
17391               ELSE
17392                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
17393                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
17394                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
17395               ENDIF
17396             ELSEIF(I.LE.20) THEN
17397 C...W'+/- -> l+/- + nu
17398               FCOF=PARU(133)**2+PARU(134)**2
17399               IF(KFLR.GT.0) THEN
17400                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
17401               ELSE
17402                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
17403               ENDIF
17404             ENDIF
17405             WDTP(I)=FAC*FCOF*0.5D0*(2D0-RM1-RM2-(RM1-RM2)**2)*
17406      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17407           ELSEIF(I.EQ.21) THEN
17408 C...W'+/- -> W+/- + Z0
17409             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
17410      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17411      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17412             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
17413             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
17414           ELSEIF(I.EQ.23) THEN
17415 C...W'+/- -> W+/- + h0
17416             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17417             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
17418             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
17419             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
17420           ENDIF
17421           WDTP(I)=FUDGE*WDTP(I)
17422           WDTP(0)=WDTP(0)+WDTP(I)
17423           IF(MDME(IDC,1).GT.0) THEN
17424             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17425             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17426             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17427             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17428           ENDIF
17429   300   CONTINUE
17430  
17431       ELSEIF(KFLA.EQ.37) THEN
17432 C...H+/-:
17433 C        IF(MSTP(49).EQ.0) THEN
17434         SHFS=SH
17435 C        ELSE
17436 C          SHFS=PMAS(37,1)**2
17437 C        ENDIF
17438         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
17439         DO 310 I=1,MDCY(KC,3)
17440           IDC=I+MDCY(KC,2)-1
17441           IF(MDME(IDC,1).LT.0) GOTO 310
17442           KFC1=PYCOMP(KFDP(IDC,1))
17443           KFC2=PYCOMP(KFDP(IDC,2))
17444           RM1=PMAS(KFC1,1)**2/SH
17445           RM2=PMAS(KFC2,1)**2/SH
17446           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
17447           WID2=1D0
17448           IF(I.LE.4) THEN
17449 C...H+/- -> q + qbar'
17450             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
17451             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
17452             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
17453      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
17454      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
17455             IF(KFLR.GT.0) THEN
17456               IF(I.EQ.3) WID2=WIDS(6,2)
17457               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
17458             ELSE
17459               IF(I.EQ.3) WID2=WIDS(6,3)
17460               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
17461             ENDIF
17462           ELSEIF(I.LE.8) THEN
17463 C...H+/- -> l+/- + nu
17464             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
17465      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
17466      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
17467             IF(KFLR.GT.0) THEN
17468               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
17469             ELSE
17470               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
17471             ENDIF
17472           ELSEIF(I.EQ.9) THEN
17473 C...H+/- -> W+/- + h0.
17474             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
17475      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17476             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
17477             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
17478  
17479 CMRENNA++
17480           ELSE
17481 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
17482             RM10=RM1*SH/PMR**2
17483             RM20=RM2*SH/PMR**2
17484             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
17485             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
17486             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
17487               WFAC=0D0
17488             ELSE
17489               WFAC=WFAC/WFAC0
17490             ENDIF
17491             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
17492 CMRENNA--
17493             KSGN1=2
17494             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
17495             KSGN2=2
17496             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
17497             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
17498           ENDIF
17499           WDTP(I)=FUDGE*WDTP(I)
17500           WDTP(0)=WDTP(0)+WDTP(I)
17501           IF(MDME(IDC,1).GT.0) THEN
17502             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17503             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17504             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17505             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17506           ENDIF
17507   310   CONTINUE
17508  
17509       ELSEIF(KFLA.EQ.41) THEN
17510 C...R:
17511         FAC=(AEM/(12D0*XW))*SHR
17512         DO 320 I=1,MDCY(KC,3)
17513           IDC=I+MDCY(KC,2)-1
17514           IF(MDME(IDC,1).LT.0) GOTO 320
17515           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17516           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17517           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
17518           WID2=1D0
17519           IF(I.LE.6) THEN
17520 C...R -> q + qbar'
17521             FCOF=3D0*RADC
17522           ELSEIF(I.LE.9) THEN
17523 C...R -> l+ + l'-
17524             FCOF=1D0
17525           ENDIF
17526           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
17527      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17528           IF(KFLR.GT.0) THEN
17529             IF(I.EQ.4) WID2=WIDS(6,3)
17530             IF(I.EQ.5) WID2=WIDS(7,3)
17531             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
17532             IF(I.EQ.9) WID2=WIDS(17,3)
17533           ELSE
17534             IF(I.EQ.4) WID2=WIDS(6,2)
17535             IF(I.EQ.5) WID2=WIDS(7,2)
17536             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
17537             IF(I.EQ.9) WID2=WIDS(17,2)
17538           ENDIF
17539           WDTP(I)=FUDGE*WDTP(I)
17540           WDTP(0)=WDTP(0)+WDTP(I)
17541           IF(MDME(IDC,1).GT.0) THEN
17542             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17543             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17544             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17545             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17546           ENDIF
17547   320   CONTINUE
17548  
17549       ELSEIF(KFLA.EQ.42) THEN
17550 C...LQ (leptoquark).
17551         FAC=(AEM/4D0)*PARU(151)*SHR
17552         DO 330 I=1,MDCY(KC,3)
17553           IDC=I+MDCY(KC,2)-1
17554           IF(MDME(IDC,1).LT.0) GOTO 330
17555           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17556           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17557           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
17558           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17559           WID2=1D0
17560           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
17561           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
17562           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
17563           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
17564           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
17565           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
17566           WDTP(I)=FUDGE*WDTP(I)
17567           WDTP(0)=WDTP(0)+WDTP(I)
17568           IF(MDME(IDC,1).GT.0) THEN
17569             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17570             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17571             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17572             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17573           ENDIF
17574   330   CONTINUE
17575  
17576       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
17577 C...Techni-pi0 and techni-pi0':
17578         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
17579         DO 340 I=1,MDCY(KC,3)
17580           IDC=I+MDCY(KC,2)-1
17581           IF(MDME(IDC,1).LT.0) GOTO 340
17582           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
17583           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
17584           RM1=PM1**2/SH
17585           RM2=PM2**2/SH
17586           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
17587           WID2=1D0
17588 C...pi_tc -> g + g
17589           IF(I.EQ.8) THEN
17590             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
17591      &      /(8D0*PARU(1))*SH*SHR
17592             IF(KFLA.EQ.KTECHN+111) THEN
17593               FACP=FACP*RTCM(9)
17594             ELSE
17595               FACP=FACP*RTCM(10)
17596             ENDIF
17597             WDTP(I)=FACP
17598           ELSE
17599 C...pi_tc -> f + fbar.
17600             FCOF=1D0
17601             IKA=IABS(KFDP(IDC,1))
17602             IF(IKA.LT.10) FCOF=3D0*RADC
17603             HM1=PM1
17604             HM2=PM2
17605             IF(IKA.GE.4.AND.IKA.LE.6) THEN
17606                FCOF=FCOF*RTCM(1+IKA)**2
17607                HM1=PYMRUN(KFDP(IDC,1),SH)
17608                HM2=PYMRUN(KFDP(IDC,2),SH)
17609             ELSEIF(IKA.EQ.15) THEN
17610                FCOF=FCOF*RTCM(8)**2
17611             ENDIF
17612             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
17613      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17614           ENDIF
17615           WDTP(I)=FUDGE*WDTP(I)
17616           WDTP(0)=WDTP(0)+WDTP(I)
17617           IF(MDME(IDC,1).GT.0) THEN
17618             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17619             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17620             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17621             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17622           ENDIF
17623   340   CONTINUE
17624  
17625       ELSEIF(KFLA.EQ.KTECHN+211) THEN
17626 C...pi+_tc
17627         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
17628         DO 350 I=1,MDCY(KC,3)
17629           IDC=I+MDCY(KC,2)-1
17630           IF(MDME(IDC,1).LT.0) GOTO 350
17631           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
17632           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
17633           PM3=0D0
17634           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
17635           RM1=PM1**2/SH
17636           RM2=PM2**2/SH
17637           RM3=PM3**2/SH
17638           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
17639           WID2=1D0
17640 C...pi_tc -> f + f'.
17641           FCOF=1D0
17642           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
17643 C...pi_tc+ -> W b b~
17644           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
17645             FCOF=3D0*RADC
17646             XMT2=PMAS(6,1)**2/SH
17647             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
17648             KFC3=PYCOMP(KFDP(IDC,3))
17649             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
17650             CHECK = SQRT(RM1)
17651             T0 = (1D0-CHECK**2)*
17652      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
17653      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
17654             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
17655      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
17656             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
17657             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
17658      &      +T3*LOG(CHECK))
17659             IF(KFLR.GT.0) THEN
17660                WID2=WIDS(24,2)
17661             ELSE
17662                WID2=WIDS(24,3)
17663             ENDIF
17664           ELSE
17665             FCOF=1D0
17666             IKA=IABS(KFDP(IDC,1))
17667             IF(IKA.LT.10) FCOF=3D0*RADC
17668             HM1=PM1
17669             HM2=PM2
17670             IF(I.GE.1.AND.I.LE.5) THEN
17671               IF(I.LE.2) THEN
17672                 FCOF=FCOF*RTCM(5)**2
17673               ELSEIF(I.LE.4) THEN
17674                 FCOF=FCOF*RTCM(6)**2
17675               ELSEIF(I.EQ.5) THEN
17676                 FCOF=FCOF*RTCM(7)**2
17677               ENDIF
17678               HM1=PYMRUN(KFDP(IDC,1),SH)
17679               HM2=PYMRUN(KFDP(IDC,2),SH)
17680             ELSEIF(I.EQ.8) THEN
17681               FCOF=FCOF*RTCM(8)**2
17682             ENDIF
17683             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
17684      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17685           ENDIF
17686           WDTP(I)=FUDGE*WDTP(I)
17687           WDTP(0)=WDTP(0)+WDTP(I)
17688           IF(MDME(IDC,1).GT.0) THEN
17689             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17690             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17691             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17692             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17693           ENDIF
17694   350     CONTINUE
17695  
17696       ELSEIF(KFLA.EQ.KTECHN+331) THEN
17697 C...Techni-eta.
17698         FAC=(SH/PARP(46)**2)*SHR
17699         DO 360 I=1,MDCY(KC,3)
17700           IDC=I+MDCY(KC,2)-1
17701           IF(MDME(IDC,1).LT.0) GOTO 360
17702           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17703           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17704           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
17705           WID2=1D0
17706           IF(I.LE.2) THEN
17707             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
17708             IF(I.EQ.2) WID2=WIDS(6,1)
17709           ELSE
17710             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
17711           ENDIF
17712           WDTP(I)=FUDGE*WDTP(I)
17713           WDTP(0)=WDTP(0)+WDTP(I)
17714           IF(MDME(IDC,1).GT.0) THEN
17715             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17716             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17717             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17718             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17719           ENDIF
17720   360   CONTINUE
17721  
17722       ELSEIF(KFLA.EQ.KTECHN+113) THEN
17723 C...Techni-rho0:
17724         ALPRHT=2.91D0*(3D0/ITCM(1))
17725         FAC=(ALPRHT/12D0)*SHR
17726         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
17727         SQMZ=PMAS(23,1)**2
17728         SQMW=PMAS(24,1)**2
17729         SHP=SH
17730         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
17731         GMMZ=SHR*WDTPP(0)
17732         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
17733         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
17734         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
17735         DO 370 I=1,MDCY(KC,3)
17736           IDC=I+MDCY(KC,2)-1
17737           IF(MDME(IDC,1).LT.0) GOTO 370
17738           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17739           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17740           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
17741           WID2=1D0
17742           IF(I.EQ.1) THEN
17743 C...rho_tc0 -> W+ + W-.
17744             WDTP(I)=FAC*RTCM(3)**4*
17745      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17746             WID2=WIDS(24,1)
17747           ELSEIF(I.EQ.2) THEN
17748 C...rho_tc0 -> W+ + pi_tc-.
17749             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17750      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17751      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17752      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17753      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17754             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
17755           ELSEIF(I.EQ.3) THEN
17756 C...rho_tc0 -> pi_tc+ + W-.
17757             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17758      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17759      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17760      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17761      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17762             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
17763           ELSEIF(I.EQ.4) THEN
17764 C...rho_tc0 -> pi_tc+ + pi_tc-.
17765             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
17766      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17767             WID2=WIDS(PYCOMP(KTECHN+211),1)
17768           ELSEIF(I.EQ.5) THEN
17769 C...rho_tc0 -> gamma + pi_tc0
17770             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17771      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17772      &      SHR**3
17773             WID2=WIDS(PYCOMP(KTECHN+111),2)
17774           ELSEIF(I.EQ.6) THEN
17775 C...rho_tc0 -> gamma + pi_tc0'
17776             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17777      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
17778             WID2=WIDS(PYCOMP(KTECHN+221),2)
17779           ELSEIF(I.EQ.7) THEN
17780 C...rho_tc0 -> Z0 + pi_tc0
17781             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17782      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17783      &      XW/XW1*SHR**3
17784             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
17785           ELSEIF(I.EQ.8) THEN
17786 C...rho_tc0 -> Z0 + pi_tc0'
17787             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17788      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
17789      &      XW/XW1*SHR**3
17790             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
17791           ELSE
17792 C...rho_tc0 -> f + fbar.
17793             WID2=1D0
17794             IF(I.LE.16) THEN
17795               IA=I-8
17796               FCOF=3D0*RADC
17797               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
17798             ELSE
17799               IA=I-6
17800               FCOF=1D0
17801               IF(IA.GE.17) WID2=WIDS(IA,1)
17802             ENDIF
17803             EI=KCHG(IA,1)/3D0
17804             AI=SIGN(1D0,EI+0.1D0)
17805             VI=AI-4D0*EI*XWV
17806             VALI=0.5D0*(VI+AI)
17807             VARI=0.5D0*(VI-AI)
17808             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
17809      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
17810      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
17811      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
17812           ENDIF
17813           WDTP(I)=FUDGE*WDTP(I)
17814           WDTP(0)=WDTP(0)+WDTP(I)
17815           IF(MDME(IDC,1).GT.0) THEN
17816             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17817             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17818             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17819             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17820           ENDIF
17821   370   CONTINUE
17822  
17823       ELSEIF(KFLA.EQ.KTECHN+213) THEN
17824 C...Techni-rho+/-:
17825         ALPRHT=2.91D0*(3D0/ITCM(1))
17826         FAC=(ALPRHT/12D0)*SHR
17827         SQMZ=PMAS(23,1)**2
17828         SQMW=PMAS(24,1)**2
17829         SHP=SH
17830         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
17831         GMMW=SHR*WDTPP(0)
17832         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
17833      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
17834         DO 380 I=1,MDCY(KC,3)
17835           IDC=I+MDCY(KC,2)-1
17836           IF(MDME(IDC,1).LT.0) GOTO 380
17837           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17838           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17839           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
17840           WID2=1D0
17841           IF(I.EQ.1) THEN
17842 C...rho_tc+ -> W+ + Z0.
17843             WDTP(I)=FAC*RTCM(3)**4*
17844      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17845             IF(KFLR.GT.0) THEN
17846               WID2=WIDS(24,2)*WIDS(23,2)
17847             ELSE
17848               WID2=WIDS(24,3)*WIDS(23,2)
17849             ENDIF
17850           ELSEIF(I.EQ.2) THEN
17851 C...rho_tc+ -> W+ + pi_tc0.
17852             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17853      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17854      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17855      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17856      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17857             IF(KFLR.GT.0) THEN
17858               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
17859             ELSE
17860               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
17861             ENDIF
17862           ELSEIF(I.EQ.3) THEN
17863 C...rho_tc+ -> pi_tc+ + Z0.
17864             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17865      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17866      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17867      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
17868      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
17869      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17870      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17871      &      SHR**3*XW/XW1
17872             IF(KFLR.GT.0) THEN
17873               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
17874             ELSE
17875               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
17876             ENDIF
17877           ELSEIF(I.EQ.4) THEN
17878 C...rho_tc+ -> pi_tc+ + pi_tc0.
17879             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
17880      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17881             IF(KFLR.GT.0) THEN
17882               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
17883             ELSE
17884               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
17885             ENDIF
17886           ELSEIF(I.EQ.5) THEN
17887 C...rho_tc+ -> pi_tc+ + gamma
17888             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17889      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17890      &      SHR**3
17891             IF(KFLR.GT.0) THEN
17892               WID2=WIDS(PYCOMP(KTECHN+211),2)
17893             ELSE
17894               WID2=WIDS(PYCOMP(KTECHN+211),3)
17895             ENDIF
17896           ELSEIF(I.EQ.6) THEN
17897 C...rho_tc+ -> W+ + pi_tc0'
17898             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17899      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
17900             IF(KFLR.GT.0) THEN
17901               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
17902             ELSE
17903               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
17904             ENDIF
17905           ELSE
17906 C...rho_tc+ -> f + fbar'.
17907             IA=I-6
17908             WID2=1D0
17909             IF(IA.LE.16) THEN
17910               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
17911               IF(KFLR.GT.0) THEN
17912                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
17913                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
17914                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
17915               ELSE
17916                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
17917                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
17918                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
17919               ENDIF
17920             ELSE
17921               FCOF=1D0
17922               IF(KFLR.GT.0) THEN
17923                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
17924               ELSE
17925                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
17926               ENDIF
17927             ENDIF
17928             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
17929      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17930           ENDIF
17931           WDTP(I)=FUDGE*WDTP(I)
17932           WDTP(0)=WDTP(0)+WDTP(I)
17933           IF(MDME(IDC,1).GT.0) THEN
17934             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17935             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17936             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17937             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17938           ENDIF
17939   380   CONTINUE
17940  
17941       ELSEIF(KFLA.EQ.KTECHN+223) THEN
17942 C...Techni-omega:
17943         ALPRHT=2.91D0*(3D0/ITCM(1))
17944         FAC=(ALPRHT/12D0)*SHR
17945         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
17946         SQMZ=PMAS(23,1)**2
17947         SHP=SH
17948         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
17949         GMMZ=SHR*WDTPP(0)
17950         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
17951         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
17952         DO 390 I=1,MDCY(KC,3)
17953           IDC=I+MDCY(KC,2)-1
17954           IF(MDME(IDC,1).LT.0) GOTO 390
17955           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17956           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17957           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
17958           WID2=1D0
17959           IF(I.EQ.1) THEN
17960 C...omega_tc0 -> gamma + pi_tc0.
17961             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
17962      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
17963             WID2=WIDS(PYCOMP(KTECHN+111),2)
17964           ELSEIF(I.EQ.2) THEN
17965 C...omega_tc0 -> Z0 + pi_tc0
17966             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17967      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
17968      &      XW/XW1*SHR**3
17969             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
17970           ELSEIF(I.EQ.3) THEN
17971 C...omega_tc0 -> gamma + pi_tc0'
17972             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17973      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
17974      &      SHR**3
17975             WID2=WIDS(PYCOMP(KTECHN+221),2)
17976           ELSEIF(I.EQ.4) THEN
17977 C...omega_tc0 -> Z0 + pi_tc0'
17978             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17979      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
17980      &      XW/XW1*SHR**3
17981             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
17982           ELSEIF(I.EQ.5) THEN
17983 C...omega_tc0 -> W+ + pi_tc-
17984             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17985      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
17986      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
17987      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17988             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
17989           ELSEIF(I.EQ.6) THEN
17990 C...omega_tc0 -> pi_tc+ + W-
17991             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17992      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
17993      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
17994      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17995             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
17996           ELSEIF(I.EQ.7) THEN
17997 C...omega_tc0 -> W+ + W-.
17998             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
17999      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
18000             WID2=WIDS(24,1)
18001           ELSEIF(I.EQ.8) THEN
18002 C...omega_tc0 -> pi_tc+ + pi_tc-.
18003             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
18004      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
18005             WID2=WIDS(PYCOMP(KTECHN+211),1)
18006           ELSE
18007 C...omega_tc0 -> f + fbar.
18008             WID2=1D0
18009             IF(I.LE.14) THEN
18010               IA=I-8
18011               FCOF=3D0*RADC
18012               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
18013             ELSE
18014               IA=I-6
18015               FCOF=1D0
18016               IF(IA.GE.17) WID2=WIDS(IA,1)
18017             ENDIF
18018             EI=KCHG(IA,1)/3D0
18019             AI=SIGN(1D0,EI+0.1D0)
18020             VI=AI-4D0*EI*XWV
18021             VALI=-0.5D0*(VI+AI)
18022             VARI=-0.5D0*(VI-AI)
18023             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
18024      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
18025      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
18026      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
18027           ENDIF
18028           WDTP(I)=FUDGE*WDTP(I)
18029           WDTP(0)=WDTP(0)+WDTP(I)
18030           IF(MDME(IDC,1).GT.0) THEN
18031             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18032             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18033             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18034             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18035           ENDIF
18036   390   CONTINUE
18037  
18038 C.....V8 -> quark anti-quark
18039       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
18040         FAC=AS/6D0*SHR
18041         TANT3=RTCM(21)
18042         IF(ITCM(2).EQ.0) THEN
18043           IMDL=1
18044         ELSEIF(ITCM(2).EQ.1) THEN
18045           IMDL=2
18046         ENDIF
18047         DO 400 I=1,MDCY(KC,3)
18048           IDC=I+MDCY(KC,2)-1
18049           IF(MDME(IDC,1).LT.0) GOTO 400
18050           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
18051           RM1=PM1**2/SH
18052           IF(RM1.GT.0.25D0) GOTO 400
18053           WID2=1D0
18054           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
18055             FMIX=1D0/TANT3**2
18056           ELSE
18057             FMIX=TANT3**2
18058           ENDIF
18059           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
18060           IF(I.EQ.6) WID2=WIDS(6,1)
18061           WDTP(I)=FUDGE*WDTP(I)
18062           WDTP(0)=WDTP(0)+WDTP(I)
18063           IF(MDME(IDC,1).GT.0) THEN
18064             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18065             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18066             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18067             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18068           ENDIF
18069   400   CONTINUE
18070  
18071       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
18072         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
18073         CLEBF=0D0
18074         DO 410 I=1,MDCY(KC,3)
18075           IDC=I+MDCY(KC,2)-1
18076           IF(MDME(IDC,1).LT.0) GOTO 410
18077           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18078           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18079           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
18080           WID2=1D0
18081 C...pi_tc -> g + g
18082           IF(I.EQ.7) THEN
18083             IF(KFLA.EQ.KTECHN+100111) THEN
18084               CLEBG=4D0/3D0
18085             ELSE
18086               CLEBG=5D0/3D0
18087             ENDIF
18088             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
18089      &      /(2D0*PARU(1))*SH*SHR*CLEBG
18090             WDTP(I)=FACP
18091           ELSE
18092 C...pi_tc -> f + fbar.
18093             IF(I.EQ.6) WID2=WIDS(6,1)
18094             FCOF=1D0
18095             IKA=IABS(KFDP(IDC,1))
18096             IF(IKA.LT.10) FCOF=3D0*RADC
18097             HM1=PYMRUN(KFDP(IDC,1),SH)
18098             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
18099      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18100           ENDIF
18101           WDTP(I)=FUDGE*WDTP(I)
18102           WDTP(0)=WDTP(0)+WDTP(I)
18103           IF(MDME(IDC,1).GT.0) THEN
18104             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18105             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18106             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18107             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18108           ENDIF
18109   410   CONTINUE
18110  
18111       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
18112         FAC=AS/6D0*SHR
18113         ALPRHT=2.91D0*(3D0/ITCM(1))
18114         TANT3=RTCM(21)
18115         SIN2T=2D0*TANT3/(TANT3**2+1D0)
18116         SINT3=TANT3/SQRT(TANT3**2+1D0)
18117         CSXPP=RTCM(22)
18118         RM82=RTCM(27)**2
18119         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
18120      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
18121         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
18122      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
18123         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
18124      &  SINT3**2)*2D0
18125         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
18126      &  SINT3**2)*2D0
18127         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
18128  
18129         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
18130         GMV8=SHR*WDTPP(0)
18131         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
18132         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
18133         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
18134         IF(ITCM(2).EQ.0) THEN
18135           IMDL=1
18136         ELSE
18137           IMDL=2
18138         ENDIF
18139         DO 420 I=1,MDCY(KC,3)
18140           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
18141      &    KFLA.EQ.KTECHN+300113)) GOTO 420
18142           IDC=I+MDCY(KC,2)-1
18143           IF(MDME(IDC,1).LT.0) GOTO 420
18144           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18145           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18146           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
18147           WID2=1D0
18148           IF(I.LE.6) THEN
18149             IF(I.EQ.6) WID2=WIDS(6,1)
18150             XIG=1D0
18151             IF(KFLA.EQ.KTECHN+200113) THEN
18152               XIG=0D0
18153               XIJ=X12
18154             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
18155               XIG=0D0
18156               XIJ=X21
18157             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
18158               XIJ=X11
18159             ELSE
18160               XIJ=X22
18161             ENDIF
18162             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
18163               FMIX=1D0/TANT3/SIN2T
18164             ELSE
18165               FMIX=-TANT3/SIN2T
18166             ENDIF
18167             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
18168             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
18169           ELSEIF(I.EQ.7) THEN
18170             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
18171           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
18172             PSH=SHR*(1D0-RM1)/2D0
18173             WDTP(I)=AS/9D0*PSH**3/RM82
18174             IF(I.EQ.8) THEN
18175               WDTP(I)=2D0*WDTP(I)*CSXPP**2
18176               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
18177             ELSE
18178               WDTP(I)=5D0*WDTP(I)
18179               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
18180             ENDIF
18181           ENDIF
18182           WDTP(I)=FUDGE*WDTP(I)
18183           WDTP(0)=WDTP(0)+WDTP(I)
18184           IF(MDME(IDC,1).GT.0) THEN
18185             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18186             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18187             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18188             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18189           ENDIF
18190   420   CONTINUE
18191  
18192       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
18193 C...d* excited quark.
18194         FAC=(SH/RTCM(41)**2)*SHR
18195         DO 430 I=1,MDCY(KC,3)
18196           IDC=I+MDCY(KC,2)-1
18197           IF(MDME(IDC,1).LT.0) GOTO 430
18198           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18199           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18200           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
18201           WID2=1D0
18202           IF(I.EQ.1) THEN
18203 C...d* -> g + d.
18204             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
18205             WID2=1D0
18206           ELSEIF(I.EQ.2) THEN
18207 C...d* -> gamma + d.
18208             QF=-RTCM(43)/2D0+RTCM(44)/6D0
18209             WDTP(I)=FAC*AEM*QF**2/4D0
18210             WID2=1D0
18211           ELSEIF(I.EQ.3) THEN
18212 C...d* -> Z0 + d.
18213             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
18214             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18215      &      (1D0-RM1)**2*(2D0+RM1)
18216             WID2=WIDS(23,2)
18217           ELSEIF(I.EQ.4) THEN
18218 C...d* -> W- + u.
18219             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18220      &      (1D0-RM1)**2*(2D0+RM1)
18221             IF(KFLR.GT.0) WID2=WIDS(24,3)
18222             IF(KFLR.LT.0) WID2=WIDS(24,2)
18223           ENDIF
18224           WDTP(I)=FUDGE*WDTP(I)
18225           WDTP(0)=WDTP(0)+WDTP(I)
18226           IF(MDME(IDC,1).GT.0) THEN
18227             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18228             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18229             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18230             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18231           ENDIF
18232   430   CONTINUE
18233  
18234       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
18235 C...u* excited quark.
18236         FAC=(SH/RTCM(41)**2)*SHR
18237         DO 440 I=1,MDCY(KC,3)
18238           IDC=I+MDCY(KC,2)-1
18239           IF(MDME(IDC,1).LT.0) GOTO 440
18240           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18241           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18242           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
18243           WID2=1D0
18244           IF(I.EQ.1) THEN
18245 C...u* -> g + u.
18246             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
18247             WID2=1D0
18248           ELSEIF(I.EQ.2) THEN
18249 C...u* -> gamma + u.
18250             QF=RTCM(43)/2D0+RTCM(44)/6D0
18251             WDTP(I)=FAC*AEM*QF**2/4D0
18252             WID2=1D0
18253           ELSEIF(I.EQ.3) THEN
18254 C...u* -> Z0 + u.
18255             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
18256             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18257      &      (1D0-RM1)**2*(2D0+RM1)
18258             WID2=WIDS(23,2)
18259           ELSEIF(I.EQ.4) THEN
18260 C...u* -> W+ + d.
18261             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18262      &      (1D0-RM1)**2*(2D0+RM1)
18263             IF(KFLR.GT.0) WID2=WIDS(24,2)
18264             IF(KFLR.LT.0) WID2=WIDS(24,3)
18265           ENDIF
18266           WDTP(I)=FUDGE*WDTP(I)
18267           WDTP(0)=WDTP(0)+WDTP(I)
18268           IF(MDME(IDC,1).GT.0) THEN
18269             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18270             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18271             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18272             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18273           ENDIF
18274   440   CONTINUE
18275  
18276       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
18277 C...e* excited lepton.
18278         FAC=(SH/RTCM(41)**2)*SHR
18279         DO 450 I=1,MDCY(KC,3)
18280           IDC=I+MDCY(KC,2)-1
18281           IF(MDME(IDC,1).LT.0) GOTO 450
18282           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18283           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18284           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
18285           WID2=1D0
18286           IF(I.EQ.1) THEN
18287 C...e* -> gamma + e.
18288             QF=-RTCM(43)/2D0-RTCM(44)/2D0
18289             WDTP(I)=FAC*AEM*QF**2/4D0
18290             WID2=1D0
18291           ELSEIF(I.EQ.2) THEN
18292 C...e* -> Z0 + e.
18293             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
18294             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18295      &      (1D0-RM1)**2*(2D0+RM1)
18296             WID2=WIDS(23,2)
18297           ELSEIF(I.EQ.3) THEN
18298 C...e* -> W- + nu.
18299             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18300      &      (1D0-RM1)**2*(2D0+RM1)
18301             IF(KFLR.GT.0) WID2=WIDS(24,3)
18302             IF(KFLR.LT.0) WID2=WIDS(24,2)
18303           ENDIF
18304           WDTP(I)=FUDGE*WDTP(I)
18305           WDTP(0)=WDTP(0)+WDTP(I)
18306           IF(MDME(IDC,1).GT.0) THEN
18307             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18308             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18309             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18310             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18311           ENDIF
18312   450   CONTINUE
18313  
18314       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
18315 C...nu*_e excited neutrino.
18316         FAC=(SH/RTCM(41)**2)*SHR
18317         DO 460 I=1,MDCY(KC,3)
18318           IDC=I+MDCY(KC,2)-1
18319           IF(MDME(IDC,1).LT.0) GOTO 460
18320           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18321           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18322           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
18323           WID2=1D0
18324           IF(I.EQ.1) THEN
18325 C...nu*_e -> Z0 + nu*_e.
18326             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
18327             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18328      &      (1D0-RM1)**2*(2D0+RM1)
18329             WID2=WIDS(23,2)
18330           ELSEIF(I.EQ.2) THEN
18331 C...nu*_e -> W+ + e.
18332             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18333      &      (1D0-RM1)**2*(2D0+RM1)
18334             IF(KFLR.GT.0) WID2=WIDS(24,2)
18335             IF(KFLR.LT.0) WID2=WIDS(24,3)
18336           ENDIF
18337           WDTP(I)=FUDGE*WDTP(I)
18338           WDTP(0)=WDTP(0)+WDTP(I)
18339           IF(MDME(IDC,1).GT.0) THEN
18340             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18341             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18342             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18343             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18344           ENDIF
18345   460   CONTINUE
18346  
18347       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
18348 C...G* (graviton resonance):
18349         FAC=(PARP(50)**2/PARU(1))*SHR
18350         DO 470 I=1,MDCY(KC,3)
18351           IDC=I+MDCY(KC,2)-1
18352           IF(MDME(IDC,1).LT.0) GOTO 470
18353           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18354           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18355           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
18356           WID2=1D0
18357           IF(I.LE.8) THEN
18358 C...G* -> q + qbar
18359             FCOF=3D0*RADC
18360             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
18361      &      PYHFTH(SH,SH*RM1,1D0)
18362             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
18363      &      (1D0+8D0*RM1/3D0)/320D0
18364             IF(I.EQ.6) WID2=WIDS(6,1)
18365             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
18366           ELSEIF(I.LE.16) THEN
18367 C...G* -> l+ + l-, nu + nubar
18368             FCOF=1D0
18369             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
18370      &      (1D0+8D0*RM1/3D0)/320D0
18371             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
18372           ELSEIF(I.EQ.17) THEN
18373 C...G* -> g + g.
18374             WDTP(I)=FAC/20D0
18375           ELSEIF(I.EQ.18) THEN
18376 C...G* -> gamma + gamma.
18377             WDTP(I)=FAC/160D0
18378           ELSEIF(I.EQ.19) THEN
18379 C...G* -> Z0 + Z0.
18380             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
18381      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
18382             WID2=WIDS(23,1)
18383           ELSEIF(I.EQ.20) THEN
18384 C...G* -> W+ + W-.
18385             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
18386      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
18387             WID2=WIDS(24,1)
18388           ENDIF
18389           WDTP(I)=FUDGE*WDTP(I)
18390           WDTP(0)=WDTP(0)+WDTP(I)
18391           IF(MDME(IDC,1).GT.0) THEN
18392             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18393             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18394             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18395             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18396           ENDIF
18397   470   CONTINUE
18398  
18399       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
18400 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
18401         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
18402         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
18403         DO 480 I=1,MDCY(KC,3)
18404           IDC=I+MDCY(KC,2)-1
18405           IF(MDME(IDC,1).LT.0) GOTO 480
18406           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
18407           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
18408           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
18409           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
18410           WID2=1D0
18411           IF(I.LE.9) THEN
18412 C...nu_lR -> l- qbar q'
18413             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
18414             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
18415           ELSEIF(I.LE.18) THEN
18416 C...nu_lR -> l+ q qbar'
18417             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
18418             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
18419           ELSE
18420 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
18421             FCOF=1D0
18422             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
18423           ENDIF
18424           X=(PM1+PM2+PM3)/SHR
18425           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
18426           Y=(SHR/PMWR)**2
18427           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
18428           WDTP(I)=FAC*FCOF*FX*FY
18429           WDTP(I)=FUDGE*WDTP(I)
18430           WDTP(0)=WDTP(0)+WDTP(I)
18431           IF(MDME(IDC,1).GT.0) THEN
18432             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18433             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18434             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18435             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18436           ENDIF
18437   480   CONTINUE
18438  
18439       ELSEIF(KFLA.EQ.9900023) THEN
18440 C...Z_R0:
18441         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
18442         DO 490 I=1,MDCY(KC,3)
18443           IDC=I+MDCY(KC,2)-1
18444           IF(MDME(IDC,1).LT.0) GOTO 490
18445           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18446           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18447           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
18448           WID2=1D0
18449           SYMMET=1D0
18450           IF(I.LE.6) THEN
18451 C...Z_R0 -> q + qbar
18452             EF=KCHG(I,1)/3D0
18453             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
18454             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
18455             FCOF=3D0*RADC
18456             IF(I.EQ.6) WID2=WIDS(6,1)
18457           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
18458 C...Z_R0 -> l+ + l-
18459             AF=-(1D0-2D0*XW)
18460             VF=-1D0+4D0*XW
18461             FCOF=1D0
18462           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
18463 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
18464             AF=-2D0*XW
18465             VF=0D0
18466             FCOF=1D0
18467             SYMMET=0.5D0
18468           ELSEIF(I.LE.15) THEN
18469 C...Z0 -> nu_R + nu_R, assumed Majorana.
18470             AF=2D0*XW1
18471             VF=0D0
18472             FCOF=1D0
18473             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
18474             SYMMET=0.5D0
18475           ENDIF
18476           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
18477      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
18478           WDTP(I)=FUDGE*WDTP(I)
18479           WDTP(0)=WDTP(0)+WDTP(I)
18480           IF(MDME(IDC,1).GT.0) THEN
18481             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18482             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18483             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18484             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18485           ENDIF
18486   490   CONTINUE
18487  
18488       ELSEIF(KFLA.EQ.9900024) THEN
18489 C...W_R+/-:
18490         FAC=(AEM/(24D0*XW))*SHR
18491         DO 500 I=1,MDCY(KC,3)
18492           IDC=I+MDCY(KC,2)-1
18493           IF(MDME(IDC,1).LT.0) GOTO 500
18494           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18495           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18496           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
18497           WID2=1D0
18498           IF(I.LE.9) THEN
18499 C...W_R+/- -> q + qbar'
18500             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
18501             IF(KFLR.GT.0) THEN
18502               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
18503             ELSE
18504               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
18505             ENDIF
18506           ELSEIF(I.LE.12) THEN
18507 C...W_R+/- -> l+/- + nu_R
18508             FCOF=1D0
18509           ENDIF
18510           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
18511      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18512           WDTP(I)=FUDGE*WDTP(I)
18513           WDTP(0)=WDTP(0)+WDTP(I)
18514           IF(MDME(IDC,1).GT.0) THEN
18515             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18516             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18517             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18518             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18519           ENDIF
18520   500  CONTINUE
18521  
18522       ELSEIF(KFLA.EQ.9900041) THEN
18523 C...H_L++/--:
18524         FAC=(1D0/(8D0*PARU(1)))*SHR
18525         DO 510 I=1,MDCY(KC,3)
18526           IDC=I+MDCY(KC,2)-1
18527           IF(MDME(IDC,1).LT.0) GOTO 510
18528           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18529           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18530           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
18531           WID2=1D0
18532           IF(I.LE.6) THEN
18533 C...H_L++/-- -> l+/- + l'+/-
18534             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
18535      &      (IABS(KFDP(IDC,2))-9)/2)**2
18536             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
18537           ELSEIF(I.EQ.7) THEN
18538 C...H_L++/-- -> W_L+/- + W_L+/-
18539             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
18540      &      (3D0*RM1+0.25D0/RM1-1D0)
18541             WID2=WIDS(24,4+(1-KFLS)/2)
18542           ENDIF
18543           WDTP(I)=FAC*FCOF*
18544      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18545           WDTP(I)=FUDGE*WDTP(I)
18546           WDTP(0)=WDTP(0)+WDTP(I)
18547           IF(MDME(IDC,1).GT.0) THEN
18548             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18549             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18550             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18551             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18552           ENDIF
18553   510   CONTINUE
18554  
18555       ELSEIF(KFLA.EQ.9900042) THEN
18556 C...H_R++/--:
18557         FAC=(1D0/(8D0*PARU(1)))*SHR
18558         DO 520 I=1,MDCY(KC,3)
18559           IDC=I+MDCY(KC,2)-1
18560           IF(MDME(IDC,1).LT.0) GOTO 520
18561           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18562           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18563           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
18564           WID2=1D0
18565           IF(I.LE.6) THEN
18566 C...H_R++/-- -> l+/- + l'+/-
18567             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
18568      &      (IABS(KFDP(IDC,2))-9)/2)**2
18569             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
18570           ELSEIF(I.EQ.7) THEN
18571 C...H_R++/-- -> W_R+/- + W_R+/-
18572             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
18573             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
18574           ENDIF
18575           WDTP(I)=FAC*FCOF*
18576      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18577           WDTP(I)=FUDGE*WDTP(I)
18578           WDTP(0)=WDTP(0)+WDTP(I)
18579           IF(MDME(IDC,1).GT.0) THEN
18580             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18581             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18582             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18583             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18584           ENDIF
18585   520  CONTINUE
18586  
18587       ENDIF
18588       MINT(61)=0
18589       MINT(62)=0
18590       MINT(63)=0
18591       RETURN
18592       END
18593  
18594 C***********************************************************************
18595  
18596 C...PYOFSH
18597 C...Calculates partial width and differential cross-section maxima
18598 C...of channels/processes not allowed on mass-shell, and selects
18599 C...masses in such channels/processes.
18600  
18601       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
18602  
18603 C...Double precision and integer declarations.
18604       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
18605       IMPLICIT INTEGER(I-N)
18606       INTEGER PYK,PYCHGE,PYCOMP
18607 C...Commonblocks.
18608       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
18609       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
18610       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
18611       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
18612       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
18613       COMMON/PYINT1/MINT(400),VINT(400)
18614       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
18615       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
18616       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
18617      &/PYINT2/,/PYINT5/
18618 C...Local arrays.
18619       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
18620      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
18621      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
18622      &WDTE(0:400,0:5)
18623  
18624 C...Find if particles equal, maximum mass, matrix elements, etc.
18625       MINT(51)=0
18626       ISUB=MINT(1)
18627       KFD(1)=IABS(KFD1)
18628       KFD(2)=IABS(KFD2)
18629       MEQL=0
18630       IF(KFD(1).EQ.KFD(2)) MEQL=1
18631       MLM=0
18632       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
18633       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
18634         NOFF=44
18635         PMMX=PMMO
18636       ELSE
18637         NOFF=40
18638         PMMX=VINT(1)
18639         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
18640       ENDIF
18641       MMED=0
18642       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
18643      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
18644       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
18645      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
18646       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
18647      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
18648       LOOP=1
18649  
18650 C...Find where Breit-Wigners are required, else select discrete masses.
18651   100 DO 110 I=1,2
18652         KFCA=PYCOMP(KFD(I))
18653         IF(KFCA.GT.0) THEN
18654           PMD(I)=PMAS(KFCA,1)
18655           PGD(I)=PMAS(KFCA,2)
18656         ELSE
18657           PMD(I)=0D0
18658           PGD(I)=0D0
18659         ENDIF
18660         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
18661           MBW(I)=0
18662           PMG(I)=PMD(I)
18663           RMG(I)=(PMG(I)/PMMX)**2
18664         ELSE
18665           MBW(I)=1
18666         ENDIF
18667   110 CONTINUE
18668  
18669 C...Find allowed mass range and Breit-Wigner parameters.
18670       DO 120 I=1,2
18671         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
18672           PML(I)=PARP(42)
18673           PMU(I)=PMMX-PARP(42)
18674           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
18675           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18676         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
18677           ILM=I
18678           IF(MLM.EQ.2) ILM=3-I
18679           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
18680           IF(MBW(3-I).EQ.0) THEN
18681             PMU(I)=PMMX-PMD(3-I)
18682           ELSE
18683             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
18684           ENDIF
18685           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
18686      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
18687           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
18688           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
18689           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18690           IF(MBW(I).EQ.1) THEN
18691             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18692             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18693             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
18694      &      PGD(I)))
18695           ENDIF
18696         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
18697           ILM=I
18698           IF(MLM.EQ.2) ILM=3-I
18699           PML(I)=MAX(CKIN(48+I),PARP(42))
18700           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
18701           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
18702           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
18703           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
18704           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18705           IF(MBW(I).EQ.1) THEN
18706             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18707             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18708             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
18709      &      PGD(I)))
18710           ENDIF
18711         ENDIF
18712   120 CONTINUE
18713       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
18714      &THEN
18715         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
18716         MINT(51)=1
18717         RETURN
18718       ENDIF
18719  
18720 C...Calculation of partial width of resonance.
18721       IF(MOFSH.EQ.1) THEN
18722  
18723 C..If only one integration, pick that to be the inner.
18724         IF(MBW(1).EQ.0) THEN
18725           PM2=PMD(1)
18726           PMD(1)=PMD(2)
18727           PGD(1)=PGD(2)
18728           PML(1)=PML(2)
18729           PMU(1)=PMU(2)
18730         ELSEIF(MBW(2).EQ.0) THEN
18731           PM2=PMD(2)
18732         ENDIF
18733  
18734 C...Start outer loop of integration.
18735         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18736           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
18737           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
18738           NPT2=1
18739           XPT2(1)=1D0
18740           INX2(1)=0
18741           FMAX2=0D0
18742         ENDIF
18743   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18744           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
18745           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
18746         ENDIF
18747         RM2=(PM2/PMMX)**2
18748  
18749 C...Start inner loop of integration.
18750         PML1=PML(1)
18751         PMU1=MIN(PMU(1),PMMX-PM2)
18752         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
18753         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
18754         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
18755         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
18756           FUNC2=0D0
18757           GOTO 180
18758         ENDIF
18759         NPT1=1
18760         XPT1(1)=1D0
18761         INX1(1)=0
18762         FMAX1=0D0
18763   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
18764         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
18765         RM1=(PM1/PMMX)**2
18766  
18767 C...Evaluate function value - inner loop.
18768         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18769         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
18770         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
18771      &  RM2**2+10D0*RM1*RM2)
18772         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
18773         FPT1(NPT1)=FUNC1
18774  
18775 C...Go to next position in inner loop.
18776         IF(NPT1.EQ.1) THEN
18777           NPT1=NPT1+1
18778           XPT1(NPT1)=0D0
18779           INX1(NPT1)=1
18780           GOTO 140
18781         ELSEIF(NPT1.LE.8) THEN
18782           NPT1=NPT1+1
18783           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
18784           ISH1=ISH1+1
18785           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
18786           INX1(NPT1)=INX1(ISH1)
18787           INX1(ISH1)=NPT1
18788           GOTO 140
18789         ELSEIF(NPT1.LT.100) THEN
18790           ISN1=ISH1
18791   150     ISH1=ISH1+1
18792           IF(ISH1.GT.NPT1) ISH1=2
18793           IF(ISH1.EQ.ISN1) GOTO 160
18794           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
18795           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
18796           NPT1=NPT1+1
18797           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
18798           INX1(NPT1)=INX1(ISH1)
18799           INX1(ISH1)=NPT1
18800           GOTO 140
18801         ENDIF
18802  
18803 C...Calculate integral over inner loop.
18804   160   FSUM1=0D0
18805         DO 170 IPT1=2,NPT1
18806           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
18807      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
18808   170   CONTINUE
18809         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
18810   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18811           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
18812           FPT2(NPT2)=FUNC2
18813  
18814 C...Go to next position in outer loop.
18815           IF(NPT2.EQ.1) THEN
18816             NPT2=NPT2+1
18817             XPT2(NPT2)=0D0
18818             INX2(NPT2)=1
18819             GOTO 130
18820           ELSEIF(NPT2.LE.8) THEN
18821             NPT2=NPT2+1
18822             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
18823             ISH2=ISH2+1
18824             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
18825             INX2(NPT2)=INX2(ISH2)
18826             INX2(ISH2)=NPT2
18827             GOTO 130
18828           ELSEIF(NPT2.LT.100) THEN
18829             ISN2=ISH2
18830   190       ISH2=ISH2+1
18831             IF(ISH2.GT.NPT2) ISH2=2
18832             IF(ISH2.EQ.ISN2) GOTO 200
18833             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
18834             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
18835             NPT2=NPT2+1
18836             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
18837             INX2(NPT2)=INX2(ISH2)
18838             INX2(ISH2)=NPT2
18839             GOTO 130
18840           ENDIF
18841  
18842 C...Calculate integral over outer loop.
18843   200     FSUM2=0D0
18844           DO 210 IPT2=2,NPT2
18845             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
18846      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
18847   210     CONTINUE
18848           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
18849           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
18850         ELSE
18851           FSUM2=FUNC2
18852         ENDIF
18853  
18854 C...Save result; second integration for user-selected mass range.
18855         IF(LOOP.EQ.1) WIDW=FSUM2
18856         WID2=FSUM2
18857         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
18858      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
18859           LOOP=2
18860           GOTO 100
18861         ENDIF
18862         RET1=WIDW
18863         RET2=WID2/WIDW
18864  
18865 C...Select two decay product masses of a resonance.
18866       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
18867   220   DO 230 I=1,2
18868           IF(MBW(I).EQ.0) GOTO 230
18869           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
18870      &    (ATU(I)-ATL(I)))
18871           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
18872           RMG(I)=(PMG(I)/PMMX)**2
18873   230   CONTINUE
18874         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
18875      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
18876  
18877 C...Weight with matrix element (if none known, use beta factor).
18878         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
18879         IF(MMED.EQ.1) THEN
18880           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
18881         ELSEIF(MMED.EQ.2) THEN
18882           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
18883      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
18884         ELSEIF(MMED.EQ.3) THEN
18885           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
18886         ELSE
18887           WTBE=FLAM
18888         ENDIF
18889         IF(WTBE.LT.PYR(0)) GOTO 220
18890         RET1=PMG(1)
18891         RET2=PMG(2)
18892  
18893 C...Find suitable set of masses for initialization of 2 -> 2 processes.
18894       ELSEIF(MOFSH.EQ.3) THEN
18895         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
18896           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
18897           PMG(2)=PMD(2)
18898         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
18899           PMG(1)=PMD(1)
18900           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
18901         ELSE
18902           IDIV=-1
18903   240     IDIV=IDIV+1
18904           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
18905           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
18906           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
18907         ENDIF
18908         RET1=PMG(1)
18909         RET2=PMG(2)
18910  
18911 C...Evaluate importance of excluded tails of Breit-Wigners.
18912         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
18913      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
18914         IF(MEQL.LE.1) THEN
18915           VINT(80)=1D0
18916           DO 250 I=1,2
18917             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
18918      &      PARU(1)
18919   250     CONTINUE
18920         ELSE
18921           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
18922      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
18923         ENDIF
18924         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
18925      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
18926         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
18927         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
18928  
18929 C...Pick one particle to be the lighter (if improves efficiency).
18930       ELSEIF(MOFSH.EQ.4) THEN
18931         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
18932      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
18933   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
18934  
18935 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
18936         DO 270 I=1,2
18937           IF(MBW(I).EQ.0) GOTO 270
18938           PMV=PMU(I)
18939           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
18940           ATV=ATU(I)
18941           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
18942           RBR=PYR(0)
18943           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
18944      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
18945           IF(RBR.LT.0.8D0) THEN
18946             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
18947             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
18948           ELSEIF(RBR.LT.0.9D0) THEN
18949             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
18950           ELSEIF(RBR.LT.1.5D0) THEN
18951             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
18952           ELSE
18953             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
18954      &      (PMV**2-PML(I)**2))))
18955           ENDIF
18956   270   CONTINUE
18957         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
18958      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
18959           IF(MINT(48).EQ.1) THEN
18960             NGEN(0,1)=NGEN(0,1)+1
18961             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
18962             GOTO 260
18963           ELSE
18964             MINT(51)=1
18965             RETURN
18966           ENDIF
18967         ENDIF
18968         RET1=PMG(1)
18969         RET2=PMG(2)
18970  
18971 C...Give weight for selected mass distribution.
18972         VINT(80)=1D0
18973         DO 280 I=1,2
18974           IF(MBW(I).EQ.0) GOTO 280
18975           PMV=PMU(I)
18976           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
18977           ATV=ATU(I)
18978           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
18979           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
18980      &    (PMD(I)*PGD(I))**2)/PARU(1)
18981           F1=1D0
18982           F2=1D0/PMG(I)**2
18983           F3=1D0/PMG(I)**4
18984           FI0=(ATV-ATL(I))/PARU(1)
18985           FI1=PMV**2-PML(I)**2
18986           FI2=2D0*LOG(PMV/PML(I))
18987           FI3=1D0/PML(I)**2-1D0/PMV**2
18988           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
18989      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
18990             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
18991      &      5D0*F3/FI3))
18992           ELSE
18993             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
18994           ENDIF
18995           VINT(80)=VINT(80)*FI0
18996   280   CONTINUE
18997         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
18998       ENDIF
18999  
19000       RETURN
19001       END
19002  
19003 C***********************************************************************
19004  
19005 C...PYRECO
19006 C...Handles the possibility of colour reconnection in W+W- events,
19007 C...Based on the main scenarios of the Sjostrand and Khoze study:
19008 C...I, II, II', intermediate and instantaneous; plus one model
19009 C...along the lines of the Gustafson and Hakkinen: GH.
19010 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
19011 C...is as if first resonance is W+ and second W-.
19012  
19013       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
19014  
19015 C...Double precision and integer declarations.
19016       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19017       IMPLICIT INTEGER(I-N)
19018       INTEGER PYK,PYCHGE,PYCOMP
19019 C...Parameter value; number of points in MC integration.
19020       PARAMETER (NPT=100)
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/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19026       COMMON/PYINT1/MINT(400),VINT(400)
19027       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
19028 C...Local arrays.
19029       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
19030      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
19031      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
19032      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
19033      &TMC(20),IJOIN(100)
19034  
19035 C...Functions to give four-product and to do determinants.
19036       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)
19037       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
19038      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
19039      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
19040  
19041 C...Only allow fraction of recoupling for GH, intermediate and
19042 C...instantaneous.
19043       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
19044         IF(PYR(0).GT.PARP(120)) RETURN
19045       ENDIF
19046       ISUB=MINT(1)
19047  
19048 C...Common part for scenarios I, II, II', and GH.
19049       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
19050      &MSTP(115).EQ.5) THEN
19051  
19052 C...Read out frequently-used parameters.
19053         PI=PARU(1)
19054         HBAR=PARU(3)
19055         PMW=PMAS(24,1)
19056         IF(ISUB.EQ.22) PMW=PMAS(23,1)
19057         PGW=PMAS(24,2)
19058         IF(ISUB.EQ.22) PGW=PMAS(23,2)
19059         TFRAG=PARP(115)
19060         RHAD=PARP(116)
19061         FACT=PARP(117)
19062         BLOWR=PARP(118)
19063         BLOWT=PARP(119)
19064  
19065 C...Find range of decay products of the W's.
19066 C...Background: the W's are stored in IW1 and IW2.
19067 C...Their direct decay products in NSD1+1 through NSD1+4.
19068 C...Products after shower (if any) in NSD1+5 through NAFT1
19069 C...for first W and in NAFT1+1 through N for the second.
19070         IF(NAFT1.GT.NSD1+4) THEN
19071           NBEG(1)=NSD1+5
19072           NEND(1)=NAFT1
19073         ELSE
19074           NBEG(1)=NSD1+1
19075           NEND(1)=NSD1+2
19076         ENDIF
19077         IF(N.GT.NAFT1) THEN
19078           NBEG(2)=NAFT1+1
19079           NEND(2)=N
19080         ELSE
19081           NBEG(2)=NSD1+3
19082           NEND(2)=NSD1+4
19083         ENDIF
19084  
19085 C...Rearrange parton shower products along strings.
19086         NOLD=N
19087         CALL PYPREP(NSD1+1)
19088  
19089 C...Find partons pointing back to W+ and W-; store them with quark
19090 C...end of string first.
19091         NNP=0
19092         NNM=0
19093         ISGP=0
19094         ISGM=0
19095         DO 120 I=NOLD+1,N
19096           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
19097           IF(IABS(K(I,2)).GE.22) GOTO 120
19098           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
19099             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
19100             NNP=NNP+1
19101             IF(ISGP.EQ.1) THEN
19102               INP(NNP)=I
19103             ELSE
19104               DO 100 I1=NNP,2,-1
19105                 INP(I1)=INP(I1-1)
19106   100         CONTINUE
19107               INP(1)=I
19108             ENDIF
19109             IF(K(I,1).EQ.1) ISGP=0
19110           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
19111             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
19112             NNM=NNM+1
19113             IF(ISGM.EQ.1) THEN
19114               INM(NNM)=I
19115             ELSE
19116               DO 110 I1=NNM,2,-1
19117                 INM(I1)=INM(I1-1)
19118   110         CONTINUE
19119               INM(1)=I
19120             ENDIF
19121             IF(K(I,1).EQ.1) ISGM=0
19122           ENDIF
19123   120   CONTINUE
19124  
19125 C...Boost to W+W- rest frame (not strictly needed).
19126         DO 130 J=1,3
19127           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
19128   130   CONTINUE
19129         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19130         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19131         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19132  
19133 C...Select decay vertices of W+ and W-.
19134         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
19135      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
19136         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
19137      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
19138         GTMAX=MAX(TP,TM)
19139         DO 140 J=1,3
19140           XP(J)=TP*P(IW1,J)/P(IW1,4)
19141           XM(J)=TM*P(IW2,J)/P(IW2,4)
19142   140   CONTINUE
19143  
19144 C...Begin scenario I specifics.
19145         IF(MSTP(115).EQ.1) THEN
19146  
19147 C...Reconstruct velocity and direction of W+ string pieces.
19148           DO 170 IIP=1,NNP-1
19149             IF(K(INP(IIP),2).LT.0) GOTO 170
19150             I1=INP(IIP)
19151             I2=INP(IIP+1)
19152             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
19153             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
19154             DO 150 J=1,3
19155               V1(J)=P(I1,J)/P1A
19156               V2(J)=P(I2,J)/P2A
19157               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
19158               DIRP(IIP,J)=V1(J)-V2(J)
19159   150       CONTINUE
19160             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
19161      &      BETP(IIP,3)**2)
19162             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
19163             DO 160 J=1,3
19164               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
19165   160       CONTINUE
19166   170     CONTINUE
19167  
19168 C...Reconstruct velocity and direction of W- string pieces.
19169           DO 200 IIM=1,NNM-1
19170             IF(K(INM(IIM),2).LT.0) GOTO 200
19171             I1=INM(IIM)
19172             I2=INM(IIM+1)
19173             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
19174             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
19175             DO 180 J=1,3
19176               V1(J)=P(I1,J)/P1A
19177               V2(J)=P(I2,J)/P2A
19178               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
19179               DIRM(IIM,J)=V1(J)-V2(J)
19180   180       CONTINUE
19181             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
19182      &      BETM(IIM,3)**2)
19183             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
19184             DO 190 J=1,3
19185               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
19186   190       CONTINUE
19187   200     CONTINUE
19188  
19189 C...Loop over number of space-time points.
19190           NACC=0
19191           SUM=0D0
19192           DO 250 IPT=1,NPT
19193  
19194 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
19195             R=SQRT(-LOG(PYR(0)))
19196             PHI=2D0*PI*PYR(0)
19197             X=BLOWR*RHAD*R*COS(PHI)
19198             Y=BLOWR*RHAD*R*SIN(PHI)
19199             R=SQRT(-LOG(PYR(0)))
19200             PHI=2D0*PI*PYR(0)
19201             Z=BLOWR*RHAD*R*COS(PHI)
19202             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
19203  
19204 C...Reject impossible points. Weight for sample distribution.
19205             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
19206             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
19207      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
19208  
19209 C...Loop over W+ string pieces and find one with largest weight.
19210             IMAXP=0
19211             WTMAXP=1D-10
19212             XD(1)=X-XP(1)
19213             XD(2)=Y-XP(2)
19214             XD(3)=Z-XP(3)
19215             XD(4)=T-TP
19216             DO 220 IIP=1,NNP-1
19217               IF(K(INP(IIP),2).LT.0) GOTO 220
19218               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
19219               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
19220               DO 210 J=1,3
19221                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
19222   210         CONTINUE
19223               XB(4)=BETP(IIP,4)*(XD(4)-BED)
19224               SR2=XB(1)**2+XB(2)**2+XB(3)**2
19225               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
19226      &        DIRP(IIP,3)*XB(3))**2
19227               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
19228      &        TFRAG**2)
19229               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
19230               IF(WTP.GT.WTMAXP) THEN
19231                 IMAXP=IIP
19232                 WTMAXP=WTP
19233               ENDIF
19234   220       CONTINUE
19235  
19236 C...Loop over W- string pieces and find one with largest weight.
19237             IMAXM=0
19238             WTMAXM=1D-10
19239             XD(1)=X-XM(1)
19240             XD(2)=Y-XM(2)
19241             XD(3)=Z-XM(3)
19242             XD(4)=T-TM
19243             DO 240 IIM=1,NNM-1
19244               IF(K(INM(IIM),2).LT.0) GOTO 240
19245               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
19246               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
19247               DO 230 J=1,3
19248                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
19249   230         CONTINUE
19250               XB(4)=BETM(IIM,4)*(XD(4)-BED)
19251               SR2=XB(1)**2+XB(2)**2+XB(3)**2
19252               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
19253      &        DIRM(IIM,3)*XB(3))**2
19254               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
19255      &        TFRAG**2)
19256               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
19257               IF(WTM.GT.WTMAXM) THEN
19258                 IMAXM=IIM
19259                 WTMAXM=WTM
19260               ENDIF
19261   240       CONTINUE
19262  
19263 C...Result of integration.
19264             WT=0D0
19265             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
19266               WT=WTMAXP*WTMAXM/WTSMP
19267               SUM=SUM+WT
19268               NACC=NACC+1
19269               IAP(NACC)=IMAXP
19270               IAM(NACC)=IMAXM
19271               WTA(NACC)=WT
19272             ENDIF
19273   250     CONTINUE
19274           RES=BLOWR**3*BLOWT*SUM/NPT
19275  
19276 C...Decide whether to reconnect and, if so, where.
19277           IACC=0
19278           PREC=1D0-EXP(-FACT*RES)
19279           IF(PREC.GT.PYR(0)) THEN
19280             RSUM=PYR(0)*SUM
19281             DO 260 IA=1,NACC
19282               IACC=IA
19283               RSUM=RSUM-WTA(IA)
19284               IF(RSUM.LE.0D0) GOTO 270
19285   260       CONTINUE
19286   270       IIP=IAP(IACC)
19287             IIM=IAM(IACC)
19288           ENDIF
19289  
19290 C...Begin scenario II and II' specifics.
19291         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
19292  
19293 C...Loop through all string pieces, one from W+ and one from W-.
19294           NCROSS=0
19295           TC(0)=0D0
19296           DO 340 IIP=1,NNP-1
19297             IF(K(INP(IIP),2).LT.0) GOTO 340
19298             I1P=INP(IIP)
19299             I2P=INP(IIP+1)
19300             DO 330 IIM=1,NNM-1
19301               IF(K(INM(IIM),2).LT.0) GOTO 330
19302               I1M=INM(IIM)
19303               I2M=INM(IIM+1)
19304  
19305 C...Find endpoint velocity vectors.
19306               DO 280 J=1,3
19307                 V1P(J)=P(I1P,J)/P(I1P,4)
19308                 V2P(J)=P(I2P,J)/P(I2P,4)
19309                 V1M(J)=P(I1M,J)/P(I1M,4)
19310                 V2M(J)=P(I2M,J)/P(I2M,4)
19311   280         CONTINUE
19312  
19313 C...Define q matrix and find t.
19314               DO 290 J=1,3
19315                 Q(1,J)=V2P(J)-V1P(J)
19316                 Q(2,J)=-(V2M(J)-V1M(J))
19317                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
19318                 Q(4,J)=V1P(J)-V1M(J)
19319   290         CONTINUE
19320               T=-DETER(1,2,3)/DETER(1,2,4)
19321  
19322 C...Find alpha and beta; i.e. coordinates of crossing point.
19323               S11=Q(1,1)*(T-TP)
19324               S12=Q(2,1)*(T-TM)
19325               S13=Q(3,1)+Q(4,1)*T
19326               S21=Q(1,2)*(T-TP)
19327               S22=Q(2,2)*(T-TM)
19328               S23=Q(3,2)+Q(4,2)*T
19329               DEN=S11*S22-S12*S21
19330               ALP=(S12*S23-S22*S13)/DEN
19331               BET=(S21*S13-S11*S23)/DEN
19332  
19333 C...Check if solution acceptable.
19334               IANSW=1
19335               IF(T.LT.GTMAX) IANSW=0
19336               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
19337               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
19338  
19339 C...Find point of crossing and check that not inconsistent.
19340               DO 300 J=1,3
19341                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
19342                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
19343   300         CONTINUE
19344               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
19345      &        (XPP(3)-XMM(3))**2
19346               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
19347               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
19348               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
19349  
19350 C...Find string eigentimes at crossing.
19351               IF(IANSW.EQ.1) THEN
19352                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
19353      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
19354                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
19355      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
19356               ELSE
19357                 TAUP=0D0
19358                 TAUM=0D0
19359               ENDIF
19360  
19361 C...Order crossings by time. End loop over crossings.
19362               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
19363                 NCROSS=NCROSS+1
19364                 DO 310 I1=NCROSS,1,-1
19365                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
19366                     IPC(I1)=IIP
19367                     IMC(I1)=IIM
19368                     TC(I1)=T
19369                     TPC(I1)=TAUP
19370                     TMC(I1)=TAUM
19371                     GOTO 320
19372                   ELSE
19373                     IPC(I1)=IPC(I1-1)
19374                     IMC(I1)=IMC(I1-1)
19375                     TC(I1)=TC(I1-1)
19376                     TPC(I1)=TPC(I1-1)
19377                     TMC(I1)=TMC(I1-1)
19378                   ENDIF
19379   310           CONTINUE
19380   320           CONTINUE
19381               ENDIF
19382   330       CONTINUE
19383   340     CONTINUE
19384  
19385 C...Loop over crossings; find first (if any) acceptable one.
19386           IACC=0
19387           IF(NCROSS.GE.1) THEN
19388             DO 350 IC=1,NCROSS
19389               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
19390               IF(PNFRAG.GT.PYR(0)) THEN
19391 C...Scenario II: only compare with fragmentation time.
19392                 IF(MSTP(115).EQ.2) THEN
19393                   IACC=IC
19394                   IIP=IPC(IACC)
19395                   IIM=IMC(IACC)
19396                   GOTO 360
19397 C...Scenario II': also require that string length decreases.
19398                 ELSE
19399                   IIP=IPC(IC)
19400                   IIM=IMC(IC)
19401                   I1P=INP(IIP)
19402                   I2P=INP(IIP+1)
19403                   I1M=INM(IIM)
19404                   I2M=INM(IIM+1)
19405                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
19406                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
19407                   IF(ELNEW.LT.ELOLD) THEN
19408                     IACC=IC
19409                     IIP=IPC(IACC)
19410                     IIM=IMC(IACC)
19411                     GOTO 360
19412                   ENDIF
19413                 ENDIF
19414               ENDIF
19415   350       CONTINUE
19416   360       CONTINUE
19417           ENDIF
19418  
19419 C...Begin scenario GH specifics.
19420         ELSEIF(MSTP(115).EQ.5) THEN
19421  
19422 C...Loop through all string pieces, one from W+ and one from W-.
19423           IACC=0
19424           ELMIN=1D0
19425           DO 380 IIP=1,NNP-1
19426             IF(K(INP(IIP),2).LT.0) GOTO 380
19427             I1P=INP(IIP)
19428             I2P=INP(IIP+1)
19429             DO 370 IIM=1,NNM-1
19430               IF(K(INM(IIM),2).LT.0) GOTO 370
19431               I1M=INM(IIM)
19432               I2M=INM(IIM+1)
19433  
19434 C...Look for largest decrease of (exponent of) Lambda measure.
19435               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
19436               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
19437               ELDIF=ELNEW/MAX(1D-10,ELOLD)
19438               IF(ELDIF.LT.ELMIN) THEN
19439                 IACC=IIP+IIM
19440                 ELMIN=ELDIF
19441                 IPC(1)=IIP
19442                 IMC(1)=IIM
19443               ENDIF
19444   370       CONTINUE
19445   380     CONTINUE
19446           IIP=IPC(1)
19447           IIM=IMC(1)
19448         ENDIF
19449  
19450 C...Common for scenarios I, II, II' and GH: reconnect strings.
19451         IF(IACC.NE.0) THEN
19452           MINT(32)=1
19453           NJOIN=0
19454           DO 390 IS=1,NNP+NNM
19455             NJOIN=NJOIN+1
19456             IF(IS.LE.IIP) THEN
19457               I=INP(IS)
19458             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
19459               I=INM(IS-IIP+IIM)
19460             ELSEIF(IS.LE.IIP+NNM) THEN
19461               I=INM(IS-IIP-NNM+IIM)
19462             ELSE
19463               I=INP(IS-NNM)
19464             ENDIF
19465             IJOIN(NJOIN)=I
19466             IF(K(I,2).LT.0) THEN
19467               CALL PYJOIN(NJOIN,IJOIN)
19468               NJOIN=0
19469             ENDIF
19470   390     CONTINUE
19471  
19472 C...Restore original event record if no reconnection.
19473         ELSE
19474           DO 400 I=NSD1+1,NOLD
19475             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
19476               K(I,4)=MOD(K(I,4),MSTU(5)**2)
19477               K(I,5)=MOD(K(I,5),MSTU(5)**2)
19478             ENDIF
19479   400     CONTINUE
19480           DO 410 I=NOLD+1,N
19481             K(K(I,3),1)=3
19482   410     CONTINUE
19483           N=NOLD
19484         ENDIF
19485  
19486 C...Boost back system.
19487         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
19488         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
19489         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
19490      &  BEWW(1),BEWW(2),BEWW(3))
19491  
19492 C...Common part for intermediate and instantaneous scenarios.
19493       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
19494         MINT(32)=1
19495  
19496 C...Remove old shower products and reset showering ones.
19497         N=NSD1+4
19498         DO 420 I=NSD1+1,NSD1+4
19499           K(I,1)=3
19500           K(I,4)=MOD(K(I,4),MSTU(5)**2)
19501           K(I,5)=MOD(K(I,5),MSTU(5)**2)
19502   420   CONTINUE
19503  
19504 C...Identify quark-antiquark pairs.
19505         IQ1=NSD1+1
19506         IQ2=NSD1+2
19507         IQ3=NSD1+3
19508         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
19509         IQ4=2*NSD1+7-IQ3
19510  
19511 C...Reconnect strings.
19512         IJOIN(1)=IQ1
19513         IJOIN(2)=IQ4
19514         CALL PYJOIN(2,IJOIN)
19515         IJOIN(1)=IQ3
19516         IJOIN(2)=IQ2
19517         CALL PYJOIN(2,IJOIN)
19518  
19519 C...Do new parton showers in intermediate scenario.
19520         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
19521           MSTJ50=MSTJ(50)
19522           MSTJ(50)=0
19523           CALL PYSHOW(IQ1,IQ2,P(IW1,5))
19524           CALL PYSHOW(IQ3,IQ4,P(IW2,5))
19525           MSTJ(50)=MSTJ50
19526  
19527 C...Do new parton showers in instantaneous scenario.
19528         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
19529           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
19530      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
19531           PPM=SQRT(MAX(0D0,PPM2))
19532           CALL PYSHOW(IQ1,IQ4,PPM)
19533           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
19534      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
19535           PPM=SQRT(MAX(0D0,PPM2))
19536           CALL PYSHOW(IQ3,IQ2,PPM)
19537         ENDIF
19538       ENDIF
19539  
19540       RETURN
19541       END
19542  
19543 C***********************************************************************
19544  
19545 C...PYKLIM
19546 C...Checks generated variables against pre-set kinematical limits;
19547 C...also calculates limits on variables used in generation.
19548  
19549       SUBROUTINE PYKLIM(ILIM)
19550  
19551 C...Double precision and integer declarations.
19552       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19553       IMPLICIT INTEGER(I-N)
19554       INTEGER PYK,PYCHGE,PYCOMP
19555 C...Commonblocks.
19556       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19557       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19558       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19559       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
19560       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19561       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19562       COMMON/PYINT1/MINT(400),VINT(400)
19563       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19564       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
19565      &/PYINT1/,/PYINT2/
19566  
19567 C...Common kinematical expressions.
19568       MINT(51)=0
19569       ISUB=MINT(1)
19570       ISTSB=ISET(ISUB)
19571       IF(ISUB.EQ.96) GOTO 100
19572       SQM3=VINT(63)
19573       SQM4=VINT(64)
19574       IF(ILIM.NE.0) THEN
19575         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
19576           CKIN09=MAX(CKIN(9),CKIN(13))
19577           CKIN10=MIN(CKIN(10),CKIN(14))
19578           CKIN11=MAX(CKIN(11),CKIN(15))
19579           CKIN12=MIN(CKIN(12),CKIN(16))
19580         ELSE
19581           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
19582           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
19583           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
19584           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
19585         ENDIF
19586       ENDIF
19587       IF(ILIM.NE.1) THEN
19588         TAU=VINT(21)
19589         RM3=SQM3/(TAU*VINT(2))
19590         RM4=SQM4/(TAU*VINT(2))
19591         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
19592       ENDIF
19593       PTHMIN=CKIN(3)
19594       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
19595      &PTHMIN=MAX(CKIN(3),CKIN(5))
19596  
19597       IF(ILIM.EQ.0) THEN
19598 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
19599 C...pre-set kinematical limits.
19600         YST=VINT(22)
19601         CTH=VINT(23)
19602         TAUP=VINT(26)
19603         TAUE=TAU
19604         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
19605         X1=SQRT(TAUE)*EXP(YST)
19606         X2=SQRT(TAUE)*EXP(-YST)
19607         XF=X1-X2
19608         IF(MINT(47).NE.1) THEN
19609           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
19610           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
19611           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
19612           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
19613         ENDIF
19614         IF(MINT(45).NE.1) THEN
19615           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
19616         ENDIF
19617         IF(MINT(46).NE.1) THEN
19618           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
19619         ENDIF
19620         IF(MINT(45).EQ.2) THEN
19621           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
19622         ENDIF
19623         IF(MINT(46).EQ.2) THEN
19624           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
19625         ENDIF
19626         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
19627           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
19628           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
19629      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
19630           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
19631      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
19632           Y3=YST+0.5D0*LOG(EXPY3)
19633           Y4=YST+0.5D0*LOG(EXPY4)
19634           YLARGE=MAX(Y3,Y4)
19635           YSMALL=MIN(Y3,Y4)
19636           ETALAR=20D0
19637           ETASMA=-20D0
19638           STH=SQRT(MAX(0D0,1D0-CTH**2))
19639           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
19640      &    CTH)**2-4D0*RM3))
19641           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
19642      &    CTH)**2-4D0*RM4))
19643           IF(STH.GE.1D-10) THEN
19644             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
19645      &      (BE34*STH)
19646             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
19647      &      (BE34*STH)
19648             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
19649             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
19650             ETALAR=MAX(ETA3,ETA4)
19651             ETASMA=MIN(ETA3,ETA4)
19652           ENDIF
19653           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
19654           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
19655           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
19656           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
19657           SH=TAU*VINT(2)
19658           RPTS=4D0*VINT(71)**2/SH
19659           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
19660           RM34=MAX(1D-20,2D0*RM3*RM4)
19661           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
19662      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
19663           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
19664           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
19665           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
19666           IF(PTH.LT.PTHMIN) MINT(51)=1
19667           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
19668           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
19669           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
19670           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
19671           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
19672           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
19673           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
19674           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
19675           IF(THA.LT.CKIN(35)) MINT(51)=1
19676           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
19677           IF(UHA.LT.CKIN(37)) MINT(51)=1
19678           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
19679         ENDIF
19680         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
19681           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
19682           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
19683         ENDIF
19684  
19685 C...Additional cuts on W2 (approximately) in DIS.
19686         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
19687           XBJ=X2
19688           IF(IABS(MINT(12)).LT.20) XBJ=X1
19689           Q2BJ=THA
19690           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
19691           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
19692           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
19693         ENDIF
19694  
19695       ELSEIF(ILIM.EQ.1) THEN
19696 C...Calculate limits on tau
19697 C...0) due to definition
19698         TAUMN0=0D0
19699         TAUMX0=1D0
19700 C...1) due to limits on subsystem mass
19701         TAUMN1=CKIN(1)**2/VINT(2)
19702         TAUMX1=1D0
19703         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
19704 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
19705         TM3=SQRT(SQM3+PTHMIN**2)
19706         TM4=SQRT(SQM4+PTHMIN**2)
19707         YDCOSH=1D0
19708         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
19709         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
19710         TAUMX2=1D0
19711 C...3) due to limits on pT-hat and cos(theta-hat)
19712         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
19713         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
19714         TAUMN3=0D0
19715         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
19716      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
19717      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
19718         TAUMX3=1D0
19719         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
19720      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
19721      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
19722 C...4) due to limits on x1 and x2
19723         TAUMN4=CKIN(21)*CKIN(23)
19724         TAUMX4=CKIN(22)*CKIN(24)
19725 C...5) due to limits on xF
19726         TAUMN5=0D0
19727         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
19728 C...6) due to limits on that and uhat
19729         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
19730         TAUMX6=1D0
19731         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
19732      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
19733  
19734 C...Net effect of all separate limits.
19735         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
19736         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
19737         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
19738           VINT(11)=1D0-1D-9
19739           VINT(31)=1D0+1D-9
19740         ELSEIF(MINT(47).EQ.5) THEN
19741           VINT(31)=MIN(VINT(31),1D0-2D-10)
19742         ELSEIF(MINT(47).GE.6) THEN
19743           VINT(31)=MIN(VINT(31),1D0-1D-10)
19744         ENDIF
19745         IF(VINT(31).LE.VINT(11)) MINT(51)=1
19746  
19747       ELSEIF(ILIM.EQ.2) THEN
19748 C...Calculate limits on y*
19749         TAUE=TAU
19750         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
19751         TAURT=SQRT(TAUE)
19752 C...0) due to kinematics
19753         YSTMN0=LOG(TAURT)
19754         YSTMX0=-YSTMN0
19755 C...1) due to explicit limits
19756         YSTMN1=CKIN(7)
19757         YSTMX1=CKIN(8)
19758 C...2) due to limits on x1
19759         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
19760         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
19761 C...3) due to limits on x2
19762         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
19763         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
19764 C...4) due to limits on xF
19765         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
19766         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
19767         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
19768         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
19769 C...5) due to simultaneous limits on y-large and y-small
19770         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
19771         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
19772         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
19773         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
19774         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
19775         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
19776 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
19777 C...   y-small
19778         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
19779         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
19780         RZMX=BE34*MIN(CKIN(28),CTHLIM)
19781         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
19782         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
19783         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
19784         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
19785         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
19786         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
19787  
19788 C...Net effect of all separate limits.
19789         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
19790         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
19791         IF(MINT(47).EQ.1) THEN
19792           VINT(12)=-1D-9
19793           VINT(32)=1D-9
19794         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
19795           VINT(12)=(1D0-1D-9)*YSTMX0
19796           VINT(32)=(1D0+1D-9)*YSTMX0
19797         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
19798           VINT(12)=-(1D0+1D-9)*YSTMX0
19799           VINT(32)=-(1D0-1D-9)*YSTMX0
19800         ELSEIF(MINT(47).EQ.5) THEN
19801           YSTEE=LOG((1D0-1D-10)/TAURT)
19802           VINT(12)=MAX(VINT(12),-YSTEE)
19803           VINT(32)=MIN(VINT(32),YSTEE)
19804         ENDIF
19805         IF(VINT(32).LE.VINT(12)) MINT(51)=1
19806  
19807       ELSEIF(ILIM.EQ.3) THEN
19808 C...Calculate limits on cos(theta-hat)
19809         YST=VINT(22)
19810 C...0) due to definition
19811         CTNMN0=-1D0
19812         CTNMX0=0D0
19813         CTPMN0=0D0
19814         CTPMX0=1D0
19815 C...1) due to explicit limits
19816         CTNMN1=MIN(0D0,CKIN(27))
19817         CTNMX1=MIN(0D0,CKIN(28))
19818         CTPMN1=MAX(0D0,CKIN(27))
19819         CTPMX1=MAX(0D0,CKIN(28))
19820 C...2) due to limits on pT-hat
19821         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
19822         CTPMX2=-CTNMN2
19823         CTNMX2=0D0
19824         CTPMN2=0D0
19825         IF(CKIN(4).GE.0D0) THEN
19826           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
19827      &    (BE34**2*TAU*VINT(2))))
19828           CTPMN2=-CTNMX2
19829         ENDIF
19830 C...3) due to limits on y-large and y-small
19831         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
19832      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
19833         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
19834      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
19835         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
19836      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
19837         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
19838      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
19839 C...4) due to limits on that
19840         CTNMN4=-1D0
19841         CTNMX4=0D0
19842         CTPMN4=0D0
19843         CTPMX4=1D0
19844         SH=TAU*VINT(2)
19845         IF(CKIN(35).GT.0D0) THEN
19846           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
19847           IF(CTLIM.GT.0D0) THEN
19848             CTPMX4=CTLIM
19849           ELSE
19850             CTPMX4=0D0
19851             CTNMX4=CTLIM
19852           ENDIF
19853         ENDIF
19854         IF(CKIN(36).GT.0D0) THEN
19855           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
19856           IF(CTLIM.LT.0D0) THEN
19857             CTNMN4=CTLIM
19858           ELSE
19859             CTNMN4=0D0
19860             CTPMN4=CTLIM
19861           ENDIF
19862         ENDIF
19863 C...5) due to limits on uhat
19864         CTNMN5=-1D0
19865         CTNMX5=0D0
19866         CTPMN5=0D0
19867         CTPMX5=1D0
19868         IF(CKIN(37).GT.0D0) THEN
19869           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
19870           IF(CTLIM.LT.0D0) THEN
19871             CTNMN5=CTLIM
19872           ELSE
19873             CTNMN5=0D0
19874             CTPMN5=CTLIM
19875           ENDIF
19876         ENDIF
19877         IF(CKIN(38).GT.0D0) THEN
19878           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
19879           IF(CTLIM.GT.0D0) THEN
19880             CTPMX5=CTLIM
19881           ELSE
19882             CTPMX5=0D0
19883             CTNMX5=CTLIM
19884           ENDIF
19885         ENDIF
19886  
19887 C...Net effect of all separate limits.
19888         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
19889         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
19890         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
19891         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
19892         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
19893  
19894       ELSEIF(ILIM.EQ.4) THEN
19895 C...Calculate limits on tau'
19896 C...0) due to kinematics
19897         TAPMN0=TAU
19898         IF(ISTSB.EQ.5.AND.KFPR(ISUB,2).GT.0) THEN
19899           PQRAT=2D0*PMAS(PYCOMP(KFPR(ISUB,2)),1)/VINT(1)
19900           TAPMN0=(SQRT(TAU)+PQRAT)**2
19901         ENDIF
19902         TAPMX0=1D0
19903 C...1) due to explicit limits
19904         TAPMN1=CKIN(31)**2/VINT(2)
19905         TAPMX1=1D0
19906         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
19907  
19908 C...Net effect of all separate limits.
19909         VINT(16)=MAX(TAPMN0,TAPMN1)
19910         VINT(36)=MIN(TAPMX0,TAPMX1)
19911         IF(MINT(47).EQ.1) THEN
19912           VINT(16)=1D0-1D-9
19913           VINT(36)=1D0+1D-9
19914         ELSEIF(MINT(47).EQ.5) THEN
19915           VINT(36)=MIN(VINT(36),1D0-2D-10)
19916         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
19917           VINT(36)=MIN(VINT(36),1D0-1D-10)
19918         ENDIF
19919         IF(VINT(36).LE.VINT(16)) MINT(51)=1
19920  
19921       ENDIF
19922       RETURN
19923  
19924 C...Special case for low-pT and multiple interactions:
19925 C...effective kinematical limits for tau, y*, cos(theta-hat).
19926   100 IF(ILIM.EQ.0) THEN
19927       ELSEIF(ILIM.EQ.1) THEN
19928         IF(MSTP(82).LE.1) THEN
19929           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
19930      &    VINT(2)
19931         ELSE
19932           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
19933         ENDIF
19934         VINT(31)=1D0
19935       ELSEIF(ILIM.EQ.2) THEN
19936         VINT(12)=0.5D0*LOG(VINT(21))
19937         VINT(32)=-VINT(12)
19938       ELSEIF(ILIM.EQ.3) THEN
19939         IF(MSTP(82).LE.1) THEN
19940           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
19941      &    (VINT(21)*VINT(2))
19942         ELSE
19943           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19944      &    (VINT(21)*VINT(2))
19945         ENDIF
19946         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
19947         VINT(33)=0D0
19948         VINT(14)=0D0
19949         VINT(34)=-VINT(13)
19950       ENDIF
19951  
19952       RETURN
19953       END
19954  
19955 C*********************************************************************
19956  
19957 C...PYKMAP
19958 C...Maps a uniform distribution into a distribution of a kinematical
19959 C...variable according to one of the possibilities allowed. It is
19960 C...assumed that kinematical limits have been set by a PYKLIM call.
19961  
19962       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
19963  
19964 C...Double precision and integer declarations.
19965       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19966       IMPLICIT INTEGER(I-N)
19967       INTEGER PYK,PYCHGE,PYCOMP
19968 C...Commonblocks.
19969       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19970       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19971       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19972       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19973       COMMON/PYINT1/MINT(400),VINT(400)
19974       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19975       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
19976  
19977 C...Convert VVAR to tau variable.
19978       ISUB=MINT(1)
19979       ISTSB=ISET(ISUB)
19980       IF(IVAR.EQ.1) THEN
19981         TAUMIN=VINT(11)
19982         TAUMAX=VINT(31)
19983         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
19984           TAURE=VINT(73)
19985           GAMRE=VINT(74)
19986         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
19987           TAURE=VINT(75)
19988           GAMRE=VINT(76)
19989         ENDIF
19990         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
19991           TAU=1D0
19992         ELSEIF(MVAR.EQ.1) THEN
19993           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
19994         ELSEIF(MVAR.EQ.2) THEN
19995           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
19996         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5) THEN
19997           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
19998           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
19999         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6) THEN
20000           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
20001           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
20002           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
20003         ELSEIF(MINT(47).EQ.5) THEN
20004           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
20005           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
20006           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20007         ELSE
20008           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
20009           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
20010           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20011         ENDIF
20012         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
20013  
20014 C...Convert VVAR to y* variable.
20015       ELSEIF(IVAR.EQ.2) THEN
20016         YSTMIN=VINT(12)
20017         YSTMAX=VINT(32)
20018         TAUE=VINT(21)
20019         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
20020         IF(MINT(47).EQ.1) THEN
20021           YST=0D0
20022         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
20023           YST=-0.5D0*LOG(TAUE)
20024         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
20025           YST=0.5D0*LOG(TAUE)
20026         ELSEIF(MVAR.EQ.1) THEN
20027           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
20028         ELSEIF(MVAR.EQ.2) THEN
20029           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
20030         ELSEIF(MVAR.EQ.3) THEN
20031           AUPP=ATAN(EXP(YSTMAX))
20032           ALOW=ATAN(EXP(YSTMIN))
20033           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
20034         ELSEIF(MVAR.EQ.4) THEN
20035           YST0=-0.5D0*LOG(TAUE)
20036           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
20037           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
20038           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
20039         ELSE
20040           YST0=-0.5D0*LOG(TAUE)
20041           AUPP=LOG(MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
20042           ALOW=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0))
20043           YST=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
20044         ENDIF
20045         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
20046  
20047 C...Convert VVAR to cos(theta-hat) variable.
20048       ELSEIF(IVAR.EQ.3) THEN
20049         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
20050         RSQM=1D0+RM34
20051         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
20052      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
20053         CTNMIN=VINT(13)
20054         CTNMAX=VINT(33)
20055         CTPMIN=VINT(14)
20056         CTPMAX=VINT(34)
20057         IF(MVAR.EQ.1) THEN
20058           ANEG=CTNMAX-CTNMIN
20059           APOS=CTPMAX-CTPMIN
20060           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20061             VCTN=VVAR*(ANEG+APOS)/ANEG
20062             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
20063           ELSE
20064             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20065             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
20066           ENDIF
20067         ELSEIF(MVAR.EQ.2) THEN
20068           RMNMIN=MAX(RM34,RSQM-CTNMIN)
20069           RMNMAX=MAX(RM34,RSQM-CTNMAX)
20070           RMPMIN=MAX(RM34,RSQM-CTPMIN)
20071           RMPMAX=MAX(RM34,RSQM-CTPMAX)
20072           ANEG=LOG(RMNMIN/RMNMAX)
20073           APOS=LOG(RMPMIN/RMPMAX)
20074           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20075             VCTN=VVAR*(ANEG+APOS)/ANEG
20076             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
20077           ELSE
20078             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20079             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
20080           ENDIF
20081         ELSEIF(MVAR.EQ.3) THEN
20082           RMNMIN=MAX(RM34,RSQM+CTNMIN)
20083           RMNMAX=MAX(RM34,RSQM+CTNMAX)
20084           RMPMIN=MAX(RM34,RSQM+CTPMIN)
20085           RMPMAX=MAX(RM34,RSQM+CTPMAX)
20086           ANEG=LOG(RMNMAX/RMNMIN)
20087           APOS=LOG(RMPMAX/RMPMIN)
20088           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20089             VCTN=VVAR*(ANEG+APOS)/ANEG
20090             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
20091           ELSE
20092             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20093             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
20094           ENDIF
20095         ELSEIF(MVAR.EQ.4) THEN
20096           RMNMIN=MAX(RM34,RSQM-CTNMIN)
20097           RMNMAX=MAX(RM34,RSQM-CTNMAX)
20098           RMPMIN=MAX(RM34,RSQM-CTPMIN)
20099           RMPMAX=MAX(RM34,RSQM-CTPMAX)
20100           ANEG=1D0/RMNMAX-1D0/RMNMIN
20101           APOS=1D0/RMPMAX-1D0/RMPMIN
20102           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20103             VCTN=VVAR*(ANEG+APOS)/ANEG
20104             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
20105           ELSE
20106             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20107             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
20108           ENDIF
20109         ELSEIF(MVAR.EQ.5) THEN
20110           RMNMIN=MAX(RM34,RSQM+CTNMIN)
20111           RMNMAX=MAX(RM34,RSQM+CTNMAX)
20112           RMPMIN=MAX(RM34,RSQM+CTPMIN)
20113           RMPMAX=MAX(RM34,RSQM+CTPMAX)
20114           ANEG=1D0/RMNMIN-1D0/RMNMAX
20115           APOS=1D0/RMPMIN-1D0/RMPMAX
20116           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20117             VCTN=VVAR*(ANEG+APOS)/ANEG
20118             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
20119           ELSE
20120             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20121             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
20122           ENDIF
20123         ENDIF
20124         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
20125         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
20126         VINT(23)=CTH
20127  
20128 C...Convert VVAR to tau' variable.
20129       ELSEIF(IVAR.EQ.4) THEN
20130         TAU=VINT(21)
20131         TAUPMN=VINT(16)
20132         TAUPMX=VINT(36)
20133         IF(MINT(47).EQ.1) THEN
20134           TAUP=1D0
20135         ELSEIF(MVAR.EQ.1) THEN
20136           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
20137         ELSEIF(MVAR.EQ.2) THEN
20138           AUPP=(1D0-TAU/TAUPMX)**4
20139           ALOW=(1D0-TAU/TAUPMN)**4
20140           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
20141         ELSEIF(MINT(47).EQ.5) THEN
20142           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
20143           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
20144           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20145         ELSE
20146           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
20147           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
20148           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20149         ENDIF
20150         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
20151  
20152 C...Selection of extra variables needed in 2 -> 3 process:
20153 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
20154 C...Since no options are available, the functions of PYKLIM
20155 C...and PYKMAP are joint for these choices.
20156       ELSEIF(IVAR.EQ.5) THEN
20157  
20158 C...Read out total energy and particle masses.
20159         MINT(51)=0
20160         MPTPK=1
20161         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
20162      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
20163      &  MPTPK=2
20164         SHP=VINT(26)*VINT(2)
20165         SHPR=SQRT(SHP)
20166         PM1=VINT(201)
20167         PM2=VINT(206)
20168         PM3=SQRT(VINT(21))*VINT(1)
20169         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
20170           MINT(51)=1
20171           RETURN
20172         ENDIF
20173         PMRS1=VINT(204)**2
20174         PMRS2=VINT(209)**2
20175  
20176 C...Specify coefficients of pT choice; upper and lower limits.
20177         IF(MPTPK.EQ.1) THEN
20178           HWT1=0.4D0
20179           HWT2=0.4D0
20180         ELSE
20181           HWT1=0.05D0
20182           HWT2=0.05D0
20183         ENDIF
20184         HWT3=1D0-HWT1-HWT2
20185         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
20186      &  (4D0*SHP)
20187         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
20188         PTSMN1=CKIN(51)**2
20189         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
20190      &  (4D0*SHP)
20191         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
20192         PTSMN2=CKIN(53)**2
20193  
20194 C...Select transverse momenta according to
20195 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
20196         HMX=PMRS1+PTSMX1
20197         HMN=PMRS1+PTSMN1
20198         IF(HMX.LT.1.0001D0*HMN) THEN
20199           MINT(51)=1
20200           RETURN
20201         ENDIF
20202         HDE=PTSMX1-PTSMN1
20203         RPT=PYR(0)
20204         IF(RPT.LT.HWT1) THEN
20205           PTS1=PTSMN1+PYR(0)*HDE
20206         ELSEIF(RPT.LT.HWT1+HWT2) THEN
20207           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
20208         ELSE
20209           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
20210         ENDIF
20211         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
20212      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
20213         HMX=PMRS2+PTSMX2
20214         HMN=PMRS2+PTSMN2
20215         IF(HMX.LT.1.0001D0*HMN) THEN
20216           MINT(51)=1
20217           RETURN
20218         ENDIF
20219         HDE=PTSMX2-PTSMN2
20220         RPT=PYR(0)
20221         IF(RPT.LT.HWT1) THEN
20222           PTS2=PTSMN2+PYR(0)*HDE
20223         ELSEIF(RPT.LT.HWT1+HWT2) THEN
20224           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
20225         ELSE
20226           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
20227         ENDIF
20228         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
20229      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
20230  
20231 C...Select azimuthal angles and check pT choice.
20232         PHI1=PARU(2)*PYR(0)
20233         PHI2=PARU(2)*PYR(0)
20234         PHIR=PHI2-PHI1
20235         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
20236         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
20237      &  CKIN(56)**2)) THEN
20238           MINT(51)=1
20239           RETURN
20240         ENDIF
20241  
20242 C...Calculate transverse masses and check phase space not closed.
20243         PMS1=PM1**2+PTS1
20244         PMS2=PM2**2+PTS2
20245         PMS3=PM3**2+PTS3
20246         PMT1=SQRT(PMS1)
20247         PMT2=SQRT(PMS2)
20248         PMT3=SQRT(PMS3)
20249         PM12=(PMT1+PMT2)**2
20250         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
20251           MINT(51)=1
20252           RETURN
20253         ENDIF
20254  
20255 C...Select rapidity for particle 3 and check phase space not closed.
20256         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
20257      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
20258         IF(Y3MAX.LT.1D-6) THEN
20259           MINT(51)=1
20260           RETURN
20261         ENDIF
20262         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
20263         PZ3=PMT3*SINH(Y3)
20264         PE3=PMT3*COSH(Y3)
20265  
20266 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
20267         PZ12=-PZ3
20268         PE12=SHPR-PE3
20269         PMS12=PE12**2-PZ12**2
20270         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
20271         IF(SQL12.LT.1D-6*SHP) THEN
20272           MINT(51)=1
20273           RETURN
20274         ENDIF
20275         PMM1=PMS12+PMS1-PMS2
20276         PMM2=PMS12+PMS2-PMS1
20277         TFAC=-SHPR/(2D0*PMS12)
20278         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
20279         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
20280         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
20281         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
20282  
20283 C...Construct relative mirror weights and make choice.
20284         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
20285           WTPU=1D0
20286           WTNU=1D0
20287         ELSE
20288           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
20289           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
20290         ENDIF
20291         WTP=WTPU/(WTPU+WTNU)
20292         WTN=WTNU/(WTPU+WTNU)
20293         EPS=1D0
20294         IF(WTN.GT.PYR(0)) EPS=-1D0
20295  
20296 C...Store result of variable choice and associated weights.
20297         VINT(202)=PTS1
20298         VINT(207)=PTS2
20299         VINT(203)=PHI1
20300         VINT(208)=PHI2
20301         VINT(205)=WTPTS1
20302         VINT(210)=WTPTS2
20303         VINT(211)=Y3
20304         VINT(212)=Y3MAX
20305         VINT(213)=EPS
20306         IF(EPS.GT.0D0) THEN
20307           VINT(214)=1D0/WTP
20308           VINT(215)=T1P
20309           VINT(216)=T2P
20310         ELSE
20311           VINT(214)=1D0/WTN
20312           VINT(215)=T1N
20313           VINT(216)=T2N
20314         ENDIF
20315         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
20316         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
20317         VINT(219)=0.5D0*(PMS12-PTS3)
20318         VINT(220)=SQL12
20319       ENDIF
20320  
20321       RETURN
20322       END
20323  
20324 C***********************************************************************
20325  
20326 C...PYSIGH
20327 C...Differential matrix elements for all included subprocesses
20328 C...Note that what is coded is (disregarding the COMFAC factor)
20329 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
20330 C...when d(sigma-hat) is given in the zero-width limit, the delta
20331 C...function in tau is replaced by a (modified) Breit-Wigner:
20332 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
20333 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
20334 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
20335 C...i.e., dimensionless quantities
20336 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
20337 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
20338 C...(2pi)^4 delta^4(P - sum p_i)
20339 C...COMFAC contains the factor pi/s (or equivalent) and
20340 C...the conversion factor from GeV^-2 to mb
20341  
20342       SUBROUTINE PYSIGH(NCHN,SIGS)
20343  
20344 C...Double precision and integer declarations
20345       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20346       IMPLICIT INTEGER(I-N)
20347       INTEGER PYK,PYCHGE,PYCOMP
20348 C...Parameter statement to help give large particle numbers.
20349       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
20350      &KEXCIT=4000000,KDIMEN=5000000)
20351 C...Commonblocks
20352       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
20353       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20354       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20355       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
20356       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
20357       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20358       COMMON/PYINT1/MINT(400),VINT(400)
20359       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
20360       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
20361       COMMON/PYINT4/MWID(500),WIDS(500,5)
20362       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
20363       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
20364       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
20365       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
20366      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
20367       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
20368       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
20369      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
20370      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
20371      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
20372       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
20373      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
20374      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYSGCM/
20375 C...Local arrays and complex variables
20376       DIMENSION X(2),XPQ(-25:25)
20377  
20378 C...Map of processes onto which routine to call
20379 C...in order to evaluate cross section:
20380 C...0 = not implemented;
20381 C...1 = standard QCD (including photons);
20382 C...2 = heavy flavours;
20383 C...3 = W/Z;
20384 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
20385 C...5 = SUSY;
20386 C...6 = Technicolor;
20387 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
20388       DIMENSION MAPPR(500)
20389       DATA (MAPPR(I),I=1,180)/
20390      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
20391      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
20392      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
20393      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
20394      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
20395      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
20396      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
20397      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
20398      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
20399      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
20400      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
20401      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
20402      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
20403      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
20404      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
20405      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
20406      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
20407      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
20408       DATA (MAPPR(I),I=181,500)/
20409      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
20410      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
20411      &    100*5,
20412      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
20413      1     30*0,
20414      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
20415      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
20416      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
20417      7    6,  6,  6,  6,  6,  6,  6,  0,  0,  0,
20418      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
20419      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
20420      &    100*0/
20421  
20422 C...Reset number of channels and cross-section
20423       NCHN=0
20424       SIGS=0D0
20425  
20426 C...Read process to consider.
20427       ISUB=MINT(1)
20428       ISUBSV=ISUB
20429       MAP=MAPPR(ISUB)
20430  
20431 C...Read kinematical variables and limits
20432       ISTSB=ISET(ISUBSV)
20433       TAUMIN=VINT(11)
20434       YSTMIN=VINT(12)
20435       CTNMIN=VINT(13)
20436       CTPMIN=VINT(14)
20437       TAUPMN=VINT(16)
20438       TAU=VINT(21)
20439       YST=VINT(22)
20440       CTH=VINT(23)
20441       XT2=VINT(25)
20442       TAUP=VINT(26)
20443       TAUMAX=VINT(31)
20444       YSTMAX=VINT(32)
20445       CTNMAX=VINT(33)
20446       CTPMAX=VINT(34)
20447       TAUPMX=VINT(36)
20448  
20449 C...Derive kinematical quantities
20450       TAUE=TAU
20451       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
20452       X(1)=SQRT(TAUE)*EXP(YST)
20453       X(2)=SQRT(TAUE)*EXP(-YST)
20454       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
20455         IF(X(1).GT.1D0-1D-7) RETURN
20456       ELSEIF(MINT(45).EQ.3) THEN
20457         X(1)=MIN(1D0-1.1D-10,X(1))
20458       ENDIF
20459       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
20460         IF(X(2).GT.1D0-1D-7) RETURN
20461       ELSEIF(MINT(46).EQ.3) THEN
20462         X(2)=MIN(1D0-1.1D-10,X(2))
20463       ENDIF
20464       SH=MAX(1D0,TAU*VINT(2))
20465       SQM3=VINT(63)
20466       SQM4=VINT(64)
20467       RM3=SQM3/SH
20468       RM4=SQM4/SH
20469       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
20470       RPTS=4D0*VINT(71)**2/SH
20471       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
20472       RM34=MAX(1D-20,2D0*RM3*RM4)
20473       RSQM=1D0+RM34
20474       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
20475      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
20476       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
20477       IF(ISTSB.EQ.0) THEN
20478         TH=VINT(45)
20479         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
20480         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
20481       ELSE
20482 C...Kinematics with incoming masses tricky: now depends on how
20483 C...subprocess has been set up w.r.t. order of incoming partons.
20484         RM1=0D0
20485         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
20486         RM2=0D0
20487         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
20488         IF(ISUB.EQ.35) THEN
20489           RM2=MIN(RM1,RM2)
20490           RM1=0D0
20491         ENDIF
20492         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
20493         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
20494         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
20495      &  BE12*BE34*CTH)
20496         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
20497      &  BE12*BE34*CTH)
20498         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
20499       ENDIF
20500       SHR=SQRT(SH)
20501       SH2=SH**2
20502       TH2=TH**2
20503       UH2=UH**2
20504  
20505 C...Choice of Q2 scale: hard, parton distributions, parton showers
20506       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
20507         Q2=SH
20508       ELSEIF(ISTSB.EQ.8) THEN
20509         IF(MINT(107).EQ.4) Q2=VINT(307)
20510         IF(MINT(108).EQ.4) Q2=VINT(308)
20511       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
20512         Q2IN1=0D0
20513         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
20514         Q2IN2=0D0
20515         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
20516         IF(MSTP(32).EQ.1) THEN
20517           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
20518         ELSEIF(MSTP(32).EQ.2) THEN
20519           Q2=SQPTH+0.5D0*(SQM3+SQM4)
20520         ELSEIF(MSTP(32).EQ.3) THEN
20521           Q2=MIN(-TH,-UH)
20522         ELSEIF(MSTP(32).EQ.4) THEN
20523           Q2=SH
20524         ELSEIF(MSTP(32).EQ.5) THEN
20525           Q2=-TH
20526         ELSEIF(MSTP(32).EQ.6) THEN
20527           XSF1=X(1)
20528           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
20529           XSF2=X(2)
20530           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
20531           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
20532      &    (SQPTH+0.5D0*(SQM3+SQM4))
20533         ELSEIF(MSTP(32).EQ.7) THEN
20534           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
20535         ELSEIF(MSTP(32).EQ.8) THEN
20536           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
20537         ELSEIF(MSTP(32).EQ.9) THEN
20538           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
20539         ELSEIF(MSTP(32).EQ.10) THEN
20540           Q2=VINT(2)
20541         ENDIF
20542         IF(ISTSB.EQ.9) Q2=SQPTH
20543         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
20544      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
20545       ENDIF
20546       Q2SF=Q2
20547       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
20548         Q2SF=PMAS(23,1)**2
20549         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
20550      &  ISUB.EQ.351) Q2SF=PMAS(24,1)**2
20551         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
20552         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
20553      &  ISUB.EQ.186.OR.ISUB.EQ.187) THEN
20554           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
20555           IF(MSTP(39).EQ.2) Q2SF=Q2SF+MAX(VINT(202),VINT(207))
20556           IF(MSTP(39).EQ.3) Q2SF=SH
20557           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
20558           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
20559         ENDIF
20560       ENDIF
20561       Q2PS=Q2SF
20562       Q2SF=Q2SF*PARP(34)
20563       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
20564       IF(MSTP(69).GE.2) Q2SF=VINT(2)
20565       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
20566      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
20567         XBJ=X(2)
20568         IF(MINT(43).EQ.3) XBJ=X(1)
20569         IF(MSTP(22).EQ.1) THEN
20570           Q2PS=-TH
20571         ELSEIF(MSTP(22).EQ.2) THEN
20572           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
20573         ELSEIF(MSTP(22).EQ.3) THEN
20574           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
20575         ELSE
20576           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
20577         ENDIF
20578       ENDIF
20579       IF(MSTP(68).EQ.1.AND.(ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.
20580      &ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
20581      &ISUBSV.EQ.144.OR.ISUBSV.EQ.152.OR.ISUBSV.EQ.157)) THEN
20582         Q2PS=VINT(2)
20583       ELSEIF(MSTP(68).GE.2.AND.(ISUBSV.NE.11.AND.ISUBSV.NE.12.AND.
20584      &ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.ISUBSV.NE.53.AND.
20585      &ISUBSV.NE.68)) THEN
20586         Q2PS=VINT(2)
20587       ENDIF
20588  
20589 C...Store derived kinematical quantities
20590       VINT(41)=X(1)
20591       VINT(42)=X(2)
20592       VINT(44)=SH
20593       VINT(43)=SQRT(SH)
20594       VINT(45)=TH
20595       VINT(46)=UH
20596       IF(ISTSB.NE.8) VINT(48)=SQPTH
20597       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
20598       VINT(50)=TAUP*VINT(2)
20599       VINT(49)=SQRT(MAX(0D0,VINT(50)))
20600       VINT(52)=Q2
20601       VINT(51)=SQRT(Q2)
20602       VINT(54)=Q2SF
20603       VINT(53)=SQRT(Q2SF)
20604       VINT(56)=Q2PS
20605       VINT(55)=SQRT(Q2PS)
20606  
20607 C...Calculate parton distributions
20608       IF(ISTSB.LE.0) GOTO 160
20609       IF(MINT(47).GE.2) THEN
20610         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
20611           XSF=X(I)
20612           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
20613           IF(ISUB.EQ.99) THEN
20614             IF(MINT(140+I).EQ.0) THEN
20615               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
20616             ELSE
20617               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
20618             ENDIF
20619             VINT(40+I)=XSF
20620             Q2SF=VINT(309-I)
20621           ENDIF
20622           MINT(105)=MINT(102+I)
20623           MINT(109)=MINT(106+I)
20624           VINT(120)=VINT(2+I)
20625 C.... ALICE
20626 C.... Store side in MINT(124)
20627           MINT(124)=I
20628 C....
20629           IF(MSTP(57).LE.1) THEN
20630             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
20631           ELSE
20632             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
20633           ENDIF
20634           DO 100 KFL=-25,25
20635             XSFX(I,KFL)=XPQ(KFL)
20636   100     CONTINUE
20637   110   CONTINUE
20638       ENDIF
20639  
20640 C...Calculate alpha_em, alpha_strong and K-factor
20641       XW=PARU(102)
20642       XWV=XW
20643       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
20644      &1D0-(PMAS(24,1)/PMAS(23,1))**2
20645       XW1=1D0-XW
20646       XWC=1D0/(16D0*XW*XW1)
20647       AEM=PYALEM(Q2)
20648       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
20649       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
20650       FACK=1D0
20651       FACA=1D0
20652       IF(MSTP(33).EQ.1) THEN
20653         FACK=PARP(31)
20654       ELSEIF(MSTP(33).EQ.2) THEN
20655         FACK=PARP(31)
20656         FACA=PARP(32)/PARP(31)
20657       ELSEIF(MSTP(33).EQ.3) THEN
20658         Q2AS=PARP(33)*Q2
20659         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
20660      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
20661         AS=PYALPS(Q2AS)
20662       ENDIF
20663       VINT(138)=1D0
20664       VINT(57)=AEM
20665       VINT(58)=AS
20666  
20667 C...Set flags for allowed reacting partons/leptons
20668       DO 140 I=1,2
20669         DO 120 J=-25,25
20670           KFAC(I,J)=0
20671   120   CONTINUE
20672         IF(MINT(44+I).EQ.1) THEN
20673           KFAC(I,MINT(10+I))=1
20674         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
20675           KFAC(I,MINT(10+I))=1
20676           KFAC(I,22)=1
20677           KFAC(I,24)=1
20678           KFAC(I,-24)=1
20679         ELSE
20680           DO 130 J=-25,25
20681             KFAC(I,J)=KFIN(I,J)
20682             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
20683             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
20684   130     CONTINUE
20685         ENDIF
20686   140 CONTINUE
20687  
20688 C...Lower and upper limit for fermion flavour loops
20689       MMIN1=0
20690       MMAX1=0
20691       MMIN2=0
20692       MMAX2=0
20693       DO 150 J=-20,20
20694         IF(KFAC(1,-J).EQ.1) MMIN1=-J
20695         IF(KFAC(1,J).EQ.1) MMAX1=J
20696         IF(KFAC(2,-J).EQ.1) MMIN2=-J
20697         IF(KFAC(2,J).EQ.1) MMAX2=J
20698   150 CONTINUE
20699       MMINA=MIN(MMIN1,MMIN2)
20700       MMAXA=MAX(MMAX1,MMAX2)
20701  
20702 C...Common resonance mass and width combinations
20703       SQMZ=PMAS(23,1)**2
20704       SQMW=PMAS(24,1)**2
20705       GMMZ=PMAS(23,1)*PMAS(23,2)
20706       GMMW=PMAS(24,1)*PMAS(24,2)
20707  
20708 C...Polarization factors...implemented so far for W+W-(25)
20709       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
20710       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
20711       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
20712       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
20713  
20714 C...Phase space integral in tau
20715       COMFAC=PARU(1)*PARU(5)/VINT(2)
20716       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
20717       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
20718      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
20719         ATAU1=LOG(TAUMAX/TAUMIN)
20720         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
20721         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
20722         IF(MINT(72).GE.1) THEN
20723           TAUR1=VINT(73)
20724           GAMR1=VINT(74)
20725           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
20726           ATAU3=ATAUD/TAUR1
20727           IF(ATAUD.GT.1D-10) H1=H1+
20728      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
20729           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
20730           ATAU4=ATAUD/GAMR1
20731           IF(ATAUD.GT.1D-10) H1=H1+
20732      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
20733         ENDIF
20734         IF(MINT(72).EQ.2) THEN
20735           TAUR2=VINT(75)
20736           GAMR2=VINT(76)
20737           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
20738           ATAU5=ATAUD/TAUR2
20739           IF(ATAUD.GT.1D-10) H1=H1+
20740      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
20741           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
20742           ATAU6=ATAUD/GAMR2
20743           IF(ATAUD.GT.1D-10) H1=H1+
20744      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
20745         ENDIF
20746         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
20747           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
20748           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
20749      &    MAX(2D-10,1D0-TAU)
20750         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
20751           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
20752           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
20753      &    MAX(1D-10,1D0-TAU)
20754         ENDIF
20755         COMFAC=COMFAC*ATAU1/(TAU*H1)
20756       ENDIF
20757  
20758 C...Phase space integral in y*
20759       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
20760      &THEN
20761         AYST0=YSTMAX-YSTMIN
20762         IF(AYST0.LT.1D-10) THEN
20763           COMFAC=0D0
20764         ELSE
20765           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
20766           AYST2=AYST1
20767           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
20768           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
20769      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
20770      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
20771           IF(MINT(45).EQ.3) THEN
20772             YST0=-0.5D0*LOG(TAUE)
20773             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
20774      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
20775             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
20776      &      MAX(1D-10,1D0-EXP(YST-YST0))
20777           ENDIF
20778           IF(MINT(46).EQ.3) THEN
20779             YST0=-0.5D0*LOG(TAUE)
20780             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
20781      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
20782             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
20783      &      MAX(1D-10,1D0-EXP(-YST-YST0))
20784           ENDIF
20785           COMFAC=COMFAC*AYST0/H2
20786         ENDIF
20787       ENDIF
20788  
20789 C...2 -> 1 processes: reduction in angular part of phase space integral
20790 C...for case of decaying resonance
20791       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
20792       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
20793         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
20794           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
20795      &    KFPR(ISUB,1).EQ.39) THEN
20796             COMFAC=COMFAC*0.5D0*ACTH0
20797           ELSE
20798             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
20799      &      CTPMAX**3-CTPMIN**3)
20800           ENDIF
20801         ENDIF
20802  
20803 C...2 -> 2 processes: angular part of phase space integral
20804       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
20805         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
20806      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
20807         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
20808      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
20809         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
20810      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
20811         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
20812      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
20813         H3=COEF(ISUBSV,13)+
20814      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
20815      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
20816      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
20817      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
20818         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
20819  
20820 C...2 -> 2 processes: take into account final state Breit-Wigners
20821         COMFAC=COMFAC*VINT(80)
20822       ENDIF
20823  
20824 C...2 -> 3, 4 processes: phace space integral in tau'
20825       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
20826         ATAUP1=LOG(TAUPMX/TAUPMN)
20827         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
20828         H4=COEF(ISUBSV,18)+
20829      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
20830         IF(MINT(47).EQ.5) THEN
20831           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
20832           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
20833         ELSEIF(MINT(47).GE.6) THEN
20834           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
20835           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
20836         ENDIF
20837         COMFAC=COMFAC*ATAUP1/H4
20838       ENDIF
20839  
20840 C...2 -> 3, 4 processes: effective W/Z parton distributions
20841       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
20842         IF(1D0-TAU/TAUP.GT.1D-4) THEN
20843           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
20844         ELSE
20845           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
20846         ENDIF
20847         COMFAC=COMFAC*FZW
20848       ENDIF
20849  
20850 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
20851       IF(ISTSB.EQ.5) THEN
20852         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
20853      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
20854       ENDIF
20855  
20856 C...Phase space integral for low-pT and multiple interactions
20857       IF(ISTSB.EQ.9) THEN
20858         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
20859         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
20860         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
20861         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
20862         COMFAC=COMFAC*ATAU1/H1
20863         AYST0=YSTMAX-YSTMIN
20864         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
20865         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
20866         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
20867      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
20868      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
20869         COMFAC=COMFAC*AYST0/H2
20870         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
20871 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
20872 C...introduced to make cross-section finite for xT2 -> 0
20873         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
20874      &  (1D0+VINT(149)))
20875       ENDIF
20876  
20877 C...Real gamma + gamma: include factor 2 when different nature
20878   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
20879      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
20880  
20881 C...Extra factors to include the effects of
20882 C...longitudinal resolved photons (but not direct or DIS ones).
20883       DO 170 ISDE=1,2
20884         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
20885      &  MINT(106+ISDE).LE.3) THEN
20886           VINT(314+ISDE)=1D0
20887           XY=PARP(166+ISDE)
20888           IF(MSTP(16).EQ.0) THEN
20889             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
20890      &      XY=VINT(304+ISDE)
20891           ELSE
20892             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
20893      &      XY=VINT(308+ISDE)
20894           ENDIF
20895           Q2GA=VINT(306+ISDE)
20896           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
20897      &    Q2GA.GT.0D0) THEN
20898             REDUCE=0D0
20899             IF(MSTP(17).EQ.1) THEN
20900               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
20901             ELSEIF(MSTP(17).EQ.2) THEN
20902               REDUCE=4D0*Q2GA/(Q2+Q2GA)
20903             ELSEIF(MSTP(17).EQ.3) THEN
20904               PMVIRT=PMAS(PYCOMP(113),1)
20905               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20906             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
20907               PMVIRT=PMAS(PYCOMP(113),1)
20908               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
20909             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
20910               PMVIRT=PMAS(PYCOMP(113),1)
20911               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
20912             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
20913               PMVSMN=4D0*PARP(15)**2
20914               PMVSMX=4D0*VINT(154)**2
20915               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
20916               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
20917      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
20918               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
20919             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
20920               PMVIRT=PMAS(PYCOMP(113),1)
20921               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20922             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
20923               PMVIRT=PMAS(PYCOMP(113),1)
20924               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20925             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
20926               PMVSMN=4D0*PARP(15)**2
20927               PMVSMX=4D0*VINT(154)**2
20928               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
20929               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
20930               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
20931             ENDIF
20932             BEAMAS=PYMASS(11)
20933             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
20934             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
20935      &      (1D0-2D0*BEAMAS**2/Q2GA))
20936             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
20937           ENDIF
20938         ELSE
20939           VINT(314+ISDE)=1D0
20940         ENDIF
20941         COMFAC=COMFAC*VINT(314+ISDE)
20942   170 CONTINUE
20943  
20944 C...Evaluate cross sections - done in separate routines by kind
20945 C...of physics, to keep PYSIGH of sensible size.
20946       IF(MAP.EQ.1) THEN
20947 C...Standard QCD (including photons).
20948         CALL PYSGQC(NCHN,SIGS)
20949       ELSEIF(MAP.EQ.2) THEN
20950 C...Heavy flavours.
20951         CALL PYSGHF(NCHN,SIGS)
20952       ELSEIF(MAP.EQ.3) THEN
20953 C...W/Z.
20954         CALL PYSGWZ(NCHN,SIGS)
20955       ELSEIF(MAP.EQ.4) THEN
20956 C...Higgs (2 doublets; including longitudinal W/Z scattering).
20957         CALL PYSGHG(NCHN,SIGS)
20958       ELSEIF(MAP.EQ.5) THEN
20959 C...SUSY.
20960         CALL PYSGSU(NCHN,SIGS)
20961       ELSEIF(MAP.EQ.6) THEN
20962 C...Technicolor.
20963         CALL PYSGTC(NCHN,SIGS)
20964       ELSEIF(MAP.EQ.7) THEN
20965 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
20966         CALL PYSGEX(NCHN,SIGS)
20967       ENDIF
20968  
20969 C...Multiply with parton distributions
20970       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
20971         DO 180 ICHN=1,NCHN
20972           IF(MINT(45).GE.2) THEN
20973             KFL1=ISIG(ICHN,1)
20974             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
20975           ENDIF
20976           IF(MINT(46).GE.2) THEN
20977             KFL2=ISIG(ICHN,2)
20978             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
20979           ENDIF
20980           SIGS=SIGS+SIGH(ICHN)
20981   180   CONTINUE
20982       ENDIF
20983  
20984       RETURN
20985       END
20986  
20987 C*********************************************************************
20988  
20989 C...PYSGQC
20990 C...Subprocess cross sections for QCD processes,
20991 C...including photons.
20992 C...Auxiliary to PYSIGH.
20993  
20994       SUBROUTINE PYSGQC(NCHN,SIGS)
20995  
20996 C...Double precision and integer declarations
20997       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20998       IMPLICIT INTEGER(I-N)
20999       INTEGER PYK,PYCHGE,PYCOMP
21000 C...Parameter statement to help give large particle numbers.
21001       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
21002      &KEXCIT=4000000,KDIMEN=5000000)
21003 C...Commonblocks
21004       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21005       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21006       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
21007       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21008       COMMON/PYINT1/MINT(400),VINT(400)
21009       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
21010       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
21011       COMMON/PYINT4/MWID(500),WIDS(500,5)
21012       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
21013       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
21014      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
21015      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
21016      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
21017       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
21018      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
21019 C...Local arrays
21020       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
21021  
21022 C...Differential cross section expressions.
21023  
21024       IF(ISUB.LE.20) THEN
21025         IF(ISUB.EQ.10) THEN
21026 C...f + f' -> f + f' (gamma/Z/W exchange)
21027           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
21028           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
21029           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
21030           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
21031           DO 110 I=MMIN1,MMAX1
21032             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
21033             IA=IABS(I)
21034             DO 100 J=MMIN2,MMAX2
21035               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
21036               JA=IABS(J)
21037 C...Electroweak couplings
21038               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
21039               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
21040               VI=AI-4D0*EI*XWV
21041               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
21042               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
21043               VJ=AJ-4D0*EJ*XWV
21044               EPSIJ=ISIGN(1,I*J)
21045 C...gamma/Z exchange, only gamma exchange, or only Z exchange
21046               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
21047                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
21048                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
21049      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
21050      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
21051      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
21052                 ELSEIF(MSTP(21).EQ.2) THEN
21053                   FACNCF=FACGGF*EI**2*EJ**2
21054                 ELSE
21055                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
21056      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
21057                 ENDIF
21058 C...Extrafactor 2 for only one incoming neutrino spin state.
21059                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
21060                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
21061                 NCHN=NCHN+1
21062                 ISIG(NCHN,1)=I
21063                 ISIG(NCHN,2)=J
21064                 ISIG(NCHN,3)=1
21065                 SIGH(NCHN)=FACNCF
21066               ENDIF
21067 C...W exchange
21068               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
21069                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
21070                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
21071                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
21072                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
21073                 NCHN=NCHN+1
21074                 ISIG(NCHN,1)=I
21075                 ISIG(NCHN,2)=J
21076                 ISIG(NCHN,3)=2
21077                 SIGH(NCHN)=FACCCF
21078               ENDIF
21079   100       CONTINUE
21080   110     CONTINUE
21081  
21082         ELSEIF(ISUB.EQ.11) THEN
21083 C...f + f' -> f + f' (g exchange)
21084           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
21085           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
21086      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
21087           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
21088      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
21089           DO 130 I=MMIN1,MMAX1
21090             IA=IABS(I)
21091             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
21092             DO 120 J=MMIN2,MMAX2
21093               JA=IABS(J)
21094               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
21095               NCHN=NCHN+1
21096               ISIG(NCHN,1)=I
21097               ISIG(NCHN,2)=J
21098               ISIG(NCHN,3)=1
21099               SIGH(NCHN)=FACQQ1
21100               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
21101               IF(I.EQ.J) THEN
21102                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
21103                 NCHN=NCHN+1
21104                 ISIG(NCHN,1)=I
21105                 ISIG(NCHN,2)=J
21106                 ISIG(NCHN,3)=2
21107                 SIGH(NCHN)=0.5D0*FACQQ2
21108               ENDIF
21109   120       CONTINUE
21110   130     CONTINUE
21111  
21112         ELSEIF(ISUB.EQ.12) THEN
21113 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
21114           CALL PYWIDT(21,SH,WDTP,WDTE)
21115           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
21116      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
21117           DO 140 I=MMINA,MMAXA
21118             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21119      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
21120             NCHN=NCHN+1
21121             ISIG(NCHN,1)=I
21122             ISIG(NCHN,2)=-I
21123             ISIG(NCHN,3)=1
21124             SIGH(NCHN)=FACQQB
21125   140     CONTINUE
21126  
21127         ELSEIF(ISUB.EQ.13) THEN
21128 C...f + fbar -> g + g (q + qbar -> g + g only)
21129           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21130      &    UH2/SH2)
21131           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21132      &    TH2/SH2)
21133           DO 150 I=MMINA,MMAXA
21134             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21135      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
21136             NCHN=NCHN+1
21137             ISIG(NCHN,1)=I
21138             ISIG(NCHN,2)=-I
21139             ISIG(NCHN,3)=1
21140             SIGH(NCHN)=0.5D0*FACGG1
21141             NCHN=NCHN+1
21142             ISIG(NCHN,1)=I
21143             ISIG(NCHN,2)=-I
21144             ISIG(NCHN,3)=2
21145             SIGH(NCHN)=0.5D0*FACGG2
21146   150     CONTINUE
21147  
21148         ELSEIF(ISUB.EQ.14) THEN
21149 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
21150           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
21151           DO 160 I=MMINA,MMAXA
21152             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21153      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
21154             EI=KCHG(IABS(I),1)/3D0
21155             NCHN=NCHN+1
21156             ISIG(NCHN,1)=I
21157             ISIG(NCHN,2)=-I
21158             ISIG(NCHN,3)=1
21159             SIGH(NCHN)=FACGG*EI**2
21160   160     CONTINUE
21161  
21162         ELSEIF(ISUB.EQ.18) THEN
21163 C...f + fbar -> gamma + gamma
21164           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
21165           DO 170 I=MMINA,MMAXA
21166             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
21167             EI=KCHG(IABS(I),1)/3D0
21168             FCOI=1D0
21169             IF(IABS(I).LE.10) FCOI=FACA/3D0
21170             NCHN=NCHN+1
21171             ISIG(NCHN,1)=I
21172             ISIG(NCHN,2)=-I
21173             ISIG(NCHN,3)=1
21174             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
21175   170     CONTINUE
21176         ENDIF
21177  
21178       ELSEIF(ISUB.LE.40) THEN
21179         IF(ISUB.EQ.28) THEN
21180 C...f + g -> f + g (q + g -> q + g only)
21181           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
21182      &    UH/SH)*FACA
21183           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
21184      &    SH/UH)
21185           DO 190 I=MMINA,MMAXA
21186             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
21187             DO 180 ISDE=1,2
21188               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
21189               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
21190               NCHN=NCHN+1
21191               ISIG(NCHN,ISDE)=I
21192               ISIG(NCHN,3-ISDE)=21
21193               ISIG(NCHN,3)=1
21194               SIGH(NCHN)=FACQG1
21195               NCHN=NCHN+1
21196               ISIG(NCHN,ISDE)=I
21197               ISIG(NCHN,3-ISDE)=21
21198               ISIG(NCHN,3)=2
21199               SIGH(NCHN)=FACQG2
21200   180       CONTINUE
21201   190     CONTINUE
21202  
21203         ELSEIF(ISUB.EQ.29) THEN
21204 C...f + g -> f + gamma (q + g -> q + gamma only)
21205           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
21206           DO 210 I=MMINA,MMAXA
21207             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
21208             EI=KCHG(IABS(I),1)/3D0
21209             FACGQ=FGQ*EI**2
21210             DO 200 ISDE=1,2
21211               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
21212               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
21213               NCHN=NCHN+1
21214               ISIG(NCHN,ISDE)=I
21215               ISIG(NCHN,3-ISDE)=21
21216               ISIG(NCHN,3)=1
21217               SIGH(NCHN)=FACGQ
21218   200       CONTINUE
21219   210     CONTINUE
21220  
21221         ELSEIF(ISUB.EQ.33) THEN
21222 C...f + gamma -> f + g (q + gamma -> q + g only)
21223           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
21224           DO 230 I=MMINA,MMAXA
21225             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
21226             EI=KCHG(IABS(I),1)/3D0
21227             FACGQ=FGQ*EI**2
21228             DO 220 ISDE=1,2
21229               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
21230               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
21231               NCHN=NCHN+1
21232               ISIG(NCHN,ISDE)=I
21233               ISIG(NCHN,3-ISDE)=22
21234               ISIG(NCHN,3)=1
21235               SIGH(NCHN)=FACGQ
21236   220       CONTINUE
21237   230     CONTINUE
21238  
21239         ELSEIF(ISUB.EQ.34) THEN
21240 C...f + gamma -> f + gamma
21241           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
21242           DO 250 I=MMINA,MMAXA
21243             IF(I.EQ.0) GOTO 250
21244             EI=KCHG(IABS(I),1)/3D0
21245             FACGQ=FGQ*EI**4
21246             DO 240 ISDE=1,2
21247               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
21248               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
21249               NCHN=NCHN+1
21250               ISIG(NCHN,ISDE)=I
21251               ISIG(NCHN,3-ISDE)=22
21252               ISIG(NCHN,3)=1
21253               SIGH(NCHN)=FACGQ
21254   240       CONTINUE
21255   250     CONTINUE
21256         ENDIF
21257  
21258       ELSEIF(ISUB.LE.80) THEN
21259         IF(ISUB.EQ.53) THEN
21260 C...g + g -> f + fbar (g + g -> q + qbar only)
21261           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
21262           IDC0=MDCY(21,2)-1
21263 C...Begin by d, u, s flavours.
21264           FLAVWT=0D0
21265           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
21266      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
21267           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
21268      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
21269           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
21270      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
21271           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21272      &    UH2/SH2)*FLAVWT*FACA
21273           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21274      &    TH2/SH2)*FLAVWT*FACA
21275           NCHN=NCHN+1
21276           ISIG(NCHN,1)=21
21277           ISIG(NCHN,2)=21
21278           ISIG(NCHN,3)=1
21279           SIGH(NCHN)=FACQQ1
21280           NCHN=NCHN+1
21281           ISIG(NCHN,1)=21
21282           ISIG(NCHN,2)=21
21283           ISIG(NCHN,3)=2
21284           SIGH(NCHN)=FACQQ2
21285 C...Next c and b flavours: modified that and uhat for fixed
21286 C...cos(theta-hat).
21287           DO 260 IFL=4,5
21288           SQMAVG=PMAS(IFL,1)**2
21289           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
21290             BE34=SQRT(1D0-4D0*SQMAVG/SH)
21291             THQ=-0.5D0*SH*(1D0-BE34*CTH)
21292             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21293             THUHQ=THQ*UHQ-SQMAVG*SH
21294             IF(MSTP(34).EQ.0) THEN
21295               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21296               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21297             ELSE
21298               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21299      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21300               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21301      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21302             ENDIF
21303             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
21304             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
21305             NCHN=NCHN+1
21306             ISIG(NCHN,1)=21
21307             ISIG(NCHN,2)=21
21308             ISIG(NCHN,3)=1+2*(IFL-3)
21309             SIGH(NCHN)=FACQQ1
21310             NCHN=NCHN+1
21311             ISIG(NCHN,1)=21
21312             ISIG(NCHN,2)=21
21313             ISIG(NCHN,3)=2+2*(IFL-3)
21314             SIGH(NCHN)=FACQQ2
21315           ENDIF
21316   260     CONTINUE
21317   270     CONTINUE
21318  
21319         ELSEIF(ISUB.EQ.54) THEN
21320 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
21321           CALL PYWIDT(21,SH,WDTP,WDTE)
21322           WDTESU=0D0
21323           DO 280 I=1,MIN(8,MDCY(21,3))
21324             EF=KCHG(I,1)/3D0
21325             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21326      &      WDTE(I,4))
21327   280     CONTINUE
21328           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
21329           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
21330             NCHN=NCHN+1
21331             ISIG(NCHN,1)=21
21332             ISIG(NCHN,2)=22
21333             ISIG(NCHN,3)=1
21334             SIGH(NCHN)=FACQQ
21335           ENDIF
21336           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
21337             NCHN=NCHN+1
21338             ISIG(NCHN,1)=22
21339             ISIG(NCHN,2)=21
21340             ISIG(NCHN,3)=1
21341             SIGH(NCHN)=FACQQ
21342           ENDIF
21343  
21344         ELSEIF(ISUB.EQ.58) THEN
21345 C...gamma + gamma -> f + fbar
21346           CALL PYWIDT(22,SH,WDTP,WDTE)
21347           WDTESU=0D0
21348           DO 290 I=1,MIN(12,MDCY(22,3))
21349             IF(I.LE.8) EF= KCHG(I,1)/3D0
21350             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
21351             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21352      &      WDTE(I,4))
21353   290     CONTINUE
21354           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
21355           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
21356             NCHN=NCHN+1
21357             ISIG(NCHN,1)=22
21358             ISIG(NCHN,2)=22
21359             ISIG(NCHN,3)=1
21360             SIGH(NCHN)=FACFF
21361           ENDIF
21362  
21363         ELSEIF(ISUB.EQ.68) THEN
21364 C...g + g -> g + g
21365           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
21366           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
21367      &    TH2/SH2)*FACA
21368           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
21369      &    SH2/UH2)*FACA
21370           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
21371      &    UH2/TH2)
21372           NCHN=NCHN+1
21373           ISIG(NCHN,1)=21
21374           ISIG(NCHN,2)=21
21375           ISIG(NCHN,3)=1
21376           SIGH(NCHN)=0.5D0*FACGG1
21377           NCHN=NCHN+1
21378           ISIG(NCHN,1)=21
21379           ISIG(NCHN,2)=21
21380           ISIG(NCHN,3)=2
21381           SIGH(NCHN)=0.5D0*FACGG2
21382           NCHN=NCHN+1
21383           ISIG(NCHN,1)=21
21384           ISIG(NCHN,2)=21
21385           ISIG(NCHN,3)=3
21386           SIGH(NCHN)=0.5D0*FACGG3
21387   300     CONTINUE
21388  
21389         ELSEIF(ISUB.EQ.80) THEN
21390 C...q + gamma -> q' + pi+/-
21391           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
21392           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
21393           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
21394           DELSH=UH*SQRT(ASSH*Q2FPSH)
21395           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
21396           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
21397           DELUH=SH*SQRT(ASUH*Q2FPUH)
21398           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
21399             IF(I.EQ.0) GOTO 320
21400             EI=KCHG(IABS(I),1)/3D0
21401             EJ=SIGN(1D0-ABS(EI),EI)
21402             DO 310 ISDE=1,2
21403               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
21404               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
21405               NCHN=NCHN+1
21406               ISIG(NCHN,ISDE)=I
21407               ISIG(NCHN,3-ISDE)=22
21408               ISIG(NCHN,3)=1
21409               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
21410   310       CONTINUE
21411   320     CONTINUE
21412         ENDIF
21413  
21414       ELSEIF(ISUB.LE.100) THEN
21415         IF(ISUB.EQ.91) THEN
21416 C...Elastic scattering
21417           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
21418  
21419         ELSEIF(ISUB.EQ.92) THEN
21420 C...Single diffractive scattering (first side, i.e. XB)
21421           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
21422  
21423         ELSEIF(ISUB.EQ.93) THEN
21424 C...Single diffractive scattering (second side, i.e. AX)
21425           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
21426  
21427         ELSEIF(ISUB.EQ.94) THEN
21428 C...Double diffractive scattering
21429           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
21430  
21431         ELSEIF(ISUB.EQ.95) THEN
21432 C...Low-pT scattering
21433           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
21434  
21435         ELSEIF(ISUB.EQ.96) THEN
21436 C...Multiple interactions: sum of QCD processes
21437           CALL PYWIDT(21,SH,WDTP,WDTE)
21438  
21439 C...q + q' -> q + q'
21440           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
21441           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
21442      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
21443           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
21444           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
21445           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
21446           DO 340 I=-5,5
21447             IF(I.EQ.0) GOTO 340
21448             DO 330 J=-5,5
21449               IF(J.EQ.0) GOTO 330
21450               NCHN=NCHN+1
21451               ISIG(NCHN,1)=I
21452               ISIG(NCHN,2)=J
21453               ISIG(NCHN,3)=111
21454               SIGH(NCHN)=FACQQ1
21455               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
21456               IF(I.EQ.J) THEN
21457                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
21458                 NCHN=NCHN+1
21459                 ISIG(NCHN,1)=I
21460                 ISIG(NCHN,2)=J
21461                 ISIG(NCHN,3)=112
21462                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
21463               ENDIF
21464   330       CONTINUE
21465   340     CONTINUE
21466  
21467 C...q + qbar -> q' + qbar' or g + g
21468           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
21469      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
21470           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21471      &    UH2/SH2)
21472           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21473      &    TH2/SH2)
21474           DO 350 I=-5,5
21475             IF(I.EQ.0) GOTO 350
21476             NCHN=NCHN+1
21477             ISIG(NCHN,1)=I
21478             ISIG(NCHN,2)=-I
21479             ISIG(NCHN,3)=121
21480             SIGH(NCHN)=FACQQB
21481             NCHN=NCHN+1
21482             ISIG(NCHN,1)=I
21483             ISIG(NCHN,2)=-I
21484             ISIG(NCHN,3)=131
21485             SIGH(NCHN)=0.5D0*FACGG1
21486             NCHN=NCHN+1
21487             ISIG(NCHN,1)=I
21488             ISIG(NCHN,2)=-I
21489             ISIG(NCHN,3)=132
21490             SIGH(NCHN)=0.5D0*FACGG2
21491   350     CONTINUE
21492  
21493 C...q + g -> q + g
21494           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
21495      &    UH/SH)*FACA
21496           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
21497      &    SH/UH)
21498           DO 370 I=-5,5
21499             IF(I.EQ.0) GOTO 370
21500             DO 360 ISDE=1,2
21501               NCHN=NCHN+1
21502               ISIG(NCHN,ISDE)=I
21503               ISIG(NCHN,3-ISDE)=21
21504               ISIG(NCHN,3)=281
21505               SIGH(NCHN)=FACQG1
21506               NCHN=NCHN+1
21507               ISIG(NCHN,ISDE)=I
21508               ISIG(NCHN,3-ISDE)=21
21509               ISIG(NCHN,3)=282
21510               SIGH(NCHN)=FACQG2
21511   360       CONTINUE
21512   370     CONTINUE
21513  
21514 C...g + g -> q + qbar (only d, u, s)
21515           IDC0=MDCY(21,2)-1
21516           FLAVWT=0D0
21517           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
21518      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
21519           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
21520      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
21521           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
21522      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
21523           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21524      &    UH2/SH2)*FLAVWT*FACA
21525           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21526      &    TH2/SH2)*FLAVWT*FACA
21527           NCHN=NCHN+1
21528           ISIG(NCHN,1)=21
21529           ISIG(NCHN,2)=21
21530           ISIG(NCHN,3)=531
21531           SIGH(NCHN)=FACQQ1
21532           NCHN=NCHN+1
21533           ISIG(NCHN,1)=21
21534           ISIG(NCHN,2)=21
21535           ISIG(NCHN,3)=532
21536           SIGH(NCHN)=FACQQ2
21537  
21538 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
21539 C...cos(theta-hat)
21540           DO 380 IFL=4,5
21541           SQMAVG=PMAS(IFL,1)**2
21542           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
21543             BE34=SQRT(1D0-4D0*SQMAVG/SH)
21544             THQ=-0.5D0*SH*(1D0-BE34*CTH)
21545             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21546             THUHQ=THQ*UHQ-SQMAVG*SH
21547             IF(MSTP(34).EQ.0) THEN
21548               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21549               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21550             ELSE
21551               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21552      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21553               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21554      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21555             ENDIF
21556             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
21557             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
21558             NCHN=NCHN+1
21559             ISIG(NCHN,1)=21
21560             ISIG(NCHN,2)=21
21561             ISIG(NCHN,3)=531+2*(IFL-3)
21562             SIGH(NCHN)=FACQQ1
21563             NCHN=NCHN+1
21564             ISIG(NCHN,1)=21
21565             ISIG(NCHN,2)=21
21566             ISIG(NCHN,3)=532+2*(IFL-3)
21567             SIGH(NCHN)=FACQQ2
21568           ENDIF
21569   380     CONTINUE
21570  
21571 C...g + g -> g + g
21572           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
21573      &    2D0*TH/SH+TH2/SH2)*FACA
21574           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
21575      &    2D0*SH/UH+SH2/UH2)*FACA
21576           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
21577      &    2D0*UH/TH+UH2/TH2)
21578           NCHN=NCHN+1
21579           ISIG(NCHN,1)=21
21580           ISIG(NCHN,2)=21
21581           ISIG(NCHN,3)=681
21582           SIGH(NCHN)=0.5D0*FACGG1
21583           NCHN=NCHN+1
21584           ISIG(NCHN,1)=21
21585           ISIG(NCHN,2)=21
21586           ISIG(NCHN,3)=682
21587           SIGH(NCHN)=0.5D0*FACGG2
21588           NCHN=NCHN+1
21589           ISIG(NCHN,1)=21
21590           ISIG(NCHN,2)=21
21591           ISIG(NCHN,3)=683
21592           SIGH(NCHN)=0.5D0*FACGG3
21593  
21594         ELSEIF(ISUB.EQ.99) THEN
21595 C...f + gamma* -> f.
21596           IF(MINT(107).EQ.4) THEN
21597             Q2GA=VINT(307)
21598             P2GA=VINT(308)
21599             ISDE=2
21600           ELSE
21601             Q2GA=VINT(308)
21602             P2GA=VINT(307)
21603             ISDE=1
21604           ENDIF
21605           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
21606           PM2RHO=PMAS(PYCOMP(113),1)**2
21607           IF(MSTP(19).EQ.0) THEN
21608             COMFAC=COMFAC/Q2GA
21609           ELSEIF(MSTP(19).EQ.1) THEN
21610             COMFAC=COMFAC/(Q2GA+PM2RHO)
21611           ELSEIF(MSTP(19).EQ.2) THEN
21612             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
21613           ELSE
21614             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
21615             W2GA=VINT(2)
21616             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
21617               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
21618      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
21619               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
21620             ELSE
21621               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
21622      &        Q2GA**0.57D0)
21623               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
21624             ENDIF
21625             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
21626             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
21627           ENDIF
21628           DO 390 I=MMINA,MMAXA
21629             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
21630             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
21631             EI=KCHG(IABS(I),1)/3D0
21632             NCHN=NCHN+1
21633             ISIG(NCHN,ISDE)=I
21634             ISIG(NCHN,3-ISDE)=22
21635             ISIG(NCHN,3)=1
21636             SIGH(NCHN)=COMFAC*EI**2
21637   390     CONTINUE
21638         ENDIF
21639  
21640       ELSE
21641         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
21642 C...g + g -> gamma + gamma or g + g -> g + gamma
21643           A0STUR=0D0
21644           A0STUI=0D0
21645           A0TSUR=0D0
21646           A0TSUI=0D0
21647           A0UTSR=0D0
21648           A0UTSI=0D0
21649           A1STUR=0D0
21650           A1STUI=0D0
21651           A2STUR=0D0
21652           A2STUI=0D0
21653           ALST=LOG(-SH/TH)
21654           ALSU=LOG(-SH/UH)
21655           ALTU=LOG(TH/UH)
21656           IMAX=2*MSTP(1)
21657           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
21658           DO 400 I=1,IMAX
21659             EI=KCHG(IABS(I),1)/3D0
21660             EIWT=EI**2
21661             IF(ISUB.EQ.115) EIWT=EI
21662             SQMQ=PMAS(I,1)**2
21663             EPSS=4D0*SQMQ/SH
21664             EPST=4D0*SQMQ/TH
21665             EPSU=4D0*SQMQ/UH
21666             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
21667               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
21668      &        PARU(1)**2)
21669               B0STUI=0D0
21670               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
21671               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
21672               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
21673               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
21674               B1STUR=-1D0
21675               B1STUI=0D0
21676               B2STUR=-1D0
21677               B2STUI=0D0
21678             ELSE
21679               CALL PYWAUX(1,EPSS,W1SR,W1SI)
21680               CALL PYWAUX(1,EPST,W1TR,W1TI)
21681               CALL PYWAUX(1,EPSU,W1UR,W1UI)
21682               CALL PYWAUX(2,EPSS,W2SR,W2SI)
21683               CALL PYWAUX(2,EPST,W2TR,W2TI)
21684               CALL PYWAUX(2,EPSU,W2UR,W2UI)
21685               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
21686               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
21687               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
21688               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
21689               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
21690               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
21691               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
21692      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
21693      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
21694      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
21695      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
21696      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
21697               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
21698      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
21699      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
21700      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
21701      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
21702      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
21703               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
21704      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
21705      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
21706      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
21707      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
21708      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
21709               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
21710      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
21711      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
21712      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
21713      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
21714      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
21715               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
21716      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
21717      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
21718      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
21719      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
21720      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
21721               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
21722      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
21723      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
21724      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
21725      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
21726      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
21727               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
21728      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
21729      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
21730      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
21731               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
21732      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
21733      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
21734      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
21735               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
21736      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
21737      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
21738               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
21739      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
21740      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
21741             ENDIF
21742             A0STUR=A0STUR+EIWT*B0STUR
21743             A0STUI=A0STUI+EIWT*B0STUI
21744             A0TSUR=A0TSUR+EIWT*B0TSUR
21745             A0TSUI=A0TSUI+EIWT*B0TSUI
21746             A0UTSR=A0UTSR+EIWT*B0UTSR
21747             A0UTSI=A0UTSI+EIWT*B0UTSI
21748             A1STUR=A1STUR+EIWT*B1STUR
21749             A1STUI=A1STUI+EIWT*B1STUI
21750             A2STUR=A2STUR+EIWT*B2STUR
21751             A2STUI=A2STUI+EIWT*B2STUI
21752   400     CONTINUE
21753           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
21754      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
21755           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
21756           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
21757           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
21758           NCHN=NCHN+1
21759           ISIG(NCHN,1)=21
21760           ISIG(NCHN,2)=21
21761           ISIG(NCHN,3)=1
21762           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
21763           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
21764   410     CONTINUE
21765  
21766         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
21767 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
21768           PH=0D0
21769           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21770      &    PH=VINT(3)**2
21771           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21772      &    PH=VINT(4)**2
21773           IF(ISUB.EQ.131) THEN
21774             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
21775      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
21776           ELSE
21777             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
21778           ENDIF
21779           DO 430 I=MMINA,MMAXA
21780             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
21781             EI=KCHG(IABS(I),1)/3D0
21782             FACGQ=FGQ*EI**2
21783             DO 420 ISDE=1,2
21784               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
21785               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
21786               NCHN=NCHN+1
21787               ISIG(NCHN,ISDE)=I
21788               ISIG(NCHN,3-ISDE)=22
21789               ISIG(NCHN,3)=1
21790               SIGH(NCHN)=FACGQ
21791   420       CONTINUE
21792   430     CONTINUE
21793  
21794         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
21795 C...f + gamma*_(T,L) -> f + gamma
21796           PH=0D0
21797           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21798      &    PH=VINT(3)**2
21799           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21800      &    PH=VINT(4)**2
21801           IF(ISUB.EQ.133) THEN
21802             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
21803      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
21804           ELSE
21805             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
21806           ENDIF
21807           DO 450 I=MMINA,MMAXA
21808             IF(I.EQ.0) GOTO 450
21809             EI=KCHG(IABS(I),1)/3D0
21810             FACGQ=FGQ*EI**4
21811             DO 440 ISDE=1,2
21812               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
21813               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
21814               NCHN=NCHN+1
21815               ISIG(NCHN,ISDE)=I
21816               ISIG(NCHN,3-ISDE)=22
21817               ISIG(NCHN,3)=1
21818               SIGH(NCHN)=FACGQ
21819   440       CONTINUE
21820   450     CONTINUE
21821  
21822         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
21823 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
21824           PH=0D0
21825           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21826      &    PH=VINT(3)**2
21827           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21828      &    PH=VINT(4)**2
21829           CALL PYWIDT(21,SH,WDTP,WDTE)
21830           WDTESU=0D0
21831           DO 460 I=1,MIN(8,MDCY(21,3))
21832             EF=KCHG(I,1)/3D0
21833             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21834      &      WDTE(I,4))
21835   460     CONTINUE
21836           IF(ISUB.EQ.135) THEN
21837             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
21838      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
21839           ELSE
21840             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
21841           ENDIF
21842           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
21843             NCHN=NCHN+1
21844             ISIG(NCHN,1)=21
21845             ISIG(NCHN,2)=22
21846             ISIG(NCHN,3)=1
21847             SIGH(NCHN)=FACQQ
21848           ENDIF
21849           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
21850             NCHN=NCHN+1
21851             ISIG(NCHN,1)=22
21852             ISIG(NCHN,2)=21
21853             ISIG(NCHN,3)=1
21854             SIGH(NCHN)=FACQQ
21855           ENDIF
21856  
21857         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
21858 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
21859           PH1=0D0
21860           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
21861           PH2=0D0
21862           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
21863           CALL PYWIDT(22,SH,WDTP,WDTE)
21864           WDTESU=0D0
21865           DO 470 I=1,MIN(12,MDCY(22,3))
21866             IF(I.LE.8) EF= KCHG(I,1)/3D0
21867             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
21868             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21869      &      WDTE(I,4))
21870   470     CONTINUE
21871           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
21872           IF(ISUB.EQ.137) THEN
21873             FPARAM=-SH*(TH+UH)/DLAMB2
21874             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
21875      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
21876      &      2D0*PH1*PH2*FPARAM**2)
21877           ELSEIF(ISUB.EQ.138) THEN
21878             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
21879      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
21880      &      2D0*PH1**2*(TH-UH)**2)
21881           ELSEIF(ISUB.EQ.139) THEN
21882             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
21883      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
21884      &      2D0*PH2**2*(TH-UH)**2)
21885           ELSE
21886             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
21887      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
21888           ENDIF
21889           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
21890             NCHN=NCHN+1
21891             ISIG(NCHN,1)=22
21892             ISIG(NCHN,2)=22
21893             ISIG(NCHN,3)=1
21894             SIGH(NCHN)=FACFF
21895           ENDIF
21896  
21897         ENDIF
21898       ENDIF
21899  
21900       RETURN
21901       END
21902  
21903 C*********************************************************************
21904  
21905 C...PYSGHF
21906 C...Subprocess cross sections for heavy flavour production,
21907 C...open and closed.
21908 C...Auxiliary to PYSIGH.
21909  
21910       SUBROUTINE PYSGHF(NCHN,SIGS)
21911  
21912 C...Double precision and integer declarations
21913       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21914       IMPLICIT INTEGER(I-N)
21915       INTEGER PYK,PYCHGE,PYCOMP
21916 C...Parameter statement to help give large particle numbers.
21917       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
21918      &KEXCIT=4000000,KDIMEN=5000000)
21919 C...Commonblocks
21920       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21921       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21922       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21923       COMMON/PYINT1/MINT(400),VINT(400)
21924       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
21925       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
21926       COMMON/PYINT4/MWID(500),WIDS(500,5)
21927       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
21928      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
21929      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
21930      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
21931       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
21932      &/PYINT4/,/PYSGCM/
21933 C...Local arrays
21934       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
21935  
21936 C...Differential cross section expressions.
21937  
21938       IF(ISUB.LE.100) THEN
21939         IF(ISUB.EQ.81) THEN
21940 C...q + qbar -> Q + Qbar
21941           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
21942           THQ=-0.5D0*SH*(1D0-BE34*CTH)
21943           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21944           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
21945      &    2D0*SQMAVG/SH)
21946           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
21947           WID2=1D0
21948           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
21949           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
21950           FACQQB=FACQQB*WID2
21951           DO 100 I=MMINA,MMAXA
21952             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21953      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
21954             NCHN=NCHN+1
21955             ISIG(NCHN,1)=I
21956             ISIG(NCHN,2)=-I
21957             ISIG(NCHN,3)=1
21958             SIGH(NCHN)=FACQQB
21959   100     CONTINUE
21960  
21961         ELSEIF(ISUB.EQ.82) THEN
21962 C...g + g -> Q + Qbar
21963           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
21964           THQ=-0.5D0*SH*(1D0-BE34*CTH)
21965           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21966           THUHQ=THQ*UHQ-SQMAVG*SH
21967           IF(MSTP(34).EQ.0) THEN
21968             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21969             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21970           ELSE
21971             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21972      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21973             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21974      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21975           ENDIF
21976           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
21977           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
21978           IF(MSTP(35).GE.1) THEN
21979             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
21980             FACQQ1=FACQQ1*FATRE
21981             FACQQ2=FACQQ2*FATRE
21982           ENDIF
21983           WID2=1D0
21984           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
21985           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
21986           FACQQ1=FACQQ1*WID2
21987           FACQQ2=FACQQ2*WID2
21988           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
21989           NCHN=NCHN+1
21990           ISIG(NCHN,1)=21
21991           ISIG(NCHN,2)=21
21992           ISIG(NCHN,3)=1
21993           SIGH(NCHN)=FACQQ1
21994           NCHN=NCHN+1
21995           ISIG(NCHN,1)=21
21996           ISIG(NCHN,2)=21
21997           ISIG(NCHN,3)=2
21998           SIGH(NCHN)=FACQQ2
21999   110     CONTINUE
22000  
22001         ELSEIF(ISUB.EQ.83) THEN
22002 C...f + q -> f' + Q
22003           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
22004           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
22005           DO 130 I=MMIN1,MMAX1
22006             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
22007             DO 120 J=MMIN2,MMAX2
22008               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
22009               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
22010               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
22011               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
22012      &        THEN
22013                 NCHN=NCHN+1
22014                 ISIG(NCHN,1)=I
22015                 ISIG(NCHN,2)=J
22016                 ISIG(NCHN,3)=1
22017                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
22018      &          (IABS(I)+1)/2)*VINT(180+J)
22019                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
22020      &          (MINT(55)+1)/2)*VINT(180+J)
22021                 WID2=1D0
22022                 IF(I.GT.0) THEN
22023                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
22024                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22025      &            WIDS(MINT(55),2)
22026                 ELSE
22027                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
22028                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22029      &            WIDS(MINT(55),3)
22030                 ENDIF
22031                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
22032                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
22033               ENDIF
22034               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
22035      &        THEN
22036                 NCHN=NCHN+1
22037                 ISIG(NCHN,1)=I
22038                 ISIG(NCHN,2)=J
22039                 ISIG(NCHN,3)=2
22040                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
22041      &          (IABS(J)+1)/2)*VINT(180+I)
22042                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
22043      &          (MINT(55)+1)/2)*VINT(180+I)
22044                 IF(J.GT.0) THEN
22045                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
22046                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22047      &            WIDS(MINT(55),2)
22048                 ELSE
22049                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
22050                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22051      &            WIDS(MINT(55),3)
22052                 ENDIF
22053                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
22054                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
22055               ENDIF
22056   120       CONTINUE
22057   130     CONTINUE
22058  
22059         ELSEIF(ISUB.EQ.84) THEN
22060 C...g + gamma -> Q + Qbar
22061           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22062           THQ=-0.5D0*SH*(1D0-BE34*CTH)
22063           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
22064           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
22065      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
22066      &    (THQ*UHQ)
22067           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
22068           WID2=1D0
22069           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
22070           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
22071           FACQQ=FACQQ*WID2
22072           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
22073             NCHN=NCHN+1
22074             ISIG(NCHN,1)=21
22075             ISIG(NCHN,2)=22
22076             ISIG(NCHN,3)=1
22077             SIGH(NCHN)=FACQQ
22078           ENDIF
22079           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
22080             NCHN=NCHN+1
22081             ISIG(NCHN,1)=22
22082             ISIG(NCHN,2)=21
22083             ISIG(NCHN,3)=1
22084             SIGH(NCHN)=FACQQ
22085           ENDIF
22086  
22087         ELSEIF(ISUB.EQ.85) THEN
22088 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
22089           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22090           THQ=-0.5D0*SH*(1D0-BE34*CTH)
22091           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
22092           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
22093      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
22094      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
22095      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
22096           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
22097           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
22098      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
22099           WID2=1D0
22100           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
22101           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
22102           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
22103           FACFF=FACFF*WID2
22104           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
22105             NCHN=NCHN+1
22106             ISIG(NCHN,1)=22
22107             ISIG(NCHN,2)=22
22108             ISIG(NCHN,3)=1
22109             SIGH(NCHN)=FACFF
22110           ENDIF
22111  
22112         ELSEIF(ISUB.EQ.86) THEN
22113 C...g + g -> J/Psi + g
22114           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
22115      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22116      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22117           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22118             NCHN=NCHN+1
22119             ISIG(NCHN,1)=21
22120             ISIG(NCHN,2)=21
22121             ISIG(NCHN,3)=1
22122             SIGH(NCHN)=FACQQG
22123           ENDIF
22124  
22125         ELSEIF(ISUB.EQ.87) THEN
22126 C...g + g -> chi_0c + g
22127           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22128           QGTW=(SH*TH*UH)/SH**3
22129           RGTW=SQM3/SH
22130           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22131      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
22132      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
22133      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
22134      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
22135      &    (QGTW*(QGTW-RGTW*PGTW)**4)
22136           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22137             NCHN=NCHN+1
22138             ISIG(NCHN,1)=21
22139             ISIG(NCHN,2)=21
22140             ISIG(NCHN,3)=1
22141             SIGH(NCHN)=FACQQG
22142           ENDIF
22143  
22144         ELSEIF(ISUB.EQ.88) THEN
22145 C...g + g -> chi_1c + g
22146           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22147           QGTW=(SH*TH*UH)/SH**3
22148           RGTW=SQM3/SH
22149           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22150      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
22151      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
22152      &    (QGTW-RGTW*PGTW)**4
22153           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22154             NCHN=NCHN+1
22155             ISIG(NCHN,1)=21
22156             ISIG(NCHN,2)=21
22157             ISIG(NCHN,3)=1
22158             SIGH(NCHN)=FACQQG
22159           ENDIF
22160  
22161         ELSEIF(ISUB.EQ.89) THEN
22162 C...g + g -> chi_2c + g
22163           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22164           QGTW=(SH*TH*UH)/SH**3
22165           RGTW=SQM3/SH
22166           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22167      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
22168      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
22169      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
22170      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
22171      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
22172           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22173             NCHN=NCHN+1
22174             ISIG(NCHN,1)=21
22175             ISIG(NCHN,2)=21
22176             ISIG(NCHN,3)=1
22177             SIGH(NCHN)=FACQQG
22178           ENDIF
22179         ENDIF
22180  
22181       ELSEIF(ISUB.LE.200) THEN
22182         IF(ISUB.EQ.104) THEN
22183 C...g + g -> chi_c0.
22184           KC=PYCOMP(10441)
22185           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
22186      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
22187           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
22188           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22189             NCHN=NCHN+1
22190             ISIG(NCHN,1)=21
22191             ISIG(NCHN,2)=21
22192             ISIG(NCHN,3)=1
22193             SIGH(NCHN)=FACBW
22194           ENDIF
22195  
22196         ELSEIF(ISUB.EQ.105) THEN
22197 C...g + g -> chi_c2.
22198           KC=PYCOMP(445)
22199           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
22200      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
22201           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
22202           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22203             NCHN=NCHN+1
22204             ISIG(NCHN,1)=21
22205             ISIG(NCHN,2)=21
22206             ISIG(NCHN,3)=1
22207             SIGH(NCHN)=FACBW
22208           ENDIF
22209  
22210         ELSEIF(ISUB.EQ.106) THEN
22211 C...g + g -> J/Psi + gamma.
22212           EQ=2D0/3D0
22213           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
22214      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22215      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22216           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22217             NCHN=NCHN+1
22218             ISIG(NCHN,1)=21
22219             ISIG(NCHN,2)=21
22220             ISIG(NCHN,3)=1
22221             SIGH(NCHN)=FACQQG
22222           ENDIF
22223  
22224         ELSEIF(ISUB.EQ.107) THEN
22225 C...g + gamma -> J/Psi + g.
22226           EQ=2D0/3D0
22227           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
22228      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22229      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22230           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
22231             NCHN=NCHN+1
22232             ISIG(NCHN,1)=21
22233             ISIG(NCHN,2)=22
22234             ISIG(NCHN,3)=1
22235             SIGH(NCHN)=FACQQG
22236           ENDIF
22237           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
22238             NCHN=NCHN+1
22239             ISIG(NCHN,1)=22
22240             ISIG(NCHN,2)=21
22241             ISIG(NCHN,3)=1
22242             SIGH(NCHN)=FACQQG
22243           ENDIF
22244  
22245         ELSEIF(ISUB.EQ.108) THEN
22246 C...gamma + gamma -> J/Psi + gamma.
22247           EQ=2D0/3D0
22248           FACQQG=COMFAC*AEM**3*EQ**6*384D0*PARP(38)*SQRT(SQM3)*
22249      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22250      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22251           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
22252             NCHN=NCHN+1
22253             ISIG(NCHN,1)=22
22254             ISIG(NCHN,2)=22
22255             ISIG(NCHN,3)=1
22256             SIGH(NCHN)=FACQQG
22257           ENDIF
22258         ENDIF
22259       ENDIF
22260  
22261       RETURN
22262       END
22263  
22264 C*********************************************************************
22265  
22266 C...PYSGWZ
22267 C...Subprocess cross sections for W/Z processes,
22268 C...except that longitudinal WW scattering is in Higgs sector.
22269 C...Auxiliary to PYSIGH.
22270  
22271       SUBROUTINE PYSGWZ(NCHN,SIGS)
22272  
22273 C...Double precision and integer declarations
22274       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22275       IMPLICIT INTEGER(I-N)
22276       INTEGER PYK,PYCHGE,PYCOMP
22277 C...Parameter statement to help give large particle numbers.
22278       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
22279      &KEXCIT=4000000,KDIMEN=5000000)
22280 C...Commonblocks
22281       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22282       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22283       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
22284       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
22285       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22286       COMMON/PYINT1/MINT(400),VINT(400)
22287       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
22288       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
22289       COMMON/PYINT4/MWID(500),WIDS(500,5)
22290       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
22291       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
22292      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
22293      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
22294      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
22295       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
22296      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
22297 C...Local arrays and complex numbers
22298       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
22299      &HL4(3),HR4(3)
22300       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
22301  
22302 C...Differential cross section expressions.
22303  
22304       IF(ISUB.LE.20) THEN
22305         IF(ISUB.EQ.1) THEN
22306 C...f + fbar -> gamma*/Z0
22307           MINT(61)=2
22308           CALL PYWIDT(23,SH,WDTP,WDTE)
22309           HS=SHR*WDTP(0)
22310           FACZ=4D0*COMFAC*3D0
22311           HP0=AEM/3D0*SH
22312           HP1=AEM/3D0*XWC*SH
22313           DO 100 I=MMINA,MMAXA
22314             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
22315             EI=KCHG(IABS(I),1)/3D0
22316             AI=SIGN(1D0,EI)
22317             VI=AI-4D0*EI*XWV
22318             HI0=HP0
22319             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
22320             HI1=HP1
22321             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
22322             NCHN=NCHN+1
22323             ISIG(NCHN,1)=I
22324             ISIG(NCHN,2)=-I
22325             ISIG(NCHN,3)=1
22326             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
22327      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
22328      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
22329      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
22330   100     CONTINUE
22331  
22332         ELSEIF(ISUB.EQ.2) THEN
22333 C...f + fbar' -> W+/-
22334           CALL PYWIDT(24,SH,WDTP,WDTE)
22335           HS=SHR*WDTP(0)
22336           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
22337           HP=AEM/(24D0*XW)*SH
22338           DO 120 I=MMIN1,MMAX1
22339             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
22340             IA=IABS(I)
22341             DO 110 J=MMIN2,MMAX2
22342               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
22343               JA=IABS(J)
22344               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
22345               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22346      &        GOTO 110
22347               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22348               HI=HP*2D0
22349               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
22350               NCHN=NCHN+1
22351               ISIG(NCHN,1)=I
22352               ISIG(NCHN,2)=J
22353               ISIG(NCHN,3)=1
22354               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
22355               SIGH(NCHN)=HI*FACBW*HF
22356   110       CONTINUE
22357   120     CONTINUE
22358  
22359         ELSEIF(ISUB.EQ.15) THEN
22360 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
22361           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22362 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22363           HFGG=0D0
22364           HFGZ=0D0
22365           HFZZ=0D0
22366           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22367           DO 130 I=1,MIN(16,MDCY(23,3))
22368             IDC=I+MDCY(23,2)-1
22369             IF(MDME(IDC,1).LT.0) GOTO 130
22370             IMDM=0
22371             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22372      &      IMDM=1
22373             IF(I.LE.8) THEN
22374               EF=KCHG(I,1)/3D0
22375               AF=SIGN(1D0,EF+0.1D0)
22376               VF=AF-4D0*EF*XWV
22377             ELSEIF(I.LE.16) THEN
22378               EF=KCHG(I+2,1)/3D0
22379               AF=SIGN(1D0,EF+0.1D0)
22380               VF=AF-4D0*EF*XWV
22381             ENDIF
22382             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22383             IF(4D0*RM1.LT.1D0) THEN
22384               FCOF=1D0
22385               IF(I.LE.8) FCOF=3D0*RADC4
22386               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22387               IF(IMDM.EQ.1) THEN
22388                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22389                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22390                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22391      &          AF**2*(1D0-4D0*RM1))*BE34
22392               ENDIF
22393             ENDIF
22394   130     CONTINUE
22395 C...Propagators: as simulated in PYOFSH and as desired
22396           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22397           MINT15=MINT(15)
22398           MINT(15)=1
22399           MINT(61)=1
22400           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22401           MINT(15)=MINT15
22402           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22403           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22404           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22405           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22406 C...Loop over flavours; consider full gamma/Z structure
22407           DO 140 I=MMINA,MMAXA
22408             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
22409      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
22410             EI=KCHG(IABS(I),1)/3D0
22411             AI=SIGN(1D0,EI)
22412             VI=AI-4D0*EI*XWV
22413             NCHN=NCHN+1
22414             ISIG(NCHN,1)=I
22415             ISIG(NCHN,2)=-I
22416             ISIG(NCHN,3)=1
22417             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
22418      &      (VI**2+AI**2)*HFZZ)/HBW4
22419   140     CONTINUE
22420  
22421         ELSEIF(ISUB.EQ.16) THEN
22422 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
22423           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22424 C...Propagators: as simulated in PYOFSH and as desired
22425           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22426           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22427           GMMWC=SQRT(SQM4)*WDTP(0)
22428           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22429           FACWG=FACWG*HBW4C/HBW4
22430           DO 160 I=MMIN1,MMAX1
22431             IA=IABS(I)
22432             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
22433             DO 150 J=MMIN2,MMAX2
22434               JA=IABS(J)
22435               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
22436               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
22437               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22438               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22439               FCKM=VCKM((IA+1)/2,(JA+1)/2)
22440               NCHN=NCHN+1
22441               ISIG(NCHN,1)=I
22442               ISIG(NCHN,2)=J
22443               ISIG(NCHN,3)=1
22444               SIGH(NCHN)=FACWG*FCKM*WIDSC
22445   150       CONTINUE
22446   160     CONTINUE
22447  
22448         ELSEIF(ISUB.EQ.19) THEN
22449 C...f + fbar -> gamma + (gamma*/Z0)
22450           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22451 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22452           HFGG=0D0
22453           HFGZ=0D0
22454           HFZZ=0D0
22455           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22456           DO 170 I=1,MIN(16,MDCY(23,3))
22457             IDC=I+MDCY(23,2)-1
22458             IF(MDME(IDC,1).LT.0) GOTO 170
22459             IMDM=0
22460             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22461      &      IMDM=1
22462             IF(I.LE.8) THEN
22463               EF=KCHG(I,1)/3D0
22464               AF=SIGN(1D0,EF+0.1D0)
22465               VF=AF-4D0*EF*XWV
22466             ELSEIF(I.LE.16) THEN
22467               EF=KCHG(I+2,1)/3D0
22468               AF=SIGN(1D0,EF+0.1D0)
22469               VF=AF-4D0*EF*XWV
22470             ENDIF
22471             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22472             IF(4D0*RM1.LT.1D0) THEN
22473               FCOF=1D0
22474               IF(I.LE.8) FCOF=3D0*RADC4
22475               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22476               IF(IMDM.EQ.1) THEN
22477                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22478                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22479                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22480      &          AF**2*(1D0-4D0*RM1))*BE34
22481               ENDIF
22482             ENDIF
22483   170     CONTINUE
22484 C...Propagators: as simulated in PYOFSH and as desired
22485           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22486           MINT15=MINT(15)
22487           MINT(15)=1
22488           MINT(61)=1
22489           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22490           MINT(15)=MINT15
22491           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22492           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22493           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22494           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22495 C...Loop over flavours; consider full gamma/Z structure
22496           DO 180 I=MMINA,MMAXA
22497             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
22498             EI=KCHG(IABS(I),1)/3D0
22499             AI=SIGN(1D0,EI)
22500             VI=AI-4D0*EI*XWV
22501             FCOI=1D0
22502             IF(IABS(I).LE.10) FCOI=FACA/3D0
22503             NCHN=NCHN+1
22504             ISIG(NCHN,1)=I
22505             ISIG(NCHN,2)=-I
22506             ISIG(NCHN,3)=1
22507             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
22508      &      (VI**2+AI**2)*HFZZ)/HBW4
22509   180     CONTINUE
22510  
22511         ELSEIF(ISUB.EQ.20) THEN
22512 C...f + fbar' -> gamma + W+/-
22513           FACGW=COMFAC*0.5D0*AEM**2/XW
22514 C...Propagators: as simulated in PYOFSH and as desired
22515           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22516           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22517           GMMWC=SQRT(SQM4)*WDTP(0)
22518           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22519           FACGW=FACGW*HBW4C/HBW4
22520 C...Anomalous couplings
22521           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22522           TERM2=0D0
22523           TERM3=0D0
22524           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
22525             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
22526             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
22527      &      (4D0*SQMW))/(TH+UH)**2
22528           ENDIF
22529           DO 200 I=MMIN1,MMAX1
22530             IA=IABS(I)
22531             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
22532             DO 190 J=MMIN2,MMAX2
22533               JA=IABS(J)
22534               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
22535               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
22536               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22537      &        GOTO 190
22538               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22539               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22540               IF(IA.LE.10) THEN
22541                 FACWR=UH/(TH+UH)-1D0/3D0
22542                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
22543                 FCOI=FACA/3D0
22544               ELSE
22545                 FACWR=-TH/(TH+UH)
22546                 FCKM=1D0
22547                 FCOI=1D0
22548               ENDIF
22549               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
22550               NCHN=NCHN+1
22551               ISIG(NCHN,1)=I
22552               ISIG(NCHN,2)=J
22553               ISIG(NCHN,3)=1
22554               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
22555   190       CONTINUE
22556   200     CONTINUE
22557         ENDIF
22558  
22559       ELSEIF(ISUB.LE.40) THEN
22560         IF(ISUB.EQ.22) THEN
22561 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
22562 C...Kinematics dependence
22563           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
22564      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
22565 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22566           DO 220 I=1,6
22567             DO 210 J=1,3
22568               HGZ(I,J)=0D0
22569   210       CONTINUE
22570   220     CONTINUE
22571           RADC3=1D0+PYALPS(SQM3)/PARU(1)
22572           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22573           DO 230 I=1,MIN(16,MDCY(23,3))
22574             IDC=I+MDCY(23,2)-1
22575             IF(MDME(IDC,1).LT.0) GOTO 230
22576             IMDM=0
22577             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
22578             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
22579             IF(I.LE.8) THEN
22580               EF=KCHG(I,1)/3D0
22581               AF=SIGN(1D0,EF+0.1D0)
22582               VF=AF-4D0*EF*XWV
22583             ELSEIF(I.LE.16) THEN
22584               EF=KCHG(I+2,1)/3D0
22585               AF=SIGN(1D0,EF+0.1D0)
22586               VF=AF-4D0*EF*XWV
22587             ENDIF
22588             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
22589             IF(4D0*RM1.LT.1D0) THEN
22590               FCOF=1D0
22591               IF(I.LE.8) FCOF=3D0*RADC3
22592               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22593               IF(IMDM.GE.1) THEN
22594                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22595                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22596                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
22597      &          AF**2*(1D0-4D0*RM1))*BE34
22598               ENDIF
22599             ENDIF
22600             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22601             IF(4D0*RM1.LT.1D0) THEN
22602               FCOF=1D0
22603               IF(I.LE.8) FCOF=3D0*RADC4
22604               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22605               IF(IMDM.GE.1) THEN
22606                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22607                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22608                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
22609      &          AF**2*(1D0-4D0*RM1))*BE34
22610               ENDIF
22611             ENDIF
22612   230     CONTINUE
22613 C...Propagators: as simulated in PYOFSH and as desired
22614           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
22615           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22616           MINT15=MINT(15)
22617           MINT(15)=1
22618           MINT(61)=1
22619           CALL PYWIDT(23,SQM3,WDTP,WDTE)
22620           MINT(15)=MINT15
22621           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22622           DO 240 J=1,3
22623             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
22624             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
22625             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
22626   240     CONTINUE
22627           MINT15=MINT(15)
22628           MINT(15)=1
22629           MINT(61)=1
22630           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22631           MINT(15)=MINT15
22632           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22633           DO 250 J=1,3
22634             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
22635             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
22636             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
22637   250     CONTINUE
22638 C...Loop over flavours; separate left- and right-handed couplings
22639           DO 270 I=MMINA,MMAXA
22640             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
22641             EI=KCHG(IABS(I),1)/3D0
22642             AI=SIGN(1D0,EI)
22643             VI=AI-4D0*EI*XWV
22644             VALI=VI-AI
22645             VARI=VI+AI
22646             FCOI=1D0
22647             IF(IABS(I).LE.10) FCOI=FACA/3D0
22648             DO 260 J=1,3
22649               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
22650               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
22651               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
22652               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
22653   260       CONTINUE
22654             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
22655      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
22656      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
22657      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
22658             NCHN=NCHN+1
22659             ISIG(NCHN,1)=I
22660             ISIG(NCHN,2)=-I
22661             ISIG(NCHN,3)=1
22662             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
22663   270     CONTINUE
22664  
22665         ELSEIF(ISUB.EQ.23) THEN
22666 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
22667           FACZW=COMFAC*0.5D0*(AEM/XW)**2
22668           FACZW=FACZW*WIDS(23,2)
22669           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
22670           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
22671           DO 290 I=MMIN1,MMAX1
22672             IA=IABS(I)
22673             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
22674             DO 280 J=MMIN2,MMAX2
22675               JA=IABS(J)
22676               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
22677               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
22678               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22679      &        GOTO 280
22680               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22681               EI=KCHG(IA,1)/3D0
22682               AI=SIGN(1D0,EI+0.1D0)
22683               VI=AI-4D0*EI*XWV
22684               EJ=KCHG(JA,1)/3D0
22685               AJ=SIGN(1D0,EJ+0.1D0)
22686               VJ=AJ-4D0*EJ*XWV
22687               IF(VI+AI.GT.0) THEN
22688                 VISAV=VI
22689                 AISAV=AI
22690                 VI=VJ
22691                 AI=AJ
22692                 VJ=VISAV
22693                 AJ=AISAV
22694               ENDIF
22695               FCKM=1D0
22696               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
22697               FCOI=1D0
22698               IF(IA.LE.10) FCOI=FACA/3D0
22699               NCHN=NCHN+1
22700               ISIG(NCHN,1)=I
22701               ISIG(NCHN,2)=J
22702               ISIG(NCHN,3)=1
22703               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
22704      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
22705      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
22706      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
22707      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
22708      &        WIDS(24,(5-KCHW)/2)
22709 C***Protect against slightly negative cross sections. (Reason yet to be
22710 C***sorted out. One possibility: addition of width to the W propagator.)
22711               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
22712   280       CONTINUE
22713   290     CONTINUE
22714  
22715         ELSEIF(ISUB.EQ.25) THEN
22716 C...f + fbar -> W+ + W-
22717 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
22718           GMMZC=GMMZ
22719           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
22720           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
22721           CALL PYWIDT(24,SQM3,WDTP,WDTE)
22722           GMMW3=SQRT(SQM3)*WDTP(0)
22723           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
22724           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22725           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22726           GMMW4=SQRT(SQM4)*WDTP(0)
22727           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
22728 C...Kinematical functions
22729           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
22730           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
22731           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
22732           GT=THUH34+4D0*THUH/TH2
22733           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
22734           GU=THUH34+4D0*THUH/UH2
22735           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
22736 C...Common factors and couplings
22737           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
22738           FACWW=FACWW*WIDS(24,1)
22739           CGG=AEM**2/2D0
22740           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
22741           CZZ=AEM**2/(32D0*XW**2)*HBWZC
22742           CNG=AEM**2/(4D0*XW)
22743           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
22744           CNN=AEM**2/(16D0*XW**2)
22745 C...Coulomb factor for W+W- pair
22746           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
22747             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
22748             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
22749             IF(COULE.LT.100D0*PMAS(24,2)) THEN
22750               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
22751      &        PMAS(24,2)**2)-COULE))
22752             ELSE
22753               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
22754             ENDIF
22755             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
22756               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
22757      &        PMAS(24,2)**2)+COULE))
22758             ELSE
22759               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
22760      &        ABS(COULE)))
22761             ENDIF
22762             IF(MSTP(40).EQ.1) THEN
22763               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
22764      &        MAX(1D-10,2D0*COULP*COULP1))
22765               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
22766             ELSEIF(MSTP(40).EQ.2) THEN
22767               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
22768               COULCP=DCMPLX(0D0,DBLE(COULP))
22769               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
22770               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
22771      &        (4D0*COULCP)*LOG(COULCD)
22772               COULCS=DCMPLX(0D0,0D0)
22773               NSTP=100
22774               DO 300 ISTP=1,NSTP
22775                 COULXX=(ISTP-0.5)/NSTP
22776                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
22777      &          (1D0+COULXX/COULCD))
22778   300         CONTINUE
22779               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
22780      &        (COULCS/NSTP)
22781               FACCOU=ABS(COULCR)**2
22782             ELSEIF(MSTP(40).EQ.3) THEN
22783               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
22784      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
22785               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
22786             ENDIF
22787           ELSEIF(MSTP(40).EQ.4) THEN
22788             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
22789           ELSE
22790             FACCOU=1D0
22791           ENDIF
22792           VINT(95)=FACCOU
22793           FACWW=FACWW*FACCOU
22794 C...Loop over allowed flavours
22795           DO 310 I=MMINA,MMAXA
22796             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
22797             EI=KCHG(IABS(I),1)/3D0
22798             AI=SIGN(1D0,EI+0.1D0)
22799             VI=AI-4D0*EI*XWV
22800             FCOI=1D0
22801             IF(IABS(I).LE.10) FCOI=FACA/3D0
22802             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
22803               IF(AI.LT.0D0) THEN
22804                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
22805      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
22806               ELSE
22807                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
22808      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
22809               ENDIF
22810             ELSE
22811               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22812               BET=SQRT(1D0-4D0*XMW02/SH)
22813               GAT=1D0/SQRT(1D0-BET**2)
22814               STHE2=1D0-CTH**2
22815               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
22816               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
22817      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
22818               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
22819      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
22820      &        (1D0-2D0*BET*CTH+BET**2))
22821               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
22822               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
22823               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
22824               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
22825               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
22826               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
22827               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
22828               DSIGWW=ATOT
22829             ENDIF
22830             NCHN=NCHN+1
22831             ISIG(NCHN,1)=I
22832             ISIG(NCHN,2)=-I
22833             ISIG(NCHN,3)=1
22834             SIGH(NCHN)=FACWW*FCOI*DSIGWW
22835   310     CONTINUE
22836  
22837         ELSEIF(ISUB.EQ.30) THEN
22838 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
22839           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
22840      &    (-SH*UH)
22841 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22842           HFGG=0D0
22843           HFGZ=0D0
22844           HFZZ=0D0
22845           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22846           DO 320 I=1,MIN(16,MDCY(23,3))
22847             IDC=I+MDCY(23,2)-1
22848             IF(MDME(IDC,1).LT.0) GOTO 320
22849             IMDM=0
22850             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22851      &      IMDM=1
22852             IF(I.LE.8) THEN
22853               EF=KCHG(I,1)/3D0
22854               AF=SIGN(1D0,EF+0.1D0)
22855               VF=AF-4D0*EF*XWV
22856             ELSEIF(I.LE.16) THEN
22857               EF=KCHG(I+2,1)/3D0
22858               AF=SIGN(1D0,EF+0.1D0)
22859               VF=AF-4D0*EF*XWV
22860             ENDIF
22861             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22862             IF(4D0*RM1.LT.1D0) THEN
22863               FCOF=1D0
22864               IF(I.LE.8) FCOF=3D0*RADC4
22865               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22866               IF(IMDM.EQ.1) THEN
22867                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22868                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22869                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22870      &          AF**2*(1D0-4D0*RM1))*BE34
22871               ENDIF
22872             ENDIF
22873   320     CONTINUE
22874 C...Propagators: as simulated in PYOFSH and as desired
22875           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22876           MINT15=MINT(15)
22877           MINT(15)=1
22878           MINT(61)=1
22879           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22880           MINT(15)=MINT15
22881           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22882           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22883           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22884           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22885 C...Loop over flavours; consider full gamma/Z structure
22886           DO 340 I=MMINA,MMAXA
22887             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
22888             EI=KCHG(IABS(I),1)/3D0
22889             AI=SIGN(1D0,EI)
22890             VI=AI-4D0*EI*XWV
22891             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
22892      &      (VI**2+AI**2)*HFZZ)/HBW4
22893             DO 330 ISDE=1,2
22894               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
22895               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
22896               NCHN=NCHN+1
22897               ISIG(NCHN,ISDE)=I
22898               ISIG(NCHN,3-ISDE)=21
22899               ISIG(NCHN,3)=1
22900               SIGH(NCHN)=FACZQ
22901   330       CONTINUE
22902   340     CONTINUE
22903  
22904         ELSEIF(ISUB.EQ.31) THEN
22905 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
22906           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
22907      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
22908 C...Propagators: as simulated in PYOFSH and as desired
22909           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22910           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22911           GMMWC=SQRT(SQM4)*WDTP(0)
22912           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22913           FACWQ=FACWQ*HBW4C/HBW4
22914           DO 360 I=MMINA,MMAXA
22915             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
22916             IA=IABS(I)
22917             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
22918             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22919             DO 350 ISDE=1,2
22920               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
22921               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
22922               NCHN=NCHN+1
22923               ISIG(NCHN,ISDE)=I
22924               ISIG(NCHN,3-ISDE)=21
22925               ISIG(NCHN,3)=1
22926               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
22927   350       CONTINUE
22928   360     CONTINUE
22929  
22930         ELSEIF(ISUB.EQ.35) THEN
22931 C...f + gamma -> f + (gamma*/Z0)
22932           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
22933             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
22934             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
22935           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
22936             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
22937             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
22938           ELSE
22939             FZQN=SH2+UH2+2D0*SQM4*TH
22940             FZQDTM=-SH*UH
22941           ENDIF
22942           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
22943 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22944           HFGG=0D0
22945           HFGZ=0D0
22946           HFZZ=0D0
22947           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22948           DO 370 I=1,MIN(16,MDCY(23,3))
22949             IDC=I+MDCY(23,2)-1
22950             IF(MDME(IDC,1).LT.0) GOTO 370
22951             IMDM=0
22952             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22953      &      IMDM=1
22954             IF(I.LE.8) THEN
22955               EF=KCHG(I,1)/3D0
22956               AF=SIGN(1D0,EF+0.1D0)
22957               VF=AF-4D0*EF*XWV
22958             ELSEIF(I.LE.16) THEN
22959               EF=KCHG(I+2,1)/3D0
22960               AF=SIGN(1D0,EF+0.1D0)
22961               VF=AF-4D0*EF*XWV
22962             ENDIF
22963             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22964             IF(4D0*RM1.LT.1D0) THEN
22965               FCOF=1D0
22966               IF(I.LE.8) FCOF=3D0*RADC4
22967               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22968               IF(IMDM.EQ.1) THEN
22969                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22970                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22971                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22972      &          AF**2*(1D0-4D0*RM1))*BE34
22973               ENDIF
22974             ENDIF
22975   370     CONTINUE
22976 C...Propagators: as simulated in PYOFSH and as desired
22977           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22978           MINT15=MINT(15)
22979           MINT(15)=1
22980           MINT(61)=1
22981           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22982           MINT(15)=MINT15
22983           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22984           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22985           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22986           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22987 C...Loop over flavours; consider full gamma/Z structure
22988           DO 390 I=MMINA,MMAXA
22989             IF(I.EQ.0) GOTO 390
22990             EI=KCHG(IABS(I),1)/3D0
22991             AI=SIGN(1D0,EI)
22992             VI=AI-4D0*EI*XWV
22993             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
22994      &      (VI**2+AI**2)*HFZZ)/HBW4
22995             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
22996             DO 380 ISDE=1,2
22997               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
22998               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
22999               NCHN=NCHN+1
23000               ISIG(NCHN,ISDE)=I
23001               ISIG(NCHN,3-ISDE)=22
23002               ISIG(NCHN,3)=1
23003               SIGH(NCHN)=FACZQ*FZQN/FZQD
23004   380       CONTINUE
23005   390     CONTINUE
23006  
23007         ELSEIF(ISUB.EQ.36) THEN
23008 C...f + gamma -> f' + W+/-
23009           FWQ=COMFAC*AEM**2/(2D0*XW)*
23010      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
23011 C...Propagators: as simulated in PYOFSH and as desired
23012           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
23013           CALL PYWIDT(24,SQM4,WDTP,WDTE)
23014           GMMWC=SQRT(SQM4)*WDTP(0)
23015           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
23016           FWQ=FWQ*HBW4C/HBW4
23017           DO 410 I=MMINA,MMAXA
23018             IF(I.EQ.0) GOTO 410
23019             IA=IABS(I)
23020             EIA=ABS(KCHG(IABS(I),1)/3D0)
23021             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
23022             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
23023             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
23024             DO 400 ISDE=1,2
23025               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
23026               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
23027               NCHN=NCHN+1
23028               ISIG(NCHN,ISDE)=I
23029               ISIG(NCHN,3-ISDE)=22
23030               ISIG(NCHN,3)=1
23031               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
23032   400       CONTINUE
23033   410     CONTINUE
23034         ENDIF
23035  
23036       ELSEIF(ISUB.LE.100) THEN
23037         IF(ISUB.EQ.69) THEN
23038 C...gamma + gamma -> W+ + W-
23039           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
23040           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
23041           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
23042      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
23043           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
23044           NCHN=NCHN+1
23045           ISIG(NCHN,1)=22
23046           ISIG(NCHN,2)=22
23047           ISIG(NCHN,3)=1
23048           SIGH(NCHN)=FACWW
23049   420     CONTINUE
23050  
23051         ELSEIF(ISUB.EQ.70) THEN
23052 C...gamma + W+/- -> Z0 + W+/-
23053           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
23054           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
23055           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
23056      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
23057      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
23058           DO 440 KCHW=1,-1,-2
23059             DO 430 ISDE=1,2
23060               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
23061               NCHN=NCHN+1
23062               ISIG(NCHN,ISDE)=22
23063               ISIG(NCHN,3-ISDE)=24*KCHW
23064               ISIG(NCHN,3)=1
23065               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
23066   430       CONTINUE
23067   440     CONTINUE
23068         ENDIF
23069       ENDIF
23070  
23071       RETURN
23072       END
23073  
23074 C*********************************************************************
23075  
23076 C...PYSGHG
23077 C...Subprocess cross sections for Higgs processes,
23078 C...except Higgs pairs in PYSGSU, but including WW scattering.
23079 C...Auxiliary to PYSIGH.
23080  
23081       SUBROUTINE PYSGHG(NCHN,SIGS)
23082  
23083 C...Double precision and integer declarations
23084       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23085       IMPLICIT INTEGER(I-N)
23086       INTEGER PYK,PYCHGE,PYCOMP
23087 C...Parameter statement to help give large particle numbers.
23088       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23089      &KEXCIT=4000000,KDIMEN=5000000)
23090 C...Commonblocks
23091       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23092       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23093       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23094       COMMON/PYINT1/MINT(400),VINT(400)
23095       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
23096       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
23097       COMMON/PYINT4/MWID(500),WIDS(500,5)
23098       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23099       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
23100       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
23101      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
23102      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
23103      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
23104       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
23105      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
23106 C...Local arrays and complex variables
23107       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
23108       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
23109       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
23110  
23111 C...Convert H or A process into equivalent h one
23112       IHIGG=1
23113       KFHIGG=25
23114       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
23115      &ISUB.LE.190)) THEN
23116         IHIGG=2
23117         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
23118         KFHIGG=33+IHIGG
23119         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
23120         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
23121         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
23122         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
23123         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
23124         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
23125         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
23126         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
23127         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
23128         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
23129         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
23130         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
23131       ENDIF
23132       SQMH=PMAS(KFHIGG,1)**2
23133       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
23134  
23135 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23136       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
23137      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
23138 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
23139         IF(MSTP(46).LE.4) THEN
23140           HDTLH=LOG(PMAS(25,1)/PARP(44))
23141           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
23142           HDTNR=-1D0/18D0+HDTLH/6D0
23143         ELSE
23144           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
23145           HDTLQ=LOG(PARP(45)/PARP(44))
23146           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
23147           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
23148         ENDIF
23149  
23150 C...Calculate lowest and next-to-lowest order partial wave amplitudes
23151         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
23152         A00L=DBLE(HDTV*SH)
23153         A20L=-0.5D0*A00L
23154         A11L=A00L/6D0
23155         HDTLS=LOG(SH/PARP(44)**2)
23156         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
23157      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
23158      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
23159         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
23160      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
23161      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
23162         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
23163      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
23164  
23165 C...Unitarize partial wave amplitudes with Pade or K-matrix method
23166         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
23167           A00U=A00L/(1D0-A004/A00L)
23168           A20U=A20L/(1D0-A204/A20L)
23169           A11U=A11L/(1D0-A114/A11L)
23170         ELSE
23171           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
23172           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
23173           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
23174         ENDIF
23175       ENDIF
23176  
23177 C...Differential cross section expressions.
23178  
23179       IF(ISUB.LE.60) THEN
23180         IF(ISUB.EQ.3) THEN
23181 C...f + fbar -> h0 (or H0, or A0)
23182           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23183           HS=SHR*WDTP(0)
23184           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23185           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23186      &    FACBW=0D0
23187           HP=AEM/(8D0*XW)*SH/SQMW*SH
23188           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23189           DO 100 I=MMINA,MMAXA
23190             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
23191             IA=IABS(I)
23192             RMQ=PYMRUN(IA,SH)**2/SH
23193             HI=HP*RMQ
23194             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
23195             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
23196               IKFI=1
23197               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
23198               IF(IA.GT.10) IKFI=3
23199               HI=HI*PARU(150+10*IHIGG+IKFI)**2
23200               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
23201                 HI=HI/(1D0+RMSS(41))**2
23202                 IF(IHIGG.NE.3) THEN
23203                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
23204      &            PARU(151+10*IHIGG))**2
23205                 ENDIF
23206               ENDIF
23207             ENDIF
23208             NCHN=NCHN+1
23209             ISIG(NCHN,1)=I
23210             ISIG(NCHN,2)=-I
23211             ISIG(NCHN,3)=1
23212             SIGH(NCHN)=HI*FACBW*HF
23213   100     CONTINUE
23214  
23215         ELSEIF(ISUB.EQ.5) THEN
23216 C...Z0 + Z0 -> h0
23217           CALL PYWIDT(25,SH,WDTP,WDTE)
23218           HS=SHR*WDTP(0)
23219           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23220           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
23221           HP=AEM/(8D0*XW)*SH/SQMW*SH
23222           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23223           HI=HP/4D0
23224           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
23225           DO 120 I=MMIN1,MMAX1
23226             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
23227             DO 110 J=MMIN2,MMAX2
23228               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
23229               EI=KCHG(IABS(I),1)/3D0
23230               AI=SIGN(1D0,EI)
23231               VI=AI-4D0*EI*XWV
23232               EJ=KCHG(IABS(J),1)/3D0
23233               AJ=SIGN(1D0,EJ)
23234               VJ=AJ-4D0*EJ*XWV
23235               NCHN=NCHN+1
23236               ISIG(NCHN,1)=I
23237               ISIG(NCHN,2)=J
23238               ISIG(NCHN,3)=1
23239               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
23240   110       CONTINUE
23241   120     CONTINUE
23242  
23243         ELSEIF(ISUB.EQ.8) THEN
23244 C...W+ + W- -> h0
23245           CALL PYWIDT(25,SH,WDTP,WDTE)
23246           HS=SHR*WDTP(0)
23247           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23248           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
23249           HP=AEM/(8D0*XW)*SH/SQMW*SH
23250           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23251           HI=HP/2D0
23252           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
23253           DO 140 I=MMIN1,MMAX1
23254             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
23255             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23256             DO 130 J=MMIN2,MMAX2
23257               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
23258               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23259               IF(EI*EJ.GT.0D0) GOTO 130
23260               NCHN=NCHN+1
23261               ISIG(NCHN,1)=I
23262               ISIG(NCHN,2)=J
23263               ISIG(NCHN,3)=1
23264               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
23265   130       CONTINUE
23266   140     CONTINUE
23267  
23268         ELSEIF(ISUB.EQ.24) THEN
23269 C...f + fbar -> Z0 + h0 (or H0, or A0)
23270 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
23271           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
23272           CALL PYWIDT(23,SQM3,WDTP,WDTE)
23273           GMMZ3=SQRT(SQM3)*WDTP(0)
23274           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
23275           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23276           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23277           GMMH4=SQRT(SQM4)*WDTP(0)
23278           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
23279           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
23280           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
23281      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
23282           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
23283           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
23284      &    PARU(154+10*IHIGG)**2
23285           DO 150 I=MMINA,MMAXA
23286             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
23287             EI=KCHG(IABS(I),1)/3D0
23288             AI=SIGN(1D0,EI)
23289             VI=AI-4D0*EI*XWV
23290             FCOI=1D0
23291             IF(IABS(I).LE.10) FCOI=FACA/3D0
23292             NCHN=NCHN+1
23293             ISIG(NCHN,1)=I
23294             ISIG(NCHN,2)=-I
23295             ISIG(NCHN,3)=1
23296             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
23297   150     CONTINUE
23298  
23299         ELSEIF(ISUB.EQ.26) THEN
23300 C...f + fbar' -> W+/- + h0 (or H0, or A0)
23301 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
23302           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
23303           CALL PYWIDT(24,SQM3,WDTP,WDTE)
23304           GMMW3=SQRT(SQM3)*WDTP(0)
23305           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
23306           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23307           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23308           GMMH4=SQRT(SQM4)*WDTP(0)
23309           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
23310           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
23311           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
23312      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
23313           FACHW=FACHW*WIDS(KFHIGG,2)
23314           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
23315      &    PARU(155+10*IHIGG)**2
23316           DO 170 I=MMIN1,MMAX1
23317             IA=IABS(I)
23318             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
23319             DO 160 J=MMIN2,MMAX2
23320               JA=IABS(J)
23321               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
23322               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
23323               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
23324      &        GOTO 160
23325               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
23326               FCKM=1D0
23327               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
23328               FCOI=1D0
23329               IF(IA.LE.10) FCOI=FACA/3D0
23330               NCHN=NCHN+1
23331               ISIG(NCHN,1)=I
23332               ISIG(NCHN,2)=J
23333               ISIG(NCHN,3)=1
23334               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
23335   160       CONTINUE
23336   170     CONTINUE
23337  
23338         ELSEIF(ISUB.EQ.32) THEN
23339 C...f + g -> f + h0 (q + g -> q + h0 only)
23340           SQMHC=PMAS(25,1)**2
23341           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
23342           DO 190 I=MMINA,MMAXA
23343             IA=IABS(I)
23344             IF(IA.NE.5) GOTO 190
23345             SQML=PMAS(IA,1)**2
23346             IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) SQML=SQML*
23347      &      (LOG(MAX(4D0,PARP(37)**2*SQML/PARU(117)**2))/
23348      &      LOG(MAX(4D0,SH/PARU(117)**2)))**(24D0/(33D0-2D0*MSTU(118)))
23349             IUA=IA+MOD(IA,2)
23350             SQMQ=SQML
23351             FACHCQ=FHCQ*SQML/SQMW*
23352      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH+
23353      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
23354      &      (SQMHC-SQMQ-SH)/SH)
23355             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
23356             DO 180 ISDE=1,2
23357               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
23358               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,1).EQ.0) GOTO 180
23359               NCHN=NCHN+1
23360               ISIG(NCHN,ISDE)=I
23361               ISIG(NCHN,3-ISDE)=21
23362               ISIG(NCHN,3)=1
23363               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
23364   180       CONTINUE
23365   190     CONTINUE
23366         ENDIF
23367  
23368       ELSEIF(ISUB.LE.80) THEN
23369         IF(ISUB.EQ.71) THEN
23370 C...Z0 + Z0 -> Z0 + Z0
23371           IF(SH.LE.4.01D0*SQMZ) GOTO 220
23372  
23373           IF(MSTP(46).LE.2) THEN
23374 C...Exact scattering ME:s for on-mass-shell gauge bosons
23375             BE2=1D0-4D0*SQMZ/SH
23376             TH=-0.5D0*SH*BE2*(1D0-CTH)
23377             UH=-0.5D0*SH*BE2*(1D0+CTH)
23378             IF(MAX(TH,UH).GT.-1D0) GOTO 220
23379             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
23380             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23381             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23382             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
23383             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23384             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23385             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
23386             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
23387             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
23388             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
23389      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
23390             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
23391             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
23392      &      (ASHIM+ATHIM+AUHIM)**2)
23393             IF(MSTP(46).EQ.2) FACZZ=0D0
23394  
23395           ELSE
23396 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23397             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
23398      &      ABS(A00U+2D0*A20U)**2
23399           ENDIF
23400           FACZZ=FACZZ*WIDS(23,1)
23401  
23402           DO 210 I=MMIN1,MMAX1
23403             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
23404             EI=KCHG(IABS(I),1)/3D0
23405             AI=SIGN(1D0,EI)
23406             VI=AI-4D0*EI*XWV
23407             AVI=AI**2+VI**2
23408             DO 200 J=MMIN2,MMAX2
23409               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
23410               EJ=KCHG(IABS(J),1)/3D0
23411               AJ=SIGN(1D0,EJ)
23412               VJ=AJ-4D0*EJ*XWV
23413               AVJ=AJ**2+VJ**2
23414               NCHN=NCHN+1
23415               ISIG(NCHN,1)=I
23416               ISIG(NCHN,2)=J
23417               ISIG(NCHN,3)=1
23418               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
23419   200       CONTINUE
23420   210     CONTINUE
23421   220     CONTINUE
23422  
23423         ELSEIF(ISUB.EQ.72) THEN
23424 C...Z0 + Z0 -> W+ + W-
23425           IF(SH.LE.4.01D0*SQMZ) GOTO 250
23426  
23427           IF(MSTP(46).LE.2) THEN
23428 C...Exact scattering ME:s for on-mass-shell gauge bosons
23429             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
23430             CTH2=CTH**2
23431             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
23432             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
23433             IF(MAX(TH,UH).GT.-1D0) GOTO 250
23434             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
23435      &      (1D0-2D0*SQMZ/SH)
23436             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23437             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23438             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
23439      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23440      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23441      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
23442      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23443             ATWIM=0D0
23444             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
23445      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23446      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23447      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
23448      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23449             AUWIM=0D0
23450             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
23451             A4IM=0D0
23452             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
23453      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
23454             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
23455             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
23456      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
23457             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
23458      &      (ATWIM+AUWIM+A4IM)**2)
23459  
23460           ELSE
23461 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23462             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
23463      &      ABS(A00U-A20U)**2
23464           ENDIF
23465           FACWW=FACWW*WIDS(24,1)
23466  
23467           DO 240 I=MMIN1,MMAX1
23468             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
23469             EI=KCHG(IABS(I),1)/3D0
23470             AI=SIGN(1D0,EI)
23471             VI=AI-4D0*EI*XWV
23472             AVI=AI**2+VI**2
23473             DO 230 J=MMIN2,MMAX2
23474               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
23475               EJ=KCHG(IABS(J),1)/3D0
23476               AJ=SIGN(1D0,EJ)
23477               VJ=AJ-4D0*EJ*XWV
23478               AVJ=AJ**2+VJ**2
23479               NCHN=NCHN+1
23480               ISIG(NCHN,1)=I
23481               ISIG(NCHN,2)=J
23482               ISIG(NCHN,3)=1
23483               SIGH(NCHN)=FACWW*AVI*AVJ
23484   230       CONTINUE
23485   240     CONTINUE
23486   250     CONTINUE
23487  
23488         ELSEIF(ISUB.EQ.73) THEN
23489 C...Z0 + W+/- -> Z0 + W+/-
23490           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
23491  
23492           IF(MSTP(46).LE.2) THEN
23493 C...Exact scattering ME:s for on-mass-shell gauge bosons
23494             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
23495             EP1=1D0-(SQMZ-SQMW)/SH
23496             EP2=1D0+(SQMZ-SQMW)/SH
23497             TH=-0.5D0*SH*BE2*(1D0-CTH)
23498             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
23499             IF(MAX(TH,UH).GT.-1D0) GOTO 280
23500             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
23501             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23502             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23503             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
23504      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
23505      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
23506      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
23507             ASWIM=0D0
23508             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
23509      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
23510      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
23511      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
23512      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
23513      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
23514      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
23515      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
23516      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
23517      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
23518      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
23519      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
23520             AUWIM=0D0
23521             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
23522      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
23523             A4IM=0D0
23524             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
23525      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
23526             IF(MSTP(46).LE.0) FACZW=0D0
23527             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
23528      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
23529             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
23530      &      (ASWIM+AUWIM+A4IM)**2)
23531  
23532           ELSE
23533 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23534             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
23535      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
23536           ENDIF
23537           FACZW=FACZW*WIDS(23,2)
23538  
23539           DO 270 I=MMIN1,MMAX1
23540             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
23541             EI=KCHG(IABS(I),1)/3D0
23542             AI=SIGN(1D0,EI)
23543             VI=AI-4D0*EI*XWV
23544             AVI=AI**2+VI**2
23545             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
23546             DO 260 J=MMIN2,MMAX2
23547               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
23548               EJ=KCHG(IABS(J),1)/3D0
23549               AJ=SIGN(1D0,EJ)
23550               VJ=AI-4D0*EJ*XWV
23551               AVJ=AJ**2+VJ**2
23552               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
23553               NCHN=NCHN+1
23554               ISIG(NCHN,1)=I
23555               ISIG(NCHN,2)=J
23556               ISIG(NCHN,3)=1
23557               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
23558               NCHN=NCHN+1
23559               ISIG(NCHN,1)=I
23560               ISIG(NCHN,2)=J
23561               ISIG(NCHN,3)=2
23562               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
23563   260       CONTINUE
23564   270     CONTINUE
23565   280     CONTINUE
23566  
23567         ELSEIF(ISUB.EQ.75) THEN
23568 C...W+ + W- -> gamma + gamma
23569  
23570         ELSEIF(ISUB.EQ.76) THEN
23571 C...W+ + W- -> Z0 + Z0
23572           IF(SH.LE.4.01D0*SQMZ) GOTO 310
23573  
23574           IF(MSTP(46).LE.2) THEN
23575 C...Exact scattering ME:s for on-mass-shell gauge bosons
23576             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
23577             CTH2=CTH**2
23578             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
23579             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
23580             IF(MAX(TH,UH).GT.-1D0) GOTO 310
23581             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
23582      &      (1D0-2D0*SQMZ/SH)
23583             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23584             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23585             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
23586      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23587      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23588      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
23589      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23590             ATWIM=0D0
23591             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
23592      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23593      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23594      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
23595      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23596             AUWIM=0D0
23597             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
23598             A4IM=0D0
23599             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
23600      &      (SH/SQMW)**2*SH2
23601             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
23602             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
23603      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
23604             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
23605      &      (ATWIM+AUWIM+A4IM)**2)
23606  
23607           ELSE
23608 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23609             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
23610      &      ABS(A00U-A20U)**2
23611           ENDIF
23612           FACZZ=FACZZ*WIDS(23,1)
23613  
23614           DO 300 I=MMIN1,MMAX1
23615             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
23616             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23617             DO 290 J=MMIN2,MMAX2
23618               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
23619               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23620               IF(EI*EJ.GT.0D0) GOTO 290
23621               NCHN=NCHN+1
23622               ISIG(NCHN,1)=I
23623               ISIG(NCHN,2)=J
23624               ISIG(NCHN,3)=1
23625               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
23626   290       CONTINUE
23627   300     CONTINUE
23628   310     CONTINUE
23629  
23630         ELSEIF(ISUB.EQ.77) THEN
23631 C...W+/- + W+/- -> W+/- + W+/-
23632           IF(SH.LE.4.01D0*SQMW) GOTO 340
23633  
23634           IF(MSTP(46).LE.2) THEN
23635 C...Exact scattering ME:s for on-mass-shell gauge bosons
23636             BE2=1D0-4D0*SQMW/SH
23637             BE4=BE2**2
23638             CTH2=CTH**2
23639             CTH3=CTH**3
23640             TH=-0.5D0*SH*BE2*(1D0-CTH)
23641             UH=-0.5D0*SH*BE2*(1D0+CTH)
23642             IF(MAX(TH,UH).GT.-1D0) GOTO 340
23643             SHANG=(1D0+BE2)**2
23644             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23645             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23646             THANG=(BE2-CTH)**2
23647             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23648             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23649             UHANG=(BE2+CTH)**2
23650             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
23651             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
23652             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
23653             ASGRE=XW*SGZANG
23654             ASGIM=0D0
23655             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
23656             ASZIM=0D0
23657             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
23658      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
23659             ATGRE=0.5D0*XW*SH/TH*TGZANG
23660             ATGIM=0D0
23661             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
23662             ATZIM=0D0
23663             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
23664      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
23665             AUGRE=0.5D0*XW*SH/UH*UGZANG
23666             AUGIM=0D0
23667             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
23668             AUZIM=0D0
23669             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
23670             A4AIM=0D0
23671             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
23672             A4SIM=0D0
23673             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
23674      &      (SH/SQMW)**2*SH2
23675             IF(MSTP(46).LE.0) THEN
23676               AWWARE=ASHRE
23677               AWWAIM=ASHIM
23678               AWWSRE=0D0
23679               AWWSIM=0D0
23680             ELSEIF(MSTP(46).EQ.1) THEN
23681               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
23682               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
23683               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
23684               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
23685             ELSE
23686               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
23687               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
23688               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
23689               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
23690             ENDIF
23691             AWWA2=AWWARE**2+AWWAIM**2
23692             AWWS2=AWWSRE**2+AWWSIM**2
23693  
23694           ELSE
23695 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23696             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
23697      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
23698             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
23699           ENDIF
23700  
23701           DO 330 I=MMIN1,MMAX1
23702             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
23703             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23704             DO 320 J=MMIN2,MMAX2
23705               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
23706               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23707               IF(EI*EJ.LT.0D0) THEN
23708 C...W+W-
23709                 IF(MSTP(45).EQ.1) GOTO 320
23710                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
23711                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
23712               ELSE
23713 C...W+W+/W-W-
23714                 IF(MSTP(45).EQ.2) GOTO 320
23715                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
23716                 IF(MSTP(46).GE.3) FACWW=FWWS
23717                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
23718                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
23719               ENDIF
23720               NCHN=NCHN+1
23721               ISIG(NCHN,1)=I
23722               ISIG(NCHN,2)=J
23723               ISIG(NCHN,3)=1
23724               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
23725               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
23726   320       CONTINUE
23727   330     CONTINUE
23728   340     CONTINUE
23729         ENDIF
23730  
23731       ELSEIF(ISUB.LE.120) THEN
23732         IF(ISUB.EQ.102) THEN
23733 C...g + g -> h0 (or H0, or A0)
23734           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23735           HS=SHR*WDTP(0)
23736           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23737           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23738           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23739      &    FACBW=0D0
23740           HI=SHR*WDTP(13)/32D0
23741           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
23742           NCHN=NCHN+1
23743           ISIG(NCHN,1)=21
23744           ISIG(NCHN,2)=21
23745           ISIG(NCHN,3)=1
23746           SIGH(NCHN)=HI*FACBW*HF
23747   350     CONTINUE
23748  
23749         ELSEIF(ISUB.EQ.103) THEN
23750 C...gamma + gamma -> h0 (or H0, or A0)
23751           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23752           HS=SHR*WDTP(0)
23753           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23754           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23755           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23756      &    FACBW=0D0
23757           HI=SHR*WDTP(14)*2D0
23758           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
23759           NCHN=NCHN+1
23760           ISIG(NCHN,1)=22
23761           ISIG(NCHN,2)=22
23762           ISIG(NCHN,3)=1
23763           SIGH(NCHN)=HI*FACBW*HF
23764   360     CONTINUE
23765  
23766         ELSEIF(ISUB.EQ.110) THEN
23767 C...f + fbar -> gamma + h0
23768           THUH=MAX(TH*UH,SH*CKIN(3)**2)
23769           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
23770           FACHG=FACHG*WIDS(KFHIGG,2)
23771 C...Calculate loop contributions for intermediate gamma* and Z0
23772           CIGTOT=DCMPLX(0D0,0D0)
23773           CIZTOT=DCMPLX(0D0,0D0)
23774           JMAX=3*MSTP(1)+1
23775           DO 370 J=1,JMAX
23776             IF(J.LE.2*MSTP(1)) THEN
23777               FNC=1D0
23778               EJ=KCHG(J,1)/3D0
23779               AJ=SIGN(1D0,EJ+0.1D0)
23780               VJ=AJ-4D0*EJ*XWV
23781               BALP=SQM4/(2D0*PMAS(J,1))**2
23782               BBET=SH/(2D0*PMAS(J,1))**2
23783             ELSEIF(J.LE.3*MSTP(1)) THEN
23784               FNC=3D0
23785               JL=2*(J-2*MSTP(1))-1
23786               EJ=KCHG(10+JL,1)/3D0
23787               AJ=SIGN(1D0,EJ+0.1D0)
23788               VJ=AJ-4D0*EJ*XWV
23789               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
23790               BBET=SH/(2D0*PMAS(10+JL,1))**2
23791             ELSE
23792               BALP=SQM4/(2D0*PMAS(24,1))**2
23793               BBET=SH/(2D0*PMAS(24,1))**2
23794             ENDIF
23795             BABI=1D0/(BALP-BBET)
23796             IF(BALP.LT.1D0) THEN
23797               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
23798               F1ALP=F0ALP**2
23799             ELSE
23800               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
23801      &        -DBLE(0.5D0*PARU(1)))
23802               F1ALP=-F0ALP**2
23803             ENDIF
23804             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
23805             IF(BBET.LT.1D0) THEN
23806               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
23807               F1BET=F0BET**2
23808             ELSE
23809               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
23810      &        -DBLE(0.5D0*PARU(1)))
23811               F1BET=-F0BET**2
23812             ENDIF
23813             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
23814             IF(J.LE.3*MSTP(1)) THEN
23815               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
23816      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
23817               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
23818               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
23819             ELSE
23820               TXW=XW/XW1
23821               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
23822      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
23823      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
23824               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
23825      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
23826      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
23827      &        (F1BET-F1ALP))
23828             ENDIF
23829   370     CONTINUE
23830           CIGTOT=CIGTOT/DBLE(SH)
23831           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
23832 C...Loop over initial flavours
23833           DO 380 I=MMINA,MMAXA
23834             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
23835             EI=KCHG(IABS(I),1)/3D0
23836             AI=SIGN(1D0,EI)
23837             VI=AI-4D0*EI*XWV
23838             FCOI=1D0
23839             IF(IABS(I).LE.10) FCOI=FACA/3D0
23840             NCHN=NCHN+1
23841             ISIG(NCHN,1)=I
23842             ISIG(NCHN,2)=-I
23843             ISIG(NCHN,3)=1
23844             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
23845      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
23846   380     CONTINUE
23847  
23848         ELSEIF(ISUB.EQ.111) THEN
23849 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
23850           IF(MSTP(38).NE.0) THEN
23851 C...Simple case: only do gg <-> h exactly.
23852           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23853           FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP(13)/SQRT(SQM4))*
23854      &    (TH**2+UH**2)/(SH*SQM4)
23855 C...Propagators: as simulated in PYOFSH and as desired
23856           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23857           GMMHC=SQRT(SQM4)*WDTP(0)
23858           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23859      &    ((SQM4-SQMH)**2+GMMHC**2)
23860           FACGH=FACGH*HBW4C/HBW4
23861           ELSE
23862 C...Messy case: do full loop integrals
23863           A5STUR=0D0
23864           A5STUI=0D0
23865           DO 390 I=1,2*MSTP(1)
23866             SQMQ=PMAS(I,1)**2
23867             EPSS=4D0*SQMQ/SH
23868             EPSH=4D0*SQMQ/SQMH
23869             CALL PYWAUX(1,EPSS,W1SR,W1SI)
23870             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23871             CALL PYWAUX(2,EPSS,W2SR,W2SI)
23872             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23873             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
23874      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
23875             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
23876      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
23877   390     CONTINUE
23878           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
23879      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
23880           FACGH=FACGH*WIDS(25,2)
23881           ENDIF
23882           DO 400 I=MMINA,MMAXA
23883             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
23884      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
23885             NCHN=NCHN+1
23886             ISIG(NCHN,1)=I
23887             ISIG(NCHN,2)=-I
23888             ISIG(NCHN,3)=1
23889             SIGH(NCHN)=FACGH
23890   400     CONTINUE
23891  
23892         ELSEIF(ISUB.EQ.112) THEN
23893 C...f + g -> f + h0 (q + g -> q + h0 only)
23894           IF(MSTP(38).NE.0) THEN
23895 C...Simple case: only do gg <-> h exactly.
23896           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23897           FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP(13)/SQRT(SQM4))*
23898      &    (SH**2+UH**2)/(-TH*SQM4)
23899 C...Propagators: as simulated in PYOFSH and as desired
23900           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23901           GMMHC=SQRT(SQM4)*WDTP(0)
23902           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23903      &    ((SQM4-SQMH)**2+GMMHC**2)
23904           FACQH=FACQH*HBW4C/HBW4
23905           ELSE
23906 C...Messy case: do full loop integrals
23907           A5TSUR=0D0
23908           A5TSUI=0D0
23909           DO 410 I=1,2*MSTP(1)
23910             SQMQ=PMAS(I,1)**2
23911             EPST=4D0*SQMQ/TH
23912             EPSH=4D0*SQMQ/SQMH
23913             CALL PYWAUX(1,EPST,W1TR,W1TI)
23914             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23915             CALL PYWAUX(2,EPST,W2TR,W2TI)
23916             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23917             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
23918      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
23919             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
23920      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
23921   410     CONTINUE
23922           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
23923      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
23924           FACQH=FACQH*WIDS(25,2)
23925           ENDIF
23926           DO 430 I=MMINA,MMAXA
23927             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
23928             DO 420 ISDE=1,2
23929               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
23930               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
23931               NCHN=NCHN+1
23932               ISIG(NCHN,ISDE)=I
23933               ISIG(NCHN,3-ISDE)=21
23934               ISIG(NCHN,3)=1
23935               SIGH(NCHN)=FACQH
23936   420       CONTINUE
23937   430     CONTINUE
23938  
23939         ELSEIF(ISUB.EQ.113) THEN
23940 C...g + g -> g + h0
23941           IF(MSTP(38).NE.0) THEN
23942 C...Simple case: only do gg <-> h exactly.
23943           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23944           FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP(13)/SQRT(SQM4))*
23945      &    (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
23946 C...Propagators: as simulated in PYOFSH and as desired
23947           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23948           GMMHC=SQRT(SQM4)*WDTP(0)
23949           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23950      &    ((SQM4-SQMH)**2+GMMHC**2)
23951           FACGH=FACGH*HBW4C/HBW4
23952           ELSE
23953 C...Messy case: do full loop integrals
23954           A2STUR=0D0
23955           A2STUI=0D0
23956           A2USTR=0D0
23957           A2USTI=0D0
23958           A2TUSR=0D0
23959           A2TUSI=0D0
23960           A4STUR=0D0
23961           A4STUI=0D0
23962           DO 440 I=1,2*MSTP(1)
23963             SQMQ=PMAS(I,1)**2
23964             EPSS=4D0*SQMQ/SH
23965             EPST=4D0*SQMQ/TH
23966             EPSU=4D0*SQMQ/UH
23967             EPSH=4D0*SQMQ/SQMH
23968             IF(EPSH.LT.1D-6) GOTO 440
23969             CALL PYWAUX(1,EPSS,W1SR,W1SI)
23970             CALL PYWAUX(1,EPST,W1TR,W1TI)
23971             CALL PYWAUX(1,EPSU,W1UR,W1UI)
23972             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23973             CALL PYWAUX(2,EPSS,W2SR,W2SI)
23974             CALL PYWAUX(2,EPST,W2TR,W2TI)
23975             CALL PYWAUX(2,EPSU,W2UR,W2UI)
23976             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23977             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
23978             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
23979             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
23980             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
23981             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
23982             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
23983             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
23984             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
23985             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
23986             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
23987             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
23988             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
23989             W3STUR=YHSTUR-Y3STUR-Y3UTSR
23990             W3STUI=YHSTUI-Y3STUI-Y3UTSI
23991             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
23992             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
23993             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
23994             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
23995             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
23996             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
23997             W3USTR=YHUSTR-Y3USTR-Y3TSUR
23998             W3USTI=YHUSTI-Y3USTI-Y3TSUI
23999             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
24000             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
24001             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
24002      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
24003      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
24004      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
24005      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
24006             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
24007      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
24008      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
24009      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
24010      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
24011             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
24012      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
24013      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
24014      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
24015      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
24016             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
24017      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
24018      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
24019      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
24020      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
24021             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
24022      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
24023      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
24024      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
24025      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
24026             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
24027      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
24028      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
24029      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
24030      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
24031             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
24032      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
24033      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
24034      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
24035      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
24036             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
24037      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
24038      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
24039      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
24040      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
24041             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
24042      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
24043      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
24044      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
24045      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
24046             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
24047      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
24048      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
24049      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
24050      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
24051             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
24052      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
24053      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
24054      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
24055      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
24056             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
24057      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
24058      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
24059      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
24060      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
24061             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24062      &      (W2SR-W2HR+W3STUR))
24063             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
24064             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24065      &      (W2TR-W2HR+W3TUSR))
24066             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
24067             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24068      &      (W2UR-W2HR+W3USTR))
24069             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
24070             A2STUR=A2STUR+B2STUR+B2SUTR
24071             A2STUI=A2STUI+B2STUI+B2SUTI
24072             A2USTR=A2USTR+B2USTR+B2UTSR
24073             A2USTI=A2USTI+B2USTI+B2UTSI
24074             A2TUSR=A2TUSR+B2TUSR+B2TSUR
24075             A2TUSI=A2TUSI+B2TUSI+B2TSUI
24076             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
24077             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
24078   440     CONTINUE
24079           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
24080      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
24081      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
24082           FACGH=FACGH*WIDS(25,2)
24083           ENDIF
24084           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
24085           NCHN=NCHN+1
24086           ISIG(NCHN,1)=21
24087           ISIG(NCHN,2)=21
24088           ISIG(NCHN,3)=1
24089           SIGH(NCHN)=FACGH
24090   450     CONTINUE
24091         ENDIF
24092  
24093       ELSEIF(ISUB.LE.170) THEN
24094         IF(ISUB.EQ.121) THEN
24095 C...g + g -> Q + Qbar + h0
24096           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
24097           IA=KFPR(ISUBSV,2)
24098           PMF=PYMRUN(IA,SH)
24099           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
24100      &    (0.5D0*PMF/PMAS(24,1))**2
24101           WID2=1D0
24102           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
24103           FACQQH=FACQQH*WID2
24104           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24105             IKFI=1
24106             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
24107             IF(IA.GT.10) IKFI=3
24108             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
24109             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
24110               FACQQH=FACQQH/(1D0+RMSS(41))**2
24111               IF(IHIGG.NE.3) THEN
24112                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24113      &          PARU(151+10*IHIGG))**2
24114               ENDIF
24115             ENDIF
24116           ENDIF
24117           CALL PYQQBH(WTQQBH)
24118           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24119           HS=SHR*WDTP(0)
24120           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24121           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24122           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24123      &    FACBW=0D0
24124           NCHN=NCHN+1
24125           ISIG(NCHN,1)=21
24126           ISIG(NCHN,2)=21
24127           ISIG(NCHN,3)=1
24128           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
24129   460     CONTINUE
24130  
24131         ELSEIF(ISUB.EQ.122) THEN
24132 C...q + qbar -> Q + Qbar + h0
24133           IA=KFPR(ISUBSV,2)
24134           PMF=PYMRUN(IA,SH)
24135           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
24136      &    (0.5D0*PMF/PMAS(24,1))**2
24137           WID2=1D0
24138           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
24139           FACQQH=FACQQH*WID2
24140           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24141             IKFI=1
24142             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
24143             IF(IA.GT.10) IKFI=3
24144             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
24145             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
24146               FACQQH=FACQQH/(1D0+RMSS(41))**2
24147               IF(IHIGG.NE.3) THEN
24148                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24149      &          PARU(151+10*IHIGG))**2
24150               ENDIF
24151             ENDIF
24152           ENDIF
24153           CALL PYQQBH(WTQQBH)
24154           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24155           HS=SHR*WDTP(0)
24156           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24157           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24158           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24159      &    FACBW=0D0
24160           DO 470 I=MMINA,MMAXA
24161             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
24162      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
24163             NCHN=NCHN+1
24164             ISIG(NCHN,1)=I
24165             ISIG(NCHN,2)=-I
24166             ISIG(NCHN,3)=1
24167             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
24168   470     CONTINUE
24169  
24170         ELSEIF(ISUB.EQ.123) THEN
24171 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
24172 C...inner process)
24173           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
24174           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
24175      &    PARU(154+10*IHIGG)**2
24176           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
24177      &    (VINT(216)-VINT(209)**2))**2
24178           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
24179           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
24180           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24181           HS=SHR*WDTP(0)
24182           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24183           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24184           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24185      &    FACBW=0D0
24186           DO 490 I=MMIN1,MMAX1
24187             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
24188             IA=IABS(I)
24189             DO 480 J=MMIN2,MMAX2
24190               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
24191               JA=IABS(J)
24192               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
24193               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
24194               VI=AI-4D0*EI*XWV
24195               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
24196               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
24197               VJ=AJ-4D0*EJ*XWV
24198               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
24199               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
24200               NCHN=NCHN+1
24201               ISIG(NCHN,1)=I
24202               ISIG(NCHN,2)=J
24203               ISIG(NCHN,3)=1
24204               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
24205   480       CONTINUE
24206   490     CONTINUE
24207  
24208         ELSEIF(ISUB.EQ.124) THEN
24209 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
24210 C...inner process)
24211           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
24212           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
24213      &    PARU(155+10*IHIGG)**2
24214           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
24215      &    (VINT(216)-VINT(209)**2))**2
24216           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
24217           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24218           HS=SHR*WDTP(0)
24219           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24220           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24221           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24222      &    FACBW=0D0
24223           DO 510 I=MMIN1,MMAX1
24224             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
24225             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
24226             DO 500 J=MMIN2,MMAX2
24227               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
24228               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
24229               IF(EI*EJ.GT.0D0) GOTO 500
24230               FACLR=VINT(180+I)*VINT(180+J)
24231               NCHN=NCHN+1
24232               ISIG(NCHN,1)=I
24233               ISIG(NCHN,2)=J
24234               ISIG(NCHN,3)=1
24235               SIGH(NCHN)=FACLR*FACWW*FACBW
24236   500       CONTINUE
24237   510     CONTINUE
24238  
24239         ELSEIF(ISUB.EQ.143) THEN
24240 C...f + fbar' -> H+/-
24241           SQMHC=PMAS(37,1)**2
24242           CALL PYWIDT(37,SH,WDTP,WDTE)
24243           HS=SHR*WDTP(0)
24244           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
24245           HP=AEM/(8D0*XW)*SH/SQMW*SH
24246           DO 530 I=MMIN1,MMAX1
24247             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
24248             IA=IABS(I)
24249             IM=(MOD(IA,10)+1)/2
24250             DO 520 J=MMIN2,MMAX2
24251               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
24252               JA=IABS(J)
24253               JM=(MOD(JA,10)+1)/2
24254               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
24255               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
24256      &        GOTO 520
24257               IF(MOD(IA,2).EQ.0) THEN
24258                 IU=IA
24259                 IL=JA
24260               ELSE
24261                 IU=JA
24262                 IL=IA
24263               ENDIF
24264               RML=PYMRUN(IL,SH)**2/SH
24265               RMU=PYMRUN(IU,SH)**2/SH
24266               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
24267               IF(IA.LE.10) HI=HI*FACA/3D0
24268               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
24269               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
24270               NCHN=NCHN+1
24271               ISIG(NCHN,1)=I
24272               ISIG(NCHN,2)=J
24273               ISIG(NCHN,3)=1
24274               SIGH(NCHN)=HI*FACBW*HF
24275   520       CONTINUE
24276   530     CONTINUE
24277  
24278         ELSEIF(ISUB.EQ.161) THEN
24279 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
24280 C...(choice of only b and t to avoid kinematics problems)
24281           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
24282 C...H propagator: as simulated in PYOFSH and as desired
24283           SQMHC=PMAS(37,1)**2
24284           GMMHC=PMAS(37,1)*PMAS(37,2)
24285           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
24286           CALL PYWIDT(37,SQM4,WDTP,WDTE)
24287           GMMHCC=SQRT(SQM4)*WDTP(0)
24288           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
24289           FHCQ=FHCQ*HBW4C/HBW4
24290           DO 550 I=MMINA,MMAXA
24291             IA=IABS(I)
24292             IF(IA.NE.5) GOTO 550
24293             SQML=PYMRUN(IA,SH)**2
24294             IUA=IA+MOD(IA,2)
24295             SQMQ=PYMRUN(IUA,SH)**2
24296             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
24297      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH+
24298      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
24299      &      (SQMHC-SQMQ-SH)/SH)
24300             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
24301             DO 540 ISDE=1,2
24302               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
24303               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,1).EQ.0) GOTO 540
24304               NCHN=NCHN+1
24305               ISIG(NCHN,ISDE)=I
24306               ISIG(NCHN,3-ISDE)=21
24307               ISIG(NCHN,3)=1
24308               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
24309   540       CONTINUE
24310   550     CONTINUE
24311         ENDIF
24312       ENDIF
24313  
24314       RETURN
24315       END
24316  
24317 C*********************************************************************
24318  
24319 C...PYSGSU
24320 C...Subprocess cross sections for SUSY processes,
24321 C...including Higgs pair production.
24322 C...Auxiliary to PYSIGH.
24323  
24324       SUBROUTINE PYSGSU(NCHN,SIGS)
24325  
24326 C...Double precision and integer declarations
24327       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24328       IMPLICIT INTEGER(I-N)
24329       INTEGER PYK,PYCHGE,PYCOMP
24330 C...Parameter statement to help give large particle numbers.
24331       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
24332      &KEXCIT=4000000,KDIMEN=5000000)
24333 C...Commonblocks
24334       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24335       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
24336       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24337       COMMON/PYINT1/MINT(400),VINT(400)
24338       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
24339       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
24340       COMMON/PYINT4/MWID(500),WIDS(500,5)
24341       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
24342       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
24343      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
24344       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
24345      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
24346      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
24347      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
24348       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
24349      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
24350 C...Local arrays and complex variables
24351       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
24352       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
24353       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
24354       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
24355  
24356 CMRENNA++
24357 C...Z and W width, combinations of weak mixing angle
24358       ZWID=PMAS(23,2)
24359       WWID=PMAS(24,2)
24360       TANW=SQRT(XW/XW1)
24361       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
24362  
24363 C...Convert almost equivalent SUSY processes into each other
24364 C...Extract differences in flavours and couplings
24365  
24366 C...Sleptons and sneutrinos
24367       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
24368         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24369         ISUB=201
24370         ILR=0
24371       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
24372         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24373         ISUB=201
24374         ILR=1
24375       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
24376         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24377         ISUB=203
24378       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
24379         IF(ISUB.EQ.210) THEN
24380           RKF=2.0D0
24381         ELSEIF(ISUB.EQ.211) THEN
24382           RKF=SFMIX(15,1)**2
24383         ELSEIF(ISUB.EQ.212) THEN
24384           RKF=SFMIX(15,2)**2
24385         ENDIF
24386           ISUB=210
24387       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
24388         IF(ISUB.EQ.213) THEN
24389           KFID=MOD(KFPR(ISUB,1),KSUSY1)
24390           RKF=2.0D0
24391         ELSEIF(ISUB.EQ.214) THEN
24392           KFID=16
24393           RKF=1.0D0
24394         ENDIF
24395         ISUB=213
24396  
24397 C...Neutralinos
24398       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
24399         IF(ISUB.EQ.216) THEN
24400           IZID1=1
24401           IZID2=1
24402         ELSEIF(ISUB.EQ.217) THEN
24403           IZID1=2
24404           IZID2=2
24405         ELSEIF(ISUB.EQ.218) THEN
24406           IZID1=3
24407           IZID2=3
24408         ELSEIF(ISUB.EQ.219) THEN
24409           IZID1=4
24410           IZID2=4
24411         ELSEIF(ISUB.EQ.220) THEN
24412           IZID1=1
24413           IZID2=2
24414         ELSEIF(ISUB.EQ.221) THEN
24415           IZID1=1
24416           IZID2=3
24417         ELSEIF(ISUB.EQ.222) THEN
24418           IZID1=1
24419           IZID2=4
24420         ELSEIF(ISUB.EQ.223) THEN
24421           IZID1=2
24422           IZID2=3
24423         ELSEIF(ISUB.EQ.224) THEN
24424           IZID1=2
24425           IZID2=4
24426         ELSEIF(ISUB.EQ.225) THEN
24427           IZID1=3
24428           IZID2=4
24429         ENDIF
24430         ISUB=216
24431  
24432 C...Charginos
24433       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
24434         IF(ISUB.EQ.226) THEN
24435           IZID1=1
24436           IZID2=1
24437         ELSEIF(ISUB.EQ.227) THEN
24438           IZID1=2
24439           IZID2=2
24440         ELSEIF(ISUB.EQ.228) THEN
24441           IZID1=1
24442           IZID2=2
24443         ENDIF
24444         ISUB=226
24445  
24446 C...Neutralino + chargino
24447       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
24448         IF(ISUB.EQ.229) THEN
24449           IZID1=1
24450           IZID2=1
24451         ELSEIF(ISUB.EQ.230) THEN
24452           IZID1=1
24453           IZID2=2
24454         ELSEIF(ISUB.EQ.231) THEN
24455           IZID1=1
24456           IZID2=3
24457         ELSEIF(ISUB.EQ.232) THEN
24458           IZID1=1
24459           IZID2=4
24460         ELSEIF(ISUB.EQ.233) THEN
24461           IZID1=2
24462           IZID2=1
24463         ELSEIF(ISUB.EQ.234) THEN
24464           IZID1=2
24465           IZID2=2
24466         ELSEIF(ISUB.EQ.235) THEN
24467           IZID1=2
24468           IZID2=3
24469         ELSEIF(ISUB.EQ.236) THEN
24470           IZID1=2
24471           IZID2=4
24472         ENDIF
24473         ISUB=229
24474  
24475 C...Gluino + neutralino
24476       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
24477         IF(ISUB.EQ.237) THEN
24478           IZID=1
24479         ELSEIF(ISUB.EQ.238) THEN
24480           IZID=2
24481         ELSEIF(ISUB.EQ.239) THEN
24482           IZID=3
24483         ELSEIF(ISUB.EQ.240) THEN
24484           IZID=4
24485         ENDIF
24486         ISUB=237
24487  
24488 C...Gluino + chargino
24489       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
24490         IF(ISUB.EQ.241) THEN
24491           IZID=1
24492         ELSEIF(ISUB.EQ.242) THEN
24493           IZID=2
24494         ENDIF
24495         ISUB=241
24496  
24497 C...Squark + neutralino
24498       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
24499         ILR=0
24500         IF(MOD(ISUB,2).NE.0) ILR=1
24501         IF(ISUB.LE.247) THEN
24502           IZID=1
24503         ELSEIF(ISUB.LE.249) THEN
24504           IZID=2
24505         ELSEIF(ISUB.LE.251) THEN
24506           IZID=3
24507         ELSEIF(ISUB.LE.253) THEN
24508           IZID=4
24509         ENDIF
24510         ISUB=246
24511         RKF=5D0
24512  
24513 C...Squark + chargino
24514       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
24515         IF(ISUB.LE.255) THEN
24516           IZID=1
24517         ELSEIF(ISUB.LE.257) THEN
24518           IZID=2
24519         ENDIF
24520         IF(MOD(ISUB,2).EQ.0) THEN
24521           ILR=0
24522         ELSE
24523           ILR=1
24524         ENDIF
24525         ISUB=254
24526         RKF=5D0
24527  
24528 C...Squark + gluino
24529       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
24530         ISUB=258
24531         RKF=4D0
24532  
24533 C...Stops
24534       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
24535         ILR=0
24536         IF(ISUB.EQ.262) ILR=1
24537         ISUB=261
24538       ELSEIF(ISUB.EQ.265) THEN
24539         ISUB=264
24540  
24541 C...Squarks
24542       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
24543         ILR=0
24544         IF(ISUB.LE.273) THEN
24545           IF(ISUB.EQ.273) ILR=1
24546           ISUB=271
24547           RKF=16D0
24548         ELSEIF(ISUB.LE.276) THEN
24549           IF(ISUB.EQ.276) ILR=1
24550           ISUB=274
24551           RKF=16D0
24552         ELSEIF(ISUB.LE.278) THEN
24553           IF(ISUB.EQ.278) ILR=1
24554           ISUB=277
24555           RKF=4D0
24556         ELSE
24557           IF(ISUB.EQ.280) ILR=1
24558           ISUB=279
24559           RKF=4D0
24560         ENDIF
24561 C...Sbottoms
24562       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
24563         ILR=0
24564         IF(ISUB.LE.283) THEN
24565           IF(ISUB.EQ.283) ILR=1
24566           ISUB=271
24567           RKF=4D0
24568         ELSEIF(ISUB.LE.286) THEN
24569           IF(ISUB.EQ.286) ILR=1
24570           ISUB=274
24571           RKF=4D0
24572         ELSEIF(ISUB.LE.288) THEN
24573           IF(ISUB.EQ.288) ILR=1
24574           ISUB=277
24575           RKF=1D0
24576         ELSEIF(ISUB.LE.290) THEN
24577           IF(ISUB.EQ.290) ILR=1
24578           ISUB=279
24579           RKF=1D0
24580         ELSEIF(ISUB.LE.293) THEN
24581           IF(ISUB.EQ.293) ILR=1
24582           ISUB=271
24583           RKF=1D0
24584         ELSEIF(ISUB.EQ.296) THEN
24585           ILR=1
24586           ISUB=274
24587           RKF=1D0
24588 C...Squark + gluino
24589         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
24590           ISUB=258
24591           RKF=1D0
24592         ENDIF
24593 C...H+/- + H0
24594       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
24595         IF(ISUB.EQ.297) THEN
24596           RKF=.5D0*PARU(195)**2
24597         ELSEIF(ISUB.EQ.298) THEN
24598           RKF=.5D0*(1D0-PARU(195)**2)
24599         ENDIF
24600         ISUB=210
24601 C...A0 + H0
24602       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
24603         IF(ISUB.EQ.299) THEN
24604           RKF=PARU(186)**2
24605           KFID=25
24606         ELSEIF(ISUB.EQ.300) THEN
24607           RKF=PARU(187)**2
24608           KFID=35
24609         ENDIF
24610         ISUB=213
24611 C...H+ + H-
24612       ELSEIF(ISUB.EQ.301) THEN
24613         KFID=37
24614         RKF=1D0
24615         ISUB=201
24616       ENDIF
24617  
24618 C...Supersymmetric processes - all of type 2 -> 2 :
24619 C...correct final-state Breit-Wigners from fixed to running width.
24620       IF(MSTP(42).GT.0) THEN
24621         DO 100 I=1,2
24622         KFLW=KFPR(ISUBSV,I)
24623         KCW=PYCOMP(KFLW)
24624         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
24625         IF(I.EQ.1) SQMI=SQM3
24626         IF(I.EQ.2) SQMI=SQM4
24627         SQMS=PMAS(KCW,1)**2
24628         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
24629         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
24630         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
24631         GMMI=SQRT(SQMI)*WDTP(0)
24632         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
24633         COMFAC=COMFAC*(HBWI/HBWS)
24634   100   CONTINUE
24635       ENDIF
24636  
24637 C...Differential cross section expressions.
24638  
24639       IF(ISUB.LE.210) THEN
24640         IF(ISUB.EQ.201) THEN
24641 C...f + fbar -> e_L + e_Lbar
24642           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24643           DO 130 I=MMIN1,MMAX1
24644             IA=IABS(I)
24645             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
24646             EI=KCHG(IA,1)/3D0
24647             TT3I=SIGN(1D0,EI+1D-6)/2D0
24648             EJ=-1D0
24649             TT3J=-1D0/2D0
24650             FCOL=1D0
24651 C...Color factor for e+ e-
24652             IF(IA.GE.11) FCOL=3D0
24653             IF(ISUBSV.EQ.301) THEN
24654               A1=1D0
24655               A2=0D0
24656             ELSEIF(ILR.EQ.1) THEN
24657               A1=SFMIX(KFID,3)**2
24658               A2=SFMIX(KFID,4)**2
24659             ELSEIF(ILR.EQ.0) THEN
24660               A1=SFMIX(KFID,1)**2
24661               A2=SFMIX(KFID,2)**2
24662             ENDIF
24663             XLQ=(TT3J-EJ*XW)*A1
24664             XRQ=(-EJ*XW)*A2
24665             XLF=(TT3I-EI*XW)
24666             XRF=(-EI*XW)
24667             TAA=(EI*EJ)**2*(POLL+POLR)
24668             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
24669             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
24670             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
24671             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
24672             TNN=0.0D0
24673             TAN=0.0D0
24674             TZN=0.0D0
24675             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
24676               FAC2=SQRT(2D0)
24677               TNN1=0D0
24678               TNN2=0D0
24679               TNN3=0D0
24680               DO 120 II=1,4
24681                 DK=1D0/(TH-SMZ(II)**2)
24682                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
24683      &          ZMIX(II,1))
24684                 FREK=FAC2*TANW*EI*ZMIX(II,1)
24685                 TNN1=TNN1+FLEK**2*DK
24686                 TNN2=TNN2+FREK**2*DK
24687                 DO 110 JJ=1,4
24688                   DL=1D0/(TH-SMZ(JJ)**2)
24689                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
24690      &            ZMIX(JJ,1))
24691                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
24692                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
24693   110           CONTINUE
24694   120         CONTINUE
24695               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
24696      &        A2**2*TNN2**2*POLR)
24697               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
24698      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
24699               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
24700      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
24701               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
24702      &        (1D0-SQMZ/SH)/SH
24703               TZN=TZN/XW**2/XW1
24704               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
24705      &        A2*TNN2*POLR)/XW
24706             ENDIF
24707             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
24708             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
24709             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
24710             NCHN=NCHN+1
24711             ISIG(NCHN,1)=I
24712             ISIG(NCHN,2)=-I
24713             ISIG(NCHN,3)=1
24714             SIGH(NCHN)=FACQQ1+FACQQ2
24715   130     CONTINUE
24716  
24717         ELSEIF(ISUB.EQ.203) THEN
24718 C...f + fbar -> e_L + e_Rbar
24719           DO 160 I=MMIN1,MMAX1
24720             IA=IABS(I)
24721             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
24722             EI=KCHG(IABS(I),1)/3D0
24723             TT3I=SIGN(1D0,EI)/2D0
24724             EJ=-1
24725             TT3J=-1D0/2D0
24726             FCOL=1D0
24727 C...Color factor for e+ e-
24728             IF(IA.GE.11) FCOL=3D0
24729             A1=SFMIX(KFID,1)**2
24730             A2=SFMIX(KFID,2)**2
24731             XLQ=(TT3J-EJ*XW)
24732             XRQ=(-EJ*XW)
24733             XLF=(TT3I-EI*XW)
24734             XRF=(-EI*XW)
24735             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
24736      &      /XW**2/XW1**2*A1*A2
24737             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
24738             TNN=0.0D0
24739             TZN=0.0D0
24740             TNNA=0D0
24741             TNNB=0D0
24742             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
24743               FAC2=SQRT(2D0)
24744               TNN1=0D0
24745               TNN2=0D0
24746               TNN3=0D0
24747               DO 150 II=1,4
24748                 DK=1D0/(TH-SMZ(II)**2)
24749                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
24750      &          ZMIX(II,1))
24751                 FREK=FAC2*TANW*EI*ZMIX(II,1)
24752                 TNN1=TNN1+FLEK**2*DK
24753                 TNN2=TNN2+FREK**2*DK
24754                 DO 140 JJ=1,4
24755                   DL=1D0/(TH-SMZ(JJ)**2)
24756                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
24757      &            ZMIX(JJ,1))
24758                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
24759                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
24760   140           CONTINUE
24761   150         CONTINUE
24762               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
24763               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
24764               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
24765               TZN=(UH*TH-SQM3*SQM4)*A1*A2
24766               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
24767               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
24768      &        (1D0-SQMZ/SH)/SH
24769             ENDIF
24770             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
24771             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
24772             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
24773 C%%%%%%%%%%%
24774             NCHN=NCHN+1
24775             ISIG(NCHN,1)=I
24776             ISIG(NCHN,2)=-I
24777             ISIG(NCHN,3)=1
24778             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24779      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
24780             NCHN=NCHN+1
24781             ISIG(NCHN,1)=I
24782             ISIG(NCHN,2)=-I
24783             ISIG(NCHN,3)=2
24784             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
24785      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24786   160     CONTINUE
24787  
24788         ELSEIF(ISUB.EQ.210) THEN
24789 C...q + qbar' -> W*- > ~l_L + ~nu_L
24790           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
24791           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
24792           DO 180 I=MMIN1,MMAX1
24793             IA=IABS(I)
24794             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
24795             DO 170 J=MMIN2,MMAX2
24796               JA=IABS(J)
24797               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
24798               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
24799               FCKM=3D0
24800               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
24801               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
24802               KCHW=2
24803               IF(KCHSUM.LT.0) KCHW=3
24804               NCHN=NCHN+1
24805               ISIG(NCHN,1)=I
24806               ISIG(NCHN,2)=J
24807               ISIG(NCHN,3)=1
24808               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
24809                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
24810      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24811               ELSE
24812                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
24813      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
24814               ENDIF
24815               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
24816   170       CONTINUE
24817   180     CONTINUE
24818         ENDIF
24819  
24820       ELSEIF(ISUB.LE.220) THEN
24821         IF(ISUB.EQ.213) THEN
24822 C...f + fbar -> ~nu_L + ~nu_Lbar
24823           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
24824             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24825      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24826           ELSE
24827             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24828           ENDIF
24829           COMFAC=COMFAC*FACR
24830           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
24831           XLL=0.5D0
24832           XLR=0.0D0
24833           DO 190 I=MMIN1,MMAX1
24834             IA=IABS(I)
24835             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
24836             EI=KCHG(IA,1)/3D0
24837             FCOL=1D0
24838 C...Color factor for e+ e-
24839             IF(IA.GE.11) FCOL=3D0
24840             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
24841             XRQ=-EI*XW
24842             TZC=0.0D0
24843             TCC=0.0D0
24844             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
24845               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
24846      &        (TH-SMW(2)**2)
24847               TCC=TZC**2
24848               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
24849             ENDIF
24850             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
24851             FACQQ2=TZC+TCC/4D0
24852             NCHN=NCHN+1
24853             ISIG(NCHN,1)=I
24854             ISIG(NCHN,2)=-I
24855             ISIG(NCHN,3)=1
24856             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
24857      &      *AEM**2*FCOL/3D0/XW**2
24858   190     CONTINUE
24859  
24860         ELSEIF(ISUB.EQ.216) THEN
24861 C...q + qbar -> ~chi0_1 + ~chi0_1
24862           IF(IZID1.EQ.IZID2) THEN
24863             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24864           ELSE
24865             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24866      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24867           ENDIF
24868           FACXX=COMFAC*AEM**2/3D0/XW**2
24869           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
24870           ZM12=SQM3
24871           ZM22=SQM4
24872           WU2 = (UH-ZM12)*(UH-ZM22)
24873           WT2 = (TH-ZM12)*(TH-ZM22)
24874           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
24875           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
24876           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
24877           DO 200 I=1,4
24878             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
24879             IF(IZID2.NE.IZID1) THEN
24880               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
24881             ENDIF
24882   200     CONTINUE
24883           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
24884      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
24885           ORPP=DCONJG(OLPP)
24886           DO 210 I=MMINA,MMAXA
24887             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
24888             EI=KCHG(IABS(I),1)/3D0
24889             T3I=SIGN(1D0,EI+1D-6)/2D0
24890             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
24891             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
24892             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
24893      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
24894             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
24895             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
24896             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
24897      &      /DCMPLX(TH-XML2)
24898             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
24899             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
24900      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
24901             FCOL=1D0
24902             IF(IABS(I).GE.11) FCOL=3D0
24903             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
24904      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
24905      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
24906      &      QRL*DCONJG(QRR)*POLR)*WS2
24907             NCHN=NCHN+1
24908             ISIG(NCHN,1)=I
24909             ISIG(NCHN,2)=-I
24910             ISIG(NCHN,3)=1
24911             SIGH(NCHN)=FACXX*FACGG1*FCOL
24912   210     CONTINUE
24913         ENDIF
24914  
24915       ELSEIF(ISUB.LE.230) THEN
24916         IF(ISUB.EQ.226) THEN
24917 C...f + fbar -> ~chi+_1 + ~chi-_1
24918           FACXX=COMFAC*AEM**2/3D0
24919           ZM12=SQM3
24920           ZM22=SQM4
24921           WU2 = (UH-ZM12)*(UH-ZM22)
24922           WT2 = (TH-ZM12)*(TH-ZM22)
24923           WS2 = SMW(IZID1)*SMW(IZID2)*SH
24924           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
24925           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
24926           DIFF=0D0
24927           IF(IZID1.EQ.IZID2) DIFF=1D0
24928           DO 220 I=1,2
24929             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
24930             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
24931             IF(IZID2.NE.IZID1) THEN
24932               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
24933               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
24934             ENDIF
24935   220     CONTINUE
24936           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
24937      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
24938           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
24939      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
24940           DO 230 I=MMINA,MMAXA
24941             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
24942             EI=KCHG(IABS(I),1)/3D0
24943             T3I=SIGN(1D0,EI+1D-6)/2D0
24944             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
24945             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
24946             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
24947             IF(MOD(I,2).EQ.0) THEN
24948               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
24949               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
24950      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
24951      &        DCMPLX(T3I/XW/(TH-XML2))
24952             ELSE
24953               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)+1),1)**2
24954               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
24955      &        PROPZ*OLP-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
24956      &        DCMPLX(T3I/XW/(TH-XML2))
24957             ENDIF
24958             FCOL=1D0
24959             IF(IABS(I).GE.11) FCOL=3D0
24960             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
24961      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
24962      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
24963      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
24964             NCHN=NCHN+1
24965             ISIG(NCHN,1)=I
24966             ISIG(NCHN,2)=-I
24967             ISIG(NCHN,3)=1
24968             IF(IZID1.EQ.IZID2) THEN
24969               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24970             ELSE
24971               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
24972      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24973               NCHN=NCHN+1
24974               ISIG(NCHN,1)=I
24975               ISIG(NCHN,2)=-I
24976               ISIG(NCHN,3)=2
24977               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24978      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
24979             ENDIF
24980   230     CONTINUE
24981  
24982         ELSEIF(ISUB.EQ.229) THEN
24983 C...q + qbar' -> ~chi0_1 + ~chi+-_1
24984           FACXX=COMFAC*AEM**2/6D0/XW**2
24985           ZM12=SQM3
24986           ZM22=SQM4
24987           WU2 = (UH-ZM12)*(UH-ZM22)
24988           WT2 = (TH-ZM12)*(TH-ZM22)
24989           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
24990           RT2I = 1D0/SQRT(2D0)
24991           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
24992      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
24993           DO 240 I=1,2
24994             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
24995             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
24996   240     CONTINUE
24997           DO 250 I=1,4
24998             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
24999   250     CONTINUE
25000           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
25001      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
25002           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
25003      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
25004  
25005           DO 270 I=MMIN1,MMAX1
25006             IA=IABS(I)
25007             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
25008             EI=KCHG(IA,1)/3D0
25009             T3I=SIGN(1D0,EI+1D-6)/2D0
25010             DO 260 J=MMIN2,MMAX2
25011               JA=IABS(J)
25012               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
25013               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
25014               EJ=KCHG(JA,1)/3D0
25015               T3J=SIGN(1D0,EJ+1D-6)/2D0
25016               FCKM=3D0
25017               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
25018               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
25019               KCHW=2
25020               IF(KCHSUM.LT.0) KCHW=3
25021               IF(MOD(IA,2).EQ.0) THEN
25022                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
25023                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
25024                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
25025      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
25026                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
25027      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
25028      &          /DCMPLX(TH-ZMJ2)
25029               ELSE
25030                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
25031                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
25032                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
25033      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
25034                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
25035      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
25036      &          /DCMPLX(TH-ZMI2)
25037               ENDIF
25038               ZINTR=DBLE(QLR*DCONJG(QLL))
25039               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
25040      &        2D0*ZINTR*WS2)
25041               NCHN=NCHN+1
25042               ISIG(NCHN,1)=I
25043               ISIG(NCHN,2)=J
25044               ISIG(NCHN,3)=1
25045               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25046      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
25047   260       CONTINUE
25048   270     CONTINUE
25049         ENDIF
25050  
25051       ELSEIF(ISUB.LE.240) THEN
25052         IF(ISUB.EQ.237) THEN
25053 C...q + qbar -> gluino + ~chi0_1
25054           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25055      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25056           FAC0=COMFAC*AS*AEM*4D0/9D0/XW
25057           GM2=SQM3
25058           ZM2=SQM4
25059           DO 280 I=MMINA,MMAXA
25060             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 280
25061             EI=KCHG(IABS(I),1)/3D0
25062             IA=IABS(I)
25063             XLQC = -TANW*EI*ZMIX(IZID,1)
25064             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
25065      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
25066             XLQ2=XLQC**2
25067             XRQ2=XRQC**2
25068             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
25069             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
25070             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
25071             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
25072             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
25073             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
25074             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
25075             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
25076             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
25077             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
25078             NCHN=NCHN+1
25079             ISIG(NCHN,1)=I
25080             ISIG(NCHN,2)=-I
25081             ISIG(NCHN,3)=1
25082             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
25083   280     CONTINUE
25084         ENDIF
25085  
25086       ELSEIF(ISUB.LE.250) THEN
25087         IF(ISUB.EQ.241) THEN
25088 C...q + qbar' -> ~chi+-_1 + gluino
25089           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
25090           GM2=SQM3
25091           ZM2=SQM4
25092           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
25093           FAC0=UMIX(IZID,1)**2
25094           FAC1=VMIX(IZID,1)**2
25095           DO 300 I=MMIN1,MMAX1
25096             IA=IABS(I)
25097             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
25098             DO 290 J=MMIN2,MMAX2
25099               JA=IABS(J)
25100               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
25101               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
25102               FCKM=1D0
25103               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
25104               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
25105               KCHW=2
25106               IF(KCHSUM.LT.0) KCHW=3
25107               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
25108               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
25109               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
25110               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
25111               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
25112               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
25113               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
25114               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
25115               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
25116               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
25117      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
25118               NCHN=NCHN+1
25119               ISIG(NCHN,1)=I
25120               ISIG(NCHN,2)=J
25121               ISIG(NCHN,3)=1
25122               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
25123      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25124      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
25125   290       CONTINUE
25126   300     CONTINUE
25127  
25128         ELSEIF(ISUB.EQ.243) THEN
25129 C...q + qbar -> gluino + gluino
25130           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25131           XMT=SQM3-TH
25132           XMU=SQM3-UH
25133           DO 310 I=MMINA,MMAXA
25134             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
25135      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
25136             NCHN=NCHN+1
25137             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
25138             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
25139             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
25140      &      2D0*SQM3*SH)/SH2 +4D0/9D0*(XMT**2/XST**2+
25141      &      XMU**2/XSU**2) - (XMT**2+SH*SQM3)/SH/XST +
25142      &      SQM3*SH/XST/XSU/9D0- (XMU**2+SH*SQM3)/SH/XSU )
25143             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
25144             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
25145             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
25146      &      2D0*SQM3*SH)/SH2 +4D0/9D0*(XMT**2/XST**2+
25147      &      XMU**2/XSU**2) - (XMT**2+SH*SQM3)/SH/XST +
25148      &      SQM3*SH/XST/XSU/9D0- (XMU**2+SH*SQM3)/SH/XSU )
25149             ISIG(NCHN,1)=I
25150             ISIG(NCHN,2)=-I
25151             ISIG(NCHN,3)=1
25152 C...1/2 for identical particles
25153             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
25154   310     CONTINUE
25155  
25156         ELSEIF(ISUB.EQ.244) THEN
25157 C...g + g -> gluino + gluino
25158           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25159           XMT=SQM3-TH
25160           XMU=SQM3-UH
25161           FACQQ1=COMFAC*AS**2*9D0/4D0*(
25162      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
25163      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
25164           FACQQ2=COMFAC*AS**2*9D0/4D0*(
25165      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
25166      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
25167           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
25168      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
25169           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
25170           NCHN=NCHN+1
25171           ISIG(NCHN,1)=21
25172           ISIG(NCHN,2)=21
25173           ISIG(NCHN,3)=1
25174           SIGH(NCHN)=FACQQ1/2D0
25175           NCHN=NCHN+1
25176           ISIG(NCHN,1)=21
25177           ISIG(NCHN,2)=21
25178           ISIG(NCHN,3)=2
25179           SIGH(NCHN)=FACQQ2/2D0
25180           NCHN=NCHN+1
25181           ISIG(NCHN,1)=21
25182           ISIG(NCHN,2)=21
25183           ISIG(NCHN,3)=3
25184           SIGH(NCHN)=FACQQ3/2D0
25185   320     CONTINUE
25186  
25187         ELSEIF(ISUB.EQ.246) THEN
25188 C...g + q_j -> ~chi0_1 + ~q_j
25189           FAC0=COMFAC*AS*AEM/6D0/XW
25190           ZM2=SQM4
25191           QM2=SQM3
25192           FACZQ0=FAC0*( (ZM2-TH)/SH +
25193      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
25194      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
25195           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25196           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
25197             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
25198             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
25199             EI=KCHG(IABS(I),1)/3D0
25200             IA=IABS(I)
25201             XRQZ = -TANW*EI*ZMIX(IZID,1)
25202             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
25203      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
25204             IF(ILR.EQ.0) THEN
25205               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
25206             ELSE
25207               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
25208             ENDIF
25209             FACZQ=FACZQ0*BS
25210             KCHQ=2
25211             IF(I.LT.0) KCHQ=3
25212             DO 330 ISDE=1,2
25213               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
25214               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
25215               NCHN=NCHN+1
25216               ISIG(NCHN,ISDE)=I
25217               ISIG(NCHN,3-ISDE)=21
25218               ISIG(NCHN,3)=1
25219               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25220      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25221   330       CONTINUE
25222   340     CONTINUE
25223         ENDIF
25224  
25225       ELSEIF(ISUB.LE.260) THEN
25226         IF(ISUB.EQ.254) THEN
25227 C...g + q_j -> ~chi1_1 + ~q_i
25228           FAC0=COMFAC*AS*AEM/12D0/XW
25229           ZM2=SQM4
25230           QM2=SQM3
25231           AU=UMIX(IZID,1)**2
25232           AD=VMIX(IZID,1)**2
25233           FACZQ0=FAC0*( (ZM2-TH)/SH +
25234      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
25235      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
25236           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
25237           IF(MOD(KFNSQ1,2).EQ.0) THEN
25238             KFNSQ=KFNSQ1-1
25239             KCHW=2
25240           ELSE
25241             KFNSQ=KFNSQ1+1
25242             KCHW=3
25243           ENDIF
25244           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
25245             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
25246             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
25247             IA=IABS(I)
25248             IF(MOD(IA,2).EQ.0) THEN
25249               FACZQ=FACZQ0*AU
25250             ELSE
25251               FACZQ=FACZQ0*AD
25252             ENDIF
25253             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
25254             KCHQ=2
25255             IF(I.LT.0) KCHQ=3
25256             KCHWQ=KCHW
25257             IF(I.LT.0) KCHWQ=5-KCHW
25258             DO 350 ISDE=1,2
25259               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
25260               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
25261               NCHN=NCHN+1
25262               ISIG(NCHN,ISDE)=I
25263               ISIG(NCHN,3-ISDE)=21
25264               ISIG(NCHN,3)=1
25265               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25266      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
25267   350       CONTINUE
25268   360     CONTINUE
25269  
25270         ELSEIF(ISUB.EQ.258) THEN
25271 C...g + q_j -> gluino + ~q_i
25272           XG2=SQM4
25273           XQ2=SQM3
25274           XMT=XG2-TH
25275           XMU=XG2-UH
25276           XST=XQ2-TH
25277           XSU=XQ2-UH
25278           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
25279      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
25280      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
25281      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
25282           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
25283      &    (SH*(UH+XG2)
25284      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
25285      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
25286      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
25287           FACQG1=COMFAC*AS**2*FACQG1/2D0
25288           FACQG2=COMFAC*AS**2*FACQG2/2D0
25289           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25290           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
25291             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
25292             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
25293             KCHQ=2
25294             IF(I.LT.0) KCHQ=3
25295             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25296      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25297             DO 370 ISDE=1,2
25298               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
25299               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
25300               NCHN=NCHN+1
25301               ISIG(NCHN,ISDE)=I
25302               ISIG(NCHN,3-ISDE)=21
25303               ISIG(NCHN,3)=1
25304               SIGH(NCHN)=FACQG1*FACSEL
25305               NCHN=NCHN+1
25306               ISIG(NCHN,ISDE)=I
25307               ISIG(NCHN,3-ISDE)=21
25308               ISIG(NCHN,3)=2
25309               SIGH(NCHN)=FACQG2*FACSEL
25310   370       CONTINUE
25311   380     CONTINUE
25312         ENDIF
25313  
25314       ELSEIF(ISUB.LE.270) THEN
25315         IF(ISUB.EQ.261) THEN
25316 C...q_i + q_ibar -> ~t_1 + ~t_1bar
25317           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
25318      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25319           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25320           FAC0=AS**2*4D0/9D0
25321           DO 390 I=MMIN1,MMAX1
25322             IA=IABS(I)
25323             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
25324             IF(IA.GE.11.AND.IA.LE.18) THEN
25325               EI=KCHG(IA,1)/3D0
25326               EJ=KCHG(KFNSQ,1)/3D0
25327               T3I=SIGN(1D0,EI)/2D0
25328               T3J=SIGN(1D0,EJ)/2D0
25329               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
25330               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
25331               XLF=2D0*(T3I-EI*XW)
25332               XRF=2D0*(-EI*XW)
25333               TAA=0.5D0*(EI*EJ)**2
25334               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
25335               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25336               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
25337               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
25338               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
25339             ENDIF
25340             NCHN=NCHN+1
25341             ISIG(NCHN,1)=I
25342             ISIG(NCHN,2)=-I
25343             ISIG(NCHN,3)=1
25344             SIGH(NCHN)=FACQQ1*FAC0
25345   390     CONTINUE
25346  
25347         ELSEIF(ISUB.EQ.263) THEN
25348 C...f + fbar -> ~t1 + ~t2bar
25349           DO 400 I=MMIN1,MMAX1
25350             IA=IABS(I)
25351             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
25352             EI=KCHG(IABS(I),1)/3D0
25353             TT3I=SIGN(1D0,EI)/2D0
25354             EJ=2D0/3D0
25355             TT3J=1D0/2D0
25356             FCOL=1D0
25357 C...Color factor for e+ e-
25358             IF(IA.GE.11) FCOL=3D0
25359             XLQ=2D0*(TT3J-EJ*XW)
25360             XRQ=2D0*(-EJ*XW)
25361             XLF=2D0*(TT3I-EI*XW)
25362             XRF=2D0*(-EI*XW)
25363             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
25364             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
25365             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25366 C...Factor of 2 for t1 t2bar + t2 t1bar
25367             FACQQ1=2D0*COMFAC*AEM**2*TZZ*FCOL*4D0
25368             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
25369             NCHN=NCHN+1
25370             ISIG(NCHN,1)=I
25371             ISIG(NCHN,2)=-I
25372             ISIG(NCHN,3)=1
25373             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25374      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
25375             NCHN=NCHN+1
25376             ISIG(NCHN,1)=I
25377             ISIG(NCHN,2)=-I
25378             ISIG(NCHN,3)=2
25379             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
25380      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25381   400     CONTINUE
25382  
25383         ELSEIF(ISUB.EQ.264) THEN
25384 C...g + g -> ~t_1 + ~t_1bar
25385           XSU=SQM3-UH
25386           XST=SQM3-TH
25387           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
25388      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25389           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
25390           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
25391           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
25392           NCHN=NCHN+1
25393           ISIG(NCHN,1)=21
25394           ISIG(NCHN,2)=21
25395           ISIG(NCHN,3)=1
25396           SIGH(NCHN)=FACQQ1
25397           NCHN=NCHN+1
25398           ISIG(NCHN,1)=21
25399           ISIG(NCHN,2)=21
25400           ISIG(NCHN,3)=2
25401           SIGH(NCHN)=FACQQ2
25402   410     CONTINUE
25403         ENDIF
25404  
25405       ELSEIF(ISUB.LE.280) THEN
25406         IF(ISUB.EQ.271) THEN
25407 C...q + q' -> ~q + ~q' (~g exchange)
25408           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
25409           XMT=XMG2-TH
25410           XMU=XMG2-UH
25411           XSU1=SQM3-UH
25412           XSU2=SQM4-UH
25413           XST1=SQM3-TH
25414           XST2=SQM4-TH
25415           IF(ILR.EQ.1) THEN
25416             FACQQ1=COMFAC*AS**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
25417             FACQQ2=COMFAC*AS**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
25418             FACQQB=0.0D0
25419           ELSE
25420             FACQQ1=0.5D0*COMFAC*AS**2*4D0/9D0*( SH*XMG2/XMT**2 )
25421             FACQQ2=0.5D0*COMFAC*AS**2*4D0/9D0*( SH*XMG2/XMU**2 )
25422             FACQQB=0.5D0*COMFAC*AS**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
25423      &      XMT/XMU )
25424           ENDIF
25425           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
25426           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
25427           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
25428             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
25429             IA=IABS(I)
25430             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
25431             KCHQ=2
25432             IF(I.LT.0) KCHQ=3
25433             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
25434               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
25435               JA=IABS(J)
25436               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
25437               IF(I*J.LT.0) GOTO 420
25438               NCHN=NCHN+1
25439               ISIG(NCHN,1)=I
25440               ISIG(NCHN,2)=J
25441               ISIG(NCHN,3)=1
25442               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25443      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25444               IF(I.EQ.J) THEN
25445                 IF(ILR.EQ.0) THEN
25446                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
25447      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
25448                 ELSE
25449                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
25450      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25451      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25452                 ENDIF
25453                 NCHN=NCHN+1
25454                 ISIG(NCHN,1)=I
25455                 ISIG(NCHN,2)=J
25456                 ISIG(NCHN,3)=2
25457                 IF(ILR.EQ.0) THEN
25458                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
25459      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
25460                 ELSE
25461                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
25462      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25463      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25464                 ENDIF
25465               ENDIF
25466   420       CONTINUE
25467   430     CONTINUE
25468  
25469         ELSEIF(ISUB.EQ.274) THEN
25470 C...q + qbar' -> ~q + ~qbar'
25471           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
25472           XMT=XMG2-TH
25473           XMU=XMG2-UH
25474           IF(ILR.EQ.0) THEN
25475 C...Mrenna...Normalization.and.1/XMT
25476             FACQQ1=COMFAC*AS**2*2D0/9D0*(
25477      &      (UH*TH-SQM3*SQM4)/XMT**2 )
25478             FACQQB=COMFAC*AS**2*2D0/9D0*(
25479      &      (UH*TH-SQM3*SQM4)/SH2*(2D0-2D0/3D0*SH/XMT))
25480             FACQQB=FACQQB+FACQQ1
25481           ELSE
25482             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )
25483             FACQQB=FACQQ1
25484           ENDIF
25485           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
25486           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
25487           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
25488             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
25489             IA=IABS(I)
25490             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
25491             KCHQ=2
25492             IF(I.LT.0) KCHQ=3
25493             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
25494               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
25495               JA=IABS(J)
25496               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
25497               IF(I*J.GT.0) GOTO 440
25498               NCHN=NCHN+1
25499               ISIG(NCHN,1)=I
25500               ISIG(NCHN,2)=J
25501               ISIG(NCHN,3)=1
25502               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25503      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
25504               IF(I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
25505      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25506   440       CONTINUE
25507   450     CONTINUE
25508  
25509         ELSEIF(ISUB.EQ.277) THEN
25510 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
25511 C...if i .eq. j covered in 274
25512           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
25513           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25514           FAC0=0D0
25515           DO 460 I=MMIN1,MMAX1
25516             IA=IABS(I)
25517             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.
25518      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
25519             IF(IA.EQ.KFNSQ) GOTO 460
25520             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
25521               EI=KCHG(IA,1)/3D0
25522               EJ=KCHG(KFNSQ,1)/3D0
25523               T3J=SIGN(0.5D0,EJ)
25524               T3I=SIGN(1D0,EI)/2D0
25525               IF(ILR.EQ.0) THEN
25526                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
25527                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
25528               ELSE
25529                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
25530                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
25531               ENDIF
25532               XLF=2D0*(T3I-EI*XW)
25533               XRF=2D0*(-EI*XW)
25534               IF(ILR.EQ.0) THEN
25535                 XRQ=0D0
25536               ELSE
25537                 XLQ=0D0
25538               ENDIF
25539               TAA=0.5D0*(EI*EJ)**2
25540               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
25541               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25542               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
25543               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
25544               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
25545             ELSEIF(IA.LE.6) THEN
25546               FAC0=AS**2*8D0/9D0/2D0
25547             ENDIF
25548             NCHN=NCHN+1
25549             ISIG(NCHN,1)=I
25550             ISIG(NCHN,2)=-I
25551             ISIG(NCHN,3)=1
25552             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25553   460     CONTINUE
25554  
25555         ELSEIF(ISUB.EQ.279) THEN
25556 C...g + g -> ~q_j + ~q_jbar
25557           XSU=SQM3-UH
25558           XST=SQM3-TH
25559 C...5=RKF because ~t ~tbar treated separately
25560           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
25561           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
25562           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
25563           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
25564           NCHN=NCHN+1
25565           ISIG(NCHN,1)=21
25566           ISIG(NCHN,2)=21
25567           ISIG(NCHN,3)=1
25568           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25569           NCHN=NCHN+1
25570           ISIG(NCHN,1)=21
25571           ISIG(NCHN,2)=21
25572           ISIG(NCHN,3)=2
25573           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25574   470     CONTINUE
25575  
25576         ENDIF
25577       ENDIF
25578 CMRENNA--
25579  
25580       RETURN
25581       END
25582  
25583 C*********************************************************************
25584  
25585 C...PYSGTC
25586 C...Subprocess cross sections for Technicolor processes.
25587 C...Auxiliary to PYSIGH.
25588  
25589       SUBROUTINE PYSGTC(NCHN,SIGS)
25590  
25591 C...Double precision and integer declarations
25592       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
25593       IMPLICIT INTEGER(I-N)
25594       INTEGER PYK,PYCHGE,PYCOMP
25595 C...Parameter statement to help give large particle numbers.
25596       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
25597      &KEXCIT=4000000,KDIMEN=5000000)
25598 C...Commonblocks
25599       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
25600       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
25601       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
25602       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
25603       COMMON/PYINT1/MINT(400),VINT(400)
25604       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
25605       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
25606       COMMON/PYINT4/MWID(500),WIDS(500,5)
25607       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
25608       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
25609      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
25610      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
25611      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
25612       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
25613      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
25614 C...Local arrays and complex variables
25615       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
25616       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
25617       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
25618       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
25619       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
25620       COMPLEX*16 DVVS,DVVT,DVVU
25621       INTEGER INDX(6)
25622  
25623 C...Combinations of weak mixing angle.
25624       TANW=SQRT(XW/XW1)
25625       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
25626  
25627 C...Convert almost equivalent technicolor processes into
25628 C...a few basic processes, and set distinguishing parameters.
25629       IF(ISUB.GE.361.AND.ISUB.LE.379) THEN
25630         SQTV=RTCM(12)**2
25631         SQTA=RTCM(13)**2
25632         SN2W=2D0*SQRT(PARU(102)*(1D0-PARU(102)))
25633         CS2W=1D0-2D0*PARU(102)
25634         TANW=SQRT(PARU(102)/(1D0-PARU(102)))
25635         CT2W=CS2W/SN2W
25636         CSXI=COS(ASIN(RTCM(3)))
25637         CSXIP=COS(ASIN(RTCM(4)))
25638         QUPD=2D0*RTCM(2)-1D0
25639         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
25640 C... rho_tc0 -> W_L W_L
25641         IF(ISUB.EQ.361) THEN
25642            KFA=24
25643            KFB=24
25644            CAB2=RTCM(3)**4
25645 C... rho_tc0 -> W_L pi_tc-
25646         ELSEIF(ISUB.EQ.362) THEN
25647            KFA=24
25648            KFB=KTECHN+211
25649            ISUB=361
25650            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25651 C... pi_tc pi_tc
25652         ELSEIF(ISUB.EQ.363) THEN
25653            KFA=KTECHN+211
25654            KFB=KTECHN+211
25655            ISUB=361
25656            CAB2=(1D0-RTCM(3)**2)**2
25657 C... rho_tc0/omega_tc -> gamma pi_tc
25658         ELSEIF(ISUB.EQ.364) THEN
25659            KFA=22
25660            KFB=KTECHN+111
25661            VOGP=CSXI/RTCM(12)
25662 C..........!!!
25663            VRGP=VOGP*QUPD
25664            AOGP=0D0
25665            ARGP=0D0
25666            VAGP=2D0*QUPD*CSXI
25667            VZGP=QUPD*CSXI*(1D0-4D0*PARU(102))/SN2W
25668 C... gamma pi_tc'
25669         ELSEIF(ISUB.EQ.365) THEN
25670            KFA=22
25671            KFB=KTECHN+221
25672            ISUB=364
25673            VRGP=CSXIP/RTCM(12)
25674 C..........!!!!
25675            VOGP=VRGP*QUPD
25676            AOGP=0D0
25677            ARGP=0D0
25678            VAGP=2D0*Q2UD*CSXIP
25679            VZGP=CSXIP/SN2W*(1D0-4D0*PARU(102)*Q2UD)
25680 C... Z pi_tc
25681         ELSEIF(ISUB.EQ.366) THEN
25682            KFA=23
25683            KFB=KTECHN+111
25684            ISUB=364
25685            VOGP=CSXI*CT2W/RTCM(12)
25686            VRGP=-QUPD*CSXI*TANW/RTCM(12)
25687            AOGP=0D0
25688            ARGP=0D0
25689            VAGP=QUPD*CSXI*(1D0-4D0*PARU(102))/SN2W
25690            VZGP=-QUPD*CSXI*CS2W/(1D0-PARU(102))
25691 C... Z pi_tc'
25692         ELSEIF(ISUB.EQ.367) THEN
25693            KFA=23
25694            KFB=KTECHN+221
25695            ISUB=364
25696            VRGP=CSXIP*CT2W/RTCM(12)
25697            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
25698            AOGP=0D0
25699            ARGP=0D0
25700            VAGP=CSXIP*(1D0-4D0*Q2UD*PARU(102))/SN2W
25701            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*PARU(102)**2)/SN2W**2
25702 C... W_T pi_tc
25703         ELSEIF(ISUB.EQ.368) THEN
25704            KFA=24
25705            KFB=KTECHN+211
25706            ISUB=364
25707            VOGP=CSXI/(2D0*SQRT(PARU(102)))/RTCM(12)
25708            VRGP=0D0
25709            AOGP=0D0
25710 C..........!!!!
25711            ARGP=-CSXI/(2D0*SQRT(PARU(102)))/RTCM(13)
25712            VAGP=QUPD*CSXI/(2D0*SQRT(PARU(102)))
25713            VZGP=-QUPD*CSXI/(2D0*SQRT(1D0-PARU(102)))
25714 C... rho_tc+ -> W_L Z_L
25715         ELSEIF(ISUB.EQ.370) THEN
25716            KFA=24
25717            KFB=23
25718            CAB2=RTCM(3)**4
25719 C... W_L pi_tc0
25720         ELSEIF(ISUB.EQ.371) THEN
25721            KFA=24
25722            KFB=KTECHN+111
25723            ISUB=370
25724            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25725 C... Z_L pi_tc+
25726         ELSEIF(ISUB.EQ.372) THEN
25727            KFA=KTECHN+211
25728            KFB=23
25729            ISUB=370
25730            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25731 C... pi_tc+ pi_tc0
25732         ELSEIF(ISUB.EQ.373) THEN
25733            KFA=KTECHN+211
25734            KFB=KTECHN+111
25735            ISUB=370
25736            CAB2=(1D0-RTCM(3)**2)**2
25737 C... gamma pi_tc+
25738         ELSEIF(ISUB.EQ.374) THEN
25739            KFA=KTECHN+211
25740            KFB=22
25741            VRGP=QUPD*CSXI
25742            ARGP=0D0
25743            VWGP=QUPD*CSXI/(2D0*SQRT(PARU(102)))
25744 C... Z_T pi_tc+
25745         ELSEIF(ISUB.EQ.375) THEN
25746            KFA=KTECHN+211
25747            KFB=23
25748            ISUB=374
25749            VRGP=-QUPD*CSXI*TANW
25750            ARGP=CSXI/(2D0*SQRT(PARU(102)*(1D0-PARU(102))))
25751            VWGP=-QUPD*CSXI/(2D0*SQRT(1D0-PARU(102)))
25752 C... W_T pi_tc0
25753         ELSEIF(ISUB.EQ.376) THEN
25754            KFA=24
25755            KFB=KTECHN+111
25756            ISUB=374
25757            VRGP=0D0
25758            ARGP=-CSXI/(2D0*SQRT(PARU(102)))
25759            VWGP=0D0
25760 C... W_T pi_tc0'
25761         ELSEIF(ISUB.EQ.377) THEN
25762            KFA=24
25763            KFB=KTECHN+221
25764            ISUB=374
25765            ARGP=0D0
25766            VRGP=CSXIP/(2D0*SQRT(PARU(102)))
25767            VWGP=CSXIP/(2D0*PARU(102))
25768         ENDIF
25769       ENDIF
25770  
25771 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
25772       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
25773         IF(ITCM(5).LE.4) THEN
25774           SQDQQS=1D0/SH2
25775           SQDQQT=1D0/TH2
25776           SQDQQU=1D0/UH2
25777           SQDGGS=SQDQQS
25778           SQDGGT=SQDQQT
25779           SQDGGU=SQDQQU
25780           REDGGS=1D0/SH
25781           REDGGT=1D0/TH
25782           REDGGU=1D0/UH
25783           REDGTU=1D0/UH/TH
25784           REDGSU=1D0/SH/UH
25785           REDGST=1D0/SH/TH
25786           REDQST=1D0/SH/TH
25787           REDQTU=1D0/UH/TH
25788           SQDLGS=0D0
25789           SQDLGT=0D0
25790           SQDQTS=SQDQQS
25791         ELSEIF(ITCM(5).EQ.5) THEN
25792           TANT3=RTCM(21)
25793           IF(ITCM(2).EQ.0) THEN
25794             IMDL=1
25795           ELSE
25796             IMDL=2
25797           ENDIF
25798           ALPRHT=2.91D0*(3D0/ITCM(1))
25799           SIN2T=2D0*TANT3/(TANT3**2+1D0)
25800           SINT3=TANT3/SQRT(TANT3**2+1D0)
25801           XIG=SQRT(PYALPS(SH)/ALPRHT)
25802           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
25803      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
25804           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
25805      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
25806           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
25807      &    SINT3**2)*2D0/SIN2T
25808           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
25809      &    SINT3**2)*2D0/SIN2T
25810  
25811           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
25812           SM1112=X12*RTCM(28)**2*SIN2T
25813           SM1121=-X21*RTCM(28)**2*SIN2T
25814           SM2212=-SM1112
25815           SM2221=-SM1121
25816           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
25817      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
25818  
25819 C.........SH LOOP
25820           ZTC(1,1)=DCMPLX(SH,0D0)
25821           CALL PYWIDT(3100021,SH,WDTP,WDTE)
25822           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
25823           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
25824           CALL PYWIDT(3100113,SH,WDTP,WDTE)
25825           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
25826           CALL PYWIDT(3400113,SH,WDTP,WDTE)
25827           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
25828           CALL PYWIDT(3200113,SH,WDTP,WDTE)
25829           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
25830           CALL PYWIDT(3300113,SH,WDTP,WDTE)
25831           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
25832           ZTC(1,2)=(0D0,0D0)
25833           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
25834           ZTC(1,4)=ZTC(1,3)
25835           ZTC(1,5)=ZTC(1,2)
25836           ZTC(1,6)=ZTC(1,2)
25837           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
25838           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
25839           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
25840           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
25841           ZTC(3,4)=-SM1122
25842           ZTC(3,5)=-SM1112
25843           ZTC(3,6)=-SM1121
25844           ZTC(4,5)=-SM2212
25845           ZTC(4,6)=-SM2221
25846           ZTC(5,6)=-SM1221
25847  
25848           DO 110 I=1,5
25849             DO 100 J=I+1,6
25850                ZTC(J,I)=ZTC(I,J)
25851   100       CONTINUE
25852   110     CONTINUE
25853           CALL PYLDCM(ZTC,6,6,INDX,D)
25854           DO 130 I=1,6
25855             DO 120 J=1,6
25856              YTC(I,J)=(0D0,0D0)
25857               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25858   120       CONTINUE
25859   130     CONTINUE
25860  
25861           DO 140 I=1,6
25862             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25863   140     CONTINUE
25864           DGGS=YTC(1,1)
25865           DVVS=YTC(2,2)
25866           DGVS=YTC(1,2)
25867  
25868           XIG=SQRT(PYALPS(-TH)/ALPRHT)
25869 C.........TH LOOP
25870           ZTC(1,1)=DCMPLX(TH)
25871           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
25872           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
25873           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
25874           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
25875           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
25876           ZTC(1,2)=(0D0,0D0)
25877           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
25878           ZTC(1,4)=ZTC(1,3)
25879           ZTC(1,5)=ZTC(1,2)
25880           ZTC(1,6)=ZTC(1,2)
25881           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
25882           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
25883           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
25884           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
25885           ZTC(3,4)=-SM1122
25886           ZTC(3,5)=-SM1112
25887           ZTC(3,6)=-SM1121
25888           ZTC(4,5)=-SM2212
25889           ZTC(4,6)=-SM2221
25890           ZTC(5,6)=-SM1221
25891           DO 160 I=1,5
25892             DO 150 J=I+1,6
25893                ZTC(J,I)=ZTC(I,J)
25894   150       CONTINUE
25895   160     CONTINUE
25896           CALL PYLDCM(ZTC,6,6,INDX,D)
25897           DO 180 I=1,6
25898             DO 170 J=1,6
25899               YTC(I,J)=(0D0,0D0)
25900               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25901   170       CONTINUE
25902   180     CONTINUE
25903           DO 190 I=1,6
25904             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25905   190     CONTINUE
25906           DGGT=YTC(1,1)
25907           DVVT=YTC(2,2)
25908           DGVT=YTC(1,2)
25909  
25910           XIG=SQRT(PYALPS(-UH)/ALPRHT)
25911 C.........UH LOOP
25912           ZTC(1,1)=DCMPLX(UH,0D0)
25913           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
25914           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
25915           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
25916           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
25917           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
25918           ZTC(1,2)=(0D0,0D0)
25919           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
25920           ZTC(1,4)=ZTC(1,3)
25921           ZTC(1,5)=ZTC(1,2)
25922           ZTC(1,6)=ZTC(1,2)
25923           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
25924           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
25925           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
25926           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
25927           ZTC(3,4)=-SM1122
25928           ZTC(3,5)=-SM1112
25929           ZTC(3,6)=-SM1121
25930           ZTC(4,5)=-SM2212
25931           ZTC(4,6)=-SM2221
25932           ZTC(5,6)=-SM1221
25933           DO 210 I=1,5
25934             DO 200 J=I+1,6
25935                ZTC(J,I)=ZTC(I,J)
25936   200       CONTINUE
25937   210     CONTINUE
25938           CALL PYLDCM(ZTC,6,6,INDX,D)
25939           DO 230 I=1,6
25940             DO 220 J=1,6
25941               YTC(I,J)=(0D0,0D0)
25942               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25943   220       CONTINUE
25944   230     CONTINUE
25945           DO 240 I=1,6
25946             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25947   240     CONTINUE
25948           DGGU=YTC(1,1)
25949           DVVU=YTC(2,2)
25950           DGVU=YTC(1,2)
25951  
25952           IF(IMDL.EQ.1) THEN
25953             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
25954             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
25955             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
25956             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
25957             DQGS=DGGS-DGVS*DCMPLX(TANT3)
25958             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25959           ELSE
25960             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
25961             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
25962             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
25963             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
25964             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25965             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25966           ENDIF
25967  
25968           SQDQTS=ABS(DQTS)**2
25969           SQDQQS=ABS(DQQS)**2
25970           SQDQQT=ABS(DQQT)**2
25971           SQDQQU=ABS(DQQU)**2
25972           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
25973           REDLGS=DBLE(DQGS)
25974           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
25975           REDHGS=DBLE(DTGS)
25976           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
25977  
25978           SQDGGS=ABS(DGGS)**2
25979           SQDGGT=ABS(DGGT)**2
25980           SQDGGU=ABS(DGGU)**2
25981           REDGGS=DBLE(DGGS)
25982           REDGGT=DBLE(DGGT)
25983           REDGGU=DBLE(DGGU)
25984           REDGTU=DBLE(DGGU*DCONJG(DGGT))
25985           REDGSU=DBLE(DGGU*DCONJG(DGGS))
25986           REDGST=DBLE(DGGS*DCONJG(DGGT))
25987           REDQST=DBLE(DQQS*DCONJG(DQQT))
25988           REDQTU=DBLE(DQQT*DCONJG(DQQU))
25989         ENDIF
25990       ENDIF
25991  
25992  
25993 C...Differential cross section expressions.
25994  
25995       IF(ISUB.LE.190) THEN
25996         IF(ISUB.EQ.149) THEN
25997 C...g + g -> eta_tc
25998           KCTC=PYCOMP(KTECHN+331)
25999           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
26000           HS=SHR*WDTP(0)
26001           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
26002           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26003           HP=SH
26004           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
26005           HI=HP*WDTP(3)
26006           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26007           NCHN=NCHN+1
26008           ISIG(NCHN,1)=21
26009           ISIG(NCHN,2)=21
26010           ISIG(NCHN,3)=1
26011           SIGH(NCHN)=HI*FACBW*HF
26012   250     CONTINUE
26013  
26014         ELSEIF(ISUB.EQ.165) THEN
26015 C...q + qbar -> l+ + l- (including contact term for compositeness)
26016           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26017           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26018           KFF=IABS(KFPR(ISUB,1))
26019           EF=KCHG(KFF,1)/3D0
26020           AF=SIGN(1D0,EF+0.1D0)
26021           VF=AF-4D0*EF*XWV
26022           VALF=VF+AF
26023           VARF=VF-AF
26024           FCOF=1D0
26025           IF(KFF.LE.10) FCOF=3D0
26026           WID2=1D0
26027           IF(KFF.EQ.6) WID2=WIDS(6,1)
26028           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
26029           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
26030           DO 260 I=MMINA,MMAXA
26031             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
26032             EI=KCHG(IABS(I),1)/3D0
26033             AI=SIGN(1D0,EI+0.1D0)
26034             VI=AI-4D0*EI*XWV
26035             VALI=VI+AI
26036             VARI=VI-AI
26037             FCOI=1D0
26038             IF(IABS(I).LE.10) FCOI=FACA/3D0
26039             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
26040               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
26041      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
26042      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
26043             ELSE
26044               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
26045      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
26046             ENDIF
26047             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
26048      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
26049             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
26050             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
26051      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
26052             NCHN=NCHN+1
26053             ISIG(NCHN,1)=I
26054             ISIG(NCHN,2)=-I
26055             ISIG(NCHN,3)=1
26056             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
26057   260     CONTINUE
26058  
26059         ELSEIF(ISUB.EQ.166) THEN
26060 C...q + q'bar -> l + nu_l (including contact term for compositeness)
26061           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
26062           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
26063           KFF=IABS(KFPR(ISUB,1))
26064           FCOF=1D0
26065           IF(KFF.LE.10) FCOF=3D0
26066           DO 280 I=MMIN1,MMAX1
26067             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
26068             IA=IABS(I)
26069             DO 270 J=MMIN2,MMAX2
26070               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
26071               JA=IABS(J)
26072               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
26073               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26074      &        GOTO 270
26075               FCOI=1D0
26076               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
26077               WID2=1D0
26078               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
26079      &        MOD(J,2).EQ.0)) THEN
26080                 IF(KFF.EQ.5) WID2=WIDS(6,2)
26081                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
26082                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
26083               ELSE
26084                 IF(KFF.EQ.5) WID2=WIDS(6,3)
26085                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
26086                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
26087               ENDIF
26088               NCHN=NCHN+1
26089               ISIG(NCHN,1)=I
26090               ISIG(NCHN,2)=J
26091               ISIG(NCHN,3)=1
26092               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
26093               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
26094      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
26095   270       CONTINUE
26096   280     CONTINUE
26097         ENDIF
26098  
26099       ELSEIF(ISUB.LE.200) THEN
26100         IF(ISUB.EQ.191) THEN
26101 C...q + qbar -> rho_tc0.
26102           KCTC=PYCOMP(KTECHN+113)
26103           SQMRHT=PMAS(KCTC,1)**2
26104           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26105           HS=SHR*WDTP(0)
26106           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
26107           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26108           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26109           ALPRHT=2.91D0*(3D0/ITCM(1))
26110           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
26111           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
26112           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26113           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26114           DO 290 I=MMINA,MMAXA
26115             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
26116             IA=IABS(I)
26117             EI=KCHG(IABS(I),1)/3D0
26118             AI=SIGN(1D0,EI+0.1D0)
26119             VI=AI-4D0*EI*XWV
26120             VALI=0.5D0*(VI+AI)
26121             VARI=0.5D0*(VI-AI)
26122             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
26123      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
26124             IF(IA.LE.10) HI=HI*FACA/3D0
26125             NCHN=NCHN+1
26126             ISIG(NCHN,1)=I
26127             ISIG(NCHN,2)=-I
26128             ISIG(NCHN,3)=1
26129             SIGH(NCHN)=HI*FACBW*HF
26130   290     CONTINUE
26131  
26132         ELSEIF(ISUB.EQ.192) THEN
26133 C...q + qbar' -> rho_tc+/-.
26134           KCTC=PYCOMP(KTECHN+213)
26135           SQMRHT=PMAS(KCTC,1)**2
26136           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26137           HS=SHR*WDTP(0)
26138           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
26139           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26140           ALPRHT=2.91D0*(3D0/ITCM(1))
26141           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
26142      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
26143           DO 310 I=MMIN1,MMAX1
26144             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
26145             IA=IABS(I)
26146             DO 300 J=MMIN2,MMAX2
26147               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
26148               JA=IABS(J)
26149               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
26150               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26151      &        GOTO 300
26152               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26153               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
26154               HI=HP
26155               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
26156               NCHN=NCHN+1
26157               ISIG(NCHN,1)=I
26158               ISIG(NCHN,2)=J
26159               ISIG(NCHN,3)=1
26160               SIGH(NCHN)=HI*FACBW*HF
26161   300       CONTINUE
26162   310     CONTINUE
26163  
26164         ELSEIF(ISUB.EQ.193) THEN
26165 C...q + qbar -> omega_tc0.
26166           KCTC=PYCOMP(KTECHN+223)
26167           SQMOMT=PMAS(KCTC,1)**2
26168           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26169           HS=SHR*WDTP(0)
26170           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
26171           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26172           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26173           ALPRHT=2.91D0*(3D0/ITCM(1))
26174           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
26175      &    (2D0*RTCM(2)-1D0)**2
26176           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26177           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26178           DO 320 I=MMINA,MMAXA
26179             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
26180             IA=IABS(I)
26181             EI=KCHG(IABS(I),1)/3D0
26182             AI=SIGN(1D0,EI+0.1D0)
26183             VI=AI-4D0*EI*XWV
26184             VALI=0.5D0*(VI+AI)
26185             VARI=0.5D0*(VI-AI)
26186             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
26187      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
26188             IF(IA.LE.10) HI=HI*FACA/3D0
26189             NCHN=NCHN+1
26190             ISIG(NCHN,1)=I
26191             ISIG(NCHN,2)=-I
26192             ISIG(NCHN,3)=1
26193             SIGH(NCHN)=HI*FACBW*HF
26194   320     CONTINUE
26195  
26196         ELSEIF(ISUB.EQ.194) THEN
26197 C...f + fbar -> f' + fbar' via s-channel rho_tc and omega_tc.
26198           KFA=KFPR(ISUBSV,1)
26199           ALPRHT=2.91D0*(3D0/ITCM(1))
26200           HP=AEM**2*COMFAC
26201           TANW=SQRT(PARU(102)/(1D0-PARU(102)))
26202           CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
26203  
26204           QUPD=2D0*RTCM(2)-1D0
26205           FAR=SQRT(AEM/ALPRHT)
26206           FAO=FAR*QUPD
26207           FZR=FAR*CT2W
26208           FZO=-FAO*TANW
26209           SFAR=FAR**2
26210           SFAO=FAO**2
26211           SFZR=FZR**2
26212           SFZO=FZO**2
26213           CALL PYWIDT(23,SH,WDTP,WDTE)
26214           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26215           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26216           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26217           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26218           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26219           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26220      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26221           DAA=(-Sfzr*SSMO - Sfzo*SSMR + SSMO*SSMR*SSMZ)/DETD/SH
26222           DZZ=(-Sfar*SSMO - Sfao*SSMR + SSMO*SSMR)/DETD/SH
26223           DAZ=(far*fzr*SSMO + fao*fzo*SSMR)/DETD/SH
26224  
26225           XWRHT=1D0/(4D0*XW*(1D0-XW))
26226           KFF=IABS(KFPR(ISUB,1))
26227           EF=KCHG(KFF,1)/3D0
26228           AF=SIGN(1D0,EF+0.1D0)
26229           VF=AF-4D0*EF*XWV
26230           VALF=0.5D0*(VF+AF)
26231           VARF=0.5D0*(VF-AF)
26232           FCOF=1D0
26233           IF(KFF.LE.10) FCOF=3D0
26234  
26235           WID2=1D0
26236           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
26237           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
26238           DZZ=DZZ*DCMPLX(XWRHT,0D0)
26239           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
26240  
26241           DO 330 I=MMINA,MMAXA
26242             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
26243             EI=KCHG(IABS(I),1)/3D0
26244             AI=SIGN(1D0,EI+0.1D0)
26245             VI=AI-4D0*EI*XWV
26246             VALI=0.5D0*(VI+AI)
26247             VARI=0.5D0*(VI-AI)
26248             FCOI=FCOF
26249             IF(IABS(I).LE.10) FCOI=FCOI/3D0
26250             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
26251             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
26252             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
26253             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
26254             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
26255      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
26256             NCHN=NCHN+1
26257             ISIG(NCHN,1)=I
26258             ISIG(NCHN,2)=-I
26259             ISIG(NCHN,3)=1
26260             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
26261   330     CONTINUE
26262  
26263         ELSEIF(ISUB.EQ.195) THEN
26264 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+
26265           KFA=KFPR(ISUBSV,1)
26266           KFB=KFA+1
26267           ALPRHT=2.91D0*(3D0/ITCM(1))
26268           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
26269  
26270           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26271           CALL PYWIDT(24,SH,WDTP,WDTE)
26272           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26273           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26274           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26275  
26276           FCOF=1D0
26277           IF(KFA.LE.8) FCOF=3D0
26278           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26279           HP=FACTC*ABS(SSMR/DETD)**2/SH**2*FCOF
26280  
26281           DO 350 I=MMIN1,MMAX1
26282             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
26283             IA=IABS(I)
26284             DO 340 J=MMIN2,MMAX2
26285               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
26286               JA=IABS(J)
26287               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
26288               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26289      &        GOTO 340
26290               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26291               HI=HP
26292               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26293               NCHN=NCHN+1
26294               ISIG(NCHN,1)=I
26295               ISIG(NCHN,2)=J
26296               ISIG(NCHN,3)=1
26297               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
26298   340       CONTINUE
26299   350     CONTINUE
26300         ENDIF
26301  
26302       ELSEIF(ISUB.LE.380) THEN
26303         IF(ISUB.EQ.361) THEN
26304 C...f + fbar -> W_L W_L, W_L pi_tc, pi_tc pi_tc
26305           FACA=(SH**2*BE34**2-(TH-UH)**2)
26306           ALPRHT=2.91D0*(3D0/ITCM(1))
26307           HP=(1D0/12D0)*AEM**2*CAB2*COMFAC*FACA*3D0
26308           FAR=SQRT(AEM/ALPRHT)
26309           FAO=FAR*QUPD
26310           FZR=FAR*CT2W
26311           FZO=-FAO*TANW
26312           SFAR=FAR**2
26313           SFAO=FAO**2
26314           SFZR=FZR**2
26315           SFZO=FZO**2
26316           CALL PYWIDT(23,SH,WDTP,WDTE)
26317           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26318           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26319           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26320           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26321           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26322           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26323      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26324           DARHO=-(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)/DETD/SH
26325           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH
26326           DAA=-(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)/DETD/SH
26327           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH
26328           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH
26329  
26330           DO 360 I=MMINA,MMAXA
26331             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 360
26332             IA=IABS(I)
26333             EI=KCHG(IABS(I),1)/3D0
26334             AI=SIGN(1D0,EI+0.1D0)
26335             VI=AI-4D0*EI*XWV
26336             VALI=0.25D0*(VI+AI)
26337             VARI=0.25D0*(VI-AI)
26338             F2L=EI*(DARHO/FAR+DAA+CT2W*DAZ)+
26339      $      VALI*(CT2W*DZRHO/FZR+CT2W*DZZ+DAZ)/SQRT(XW*XW1)
26340             F2R=EI*(DARHO/FAR+DAA+CT2W*DAZ)+
26341      $      VARI*(CT2W*DZRHO/FZR+CT2W*DZZ+DAZ)/SQRT(XW*XW1)
26342             HI=ABS(F2L)**2+ABS(F2R)**2
26343             IF(IA.LE.10) HI=HI/3D0
26344             NCHN=NCHN+1
26345             ISIG(NCHN,1)=I
26346             ISIG(NCHN,2)=-I
26347             ISIG(NCHN,3)=1
26348             IF(KFA.EQ.KFB) THEN
26349                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
26350             ELSE
26351                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
26352                NCHN=NCHN+1
26353                ISIG(NCHN,1)=I
26354                ISIG(NCHN,2)=-I
26355                ISIG(NCHN,3)=2
26356                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
26357             ENDIF
26358   360     CONTINUE
26359  
26360         ELSEIF(ISUB.EQ.364) THEN
26361 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
26362 C...W pi_tc
26363           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
26364           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
26365           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
26366  
26367           ALPRHT=2.91D0*(3D0/ITCM(1))
26368           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH
26369           FAR=SQRT(AEM/ALPRHT)
26370           FAO=FAR*QUPD
26371           FZR=FAR*CT2W
26372           FZO=-FAO*TANW
26373           SFAR=FAR**2
26374           SFAO=FAO**2
26375           SFZR=FZR**2
26376           SFZO=FZO**2
26377           CALL PYWIDT(23,SH,WDTP,WDTE)
26378           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26379           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26380           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26381           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26382           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26383           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26384      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26385           DARHO=(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)/DETD/SH
26386           DZRHO=(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH
26387           DAOME=(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)/DETD/SH
26388           DZOME=(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH
26389           DAA=(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)/DETD/SH
26390           DZZ=(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH
26391           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH
26392  
26393           DO 370 I=MMINA,MMAXA
26394             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
26395             IA=IABS(I)
26396             EI=KCHG(IABS(I),1)/3D0
26397             AI=SIGN(1D0,EI+0.1D0)
26398             VI=AI-4D0*EI*XWV
26399             VALI=0.25D0*(VI+AI)
26400             VARI=0.25D0*(VI-AI)
26401 C...........Add in anomaly contribution
26402             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
26403             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
26404             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
26405      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
26406             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
26407             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
26408             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
26409      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
26410             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
26411             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
26412             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
26413             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
26414             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
26415             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
26416             HI=HI+HJ
26417             IF(IA.LE.10) HI=HI/3D0
26418             NCHN=NCHN+1
26419             ISIG(NCHN,1)=I
26420             ISIG(NCHN,2)=-I
26421             ISIG(NCHN,3)=1
26422             IF(ISUBSV.NE.368) THEN
26423                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
26424             ELSE
26425                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
26426                NCHN=NCHN+1
26427                ISIG(NCHN,1)=I
26428                ISIG(NCHN,2)=-I
26429                ISIG(NCHN,3)=2
26430                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
26431             ENDIF
26432   370     CONTINUE
26433  
26434         ELSEIF(ISUB.EQ.370) THEN
26435 C...f + fbar' -> W_L Z_L, W_L pi_tc, Z_L pi_tc, pi_tc pi_tc
26436  
26437           FACA=(SH**2*BE34**2-(TH-UH)**2)
26438           ALPRHT=2.91D0*(3D0/ITCM(1))
26439           HP=(1D0/96D0)*AEM**2*CAB2*COMFAC*FACA*3D0/XW**2
26440           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26441           CALL PYWIDT(24,SH,WDTP,WDTE)
26442           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26443           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26444           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26445           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26446           DWW=SSMR/DETD/SH
26447           DWRHO=-1D0/DETD/SH
26448           HP=HP*ABS(DWW+DWRHO)**2
26449           DO 390 I=MMIN1,MMAX1
26450             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 390
26451             IA=IABS(I)
26452             DO 380 J=MMIN2,MMAX2
26453               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 380
26454               JA=IABS(J)
26455               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 380
26456               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26457      &        GOTO 380
26458               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26459               HI=HP
26460               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26461               NCHN=NCHN+1
26462               ISIG(NCHN,1)=I
26463               ISIG(NCHN,2)=J
26464               ISIG(NCHN,3)=1
26465               SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
26466      &        WIDS(PYCOMP(KFB),2)
26467   380       CONTINUE
26468   390     CONTINUE
26469  
26470         ELSEIF(ISUB.EQ.374) THEN
26471 C...f + fbar' -> gamma pi_tc
26472           FANOM=SQRT(AEM)*ITCM(1)/2D0/PARU(2)/RTCM(1)
26473           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
26474           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)/SQTA*ARGP**2
26475           ALPRHT=2.91D0*(3D0/ITCM(1))
26476           HP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
26477           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26478           CALL PYWIDT(24,SH,WDTP,WDTE)
26479           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26480           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26481           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26482           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26483           DWW=SSMR/DETD/SH
26484           DWRHO=-DCMPLX(FWR,0D0)/DETD/SH
26485           HP=HP*(AFAC*ABS(DWRHO)**2+
26486      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP/SQRT(SQTV))**2)
26487           DO 410 I=MMIN1,MMAX1
26488             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
26489             IA=IABS(I)
26490             DO 400 J=MMIN2,MMAX2
26491               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
26492               JA=IABS(J)
26493               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
26494               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26495      &        GOTO 400
26496               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26497               HI=HP
26498               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26499               NCHN=NCHN+1
26500               ISIG(NCHN,1)=I
26501               ISIG(NCHN,2)=J
26502               ISIG(NCHN,3)=1
26503               SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
26504      &        WIDS(PYCOMP(KFB),2)
26505   400       CONTINUE
26506   410     CONTINUE
26507         ENDIF
26508  
26509       ELSEIF(ISUB.LE.390) THEN
26510         IF(ISUB.EQ.381) THEN
26511 C...f + f' -> f + f' (g exchange)
26512           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
26513           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
26514      &    MSTP(34)*2D0/3D0*UH2*REDQST)
26515           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
26516           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
26517           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
26518           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
26519 C...Modifications from contact interactions (compositeness)
26520             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
26521             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
26522      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
26523             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
26524      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
26525             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
26526             RATCII=(FACCI1*FACCI2+FACQQI)/(FACCI1+FACCI2)
26527           ELSEIF(ITCM(5).EQ.5) THEN
26528             FACCI1=FACQQ1
26529             FACCIB=FACQQB
26530             FACCI2=FACQQ2
26531             FACCI3=FACQQ1
26532 CSM.......Check this change from
26533 CSM            RATCII=1D0
26534             RATCII=RATQQI
26535           ENDIF
26536           DO 430 I=MMIN1,MMAX1
26537             IA=IABS(I)
26538             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
26539             DO 420 J=MMIN2,MMAX2
26540               JA=IABS(J)
26541               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
26542               NCHN=NCHN+1
26543               ISIG(NCHN,1)=I
26544               ISIG(NCHN,2)=J
26545               ISIG(NCHN,3)=1
26546               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
26547      &        JA.GE.3))) THEN
26548                 SIGH(NCHN)=FACQQ1
26549                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
26550               ELSE
26551                 SIGH(NCHN)=FACCI1
26552                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
26553                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
26554               ENDIF
26555               IF(I.EQ.J) THEN
26556                 NCHN=NCHN+1
26557                 ISIG(NCHN,1)=I
26558                 ISIG(NCHN,2)=J
26559                 ISIG(NCHN,3)=2
26560                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
26561                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
26562                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
26563                 ELSE
26564                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
26565                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
26566                 ENDIF
26567               ENDIF
26568   420       CONTINUE
26569   430     CONTINUE
26570  
26571         ELSEIF(ISUB.EQ.382) THEN
26572 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
26573           CALL PYWIDT(21,SH,WDTP,WDTE)
26574           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
26575           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26576           IF(ITCM(5).EQ.1) THEN
26577 C...Modifications from contact interactions (compositeness)
26578             FACCIB=FACQQB
26579             DO 440 I=1,2
26580               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
26581      &        WDTE(I,2)+WDTE(I,4))
26582   440       CONTINUE
26583           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
26584             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
26585      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26586           ELSEIF(ITCM(5).EQ.5) THEN
26587             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
26588      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
26589             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
26590           ENDIF
26591           DO 450 I=MMINA,MMAXA
26592             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26593      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
26594             NCHN=NCHN+1
26595             ISIG(NCHN,1)=I
26596             ISIG(NCHN,2)=-I
26597             ISIG(NCHN,3)=1
26598             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
26599               SIGH(NCHN)=FACQQB
26600             ELSEIF(ITCM(5).EQ.5) THEN
26601               SIGH(NCHN)=FACQQB
26602               NCHN=NCHN+1
26603               ISIG(NCHN,1)=I
26604               ISIG(NCHN,2)=-I
26605               ISIG(NCHN,3)=2
26606               SIGH(NCHN)=FACCIB
26607             ELSE
26608               SIGH(NCHN)=FACCIB
26609             ENDIF
26610   450     CONTINUE
26611  
26612         ELSEIF(ISUB.EQ.383) THEN
26613 C...f + fbar -> g + g (q + qbar -> g + g only)
26614           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26615      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
26616           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26617      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
26618           IF(ITCM(5).EQ.5) THEN
26619             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26620      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
26621             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26622      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
26623           ENDIF
26624           DO 460 I=MMINA,MMAXA
26625             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26626      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
26627             NCHN=NCHN+1
26628             ISIG(NCHN,1)=I
26629             ISIG(NCHN,2)=-I
26630             ISIG(NCHN,3)=1
26631             SIGH(NCHN)=0.5D0*FACGG1
26632             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
26633             NCHN=NCHN+1
26634             ISIG(NCHN,1)=I
26635             ISIG(NCHN,2)=-I
26636             ISIG(NCHN,3)=2
26637             SIGH(NCHN)=0.5D0*FACGG2
26638             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
26639   460     CONTINUE
26640  
26641         ELSEIF(ISUB.EQ.384) THEN
26642 C...f + g -> f + g (q + g -> q + g only)
26643           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
26644      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
26645           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
26646      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
26647           DO 480 I=MMINA,MMAXA
26648             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
26649             DO 470 ISDE=1,2
26650               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
26651               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
26652               NCHN=NCHN+1
26653               ISIG(NCHN,ISDE)=I
26654               ISIG(NCHN,3-ISDE)=21
26655               ISIG(NCHN,3)=1
26656               SIGH(NCHN)=FACQG1
26657               NCHN=NCHN+1
26658               ISIG(NCHN,ISDE)=I
26659               ISIG(NCHN,3-ISDE)=21
26660               ISIG(NCHN,3)=2
26661               SIGH(NCHN)=FACQG2
26662   470       CONTINUE
26663   480     CONTINUE
26664  
26665         ELSEIF(ISUB.EQ.385) THEN
26666 C...g + g -> f + fbar (g + g -> q + qbar only)
26667           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
26668           IDC0=MDCY(21,2)-1
26669 C...Begin by d, u, s flavours.
26670           FLAVWT=0D0
26671           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
26672      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
26673           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
26674      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
26675           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
26676      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
26677           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26678      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
26679           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26680      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
26681           NCHN=NCHN+1
26682           ISIG(NCHN,1)=21
26683           ISIG(NCHN,2)=21
26684           ISIG(NCHN,3)=1
26685           SIGH(NCHN)=FACQQ1
26686           NCHN=NCHN+1
26687           ISIG(NCHN,1)=21
26688           ISIG(NCHN,2)=21
26689           ISIG(NCHN,3)=2
26690           SIGH(NCHN)=FACQQ2
26691 C...Next c and b flavours: modified that and uhat for fixed
26692 C...cos(theta-hat).
26693           DO 490 IFL=4,5
26694           SQMAVG=PMAS(IFL,1)**2
26695           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
26696             BE34=SQRT(1D0-4D0*SQMAVG/SH)
26697             THQ=-0.5D0*SH*(1D0-BE34*CTH)
26698             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26699             THUHQ=THQ*UHQ-SQMAVG*SH
26700             IF(MSTP(34).EQ.0) THEN
26701               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
26702               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
26703             ELSE
26704               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26705      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
26706               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26707      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
26708             ENDIF
26709             IF(ITCM(5).GE.5) THEN
26710               IF(IFL.EQ.4) THEN
26711                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
26712      &          2.25D0*THQ*UHQ/SH2*SQDLGS
26713                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
26714      &          2.25D0*THQ*UHQ/SH2*SQDLGS
26715               ELSE
26716                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
26717      &          2.25D0*THQ*UHQ/SH2*SQDHGS
26718                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
26719      &          2.25D0*THQ*UHQ/SH2*SQDHGS
26720               ENDIF
26721             ENDIF
26722             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
26723             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
26724             NCHN=NCHN+1
26725             ISIG(NCHN,1)=21
26726             ISIG(NCHN,2)=21
26727             ISIG(NCHN,3)=1+2*(IFL-3)
26728             SIGH(NCHN)=FACQQ1
26729             NCHN=NCHN+1
26730             ISIG(NCHN,1)=21
26731             ISIG(NCHN,2)=21
26732             ISIG(NCHN,3)=2+2*(IFL-3)
26733             SIGH(NCHN)=FACQQ2
26734           ENDIF
26735   490     CONTINUE
26736   500     CONTINUE
26737  
26738         ELSEIF(ISUB.EQ.386) THEN
26739 C...g + g -> g + g
26740           IF(ITCM(5).LE.4) THEN
26741             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
26742      &      2D0*TH/SH+TH2/SH2)*FACA
26743             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
26744      &      2D0*SH/UH+SH2/UH2)*FACA
26745             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
26746      &      2D0*UH/TH+UH2/TH2)
26747           ELSE
26748             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
26749      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
26750      &      4D0*REDGST*(SH + 2D0*TH)*
26751      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
26752      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
26753      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
26754      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
26755      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
26756      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
26757             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
26758      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
26759      &      4D0*REDGSU*(SH + 2D0*UH)*
26760      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
26761      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
26762      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
26763      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
26764      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
26765      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
26766             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
26767      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
26768      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
26769      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
26770      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
26771      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
26772      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
26773      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
26774      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
26775      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
26776      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
26777      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
26778      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
26779             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
26780             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
26781             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
26782           ENDIF
26783           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
26784           NCHN=NCHN+1
26785           ISIG(NCHN,1)=21
26786           ISIG(NCHN,2)=21
26787           ISIG(NCHN,3)=1
26788           SIGH(NCHN)=0.5D0*FACGG1
26789           NCHN=NCHN+1
26790           ISIG(NCHN,1)=21
26791           ISIG(NCHN,2)=21
26792           ISIG(NCHN,3)=2
26793           SIGH(NCHN)=0.5D0*FACGG2
26794           NCHN=NCHN+1
26795           ISIG(NCHN,1)=21
26796           ISIG(NCHN,2)=21
26797           ISIG(NCHN,3)=3
26798           SIGH(NCHN)=0.5D0*FACGG3
26799   510     CONTINUE
26800  
26801         ELSEIF(ISUB.EQ.387) THEN
26802 C...q + qbar -> Q + Qbar
26803           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
26804           THQ=-0.5D0*SH*(1D0-BE34*CTH)
26805           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26806           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
26807      &    2D0*SQMAVG/SH)
26808           IF(ITCM(5).GE.5) THEN
26809             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
26810               FACQQB=FACQQB*SH2*SQDQTS
26811             ELSE
26812               FACQQB=FACQQB*SH2*SQDQQS
26813             ENDIF
26814           ENDIF
26815           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
26816           WID2=1D0
26817           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
26818           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
26819           FACQQB=FACQQB*WID2
26820           DO 520 I=MMINA,MMAXA
26821             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26822      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
26823             NCHN=NCHN+1
26824             ISIG(NCHN,1)=I
26825             ISIG(NCHN,2)=-I
26826             ISIG(NCHN,3)=1
26827             SIGH(NCHN)=FACQQB
26828   520     CONTINUE
26829  
26830         ELSEIF(ISUB.EQ.388) THEN
26831 C...g + g -> Q + Qbar
26832           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
26833           THQ=-0.5D0*SH*(1D0-BE34*CTH)
26834           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26835           THUHQ=THQ*UHQ-SQMAVG*SH
26836           IF(MSTP(34).EQ.0) THEN
26837             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
26838             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
26839           ELSE
26840             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26841      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
26842             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26843      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
26844           ENDIF
26845           IF(ITCM(5).GE.5) THEN
26846             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
26847               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
26848      &        2.25D0*THQ*UHQ/SH2*SQDHGS
26849               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
26850      &        2.25D0*THQ*UHQ/SH2*SQDHGS
26851             ELSE
26852               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
26853      &        2.25D0*THQ*UHQ/SH2*SQDLGS
26854               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
26855      &        2.25D0*THQ*UHQ/SH2*SQDLGS
26856             ENDIF
26857           ENDIF
26858           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
26859           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
26860           IF(MSTP(35).GE.1) THEN
26861             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
26862             FACQQ1=FACQQ1*FATRE
26863             FACQQ2=FACQQ2*FATRE
26864           ENDIF
26865           WID2=1D0
26866           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
26867           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
26868           FACQQ1=FACQQ1*WID2
26869           FACQQ2=FACQQ2*WID2
26870           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
26871           NCHN=NCHN+1
26872           ISIG(NCHN,1)=21
26873           ISIG(NCHN,2)=21
26874           ISIG(NCHN,3)=1
26875           SIGH(NCHN)=FACQQ1
26876           NCHN=NCHN+1
26877           ISIG(NCHN,1)=21
26878           ISIG(NCHN,2)=21
26879           ISIG(NCHN,3)=2
26880           SIGH(NCHN)=FACQQ2
26881   530     CONTINUE
26882         ENDIF
26883       ENDIF
26884  
26885 CMRENNA--
26886  
26887       RETURN
26888       END
26889  
26890 C*********************************************************************
26891  
26892 C...PYSGEX
26893 C...Subprocess cross sections for assorted exotic processes,
26894 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
26895 C...Auxiliary to PYSIGH.
26896  
26897       SUBROUTINE PYSGEX(NCHN,SIGS)
26898  
26899 C...Double precision and integer declarations
26900       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
26901       IMPLICIT INTEGER(I-N)
26902       INTEGER PYK,PYCHGE,PYCOMP
26903 C...Parameter statement to help give large particle numbers.
26904       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
26905      &KEXCIT=4000000,KDIMEN=5000000)
26906 C...Commonblocks
26907       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
26908       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
26909       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
26910       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
26911       COMMON/PYINT1/MINT(400),VINT(400)
26912       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
26913       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
26914       COMMON/PYINT4/MWID(500),WIDS(500,5)
26915       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
26916       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
26917      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
26918      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
26919      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
26920       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
26921      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
26922 C...Local arrays
26923       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
26924  
26925 C...Differential cross section expressions.
26926  
26927       IF(ISUB.LE.160) THEN
26928         IF(ISUB.EQ.141) THEN
26929 C...f + fbar -> gamma*/Z0/Z'0
26930           SQMZP=PMAS(32,1)**2
26931           MINT(61)=2
26932           CALL PYWIDT(32,SH,WDTP,WDTE)
26933           HP0=AEM/3D0*SH
26934           HP1=AEM/3D0*XWC*SH
26935           HP2=HP1
26936           HS=SHR*VINT(117)
26937           HSP=SHR*WDTP(0)
26938           FACZP=4D0*COMFAC*3D0
26939           DO 100 I=MMINA,MMAXA
26940             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
26941             EI=KCHG(IABS(I),1)/3D0
26942             AI=SIGN(1D0,EI)
26943             VI=AI-4D0*EI*XWV
26944             IA=IABS(I)
26945             IF(IA.LT.10) THEN
26946               IF(IA.LE.2) THEN
26947                 VPI=PARU(123-2*MOD(IABS(I),2))
26948                 API=PARU(124-2*MOD(IABS(I),2))
26949               ELSEIF(IA.LE.4) THEN
26950                 VPI=PARJ(182-2*MOD(IABS(I),2))
26951                 API=PARJ(183-2*MOD(IABS(I),2))
26952               ELSE
26953                 VPI=PARJ(190-2*MOD(IABS(I),2))
26954                 API=PARJ(191-2*MOD(IABS(I),2))
26955               ENDIF
26956             ELSE
26957               IF(IA.LE.12) THEN
26958                 VPI=PARU(127-2*MOD(IABS(I),2))
26959                 API=PARU(128-2*MOD(IABS(I),2))
26960               ELSEIF(IA.LE.14) THEN
26961                 VPI=PARJ(186-2*MOD(IABS(I),2))
26962                 API=PARJ(187-2*MOD(IABS(I),2))
26963               ELSE
26964                 VPI=PARJ(194-2*MOD(IABS(I),2))
26965                 API=PARJ(195-2*MOD(IABS(I),2))
26966               ENDIF
26967             ENDIF
26968             HI0=HP0
26969             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
26970             HI1=HP1
26971             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
26972             HI2=HP2
26973             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
26974             NCHN=NCHN+1
26975             ISIG(NCHN,1)=I
26976             ISIG(NCHN,2)=-I
26977             ISIG(NCHN,3)=1
26978             SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
26979      &      (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
26980      &      VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
26981      &      (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
26982      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
26983      &      ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
26984      &      ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
26985      &      (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
26986   100     CONTINUE
26987  
26988         ELSEIF(ISUB.EQ.142) THEN
26989 C...f + fbar' -> W'+/-
26990           SQMWP=PMAS(34,1)**2
26991           CALL PYWIDT(34,SH,WDTP,WDTE)
26992           HS=SHR*WDTP(0)
26993           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
26994           HP=AEM/(24D0*XW)*SH
26995           DO 120 I=MMIN1,MMAX1
26996             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
26997             IA=IABS(I)
26998             DO 110 J=MMIN2,MMAX2
26999               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
27000               JA=IABS(J)
27001               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
27002               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
27003      &        GOTO 110
27004               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27005               HI=HP*(PARU(133)**2+PARU(134)**2)
27006               IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
27007      &        VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
27008               NCHN=NCHN+1
27009               ISIG(NCHN,1)=I
27010               ISIG(NCHN,2)=J
27011               ISIG(NCHN,3)=1
27012               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
27013               SIGH(NCHN)=HI*FACBW*HF
27014   110       CONTINUE
27015   120     CONTINUE
27016  
27017         ELSEIF(ISUB.EQ.144) THEN
27018 C...f + fbar' -> R
27019           SQMR=PMAS(41,1)**2
27020           CALL PYWIDT(41,SH,WDTP,WDTE)
27021           HS=SHR*WDTP(0)
27022           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
27023           HP=AEM/(12D0*XW)*SH
27024           DO 140 I=MMIN1,MMAX1
27025             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
27026             IA=IABS(I)
27027             DO 130 J=MMIN2,MMAX2
27028               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
27029               JA=IABS(J)
27030               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
27031               HI=HP
27032               IF(IA.LE.10) HI=HI*FACA/3D0
27033               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
27034               NCHN=NCHN+1
27035               ISIG(NCHN,1)=I
27036               ISIG(NCHN,2)=J
27037               ISIG(NCHN,3)=1
27038               SIGH(NCHN)=HI*FACBW*HF
27039   130       CONTINUE
27040   140     CONTINUE
27041  
27042         ELSEIF(ISUB.EQ.145) THEN
27043 C...q + l -> LQ (leptoquark)
27044           SQMLQ=PMAS(42,1)**2
27045           CALL PYWIDT(42,SH,WDTP,WDTE)
27046           HS=SHR*WDTP(0)
27047           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
27048           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
27049           HP=AEM/4D0*SH
27050           KFLQQ=KFDP(MDCY(42,2),1)
27051           KFLQL=KFDP(MDCY(42,2),2)
27052           DO 160 I=MMIN1,MMAX1
27053             IF(KFAC(1,I).EQ.0) GOTO 160
27054             IA=IABS(I)
27055             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
27056             DO 150 J=MMIN2,MMAX2
27057               IF(KFAC(2,J).EQ.0) GOTO 150
27058               JA=IABS(J)
27059               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
27060               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
27061               IF(JA.EQ.IA) GOTO 150
27062               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
27063               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
27064               HI=HP*PARU(151)
27065               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
27066               NCHN=NCHN+1
27067               ISIG(NCHN,1)=I
27068               ISIG(NCHN,2)=J
27069               ISIG(NCHN,3)=1
27070               SIGH(NCHN)=HI*FACBW*HF
27071   150       CONTINUE
27072   160     CONTINUE
27073  
27074         ELSEIF(ISUB.EQ.146) THEN
27075 C...e + gamma* -> e* (excited lepton)
27076           KFQSTR=KFPR(ISUB,1)
27077           KCQSTR=PYCOMP(KFQSTR)
27078           KFQEXC=MOD(KFQSTR,KEXCIT)
27079           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
27080           HS=SHR*WDTP(0)
27081           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
27082           QF=-RTCM(43)/2D0-RTCM(44)/2D0
27083           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
27084           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
27085      &    FACBW=0D0
27086           HP=SH
27087           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
27088             DO 170 ISDE=1,2
27089               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
27090               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
27091               HI=HP
27092               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27093               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
27094               NCHN=NCHN+1
27095               ISIG(NCHN,ISDE)=I
27096               ISIG(NCHN,3-ISDE)=22
27097               ISIG(NCHN,3)=1
27098               SIGH(NCHN)=HI*FACBW*HF
27099   170       CONTINUE
27100   180     CONTINUE
27101  
27102         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
27103 C...d + g -> d* and u + g -> u* (excited quarks)
27104           KFQSTR=KFPR(ISUB,1)
27105           KCQSTR=PYCOMP(KFQSTR)
27106           KFQEXC=MOD(KFQSTR,KEXCIT)
27107           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
27108           HS=SHR*WDTP(0)
27109           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
27110           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
27111           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
27112      &    FACBW=0D0
27113           HP=SH
27114           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
27115             DO 190 ISDE=1,2
27116               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
27117               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
27118               HI=HP
27119               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27120               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
27121               NCHN=NCHN+1
27122               ISIG(NCHN,ISDE)=I
27123               ISIG(NCHN,3-ISDE)=21
27124               ISIG(NCHN,3)=1
27125               SIGH(NCHN)=HI*FACBW*HF
27126   190       CONTINUE
27127   200     CONTINUE
27128         ENDIF
27129  
27130       ELSEIF(ISUB.LE.190) THEN
27131         IF(ISUB.EQ.162) THEN
27132 C...q + g -> LQ + lbar; LQ=leptoquark
27133           SQMLQ=PMAS(42,1)**2
27134           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
27135      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
27136           KFLQQ=KFDP(MDCY(42,2),1)
27137           DO 220 I=MMINA,MMAXA
27138             IF(IABS(I).NE.KFLQQ) GOTO 220
27139             KCHLQ=ISIGN(1,I)
27140             DO 210 ISDE=1,2
27141               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
27142               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
27143               NCHN=NCHN+1
27144               ISIG(NCHN,ISDE)=I
27145               ISIG(NCHN,3-ISDE)=21
27146               ISIG(NCHN,3)=1
27147               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
27148   210       CONTINUE
27149   220     CONTINUE
27150  
27151         ELSEIF(ISUB.EQ.163) THEN
27152 C...g + g -> LQ + LQbar; LQ=leptoquark
27153           SQMLQ=PMAS(42,1)**2
27154           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
27155      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
27156      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
27157      &    ((TH-SQMLQ)*(UH-SQMLQ)))
27158           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
27159           NCHN=NCHN+1
27160           ISIG(NCHN,1)=21
27161           ISIG(NCHN,2)=21
27162 C...Since don't know proper colour flow, randomize between alternatives
27163           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
27164           SIGH(NCHN)=FACLQ
27165   230     CONTINUE
27166  
27167         ELSEIF(ISUB.EQ.164) THEN
27168 C...q + qbar -> LQ + LQbar; LQ=leptoquark
27169           DELTA=0.25D0*(SQM3-SQM4)**2/SH
27170           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
27171           TH=TH-DELTA
27172           UH=UH-DELTA
27173 C          SQMLQ=PMAS(42,1)**2
27174           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
27175      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
27176           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
27177      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
27178      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
27179           KFLQQ=KFDP(MDCY(42,2),1)
27180           DO 240 I=MMINA,MMAXA
27181             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
27182      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
27183             NCHN=NCHN+1
27184             ISIG(NCHN,1)=I
27185             ISIG(NCHN,2)=-I
27186             ISIG(NCHN,3)=1
27187             SIGH(NCHN)=FACLQA
27188             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
27189   240     CONTINUE
27190  
27191         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
27192 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
27193           KFQSTR=KFPR(ISUB,2)
27194           KCQSTR=PYCOMP(KFQSTR)
27195           KFQEXC=MOD(KFQSTR,KEXCIT)
27196           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
27197           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
27198      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
27199 C...Propagators: as simulated in PYOFSH and as desired
27200           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
27201           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
27202           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
27203           GMMQC=SQRT(SQM4)*WDTP(0)
27204           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
27205           FACQSA=FACQSA*HBW4C/HBW4
27206           FACQSB=FACQSB*HBW4C/HBW4
27207 C...Branching ratios.
27208           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
27209           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
27210           DO 260 I=MMIN1,MMAX1
27211             IA=IABS(I)
27212             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
27213             DO 250 J=MMIN2,MMAX2
27214               JA=IABS(J)
27215               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
27216               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
27217                 NCHN=NCHN+1
27218                 ISIG(NCHN,1)=I
27219                 ISIG(NCHN,2)=J
27220                 ISIG(NCHN,3)=1
27221                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
27222                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
27223                 NCHN=NCHN+1
27224                 ISIG(NCHN,1)=I
27225                 ISIG(NCHN,2)=J
27226                 ISIG(NCHN,3)=2
27227                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
27228                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
27229               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
27230                 NCHN=NCHN+1
27231                 ISIG(NCHN,1)=I
27232                 ISIG(NCHN,2)=J
27233                 ISIG(NCHN,3)=1
27234                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
27235                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
27236                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
27237               ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
27238                 NCHN=NCHN+1
27239                 ISIG(NCHN,1)=I
27240                 ISIG(NCHN,2)=J
27241                 ISIG(NCHN,3)=1
27242                 IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
27243                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
27244                 NCHN=NCHN+1
27245                 ISIG(NCHN,1)=I
27246                 ISIG(NCHN,2)=J
27247                 ISIG(NCHN,3)=2
27248                 IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
27249                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
27250               ELSEIF(I.EQ.-J) THEN
27251                 NCHN=NCHN+1
27252                 ISIG(NCHN,1)=I
27253                 ISIG(NCHN,2)=J
27254                 ISIG(NCHN,3)=1
27255                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27256                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27257                 NCHN=NCHN+1
27258                 ISIG(NCHN,1)=I
27259                 ISIG(NCHN,2)=J
27260                 ISIG(NCHN,3)=2
27261                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27262                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27263               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
27264                 NCHN=NCHN+1
27265                 ISIG(NCHN,1)=I
27266                 ISIG(NCHN,2)=J
27267                 ISIG(NCHN,3)=1
27268                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
27269                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
27270                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
27271               ENDIF
27272   250       CONTINUE
27273   260     CONTINUE
27274  
27275         ELSEIF(ISUB.EQ.169) THEN
27276 C...q + qbar -> e + e* (excited lepton)
27277           KFQSTR=KFPR(ISUB,2)
27278           KCQSTR=PYCOMP(KFQSTR)
27279           KFQEXC=MOD(KFQSTR,KEXCIT)
27280           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
27281      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
27282 C...Propagators: as simulated in PYOFSH and as desired
27283           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
27284           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
27285           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
27286           GMMQC=SQRT(SQM4)*WDTP(0)
27287           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
27288           FACQSB=FACQSB*HBW4C/HBW4
27289 C...Branching ratios.
27290           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
27291           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
27292           DO 270 I=MMIN1,MMAX1
27293             IA=IABS(I)
27294             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
27295             J=-I
27296             JA=IABS(J)
27297             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
27298             NCHN=NCHN+1
27299             ISIG(NCHN,1)=I
27300             ISIG(NCHN,2)=J
27301             ISIG(NCHN,3)=1
27302             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27303             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27304             NCHN=NCHN+1
27305             ISIG(NCHN,1)=I
27306             ISIG(NCHN,2)=J
27307             ISIG(NCHN,3)=2
27308             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27309             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27310   270     CONTINUE
27311         ENDIF
27312  
27313       ELSEIF(ISUB.LE.360) THEN
27314         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
27315 C...l + l -> H_L++/-- or H_R++/--.
27316           KFRES=KFPR(ISUB,1)
27317           KFREC=PYCOMP(KFRES)
27318           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
27319           HS=SHR*WDTP(0)
27320           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
27321           DO 290 I=MMIN1,MMAX1
27322             IA=IABS(I)
27323             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
27324      &      GOTO 290
27325             DO 280 J=MMIN2,MMAX2
27326               JA=IABS(J)
27327               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
27328      &        GOTO 280
27329               IF(I*J.LT.0) GOTO 280
27330               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27331               NCHN=NCHN+1
27332               ISIG(NCHN,1)=I
27333               ISIG(NCHN,2)=J
27334               ISIG(NCHN,3)=1
27335               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
27336               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
27337               SIGH(NCHN)=HI*FACBW*HF
27338   280       CONTINUE
27339   290     CONTINUE
27340  
27341         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
27342 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
27343           KFRES=KFPR(ISUB,1)
27344           KFREC=PYCOMP(KFRES)
27345 C...Propagators: as simulated in PYOFSH and as desired
27346           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
27347      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
27348           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
27349           GMMC=SQRT(SQM3)*WDTP(0)
27350           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
27351           FHCC=COMFAC*AEM*HBW3C/HBW3
27352           DO 310 I=MMINA,MMAXA
27353             IA=IABS(I)
27354             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
27355             SQML=PMAS(IA,1)**2
27356             J=ISIGN(KFPR(ISUB,2),-I)
27357             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
27358             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
27359             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
27360      &      (UH-SQM3)**2
27361             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
27362      &      (TH-SQM4)*SH)/(TH-SQM4)**2
27363             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
27364      &      SH)/(SH-SQML)**2
27365             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
27366      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
27367      &      ((UH-SQM3)*(TH-SQM4))
27368             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
27369      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
27370      &      ((UH-SQM3)*(SH-SQML))
27371             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
27372      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
27373      &      ((SH-SQML)*(TH-SQM4))
27374             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
27375      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
27376             DO 300 ISDE=1,2
27377               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
27378               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
27379               NCHN=NCHN+1
27380               ISIG(NCHN,ISDE)=I
27381               ISIG(NCHN,3-ISDE)=22
27382               ISIG(NCHN,3)=0
27383               SIGH(NCHN)=FHCC*SMM*WIDSC
27384   300       CONTINUE
27385   310     CONTINUE
27386  
27387         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
27388 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
27389           KFRES=KFPR(ISUB,1)
27390           KFREC=PYCOMP(KFRES)
27391           SQMH=PMAS(KFREC,1)**2
27392           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
27393 C...Propagators: H++/-- as simulated in PYOFSH and as desired
27394           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
27395           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
27396           GMMH3=SQRT(SQM3)*WDTP(0)
27397           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
27398           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
27399           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
27400           GMMH4=SQRT(SQM4)*WDTP(0)
27401           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
27402 C...Kinematical and coupling functions
27403           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
27404           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
27405 C...Loop over allowed flavours
27406           DO 320 I=MMINA,MMAXA
27407             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
27408             EI=KCHG(IABS(I),1)/3D0
27409             AI=SIGN(1D0,EI+0.1D0)
27410             VI=AI-4D0*EI*XWV
27411             FCOI=1D0
27412             IF(IABS(I).LE.10) FCOI=FACA/3D0
27413             IF(ISUB.EQ.349) THEN
27414               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
27415               IF(IABS(I).LT.10) THEN
27416                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
27417      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
27418      &          (VI**2+AI**2)*XWHH**2*HBWZ)
27419               ELSE
27420                 IAOFF=181+3*((IABS(I)-11)/2)
27421                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
27422      &          (4D0*PARU(1))
27423                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
27424      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
27425      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
27426      &          8D0*AEM*(EI*HSUM/(SH*TH)+
27427      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
27428      &          4D0*HSUM**2/TH2
27429               ENDIF
27430             ELSE
27431               IF(IABS(I).LT.10) THEN
27432                 DSIGHH=8D0*AEM**2*EI**2/SH2
27433               ELSE
27434                 IAOFF=181+3*((IABS(I)-11)/2)
27435                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
27436      &          (4D0*PARU(1))
27437                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
27438      &          4D0*HSUM**2/TH2
27439               ENDIF
27440             ENDIF
27441             NCHN=NCHN+1
27442             ISIG(NCHN,1)=I
27443             ISIG(NCHN,2)=-I
27444             ISIG(NCHN,3)=1
27445             SIGH(NCHN)=FACHH*FCOI*DSIGHH
27446   320     CONTINUE
27447  
27448         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
27449 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
27450           KFRES=KFPR(ISUB,1)
27451           KFREC=PYCOMP(KFRES)
27452           SQMH=PMAS(KFREC,1)**2
27453           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
27454           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
27455      &    PMAS(PYCOMP(9900024),1)**2
27456           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
27457           FACPRT=1D0/((VINT(204)**2-VINT(215))*
27458      &    (VINT(209)**2-VINT(216)))
27459           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
27460      &    (VINT(209)**2+2D0*VINT(218)))
27461           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
27462           HS=SHR*WDTP(0)
27463           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
27464           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
27465      &    FACBW=0D0
27466           DO 340 I=MMIN1,MMAX1
27467             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
27468             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
27469             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
27470             DO 330 J=MMIN2,MMAX2
27471               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
27472               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
27473               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
27474               KCHH=KCHWI+KCHWJ
27475               IF(IABS(KCHH).NE.2) GOTO 330
27476               FACLR=VINT(180+I)*VINT(180+J)
27477               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
27478               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
27479                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
27480               ELSE
27481                 FACPRP=FACPRT**2
27482               ENDIF
27483               NCHN=NCHN+1
27484               ISIG(NCHN,1)=I
27485               ISIG(NCHN,2)=J
27486               ISIG(NCHN,3)=1
27487               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
27488   330       CONTINUE
27489   340     CONTINUE
27490  
27491         ELSEIF(ISUB.EQ.353) THEN
27492 C...f + fbar -> Z_R0
27493           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
27494           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
27495           HS=SHR*WDTP(0)
27496           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
27497           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27498           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
27499           DO 350 I=MMINA,MMAXA
27500             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
27501             IF(IABS(I).LE.8) THEN
27502               EI=KCHG(IABS(I),1)/3D0
27503               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
27504               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
27505             ELSE
27506               AI=-(1D0-2D0*XW)
27507               VI=-1D0+4D0*XW
27508             ENDIF
27509             HI=HP*(VI**2+AI**2)
27510             IF(IABS(I).LE.10) HI=HI*FACA/3D0
27511             NCHN=NCHN+1
27512             ISIG(NCHN,1)=I
27513             ISIG(NCHN,2)=-I
27514             ISIG(NCHN,3)=1
27515             SIGH(NCHN)=HI*FACBW*HF
27516   350     CONTINUE
27517  
27518         ELSEIF(ISUB.EQ.354) THEN
27519 C...f + fbar' -> W_R+/-
27520           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
27521           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
27522           HS=SHR*WDTP(0)
27523           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
27524           HP=AEM/(24D0*XW)*SH
27525           DO 370 I=MMIN1,MMAX1
27526             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
27527             IA=IABS(I)
27528             DO 360 J=MMIN2,MMAX2
27529               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
27530               JA=IABS(J)
27531               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
27532               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
27533      &        GOTO 360
27534               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27535               HI=HP*2D0
27536               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
27537               NCHN=NCHN+1
27538               ISIG(NCHN,1)=I
27539               ISIG(NCHN,2)=J
27540               ISIG(NCHN,3)=1
27541               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
27542               SIGH(NCHN)=HI*FACBW*HF
27543   360       CONTINUE
27544   370     CONTINUE
27545         ENDIF
27546  
27547       ELSEIF(ISUB.LE.400) THEN
27548         IF(ISUB.EQ.391) THEN
27549 C...f + fbar -> G*.
27550           KFGSTR=KFPR(ISUB,1)
27551           KCGSTR=PYCOMP(KFGSTR)
27552           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
27553           HS=SHR*WDTP(0)
27554           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27555           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
27556      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
27557           DO 380 I=MMINA,MMAXA
27558             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
27559             HI=1D0
27560             IF(IABS(I).LE.10) HI=HI*FACA/3D0
27561             NCHN=NCHN+1
27562             ISIG(NCHN,1)=I
27563             ISIG(NCHN,2)=-I
27564             ISIG(NCHN,3)=1
27565             SIGH(NCHN)=FACG*HI
27566   380     CONTINUE
27567  
27568         ELSEIF(ISUB.EQ.392) THEN
27569 C...g + g -> G*.
27570           KFGSTR=KFPR(ISUB,1)
27571           KCGSTR=PYCOMP(KFGSTR)
27572           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
27573           HS=SHR*WDTP(0)
27574           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27575           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
27576      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
27577           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
27578           NCHN=NCHN+1
27579           ISIG(NCHN,1)=21
27580           ISIG(NCHN,2)=21
27581           ISIG(NCHN,3)=1
27582           SIGH(NCHN)=FACG
27583   390     CONTINUE
27584  
27585         ELSEIF(ISUB.EQ.393) THEN
27586 C...q + qbar -> g + G*.
27587           KFGSTR=KFPR(ISUB,2)
27588           KCGSTR=PYCOMP(KFGSTR)
27589           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
27590      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
27591      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
27592      &    2D0*SH2/(TH*UH))
27593 C...Propagators: as simulated in PYOFSH and as desired
27594           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27595           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27596           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27597           HS=SQRT(SQM4)*WDTP(0)
27598           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27599           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27600           FACG=FACG*HBW4C/HBW4
27601           DO 400 I=MMINA,MMAXA
27602             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
27603      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
27604             NCHN=NCHN+1
27605             ISIG(NCHN,1)=I
27606             ISIG(NCHN,2)=-I
27607             ISIG(NCHN,3)=1
27608             SIGH(NCHN)=FACG
27609   400     CONTINUE
27610  
27611         ELSEIF(ISUB.EQ.394) THEN
27612 C...q + g -> q + G*.
27613           KFGSTR=KFPR(ISUB,2)
27614           KCGSTR=PYCOMP(KFGSTR)
27615           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
27616      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
27617      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
27618      &    2D0*TH2*TH/(UH*SH2))
27619 C...Propagators: as simulated in PYOFSH and as desired
27620           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27621           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27622           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27623           HS=SQRT(SQM4)*WDTP(0)
27624           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27625           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27626           FACG=FACG*HBW4C/HBW4
27627           DO 420 I=MMINA,MMAXA
27628             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
27629             DO 410 ISDE=1,2
27630               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
27631               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
27632               NCHN=NCHN+1
27633               ISIG(NCHN,ISDE)=I
27634               ISIG(NCHN,3-ISDE)=21
27635               ISIG(NCHN,3)=1
27636               SIGH(NCHN)=FACG
27637   410       CONTINUE
27638   420     CONTINUE
27639  
27640         ELSEIF(ISUB.EQ.395) THEN
27641 C...g + g -> g + G*.
27642           KFGSTR=KFPR(ISUB,2)
27643           KCGSTR=PYCOMP(KFGSTR)
27644           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
27645      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
27646      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
27647 C...Propagators: as simulated in PYOFSH and as desired
27648           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27649           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27650           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27651           HS=SQRT(SQM4)*WDTP(0)
27652           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27653           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27654           FACG=FACG*HBW4C/HBW4
27655           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
27656             NCHN=NCHN+1
27657             ISIG(NCHN,1)=21
27658             ISIG(NCHN,2)=21
27659             ISIG(NCHN,3)=1
27660             SIGH(NCHN)=FACG
27661           ENDIF
27662         ENDIF
27663       ENDIF
27664  
27665       RETURN
27666       END
27667  
27668 C*********************************************************************
27669  
27670 C...PYPDFU
27671 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
27672 C...parton distributions according to a few different parametrizations.
27673 C...Note that what is coded is x times the probability distribution,
27674 C...i.e. xq(x,Q2) etc.
27675  
27676       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
27677  
27678 C...Double precision and integer declarations.
27679       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27680       IMPLICIT INTEGER(I-N)
27681       INTEGER PYK,PYCHGE,PYCOMP
27682 C...Commonblocks.
27683       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27684       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27685       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27686       COMMON/PYINT1/MINT(400),VINT(400)
27687       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
27688      &XPDIR(-6:6)
27689       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/
27690 C...Local arrays.
27691       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
27692      &XPPI(-6:6),XPPR(-6:6)
27693  
27694 C...Interface to PDFLIB.
27695       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
27696       SAVE /W50513/
27697       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
27698      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
27699       CHARACTER*20 PARM(20)
27700       DATA VALUE/20*0D0/,PARM/20*' '/
27701  
27702 C...Data related to Schuler-Sjostrand photon distributions.
27703       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
27704  
27705 C...Reset parton distributions.
27706       MINT(92)=0
27707       DO 100 KFL=-25,25
27708         XPQ(KFL)=0D0
27709   100 CONTINUE
27710  
27711 C...Check x and particle species.
27712       IF(X.LE.0D0.OR.X.GE.1D0) THEN
27713         WRITE(MSTU(11),5000) X
27714         RETURN
27715       ENDIF
27716       KFA=IABS(KF)
27717       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
27718      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
27719      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
27720      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
27721      &KFA.NE.310.AND.KFA.NE.130) THEN
27722         WRITE(MSTU(11),5100) KF
27723         RETURN
27724       ENDIF
27725  
27726 C...Electron (or muon or tau) parton distribution call.
27727       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
27728         CALL PYPDEL(KFA,X,Q2,XPEL)
27729         DO 110 KFL=-25,25
27730           XPQ(KFL)=XPEL(KFL)
27731   110   CONTINUE
27732  
27733 C...Photon parton distribution call (VDM+anomalous).
27734       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
27735         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
27736           CALL PYPDGA(X,Q2,XPGA)
27737           DO 120 KFL=-6,6
27738             XPQ(KFL)=XPGA(KFL)
27739   120     CONTINUE
27740         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
27741           Q2MX=Q2
27742           P2MX=0.36D0
27743           IF(MSTP(55).GE.7) P2MX=4.0D0
27744           IF(MSTP(57).EQ.0) Q2MX=P2MX
27745           P2=0D0
27746           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27747           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27748           DO 130 KFL=-6,6
27749             XPQ(KFL)=XPGA(KFL)
27750   130     CONTINUE
27751           VINT(231)=P2MX
27752         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
27753           Q2MX=Q2
27754           P2MX=0.36D0
27755           IF(MSTP(55).GE.11) P2MX=4.0D0
27756           IF(MSTP(57).EQ.0) Q2MX=P2MX
27757           P2=0D0
27758           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27759           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27760           DO 140 KFL=-6,6
27761             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
27762   140     CONTINUE
27763           VINT(231)=P2MX
27764         ELSEIF(MSTP(56).EQ.2) THEN
27765 C...Call PDFLIB parton distributions.
27766           PARM(1)='NPTYPE'
27767           VALUE(1)=3
27768           PARM(2)='NGROUP'
27769           VALUE(2)=MSTP(55)/1000
27770           PARM(3)='NSET'
27771           VALUE(3)=MOD(MSTP(55),1000)
27772           IF(MINT(93).NE.3000000+MSTP(55)) THEN
27773             CALL PDFSET(PARM,VALUE)
27774             MINT(93)=3000000+MSTP(55)
27775           ENDIF
27776           XX=X
27777           QQ2=MAX(0D0,Q2MIN,Q2)
27778           IF(MSTP(57).EQ.0) QQ2=Q2MIN
27779           P2=0D0
27780           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27781           IP2=MSTP(60)
27782           IF(MSTP(55).EQ.5004) THEN
27783             IF(5D0*P2.LT.QQ2.AND.
27784      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
27785      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
27786      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
27787               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
27788      &        BOT,TOP,GLU)
27789             ELSE
27790               UPV=0D0
27791               DNV=0D0
27792               USEA=0D0
27793               DSEA=0D0
27794               STR=0D0
27795               CHM=0D0
27796               BOT=0D0
27797               TOP=0D0
27798               GLU=0D0
27799             ENDIF
27800           ELSE
27801             IF(P2.LT.QQ2) THEN
27802               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
27803      &        BOT,TOP,GLU)
27804             ELSE
27805               UPV=0D0
27806               DNV=0D0
27807               USEA=0D0
27808               DSEA=0D0
27809               STR=0D0
27810               CHM=0D0
27811               BOT=0D0
27812               TOP=0D0
27813               GLU=0D0
27814             ENDIF
27815           ENDIF
27816           VINT(231)=Q2MIN
27817           XPQ(0)=GLU
27818           XPQ(1)=DNV
27819           XPQ(-1)=DNV
27820           XPQ(2)=UPV
27821           XPQ(-2)=UPV
27822           XPQ(3)=STR
27823           XPQ(-3)=STR
27824           XPQ(4)=CHM
27825           XPQ(-4)=CHM
27826           XPQ(5)=BOT
27827           XPQ(-5)=BOT
27828           XPQ(6)=TOP
27829           XPQ(-6)=TOP
27830         ELSE
27831           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
27832         ENDIF
27833  
27834 C...Pion/gammaVDM parton distribution call.
27835       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
27836      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
27837         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
27838      &  MSTP(55).LE.12) THEN
27839           ISET=1+MOD(MSTP(55)-1,4)
27840           Q2MX=Q2
27841           P2MX=0.36D0
27842           IF(ISET.GE.3) P2MX=4.0D0
27843           IF(MSTP(57).EQ.0) Q2MX=P2MX
27844           P2=0D0
27845           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27846           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27847           DO 150 KFL=-6,6
27848             XPQ(KFL)=XPVMD(KFL)
27849   150     CONTINUE
27850           VINT(231)=P2MX
27851         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
27852           CALL PYPDPI(X,Q2,XPPI)
27853           DO 160 KFL=-6,6
27854             XPQ(KFL)=XPPI(KFL)
27855   160     CONTINUE
27856         ELSEIF(MSTP(54).EQ.2) THEN
27857 C...Call PDFLIB parton distributions.
27858           PARM(1)='NPTYPE'
27859           VALUE(1)=2
27860           PARM(2)='NGROUP'
27861           VALUE(2)=MSTP(53)/1000
27862           PARM(3)='NSET'
27863           VALUE(3)=MOD(MSTP(53),1000)
27864           IF(MINT(93).NE.2000000+MSTP(53)) THEN
27865             CALL PDFSET(PARM,VALUE)
27866             MINT(93)=2000000+MSTP(53)
27867           ENDIF
27868           XX=X
27869           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
27870           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
27871           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
27872           VINT(231)=Q2MIN
27873           XPQ(0)=GLU
27874           XPQ(1)=DSEA
27875           XPQ(-1)=UPV+DSEA
27876           XPQ(2)=UPV+USEA
27877           XPQ(-2)=USEA
27878           XPQ(3)=STR
27879           XPQ(-3)=STR
27880           XPQ(4)=CHM
27881           XPQ(-4)=CHM
27882           XPQ(5)=BOT
27883           XPQ(-5)=BOT
27884           XPQ(6)=TOP
27885           XPQ(-6)=TOP
27886         ELSE
27887           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
27888         ENDIF
27889  
27890 C...Anomalous photon parton distribution call.
27891       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
27892         Q2MX=Q2
27893         P2MX=PARP(15)**2
27894         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
27895           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
27896           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
27897           IF(MSTP(57).EQ.0) Q2MX=P2MX
27898           P2=0D0
27899           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27900           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
27901           DO 170 KFL=-6,6
27902             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
27903   170     CONTINUE
27904           VINT(231)=P2MX
27905         ELSEIF(MSTP(56).EQ.1) THEN
27906           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
27907           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
27908           IF(MSTP(57).EQ.0) Q2MX=P2MX
27909           P2=0D0
27910           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27911           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
27912           DO 180 KFL=-6,6
27913             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
27914   180     CONTINUE
27915           VINT(231)=P2MX
27916         ELSEIF(MSTP(56).EQ.2) THEN
27917           IF(MSTP(57).EQ.0) Q2MX=P2MX
27918           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
27919           DO 190 KFL=-6,6
27920             XPQ(KFL)=XPGA(KFL)
27921   190     CONTINUE
27922           VINT(231)=P2MX
27923         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
27924           IF(MSTP(57).EQ.0) Q2MX=P2MX
27925           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
27926           DO 200 KFL=-6,6
27927             XPQ(KFL)=XPGA(KFL)
27928   200     CONTINUE
27929           VINT(231)=P2MX
27930         ELSE
27931   210     RKF=11D0*PYR(0)
27932           KFR=1
27933           IF(RKF.GT.1D0) KFR=2
27934           IF(RKF.GT.5D0) KFR=3
27935           IF(RKF.GT.6D0) KFR=4
27936           IF(RKF.GT.10D0) KFR=5
27937           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 210
27938           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 210
27939           IF(MSTP(57).EQ.0) Q2MX=P2MX
27940           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
27941           DO 220 KFL=-6,6
27942             XPQ(KFL)=XPGA(KFL)
27943   220     CONTINUE
27944           VINT(231)=P2MX
27945         ENDIF
27946  
27947 C...Proton parton distribution call.
27948       ELSE
27949         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
27950           CALL PYPDPR(X,Q2,XPPR)
27951           DO 230 KFL=-6,6
27952             XPQ(KFL)=XPPR(KFL)
27953   230     CONTINUE
27954         ELSEIF(MSTP(52).EQ.2) THEN
27955 C...Call PDFLIB parton distributions.
27956           PARM(1)='NPTYPE'
27957           VALUE(1)=1
27958           PARM(2)='NGROUP'
27959           VALUE(2)=MSTP(51)/1000
27960           PARM(3)='NSET'
27961           VALUE(3)=MOD(MSTP(51),1000)
27962           IF(MINT(93).NE.1000000+MSTP(51)) THEN
27963             CALL PDFSET_ALICE(PARM,VALUE)
27964             MINT(93)=1000000+MSTP(51)
27965           ENDIF
27966           XX=X
27967           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
27968           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
27969           CALL STRUCTM_ALICE
27970      +         (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
27971           VINT(231)=Q2MIN
27972           XPQ(0)=GLU
27973           XPQ(1)=DNV+DSEA
27974           XPQ(-1)=DSEA
27975           XPQ(2)=UPV+USEA
27976           XPQ(-2)=USEA
27977           XPQ(3)=STR
27978           XPQ(-3)=STR
27979           XPQ(4)=CHM
27980           XPQ(-4)=CHM
27981           XPQ(5)=BOT
27982           XPQ(-5)=BOT
27983           XPQ(6)=TOP
27984           XPQ(-6)=TOP
27985         ELSE
27986           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
27987         ENDIF
27988       ENDIF
27989  
27990 C...Isospin average for pi0/gammaVDM.
27991       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
27992         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
27993           XPV=XPQ(2)-XPQ(1)
27994           XPQ(2)=XPQ(1)
27995           XPQ(-2)=XPQ(-1)
27996         ELSE
27997           XPS=0.5D0*(XPQ(1)+XPQ(-2))
27998           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
27999           XPQ(2)=XPS
28000           XPQ(-1)=XPS
28001         ENDIF
28002         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
28003           XPQ(1)=XPQ(1)+0.2D0*XPV
28004           XPQ(-1)=XPQ(-1)+0.2D0*XPV
28005           XPQ(2)=XPQ(2)+0.8D0*XPV
28006           XPQ(-2)=XPQ(-2)+0.8D0*XPV
28007         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
28008           XPQ(3)=XPQ(3)+XPV
28009           XPQ(-3)=XPQ(-3)+XPV
28010         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
28011           XPQ(4)=XPQ(4)+XPV
28012           XPQ(-4)=XPQ(-4)+XPV
28013           IF(MSTP(55).GE.9) THEN
28014             DO 240 KFL=-6,6
28015               XPQ(KFL)=0D0
28016   240       CONTINUE
28017           ENDIF
28018         ELSE
28019           XPQ(1)=XPQ(1)+0.5D0*XPV
28020           XPQ(-1)=XPQ(-1)+0.5D0*XPV
28021           XPQ(2)=XPQ(2)+0.5D0*XPV
28022           XPQ(-2)=XPQ(-2)+0.5D0*XPV
28023         ENDIF
28024  
28025 C...Rescale for gammaVDM by effective gamma -> rho coupling.
28026 C+++Do not rescale?
28027         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
28028      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
28029           DO 250 KFL=-6,6
28030             XPQ(KFL)=VINT(281)*XPQ(KFL)
28031   250     CONTINUE
28032           VINT(232)=VINT(281)*XPV
28033         ENDIF
28034  
28035 C...Simple recipes for kaons.
28036       ELSEIF(KFA.EQ.321) THEN
28037         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
28038         XPQ(-1)=XPQ(1)
28039       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
28040         XPS=0.5D0*(XPQ(1)+XPQ(-2))
28041         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
28042         XPQ(2)=XPS
28043         XPQ(-1)=XPS
28044         XPQ(1)=XPQ(1)+0.5D0*XPV
28045         XPQ(-1)=XPQ(-1)+0.5D0*XPV
28046         XPQ(3)=XPQ(3)+0.5D0*XPV
28047         XPQ(-3)=XPQ(-3)+0.5D0*XPV
28048  
28049 C...Isospin conjugation for neutron.
28050       ELSEIF(KFA.EQ.2112) THEN
28051         XPS=XPQ(1)
28052         XPQ(1)=XPQ(2)
28053         XPQ(2)=XPS
28054         XPS=XPQ(-1)
28055         XPQ(-1)=XPQ(-2)
28056         XPQ(-2)=XPS
28057  
28058 C...Simple recipes for hyperon (average valence parton distribution).
28059       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
28060      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
28061         XPVAL=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
28062         XPSEA=0.5D0*(XPQ(-1)+XPQ(-2))
28063         XPQ(1)=XPSEA
28064         XPQ(2)=XPSEA
28065         XPQ(-1)=XPSEA
28066         XPQ(-2)=XPSEA
28067         XPQ(KFA/1000)=XPQ(KFA/1000)+XPVAL
28068         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPVAL
28069         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPVAL
28070       ENDIF
28071  
28072 C...Charge conjugation for antiparticle.
28073       IF(KF.LT.0) THEN
28074         DO 260 KFL=1,25
28075           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 260
28076           XPS=XPQ(KFL)
28077           XPQ(KFL)=XPQ(-KFL)
28078           XPQ(-KFL)=XPS
28079   260   CONTINUE
28080       ENDIF
28081  
28082 C...Allow gluon also in position 21.
28083       XPQ(21)=XPQ(0)
28084  
28085 C...Check positivity and reset above maximum allowed flavour.
28086       DO 270 KFL=-25,25
28087         XPQ(KFL)=MAX(0D0,XPQ(KFL))
28088         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
28089   270 CONTINUE
28090  
28091 C...Formats for error printouts.
28092  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
28093  5100 FORMAT(' Error: illegal particle code for parton distribution;',
28094      &' KF =',I5)
28095  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
28096      &3I5)
28097  
28098       RETURN
28099       END
28100  
28101 C*********************************************************************
28102  
28103 C...PYPDFL
28104 C...Gives proton parton distribution at small x and/or Q^2 according to
28105 C...correct limiting behaviour.
28106  
28107       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
28108  
28109 C...Double precision and integer declarations.
28110       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28111       IMPLICIT INTEGER(I-N)
28112       INTEGER PYK,PYCHGE,PYCOMP
28113 C...Commonblocks.
28114       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28115       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28116       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28117       COMMON/PYINT1/MINT(400),VINT(400)
28118       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
28119 C...Local arrays.
28120       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
28121       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
28122  
28123 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
28124       MINT(92)=0
28125       KFA=IABS(KF)
28126       IACC=0
28127       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
28128       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
28129       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
28130       IF(IACC.EQ.0) THEN
28131         CALL PYPDFU(KF,X,Q2,XPQ)
28132         RETURN
28133       ENDIF
28134  
28135 C...Reset. Check x.
28136       DO 100 KFL=-25,25
28137         XPQ(KFL)=0D0
28138   100 CONTINUE
28139       IF(X.LE.0D0.OR.X.GE.1D0) THEN
28140         WRITE(MSTU(11),5000) X
28141         RETURN
28142       ENDIF
28143  
28144 C...Define valence content.
28145       KFC=KF
28146       NV1=2
28147       NV2=1
28148       IF(KF.EQ.2212) THEN
28149         KFV1=2
28150         KFV2=1
28151       ELSEIF(KF.EQ.-2212) THEN
28152         KFV1=-2
28153         KFV2=-1
28154       ELSEIF(KF.EQ.2112) THEN
28155         KFV1=1
28156         KFV2=2
28157       ELSEIF(KF.EQ.-2112) THEN
28158         KFV1=-1
28159         KFV2=-2
28160       ELSEIF(KF.EQ.211) THEN
28161         NV1=1
28162         KFV1=2
28163         KFV2=-1
28164       ELSEIF(KF.EQ.-211) THEN
28165         NV1=1
28166         KFV1=-2
28167         KFV2=1
28168       ELSEIF(MINT(105).LE.223) THEN
28169         KFV1=1
28170         WTV1=0.2D0
28171         KFV2=2
28172         WTV2=0.8D0
28173       ELSEIF(MINT(105).EQ.333) THEN
28174         KFV1=3
28175         WTV1=1.0D0
28176         KFV2=1
28177         WTV2=0.0D0
28178       ELSEIF(MINT(105).EQ.443) THEN
28179         KFV1=4
28180         WTV1=1.0D0
28181         KFV2=1
28182         WTV2=0.0D0
28183       ENDIF
28184  
28185 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
28186       CALL PYPDFU(KFC,X,Q2,XPA)
28187       Q2MN=MAX(3D0,VINT(231))
28188       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
28189       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
28190  
28191 C...Large Q2 and large x: naive call is enough.
28192       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
28193         DO 110 KFL=-25,25
28194           XPQ(KFL)=XPA(KFL)
28195   110   CONTINUE
28196         MINT(92)=1
28197  
28198 C...Small Q2 and large x: dampen boundary value.
28199       ELSEIF(X.GT.XMN) THEN
28200  
28201 C...Evaluate at boundary and define dampening factors.
28202         CALL PYPDFU(KFC,X,Q2MN,XPA)
28203         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
28204         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
28205  
28206 C...Separate valence and sea parts of parton distribution.
28207         IF(KFA.NE.22) THEN
28208           XFV1=XPA(KFV1)-XPA(-KFV1)
28209           XPA(KFV1)=XPA(-KFV1)
28210           XFV2=XPA(KFV2)-XPA(-KFV2)
28211           XPA(KFV2)=XPA(-KFV2)
28212         ELSE
28213           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
28214           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
28215           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
28216           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
28217         ENDIF
28218  
28219 C...Dampen valence and sea separately. Put back together.
28220         DO 120 KFL=-25,25
28221           XPQ(KFL)=FS*XPA(KFL)
28222   120   CONTINUE
28223         IF(KFA.NE.22) THEN
28224           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
28225           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
28226         ELSE
28227           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
28228           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
28229           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
28230           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
28231         ENDIF
28232         MINT(92)=2
28233  
28234 C...Large Q2 and small x: interpolate behaviour.
28235       ELSEIF(Q2.GT.Q2MN) THEN
28236  
28237 C...Evaluate at extremes and define coefficients for interpolation.
28238         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
28239         VI232A=VINT(232)
28240         CALL PYPDFU(KFC,X,Q2B,XPB)
28241         VI232B=VINT(232)
28242         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
28243         FVA=(X/XMN)**0.45D0*FLA
28244         FSA=(X/XMN)**(-0.08D0)*FLA
28245         FB=1D0-FLA
28246  
28247 C...Separate valence and sea parts of parton distribution.
28248         IF(KFA.NE.22) THEN
28249           XFVA1=XPA(KFV1)-XPA(-KFV1)
28250           XPA(KFV1)=XPA(-KFV1)
28251           XFVA2=XPA(KFV2)-XPA(-KFV2)
28252           XPA(KFV2)=XPA(-KFV2)
28253           XFVB1=XPB(KFV1)-XPB(-KFV1)
28254           XPB(KFV1)=XPB(-KFV1)
28255           XFVB2=XPB(KFV2)-XPB(-KFV2)
28256           XPB(KFV2)=XPB(-KFV2)
28257         ELSE
28258           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
28259           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
28260           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
28261           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
28262           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
28263           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
28264           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
28265           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
28266         ENDIF
28267  
28268 C...Interpolate for valence and sea. Put back together.
28269         DO 130 KFL=-25,25
28270           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
28271   130   CONTINUE
28272         IF(KFA.NE.22) THEN
28273           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
28274           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
28275         ELSE
28276           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
28277           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
28278           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
28279           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
28280         ENDIF
28281         MINT(92)=3
28282  
28283 C...Small Q2 and small x: dampen boundary value and add term.
28284       ELSE
28285  
28286 C...Evaluate at boundary and define dampening factors.
28287         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
28288         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
28289         FA=1D0-FB
28290         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
28291         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
28292         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
28293         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
28294         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
28295         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
28296  
28297 C...Separate valence and sea parts of parton distribution.
28298         IF(KFA.NE.22) THEN
28299           XFV1=XPA(KFV1)-XPA(-KFV1)
28300           XPA(KFV1)=XPA(-KFV1)
28301           XFV2=XPA(KFV2)-XPA(-KFV2)
28302           XPA(KFV2)=XPA(-KFV2)
28303         ELSE
28304           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
28305           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
28306           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
28307           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
28308         ENDIF
28309  
28310 C...Dampen valence and sea separately. Add constant terms.
28311 C...Put back together.
28312         DO 140 KFL=-25,25
28313           XPQ(KFL)=FSA*XPA(KFL)
28314   140   CONTINUE
28315         IF(KFA.NE.22) THEN
28316           DO 150 KFL=-3,3
28317             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
28318   150     CONTINUE
28319           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
28320           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
28321         ELSE
28322           DO 160 KFL=-3,3
28323             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
28324   160     CONTINUE
28325           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
28326           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
28327           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
28328           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
28329         ENDIF
28330         XPQ(21)=XPQ(0)
28331         MINT(92)=4
28332       ENDIF
28333  
28334 C...Format for error printout.
28335  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
28336  
28337       RETURN
28338       END
28339  
28340 C*********************************************************************
28341  
28342 C...PYPDEL
28343 C...Gives electron (or muon, or tau) parton distribution.
28344  
28345       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
28346  
28347 C...Double precision and integer declarations.
28348       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28349       IMPLICIT INTEGER(I-N)
28350       INTEGER PYK,PYCHGE,PYCOMP
28351 C...Commonblocks.
28352       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28353       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28354       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28355       COMMON/PYINT1/MINT(400),VINT(400)
28356       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
28357 C...Local arrays.
28358       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
28359  
28360 C...Interface to PDFLIB.
28361       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
28362       SAVE /W50513/
28363       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
28364      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
28365       CHARACTER*20 PARM(20)
28366       DATA VALUE/20*0D0/,PARM/20*' '/
28367  
28368 C...Some common constants.
28369       DO 100 KFL=-25,25
28370         XPEL(KFL)=0D0
28371   100 CONTINUE
28372       AEM=PARU(101)
28373       PME=PMAS(11,1)
28374       IF(KFA.EQ.13) PME=PMAS(13,1)
28375       IF(KFA.EQ.15) PME=PMAS(15,1)
28376       XL=LOG(MAX(1D-10,X))
28377       X1L=LOG(MAX(1D-10,1D0-X))
28378       HLE=LOG(MAX(3D0,Q2/PME**2))
28379       HBE2=(AEM/PARU(1))*(HLE-1D0)
28380  
28381 C...Electron inside electron, see R. Kleiss et al., in Z physics at
28382 C...LEP 1, CERN 89-08, p. 34
28383       IF(MSTP(59).LE.1) THEN
28384         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
28385      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
28386         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
28387      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
28388      &  4D0*XL/(1D0-X)-5D0-X)
28389       ELSE
28390         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
28391      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
28392      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
28393       ENDIF
28394 C...Zero distribution for very large x and rescale it for intermediate.
28395       IF(X.GT.1D0-1D-10) THEN
28396         HEE=0D0
28397       ELSEIF(X.GT.1D0-1D-7) THEN
28398         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
28399       ENDIF
28400       XPEL(KFA)=X*HEE
28401  
28402 C...Photon and (transverse) W- inside electron.
28403       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
28404       IF(MSTP(13).LE.1) THEN
28405         HLG=HLE
28406       ELSE
28407         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
28408       ENDIF
28409       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
28410       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
28411       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
28412  
28413 C...Electron or positron inside photon inside electron.
28414       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
28415         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
28416      &  2D0*X*(1D0+X)*XL)
28417         XPEL(11)=XPEL(11)+XFSEA
28418         XPEL(-11)=XFSEA
28419  
28420 C...Initialize PDFLIB photon parton distributions.
28421         IF(MSTP(56).EQ.2) THEN
28422           PARM(1)='NPTYPE'
28423           VALUE(1)=3
28424           PARM(2)='NGROUP'
28425           VALUE(2)=MSTP(55)/1000
28426           PARM(3)='NSET'
28427           VALUE(3)=MOD(MSTP(55),1000)
28428           IF(MINT(93).NE.3000000+MSTP(55)) THEN
28429             CALL PDFSET(PARM,VALUE)
28430             MINT(93)=3000000+MSTP(55)
28431           ENDIF
28432         ENDIF
28433  
28434 C...Quarks and gluons inside photon inside electron:
28435 C...numerical convolution required.
28436         DO 110 KFL=0,6
28437           SXP(KFL)=0D0
28438   110   CONTINUE
28439         SUMXPP=0D0
28440         ITER=-1
28441   120   ITER=ITER+1
28442         SUMXP=SUMXPP
28443         NSTP=2**(ITER-1)
28444         IF(ITER.EQ.0) NSTP=2
28445         DO 130 KFL=0,6
28446           SXP(KFL)=0.5D0*SXP(KFL)
28447   130   CONTINUE
28448         WTSTP=0.5D0/NSTP
28449         IF(ITER.EQ.0) WTSTP=0.5D0
28450 C...Pick grid of x_{gamma} values logarithmically even.
28451         DO 150 ISTP=1,NSTP
28452           IF(ITER.EQ.0) THEN
28453             XLE=XL*(ISTP-1)
28454           ELSE
28455             XLE=XL*(ISTP-0.5D0)/NSTP
28456           ENDIF
28457           XE=MIN(1D0-1D-10,EXP(XLE))
28458           XG=MIN(1D0-1D-10,X/XE)
28459 C...Evaluate photon inside electron parton distribution for convolution.
28460           XPGP=1D0+(1D0-XE)**2
28461           IF(MSTP(13).LE.1) THEN
28462             XPGP=XPGP*HLE
28463           ELSE
28464             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
28465           ENDIF
28466 C...Evaluate photon parton distributions for convolution.
28467           IF(MSTP(56).EQ.1) THEN
28468             IF(MSTP(55).EQ.1) THEN
28469               CALL PYPDGA(XG,Q2,XPGA)
28470             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
28471               Q2MX=Q2
28472               P2MX=0.36D0
28473               IF(MSTP(55).GE.7) P2MX=4.0D0
28474               IF(MSTP(57).EQ.0) Q2MX=P2MX
28475               P2=0D0
28476               IF(VINT(120).LT.0D0) P2=VINT(120)**2
28477               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
28478               VINT(231)=P2MX
28479             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
28480               Q2MX=Q2
28481               P2MX=0.36D0
28482               IF(MSTP(55).GE.11) P2MX=4.0D0
28483               IF(MSTP(57).EQ.0) Q2MX=P2MX
28484               P2=0D0
28485               IF(VINT(120).LT.0D0) P2=VINT(120)**2
28486               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
28487               VINT(231)=P2MX
28488             ENDIF
28489             DO 140 KFL=0,5
28490               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
28491   140       CONTINUE
28492           ELSEIF(MSTP(56).EQ.2) THEN
28493 C...Call PDFLIB parton distributions.
28494             XX=XG
28495             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
28496             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
28497             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
28498             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
28499             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
28500             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
28501             SXP(3)=SXP(3)+WTSTP*XPGP*STR
28502             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
28503             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
28504             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
28505           ENDIF
28506   150   CONTINUE
28507         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
28508         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
28509      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
28510  
28511 C...Put convolution into output arrays.
28512         FCONV=AEMP*(-XL)
28513         XPEL(0)=FCONV*SXP(0)
28514         DO 160 KFL=1,6
28515           XPEL(KFL)=FCONV*SXP(KFL)
28516           XPEL(-KFL)=XPEL(KFL)
28517   160   CONTINUE
28518       ENDIF
28519  
28520       RETURN
28521       END
28522  
28523 C*********************************************************************
28524  
28525 C...PYPDGA
28526 C...Gives photon parton distribution.
28527  
28528       SUBROUTINE PYPDGA(X,Q2,XPGA)
28529  
28530 C...Double precision and integer declarations.
28531       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28532       IMPLICIT INTEGER(I-N)
28533       INTEGER PYK,PYCHGE,PYCOMP
28534 C...Commonblocks.
28535       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28536       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28537       COMMON/PYINT1/MINT(400),VINT(400)
28538       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
28539 C...Local arrays.
28540       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
28541      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
28542      &DGCS(4,3),DGDS(4,3),DGES(4,3)
28543  
28544 C...The following data lines are coefficients needed in the
28545 C...Drees and Grassie photon parton distribution parametrization.
28546       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
28547      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
28548       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
28549      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
28550       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
28551      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
28552       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
28553      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
28554       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
28555      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
28556       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
28557      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
28558       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
28559      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
28560       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
28561      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
28562       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
28563      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
28564       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
28565      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
28566       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
28567      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
28568       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
28569      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
28570       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
28571      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
28572  
28573 C...Photon parton distribution from Drees and Grassie.
28574 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
28575       DO 100 KFL=-6,6
28576         XPGA(KFL)=0D0
28577   100 CONTINUE
28578       VINT(231)=1D0
28579       IF(MSTP(57).LE.0) THEN
28580         T=LOG(1D0/0.16D0)
28581       ELSE
28582         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
28583       ENDIF
28584       X1=1D0-X
28585       NF=3
28586       IF(Q2.GT.25D0) NF=4
28587       IF(Q2.GT.300D0) NF=5
28588       NFE=NF-2
28589       AEM=PARU(101)
28590  
28591 C...Evaluate gluon content.
28592       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
28593       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
28594       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
28595       XPGL=DGA*X**DGB*X1**DGC
28596  
28597 C...Evaluate up- and down-type quark content.
28598       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
28599       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
28600       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
28601       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
28602       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
28603       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
28604       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
28605       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
28606       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
28607       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
28608       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
28609       DGF=9D0
28610       IF(NF.EQ.4) DGF=10D0
28611       IF(NF.EQ.5) DGF=55D0/6D0
28612       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
28613       IF(NF.LE.3) THEN
28614         XPQU=(XPQS+9D0*XPQN)/6D0
28615         XPQD=(XPQS-4.5D0*XPQN)/6D0
28616       ELSEIF(NF.EQ.4) THEN
28617         XPQU=(XPQS+6D0*XPQN)/8D0
28618         XPQD=(XPQS-6D0*XPQN)/8D0
28619       ELSE
28620         XPQU=(XPQS+7.5D0*XPQN)/10D0
28621         XPQD=(XPQS-5D0*XPQN)/10D0
28622       ENDIF
28623  
28624 C...Put into output arrays.
28625       XPGA(0)=AEM*XPGL
28626       XPGA(1)=AEM*XPQD
28627       XPGA(2)=AEM*XPQU
28628       XPGA(3)=AEM*XPQD
28629       IF(NF.GE.4) XPGA(4)=AEM*XPQU
28630       IF(NF.GE.5) XPGA(5)=AEM*XPQD
28631       DO 110 KFL=1,6
28632         XPGA(-KFL)=XPGA(KFL)
28633   110 CONTINUE
28634  
28635       RETURN
28636       END
28637  
28638 C*********************************************************************
28639  
28640 C...PYGGAM
28641 C...Constructs the F2 and parton distributions of the photon
28642 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
28643 C...For F2, c and b are included by the Bethe-Heitler formula;
28644 C...in the 'MSbar' scheme additionally a Cgamma term is added.
28645 C...Contains the SaS sets 1D, 1M, 2D and 2M.
28646 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
28647  
28648       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
28649  
28650 C...Double precision and integer declarations.
28651       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28652       IMPLICIT INTEGER(I-N)
28653       INTEGER PYK,PYCHGE,PYCOMP
28654 C...Commonblocks.
28655       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
28656      &XPDIR(-6:6)
28657       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
28658       SAVE /PYINT8/,/PYINT9/
28659 C...Local arrays.
28660       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
28661 C...Charm and bottom masses (low to compensate for J/psi etc.).
28662       DATA PMC/1.3D0/, PMB/4.6D0/
28663 C...alpha_em and alpha_em/(2*pi).
28664       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
28665 C...Lambda value for 4 flavours.
28666       DATA ALAM/0.20D0/
28667 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
28668       DATA FRACU/0.8D0/
28669 C...VMD couplings f_V**2/(4*pi).
28670       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
28671 C...Masses for rho (=omega) and phi.
28672       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
28673 C...Number of points in integration for IP2=1.
28674       DATA NSTEP/100/
28675  
28676 C...Reset output.
28677       F2GM=0D0
28678       DO 100 KFL=-6,6
28679         XPDFGM(KFL)=0D0
28680         XPVMD(KFL)=0D0
28681         XPANL(KFL)=0D0
28682         XPANH(KFL)=0D0
28683         XPBEH(KFL)=0D0
28684         XPDIR(KFL)=0D0
28685         VXPVMD(KFL)=0D0
28686         VXPANL(KFL)=0D0
28687         VXPANH(KFL)=0D0
28688         VXPDGM(KFL)=0D0
28689   100 CONTINUE
28690  
28691 C...Set Q0 cut-off parameter as function of set used.
28692       IF(ISET.LE.2) THEN
28693         Q0=0.6D0
28694       ELSE
28695         Q0=2D0
28696       ENDIF
28697       Q02=Q0**2
28698  
28699 C...Scale choice for off-shell photon; common factors.
28700       Q2A=Q2
28701       FACNOR=1D0
28702       IF(IP2.EQ.1) THEN
28703         P2MX=P2+Q02
28704         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
28705         FACNOR=LOG(Q2/Q02)/NSTEP
28706       ELSEIF(IP2.EQ.2) THEN
28707         P2MX=MAX(P2,Q02)
28708       ELSEIF(IP2.EQ.3) THEN
28709         P2MX=P2+Q02
28710         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
28711       ELSEIF(IP2.EQ.4) THEN
28712         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28713      &  ((Q2+P2)*(Q02+P2)))
28714       ELSEIF(IP2.EQ.5) THEN
28715         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28716      &  ((Q2+P2)*(Q02+P2)))
28717         P2MX=Q0*SQRT(P2MXA)
28718         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
28719       ELSEIF(IP2.EQ.6) THEN
28720         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28721      &  ((Q2+P2)*(Q02+P2)))
28722         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
28723       ELSE
28724         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28725      &  ((Q2+P2)*(Q02+P2)))
28726         P2MX=Q0*SQRT(P2MXA)
28727         P2MXB=P2MX
28728         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
28729         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
28730         IF(ABS(Q2-Q02).GT.1D-6) THEN
28731           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
28732         ELSEIF(P2.LT.Q02) THEN
28733           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
28734         ELSE
28735           FACNOR=1D0
28736         ENDIF
28737       ENDIF
28738  
28739 C...Call VMD parametrization for d quark and use to give rho, omega,
28740 C...phi. Note dipole dampening for off-shell photon.
28741       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28742       XFVAL=VXPGA(1)
28743       XPGA(1)=XPGA(2)
28744       XPGA(-1)=XPGA(-2)
28745       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
28746       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
28747       DO 110 KFL=-5,5
28748         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
28749   110 CONTINUE
28750       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
28751       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
28752       XPVMD(3)=XPVMD(3)+FACS*XFVAL
28753       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
28754       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
28755       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
28756       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
28757       VXPVMD(2)=FRACU*FACUD*XFVAL
28758       VXPVMD(3)=FACS*XFVAL
28759       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
28760       VXPVMD(-2)=FRACU*FACUD*XFVAL
28761       VXPVMD(-3)=FACS*XFVAL
28762  
28763       IF(IP2.NE.1) THEN
28764 C...Anomalous parametrizations for different strategies
28765 C...for off-shell photons; except full integration.
28766  
28767 C...Call anomalous parametrization for d + u + s.
28768         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28769         DO 120 KFL=-5,5
28770           XPANL(KFL)=FACNOR*XPGA(KFL)
28771           VXPANL(KFL)=FACNOR*VXPGA(KFL)
28772   120   CONTINUE
28773  
28774 C...Call anomalous parametrization for c and b.
28775         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28776         DO 130 KFL=-5,5
28777           XPANH(KFL)=FACNOR*XPGA(KFL)
28778           VXPANH(KFL)=FACNOR*VXPGA(KFL)
28779   130   CONTINUE
28780         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28781         DO 140 KFL=-5,5
28782           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
28783           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
28784   140   CONTINUE
28785  
28786       ELSE
28787 C...Special option: loop over flavours and integrate over k2.
28788         DO 170 KF=1,5
28789           DO 160 ISTEP=1,NSTEP
28790             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
28791             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
28792      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
28793             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
28794             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
28795             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
28796             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
28797             DO 150 KFL=-5,5
28798               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
28799               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
28800               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
28801               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
28802   150       CONTINUE
28803   160     CONTINUE
28804   170   CONTINUE
28805       ENDIF
28806  
28807 C...Call Bethe-Heitler term expression for charm and bottom.
28808       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
28809       XPBEH(4)=XPBH
28810       XPBEH(-4)=XPBH
28811       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
28812       XPBEH(5)=XPBH
28813       XPBEH(-5)=XPBH
28814  
28815 C...For MSbar subtraction call C^gamma term expression for d, u, s.
28816       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
28817         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
28818         DO 180 KFL=-5,5
28819           XPDIR(KFL)=XPGA(KFL)
28820   180   CONTINUE
28821       ENDIF
28822  
28823 C...Store result in output array.
28824       DO 190 KFL=-5,5
28825         CHSQ=1D0/9D0
28826         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
28827         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
28828         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
28829         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
28830         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
28831   190 CONTINUE
28832  
28833       RETURN
28834       END
28835  
28836 C*********************************************************************
28837  
28838 C...PYGVMD
28839 C...Evaluates the VMD parton distributions of a photon,
28840 C...evolved homogeneously from an initial scale P2 to Q2.
28841 C...Does not include dipole suppression factor.
28842 C...ISET is parton distribution set, see above;
28843 C...additionally ISET=0 is used for the evolution of an anomalous photon
28844 C...which branched at a scale P2 and then evolved homogeneously to Q2.
28845 C...ALAM is the 4-flavour Lambda, which is automatically converted
28846 C...to 3- and 5-flavour equivalents as needed.
28847 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
28848  
28849       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
28850  
28851 C...Double precision and integer declarations.
28852       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28853       IMPLICIT INTEGER(I-N)
28854       INTEGER PYK,PYCHGE,PYCOMP
28855 C...Local arrays and data.
28856       DIMENSION XPGA(-6:6), VXPGA(-6:6)
28857       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
28858  
28859 C...Reset output.
28860       DO 100 KFL=-6,6
28861         XPGA(KFL)=0D0
28862         VXPGA(KFL)=0D0
28863   100 CONTINUE
28864       KFA=IABS(KF)
28865  
28866 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
28867       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
28868       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
28869       P2EFF=MAX(P2,1.2D0*ALAM3**2)
28870       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
28871       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
28872       Q2EFF=MAX(Q2,P2EFF)
28873  
28874 C...Find number of flavours at lower and upper scale.
28875       NFP=4
28876       IF(P2EFF.LT.PMC**2) NFP=3
28877       IF(P2EFF.GT.PMB**2) NFP=5
28878       NFQ=4
28879       IF(Q2EFF.LT.PMC**2) NFQ=3
28880       IF(Q2EFF.GT.PMB**2) NFQ=5
28881  
28882 C...Find s as sum of 3-, 4- and 5-flavour parts.
28883       S=0D0
28884       IF(NFP.EQ.3) THEN
28885         Q2DIV=PMC**2
28886         IF(NFQ.EQ.3) Q2DIV=Q2EFF
28887         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
28888       ENDIF
28889       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
28890         P2DIV=P2EFF
28891         IF(NFP.EQ.3) P2DIV=PMC**2
28892         Q2DIV=Q2EFF
28893         IF(NFQ.EQ.5) Q2DIV=PMB**2
28894         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
28895       ENDIF
28896       IF(NFQ.EQ.5) THEN
28897         P2DIV=PMB**2
28898         IF(NFP.EQ.5) P2DIV=P2EFF
28899         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
28900       ENDIF
28901  
28902 C...Calculate frequent combinations of x and s.
28903       X1=1D0-X
28904       XL=-LOG(X)
28905       S2=S**2
28906       S3=S**3
28907       S4=S**4
28908  
28909 C...Evaluate homogeneous anomalous parton distributions below or
28910 C...above threshold.
28911       IF(ISET.EQ.0) THEN
28912         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28913      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28914           XVAL = X * 1.5D0 * (X**2+X1**2)
28915           XGLU = 0D0
28916           XSEA = 0D0
28917         ELSE
28918           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
28919      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
28920      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
28921      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
28922           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
28923      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
28924      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
28925           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
28926      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
28927      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
28928      &    (2D0*X-1D0)*X*XL**2)
28929         ENDIF
28930  
28931 C...Evaluate set 1D parton distributions below or above threshold.
28932       ELSEIF(ISET.EQ.1) THEN
28933         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28934      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28935           XVAL = 1.294D0 * X**0.80D0 * X1**0.76D0
28936           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
28937           XSEA = 0.100D0 * X1**3.76D0
28938         ELSE
28939           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
28940      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
28941           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
28942      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
28943      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
28944      &    X**0.40D0 * X1**(1.76D0+3D0*S)
28945           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
28946      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
28947      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
28948           XSEA0 = 0.100D0 * X1**3.76D0
28949         ENDIF
28950  
28951 C...Evaluate set 1M parton distributions below or above threshold.
28952       ELSEIF(ISET.EQ.2) THEN
28953         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28954      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28955           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
28956           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
28957           XSEA = 0D0
28958         ELSE
28959           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
28960      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
28961           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
28962      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
28963      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
28964      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
28965           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
28966      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
28967      &    XL**(2.8D0*S)
28968           XSEA0 = 0D0
28969         ENDIF
28970  
28971 C...Evaluate set 2D parton distributions below or above threshold.
28972       ELSEIF(ISET.EQ.3) THEN
28973         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28974      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28975           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
28976           XGLU = 1.925D0 * X1**2
28977           XSEA = 0.242D0 * X1**4
28978         ELSE
28979           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
28980      &    X**(0.46D0+0.25D0*S) *
28981      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
28982      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
28983           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
28984      &    EXP(-18.67D0*S) *
28985      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
28986      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
28987      &    XL**(9.3D0*S/(1D0+1.7D0*S))
28988           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
28989      &    (1D0-0.607D0*S+21.95D0*S2) *
28990      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
28991           XSEA0 = 0.242D0 * X1**4
28992         ENDIF
28993  
28994 C...Evaluate set 2M parton distributions below or above threshold.
28995       ELSEIF(ISET.EQ.4) THEN
28996         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28997      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28998           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
28999           XGLU = 1.808D0 * X1**2
29000           XSEA = 0.209D0 * X1**4
29001         ELSE
29002           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
29003      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
29004      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
29005      &    XL**(5.15D0*S/(1D0+2D0*S)) +
29006      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
29007           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
29008      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
29009      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
29010      &    XL**(10.9D0*S/(1D0+2.5D0*S))
29011           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
29012      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
29013      &    X1**(4D0+S) * XL**(0.45D0*S)
29014           XSEA0 = 0.209D0 * X1**4
29015         ENDIF
29016       ENDIF
29017  
29018 C...Threshold factors for c and b sea.
29019       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
29020       XCHM=0D0
29021       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29022         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29023         IF(ISET.EQ.0) THEN
29024           XCHM=XSEA*(1D0-(SCH/SLL)**2)
29025         ELSE
29026           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
29027         ENDIF
29028       ENDIF
29029       XBOT=0D0
29030       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29031         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29032         IF(ISET.EQ.0) THEN
29033           XBOT=XSEA*(1D0-(SBT/SLL)**2)
29034         ELSE
29035           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
29036         ENDIF
29037       ENDIF
29038  
29039 C...Fill parton distributions.
29040       XPGA(0)=XGLU
29041       XPGA(1)=XSEA
29042       XPGA(2)=XSEA
29043       XPGA(3)=XSEA
29044       XPGA(4)=XCHM
29045       XPGA(5)=XBOT
29046       XPGA(KFA)=XPGA(KFA)+XVAL
29047       DO 110 KFL=1,5
29048         XPGA(-KFL)=XPGA(KFL)
29049   110 CONTINUE
29050       VXPGA(KFA)=XVAL
29051       VXPGA(-KFA)=XVAL
29052  
29053       RETURN
29054       END
29055  
29056 C*********************************************************************
29057  
29058 C...PYGANO
29059 C...Evaluates the parton distributions of the anomalous photon,
29060 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
29061 C...KF=0 gives the sum over (up to) 5 flavours,
29062 C...KF<0 limits to flavours up to abs(KF),
29063 C...KF>0 is for flavour KF only.
29064 C...ALAM is the 4-flavour Lambda, which is automatically converted
29065 C...to 3- and 5-flavour equivalents as needed.
29066 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29067  
29068       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
29069  
29070 C...Double precision and integer declarations.
29071       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29072       IMPLICIT INTEGER(I-N)
29073       INTEGER PYK,PYCHGE,PYCOMP
29074 C...Local arrays and data.
29075       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
29076       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
29077  
29078 C...Reset output.
29079       DO 100 KFL=-6,6
29080         XPGA(KFL)=0D0
29081         VXPGA(KFL)=0D0
29082   100 CONTINUE
29083       IF(Q2.LE.P2) RETURN
29084       KFA=IABS(KF)
29085  
29086 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
29087       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
29088       ALAMSQ(4)=ALAM**2
29089       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
29090       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
29091       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
29092       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
29093       Q2EFF=MAX(Q2,P2EFF)
29094       XL=-LOG(X)
29095  
29096 C...Find number of flavours at lower and upper scale.
29097       NFP=4
29098       IF(P2EFF.LT.PMC**2) NFP=3
29099       IF(P2EFF.GT.PMB**2) NFP=5
29100       NFQ=4
29101       IF(Q2EFF.LT.PMC**2) NFQ=3
29102       IF(Q2EFF.GT.PMB**2) NFQ=5
29103  
29104 C...Define range of flavour loop.
29105       IF(KF.EQ.0) THEN
29106         KFLMN=1
29107         KFLMX=5
29108       ELSEIF(KF.LT.0) THEN
29109         KFLMN=1
29110         KFLMX=KFA
29111       ELSE
29112         KFLMN=KFA
29113         KFLMX=KFA
29114       ENDIF
29115  
29116 C...Loop over flavours the photon can branch into.
29117       DO 110 KFL=KFLMN,KFLMX
29118  
29119 C...Light flavours: calculate t range and (approximate) s range.
29120         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
29121           TDIFF=LOG(Q2EFF/P2EFF)
29122           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29123      &    LOG(P2EFF/ALAMSQ(NFQ)))
29124           IF(NFQ.GT.NFP) THEN
29125             Q2DIV=PMB**2
29126             IF(NFQ.EQ.4) Q2DIV=PMC**2
29127             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
29128      &      LOG(P2EFF/ALAMSQ(NFQ)))
29129             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
29130      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
29131             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
29132           ENDIF
29133           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
29134             Q2DIV=PMC**2
29135             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
29136      &      LOG(P2EFF/ALAMSQ(4)))
29137             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
29138      &      LOG(P2EFF/ALAMSQ(3)))
29139             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
29140           ENDIF
29141  
29142 C...u and s quark do not need a separate treatment when d has been done.
29143         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
29144  
29145 C...Charm: as above, but only include range above c threshold.
29146         ELSEIF(KFL.EQ.4) THEN
29147           IF(Q2.LE.PMC**2) GOTO 110
29148           P2EFF=MAX(P2EFF,PMC**2)
29149           Q2EFF=MAX(Q2EFF,P2EFF)
29150           TDIFF=LOG(Q2EFF/P2EFF)
29151           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29152      &    LOG(P2EFF/ALAMSQ(NFQ)))
29153           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
29154             Q2DIV=PMB**2
29155             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
29156      &      LOG(P2EFF/ALAMSQ(NFQ)))
29157             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
29158      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
29159             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
29160           ENDIF
29161  
29162 C...Bottom: as above, but only include range above b threshold.
29163         ELSEIF(KFL.EQ.5) THEN
29164           IF(Q2.LE.PMB**2) GOTO 110
29165           P2EFF=MAX(P2EFF,PMB**2)
29166           Q2EFF=MAX(Q2,P2EFF)
29167           TDIFF=LOG(Q2EFF/P2EFF)
29168           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29169      &    LOG(P2EFF/ALAMSQ(NFQ)))
29170         ENDIF
29171  
29172 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
29173         CHSQ=1D0/9D0
29174         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
29175         FAC=AEM2PI*2D0*CHSQ*TDIFF
29176  
29177 C...Evaluate parton distributions (normalized to unit momentum sum).
29178         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
29179           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
29180      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
29181      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
29182      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
29183           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
29184      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
29185      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
29186           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
29187      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
29188      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
29189      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
29190  
29191 C...Threshold factors for c and b sea.
29192           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
29193           XCHM=0D0
29194           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29195             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29196             XCHM=XSEA*(1D0-(SCH/SLL)**3)
29197           ENDIF
29198           XBOT=0D0
29199           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29200             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29201             XBOT=XSEA*(1D0-(SBT/SLL)**3)
29202           ENDIF
29203         ENDIF
29204  
29205 C...Add contribution of each valence flavour.
29206         XPGA(0)=XPGA(0)+FAC*XGLU
29207         XPGA(1)=XPGA(1)+FAC*XSEA
29208         XPGA(2)=XPGA(2)+FAC*XSEA
29209         XPGA(3)=XPGA(3)+FAC*XSEA
29210         XPGA(4)=XPGA(4)+FAC*XCHM
29211         XPGA(5)=XPGA(5)+FAC*XBOT
29212         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
29213         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
29214   110 CONTINUE
29215       DO 120 KFL=1,5
29216         XPGA(-KFL)=XPGA(KFL)
29217         VXPGA(-KFL)=VXPGA(KFL)
29218   120 CONTINUE
29219  
29220       RETURN
29221       END
29222  
29223 C*********************************************************************
29224  
29225 C...PYGBEH
29226 C...Evaluates the Bethe-Heitler cross section for heavy flavour
29227 C...production.
29228 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29229  
29230       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
29231  
29232 C...Double precision and integer declarations.
29233       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29234       IMPLICIT INTEGER(I-N)
29235       INTEGER PYK,PYCHGE,PYCOMP
29236  
29237 C...Local data.
29238       DATA AEM2PI/0.0011614D0/
29239  
29240 C...Reset output.
29241       XPBH=0D0
29242       SIGBH=0D0
29243  
29244 C...Check kinematics limits.
29245       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
29246       W2=Q2*(1D0-X)/X-P2
29247       BETA2=1D0-4D0*PM2/W2
29248       IF(BETA2.LT.1D-10) RETURN
29249       BETA=SQRT(BETA2)
29250       RMQ=4D0*PM2/Q2
29251  
29252 C...Simple case: P2 = 0.
29253       IF(P2.LT.1D-4) THEN
29254         IF(BETA.LT.0.99D0) THEN
29255           XBL=LOG((1D0+BETA)/(1D0-BETA))
29256         ELSE
29257           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
29258         ENDIF
29259         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
29260      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
29261  
29262 C...Complicated case: P2 > 0, based on approximation of
29263 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
29264       ELSE
29265         RPQ=1D0-4D0*X**2*P2/Q2
29266         IF(RPQ.GT.1D-10) THEN
29267           RPBE=SQRT(RPQ*BETA2)
29268           IF(RPBE.LT.0.99D0) THEN
29269             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
29270             XBI=2D0*RPBE/(1D0-RPBE**2)
29271           ELSE
29272             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
29273             XBL=LOG((1D0+RPBE)**2/RPBESN)
29274             XBI=2D0*RPBE/RPBESN
29275           ENDIF
29276           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
29277      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
29278      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
29279         ENDIF
29280       ENDIF
29281  
29282 C...Multiply by charge-squared etc. to get parton distribution.
29283       CHSQ=1D0/9D0
29284       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
29285       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
29286  
29287       RETURN
29288       END
29289  
29290 C*********************************************************************
29291  
29292 C...PYGDIR
29293 C...Evaluates the direct contribution, i.e. the C^gamma term,
29294 C...as needed in MSbar parametrizations.
29295 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29296  
29297       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
29298  
29299 C...Double precision and integer declarations.
29300       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29301       IMPLICIT INTEGER(I-N)
29302       INTEGER PYK,PYCHGE,PYCOMP
29303 C...Local array and data.
29304       DIMENSION XPGA(-6:6)
29305       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
29306  
29307 C...Reset output.
29308       DO 100 KFL=-6,6
29309         XPGA(KFL)=0D0
29310   100 CONTINUE
29311  
29312 C...Evaluate common x-dependent expression.
29313       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
29314       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
29315  
29316 C...d, u, s part by simple charge factor.
29317       XPGA(1)=(1D0/9D0)*CGAM
29318       XPGA(2)=(4D0/9D0)*CGAM
29319       XPGA(3)=(1D0/9D0)*CGAM
29320  
29321 C...Also fill for antiquarks.
29322       DO 110 KF=1,5
29323         XPGA(-KF)=XPGA(KF)
29324   110 CONTINUE
29325  
29326       RETURN
29327       END
29328  
29329 C*********************************************************************
29330  
29331 C...PYPDPI
29332 C...Gives pi+ parton distribution according to two different
29333 C...parametrizations.
29334  
29335       SUBROUTINE PYPDPI(X,Q2,XPPI)
29336  
29337 C...Double precision and integer declarations.
29338       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29339       IMPLICIT INTEGER(I-N)
29340       INTEGER PYK,PYCHGE,PYCOMP
29341 C...Commonblocks.
29342       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29343       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29344       COMMON/PYINT1/MINT(400),VINT(400)
29345       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
29346 C...Local arrays.
29347       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
29348  
29349 C...The following data lines are coefficients needed in the
29350 C...Owens pion parton distribution parametrizations, see below.
29351 C...Expansion coefficients for up and down valence quark distributions.
29352       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
29353      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29354      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29355      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
29356       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
29357      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29358      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29359      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
29360 C...Expansion coefficients for gluon distribution.
29361       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
29362      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
29363      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
29364      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
29365       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
29366      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
29367      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
29368      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
29369 C...Expansion coefficients for (up+down+strange) quark sea distribution.
29370       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
29371      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
29372      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
29373      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
29374       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
29375      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
29376      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
29377      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
29378 C...Expansion coefficients for charm quark sea distribution.
29379       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
29380      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
29381      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
29382      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
29383       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
29384      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
29385      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
29386      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
29387  
29388 C...Euler's beta function, requires ordinary Gamma function
29389       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
29390  
29391 C...Reset output array.
29392       DO 100 KFL=-6,6
29393         XPPI(KFL)=0D0
29394   100 CONTINUE
29395  
29396       IF(MSTP(53).LE.2) THEN
29397 C...Pion parton distributions from Owens.
29398 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
29399  
29400 C...Determine set, Lambda and s expansion variable.
29401         NSET=MSTP(53)
29402         IF(NSET.EQ.1) ALAM=0.2D0
29403         IF(NSET.EQ.2) ALAM=0.4D0
29404         VINT(231)=4D0
29405         IF(MSTP(57).LE.0) THEN
29406           SD=0D0
29407         ELSE
29408           Q2IN=MIN(2D3,MAX(4D0,Q2))
29409           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
29410         ENDIF
29411  
29412 C...Calculate parton distributions.
29413         DO 120 KFL=1,4
29414           DO 110 IS=1,5
29415             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
29416      &      COW(3,IS,KFL,NSET)*SD**2
29417   110     CONTINUE
29418           IF(KFL.EQ.1) THEN
29419             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
29420           ELSE
29421             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
29422      &      TS(5)*X**2)
29423           ENDIF
29424   120   CONTINUE
29425  
29426 C...Put into output array.
29427         XPPI(0)=XQ(2)
29428         XPPI(1)=XQ(3)/6D0
29429         XPPI(2)=XQ(1)+XQ(3)/6D0
29430         XPPI(3)=XQ(3)/6D0
29431         XPPI(4)=XQ(4)
29432         XPPI(-1)=XQ(1)+XQ(3)/6D0
29433         XPPI(-2)=XQ(3)/6D0
29434         XPPI(-3)=XQ(3)/6D0
29435         XPPI(-4)=XQ(4)
29436  
29437 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
29438 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
29439 C...10^-5 < x < 1.
29440       ELSE
29441  
29442 C...Determine s expansion variable and some x expressions.
29443         VINT(231)=0.25D0
29444         IF(MSTP(57).LE.0) THEN
29445           SD=0D0
29446         ELSE
29447           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
29448           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
29449         ENDIF
29450         SD2=SD**2
29451         XL=-LOG(X)
29452         XS=SQRT(X)
29453  
29454 C...Evaluate valence, gluon and sea distributions.
29455         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
29456      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
29457         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
29458      &  SD-0.175D0*SD2)+
29459      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
29460      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
29461      &  XL)))*
29462      &  (1D0-X)**(0.390D0+1.053D0*SD)
29463         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
29464      &  X)**3.359D0*
29465      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
29466      &  XL))/
29467      &  XL**(2.538D0-0.763D0*SD)
29468         IF(SD.LE.0.888D0) THEN
29469           XFCHM=0D0
29470         ELSE
29471           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
29472      &    0.771D0*SD)*
29473      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
29474      &    XL))
29475         ENDIF
29476         IF(SD.LE.1.351D0) THEN
29477           XFBOT=0D0
29478         ELSE
29479           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
29480      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
29481      &    XL))
29482         ENDIF
29483  
29484 C...Put into output array.
29485         XPPI(0)=XFGLU
29486         XPPI(1)=XFSEA
29487         XPPI(2)=XFSEA
29488         XPPI(3)=XFSEA
29489         XPPI(4)=XFCHM
29490         XPPI(5)=XFBOT
29491         DO 130 KFL=1,5
29492           XPPI(-KFL)=XPPI(KFL)
29493   130   CONTINUE
29494         XPPI(2)=XPPI(2)+XFVAL
29495         XPPI(-1)=XPPI(-1)+XFVAL
29496       ENDIF
29497  
29498       RETURN
29499       END
29500  
29501 C*********************************************************************
29502  
29503 C...PYPDPR
29504 C...Gives proton parton distributions according to a few different
29505 C...parametrizations.
29506  
29507       SUBROUTINE PYPDPR(X,Q2,XPPR)
29508  
29509 C...Double precision and integer declarations.
29510       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29511       IMPLICIT INTEGER(I-N)
29512       INTEGER PYK,PYCHGE,PYCOMP
29513 C...Commonblocks.
29514       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29515       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29516       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29517       COMMON/PYINT1/MINT(400),VINT(400)
29518       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
29519 C...Arrays and data.
29520       DIMENSION XPPR(-6:6),Q2MIN(16)
29521       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
29522      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
29523  
29524 C...Reset output array.
29525       DO 100 KFL=-6,6
29526         XPPR(KFL)=0D0
29527   100 CONTINUE
29528  
29529 C...Common preliminaries.
29530       NSET=MAX(1,MIN(16,MSTP(51)))
29531       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
29532       VINT(231)=Q2MIN(NSET)
29533       IF(MSTP(57).EQ.0) THEN
29534         Q2L=Q2MIN(NSET)
29535       ELSE
29536         Q2L=MAX(Q2MIN(NSET),Q2)
29537       ENDIF
29538  
29539       IF(NSET.GE.1.AND.NSET.LE.3) THEN
29540 C...Interface to the CTEQ 3 parton distributions.
29541         QRT=SQRT(MAX(1D0,Q2L))
29542  
29543 C...Loop over flavours.
29544         DO 110 I=-6,6
29545           IF(I.LE.0) THEN
29546             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
29547           ELSEIF(I.LE.2) THEN
29548             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
29549           ELSE
29550             XPPR(I)=XPPR(-I)
29551           ENDIF
29552   110   CONTINUE
29553  
29554       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
29555 C...Interface to the GRV 94 distributions.
29556         IF(NSET.EQ.4) THEN
29557           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29558         ELSEIF(NSET.EQ.5) THEN
29559           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29560         ELSE
29561           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29562         ENDIF
29563  
29564 C...Put into output array.
29565         XPPR(0)=GL
29566         XPPR(-1)=0.5D0*(UDB+DEL)
29567         XPPR(-2)=0.5D0*(UDB-DEL)
29568         XPPR(-3)=SB
29569         XPPR(-4)=CHM
29570         XPPR(-5)=BOT
29571         XPPR(1)=DV+XPPR(-1)
29572         XPPR(2)=UV+XPPR(-2)
29573         XPPR(3)=SB
29574         XPPR(4)=CHM
29575         XPPR(5)=BOT
29576  
29577       ELSEIF(NSET.EQ.7) THEN
29578 C...Interface to the CTEQ 5L parton distributions.
29579 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
29580 C...freezing x*f(x,Q2) at borders.
29581         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
29582         XIN=MAX(1D-6,MIN(1D0,X))
29583  
29584 C...Loop over flavours (with u <-> d notation mismatch).
29585         SUMUDB=PYCT5L(-1,XIN,QRT)
29586         RATUDB=PYCT5L(-2,XIN,QRT)
29587         DO 120 I=-5,2
29588           IF(I.EQ.1) THEN
29589             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
29590           ELSEIF(I.EQ.2) THEN
29591             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
29592           ELSEIF(I.EQ.-1) THEN
29593             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
29594           ELSEIF(I.EQ.-2) THEN
29595             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
29596           ELSE
29597             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
29598             IF(I.LT.0) XPPR(-I)=XPPR(I)
29599           ENDIF
29600   120   CONTINUE
29601  
29602       ELSEIF(NSET.EQ.8) THEN
29603 C...Interface to the CTEQ 5M1 parton distributions.
29604         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
29605         XIN=MAX(1D-6,MIN(1D0,X))
29606  
29607 C...Loop over flavours (with u <-> d notation mismatch).
29608         SUMUDB=PYCT5M(-1,XIN,QRT)
29609         RATUDB=PYCT5M(-2,XIN,QRT)
29610         DO 130 I=-5,2
29611           IF(I.EQ.1) THEN
29612             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
29613           ELSEIF(I.EQ.2) THEN
29614             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
29615           ELSEIF(I.EQ.-1) THEN
29616             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
29617           ELSEIF(I.EQ.-2) THEN
29618             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
29619           ELSE
29620             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
29621             IF(I.LT.0) XPPR(-I)=XPPR(I)
29622           ENDIF
29623   130   CONTINUE
29624  
29625       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
29626 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
29627 C...obsolete but offers backwards compatibility.
29628         CALL PYPDPO(X,Q2L,XPPR)
29629  
29630 C...Symmetric choice for debugging only
29631       ELSEIF(NSET.EQ.16) THEN
29632         XPPR(0)=.5D0/X
29633         XPPR(1)=.05D0/X
29634         XPPR(2)=.05D0/X
29635         XPPR(3)=.05D0/X
29636         XPPR(4)=.05D0/X
29637         XPPR(5)=.05D0/X
29638         XPPR(-1)=.05D0/X
29639         XPPR(-2)=.05D0/X
29640         XPPR(-3)=.05D0/X
29641         XPPR(-4)=.05D0/X
29642         XPPR(-5)=.05D0/X
29643  
29644       ENDIF
29645  
29646       RETURN
29647       END
29648  
29649 C*********************************************************************
29650  
29651 C...PYCTEQ
29652 C...Gives the CTEQ 3 parton distribution function sets in
29653 C...parametrized form, of October 24, 1994.
29654 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
29655 C...J. Qiu, W.K. Tung and H. Weerts.
29656  
29657       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
29658  
29659 C...Double precision declaration.
29660       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29661       IMPLICIT INTEGER(I-N)
29662  
29663 C...Data on Lambda values of fits, minimum Q and quark masses.
29664       DIMENSION ALM(3), QMS(4:6)
29665       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
29666       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
29667  
29668 C....Check flavour thresholds. Set up QI for SB.
29669       IP = IABS(IPRT)
29670       IF(IP .GE. 4) THEN
29671         IF(Q .LE. QMS(IP)) THEN
29672           PYCTEQ = 0D0
29673           RETURN
29674         ENDIF
29675         QI = QMS(IP)
29676       ELSE
29677         QI = QMN
29678       ENDIF
29679  
29680 C...Use "standard lambda" of parametrization program for expansion.
29681       ALAM = ALM (ISET)
29682       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
29683       SB = LOG (SBL)
29684       SB2 = SB*SB
29685       SB3 = SB2*SB
29686  
29687 C...Expansion for CTEQ3L.
29688       IF(ISET .EQ. 1) THEN
29689         IF(IPRT .EQ. 2) THEN
29690           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
29691      &    0.3171D+00*SB3)
29692           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
29693           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
29694           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
29695           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
29696           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
29697         ELSEIF(IPRT .EQ. 1) THEN
29698           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
29699      &    0.7728D+00*SB3)
29700           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
29701           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
29702           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
29703           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
29704           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
29705         ELSEIF(IPRT .EQ. 0) THEN
29706           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
29707      &    0.5343D+00*SB3)
29708           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
29709           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
29710           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
29711           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
29712           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
29713         ELSEIF(IPRT .EQ. -1) THEN
29714           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
29715      &    0.2031D+01*SB3)
29716           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
29717           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
29718           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
29719           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
29720           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
29721         ELSEIF(IPRT .EQ. -2) THEN
29722           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
29723      &    0.9872D-01*SB3)
29724           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
29725           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
29726           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
29727           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
29728           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
29729         ELSEIF(IPRT .EQ. -3) THEN
29730           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
29731      &    0.8390D+00*SB3)
29732           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
29733           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
29734           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
29735           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
29736           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
29737         ELSEIF(IPRT .EQ. -4) THEN
29738           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
29739      &    0.1651D-01*SB2)
29740           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
29741           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
29742           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
29743           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
29744           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
29745         ELSEIF(IPRT .EQ. -5) THEN
29746           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
29747      &    0.3702D+01*SB2)
29748           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
29749           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
29750           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
29751           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
29752           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
29753         ELSEIF(IPRT .EQ. -6) THEN
29754           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
29755      &    0.6943D+00*SB2)
29756           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
29757           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
29758           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
29759           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
29760           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
29761         ENDIF
29762  
29763 C...Expansion for CTEQ3M.
29764       ELSEIF(ISET .EQ. 2) THEN
29765         IF(IPRT .EQ. 2) THEN
29766           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
29767      &    0.2935D+00*SB3)
29768           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
29769           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
29770           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
29771           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
29772           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
29773         ELSEIF(IPRT .EQ. 1) THEN
29774           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
29775      &    0.4305D-01*SB3)
29776           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
29777           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
29778           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
29779           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
29780           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
29781         ELSEIF(IPRT .EQ. 0) THEN
29782           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
29783      &    0.1037D-01*SB3)
29784           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
29785           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
29786           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
29787           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
29788           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
29789         ELSEIF(IPRT .EQ. -1) THEN
29790           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
29791      &    0.1602D+01*SB3)
29792           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
29793           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
29794           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
29795           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
29796           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
29797         ELSEIF(IPRT .EQ. -2) THEN
29798           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
29799      &    0.2496D+00*SB3)
29800           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
29801           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
29802           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
29803           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
29804           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
29805         ELSEIF(IPRT .EQ. -3) THEN
29806           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
29807      &    0.1936D+01*SB3)
29808           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
29809           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
29810           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
29811           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
29812           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
29813         ELSEIF(IPRT .EQ. -4) THEN
29814           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
29815      &    0.5348D+00*SB2)
29816           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
29817           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
29818           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
29819           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
29820           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
29821         ELSEIF(IPRT .EQ. -5) THEN
29822           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
29823      &    0.1569D+01*SB2)
29824           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
29825           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
29826           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
29827           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
29828           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
29829         ELSEIF(IPRT .EQ. -6) THEN
29830           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
29831      &    0.8838D+01*SB2)
29832           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
29833           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
29834           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
29835           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
29836           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
29837         ENDIF
29838  
29839 C...Expansion for CTEQ3D.
29840       ELSEIF(ISET .EQ. 3) THEN
29841         IF(IPRT .EQ. 2) THEN
29842           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
29843      &    0.2902D+00*SB3)
29844           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
29845           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
29846           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
29847           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
29848           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
29849         ELSEIF(IPRT .EQ. 1) THEN
29850           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
29851      &    0.7257D+00*SB3)
29852           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
29853           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
29854           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
29855           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
29856           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
29857         ELSEIF(IPRT .EQ. 0) THEN
29858           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
29859      &    0.2734D-04*SB3)
29860           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
29861           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
29862           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
29863           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
29864           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
29865         ELSEIF(IPRT .EQ. -1) THEN
29866           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
29867      &    0.1671D+01*SB3)
29868           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
29869           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
29870           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
29871           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
29872           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
29873         ELSEIF(IPRT .EQ. -2) THEN
29874           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
29875      &    0.2223D+00*SB3)
29876           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
29877           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
29878           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
29879           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
29880           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
29881         ELSEIF(IPRT .EQ. -3) THEN
29882           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
29883      &    0.1937D+01*SB3)
29884           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
29885           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
29886           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
29887           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
29888           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
29889         ELSEIF(IPRT .EQ. -4) THEN
29890           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
29891      &    0.5137D+00*SB2)
29892           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
29893           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
29894           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
29895           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
29896           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
29897         ELSEIF(IPRT .EQ. -5) THEN
29898           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
29899      &    0.2143D+01*SB2)
29900           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
29901           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
29902           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
29903           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
29904           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
29905         ELSEIF(IPRT .EQ. -6) THEN
29906           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
29907      &    0.9998D+01*SB2)
29908           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
29909           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
29910           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
29911           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
29912           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
29913         ENDIF
29914       ENDIF
29915  
29916 C...Calculation of x * f(x, Q).
29917       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
29918      &   *(LOG(1D0+1D0/X))**A5 )
29919  
29920       RETURN
29921       END
29922  
29923 C*********************************************************************
29924  
29925 C...PYGRVL
29926 C...Gives the GRV 94 L (leading order) parton distribution function set
29927 C...in parametrized form.
29928 C...Authors: M. Glueck, E. Reya and A. Vogt.
29929  
29930       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29931  
29932 C...Double precision declaration.
29933       IMPLICIT DOUBLE PRECISION (A - Z)
29934  
29935 C...Common expressions.
29936       MU2  = 0.23D0
29937       LAM2 = 0.2322D0 * 0.2322D0
29938       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
29939       DS = SQRT (S)
29940       S2 = S * S
29941       S3 = S2 * S
29942  
29943 C...uv :
29944       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
29945       AKU =  0.590D0 - 0.024D0 * S
29946       BKU =  0.131D0 + 0.063D0 * S
29947       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
29948       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
29949       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
29950       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
29951       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
29952  
29953 C...dv :
29954       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
29955       AKD =  0.376D0
29956       BKD =  0.486D0 + 0.062D0 * S
29957       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
29958       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
29959       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
29960       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
29961       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
29962  
29963 C...del :
29964       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
29965       AKE =  0.409D0 - 0.005D0 * S
29966       BKE =  0.799D0 + 0.071D0 * S
29967       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
29968       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
29969       CE  =  0.0D0
29970       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
29971       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
29972  
29973 C...udb :
29974       ALX =  1.451D0
29975       BEX =  0.271D0
29976       AKX =  0.410D0 - 0.232D0 * S
29977       BKX =  0.534D0 - 0.457D0 * S
29978       AGX =  0.890D0 - 0.140D0 * S
29979       BGX = -0.981D0
29980       CX  =  0.320D0 + 0.683D0 * S
29981       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
29982       EX  =  4.119D0 + 1.713D0 * S
29983       ESX =  0.682D0 + 2.978D0 * S
29984       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
29985      & DX, EX, ESX)
29986  
29987 C...sb :
29988       STS =  0D0
29989       ALS =  0.914D0
29990       BES =  0.577D0
29991       AKS =  1.798D0 - 0.596D0 * S
29992       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
29993       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
29994       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
29995       EST =  3.981D0 + 1.638D0 * S
29996       ESS =  6.402D0
29997       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
29998  
29999 C...cb :
30000       STC =  0.888D0
30001       ALC =  1.01D0
30002       BEC =  0.37D0
30003       AKC =  0D0
30004       AC  =  0D0
30005       BC  =  4.24D0  - 0.804D0 * S
30006       DCT =  3.46D0  - 1.076D0 * S
30007       ECT =  4.61D0  + 1.49D0  * S
30008       ESC =  2.555D0 + 1.961D0 * S
30009       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30010  
30011 C...bb :
30012       STB =  1.351D0
30013       ALB =  1.00D0
30014       BEB =  0.51D0
30015       AKB =  0D0
30016       AB  =  0D0
30017       BB  =  1.848D0
30018       DBT =  2.929D0 + 1.396D0 * S
30019       EBT =  4.71D0  + 1.514D0 * S
30020       ESB =  4.02D0  + 1.239D0 * S
30021       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30022  
30023 C...gl :
30024       ALG =  0.524D0
30025       BEG =  1.088D0
30026       AKG =  1.742D0 - 0.930D0 * S
30027       BKG =                         - 0.399D0 * S2
30028       AG  =  7.486D0 - 2.185D0 * S
30029       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
30030       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
30031       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
30032       EG  =  0.807D0 + 2.005D0 * S
30033       ESG =  3.841D0 + 0.316D0 * S
30034       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
30035      & DG, EG, ESG)
30036  
30037       RETURN
30038       END
30039  
30040 C*********************************************************************
30041  
30042 C...PYGRVM
30043 C...Gives the GRV 94 M (MSbar) parton distribution function set
30044 C...in parametrized form.
30045 C...Authors: M. Glueck, E. Reya and A. Vogt.
30046  
30047       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
30048  
30049 C...Double precision declaration.
30050       IMPLICIT DOUBLE PRECISION (A - Z)
30051  
30052 C...Common expressions.
30053       MU2  = 0.34D0
30054       LAM2 = 0.248D0 * 0.248D0
30055       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
30056       DS = SQRT (S)
30057       S2 = S * S
30058       S3 = S2 * S
30059  
30060 C...uv :
30061       NU  =  1.304D0 + 0.863D0 * S
30062       AKU =  0.558D0 - 0.020D0 * S
30063       BKU =          0.183D0 * S
30064       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
30065       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
30066       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
30067       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
30068       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
30069  
30070 C...dv :
30071       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
30072       AKD =  0.270D0 - 0.019D0 * S
30073       BKD =  0.260D0
30074       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
30075       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
30076       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
30077       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
30078       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
30079  
30080 C...del :
30081       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
30082       AKE =  0.409D0 - 0.007D0 * S
30083       BKE =  0.782D0 + 0.082D0 * S
30084       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
30085       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
30086       CE  =  0.0D0
30087       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
30088       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
30089  
30090 C...udb :
30091       ALX =  0.877D0
30092       BEX =  0.561D0
30093       AKX =  0.275D0
30094       BKX =  0.0D0
30095       AGX =  0.997D0
30096       BGX =  3.210D0 - 1.866D0 * S
30097       CX  =  7.300D0
30098       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
30099       EX  =  3.077D0 + 1.446D0 * S
30100       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
30101       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
30102      & DX, EX, ESX)
30103  
30104 C...sb :
30105       STS =  0D0
30106       ALS =  0.756D0
30107       BES =  0.216D0
30108       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
30109       AS  = -4.329D0 + 1.131D0 * S
30110       BS  =  9.568D0 - 1.744D0 * S
30111       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
30112       EST =  3.031D0 + 1.639D0 * S
30113       ESS =  5.837D0 + 0.815D0 * S
30114       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
30115  
30116 C...cb :
30117       STC =  0.820D0
30118       ALC =  0.98D0
30119       BEC =  0D0
30120       AKC = -0.625D0 - 0.523D0 * S
30121       AC  =  0D0
30122       BC  =  1.896D0 + 1.616D0 * S
30123       DCT =  4.12D0  + 0.683D0 * S
30124       ECT =  4.36D0  + 1.328D0 * S
30125       ESC =  0.677D0 + 0.679D0 * S
30126       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30127  
30128 C...bb :
30129       STB =  1.297D0
30130       ALB =  0.99D0
30131       BEB =  0D0
30132       AKB =          - 0.193D0 * S
30133       AB  =  0D0
30134       BB  =  0D0
30135       DBT =  3.447D0 + 0.927D0 * S
30136       EBT =  4.68D0  + 1.259D0 * S
30137       ESB =  1.892D0 + 2.199D0 * S
30138       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30139  
30140 C...gl :
30141        ALG =  1.014D0
30142        BEG =  1.738D0
30143        AKG =  1.724D0 + 0.157D0 * S
30144        BKG =  0.800D0 + 1.016D0 * S
30145        AG  =  7.517D0 - 2.547D0 * S
30146        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
30147        CG  =  4.039D0 + 1.491D0 * S
30148        DG  =  3.404D0 + 0.830D0 * S
30149        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
30150        ESG =  3.256D0 - 0.436D0 * S
30151        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
30152  
30153        RETURN
30154        END
30155  
30156 C*********************************************************************
30157  
30158 C...PYGRVD
30159 C...Gives the GRV 94 D (DIS) parton distribution function set
30160 C...in parametrized form.
30161 C...Authors: M. Glueck, E. Reya and A. Vogt.
30162  
30163       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
30164  
30165 C...Double precision declaration.
30166       IMPLICIT DOUBLE PRECISION (A - Z)
30167  
30168 C...Common expressions.
30169       MU2  = 0.34D0
30170       LAM2 = 0.248D0 * 0.248D0
30171       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
30172       DS = SQRT (S)
30173       S2 = S * S
30174       S3 = S2 * S
30175  
30176 C...uv :
30177       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
30178       AKU =  0.563D0 - 0.025D0 * S
30179       BKU =  0.054D0 + 0.154D0 * S
30180       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
30181       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
30182       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
30183       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
30184       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
30185  
30186 C...dv :
30187       ND  =  0.156D0 - 0.017D0 * S
30188       AKD =  0.299D0 - 0.022D0 * S
30189       BKD =  0.259D0 - 0.015D0 * S
30190       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
30191       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
30192       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
30193       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
30194       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
30195  
30196 C...del :
30197       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
30198       AKE =  0.419D0 - 0.013D0 * S
30199       BKE =  1.064D0 - 0.038D0 * S
30200       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
30201       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
30202       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
30203       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
30204       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
30205  
30206 C...udb :
30207       ALX =  1.215D0
30208       BEX =  0.466D0
30209       AKX =  0.326D0 + 0.150D0 * S
30210       BKX =  0.956D0 + 0.405D0 * S
30211       AGX =  0.272D0
30212       BGX =  3.794D0 - 2.359D0 * DS
30213       CX  =  2.014D0
30214       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
30215       EX  =  3.049D0 + 1.597D0 * S
30216       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
30217       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
30218      & DX, EX, ESX)
30219  
30220 C...sb :
30221       STS =  0D0
30222       ALS =  0.175D0
30223       BES =  0.344D0
30224       AKS =  1.415D0 - 0.641D0 * DS
30225       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
30226       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
30227       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
30228       EST =  4.546D0 + 0.372D0 * S2
30229       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
30230       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
30231  
30232 C...cb :
30233       STC =  0.820D0
30234       ALC =  0.98D0
30235       BEC =  0D0
30236       AKC = -0.625D0 - 0.523D0 * S
30237       AC  =  0D0
30238       BC  =  1.896D0 + 1.616D0 * S
30239       DCT =  4.12D0  + 0.683D0 * S
30240       ECT =  4.36D0  + 1.328D0 * S
30241       ESC =  0.677D0 + 0.679D0 * S
30242       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30243  
30244 C...bb :
30245       STB =  1.297D0
30246       ALB =  0.99D0
30247       BEB =  0D0
30248       AKB =          - 0.193D0 * S
30249       AB  =  0D0
30250       BB  =  0D0
30251       DBT =  3.447D0 + 0.927D0 * S
30252       EBT =  4.68D0  + 1.259D0 * S
30253       ESB =  1.892D0 + 2.199D0 * S
30254       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30255  
30256 C...gl :
30257       ALG =  1.258D0
30258       BEG =  1.846D0
30259       AKG =  2.423D0
30260       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
30261       AG  =  25.09D0 - 7.935D0 * S
30262       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
30263       CG  =  590.3D0 - 173.8D0 * S
30264       DG  =  5.196D0 + 1.857D0 * S
30265       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
30266       ESG =  3.232D0 - 0.542D0 * S
30267       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
30268  
30269       RETURN
30270       END
30271  
30272 C*********************************************************************
30273  
30274 C...PYGRVV
30275 C...Auxiliary for the GRV 94 parton distribution functions
30276 C...for u and d valence and d-u sea.
30277 C...Authors: M. Glueck, E. Reya and A. Vogt.
30278  
30279       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
30280  
30281 C...Double precision declaration.
30282       IMPLICIT DOUBLE PRECISION (A - Z)
30283  
30284 C...Evaluation.
30285       DX = SQRT (X)
30286       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
30287      & (1D0- X)**D
30288  
30289       RETURN
30290       END
30291  
30292 C*********************************************************************
30293  
30294 C...PYGRVW
30295 C...Auxiliary for the GRV 94 parton distribution functions
30296 C...for d+u sea and gluon.
30297 C...Authors: M. Glueck, E. Reya and A. Vogt.
30298  
30299       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
30300  
30301 C...Double precision declaration.
30302       IMPLICIT DOUBLE PRECISION (A - Z)
30303  
30304 C...Evaluation.
30305       LX = LOG (1D0/X)
30306       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
30307      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
30308  
30309       RETURN
30310       END
30311  
30312 C*********************************************************************
30313  
30314 C...PYGRVS
30315 C...Auxiliary for the GRV 94 parton distribution functions
30316 C...for s, c and b sea.
30317 C...Authors: M. Glueck, E. Reya and A. Vogt.
30318  
30319       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
30320  
30321 C...Double precision declaration.
30322       IMPLICIT DOUBLE PRECISION (A - Z)
30323  
30324 C...Evaluation.
30325       IF(S.LE.STH) THEN
30326         PYGRVS = 0D0
30327       ELSE
30328         DX = SQRT (X)
30329         LX = LOG (1D0/X)
30330         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
30331      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
30332       ENDIF
30333  
30334       RETURN
30335       END
30336  
30337 C*********************************************************************
30338  
30339 C...PYCT5L
30340 C...Auxiliary function for parametrization of CTEQ5L.
30341 C...Author: J. Pumplin 9/99.
30342  
30343 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
30344 C...in Parametrized Form
30345 C...            September 15, 1999
30346 C
30347 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
30348 C...      CTEQ5 PPARTON DISTRIBUTIONS"
30349 C...hep-ph/9903282
30350  
30351 C...The CTEQ5M1 set given here is an updated version of the original
30352 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
30353 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
30354 C...almost all applications.
30355 C...The improvement is in the QCD evolution which is now more
30356 C...accurate, and which agrees completely with the benchmark work
30357 C...of the HERA 96/97 Workshop.
30358 C...The differences between the parametrized and the corresponding
30359 C...table versions (on which it is based) are of similar order as
30360 C...between the two version.
30361  
30362 C...!! Because accurate parametrizations over a wide range of (x,Q)
30363 C...is hard to obtain, only the most widely used sets CTEQ5M and
30364 C...CTEQ5L are available in parametrized form for now.
30365  
30366 C...These parametrizations were obtained by Jon Pumplin.
30367  
30368 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
30369 C -------------------------------------------------------------------
30370 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
30371 C   3    CTEQ5L   Leading Order                  0.127     192   146
30372 C -------------------------------------------------------------------
30373 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
30374 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
30375 C...calibration.
30376  
30377 C...The two Iset value are adopted to agree with the standard table
30378 C...versions.
30379  
30380 C...Range of validity:
30381 C...The range of (x, Q) covered by this parametrization of the QCD
30382 C...evolved parton distributions is 1E-6 < x < 1 ;
30383 C...1.1 GeV < Q < 10 TeV.  Of course, the PDF's are constrained by
30384 C...data only in a subset of that region; and the assumed DGLAP
30385 C...evolution is unlikely to be valid for all of it either.
30386  
30387 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
30388 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
30389 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
30390 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
30391  
30392       FUNCTION PYCT5L(IFL,X,Q)
30393  
30394 C...Double precision declaration.
30395       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30396       IMPLICIT INTEGER(I-N)
30397  
30398       PARAMETER (NEX=8, NLF=2)
30399       DIMENSION AM(0:NEX,0:NLF,-5:2)
30400       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
30401       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
30402       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
30403       DIMENSION AF(0:NEX)
30404  
30405       DATA MEXVEC( 2) / 8 /
30406       DATA MLFVEC( 2) / 2 /
30407       DATA UT1VEC( 2) /  0.4971265E+01 /
30408       DATA UT2VEC( 2) / -0.1105128E+01 /
30409       DATA ALFVEC( 2) /  0.2987216E+00 /
30410       DATA QMAVEC( 2) /  0.0000000E+00 /
30411       DATA (AM( 0,K, 2),K=0, 2)
30412      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
30413       DATA (AM( 1,K, 2),K=0, 2)
30414      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
30415       DATA (AM( 2,K, 2),K=0, 2)
30416      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
30417       DATA (AM( 3,K, 2),K=0, 2)
30418      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
30419       DATA (AM( 4,K, 2),K=0, 2)
30420      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
30421       DATA (AM( 5,K, 2),K=0, 2)
30422      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
30423       DATA (AM( 6,K, 2),K=0, 2)
30424      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
30425       DATA (AM( 7,K, 2),K=0, 2)
30426      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
30427       DATA (AM( 8,K, 2),K=0, 2)
30428      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
30429  
30430       DATA MEXVEC( 1) / 8 /
30431       DATA MLFVEC( 1) / 2 /
30432       DATA UT1VEC( 1) /  0.2612618E+01 /
30433       DATA UT2VEC( 1) / -0.1258304E+06 /
30434       DATA ALFVEC( 1) /  0.3407552E+00 /
30435       DATA QMAVEC( 1) /  0.0000000E+00 /
30436       DATA (AM( 0,K, 1),K=0, 2)
30437      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
30438       DATA (AM( 1,K, 1),K=0, 2)
30439      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
30440       DATA (AM( 2,K, 1),K=0, 2)
30441      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
30442       DATA (AM( 3,K, 1),K=0, 2)
30443      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
30444       DATA (AM( 4,K, 1),K=0, 2)
30445      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
30446       DATA (AM( 5,K, 1),K=0, 2)
30447      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
30448       DATA (AM( 6,K, 1),K=0, 2)
30449      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
30450       DATA (AM( 7,K, 1),K=0, 2)
30451      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
30452       DATA (AM( 8,K, 1),K=0, 2)
30453      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
30454  
30455       DATA MEXVEC( 0) / 8 /
30456       DATA MLFVEC( 0) / 2 /
30457       DATA UT1VEC( 0) / -0.4656819E+00 /
30458       DATA UT2VEC( 0) / -0.2742390E+03 /
30459       DATA ALFVEC( 0) /  0.4491863E+00 /
30460       DATA QMAVEC( 0) /  0.0000000E+00 /
30461       DATA (AM( 0,K, 0),K=0, 2)
30462      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
30463       DATA (AM( 1,K, 0),K=0, 2)
30464      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
30465       DATA (AM( 2,K, 0),K=0, 2)
30466      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
30467       DATA (AM( 3,K, 0),K=0, 2)
30468      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
30469       DATA (AM( 4,K, 0),K=0, 2)
30470      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
30471       DATA (AM( 5,K, 0),K=0, 2)
30472      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
30473       DATA (AM( 6,K, 0),K=0, 2)
30474      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
30475       DATA (AM( 7,K, 0),K=0, 2)
30476      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
30477       DATA (AM( 8,K, 0),K=0, 2)
30478      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
30479  
30480       DATA MEXVEC(-1) / 8 /
30481       DATA MLFVEC(-1) / 2 /
30482       DATA UT1VEC(-1) /  0.3862583E+01 /
30483       DATA UT2VEC(-1) / -0.1265969E+01 /
30484       DATA ALFVEC(-1) /  0.2457668E+00 /
30485       DATA QMAVEC(-1) /  0.0000000E+00 /
30486       DATA (AM( 0,K,-1),K=0, 2)
30487      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
30488       DATA (AM( 1,K,-1),K=0, 2)
30489      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
30490       DATA (AM( 2,K,-1),K=0, 2)
30491      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
30492       DATA (AM( 3,K,-1),K=0, 2)
30493      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
30494       DATA (AM( 4,K,-1),K=0, 2)
30495      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
30496       DATA (AM( 5,K,-1),K=0, 2)
30497      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
30498       DATA (AM( 6,K,-1),K=0, 2)
30499      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
30500       DATA (AM( 7,K,-1),K=0, 2)
30501      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
30502       DATA (AM( 8,K,-1),K=0, 2)
30503      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
30504  
30505       DATA MEXVEC(-2) / 7 /
30506       DATA MLFVEC(-2) / 2 /
30507       DATA UT1VEC(-2) /  0.1895615E+00 /
30508       DATA UT2VEC(-2) / -0.3069097E+01 /
30509       DATA ALFVEC(-2) /  0.5293999E+00 /
30510       DATA QMAVEC(-2) /  0.0000000E+00 /
30511       DATA (AM( 0,K,-2),K=0, 2)
30512      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
30513       DATA (AM( 1,K,-2),K=0, 2)
30514      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
30515       DATA (AM( 2,K,-2),K=0, 2)
30516      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
30517       DATA (AM( 3,K,-2),K=0, 2)
30518      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
30519       DATA (AM( 4,K,-2),K=0, 2)
30520      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
30521       DATA (AM( 5,K,-2),K=0, 2)
30522      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
30523       DATA (AM( 6,K,-2),K=0, 2)
30524      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
30525       DATA (AM( 7,K,-2),K=0, 2)
30526      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
30527  
30528       DATA MEXVEC(-3) / 7 /
30529       DATA MLFVEC(-3) / 2 /
30530       DATA UT1VEC(-3) /  0.3753257E+01 /
30531       DATA UT2VEC(-3) / -0.1113085E+01 /
30532       DATA ALFVEC(-3) /  0.3713141E+00 /
30533       DATA QMAVEC(-3) /  0.0000000E+00 /
30534       DATA (AM( 0,K,-3),K=0, 2)
30535      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
30536       DATA (AM( 1,K,-3),K=0, 2)
30537      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
30538       DATA (AM( 2,K,-3),K=0, 2)
30539      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
30540       DATA (AM( 3,K,-3),K=0, 2)
30541      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
30542       DATA (AM( 4,K,-3),K=0, 2)
30543      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
30544       DATA (AM( 5,K,-3),K=0, 2)
30545      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
30546       DATA (AM( 6,K,-3),K=0, 2)
30547      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
30548       DATA (AM( 7,K,-3),K=0, 2)
30549      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
30550  
30551       DATA MEXVEC(-4) / 7 /
30552       DATA MLFVEC(-4) / 2 /
30553       DATA UT1VEC(-4) /  0.4400772E+01 /
30554       DATA UT2VEC(-4) / -0.1356116E+01 /
30555       DATA ALFVEC(-4) /  0.3712017E-01 /
30556       DATA QMAVEC(-4) /  0.1300000E+01 /
30557       DATA (AM( 0,K,-4),K=0, 2)
30558      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
30559       DATA (AM( 1,K,-4),K=0, 2)
30560      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
30561       DATA (AM( 2,K,-4),K=0, 2)
30562      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
30563       DATA (AM( 3,K,-4),K=0, 2)
30564      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
30565       DATA (AM( 4,K,-4),K=0, 2)
30566      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
30567       DATA (AM( 5,K,-4),K=0, 2)
30568      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
30569       DATA (AM( 6,K,-4),K=0, 2)
30570      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
30571       DATA (AM( 7,K,-4),K=0, 2)
30572      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
30573  
30574       DATA MEXVEC(-5) / 6 /
30575       DATA MLFVEC(-5) / 2 /
30576       DATA UT1VEC(-5) /  0.5562568E+01 /
30577       DATA UT2VEC(-5) / -0.1801317E+01 /
30578       DATA ALFVEC(-5) /  0.4952010E-02 /
30579       DATA QMAVEC(-5) /  0.4500000E+01 /
30580       DATA (AM( 0,K,-5),K=0, 2)
30581      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
30582       DATA (AM( 1,K,-5),K=0, 2)
30583      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
30584       DATA (AM( 2,K,-5),K=0, 2)
30585      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
30586       DATA (AM( 3,K,-5),K=0, 2)
30587      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
30588       DATA (AM( 4,K,-5),K=0, 2)
30589      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
30590       DATA (AM( 5,K,-5),K=0, 2)
30591      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
30592       DATA (AM( 6,K,-5),K=0, 2)
30593      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
30594  
30595       IF(Q .LE. QMAVEC(IFL)) THEN
30596          PYCT5L = 0.D0
30597          RETURN
30598       ENDIF
30599  
30600       IF(X .GE. 1.D0) THEN
30601          PYCT5L = 0.D0
30602          RETURN
30603       ENDIF
30604  
30605       TMP = LOG(Q/ALFVEC(IFL))
30606       IF(TMP .LE. 0.D0) THEN
30607          PYCT5L = 0.D0
30608          RETURN
30609       ENDIF
30610  
30611       SB = LOG(TMP)
30612       SB1 = SB - 1.2D0
30613       SB2 = SB1*SB1
30614  
30615       DO 110 I = 0, NEX
30616          AF(I) = 0.D0
30617          SBX = 1.D0
30618          DO 100 K = 0, MLFVEC(IFL)
30619             AF(I) = AF(I) + SBX*AM(I,K,IFL)
30620             SBX = SB1*SBX
30621   100    CONTINUE
30622   110 CONTINUE
30623  
30624       Y = -LOG(X)
30625       U = LOG(X/0.00001D0)
30626  
30627       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
30628       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
30629       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
30630       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
30631      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
30632  
30633       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
30634  
30635 C...Include threshold factor.
30636       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
30637  
30638       RETURN
30639       END
30640  
30641 C*********************************************************************
30642  
30643 C...PYCT5M
30644 C...Auxiliary function for parametrization of CTEQ5M1.
30645 C...Author: J. Pumplin 9/99.
30646  
30647       FUNCTION PYCT5M(IFL,X,Q)
30648  
30649 C...Double precision declaration.
30650       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30651       IMPLICIT INTEGER(I-N)
30652  
30653       PARAMETER (NEX=8, NLF=2)
30654       DIMENSION AM(0:NEX,0:NLF,-5:2)
30655       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
30656       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
30657       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
30658       DIMENSION AF(0:NEX)
30659  
30660       DATA MEXVEC( 2) / 8 /
30661       DATA MLFVEC( 2) / 2 /
30662       DATA UT1VEC( 2) /  0.5141718E+01 /
30663       DATA UT2VEC( 2) / -0.1346944E+01 /
30664       DATA ALFVEC( 2) /  0.5260555E+00 /
30665       DATA QMAVEC( 2) /  0.0000000E+00 /
30666       DATA (AM( 0,K, 2),K=0, 2)
30667      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
30668       DATA (AM( 1,K, 2),K=0, 2)
30669      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
30670       DATA (AM( 2,K, 2),K=0, 2)
30671      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
30672       DATA (AM( 3,K, 2),K=0, 2)
30673      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
30674       DATA (AM( 4,K, 2),K=0, 2)
30675      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
30676       DATA (AM( 5,K, 2),K=0, 2)
30677      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
30678       DATA (AM( 6,K, 2),K=0, 2)
30679      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
30680       DATA (AM( 7,K, 2),K=0, 2)
30681      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
30682       DATA (AM( 8,K, 2),K=0, 2)
30683      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
30684  
30685       DATA MEXVEC( 1) / 8 /
30686       DATA MLFVEC( 1) / 2 /
30687       DATA UT1VEC( 1) /  0.4138426E+01 /
30688       DATA UT2VEC( 1) / -0.3221374E+01 /
30689       DATA ALFVEC( 1) /  0.4960962E+00 /
30690       DATA QMAVEC( 1) /  0.0000000E+00 /
30691       DATA (AM( 0,K, 1),K=0, 2)
30692      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
30693       DATA (AM( 1,K, 1),K=0, 2)
30694      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
30695       DATA (AM( 2,K, 1),K=0, 2)
30696      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
30697       DATA (AM( 3,K, 1),K=0, 2)
30698      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
30699       DATA (AM( 4,K, 1),K=0, 2)
30700      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
30701       DATA (AM( 5,K, 1),K=0, 2)
30702      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
30703       DATA (AM( 6,K, 1),K=0, 2)
30704      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
30705       DATA (AM( 7,K, 1),K=0, 2)
30706      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
30707       DATA (AM( 8,K, 1),K=0, 2)
30708      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
30709  
30710       DATA MEXVEC( 0) / 8 /
30711       DATA MLFVEC( 0) / 2 /
30712       DATA UT1VEC( 0) / -0.1026789E+01 /
30713       DATA UT2VEC( 0) / -0.9051707E+01 /
30714       DATA ALFVEC( 0) /  0.9462977E+00 /
30715       DATA QMAVEC( 0) /  0.0000000E+00 /
30716       DATA (AM( 0,K, 0),K=0, 2)
30717      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
30718       DATA (AM( 1,K, 0),K=0, 2)
30719      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
30720       DATA (AM( 2,K, 0),K=0, 2)
30721      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
30722       DATA (AM( 3,K, 0),K=0, 2)
30723      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
30724       DATA (AM( 4,K, 0),K=0, 2)
30725      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
30726       DATA (AM( 5,K, 0),K=0, 2)
30727      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
30728       DATA (AM( 6,K, 0),K=0, 2)
30729      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
30730       DATA (AM( 7,K, 0),K=0, 2)
30731      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
30732       DATA (AM( 8,K, 0),K=0, 2)
30733      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
30734  
30735       DATA MEXVEC(-1) / 8 /
30736       DATA MLFVEC(-1) / 2 /
30737       DATA UT1VEC(-1) /  0.5243571E+01 /
30738       DATA UT2VEC(-1) / -0.2870513E+01 /
30739       DATA ALFVEC(-1) /  0.6701448E+00 /
30740       DATA QMAVEC(-1) /  0.0000000E+00 /
30741       DATA (AM( 0,K,-1),K=0, 2)
30742      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
30743       DATA (AM( 1,K,-1),K=0, 2)
30744      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
30745       DATA (AM( 2,K,-1),K=0, 2)
30746      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
30747       DATA (AM( 3,K,-1),K=0, 2)
30748      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
30749       DATA (AM( 4,K,-1),K=0, 2)
30750      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
30751       DATA (AM( 5,K,-1),K=0, 2)
30752      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
30753       DATA (AM( 6,K,-1),K=0, 2)
30754      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
30755       DATA (AM( 7,K,-1),K=0, 2)
30756      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
30757       DATA (AM( 8,K,-1),K=0, 2)
30758      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
30759  
30760       DATA MEXVEC(-2) / 7 /
30761       DATA MLFVEC(-2) / 2 /
30762       DATA UT1VEC(-2) /  0.4782210E+01 /
30763       DATA UT2VEC(-2) / -0.1976856E+02 /
30764       DATA ALFVEC(-2) /  0.7558374E+00 /
30765       DATA QMAVEC(-2) /  0.0000000E+00 /
30766       DATA (AM( 0,K,-2),K=0, 2)
30767      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
30768       DATA (AM( 1,K,-2),K=0, 2)
30769      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
30770       DATA (AM( 2,K,-2),K=0, 2)
30771      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
30772       DATA (AM( 3,K,-2),K=0, 2)
30773      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
30774       DATA (AM( 4,K,-2),K=0, 2)
30775      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
30776       DATA (AM( 5,K,-2),K=0, 2)
30777      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
30778       DATA (AM( 6,K,-2),K=0, 2)
30779      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
30780       DATA (AM( 7,K,-2),K=0, 2)
30781      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
30782  
30783       DATA MEXVEC(-3) / 7 /
30784       DATA MLFVEC(-3) / 2 /
30785       DATA UT1VEC(-3) /  0.4518239E+01 /
30786       DATA UT2VEC(-3) / -0.2690590E+01 /
30787       DATA ALFVEC(-3) /  0.6124079E+00 /
30788       DATA QMAVEC(-3) /  0.0000000E+00 /
30789       DATA (AM( 0,K,-3),K=0, 2)
30790      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
30791       DATA (AM( 1,K,-3),K=0, 2)
30792      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
30793       DATA (AM( 2,K,-3),K=0, 2)
30794      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
30795       DATA (AM( 3,K,-3),K=0, 2)
30796      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
30797       DATA (AM( 4,K,-3),K=0, 2)
30798      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
30799       DATA (AM( 5,K,-3),K=0, 2)
30800      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
30801       DATA (AM( 6,K,-3),K=0, 2)
30802      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
30803       DATA (AM( 7,K,-3),K=0, 2)
30804      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
30805  
30806       DATA MEXVEC(-4) / 7 /
30807       DATA MLFVEC(-4) / 2 /
30808       DATA UT1VEC(-4) /  0.2783230E+01 /
30809       DATA UT2VEC(-4) / -0.1746328E+01 /
30810       DATA ALFVEC(-4) /  0.1115653E+01 /
30811       DATA QMAVEC(-4) /  0.1300000E+01 /
30812       DATA (AM( 0,K,-4),K=0, 2)
30813      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
30814       DATA (AM( 1,K,-4),K=0, 2)
30815      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
30816       DATA (AM( 2,K,-4),K=0, 2)
30817      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
30818       DATA (AM( 3,K,-4),K=0, 2)
30819      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
30820       DATA (AM( 4,K,-4),K=0, 2)
30821      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
30822       DATA (AM( 5,K,-4),K=0, 2)
30823      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
30824       DATA (AM( 6,K,-4),K=0, 2)
30825      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
30826       DATA (AM( 7,K,-4),K=0, 2)
30827      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
30828  
30829       DATA MEXVEC(-5) / 6 /
30830       DATA MLFVEC(-5) / 2 /
30831       DATA UT1VEC(-5) /  0.1619654E+02 /
30832       DATA UT2VEC(-5) / -0.3367346E+01 /
30833       DATA ALFVEC(-5) /  0.5109891E-02 /
30834       DATA QMAVEC(-5) /  0.4500000E+01 /
30835       DATA (AM( 0,K,-5),K=0, 2)
30836      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
30837       DATA (AM( 1,K,-5),K=0, 2)
30838      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
30839       DATA (AM( 2,K,-5),K=0, 2)
30840      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
30841       DATA (AM( 3,K,-5),K=0, 2)
30842      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
30843       DATA (AM( 4,K,-5),K=0, 2)
30844      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
30845       DATA (AM( 5,K,-5),K=0, 2)
30846      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
30847       DATA (AM( 6,K,-5),K=0, 2)
30848      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
30849  
30850       IF(Q .LE. QMAVEC(IFL)) THEN
30851          PYCT5M = 0.D0
30852          RETURN
30853       ENDIF
30854  
30855       IF(X .GE. 1.D0) THEN
30856          PYCT5M = 0.D0
30857          RETURN
30858       ENDIF
30859  
30860       TMP = LOG(Q/ALFVEC(IFL))
30861       IF(TMP .LE. 0.D0) THEN
30862          PYCT5M = 0.D0
30863          RETURN
30864       ENDIF
30865  
30866       SB = LOG(TMP)
30867       SB1 = SB - 1.2D0
30868       SB2 = SB1*SB1
30869  
30870       DO 110 I = 0, NEX
30871          AF(I) = 0.D0
30872          SBX = 1.D0
30873          DO 100 K = 0, MLFVEC(IFL)
30874             AF(I) = AF(I) + SBX*AM(I,K,IFL)
30875             SBX = SB1*SBX
30876   100    CONTINUE
30877   110 CONTINUE
30878  
30879       Y = -LOG(X)
30880       U = LOG(X/0.00001D0)
30881  
30882       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
30883       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
30884       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
30885       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
30886      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
30887  
30888       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
30889  
30890 C...Include threshold factor.
30891       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
30892  
30893       RETURN
30894       END
30895  
30896 C*********************************************************************
30897  
30898 C...PYPDPO
30899 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
30900 C...a few older parametrizations, now obsolete but convenient for
30901 C...backwards checks.
30902  
30903       SUBROUTINE PYPDPO(X,Q2,XPPR)
30904  
30905 C...Double precision and integer declarations.
30906       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30907       IMPLICIT INTEGER(I-N)
30908       INTEGER PYK,PYCHGE,PYCOMP
30909 C...Commonblocks.
30910       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30911       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30912       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30913       COMMON/PYINT1/MINT(400),VINT(400)
30914       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
30915       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
30916      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
30917  
30918  
30919 C...The following data lines are coefficients needed in the
30920 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
30921 C...parametrizations, see below.
30922 C...Powers of 1-x in different cases.
30923       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
30924 C...Expansion coefficients for up valence quark distribution.
30925       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
30926      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
30927      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
30928      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
30929      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
30930      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
30931      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
30932      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
30933      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
30934      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
30935      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
30936      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
30937      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
30938       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
30939      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
30940      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
30941      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
30942      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
30943      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
30944      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
30945      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
30946      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
30947      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
30948      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
30949      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
30950      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
30951 C...Expansion coefficients for down valence quark distribution.
30952       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
30953      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
30954      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
30955      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
30956      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
30957      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
30958      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
30959      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
30960      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
30961      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
30962      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
30963      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
30964      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
30965       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
30966      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
30967      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
30968      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
30969      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
30970      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
30971      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
30972      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
30973      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
30974      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
30975      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
30976      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
30977      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
30978 C...Expansion coefficients for up and down sea quark distributions.
30979       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
30980      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
30981      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
30982      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
30983      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
30984      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
30985      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
30986      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
30987      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
30988      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
30989      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
30990      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
30991      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
30992       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
30993      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
30994      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
30995      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
30996      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
30997      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
30998      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
30999      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
31000      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
31001      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
31002      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
31003      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
31004      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
31005 C...Expansion coefficients for gluon distribution.
31006       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
31007      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
31008      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
31009      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
31010      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
31011      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
31012      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
31013      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
31014      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
31015      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
31016      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
31017      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
31018      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
31019       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
31020      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
31021      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
31022      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
31023      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
31024      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
31025      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
31026      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
31027      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
31028      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
31029      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
31030      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
31031      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
31032 C...Expansion coefficients for strange sea quark distribution.
31033       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
31034      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
31035      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
31036      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
31037      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
31038      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
31039      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
31040      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
31041      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
31042      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
31043      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
31044      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
31045      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
31046       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
31047      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
31048      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
31049      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
31050      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
31051      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
31052      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
31053      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
31054      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
31055      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
31056      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
31057      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
31058      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
31059 C...Expansion coefficients for charm sea quark distribution.
31060       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
31061      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
31062      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
31063      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
31064      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
31065      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
31066      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
31067      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
31068      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
31069      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
31070      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
31071      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
31072      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
31073       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
31074      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
31075      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
31076      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
31077      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
31078      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
31079      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
31080      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
31081      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
31082      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
31083      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
31084      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
31085      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
31086 C...Expansion coefficients for bottom sea quark distribution.
31087       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
31088      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
31089      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
31090      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
31091      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
31092      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
31093      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
31094      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
31095      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
31096      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
31097      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
31098      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
31099      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
31100       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
31101      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
31102      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
31103      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
31104      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
31105      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
31106      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
31107      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
31108      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
31109      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
31110      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
31111      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
31112      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
31113 C...Expansion coefficients for top sea quark distribution.
31114       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
31115      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
31116      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
31117      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
31118      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
31119      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
31120      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
31121      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
31122      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
31123      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
31124      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
31125      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
31126      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
31127       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
31128      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
31129      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
31130      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
31131      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
31132      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
31133      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
31134      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
31135      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
31136      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
31137      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
31138      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
31139      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
31140  
31141 C...The following data lines are coefficients needed in the
31142 C...Duke, Owens proton structure function parametrizations, see below.
31143 C...Expansion coefficients for (up+down) valence quark distribution.
31144       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
31145      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31146      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31147      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
31148       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
31149      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31150      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31151      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
31152 C...Expansion coefficients for down valence quark distribution.
31153       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
31154      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31155      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
31156      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
31157       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
31158      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31159      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
31160      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
31161 C...Expansion coefficients for (up+down+strange) sea quark distribution.
31162       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
31163      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31164      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
31165      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
31166       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
31167      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31168      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
31169      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
31170 C...Expansion coefficients for charm sea quark distribution.
31171       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
31172      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31173      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
31174      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
31175        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
31176      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31177      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
31178      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
31179 C...Expansion coefficients for gluon distribution.
31180       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
31181      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
31182      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
31183      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
31184       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
31185      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
31186      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
31187      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
31188  
31189 C...Euler's beta function, requires ordinary Gamma function
31190       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
31191  
31192 C...Leading order proton parton distributions from Glueck, Reya and
31193 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
31194 C...10^-5 < x < 1.
31195       IF(MSTP(51).EQ.11) THEN
31196  
31197 C...Determine s expansion variable and some x expressions.
31198         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
31199         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
31200         SD2=SD**2
31201         XL=-LOG(X)
31202         XS=SQRT(X)
31203  
31204 C...Evaluate valence, gluon and sea distributions.
31205         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
31206      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
31207      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
31208      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
31209         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
31210      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
31211      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
31212         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
31213      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
31214      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
31215      &  SQRT(4.066D0*SD**1.218D0*XL)))*
31216      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
31217         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
31218      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
31219      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
31220      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
31221         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
31222      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
31223      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
31224      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
31225         IF(SD.LE.0.888D0) THEN
31226           XFCHM=0D0
31227         ELSE
31228           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
31229      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
31230      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
31231         ENDIF
31232         IF(SD.LE.1.351D0) THEN
31233           XFBOT=0D0
31234         ELSE
31235           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
31236      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
31237      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
31238         ENDIF
31239  
31240 C...Put into output array.
31241         XPPR(0)=XFGLU
31242         XPPR(1)=XFVDD+XFSEA
31243         XPPR(2)=XFVUD-XFVDD+XFSEA
31244         XPPR(3)=XFSTR
31245         XPPR(4)=XFCHM
31246         XPPR(5)=XFBOT
31247         XPPR(-1)=XFSEA
31248         XPPR(-2)=XFSEA
31249         XPPR(-3)=XFSTR
31250         XPPR(-4)=XFCHM
31251         XPPR(-5)=XFBOT
31252  
31253 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
31254 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
31255       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
31256  
31257 C...Determine set, Lambda and x and t expansion variables.
31258         NSET=MSTP(51)-11
31259         IF(NSET.EQ.1) ALAM=0.2D0
31260         IF(NSET.EQ.2) ALAM=0.29D0
31261         TMIN=LOG(5D0/ALAM**2)
31262         TMAX=LOG(1D8/ALAM**2)
31263         T=LOG(MAX(1D0,Q2/ALAM**2))
31264         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31265         NX=1
31266         IF(X.LE.0.1D0) NX=2
31267         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
31268         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
31269  
31270 C...Chebyshev polynomials for x and t expansion.
31271         TX(1)=1D0
31272         TX(2)=VX
31273         TX(3)=2D0*VX**2-1D0
31274         TX(4)=4D0*VX**3-3D0*VX
31275         TX(5)=8D0*VX**4-8D0*VX**2+1D0
31276         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
31277         TT(1)=1D0
31278         TT(2)=VT
31279         TT(3)=2D0*VT**2-1D0
31280         TT(4)=4D0*VT**3-3D0*VT
31281         TT(5)=8D0*VT**4-8D0*VT**2+1D0
31282         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31283  
31284 C...Calculate structure functions.
31285         DO 120 KFL=1,6
31286           XQSUM=0D0
31287           DO 110 IT=1,6
31288             DO 100 IX=1,6
31289               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
31290   100       CONTINUE
31291   110     CONTINUE
31292           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
31293   120   CONTINUE
31294  
31295 C...Put into output array.
31296         XPPR(0)=XQ(4)
31297         XPPR(1)=XQ(2)+XQ(3)
31298         XPPR(2)=XQ(1)+XQ(3)
31299         XPPR(3)=XQ(5)
31300         XPPR(4)=XQ(6)
31301         XPPR(-1)=XQ(3)
31302         XPPR(-2)=XQ(3)
31303         XPPR(-3)=XQ(5)
31304         XPPR(-4)=XQ(6)
31305  
31306 C...Special expansion for bottom (threshold effects).
31307         IF(MSTP(58).GE.5) THEN
31308           IF(NSET.EQ.1) TMIN=8.1905D0
31309           IF(NSET.EQ.2) TMIN=7.4474D0
31310           IF(T.GT.TMIN) THEN
31311             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31312             TT(1)=1D0
31313             TT(2)=VT
31314             TT(3)=2D0*VT**2-1D0
31315             TT(4)=4D0*VT**3-3D0*VT
31316             TT(5)=8D0*VT**4-8D0*VT**2+1D0
31317             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31318             XQSUM=0D0
31319             DO 140 IT=1,6
31320               DO 130 IX=1,6
31321                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
31322   130         CONTINUE
31323   140       CONTINUE
31324             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
31325             XPPR(-5)=XPPR(5)
31326           ENDIF
31327         ENDIF
31328  
31329 C...Special expansion for top (threshold effects).
31330         IF(MSTP(58).GE.6) THEN
31331           IF(NSET.EQ.1) TMIN=11.5528D0
31332           IF(NSET.EQ.2) TMIN=10.8097D0
31333           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
31334           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
31335           IF(T.GT.TMIN) THEN
31336             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31337             TT(1)=1D0
31338             TT(2)=VT
31339             TT(3)=2D0*VT**2-1D0
31340             TT(4)=4D0*VT**3-3D0*VT
31341             TT(5)=8D0*VT**4-8D0*VT**2+1D0
31342             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31343             XQSUM=0D0
31344             DO 160 IT=1,6
31345               DO 150 IX=1,6
31346                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
31347   150         CONTINUE
31348   160       CONTINUE
31349             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
31350             XPPR(-6)=XPPR(6)
31351           ENDIF
31352         ENDIF
31353  
31354 C...Proton parton distributions from Duke, Owens.
31355 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
31356       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
31357  
31358 C...Determine set, Lambda and s expansion parameter.
31359         NSET=MSTP(51)-13
31360         IF(NSET.EQ.1) ALAM=0.2D0
31361         IF(NSET.EQ.2) ALAM=0.4D0
31362         Q2IN=MIN(1D6,MAX(4D0,Q2))
31363         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
31364  
31365 C...Calculate structure functions.
31366         DO 180 KFL=1,5
31367           DO 170 IS=1,6
31368             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
31369      &      CDO(3,IS,KFL,NSET)*SD**2
31370   170     CONTINUE
31371           IF(KFL.LE.2) THEN
31372             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
31373      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
31374           ELSE
31375             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
31376      &      TS(5)*X**2+TS(6)*X**3)
31377           ENDIF
31378   180   CONTINUE
31379  
31380 C...Put into output arrays.
31381         XPPR(0)=XQ(5)
31382         XPPR(1)=XQ(2)+XQ(3)/6D0
31383         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
31384         XPPR(3)=XQ(3)/6D0
31385         XPPR(4)=XQ(4)
31386         XPPR(-1)=XQ(3)/6D0
31387         XPPR(-2)=XQ(3)/6D0
31388         XPPR(-3)=XQ(3)/6D0
31389         XPPR(-4)=XQ(4)
31390  
31391       ENDIF
31392  
31393       RETURN
31394       END
31395  
31396 C*********************************************************************
31397  
31398 C...PYHFTH
31399 C...Gives threshold attractive/repulsive factor for heavy flavour
31400 C...production.
31401  
31402       FUNCTION PYHFTH(SH,SQM,FRATT)
31403  
31404 C...Double precision and integer declarations.
31405       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31406       IMPLICIT INTEGER(I-N)
31407       INTEGER PYK,PYCHGE,PYCOMP
31408 C...Commonblocks.
31409       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31410       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31411       COMMON/PYINT1/MINT(400),VINT(400)
31412       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
31413  
31414 C...Value for alpha_strong.
31415       IF(MSTP(35).LE.1) THEN
31416         ALSSG=PARP(35)
31417       ELSE
31418         MST115=MSTU(115)
31419         MSTU(115)=MSTP(36)
31420         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
31421      &  PARP(36)**2)))
31422         ALSSG=PYALPS(Q2BN)
31423         MSTU(115)=MST115
31424       ENDIF
31425  
31426 C...Evaluate attractive and repulsive factors.
31427       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
31428       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
31429       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
31430       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
31431       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
31432       VINT(138)=PYHFTH
31433  
31434       RETURN
31435       END
31436  
31437 C*********************************************************************
31438  
31439 C...PYSPLI
31440 C...Splits a hadron remnant into two (partons or hadron + parton)
31441 C...in case it is more complicated than just a quark or a diquark.
31442  
31443       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
31444  
31445 C...Double precision and integer declarations.
31446       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31447       IMPLICIT INTEGER(I-N)
31448       INTEGER PYK,PYCHGE,PYCOMP
31449 C...Commonblocks. PYDAT1 temporary
31450       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31451       COMMON/PYINT1/MINT(400),VINT(400)
31452       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31453       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
31454 C...Local array.
31455       DIMENSION KFL(3)
31456  
31457 C...Preliminaries. Parton composition.
31458       KFA=IABS(KF)
31459       KFS=ISIGN(1,KF)
31460       KFL(1)=MOD(KFA/1000,10)
31461       KFL(2)=MOD(KFA/100,10)
31462       KFL(3)=MOD(KFA/10,10)
31463       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
31464         KFL(2)=INT(1.5D0+PYR(0))
31465         IF(MINT(105).EQ.333) KFL(2)=3
31466         IF(MINT(105).EQ.443) KFL(2)=4
31467         KFL(3)=KFL(2)
31468       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
31469         KFL(2)=2
31470         KFL(3)=2
31471       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
31472         KFL(2)=1
31473         KFL(3)=1
31474       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
31475         KFL(2)=MOD(KFA/10,10)
31476         KFL(3)=MOD(KFA/100,10)
31477       ENDIF
31478       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
31479         KFLR=KFLIN*KFS
31480       ELSE
31481         KFLR=KFLIN
31482       ENDIF
31483       KFLCH=0
31484  
31485 C...Subdivide lepton.
31486       IF(KFA.GE.11.AND.KFA.LE.18) THEN
31487         IF(KFLR.EQ.KFA) THEN
31488           KFLSP=KFS*22
31489         ELSEIF(KFLR.EQ.22) THEN
31490           KFLSP=KFA
31491         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
31492           KFLSP=KFA+1
31493         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
31494           KFLSP=KFA-1
31495         ELSEIF(KFLR.EQ.21) THEN
31496           KFLSP=KFA
31497           KFLCH=KFS*21
31498         ELSE
31499           KFLSP=KFA
31500           KFLCH=-KFLR
31501         ENDIF
31502  
31503 C...Subdivide photon.
31504       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
31505         IF(KFLR.NE.21) THEN
31506           KFLSP=-KFLR
31507         ELSE
31508           RAGR=0.75D0*PYR(0)
31509           KFLSP=1
31510           IF(RAGR.GT.0.125D0) KFLSP=2
31511           IF(RAGR.GT.0.625D0) KFLSP=3
31512           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
31513           KFLCH=-KFLSP
31514         ENDIF
31515  
31516 C...Subdivide Reggeon or Pomeron.
31517       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
31518         IF(KFLIN.EQ.21) THEN
31519           KFLSP=KFS*21
31520         ELSE
31521           KFLSP=-KFLIN
31522         ENDIF
31523  
31524 C...Subdivide meson.
31525       ELSEIF(KFL(1).EQ.0) THEN
31526         KFL(2)=KFL(2)*(-1)**KFL(2)
31527         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
31528         IF(KFLR.EQ.KFL(2)) THEN
31529           KFLSP=KFL(3)
31530         ELSEIF(KFLR.EQ.KFL(3)) THEN
31531           KFLSP=KFL(2)
31532         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
31533           KFLSP=KFL(2)
31534           KFLCH=KFL(3)
31535         ELSEIF(KFLR.EQ.21) THEN
31536           KFLSP=KFL(3)
31537           KFLCH=KFL(2)
31538         ELSEIF(KFLR*KFL(2).GT.0) THEN
31539           NTRY=0
31540   100     NTRY=NTRY+1
31541           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
31542           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31543             GOTO 100
31544           ELSEIF(KFLCH.EQ.0) THEN
31545             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31546             MINT(51)=1
31547             RETURN
31548           ENDIF
31549           KFLSP=KFL(3)
31550         ELSE
31551           NTRY=0
31552   110     NTRY=NTRY+1
31553           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
31554           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31555             GOTO 110
31556           ELSEIF(KFLCH.EQ.0) THEN
31557             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31558             MINT(51)=1
31559             RETURN
31560           ENDIF
31561           KFLSP=KFL(2)
31562         ENDIF
31563  
31564 C...Subdivide baryon.
31565       ELSE
31566         NAGR=0
31567         DO 120 J=1,3
31568           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
31569   120   CONTINUE
31570         IF(NAGR.GE.1) THEN
31571           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
31572           IAGR=0
31573           DO 130 J=1,3
31574             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
31575             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
31576   130     CONTINUE
31577         ELSE
31578           IAGR=1.00001D0+2.99998D0*PYR(0)
31579         ENDIF
31580         ID1=1
31581         IF(IAGR.EQ.1) ID1=2
31582         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
31583         ID2=6-IAGR-ID1
31584         KSP=3
31585         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
31586           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
31587         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
31588           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
31589         ELSEIF(MOD(KFA,10).EQ.2) THEN
31590           IF(IAGR.EQ.1) KSP=1
31591           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
31592         ENDIF
31593         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
31594         IF(KFLR.EQ.21) THEN
31595           KFLCH=KFL(IAGR)
31596         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
31597           NTRY=0
31598   140     NTRY=NTRY+1
31599           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
31600           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31601             GOTO 140
31602           ELSEIF(KFLCH.EQ.0) THEN
31603             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31604             MINT(51)=1
31605             RETURN
31606           ENDIF
31607         ELSEIF(NAGR.EQ.0) THEN
31608           NTRY=0
31609   150     NTRY=NTRY+1
31610           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
31611           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31612             GOTO 150
31613           ELSEIF(KFLCH.EQ.0) THEN
31614             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31615             MINT(51)=1
31616             RETURN
31617           ENDIF
31618           KFLSP=KFL(IAGR)
31619         ENDIF
31620       ENDIF
31621  
31622 C...Add on correct sign for result.
31623       KFLCH=KFLCH*KFS
31624       KFLSP=KFLSP*KFS
31625  
31626       RETURN
31627       END
31628  
31629 C*********************************************************************
31630  
31631 C...PYGAMM
31632 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
31633 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
31634 C...(Dover, 1965) 6.1.36.
31635  
31636       FUNCTION PYGAMM(X)
31637  
31638 C...Double precision and integer declarations.
31639       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31640       IMPLICIT INTEGER(I-N)
31641       INTEGER PYK,PYCHGE,PYCOMP
31642 C...Local array and data.
31643       DIMENSION B(8)
31644       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
31645      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
31646  
31647       NX=INT(X)
31648       DX=X-NX
31649  
31650       PYGAMM=1D0
31651       DXP=1D0
31652       DO 100 I=1,8
31653         DXP=DXP*DX
31654         PYGAMM=PYGAMM+B(I)*DXP
31655   100 CONTINUE
31656       IF(X.LT.1D0) THEN
31657         PYGAMM=PYGAMM/X
31658       ELSE
31659         DO 110 IX=1,NX-1
31660           PYGAMM=(X-IX)*PYGAMM
31661   110   CONTINUE
31662       ENDIF
31663  
31664       RETURN
31665       END
31666  
31667 C***********************************************************************
31668  
31669 C...PYWAUX
31670 C...Calculates real and imaginary parts of the auxiliary functions W1
31671 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
31672 C...der Bij, Nucl. Phys. B297 (1988) 221.
31673  
31674       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
31675  
31676 C...Double precision and integer declarations.
31677       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31678       IMPLICIT INTEGER(I-N)
31679       INTEGER PYK,PYCHGE,PYCOMP
31680 C...Commonblocks.
31681       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31682       SAVE /PYDAT1/
31683  
31684       ASINH(X)=LOG(X+SQRT(X**2+1D0))
31685       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
31686  
31687       IF(EPS.LT.0D0) THEN
31688         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
31689         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
31690         WIM=0D0
31691       ELSEIF(EPS.LT.1D0) THEN
31692         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
31693         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
31694         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
31695         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
31696       ELSE
31697         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
31698         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
31699         WIM=0D0
31700       ENDIF
31701  
31702       RETURN
31703       END
31704  
31705 C***********************************************************************
31706  
31707 C...PYI3AU
31708 C...Calculates real and imaginary parts of the auxiliary function I3;
31709 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
31710 C...Nucl. Phys. B297 (1988) 221.
31711  
31712       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
31713  
31714 C...Double precision and integer declarations.
31715       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31716       IMPLICIT INTEGER(I-N)
31717       INTEGER PYK,PYCHGE,PYCOMP
31718 C...Commonblocks.
31719       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31720       SAVE /PYDAT1/
31721  
31722       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
31723       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
31724  
31725       IF(EPS.LT.0D0) THEN
31726         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31727           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
31728      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
31729      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
31730      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
31731      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
31732      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
31733      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
31734      &    EPS))
31735         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
31736           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
31737      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
31738      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
31739      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
31740      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
31741      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
31742      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
31743         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31744           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
31745      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
31746      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
31747      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
31748      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
31749      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
31750      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
31751         ELSE
31752           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
31753      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
31754      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
31755      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
31756      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
31757         ENDIF
31758         F3IM=0D0
31759       ELSEIF(EPS.LT.1D0) THEN
31760         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31761           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
31762      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
31763      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
31764      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
31765      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
31766      &    (0.25D0*(RAT+1D0)*EPS))
31767           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
31768      &    (0.25D0*(RAT+1D0)*EPS))
31769         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
31770           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
31771      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
31772      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
31773      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
31774      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
31775      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
31776           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
31777         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31778           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
31779      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
31780      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
31781      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
31782      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
31783      &    (1D0+0.25D0*RAT*EPS-GA))
31784           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
31785      &    (1D0+0.25D0*RAT*EPS-GA))
31786         ELSE
31787           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
31788      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
31789      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
31790      &    LOG((GA+BE-1D0)/(BE-GA))
31791           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
31792         ENDIF
31793       ELSE
31794         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
31795         RCTHE=RSQ*(1D0-2D0*BE/EPS)
31796         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
31797         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
31798         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
31799         R=SQRT(RSQ)
31800         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
31801         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
31802         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
31803      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
31804      &  (PHI-THE)*(PHI+THE-PARU(1))
31805         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
31806      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
31807       ENDIF
31808  
31809       Y3RE=2D0/(2D0*BE-1D0)*F3RE
31810       Y3IM=2D0/(2D0*BE-1D0)*F3IM
31811  
31812       RETURN
31813       END
31814  
31815 C***********************************************************************
31816  
31817 C...PYSPEN
31818 C...Calculates real and imaginary part of Spence function; see
31819 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
31820  
31821       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
31822  
31823 C...Double precision and integer declarations.
31824       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31825       IMPLICIT INTEGER(I-N)
31826       INTEGER PYK,PYCHGE,PYCOMP
31827 C...Commonblocks.
31828       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31829       SAVE /PYDAT1/
31830 C...Local array and data.
31831       DIMENSION B(0:14)
31832       DATA B/
31833      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
31834      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
31835      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
31836      &0.000000D+00,         7.575757D-02,         0.000000D+00,
31837      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
31838  
31839       XRE=XREIN
31840       XIM=XIMIN
31841       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
31842         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
31843         IF(IREIM.EQ.2) PYSPEN=0D0
31844         RETURN
31845       ENDIF
31846  
31847       XMOD=SQRT(XRE**2+XIM**2)
31848       IF(XMOD.LT.1D-6) THEN
31849         IF(IREIM.EQ.1) PYSPEN=0D0
31850         IF(IREIM.EQ.2) PYSPEN=0D0
31851         RETURN
31852       ENDIF
31853  
31854       XARG=SIGN(ACOS(XRE/XMOD),XIM)
31855       SP0RE=0D0
31856       SP0IM=0D0
31857       SGN=1D0
31858       IF(XMOD.GT.1D0) THEN
31859         ALGXRE=LOG(XMOD)
31860         ALGXIM=XARG-SIGN(PARU(1),XARG)
31861         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
31862         SP0IM=-ALGXRE*ALGXIM
31863         SGN=-1D0
31864         XMOD=1D0/XMOD
31865         XARG=-XARG
31866         XRE=XMOD*COS(XARG)
31867         XIM=XMOD*SIN(XARG)
31868       ENDIF
31869       IF(XRE.GT.0.5D0) THEN
31870         ALGXRE=LOG(XMOD)
31871         ALGXIM=XARG
31872         XRE=1D0-XRE
31873         XIM=-XIM
31874         XMOD=SQRT(XRE**2+XIM**2)
31875         XARG=SIGN(ACOS(XRE/XMOD),XIM)
31876         ALGYRE=LOG(XMOD)
31877         ALGYIM=XARG
31878         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
31879         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
31880         SGN=-SGN
31881       ENDIF
31882  
31883       XRE=1D0-XRE
31884       XIM=-XIM
31885       XMOD=SQRT(XRE**2+XIM**2)
31886       XARG=SIGN(ACOS(XRE/XMOD),XIM)
31887       ZRE=-LOG(XMOD)
31888       ZIM=-XARG
31889  
31890       SPRE=0D0
31891       SPIM=0D0
31892       SAVERE=1D0
31893       SAVEIM=0D0
31894       DO 100 I=0,14
31895         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
31896         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
31897         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
31898         SAVERE=TERMRE
31899         SAVEIM=TERMIM
31900         SPRE=SPRE+B(I)*TERMRE
31901         SPIM=SPIM+B(I)*TERMIM
31902   100 CONTINUE
31903  
31904   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
31905       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
31906  
31907       RETURN
31908       END
31909  
31910 C***********************************************************************
31911  
31912 C...PYQQBH
31913 C...Calculates the matrix element for the processes
31914 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
31915 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
31916 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
31917  
31918       SUBROUTINE PYQQBH(WTQQBH)
31919  
31920 C...Double precision and integer declarations.
31921       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31922       IMPLICIT INTEGER(I-N)
31923       INTEGER PYK,PYCHGE,PYCOMP
31924 C...Commonblocks.
31925       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31926       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
31927       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31928       COMMON/PYINT1/MINT(400),VINT(400)
31929       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
31930       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
31931 C...Local arrays and function.
31932       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
31933       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
31934      &PP(I,3)*PP(J,3)
31935  
31936 C...Mass parameters.
31937       WTQQBH=0D0
31938       ISUB=MINT(1)
31939       SHPR=SQRT(VINT(26))*VINT(1)
31940       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
31941       PH=SQRT(VINT(21))*VINT(1)
31942       SPQ=PQ**2
31943       SPH=PH**2
31944  
31945 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
31946       DO 100 I=1,2
31947         PT=SQRT(MAX(0D0,VINT(197+5*I)))
31948         PP(I,1)=PT*COS(VINT(198+5*I))
31949         PP(I,2)=PT*SIN(VINT(198+5*I))
31950   100 CONTINUE
31951       PP(3,1)=-PP(1,1)-PP(2,1)
31952       PP(3,2)=-PP(1,2)-PP(2,2)
31953       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
31954       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
31955       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
31956       PMT3=SQRT(PMS3)
31957       PP(3,3)=PMT3*SINH(VINT(211))
31958       PP(3,4)=PMT3*COSH(VINT(211))
31959       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
31960       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
31961      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
31962       PP(2,3)=-PP(1,3)-PP(3,3)
31963       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
31964       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
31965  
31966 C...Set up incoming kinematics and derived momentum combinations.
31967       DO 110 I=4,5
31968         PP(I,1)=0D0
31969         PP(I,2)=0D0
31970         PP(I,3)=-0.5D0*SHPR*(-1)**I
31971         PP(I,4)=-0.5D0*SHPR
31972   110 CONTINUE
31973       DO 120 J=1,4
31974         PP(6,J)=PP(1,J)+PP(2,J)
31975         PP(7,J)=PP(1,J)+PP(3,J)
31976         PP(8,J)=PP(1,J)+PP(4,J)
31977         PP(9,J)=PP(1,J)+PP(5,J)
31978         PP(10,J)=-PP(2,J)-PP(3,J)
31979         PP(11,J)=-PP(2,J)-PP(4,J)
31980         PP(12,J)=-PP(2,J)-PP(5,J)
31981         PP(13,J)=-PP(4,J)-PP(5,J)
31982   120 CONTINUE
31983  
31984 C...Derived kinematics invariants.
31985       X1=DOT(1,2)
31986       X2=DOT(1,3)
31987       X3=DOT(1,4)
31988       X4=DOT(1,5)
31989       X5=DOT(2,3)
31990       X6=DOT(2,4)
31991       X7=DOT(2,5)
31992       X8=DOT(3,4)
31993       X9=DOT(3,5)
31994       X10=DOT(4,5)
31995  
31996 C...Propagators.
31997       SS1=DOT(7,7)-SPQ
31998       SS2=DOT(8,8)-SPQ
31999       SS3=DOT(9,9)-SPQ
32000       SS4=DOT(10,10)-SPQ
32001       SS5=DOT(11,11)-SPQ
32002       SS6=DOT(12,12)-SPQ
32003       SS7=DOT(13,13)
32004       DX(1)=SS1*SS6
32005       DX(2)=SS2*SS6
32006       DX(3)=SS2*SS4
32007       DX(4)=SS1*SS5
32008       DX(5)=SS3*SS5
32009       DX(6)=SS3*SS4
32010       DX(7)=SS7*SS1
32011       DX(8)=SS7*SS4
32012  
32013 C...Define colour coefficients for g + g -> Q + Qbar + H.
32014       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
32015         DO 140 I=1,3
32016           DO 130 J=1,3
32017             CLR(I,J)=16D0/3D0
32018             CLR(I+3,J+3)=16D0/3D0
32019             CLR(I,J+3)=-2D0/3D0
32020             CLR(I+3,J)=-2D0/3D0
32021   130     CONTINUE
32022   140   CONTINUE
32023         DO 160 L=1,2
32024           DO 150 I=1,3
32025             CLR(I,6+L)=-6D0
32026             CLR(I+3,6+L)=6D0
32027             CLR(6+L,I)=-6D0
32028             CLR(6+L,I+3)=6D0
32029   150     CONTINUE
32030   160   CONTINUE
32031         DO 180 K1=1,2
32032           DO 170 K2=1,2
32033             CLR(6+K1,6+K2)=12D0
32034   170     CONTINUE
32035   180   CONTINUE
32036  
32037 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
32038         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
32039      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
32040      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
32041         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
32042      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
32043      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
32044      &  X10)
32045         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
32046      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
32047      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
32048      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
32049      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
32050      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
32051         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
32052      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
32053      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
32054      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
32055      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
32056         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
32057      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
32058      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
32059      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
32060      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
32061      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
32062      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
32063      &  X4*X6*X5)
32064         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
32065      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
32066      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
32067      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
32068      &  +X4*X9*X5+X4*X5**2)
32069         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
32070      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
32071      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
32072      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
32073      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
32074      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
32075         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
32076      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
32077      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
32078      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
32079      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
32080      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
32081      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
32082      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
32083      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
32084         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
32085      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
32086         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
32087      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
32088      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
32089      &  X6)
32090         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
32091      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
32092      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
32093      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
32094      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
32095      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
32096      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
32097      &  X5+X4*X6*X5)
32098         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
32099      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
32100      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
32101      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
32102      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
32103      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
32104      &  X6**2)
32105         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
32106      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
32107      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
32108      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
32109      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
32110      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
32111      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
32112      &  X4*X6*X5)
32113         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
32114      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
32115      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
32116      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
32117      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
32118      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
32119      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
32120      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
32121      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
32122      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
32123      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
32124         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
32125      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
32126      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
32127      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
32128      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
32129      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
32130      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
32131      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
32132      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
32133      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
32134      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
32135         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
32136      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
32137      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
32138         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
32139      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
32140      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
32141      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
32142      &  +X3*X8*X5+X3*X5**2)
32143         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
32144      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
32145      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
32146      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
32147      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
32148      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
32149      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
32150      &  X5+X4*X6*X5)
32151         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
32152      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
32153      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
32154      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
32155      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
32156         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
32157      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
32158      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
32159      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
32160      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
32161      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
32162      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
32163      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
32164      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
32165         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
32166      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
32167      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
32168      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
32169      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
32170      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
32171         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
32172      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
32173      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
32174         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
32175      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
32176      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
32177      &  X10)
32178         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
32179      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
32180      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
32181      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
32182      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
32183      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
32184         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
32185      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
32186      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
32187      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
32188      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
32189      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
32190         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
32191      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
32192      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
32193      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
32194      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
32195      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
32196      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
32197      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
32198      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
32199         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
32200      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
32201         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
32202      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
32203      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
32204      &  X7)
32205         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
32206      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
32207      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
32208      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
32209      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
32210      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
32211      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
32212      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
32213      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
32214      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
32215      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
32216         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
32217      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
32218      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
32219      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
32220      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
32221      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
32222      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
32223      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
32224      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
32225      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
32226      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
32227         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
32228      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
32229      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
32230         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
32231      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
32232      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
32233      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
32234      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
32235      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
32236      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
32237      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
32238      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
32239         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
32240      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
32241      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
32242      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
32243      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
32244      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
32245         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
32246      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
32247      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
32248      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
32249      &  *X6)
32250         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
32251      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
32252      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
32253      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
32254      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
32255      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
32256      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
32257         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
32258      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
32259      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
32260      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
32261      &  X8)
32262         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
32263      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
32264      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
32265         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
32266      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
32267      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
32268      &  X9*X5)
32269         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
32270      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
32271      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
32272      &  X8*X5)
32273         FM(9,10)=0.5D0*(FMXX+FM(9,10))
32274         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
32275      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
32276      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
32277  
32278 C...Repackage matrix elements.
32279         DO 200 I=1,8
32280           DO 190 J=1,8
32281             RM(I,J)=FM(I,J)
32282   190     CONTINUE
32283   200   CONTINUE
32284         RM(7,7)=FM(7,7)-2D0*FM(9,9)
32285         RM(7,8)=FM(7,8)-2D0*FM(9,10)
32286         RM(8,8)=FM(8,8)-2D0*FM(10,10)
32287  
32288 C...Produce final result: matrix elements * colours * propagators.
32289         DO 220 I=1,8
32290           DO 210 J=I,8
32291             FAC=8D0
32292             IF(I.EQ.J)FAC=4D0
32293             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
32294   210     CONTINUE
32295   220   CONTINUE
32296         WTQQBH=-WTQQBH/256D0
32297  
32298       ELSE
32299 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
32300         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
32301      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
32302      &  *X6+X8*X7)
32303         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
32304      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
32305      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
32306      &  X5)
32307         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
32308      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
32309      &  *X9+X4*X8)
32310  
32311 C...Produce final result: matrix elements * propagators.
32312         A11=A11/DX(7)**2
32313         A12=A12/(DX(7)*DX(8))
32314         A22=A22/DX(8)**2
32315         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
32316       ENDIF
32317  
32318       RETURN
32319       END
32320  
32321 C*********************************************************************
32322  
32323 C...PYMSIN
32324 C...Initializes supersymmetry: finds sparticle masses and
32325 C...branching ratios and stores this information.
32326 C...AUTHOR: STEPHEN MRENNA
32327 C...Baryon- and lepton-number violating parameters by P. Z. Skands.
32328  
32329       SUBROUTINE PYMSIN
32330  
32331 C...Double precision and integer declarations.
32332       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32333       IMPLICIT INTEGER(I-N)
32334       INTEGER PYK,PYCHGE,PYCOMP
32335 C...Parameter statement to help give large particle numbers.
32336       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32337      &KEXCIT=4000000,KDIMEN=5000000)
32338 C...Commonblocks.
32339       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32340       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32341       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
32342       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
32343       COMMON/PYINT4/MWID(500),WIDS(500,5)
32344       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32345       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
32346       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
32347      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
32348       COMMON/PYHTRI/HHH(7)
32349       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT4/,/PYMSSM/,
32350      &/PYMSRV/,/PYSSMT/
32351  
32352 C...Local variables.
32353       DOUBLE PRECISION ALFA,BETA
32354       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
32355       INTEGER I,J,J1,I1,K1
32356       INTEGER KC,LKNT,IDLAM(400,3)
32357       DOUBLE PRECISION XLAM(0:400)
32358       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
32359       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
32360       DOUBLE PRECISION DELM,XMDIF
32361       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
32362       DOUBLE PRECISION ARG,SGNMU,R
32363       INTEGER IMSSM
32364       INTEGER IRPRTY
32365       INTEGER KFSUSY(36),MWIDSU(36),MDCYSU(36)
32366       SAVE MWIDSU,MDCYSU
32367       DATA KFSUSY/
32368      &1000001,2000001,1000002,2000002,1000003,2000003,
32369      &1000004,2000004,1000005,2000005,1000006,2000006,
32370      &1000011,2000011,1000012,2000012,1000013,2000013,
32371      &1000014,2000014,1000015,2000015,1000016,2000016,
32372      &1000021,1000022,1000023,1000025,1000035,1000024,
32373      &1000037,1000039,     25,     35,     36,     37/
32374       DATA INIT/0/
32375  
32376 C...Do nothing if SUSY not requested.
32377       IMSSM=IMSS(1)
32378       IF(IMSSM.EQ.0) RETURN
32379  
32380 C...Save copy of MWID(KC) and MDCY(KC,1) values before
32381 C...they are set to zero for the LSP.
32382       IF(INIT.EQ.0) THEN
32383         INIT=1
32384         DO 100 I=1,36
32385           KF=KFSUSY(I)
32386           KC=PYCOMP(KF)
32387           MWIDSU(I)=MWID(KC)
32388           MDCYSU(I)=MDCY(KC,1)
32389   100   CONTINUE
32390       ENDIF
32391  
32392 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
32393       DO 110 I=1,36
32394         KF=KFSUSY(I)
32395         KC=PYCOMP(KF)
32396         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
32397           MWID(KC)=MWIDSU(I)
32398           MDCY(KC,1)=MDCYSU(I)
32399         ENDIF
32400   110 CONTINUE
32401  
32402 C...First part of routine: set masses and couplings.
32403  
32404 C...Reset mixing values in sfermion sector to pure left/right.
32405       DO 120 I=1,16
32406         SFMIX(I,1)=1D0
32407         SFMIX(I,4)=1D0
32408         SFMIX(I,2)=0D0
32409         SFMIX(I,3)=0D0
32410   120 CONTINUE
32411  
32412 C...Common couplings.
32413       TANB=RMSS(5)
32414       BETA=ATAN(TANB)
32415       COSB=COS(BETA)
32416       SINB=TANB*COSB
32417       COS2B=COS(2D0*BETA)
32418       ALFA=RMSS(18)
32419       XMW2=PMAS(24,1)**2
32420       XMZ2=PMAS(23,1)**2
32421       XW=PARU(102)
32422  
32423 C...Define sparticle masses for a general MSSM simulation.
32424       IF(IMSSM.EQ.1) THEN
32425         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
32426         DO 130 I=1,5,2
32427           KC=PYCOMP(KSUSY1+I)
32428           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
32429           KC=PYCOMP(KSUSY2+I)
32430           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
32431           KC=PYCOMP(KSUSY1+I+1)
32432           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
32433           KC=PYCOMP(KSUSY2+I+1)
32434           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
32435   130   CONTINUE
32436         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
32437         IF(XARG.LT.0D0) THEN
32438           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
32439      &    ' FROM THE SUM RULE. '
32440           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
32441           RETURN
32442         ELSE
32443           XARG=SQRT(XARG)
32444         ENDIF
32445         DO 140 I=11,15,2
32446           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
32447           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
32448           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
32449           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
32450   140   CONTINUE
32451         IF(IMSS(8).EQ.1) THEN
32452           RMSS(13)=RMSS(6)
32453           RMSS(14)=RMSS(7)
32454         ENDIF
32455  
32456 C...Alternatively derive masses from SUGRA relations.
32457       ELSEIF(IMSSM.EQ.2) THEN
32458         CALL PYAPPS
32459 C...Or use ISASUSY
32460       ELSEIF(IMSSM.EQ.12) THEN
32461         CALL PYSUGI
32462         ALFA=RMSS(18)
32463         GOTO 170
32464       ENDIF
32465  
32466 C...Add in extra D-term contributions.
32467       IF(IMSS(7).EQ.1) THEN
32468         R=0.43D0
32469         DX=RMSS(23)
32470         DY=RMSS(24)
32471         DS=RMSS(25)
32472         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32473         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
32474         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
32475         WRITE(MSTU(11),*) 'C   DX = ',DX
32476         WRITE(MSTU(11),*) 'C   DY = ',DY
32477         WRITE(MSTU(11),*) 'C   DS = ',DS
32478         WRITE(MSTU(11),*) 'C                                      '
32479         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
32480         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
32481         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32482         DQ2=DY/6D0-DX/3D0-DS/3D0
32483         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
32484         DD2=DY/3D0+DX-2D0*DS/3D0
32485         DL2=-DY/2D0+DX-2D0*DS/3D0
32486         DE2=DY-DX/3D0-DS/3D0
32487         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
32488         DHD2=-DY/2D0-2D0*DX/3D0+DS
32489         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
32490      &  /ABS(COS2B)
32491         DMA2 = 2D0*DMU2+DHU2+DHD2
32492         DO 150 I=1,5,2
32493           KC=PYCOMP(KSUSY1+I)
32494           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
32495           KC=PYCOMP(KSUSY2+I)
32496           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
32497           KC=PYCOMP(KSUSY1+I+1)
32498           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
32499           KC=PYCOMP(KSUSY2+I+1)
32500           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
32501   150   CONTINUE
32502         DO 160 I=11,15,2
32503           KC=PYCOMP(KSUSY1+I)
32504           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
32505           KC=PYCOMP(KSUSY2+I)
32506           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
32507           KC=PYCOMP(KSUSY1+I+1)
32508           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
32509   160   CONTINUE
32510         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
32511           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
32512           STOP
32513         ENDIF
32514         SGNMU=SIGN(1D0,RMSS(4))
32515         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
32516         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
32517         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
32518         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
32519         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
32520         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
32521         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
32522         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
32523         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
32524         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
32525         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
32526         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
32527           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
32528           STOP
32529         ENDIF
32530         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
32531         RMSS(6)=SQRT(RMSS(6)**2+DL2)
32532         RMSS(7)=SQRT(RMSS(7)**2+DE2)
32533         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
32534         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
32535         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
32536         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
32537         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
32538       ENDIF
32539  
32540 C...Fix the third generation sfermions.
32541       CALL PYTHRG
32542  
32543 C...Fix the neutralino--chargino--gluino sector.
32544       CALL PYINOM
32545  
32546 C...Fix the Higgs sector.
32547       CALL PYHGGM(ALFA)
32548  
32549 C...Choose the Gunion-Haber convention.
32550       ALFA=-ALFA
32551       RMSS(18)=ALFA
32552  
32553 C...Print information on mass parameters.
32554       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
32555         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32556         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
32557         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
32558         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
32559         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
32560         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
32561         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
32562         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
32563         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
32564         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32565       ENDIF
32566       IF(IMSS(20).EQ.1) THEN
32567         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32568         WRITE(MSTU(11),*) ' DEBUG MODE '
32569         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
32570      &  UMIX(2,1),UMIX(2,2)
32571         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
32572      &  UMIXI(2,1),UMIXI(2,2)
32573         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
32574      &  VMIX(2,1),VMIX(2,2)
32575         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
32576      &  VMIXI(2,1),VMIXI(2,2)
32577         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
32578         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
32579         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
32580         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
32581         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
32582         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
32583         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
32584         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
32585         WRITE(MSTU(11),*) ' ALFA = ',ALFA
32586         WRITE(MSTU(11),*) ' BETA = ',BETA
32587         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
32588         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
32589         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32590       ENDIF
32591  
32592 C...Set up the Higgs couplings - needed here since initialization
32593 C...in PYINRE did not yet occur when PYWIDT is called below.
32594   170 AL=ALFA
32595       BE=BETA
32596       SINA=SIN(AL)
32597       COSA=COS(AL)
32598       COSB=COS(BE)
32599       SINB=TANB*COSB
32600       SBMA=SIN(BE-AL)
32601       SAPB=SIN(AL+BE)
32602       CAPB=COS(AL+BE)
32603       CBMA=COS(BE-AL)
32604       C2A=COS(2D0*AL)
32605       C2B=COSB**2-SINB**2
32606 C...tanb (used for H+)
32607       PARU(141)=TANB
32608  
32609 C...Firstly: h
32610 C...Coupling to d-type quarks
32611       PARU(161)=SINA/COSB
32612 C...Coupling to u-type quarks
32613       PARU(162)=-COSA/SINB
32614 C...Coupling to leptons
32615       PARU(163)=PARU(161)
32616 C...Coupling to Z
32617       PARU(164)=SBMA
32618 C...Coupling to W
32619       PARU(165)=PARU(164)
32620  
32621 C...Secondly: H
32622 C...Coupling to d-type quarks
32623       PARU(171)=-COSA/COSB
32624 C...Coupling to u-type quarks
32625       PARU(172)=-SINA/SINB
32626 C...Coupling to leptons
32627       PARU(173)=PARU(171)
32628 C...Coupling to Z
32629       PARU(174)=CBMA
32630 C...Coupling to W
32631       PARU(175)=PARU(174)
32632 C...Coupling to h
32633       IF(IMSS(4).EQ.2) THEN
32634         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
32635       ELSE
32636         HHH(3)=HHH(3)+HHH(4)+HHH(5)
32637         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
32638      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
32639      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
32640      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
32641       ENDIF
32642 C...Coupling to H+
32643 C...Define later
32644       IF(IMSS(4).EQ.2) THEN
32645         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
32646       ELSE
32647         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
32648      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
32649      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
32650      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
32651       ENDIF
32652 C...Coupling to A
32653       IF(IMSS(4).EQ.2) THEN
32654         PARU(177)=COS(2D0*BE)*COS(BE+AL)
32655       ELSE
32656         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
32657      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
32658      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
32659      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
32660       ENDIF
32661 C...Coupling to H+
32662       IF(IMSS(4).EQ.2) THEN
32663         PARU(178)=PARU(177)
32664       ELSE
32665         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
32666       ENDIF
32667 C...Thirdly, A
32668 C...Coupling to d-type quarks
32669       PARU(181)=TANB
32670 C...Coupling to u-type quarks
32671       PARU(182)=1D0/PARU(181)
32672 C...Coupling to leptons
32673       PARU(183)=PARU(181)
32674       PARU(184)=0D0
32675       PARU(185)=0D0
32676 C...Coupling to Z h
32677       PARU(186)=COS(BE-AL)
32678 C...Coupling to Z H
32679       PARU(187)=SIN(BE-AL)
32680       PARU(188)=0D0
32681       PARU(189)=0D0
32682       PARU(190)=0D0
32683  
32684 C...Finally: H+
32685 C...Coupling to W h
32686       PARU(195)=COS(BE-AL)
32687  
32688 C...Tell that all Higgs couplings have been set.
32689       MSTP(4)=1
32690  
32691 C...Set R-Violating couplings.
32692 C...Set lambda couplings to common value or "natural values".
32693       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
32694         VIR3=1D0/(126D0)**3
32695         DO 200 IRK=1,3
32696           DO 190 IRI=1,3
32697             DO 180 IRJ=1,3
32698               IF (IRI.NE.IRJ) THEN
32699                 IF (IRI.LT.IRJ) THEN
32700                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
32701                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
32702      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
32703      &              PMAS(9+2*IRK,1)*VIR3)
32704                 ELSE
32705                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
32706                 ENDIF
32707               ELSE
32708                 RVLAM(IRI,IRJ,IRK)=0D0
32709               ENDIF
32710   180       CONTINUE
32711   190     CONTINUE
32712   200   CONTINUE
32713       ENDIF
32714 C...Set lambda' couplings to common value or "natural values".
32715       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
32716         VIR3=1D0/(126D0)**3
32717         DO 230 IRI=1,3
32718           DO 220 IRJ=1,3
32719             DO 210 IRK=1,3
32720               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
32721               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
32722      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
32723      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
32724   210       CONTINUE
32725   220     CONTINUE
32726   230   CONTINUE
32727       ENDIF
32728 C...Set lambda'' couplings to common value or "natural values".
32729       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
32730         VIR3=1D0/(126D0)**3
32731         DO 260 IRI=1,3
32732           DO 250 IRJ=1,3
32733             DO 240 IRK=1,3
32734               IF (IRJ.NE.IRK) THEN
32735                 IF (IRJ.LT.IRK) THEN
32736                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
32737                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
32738      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
32739      &              PMAS(2*IRK-1,1)*VIR3)
32740                 ELSE
32741                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
32742                 ENDIF
32743               ELSE
32744                 RVLAMB(IRI,IRJ,IRK) = 0D0
32745               ENDIF
32746   240       CONTINUE
32747   250     CONTINUE
32748   260   CONTINUE
32749       ENDIF
32750  
32751 C...Antisymmetrize couplings set by user
32752       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
32753         DO 290 IRI=1,3
32754           DO 280 IRJ=1,3
32755             DO 270 IRK=1,3
32756               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
32757                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
32758                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
32759               ENDIF
32760               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
32761                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
32762                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
32763               ENDIF
32764   270       CONTINUE
32765   280     CONTINUE
32766   290   CONTINUE
32767       ENDIF
32768  
32769 C...Second part of routine: set decay modes and branching ratios.
32770  
32771 C...Allow chi10 -> gravitino + gamma or not.
32772       KC=PYCOMP(KSUSY1+39)
32773       IF( IMSS(11) .NE. 0 ) THEN
32774         PMAS(KC,1)=RMSS(21)/1000000000D0
32775         PMAS(KC,2)=0.0001D0
32776         IRPRTY=0
32777         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
32778       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
32779         IRPRTY=0
32780         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
32781      &       ' ALLOWING SUSY LLE DECAYS'
32782         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
32783      &       ' ALLOWING SUSY LQD DECAYS'
32784         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
32785      &       ' ALLOWING SUSY UDD DECAYS'
32786         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
32787      &   ' --- Warning: R-Violating couplings possibly',
32788      &       ' incompatible with proton decay'
32789       ELSE
32790         PMAS(KC,1)=9999D0
32791         IRPRTY=1
32792       ENDIF
32793  
32794 C...Loop over sparticle and Higgs species.
32795       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
32796 C...Find the LSP or NLSP for a gravitino LSP
32797       ILSP=0
32798       PMLSP=1D20
32799       DO 300 I=1,36
32800         KF=KFSUSY(I)
32801         IF(KF.EQ.1000039) GOTO 300
32802         KC=PYCOMP(KF)
32803         IF(PMAS(KC,1).LT.PMLSP) THEN
32804           ILSP=I
32805           PMLSP=PMAS(KC,1)
32806         ENDIF
32807   300 CONTINUE
32808       DO 370 I=1,36
32809         KF=KFSUSY(I)
32810         KC=PYCOMP(KF)
32811         LKNT=0
32812  
32813 C...Sfermion decays.
32814         IF(I.LE.24) THEN
32815 C...First check to see if sneutrino is lighter than chi10.
32816           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
32817      &    PMAS(KC,1).LT.PMCHI1) THEN
32818           ELSE
32819             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
32820           ENDIF
32821  
32822 C...Gluino decays.
32823         ELSEIF(I.EQ.25) THEN
32824           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
32825           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
32826  
32827 C...Neutralino decays.
32828         ELSEIF(I.GE.26.AND.I.LE.29) THEN
32829           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
32830 C...chi10 stable or chi10 -> gravitino + gamma.
32831           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
32832             PMAS(KC,2)=1D-6
32833             MDCY(KC,1)=0
32834             MWID(KC)=0
32835           ENDIF
32836  
32837 C...Chargino decays.
32838         ELSEIF(I.GE.30.AND.I.LE.31) THEN
32839           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
32840  
32841 C...Gravitino is stable.
32842         ELSEIF(I.EQ.32) THEN
32843           MDCY(KC,1)=0
32844           MWID(KC)=0
32845  
32846 C...Higgs decays.
32847         ELSEIF(I.GE.33.AND.I.LE.36) THEN
32848 C...Calculate decays to non-SUSY particles.
32849           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
32850           LKNT=0
32851           DO 310 I1=0,100
32852             XLAM(I1)=0D0
32853   310     CONTINUE
32854           DO 330 I1=1,MDCY(KC,3)
32855             K1=MDCY(KC,2)+I1-1
32856             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
32857      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
32858             XLAM(I1)=WDTP(I1)
32859             XLAM(0)=XLAM(0)+XLAM(I1)
32860             DO 320 J1=1,3
32861               IDLAM(I1,J1)=KFDP(K1,J1)
32862   320       CONTINUE
32863             LKNT=LKNT+1
32864   330     CONTINUE
32865 C...Add the decays to SUSY particles.
32866           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
32867         ENDIF
32868 C...Zero the branching ratios for use in loop mode
32869 C...thanks to K. Matchev (FNAL)
32870         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
32871           BRAT(IDC)=0D0
32872   340   CONTINUE
32873  
32874 C...Set stable particles.
32875         IF(LKNT.EQ.0) THEN
32876           MDCY(KC,1)=0
32877           MWID(KC)=0
32878           PMAS(KC,2)=1D-6
32879           PMAS(KC,3)=1D-5
32880           PMAS(KC,4)=0D0
32881  
32882 C...Store branching ratios in the standard tables.
32883         ELSE
32884           IDC=MDCY(KC,2)+MDCY(KC,3)-1
32885           DELM=1D6
32886           DO 360 IL=1,LKNT
32887             IDCSV=IDC
32888   350       IDC=IDC+1
32889             BRAT(IDC)=0D0
32890             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
32891             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
32892      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
32893               BRAT(IDC)=XLAM(IL)/XLAM(0)
32894               XMDIF=PMAS(KC,1)
32895               IF(MDME(IDC,1).GE.1) THEN
32896                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
32897      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
32898                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
32899      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
32900               ENDIF
32901               IF(I.LE.32) THEN
32902                 IF(XMDIF.GE.0D0) THEN
32903                   DELM=MIN(DELM,XMDIF)
32904                 ELSE
32905                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
32906                   WRITE(MSTU(11),*) ' KF = ',KF
32907                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
32908                 ENDIF
32909               ENDIF
32910               GOTO 360
32911             ELSEIF(IDC.EQ.IDCSV) THEN
32912               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
32913      &        'channel not recognized:'
32914               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(I,J),J=1,3)
32915               GOTO 360
32916             ELSE
32917               GOTO 350
32918             ENDIF
32919   360     CONTINUE
32920  
32921 C...Store width, cutoff and lifetime.
32922           PMAS(KC,2)=XLAM(0)
32923           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
32924             PMAS(KC,3)=PMAS(KC,2)*10D0
32925           ELSE
32926             PMAS(KC,3)=0.95D0*DELM
32927           ENDIF
32928           IF(PMAS(KC,2).NE.0D0) THEN
32929             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
32930           ENDIF
32931         ENDIF
32932   370 CONTINUE
32933  
32934       RETURN
32935       END
32936  
32937 C*********************************************************************
32938  
32939 C...PYAPPS
32940 C...Uses approximate analytical formulae to determine the full set of
32941 C...MSSM parameters from SUGRA input.
32942 C...See M. Drees and S.P. Martin, hep-ph/9504124
32943  
32944       SUBROUTINE PYAPPS
32945  
32946 C...Double precision and integer declarations.
32947       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32948       IMPLICIT INTEGER(I-N)
32949       INTEGER PYK,PYCHGE,PYCOMP
32950 C...Parameter statement to help give large particle numbers.
32951       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32952      &KEXCIT=4000000,KDIMEN=5000000)
32953 C...Commonblocks.
32954       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32955       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32956       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32957       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
32958  
32959       IMSS(5)=0
32960       IMSS(8)=0
32961       XMT=PMAS(6,1)
32962       XMZ2=PMAS(23,1)**2
32963       XMW2=PMAS(24,1)**2
32964       TANB=RMSS(5)
32965       BETA=ATAN(TANB)
32966       XW=PARU(102)
32967       XMG=RMSS(1)
32968       XMG2=XMG*XMG
32969       XM0=RMSS(8)
32970       XM02=XM0*XM0
32971       AT=-RMSS(16)
32972       RMSS(15)=AT
32973       RMSS(17)=AT
32974       SINB=TANB/SQRT(TANB**2+1D0)
32975       COSB=SINB/TANB
32976  
32977       DTERM=XMZ2*COS(2D0*BETA)
32978       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
32979       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
32980       RMSS(6)=XMEL
32981       RMSS(7)=XMER
32982       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
32983       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
32984       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
32985       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
32986       DO 100 I=1,5,2
32987         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
32988         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
32989         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
32990         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
32991   100 CONTINUE
32992       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
32993       IF(XARG.LT.0D0) THEN
32994         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
32995      &  ' FROM THE SUM RULE. '
32996         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
32997         RETURN
32998       ELSE
32999         XARG=SQRT(XARG)
33000       ENDIF
33001       DO 110 I=11,15,2
33002         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
33003         PMAS(PYCOMP(KSUSY2+I),1)=XMER
33004         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
33005         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
33006   110 CONTINUE
33007       RMT=PYMRUN(6,PMAS(6,1)**2)
33008       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
33009      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
33010       RMB=PYMRUN(5,PMAS(6,1)**2)
33011       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
33012      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
33013       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
33014       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
33015      &SINB)**2)
33016       RMSS(16)=-ATP
33017       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
33018      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
33019       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
33020       XMU=SIGN(SQRT(XMU2),RMSS(4))
33021       RMSS(4)=XMU
33022       IF(XMA2.GT.0D0) THEN
33023         RMSS(19)=SQRT(XMA2)
33024       ELSE
33025         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
33026         STOP
33027       ENDIF
33028       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
33029       IF(ARG.GT.0D0) THEN
33030         RMSS(14)=SQRT(ARG)
33031       ELSE
33032         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
33033         STOP
33034       ENDIF
33035       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
33036       IF(ARG.GT.0D0) THEN
33037         RMSS(13)=SQRT(ARG)
33038       ELSE
33039         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
33040         STOP
33041       ENDIF
33042       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
33043       IF(ARG.GT.0D0) THEN
33044         RMSS(10)=SQRT(ARG)
33045       ELSE
33046         RMSS(10)=-SQRT(-ARG)
33047       ENDIF
33048       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
33049       IF(ARG.GT.0D0) THEN
33050         RMSS(12)=SQRT(ARG)
33051       ELSE
33052         RMSS(12)=-SQRT(-ARG)
33053       ENDIF
33054       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
33055       IF(ARG.GT.0D0) THEN
33056         RMSS(11)=SQRT(ARG)
33057       ELSE
33058         RMSS(11)=-SQRT(-ARG)
33059       ENDIF
33060  
33061       RETURN
33062       END
33063  
33064 C*********************************************************************
33065  
33066 C...PYSUGI
33067 C...Interface to ISASUSY version 7.61.
33068 C...Warning: if you use earlier versions, change dimension to
33069 C...SUPER(66) in /SSPAR/ and remove MHPNEG and ASM3 from /SUGPAS/.
33070 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
33071 C...Then converts to Gunion-Haber conventions.
33072  
33073       SUBROUTINE PYSUGI
33074       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33075  
33076       INTEGER PYK,PYCHGE,PYCOMP
33077       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33078      &KEXCIT=4000000,KDIMEN=5000000)
33079  
33080 C...Date of Change
33081       CHARACTER DOC*11
33082       PARAMETER (DOC='22 Nov 2002')
33083  
33084 C...ISASUGRA Input:
33085       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
33086 C...ISASUGRA Output
33087       CHARACTER*40 ISAVER,VISAJE
33088       REAL SUPER
33089       COMMON /SSPAR/ SUPER(69)
33090       COMMON /SUGMG/ MSS(32),GSS(29),MGUTSS,GGUTSS,AGUTSS,FTGUT,
33091      $FBGUT,FTAGUT,FNGUT
33092       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
33093       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
33094      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
33095      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3
33096       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
33097      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
33098      $FNMZ,AMNRMJ,ASM3
33099       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
33100 C SUPER: Filled by ISASUGRA.
33101 C SUPER(1)        = mass of ~g
33102 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
33103 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
33104 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
33105 C                          ,~tau_2
33106 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
33107 C SUPER(29)       = Higgsino mass = - mu
33108 C SUPER(30)       = ratio v2/v1 of vev's
33109 C SUPER(31:34)    = Signed neutralino masses
33110 C SUPER(35:50)    = Neutralino mixing matrix
33111 C SUPER(51:52)    = Signed chargino masses
33112 C SUPER(53:54)    = Chargino left, right mixing angles
33113 C SUPER(55:58)    = mass of h0, H0, A0, H+
33114 C SUPER(59)       = Higgs mixing angle alpha
33115 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
33116 C SUPER(66)       = Gravitino mass
33117 C GSS: Filled by ISASUGRA
33118 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
33119 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
33120 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
33121 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
33122 C     GSS(13) = M_h1^2     GSS(14) = M_h2^2     GSS(15) = M_er^2
33123 C     GSS(16) = M_el^2     GSS(17) = M_dnr^2    GSS(18) = M_upr^2
33124 C     GSS(19) = M_upl^2    GSS(20) = M_taur^2   GSS(21) = M_taul^2
33125 C     GSS(22) = M_btr^2    GSS(23) = M_tpr^2    GSS(24) = M_tpl^2
33126 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
33127 C     GSS(28) = M_nr       GSS(29) = A_n
33128 C MSS: Filled by ISASUGRA
33129 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
33130 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
33131 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
33132 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
33133 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
33134 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
33135 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
33136 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
33137 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
33138 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
33139 C     MSS(31) = ha0      MSS(32) = h+
33140 C Unification, filled by ISASUGRA if applicable.
33141 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
33142 C...SPYTHIA Input/Output:
33143       INTEGER IMSS
33144       DOUBLE PRECISION RMSS
33145       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33146       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33147      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33148       SAVE /SUGMG/,/SSPAR/
33149 C
33150 C...PYTHIA common blocks
33151 C...Parameters.
33152       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33153       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33154 C...Particle properties + some flavour parameters.
33155       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33156       SAVE  /PYDAT2/,/PYSSMT/
33157  
33158 C...Start by checking for incompatibilities/inconsistencies:
33159       DO 100 ICHK=2,9
33160         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
33161           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
33162      &         ,' option not used by PYSUGI'
33163         ENDIF
33164   100 CONTINUE
33165 C...ISAJET works with REAL numbers.
33166       MZERO=REAL(RMSS(8))
33167       MHLF=REAL(RMSS(1))
33168       AZERO=REAL(RMSS(16))
33169       TANB=REAL(RMSS(5))
33170       SGNMU=REAL(RMSS(4))
33171       MTOP=REAL(PMAS(6,1))
33172 C...Initialize MSSM parameter array
33173       DO 110 IPAR=1,66
33174         SUPER(IPAR)=0.0
33175   110 CONTINUE
33176 C...Call ISASUGRA
33177       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,1)
33178 C...Check whether ISASUSY thought the model was OK.
33179       IF (NOGOOD.NE.0) THEN
33180         IF (NOGOOD.EQ.1) CALL PYERRM(26
33181      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
33182         IF (NOGOOD.EQ.2) CALL PYERRM(26
33183      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
33184         IF (NOGOOD.EQ.3) CALL PYERRM(26
33185      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
33186         IF (NOGOOD.EQ.4) CALL PYERRM(26
33187      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
33188         IF (NOGOOD.EQ.7) CALL PYERRM(26
33189      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
33190         IF (NOGOOD.EQ.8) CALL PYERRM(26
33191      &       ,'(PYSUGI:) SUSY parameters give m(h0)^2 < 0.')
33192 C...Give warning, but don't stop, if LSP not ~chi_10.
33193         IF (NOGOOD.EQ.5) CALL PYERRM(16
33194      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
33195       ENDIF
33196 C...Warn about possible GUT scale tachyons.
33197       IF (ITACHY.NE.0) CALL PYERRM(16,
33198      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
33199  
33200 C...M1 and M2.
33201       RMSS(1)=GSS(7)
33202       RMSS(2)=GSS(8)
33203 C...Gluino Mass.
33204       RMSS(3)=SUPER(1)
33205 C...Mu = - Higgsino mass.
33206       RMSS(4)=-SUPER(29)
33207       RMSS(5)=TANB
33208 C...Slepton and squark masses. 2 first generations.
33209       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
33210       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
33211       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
33212       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
33213 C...Third generation.
33214       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
33215       RMSS(11)=SUPER(11)
33216       RMSS(12)=SUPER(15)
33217       RMSS(13)=SUPER(22)
33218       RMSS(14)=SUPER(23)
33219 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
33220       RMSS(15)=SUPER(62)
33221       RMSS(16)=SUPER(60)
33222       RMSS(17)=SUPER(64)
33223       RMSS(26)=SUPER(63)
33224       RMSS(27)=SUPER(61)
33225       RMSS(28)=SUPER(65)
33226 C...Higgs mixing angle alpha (Gunion-Haber convention).
33227       RMSS(18)=-SUPER(59)
33228 C...A0 mass.
33229       RMSS(19)=SUPER(57)
33230 C...GUT scale coupling
33231       RMSS(20)=AGUTSS
33232 C...Gravitino mass (for future compatibility)
33233       RMSS(21)=SUPER(66)
33234  
33235 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
33236 C...Higgs sector.
33237       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
33238       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
33239       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
33240       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
33241 C...Gluino.
33242       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
33243 C...Squarks and Sleptons.
33244       DO 120 ILR=1,2
33245         ILRM=ILR-1
33246         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
33247         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
33248         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
33249         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
33250         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
33251         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
33252         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
33253         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
33254         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
33255   120 CONTINUE
33256       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
33257       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
33258       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
33259 C...Neutralinos.
33260       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
33261       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
33262       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
33263       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
33264 C...Signed masses (extra minus from going to G-H convention).
33265       SMZ(1)=-SUPER(31)
33266       SMZ(2)=-SUPER(32)
33267       SMZ(3)=-SUPER(33)
33268       SMZ(4)=-SUPER(34)
33269 C...Charginos
33270       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
33271       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
33272 C...Signed masses (extra minus from going to G-H convention).
33273       SMW(1)=-SUPER(51)
33274       SMW(2)=-SUPER(52)
33275  
33276 C... Neutralino Mixing.
33277       DO 130 IN=1,4
33278         ZMIX(IN,1)= SUPER(38+4*(IN-1))
33279         ZMIX(IN,2)= SUPER(37+4*(IN-1))
33280         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
33281         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
33282   130 CONTINUE
33283 C...Chargino Mixing (PYTHIA same angle as HERWIG).
33284       THX=1D0
33285       THY=1D0
33286       IF (SUPER(53).GT.0) THX=-1D0
33287       IF (SUPER(54).GT.0) THY=-1D0
33288       UMIX(1,1) = -SIN(SUPER(53))
33289       UMIX(1,2) = -COS(SUPER(53))
33290       UMIX(2,1) = -THX*COS(SUPER(53))
33291       UMIX(2,2) = THX*SIN(SUPER(53))
33292       VMIX(1,1) = -SIN(SUPER(54))
33293       VMIX(1,2) = -COS(SUPER(54))
33294       VMIX(2,1) = -THY*COS(SUPER(54))
33295       VMIX(2,2) = THY*SIN(SUPER(54))
33296 C...Sfermion mixing (PYTHIA same angle as ISAJET)
33297       SFMIX(5,1)=COS(SUPER(63))
33298       SFMIX(5,2)=SIN(SUPER(63))
33299       SFMIX(5,3)=-SIN(SUPER(63))
33300       SFMIX(5,4)=COS(SUPER(63))
33301       SFMIX(6,1)=COS(SUPER(61))
33302       SFMIX(6,2)=SIN(SUPER(61))
33303       SFMIX(6,3)=-SIN(SUPER(61))
33304       SFMIX(6,4)=COS(SUPER(61))
33305       SFMIX(15,1)=COS(SUPER(65))
33306       SFMIX(15,2)=SIN(SUPER(65))
33307       SFMIX(15,3)=-SIN(SUPER(65))
33308       SFMIX(15,4)=COS(SUPER(65))
33309  
33310       IF (MSTP(122).NE.0) THEN
33311 C...Print a few lines to make the user know what's happening
33312         ISAVER=VISAJE()
33313         WRITE(MSTU(11),5000) DOC, ISAVER
33314         WRITE(MSTU(11),5100)
33315         WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU), MTOP
33316         WRITE(MSTU(11),5300)
33317         WRITE(MSTU(11),5500) 'EW scale masses'
33318         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
33319         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
33320      &       ,(SUPER(IP),IP=19,25,2)
33321         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
33322      &       ,IP=1,2)
33323         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
33324         WRITE(MSTU(11),5400)
33325         WRITE(MSTU(11),5500) 'Mixing structure'
33326         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
33327         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
33328      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
33329         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
33330      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
33331      &       ),(SFMIX(15,J),J=3,4)
33332         WRITE(MSTU(11),5400)
33333         WRITE(MSTU(11),5500) 'Couplings'
33334         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
33335         WRITE(MSTU(11),5400)
33336         WRITE(MSTU(11),6500)
33337       ENDIF
33338  
33339 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
33340 C...output by ISASUGRA.
33341       IMSS(4)=2
33342  
33343  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.1: PYTHIA/ISASUGRA '
33344      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
33345      &     ,1x,'-',1x,'P.Z. Skands'/1x,'*',2x,A/1x,'*')
33346  5100 FORMAT(1x,'*',1x,'ISASUGRA Input:'/1x,'*',1x,'----------------')
33347  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
33348      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
33349  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUGRA Output:'/1x,'*',1x
33350      &     ,'----------------')
33351  5400 FORMAT(1x,'*',1x,A)
33352  5500 FORMAT(1x,'*',1x,A,':')
33353  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
33354      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
33355  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
33356      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
33357      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
33358      &     ,1x))
33359  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
33360      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
33361      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
33362      &     .2,1x))
33363  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
33364      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
33365      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
33366  6000 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
33367      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
33368  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
33369      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
33370      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
33371      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
33372      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
33373      &     ,1x,F6.3,1x),'|')
33374  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
33375      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
33376      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
33377      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
33378      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
33379  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
33380      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
33381      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
33382      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
33383      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
33384      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
33385      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
33386  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
33387      &     ,4x,'Alpha_GUT = ',F8.2)
33388  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
33389       END
33390  
33391 C*********************************************************************
33392  
33393 C...PYRNMQ
33394 C...Determines the running mass of Squarks.
33395  
33396       FUNCTION PYRNMQ(ID,DTERM)
33397  
33398 C...Double precision and integer declarations.
33399       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33400       IMPLICIT INTEGER(I-N)
33401       INTEGER PYK,PYCHGE,PYCOMP
33402 C...Commonblock.
33403       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33404       SAVE /PYMSSM/
33405  
33406 C...Local variables.
33407       DOUBLE PRECISION PI,R
33408       DOUBLE PRECISION TOL
33409       DOUBLE PRECISION CI(3)
33410       EXTERNAL PYALPS
33411       DOUBLE PRECISION PYALPS
33412       DATA TOL/0.001D0/
33413       DATA PI,R/3.141592654D0,.61803399D0/
33414       DATA CI/0.47D0,0.07D0,0.02D0/
33415  
33416       C=1D0-R
33417       CA=CI(ID)
33418       AG=(0.71D0)**2/4D0/PI
33419       AG=RMSS(20)
33420       XM0=RMSS(8)
33421       XMG=RMSS(1)
33422       XM02=XM0*XM0
33423       XMG2=XMG*XMG
33424  
33425       AS=PYALPS(XM02+6D0*XMG2)
33426       CG=8D0/9D0*((AS/AG)**2-1D0)
33427       BX=XM02+(CA+CG)*XMG2+DTERM
33428       AX=MIN(50D0**2,0.5D0*BX)
33429       CX=MAX(2000D0**2,2D0*BX)
33430  
33431       X0=AX
33432       X3=CX
33433       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
33434         X1=BX
33435         X2=BX+C*(CX-BX)
33436       ELSE
33437         X2=BX
33438         X1=BX-C*(BX-AX)
33439       ENDIF
33440       AS1=PYALPS(X1)
33441       CG=8D0/9D0*((AS1/AG)**2-1D0)
33442       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
33443       AS2=PYALPS(X2)
33444       CG=8D0/9D0*((AS2/AG)**2-1D0)
33445       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
33446   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
33447         IF(F2.LT.F1) THEN
33448           X0=X1
33449           X1=X2
33450           X2=R*X1+C*X3
33451           F1=F2
33452           AS2=PYALPS(X2)
33453           CG=8D0/9D0*((AS2/AG)**2-1D0)
33454           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
33455         ELSE
33456           X3=X2
33457           X2=X1
33458           X1=R*X2+C*X0
33459           F2=F1
33460           AS1=PYALPS(X1)
33461           CG=8D0/9D0*((AS1/AG)**2-1D0)
33462           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
33463         ENDIF
33464         GOTO 100
33465       ENDIF
33466       IF(F1.LT.F2) THEN
33467         PYRNMQ=X1
33468         XMIN=X1
33469       ELSE
33470         PYRNMQ=X2
33471         XMIN=X2
33472       ENDIF
33473  
33474       RETURN
33475       END
33476  
33477 C*********************************************************************
33478  
33479 C...PYTHRG
33480 C...Calculates the mass eigenstates of the third generation sfermions.
33481 C...Created:  5-31-96
33482  
33483       SUBROUTINE PYTHRG
33484  
33485 C...Double precision and integer declarations.
33486       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33487       IMPLICIT INTEGER(I-N)
33488       INTEGER PYK,PYCHGE,PYCOMP
33489 C...Parameter statement to help give large particle numbers.
33490       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33491      &KEXCIT=4000000,KDIMEN=5000000)
33492 C...Commonblocks.
33493       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33494       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33495       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33496       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33497      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33498       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
33499  
33500 C...Local variables.
33501       DOUBLE PRECISION BETA
33502       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
33503       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
33504       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
33505       DOUBLE PRECISION ATR,AMQR,AMQL
33506       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
33507       INTEGER IF,I,J,II,JJ,IT,L
33508       LOGICAL DTERM
33509       DATA SMALL/1D-3/
33510       DATA ID1/10,10,13/
33511       DATA ID2/5,6,15/
33512       DATA ID3/15,16,17/
33513       DATA ID4/11,12,14/
33514       DATA DTERM/.TRUE./
33515  
33516       XMZ2=PMAS(23,1)**2
33517       XMW2=PMAS(24,1)**2
33518       TANB=RMSS(5)
33519       XMU=-RMSS(4)
33520       BETA=ATAN(TANB)
33521       COS2B=COS(2D0*BETA)
33522  
33523 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
33524  
33525       IOPT=IMSS(5)
33526       IF(IOPT.EQ.1) THEN
33527         CTT=DCOS(RMSS(27))
33528         CTT2=CTT**2
33529         STT=DSIN(RMSS(27))
33530         STT2=STT**2
33531         XM12=RMSS(10)**2
33532         XM22=RMSS(12)**2
33533         XMQL2=CTT2*XM12+STT2*XM22
33534         XMQR2=STT2*XM12+CTT2*XM22
33535         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
33536         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33537         RMSS(16)=ATOP
33538 C......SUBTRACT OUT D-TERM AND FERMION MASS
33539         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
33540         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
33541         IF(XMQL2.GE.0D0) THEN
33542           RMSS(10)=SQRT(XMQL2)
33543         ELSE
33544           RMSS(10)=-SQRT(-XMQL2)
33545         ENDIF
33546         IF(XMQR2.GE.0D0) THEN
33547           RMSS(12)=SQRT(XMQR2)
33548         ELSE
33549           RMSS(12)=-SQRT(-XMQR2)
33550         ENDIF
33551  
33552 C SAME FOR BOTTOM SQUARK
33553         CTT=DCOS(RMSS(26))
33554         CTT2=CTT**2
33555         STT=DSIN(RMSS(26))
33556         STT2=STT**2
33557         XM22=RMSS(11)**2
33558         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
33559         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
33560         IF(ABS(CTT).GE..9999D0) THEN
33561           ABOT=-XMU*TANB
33562           XMQR2=RMSS(11)**2
33563         ELSEIF(ABS(CTT).LE.1D-4) THEN
33564           ABOT=-XMU*TANB
33565           XMQR2=RMSS(11)**2
33566         ELSE
33567           XM12=(XMQL2-STT2*XM22)/CTT2
33568           XMQR2=STT2*XM12+CTT2*XM22
33569           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33570         ENDIF
33571         RMSS(15)=ABOT
33572 C......SUBTRACT OUT D-TERM AND FERMION MASS
33573         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
33574         IF(XMQR2.GE.0D0) THEN
33575           RMSS(11)=SQRT(XMQR2)
33576         ELSE
33577           RMSS(11)=-SQRT(-XMQR2)
33578         ENDIF
33579 C SAME FOR TAU SLEPTON
33580         CTT=DCOS(RMSS(28))
33581         CTT2=CTT**2
33582         STT=DSIN(RMSS(28))
33583         STT2=STT**2
33584         XM12=RMSS(13)**2
33585         XM22=RMSS(14)**2
33586         XMQL2=CTT2*XM12+STT2*XM22
33587         XMQR2=STT2*XM12+CTT2*XM22
33588         XMFR=PMAS(15,1)
33589         XMF2=XMFR**2
33590         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33591         RMSS(17)=ATAU
33592 C......SUBTRACT OUT D-TERM AND FERMION MASS
33593         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
33594         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
33595         IF(XMQL2.GE.0D0) THEN
33596           RMSS(13)=SQRT(XMQL2)
33597         ELSE
33598           RMSS(13)=-SQRT(-XMQL2)
33599         ENDIF
33600         IF(XMQR2.GE.0D0) THEN
33601           RMSS(14)=SQRT(XMQR2)
33602         ELSE
33603           RMSS(14)=-SQRT(-XMQR2)
33604         ENDIF
33605       ENDIF
33606       DO 170 L=1,3
33607         AMQL=RMSS(ID1(L))
33608         IF(AMQL.LT.0D0) THEN
33609           XMQL2=-AMQL**2
33610         ELSE
33611           XMQL2=AMQL**2
33612         ENDIF
33613         ATR=RMSS(ID3(L))
33614         AMQR=RMSS(ID4(L))
33615         IF(AMQR.LT.0D0) THEN
33616           XMQR2=-AMQR**2
33617         ELSE
33618           XMQR2=AMQR**2
33619         ENDIF
33620         IF=ID2(L)
33621         XMF=PYMRUN(IF,PMAS(6,1)**2)
33622         XMF2=XMF**2
33623         AM2(1,1)=XMQL2+XMF2
33624         AM2(2,2)=XMQR2+XMF2
33625         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
33626         IF(DTERM) THEN
33627           IF(L.EQ.1) THEN
33628             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
33629             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
33630             AM2(1,2)=XMF*(ATR+XMU*TANB)
33631           ELSEIF(L.EQ.2) THEN
33632             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
33633             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
33634             AM2(1,2)=XMF*(ATR+XMU/TANB)
33635           ELSEIF(L.EQ.3) THEN
33636             IF(IMSS(8).EQ.1) THEN
33637               AM2(1,1)=RMSS(6)**2
33638               AM2(2,2)=RMSS(7)**2
33639               AM2(1,2)=0D0
33640               RMSS(13)=RMSS(6)
33641               RMSS(14)=RMSS(7)
33642             ELSE
33643               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
33644               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
33645               AM2(1,2)=XMF*(ATR+XMU*TANB)
33646             ENDIF
33647           ENDIF
33648         ENDIF
33649         AM2(2,1)=AM2(1,2)
33650         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
33651         IF(DETM.LT.0D0) THEN
33652           WRITE(MSTU(11),*) ID2(L),DETM,AM2
33653           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
33654         ENDIF
33655         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
33656         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
33657         XMF12=SAME-DIFF
33658         XMF22=SAME+DIFF
33659         IT=0
33660         IF(XMF22-XMF12.GT.0D0) THEN
33661           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
33662           RT(2,2) = RT(1,1)
33663           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
33664      &    AM2(1,2)/(XMF22-XMF12))
33665           RT(2,1) = -RT(1,2)
33666         ELSE
33667           RT(1,1) = 1D0
33668           RT(2,2) = RT(1,1)
33669           RT(1,2) = 0D0
33670           RT(2,1) = -RT(1,2)
33671         ENDIF
33672   100   CONTINUE
33673         IT=IT+1
33674  
33675         DO 140 I=1,2
33676           DO 130 JJ=1,2
33677             DI(I,JJ)=0D0
33678             DO 120 II=1,2
33679               DO 110 J=1,2
33680                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
33681   110         CONTINUE
33682   120       CONTINUE
33683   130     CONTINUE
33684   140   CONTINUE
33685  
33686         IF(DI(1,1).GT.DI(2,2)) THEN
33687           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
33688           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
33689           WRITE(MSTU(11),*) AM2
33690           WRITE(MSTU(11),*) DI
33691           WRITE(MSTU(11),*) RT
33692           DI(1,1)=-RT(2,1)
33693           DI(2,2)=RT(1,2)
33694           DI(1,2)=-RT(2,2)
33695           DI(2,1)=RT(1,1)
33696           DO 160 I=1,2
33697             DO 150 J=1,2
33698               RT(I,J)=DI(I,J)
33699   150       CONTINUE
33700   160     CONTINUE
33701           GOTO 100
33702         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
33703           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
33704      &    ' OFF DIAGONAL ELEMENTS '
33705           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
33706           WRITE(MSTU(11),*) DI
33707           WRITE(MSTU(11),*) ' ROTATION = ',RT
33708 C...STOP
33709         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
33710           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
33711      &    ' NEGATIVE MASSES '
33712           STOP
33713         ENDIF
33714         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
33715         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
33716         SFMIX(IF,1)=RT(1,1)
33717         SFMIX(IF,2)=RT(1,2)
33718         SFMIX(IF,3)=RT(2,1)
33719         SFMIX(IF,4)=RT(2,2)
33720   170 CONTINUE
33721  
33722 C.....TAU SNEUTRINO MASS...L=3
33723  
33724       XARG=AM2(1,1)+XMW2*COS2B
33725       IF(XARG.LT.0D0) THEN
33726         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
33727      &  ' FROM THE SUM RULE. '
33728         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
33729         RETURN
33730       ELSE
33731         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
33732       ENDIF
33733  
33734       RETURN
33735       END
33736  
33737 C*********************************************************************
33738  
33739 C...PYINOM
33740 C...Finds the mass eigenstates and mixing matrices for neutralinos
33741 C...and charginos.
33742  
33743       SUBROUTINE PYINOM
33744  
33745 C...Double precision and integer declarations.
33746       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33747       IMPLICIT INTEGER(I-N)
33748       INTEGER PYCOMP
33749 C...Parameter statement to help give large particle numbers.
33750       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33751      &KEXCIT=4000000,KDIMEN=5000000)
33752 C...Commonblocks.
33753       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33754       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33755       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33756       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33757      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33758       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
33759  
33760 C...Local variables.
33761       DOUBLE PRECISION XMW,XMZ,XM(4)
33762       DOUBLE PRECISION AR(4,4),WR(4),ZR(4,4),ZI(4,4),AI(4,4)
33763       DOUBLE PRECISION WI(4),FV1(4),FV2(4),FV3(4)
33764       DOUBLE PRECISION COSW,SINW
33765       DOUBLE PRECISION XMU
33766       DOUBLE PRECISION TANB,COSB,SINB
33767       DOUBLE PRECISION XM1,XM2,XM3,BETA
33768       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
33769       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
33770       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
33771       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
33772       DOUBLE PRECISION PYALPS,PYALEM
33773       DOUBLE PRECISION PYRNM3
33774       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
33775       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
33776       DATA KFNCHI/1000022,1000023,1000025,1000035/
33777  
33778       IOPT=IMSS(2)
33779       IF(IMSS(1).EQ.2) THEN
33780         IOPT=1
33781       ENDIF
33782 C...M1, M2, AND M3 ARE INDEPENDENT
33783       IF(IOPT.EQ.0) THEN
33784         XM1=RMSS(1)
33785         XM2=RMSS(2)
33786         XM3=RMSS(3)
33787       ELSEIF(IOPT.GE.1) THEN
33788         Q2=PMAS(23,1)**2
33789         AEM=PYALEM(Q2)
33790         A2=AEM/PARU(102)
33791         A1=AEM/(1D0-PARU(102))
33792         XM1=RMSS(1)
33793         XM2=RMSS(2)
33794         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
33795         IF(IOPT.EQ.1) THEN
33796           XM2=XM1*A2/A1*3D0/5D0
33797           RMSS(2)=XM2
33798         ELSEIF(IOPT.EQ.3) THEN
33799           XM1=XM2*5D0/3D0*A1/A2
33800           RMSS(1)=XM1
33801         ENDIF
33802         XM3=PYRNM3(XM2/A2)
33803         RMSS(3)=XM3
33804         IF(XM3.LE.0D0) THEN
33805           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
33806           STOP
33807         ENDIF
33808       ENDIF
33809  
33810 C...GLUINO MASS
33811       IF(IMSS(3).EQ.1) THEN
33812         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
33813       ELSE
33814         AQ=0D0
33815         DO 110 I=1,4
33816           DO 100 ILR=1,2
33817             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
33818             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
33819      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
33820   100     CONTINUE
33821   110   CONTINUE
33822  
33823         DO 130 I=5,6
33824           DO 120 ILR=1,2
33825             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
33826             RM2=PMAS(I,1)**2/XM3**2
33827             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
33828             IF(ARG.GE.0D0) THEN
33829               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
33830               AX0=ABS(X0)
33831               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
33832               AX1=ABS(X1)
33833               IF(X0.EQ.1D0) THEN
33834                 AT=-1D0
33835                 BT=0.25D0
33836               ELSEIF(X0.EQ.0D0) THEN
33837                 AT=0D0
33838                 BT=-0.25D0
33839               ELSE
33840                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
33841      &          0.5D0*X0**2*LOG(AX0)
33842                 BT=(-1D0-2D0*X0)/4D0
33843               ENDIF
33844               IF(X1.EQ.1D0) THEN
33845                 AT=-1D0+AT
33846                 BT=0.25D0+BT
33847               ELSEIF(X1.EQ.0D0) THEN
33848                 AT=0D0+AT
33849                 BT=-0.25D0+BT
33850               ELSE
33851                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
33852      &          X1**2*LOG(AX1)+AT
33853                 BT=(-1D0-2D0*X1)/4D0+BT
33854               ENDIF
33855               AQ=AQ+AT+BT
33856             ELSE
33857               X0=0.5D0*(1D0+RM2-RM1)
33858               Y0=-0.5D0*SQRT(-ARG)
33859               AMGX0=SQRT(X0**2+Y0**2)
33860               AM1X0=SQRT((1D0-X0)**2+Y0**2)
33861               ARGX0=ATAN2(-X0,-Y0)
33862               AR1X0=ATAN2(1D0-X0,Y0)
33863               X1=X0
33864               Y1=-Y0
33865               AMGX1=AMGX0
33866               AM1X1=AM1X0
33867               ARGX1=ATAN2(-X1,-Y1)
33868               AR1X1=ATAN2(1D0-X1,Y1)
33869               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
33870      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
33871               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
33872               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
33873      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
33874               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
33875               AQ=AQ+AT+BT
33876             ENDIF
33877   120     CONTINUE
33878   130   CONTINUE
33879         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
33880      &  /(2D0*PARU(2))*(15D0+AQ))
33881       ENDIF
33882  
33883 C...NEUTRALINO MASSES
33884       DO 150 I=1,4
33885         DO 140 J=1,4
33886           AI(I,J)=0D0
33887   140   CONTINUE
33888   150 CONTINUE
33889       XMZ=PMAS(23,1)
33890       XMW=PMAS(24,1)
33891       XMU=RMSS(4)
33892       SINW=SQRT(PARU(102))
33893       COSW=SQRT(1D0-PARU(102))
33894       TANB=RMSS(5)
33895       BETA=ATAN(TANB)
33896       COSB=COS(BETA)
33897       SINB=TANB*COSB
33898  
33899 C... Definitions:
33900 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
33901 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
33902       AR(1,1) = XM1*COS(RMSS(30))
33903       AI(1,1) = XM1*SIN(RMSS(30))
33904       AR(2,2) = XM2*COS(RMSS(31))
33905       AI(2,2) = XM2*SIN(RMSS(31))
33906       AR(3,3) = 0D0
33907       AR(4,4) = 0D0
33908       AR(1,2) = 0D0
33909       AR(2,1) = 0D0
33910       AR(1,3) = -XMZ*SINW*COSB
33911       AR(3,1) = AR(1,3)
33912       AR(1,4) = XMZ*SINW*SINB
33913       AR(4,1) = AR(1,4)
33914       AR(2,3) = XMZ*COSW*COSB
33915       AR(3,2) = AR(2,3)
33916       AR(2,4) = -XMZ*COSW*SINB
33917       AR(4,2) = AR(2,4)
33918       AR(3,4) = -XMU*COS(RMSS(33))
33919       AI(3,4) = -XMU*SIN(RMSS(33))
33920       AR(4,3) = -XMU*COS(RMSS(33))
33921       AI(4,3) = -XMU*SIN(RMSS(33))
33922 C      CALL PYEIG4(AR,WR,ZR)
33923       CALL PYEICG(4,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
33924       IF(IERR.NE.0) THEN
33925        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
33926       ENDIF
33927       DO 160 I=1,4
33928         INDEX(I)=I
33929         XM(I)=ABS(WR(I))
33930   160 CONTINUE
33931       DO 180 I=2,4
33932         K=I
33933         DO 170 J=I-1,1,-1
33934           IF(XM(K).LT.XM(J)) THEN
33935             ITMP=INDEX(J)
33936             XTMP=XM(J)
33937             INDEX(J)=INDEX(K)
33938             XM(J)=XM(K)
33939             INDEX(K)=ITMP
33940             XM(K)=XTMP
33941             K=K-1
33942           ELSE
33943             GOTO 180
33944           ENDIF
33945   170   CONTINUE
33946   180 CONTINUE
33947  
33948  
33949       DO 210 I=1,4
33950         K=INDEX(I)
33951         SMZ(I)=WR(K)
33952         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
33953         S=0D0
33954         DO 190 J=1,4
33955           S=S+ZR(J,K)**2+ZI(J,K)**2
33956   190   CONTINUE
33957         DO 200 J=1,4
33958           ZMIX(I,J)=ZR(J,K)/SQRT(S)
33959           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
33960           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
33961           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
33962   200   CONTINUE
33963   210 CONTINUE
33964  
33965 C...CHARGINO MASSES
33966 C.....Find eigenvectors of X X^*
33967       AI(1,1) = 0D0
33968       AI(2,2) = 0D0
33969       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
33970       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
33971       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
33972      &XMU*COS(RMSS(33))*SINB)
33973       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
33974      &XMU*SIN(RMSS(33))*SINB)
33975       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
33976      &XMU*COS(RMSS(33))*SINB)
33977       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
33978      &XMU*SIN(RMSS(33))*SINB)
33979       CALL PYEICG(4,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
33980       IF(IERR.NE.0) THEN
33981        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
33982       ENDIF
33983       INDEX(1)=1
33984       INDEX(2)=2
33985       IF(WR(2).LT.WR(1)) THEN
33986         INDEX(1)=2
33987         INDEX(2)=1
33988       ENDIF
33989  
33990       DO 240 I=1,2
33991         K=INDEX(I)
33992         SMW(I)=SQRT(WR(K))
33993         S=0D0
33994         DO 220 J=1,2
33995           S=S+ZR(J,K)**2+ZI(J,K)**2
33996   220   CONTINUE
33997         DO 230 J=1,2
33998           UMIX(I,J)=ZR(J,K)/SQRT(S)
33999           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
34000           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
34001           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
34002   230   CONTINUE
34003   240 CONTINUE
34004       IF(ABS(SMW(1)).LT.ABS(SMZ(1))) THEN
34005        SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
34006       ENDIF
34007       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
34008       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
34009  
34010 C.....Find eigenvectors of X^* X
34011       AI(1,1) = 0D0
34012       AI(2,2) = 0D0
34013       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
34014       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
34015       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
34016      &XMU*COS(RMSS(33))*COSB)
34017       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
34018      &XMU*SIN(RMSS(33))*COSB)
34019       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
34020      &XMU*COS(RMSS(33))*COSB)
34021       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
34022      &XMU*SIN(RMSS(33))*COSB)
34023       CALL PYEICG(4,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
34024       IF(IERR.NE.0) THEN
34025        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
34026       ENDIF
34027       INDEX(1)=1
34028       INDEX(2)=2
34029       IF(WR(2).LT.WR(1)) THEN
34030         INDEX(1)=2
34031         INDEX(2)=1
34032       ENDIF
34033  
34034       DO 270 I=1,2
34035         K=INDEX(I)
34036         S=0D0
34037         DO 250 J=1,2
34038           S=S+ZR(J,K)**2+ZI(J,K)**2
34039   250   CONTINUE
34040         DO 260 J=1,2
34041           VMIX(I,J)=ZR(J,K)/SQRT(S)
34042           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
34043           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
34044           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
34045   260   CONTINUE
34046   270 CONTINUE
34047  
34048  
34049       RETURN
34050       END
34051  
34052 C*********************************************************************
34053  
34054 C...PYRNM3
34055 C...Calculates the running of M3, the SU(3) gluino mass parameter.
34056  
34057       FUNCTION PYRNM3(RGUT)
34058  
34059 C...Double precision and integer declarations.
34060       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34061       IMPLICIT INTEGER(I-N)
34062       INTEGER PYK,PYCHGE,PYCOMP
34063  
34064 C...Local variables.
34065       DOUBLE PRECISION R
34066       DOUBLE PRECISION TOL
34067       EXTERNAL PYALPS
34068       DOUBLE PRECISION PYALPS
34069       DATA TOL/0.001D0/
34070       DATA R/0.61803399D0/
34071  
34072       C=1D0-R
34073  
34074       BX=RGUT*PYALPS(RGUT**2)
34075       AX=MIN(50D0,BX*0.5D0)
34076       CX=MAX(2000D0,2D0*BX)
34077  
34078       X0=AX
34079       X3=CX
34080       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
34081         X1=BX
34082         X2=BX+C*(CX-BX)
34083       ELSE
34084         X2=BX
34085         X1=BX-C*(BX-AX)
34086       ENDIF
34087       AS1=PYALPS(X1**2)
34088       F1=ABS(X1-RGUT*AS1)
34089       AS2=PYALPS(X2**2)
34090       F2=ABS(X2-RGUT*AS2)
34091   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
34092         IF(F2.LT.F1) THEN
34093           X0=X1
34094           X1=X2
34095           X2=R*X1+C*X3
34096           F1=F2
34097           AS2=PYALPS(X2**2)
34098           F2=ABS(X2-RGUT*AS2)
34099         ELSE
34100           X3=X2
34101           X2=X1
34102           X1=R*X2+C*X0
34103           F2=F1
34104           AS1=PYALPS(X1**2)
34105           F1=ABS(X1-RGUT*AS1)
34106         ENDIF
34107         GOTO 100
34108       ENDIF
34109       IF(F1.LT.F2) THEN
34110         PYRNM3=X1
34111         XMIN=X1
34112       ELSE
34113         PYRNM3=X2
34114         XMIN=X2
34115       ENDIF
34116  
34117       RETURN
34118       END
34119  
34120 C*********************************************************************
34121  
34122 C...PYEIG4
34123 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
34124 C...Specific application: mixing in neutralino sector.
34125  
34126       SUBROUTINE PYEIG4(A,W,Z)
34127  
34128 C...Double precision and integer declarations.
34129       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34130       IMPLICIT INTEGER(I-N)
34131       INTEGER PYK,PYCHGE,PYCOMP
34132  
34133 C...Arrays: in call and local.
34134       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
34135  
34136 C...Coefficients of fourth-degree equation from matrix.
34137 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
34138       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
34139       B2=0D0
34140       DO 110 I=1,3
34141         DO 100 J=I+1,4
34142           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
34143   100   CONTINUE
34144   110 CONTINUE
34145       B1=0D0
34146       B0=0D0
34147       DO 120 I=1,4
34148         I1=MOD(I,4)+1
34149         I2=MOD(I+1,4)+1
34150         I3=MOD(I+2,4)+1
34151         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
34152      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
34153      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
34154         B0=B0+(-1D0)**(I+1)*A(1,I)*(
34155      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
34156      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
34157      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
34158   120 CONTINUE
34159  
34160 C...Coefficients of third-degree equation needed for
34161 C...separation into two second-degree equations.
34162 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
34163       C2=-B2
34164       C1=B1*B3-4D0*B0
34165       C0=-B1**2-B0*B3**2+4D0*B0*B2
34166       CQ=C1/3D0-C2**2/9D0
34167       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
34168       CQR=CQ**3+CR**2
34169  
34170 C...Cases with one or three real roots.
34171       IF(CQR.GE.0D0) THEN
34172         S1=(CR+SQRT(CQR))**(1D0/3D0)
34173         S2=(CR-SQRT(CQR))**(1D0/3D0)
34174         U=S1+S2-C2/3D0
34175       ELSE
34176         SABS=SQRT(-CQ)
34177         THE=ACOS(CR/SABS**3)/3D0
34178         SRE=SABS*COS(THE)
34179         U=2D0*SRE-C2/3D0
34180       ENDIF
34181  
34182 C...Find and solve two second-degree equations.
34183       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
34184       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
34185       Q1=U/2D0+SQRT(U**2/4D0-B0)
34186       Q2=U/2D0-SQRT(U**2/4D0-B0)
34187       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
34188         QSAV=Q1
34189         Q1=Q2
34190         Q2=QSAV
34191       ENDIF
34192       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
34193       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
34194       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
34195       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
34196  
34197 C...Order eigenvalues in asceding mass.
34198       W(1)=X(1)
34199       DO 150 I1=2,4
34200         DO 130 I2=I1-1,1,-1
34201           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
34202           W(I2+1)=W(I2)
34203   130   CONTINUE
34204   140   W(I2+1)=X(I1)
34205   150 CONTINUE
34206  
34207 C...Find equation system for eigenvectors.
34208       DO 250 I=1,4
34209         DO 170 J1=1,4
34210           D(J1,J1)=A(J1,J1)-W(I)
34211           DO 160 J2=J1+1,4
34212             D(J1,J2)=A(J1,J2)
34213             D(J2,J1)=A(J2,J1)
34214   160     CONTINUE
34215   170   CONTINUE
34216  
34217 C...Find largest element in matrix.
34218         DAMAX=0D0
34219         DO 190 J1=1,4
34220           DO 180 J2=1,4
34221             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
34222             JA=J1
34223             JB=J2
34224             DAMAX=ABS(D(J1,J2))
34225   180     CONTINUE
34226   190   CONTINUE
34227  
34228 C...Subtract others by multiple of row selected above.
34229         DAMAX=0D0
34230         DO 210 J3=JA+1,JA+3
34231           J1=J3-4*((J3-1)/4)
34232           RL=D(J1,JB)/D(JA,JB)
34233           DO 200 J2=1,4
34234             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
34235             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
34236             JC=J1
34237             JD=J2
34238             DAMAX=ABS(D(J1,J2))
34239   200     CONTINUE
34240   210   CONTINUE
34241  
34242 C...Do one more subtraction of a row.
34243         DAMAX=0D0
34244         DO 230 J3=JC+1,JC+3
34245           J1=J3-4*((J3-1)/4)
34246           IF(J1.EQ.JA) GOTO 230
34247           RL=D(J1,JD)/D(JC,JD)
34248           DO 220 J2=1,4
34249             IF(J2.EQ.JB) GOTO 220
34250             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
34251             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
34252             JE=J1
34253             DAMAX=ABS(D(J1,J2))
34254   220     CONTINUE
34255   230   CONTINUE
34256  
34257 C...Construct unnormalized eigenvector.
34258         JF1=JD+1-4*(JD/4)
34259         JF2=JD+2-4*((JD+1)/4)
34260         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
34261         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
34262         E(JF1)=-D(JE,JF2)
34263         E(JF2)=D(JE,JF1)
34264         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
34265         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
34266      &  D(JA,JB)
34267  
34268 C...Normalize and fill in final array.
34269         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
34270         SGN=(-1D0)**INT(PYR(0)+0.5D0)
34271         DO 240 J=1,4
34272           Z(I,J)=SGN*E(J)/EA
34273   240   CONTINUE
34274   250 CONTINUE
34275  
34276       RETURN
34277       END
34278  
34279 C*********************************************************************
34280  
34281 C...PYHGGM
34282 C...Determines the Higgs boson mass spectrum using several inputs.
34283  
34284       SUBROUTINE PYHGGM(ALPHA)
34285  
34286 C...Double precision and integer declarations.
34287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34288       IMPLICIT INTEGER(I-N)
34289       INTEGER PYK,PYCHGE,PYCOMP
34290 C...Parameter statement to help give large particle numbers.
34291       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34292      &KEXCIT=4000000,KDIMEN=5000000)
34293 C...Commonblocks.
34294       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34295       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34296       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
34297       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
34298       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
34299  
34300 C...Local variables.
34301       DOUBLE PRECISION AT,AB,XMU,TANB
34302       DOUBLE PRECISION ALPHA
34303       INTEGER IHOPT
34304       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
34305       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
34306       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
34307       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
34308  
34309       IHOPT=IMSS(4)
34310       IF(IHOPT.EQ.2) THEN
34311         ALPHA=RMSS(18)
34312         RETURN
34313       ENDIF
34314       AT=RMSS(16)
34315       AB=RMSS(15)
34316       DMGL=RMSS(3)
34317       XMU=RMSS(4)
34318       TANB=RMSS(5)
34319  
34320       DMA=RMSS(19)
34321       DTANB=TANB
34322       DMQ=RMSS(10)
34323       DMUR=RMSS(12)
34324       DMDR=RMSS(11)
34325       DMTOP=PMAS(6,1)
34326       DMC=PMAS(PYCOMP(KSUSY1+37),1)
34327       DAU=AT
34328       DAD=AB
34329       DMU=XMU
34330       RMSS(40)=0D0
34331       RMSS(41)=0D0
34332  
34333       IF(IHOPT.EQ.0) THEN
34334         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
34335      &  DMHCH,DSA,DCA,DTANBA)
34336       ELSEIF(IHOPT.EQ.1) THEN
34337         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
34338      &  DMHCH,DSA,DCA,DTANBA)
34339         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
34340      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
34341      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
34342         RMSS(40)=DDT
34343         RMSS(41)=DDB
34344         DMH=DMHP
34345         DHM=DHMP
34346         DMA=DAMP
34347         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
34348          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
34349          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
34350      & PMAS(PYCOMP(1000006),1),DSTOP2
34351         ENDIF
34352         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
34353          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
34354          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
34355      & PMAS(PYCOMP(2000006),1),DSTOP1
34356         ENDIF
34357         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
34358          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
34359          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
34360      & PMAS(PYCOMP(1000005),1),DSBOT2
34361         ENDIF
34362         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
34363          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
34364          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
34365      & PMAS(PYCOMP(2000005),1),DSBOT1
34366         ENDIF
34367  
34368       ENDIF
34369  
34370       ALPHA=ACOS(DCA)
34371  
34372       PMAS(25,1)=DMH
34373       PMAS(35,1)=DHM
34374       PMAS(36,1)=DMA
34375       PMAS(37,1)=DMHCH
34376  
34377       RETURN
34378       END
34379  
34380 C*********************************************************************
34381  
34382 C...PYSUBH
34383 C...This routine computes the renormalization group improved
34384 C...values of Higgs masses and couplings in the MSSM.
34385  
34386 C...Program based on the work by M. Carena, J.R. Espinosa,
34387 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
34388  
34389 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
34390 C...All masses in GeV units. MA is the CP-odd Higgs mass,
34391 C...MTOP is the physical top mass, MQ and MUR are the soft
34392 C...supersymmetry breaking mass parameters of left handed
34393 C...and right handed stops respectively, AU and AD are the
34394 C...stop and sbottom trilinear soft breaking terms,
34395 C...respectively,  and MU is the supersymmetric
34396 C...Higgs mass parameter. We use the  conventions from
34397 C...the physics report of Haber and Kane: left right
34398 C...stop mixing term proportional to (AU - MU/TANB)
34399 C...We use as input TANB defined at the scale MTOP
34400  
34401 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
34402 C...where MH and HM are the lightest and heaviest CP-even
34403 C...Higgs masses, MHCH is the charged Higgs mass and
34404 C...ALPHA is the Higgs mixing angle
34405 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
34406  
34407 C...Range of validity:
34408 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
34409 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
34410 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
34411 C...are the sbottom  mass eigenvalues, respectively. This
34412 C...range automatically excludes the existence of tachyons.
34413 C...For the charged Higgs mass computation, the method is
34414 C...valid if
34415 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
34416 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
34417 C...where M_SUSY**2 is the average of the squared stop mass
34418 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
34419 C...masses have been assumed to be of order of the stop ones
34420 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
34421  
34422       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
34423      &XMHCH,SA,CA,TANBA)
34424  
34425 C...Double precision and integer declarations.
34426       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34427       IMPLICIT INTEGER(I-N)
34428       INTEGER PYK,PYCHGE,PYCOMP
34429 C...Parameter statement to help give large particle numbers.
34430       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34431      &KEXCIT=4000000,KDIMEN=5000000)
34432 C...Commonblocks.
34433       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34434       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34435       COMMON/PYHTRI/HHH(7)
34436       SAVE /PYDAT1/,/PYDAT2/
34437  
34438 C...Local variables.
34439       DOUBLE PRECISION PYALEM,PYALPS
34440       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
34441       DOUBLE PRECISION XMHCH,SA,CA
34442       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
34443       DOUBLE PRECISION Q02
34444       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
34445       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
34446       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
34447       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
34448       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
34449       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
34450       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
34451       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
34452  
34453       XMZ = PMAS(23,1)
34454       Q02=XMZ**2
34455       AEM=PYALEM(Q02)
34456       ALP1=AEM/(1D0-PARU(102))
34457       ALP2=AEM/PARU(102)
34458       ALPH3Z=PYALPS(Q02)
34459  
34460       ALP1 = 0.0101D0
34461       ALP2 = 0.0337D0
34462       ALPH3Z = 0.12D0
34463  
34464       V = 174.1D0
34465       PI = PARU(1)
34466       TANBA = TANB
34467       TANBT = TANB
34468  
34469 C...MBOTTOM(MTOP) = 3. GEV
34470       XMB = PYMRUN(5,XMTOP**2)
34471       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
34472      &LOG(XMTOP**2/XMZ**2))
34473  
34474 C...RMTOP= RUNNING TOP QUARK MASS
34475       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
34476       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
34477       T = LOG(XMS**2/XMTOP**2)
34478       SINB = TANB/((1D0 + TANB**2)**0.5D0)
34479       COSB = SINB/TANB
34480 C...IF(MA.LE.XMTOP) TANBA = TANBT
34481       IF(XMA.GT.XMTOP)
34482      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
34483      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
34484      &LOG(XMA**2/XMTOP**2))
34485  
34486       SINBT = TANBT/SQRT(1D0 + TANBT**2)
34487       COSBT = 1D0/SQRT(1D0 + TANBT**2)
34488 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
34489       G1 = SQRT(ALP1*4D0*PI)
34490       G2 = SQRT(ALP2*4D0*PI)
34491       G3 = SQRT(ALP3*4D0*PI)
34492       HU = RMTOP/V/SINBT
34493       HD =  XMB/V/COSBT
34494       HU2=HU*HU
34495       HD2=HD*HD
34496       HU4=HU2*HU2
34497       HD4=HD2*HD2
34498       AU2=AU**2
34499       AD2=AD**2
34500       XMS2=XMS**2
34501       XMS3=XMS**3
34502       XMS4=XMS2*XMS2
34503       XMU2=XMU*XMU
34504       PI2=PI*PI
34505  
34506       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
34507       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
34508       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
34509      &+ 3D0*(AU + AD)**2/XMS2)/6D0
34510       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
34511      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
34512      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
34513      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
34514      &-  16D0*G3**2) *T/16D0/PI2)
34515       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
34516      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
34517      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
34518      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
34519      &-  16D0*G3**2) *T/16D0/PI2)
34520       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
34521      &(HU2 + HD2)*T/16D0/PI2)
34522      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
34523      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
34524      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
34525      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
34526      &-  16D0*G3**2) *T/16D0/PI2)
34527      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
34528      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
34529      &-  16D0*G3**2) *T/16D0/PI2)
34530       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
34531      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
34532      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
34533      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
34534      &XMS4)*
34535      &(1+ (6D0*HU2 -2D0* HD2
34536      &-  16D0*G3**2) *T/16D0/PI2)
34537      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
34538      &XMS4)*
34539      &(1+ (6D0*HD2 -2D0* HU2/2D0
34540      &-  16D0*G3**2) *T/16D0/PI2)
34541       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
34542      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
34543      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
34544      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
34545       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
34546      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34547      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
34548      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34549       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
34550      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34551      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
34552      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34553       HHH(1)=XLAM1
34554       HHH(2)=XLAM2
34555       HHH(3)=XLAM3
34556       HHH(4)=XLAM4
34557       HHH(5)=XLAM5
34558       HHH(6)=XLAM6
34559       HHH(7)=XLAM7
34560       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
34561      &2D0* XLAM6*SINBT*COSBT
34562      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
34563      &+ XLAM5*COSBT**2)
34564       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
34565      &XLAM6*COSBT**2
34566      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
34567      &2D0* XLAM6* COSBT*SINBT
34568      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34569      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
34570      &((XLAM1* COSBT**2 +2D0*
34571      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
34572      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
34573      &*SINBT**2
34574      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
34575      &+ XLAM4) + XLAM6*COSBT**2
34576      &+ XLAM7* SINBT**2))
34577  
34578       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
34579       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
34580       XHM = SQRT(XHM2)
34581       XMH = SQRT(XMH2)
34582       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
34583       XMHCH = SQRT(XMHCH2)
34584  
34585       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
34586      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
34587      &XLAM6* COSBT*SINBT
34588      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
34589      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34590      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
34591      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
34592  
34593       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
34594      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
34595      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
34596      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
34597      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
34598      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
34599      &XLAM6* COSBT*SINBT
34600      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
34601      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34602      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
34603  
34604       SA = -SINALP
34605       CA = -COSALP
34606  
34607   100 CONTINUE
34608  
34609       RETURN
34610       END
34611  
34612 C*********************************************************************
34613  
34614 C...PYPOLE
34615 C...This subroutine computes the CP-even higgs and CP-odd pole
34616 c...Higgs masses and mixing angles.
34617  
34618 C...Program based on the work by M. Carena, M. Quiros
34619 C...and C.E.M. Wagner, "Effective potential methods and
34620 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
34621  
34622 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
34623 C...AT,AB,MU
34624 C...where MCHI is the largest chargino mass, MA is the running
34625 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
34626 C...expectaion values at the scale MTOP, MQ is the third generation
34627 C...left handed squark mass parameter, MUR is the third generation
34628 C...right handed stop mass parameter, MDR is the third generation
34629 C...right handed sbottom mass parameter, MTOP is the pole top quark
34630 C...mass; AT,AB are the soft supersymmetry breaking trilinear
34631 C...couplings of the stop and sbottoms, respectively, and MU is the
34632 C...supersymmetric mass parameter
34633  
34634 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
34635 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
34636 C...masses are given, what makes the running of the program
34637 c...much faster and it is quite generally a good approximation
34638 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
34639 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
34640 c...and if IHIGGS=3, then h,H,A polarizations are computed
34641  
34642 C...Output: MH and MHP which are the lightest CP-even Higgs running
34643 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
34644 C...Higgs running and pole masses, repectively; SA and CA are the
34645 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
34646 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
34647 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
34648 C...the value of TANB at the CP-odd Higgs mass scale
34649  
34650 C...This subroutine makes use of CERN library subroutine
34651 C...integration package, which makes the computation of the
34652 C...pole Higgs masses somewhat faster. We thank P. Janot for this
34653 C...improvement. Those who are not able to call the CERN
34654 C...libraries, please use the subroutine SUBHPOLE2.F, which
34655 C...although somewhat slower, gives identical results
34656  
34657       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
34658      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
34659  
34660 C...Double precision and integer declarations.
34661       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34662       IMPLICIT INTEGER(I-N)
34663  
34664 C...Parameters.
34665       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34666       SAVE /PYDAT1/
34667       INTEGER PYK,PYCHGE,PYCOMP
34668  
34669 C...Local variables.
34670       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
34671      &SSBOT2(2),B(2,2),COUPB(2,2),
34672      &HCOUPT(2,2),HCOUPB(2,2),
34673      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
34674  
34675       DELTA(1,1) = 1D0
34676       DELTA(2,2) = 1D0
34677       DELTA(1,2) = 0D0
34678       DELTA(2,1) = 0D0
34679       V = 174.1D0
34680       XMZ=91.18D0
34681       PI=PARU(1)
34682       RXMT=PYMRUN(6,XMT**2)
34683       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
34684      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
34685  
34686       SINB = TANB/(TANB**2+1D0)**0.5D0
34687       COSB = 1D0/(TANB**2+1D0)**0.5D0
34688       COS2B = SINB**2 - COSB**2
34689       SINBPA = SINB*CA + COSB*SA
34690       COSBPA = COSB*CA - SINB*SA
34691       RMBOT = PYMRUN(5,XMT**2)
34692       XMQ2 = XMQ**2
34693       XMUR2 = XMUR**2
34694       IF(XMUR.LT.0D0) XMUR2=-XMUR2
34695       XMDR2 = XMDR**2
34696       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
34697       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
34698       IF(XMST11.LT.0D0) GOTO 500
34699       IF(XMST22.LT.0D0) GOTO 500
34700       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
34701       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
34702       IF(XMSB11.LT.0D0) GOTO 500
34703       IF(XMSB22.LT.0D0) GOTO 500
34704 C      WMST11 = RXMT**2 + XMQ2
34705 C      WMST22 = RXMT**2 + XMUR2
34706       XMST12 = RXMT*(AT - XMU/TANB)
34707       XMSB12 = RMBOT*(AB - XMU*TANB)
34708  
34709 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34710 C...STOP EIGENVALUES CALCULATION
34711 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34712  
34713       STOP12 = 0.5D0*(XMST11+XMST22) +
34714      &0.5D0*((XMST11+XMST22)**2 -
34715      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
34716       STOP22 = 0.5D0*(XMST11+XMST22) -
34717      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
34718      &XMST12**2))**0.5D0
34719  
34720       IF(STOP22.LT.0D0) GOTO 500
34721       SSTOP2(1) = STOP12
34722       SSTOP2(2) = STOP22
34723       STOP1 = STOP12**0.5D0
34724       STOP2 = STOP22**0.5D0
34725 C      STOP1W = STOP1
34726 C      STOP2W = STOP2
34727  
34728       IF(XMST12.EQ.0D0) XST11 = 1D0
34729       IF(XMST12.EQ.0D0) XST12 = 0D0
34730       IF(XMST12.EQ.0D0) XST21 = 0D0
34731       IF(XMST12.EQ.0D0) XST22 = 1D0
34732  
34733       IF(XMST12.EQ.0D0) GOTO 110
34734  
34735   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
34736       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
34737       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
34738       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
34739  
34740   110 T(1,1) = XST11
34741       T(2,2) = XST22
34742       T(1,2) = XST12
34743       T(2,1) = XST21
34744  
34745       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
34746      &0.5D0*((XMSB11+XMSB22)**2 -
34747      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
34748       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
34749      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
34750      &XMSB12**2))**0.5D0
34751       IF(SBOT22.LT.0D0) GOTO 500
34752       SBOT1 = SBOT12**0.5D0
34753       SBOT2 = SBOT22**0.5D0
34754  
34755       SSBOT2(1) = SBOT12
34756       SSBOT2(2) = SBOT22
34757  
34758       IF(XMSB12.EQ.0D0) XSB11 = 1D0
34759       IF(XMSB12.EQ.0D0) XSB12 = 0D0
34760       IF(XMSB12.EQ.0D0) XSB21 = 0D0
34761       IF(XMSB12.EQ.0D0) XSB22 = 1D0
34762  
34763       IF(XMSB12.EQ.0D0) GOTO 130
34764  
34765   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
34766       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
34767       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
34768       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
34769  
34770   130 B(1,1) = XSB11
34771       B(2,2) = XSB22
34772       B(1,2) = XSB12
34773       B(2,1) = XSB21
34774  
34775  
34776       SINT = 0.2320D0
34777       SQR = DSQRT(2D0)
34778       VP = 174.1D0*SQR
34779  
34780 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34781 C...STARTING OF LIGHT HIGGS
34782 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34783  
34784       IF(IHIGGS.EQ.0) GOTO 490
34785  
34786       DO 150 I = 1,2
34787         DO 140 J = 1,2
34788           COUPT(I,J) =
34789      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
34790      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
34791      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
34792      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
34793      &    T(1,J)*T(2,I))
34794   140   CONTINUE
34795   150 CONTINUE
34796  
34797  
34798       DO 170 I = 1,2
34799         DO 160 J = 1,2
34800           COUPB(I,J) =
34801      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
34802      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
34803      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
34804      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
34805      &    B(1,J)*B(2,I))
34806   160   CONTINUE
34807   170 CONTINUE
34808  
34809       PRUN = XMH
34810       EPS = 1D-4*PRUN
34811       ITER = 0
34812   180 ITER = ITER + 1
34813       DO 230  I3 = 1,3
34814  
34815         PR(I3)=PRUN+(I3-2)*EPS/2
34816         P2=PR(I3)**2
34817         POLT = 0D0
34818         DO 200 I = 1,2
34819           DO 190 J = 1,2
34820             POLT = POLT + COUPT(I,J)**2*3D0*
34821      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34822   190     CONTINUE
34823   200   CONTINUE
34824  
34825         POLB = 0D0
34826         DO 220 I = 1,2
34827           DO 210 J = 1,2
34828             POLB = POLB + COUPB(I,J)**2*3D0*
34829      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34830   210     CONTINUE
34831   220   CONTINUE
34832 C        RXMT2 = RXMT**2
34833         XMT2=XMT**2
34834  
34835         POLTT =
34836      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34837      &  CA**2/SINB**2 *
34838      &  (-2D0*XMT**2+0.5D0*P2)*
34839      &  PYFINT(P2,XMT2,XMT2)
34840  
34841         POL = POLT + POLB + POLTT
34842         POLAR(I3) = P2 - XMH**2 - POL
34843   230 CONTINUE
34844       DERIV = (POLAR(3)-POLAR(1))/EPS
34845       DRUN = - POLAR(2)/DERIV
34846       PRUN = PRUN + DRUN
34847       P2 = PRUN**2
34848       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
34849       GOTO 180
34850   240 CONTINUE
34851  
34852       XMHP = DSQRT(P2)
34853  
34854 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34855 C...END OF LIGHT HIGGS
34856 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34857  
34858   250 IF(IHIGGS.EQ.1) GOTO 490
34859  
34860 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34861 C... STARTING OF HEAVY HIGGS
34862 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34863  
34864       DO 270 I = 1,2
34865         DO 260 J = 1,2
34866           HCOUPT(I,J) =
34867      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
34868      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
34869      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
34870      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
34871      &    T(1,J)*T(2,I))
34872   260   CONTINUE
34873   270 CONTINUE
34874  
34875       DO 290 I = 1,2
34876         DO 280 J = 1,2
34877           HCOUPB(I,J) =
34878      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
34879      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
34880      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
34881      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
34882      &    B(1,J)*B(2,I))
34883           HCOUPB(I,J)=0D0
34884   280   CONTINUE
34885   290 CONTINUE
34886  
34887       PRUN = HM
34888       EPS = 1D-4*PRUN
34889       ITER = 0
34890   300 ITER = ITER + 1
34891       DO 350 I3 = 1,3
34892         PR(I3)=PRUN+(I3-2)*EPS/2
34893         HP2=PR(I3)**2
34894  
34895         HPOLT = 0D0
34896         DO 320 I = 1,2
34897           DO 310 J = 1,2
34898             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
34899      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34900   310     CONTINUE
34901   320   CONTINUE
34902  
34903         HPOLB = 0D0
34904         DO 340 I = 1,2
34905           DO 330 J = 1,2
34906             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
34907      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34908   330     CONTINUE
34909   340   CONTINUE
34910  
34911 C        RXMT2 = RXMT**2
34912         XMT2  = XMT**2
34913  
34914         HPOLTT =
34915      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34916      &  SA**2/SINB**2 *
34917      &  (-2D0*XMT**2+0.5D0*HP2)*
34918      &  PYFINT(HP2,XMT2,XMT2)
34919  
34920         HPOL = HPOLT + HPOLB + HPOLTT
34921         POLAR(I3) =HP2-HM**2-HPOL
34922   350 CONTINUE
34923       DERIV = (POLAR(3)-POLAR(1))/EPS
34924       DRUN = - POLAR(2)/DERIV
34925       PRUN = PRUN + DRUN
34926       HP2 = PRUN**2
34927       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
34928       GOTO 300
34929   360 CONTINUE
34930  
34931  
34932   370 CONTINUE
34933       HMP = HP2**0.5D0
34934  
34935 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34936 C... END OF HEAVY HIGGS
34937 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34938  
34939       IF(IHIGGS.EQ.2) GOTO 490
34940  
34941 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34942 C...BEGINNING OF PSEUDOSCALAR HIGGS
34943 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34944  
34945       DO 390 I = 1,2
34946         DO 380 J = 1,2
34947           ACOUPT(I,J) =
34948      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
34949      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
34950   380   CONTINUE
34951   390 CONTINUE
34952       DO 410 I = 1,2
34953         DO 400 J = 1,2
34954           ACOUPB(I,J) =
34955      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
34956      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
34957   400   CONTINUE
34958   410 CONTINUE
34959  
34960       PRUN = XMA
34961       EPS = 1D-4*PRUN
34962       ITER = 0
34963   420 ITER = ITER + 1
34964       DO 470 I3 = 1,3
34965         PR(I3)=PRUN+(I3-2)*EPS/2
34966         AP2=PR(I3)**2
34967         APOLT = 0D0
34968         DO 440 I = 1,2
34969           DO 430 J = 1,2
34970             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
34971      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34972   430     CONTINUE
34973   440   CONTINUE
34974         APOLB = 0D0
34975         DO 460 I = 1,2
34976           DO 450 J = 1,2
34977             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
34978      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34979   450     CONTINUE
34980   460   CONTINUE
34981 C        RXMT2 = RXMT**2
34982         XMT2=XMT**2
34983         APOLTT =
34984      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34985      &  COSB**2/SINB**2 *
34986      &  (-0.5D0*AP2)*
34987      &  PYFINT(AP2,XMT2,XMT2)
34988         APOL = APOLT + APOLB + APOLTT
34989         POLAR(I3) = AP2 - XMA**2 -APOL
34990   470 CONTINUE
34991       DERIV = (POLAR(3)-POLAR(1))/EPS
34992       DRUN = - POLAR(2)/DERIV
34993       PRUN = PRUN + DRUN
34994       AP2 = PRUN**2
34995       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
34996       GOTO 420
34997   480 CONTINUE
34998  
34999       AMP = DSQRT(AP2)
35000  
35001 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35002 C...END OF PSEUDOSCALAR HIGGS
35003 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35004  
35005       IF(IHIGGS.EQ.3) GOTO 490
35006  
35007   490 CONTINUE
35008       RETURN
35009   500 CONTINUE
35010       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
35011       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
35012       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
35013       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
35014       STOP
35015       END
35016  
35017 C*********************************************************************
35018  
35019 C...PYRGHM
35020 C...Auxiliary to PYPOLE.
35021  
35022       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
35023      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
35024       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
35025       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
35026 C...Parameters.
35027       INTEGER MSTU,MSTJ
35028       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35029       SAVE /PYDAT1/
35030  
35031       MZ = 91.18D0
35032       PI = PARU(1)
35033       V  = 174.1D0
35034       ALPHA1 = 0.0101D0
35035       ALPHA2 = 0.0337D0
35036       ALPHA3Z = 0.12D0
35037       TANBA = TANB
35038       TANBT = TANB
35039 C     MBOTTOM(MTOP) = 3. GEV
35040       MB = PYMRUN(5,MTOP**2)
35041       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
35042      *LOG(MTOP**2/MZ**2))
35043 C     RMTOP= RUNNING TOP QUARK MASS
35044       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
35045       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
35046       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
35047       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
35048 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35049 C
35050 C    NEW DEFINITION, TGLU.
35051 C
35052 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35053       TGLU = LOG(MGLU**2/MTOP**2)
35054       SINB = TANB/DSQRT(1D0 + TANB**2)
35055       COSB = SINB/TANB
35056       IF(MA.GT.MTOP)
35057      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
35058      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
35059      *LOG(MA**2/MTOP**2))
35060       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
35061       SINB = TANBT/SQRT(1D0 + TANBT**2)
35062       COSB = 1D0/DSQRT(1D0 + TANBT**2)
35063       G1 = SQRT(ALPHA1*4D0*PI)
35064       G2 = SQRT(ALPHA2*4D0*PI)
35065       G3 = SQRT(ALPHA3*4D0*PI)
35066       HU = RMTOP/V/SINB
35067       HD =  MB/V/COSB
35068       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
35069      *SBOT1,SBOT2,DELTAMT,DELTAMB)
35070       IF(MQ.GT.MUR) TP = TQ - TU
35071       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
35072       IF(MQ.GT.MUR) TDP = TU
35073       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
35074       IF(MQ.GT.MD) TPD = TQ - TD
35075       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
35076       IF(MQ.GT.MD) TDPD = TD
35077       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
35078  
35079       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
35080       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
35081      * HD**2*(G1**2/3D0+G2**2)*TPD
35082  
35083       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
35084       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
35085      * HU**2*(-G1**2/3D0+G2**2)*TP
35086  
35087 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35088 C
35089 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
35090 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
35091 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
35092 C  TWO STOPS.
35093 C
35094 C
35095 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35096  
35097       DLAMBDAP2 = 0D0
35098       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
35099        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
35100         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
35101        ENDIF
35102  
35103        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
35104         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
35105        ENDIF
35106  
35107        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
35108         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
35109        ENDIF
35110  
35111        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
35112         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
35113        ENDIF
35114  
35115        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
35116         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
35117        ENDIF
35118  
35119        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
35120         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
35121        ENDIF
35122       ENDIF
35123       DLAMBDA3 = 0D0
35124       DLAMBDA4 = 0D0
35125       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
35126       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
35127      *(G2**2-G1**2/3D0)*TPD
35128       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
35129      *1D0/16D0/PI**2*G1**2*HU**2*TP
35130       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
35131      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
35132       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
35133       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
35134      *HD**2*TPD
35135       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
35136      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
35137      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
35138      *+ (3D0*HD**2/2D0 + HU**2/2D0
35139      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
35140      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
35141      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
35142       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
35143      *(TP + TDP)/8D0/PI**2)
35144      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
35145      *+ (3D0*HU**2/2D0 + HD**2/2D0
35146      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
35147      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
35148      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
35149       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
35150      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
35151      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
35152       LAMBDA4 = (- G2**2/2D0)*(1D0
35153      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
35154      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
35155  
35156       LAMBDA5 = 0D0
35157       LAMBDA6 = 0D0
35158       LAMBDA7 = 0D0
35159  
35160       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
35161      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
35162  
35163       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
35164      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
35165       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
35166      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
35167  
35168       M2(2,1) = M2(1,2)
35169 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35170 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
35171 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35172  
35173       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
35174  
35175       IF(MCHI.GT.MSSUSY) GOTO 100
35176       IF(MCHI.LT.MTOP) MCHI=MTOP
35177  
35178       TCHAR=LOG(MSSUSY**2/MCHI**2)
35179  
35180       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
35181       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
35182      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
35183  
35184       DELTAM112=2D0*DELTAL12*V**2*COSB**2
35185       DELTAM222=2D0*DELTAL12*V**2*SINB**2
35186       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
35187  
35188       M2(1,1)=M2(1,1)+DELTAM112
35189       M2(2,2)=M2(2,2)+DELTAM222
35190       M2(1,2)=M2(1,2)+DELTAM122
35191       M2(2,1)=M2(2,1)+DELTAM122
35192  
35193   100 CONTINUE
35194  
35195 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35196 CCC  END OF CHARGINOS/NEUTRALINOS
35197 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35198  
35199       DO 120 I = 1,2
35200         DO 110 J = 1,2
35201           M2P(I,J) = M2(I,J) + VH(I,J)
35202   110   CONTINUE
35203   120 CONTINUE
35204       TRM2P = M2P(1,1) + M2P(2,2)
35205       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
35206       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
35207       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
35208       HMP = DSQRT(HM2P)
35209       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
35210       MCH=DSQRT(MCH2)
35211       IF(MH2P.LT.0.) GOTO 130
35212       MHP = SQRT(MH2P)
35213       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
35214       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
35215       IF(COS2ALPHA.GE.0.) THEN
35216         ALPHA = ASIN(SIN2ALPHA)/2D0
35217       ELSE
35218         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
35219       ENDIF
35220       SA = SIN(ALPHA)
35221       CA = COS(ALPHA)
35222 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35223 C
35224 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
35225 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
35226 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
35227 C
35228 C
35229 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35230       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
35231       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
35232   130 CONTINUE
35233       RETURN
35234       END
35235  
35236 C*********************************************************************
35237  
35238 C...PYGFXX
35239 C...Auxiliary to PYRGHM.
35240  
35241       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
35242      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
35243       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
35244       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
35245 C...Commonblocks.
35246       INTEGER MSTU,MSTJ,KCHG
35247       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35248       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35249       SAVE /PYDAT1/,/PYDAT2/
35250  
35251       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
35252  
35253       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
35254      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
35255  
35256       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
35257       MQ2 = MQ**2
35258       MUR2 = MUR**2
35259       MD2 = MD**2
35260       TANBA = TANB
35261       SINBA = TANBA/DSQRT(TANBA**2+1D0)
35262       COSBA = SINBA/TANBA
35263  
35264       SINB = TANB/DSQRT(TANB**2+1D0)
35265       COSB = SINB/TANB
35266  
35267       PI = PARU(1)
35268       MZ = PMAS(23,1)
35269       MW = PMAS(24,1)
35270       SW = 1D0-MW**2/MZ**2
35271       V  = 174.1D0
35272  
35273       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
35274       G2 = DSQRT(0.0336D0*4D0*PI)
35275       G1 = DSQRT(0.0101D0*4D0*PI)
35276  
35277       IF(MQ.GT.MUR) MST = MQ
35278       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
35279  
35280       MSUSYT = DSQRT(MST**2  + MTOP**2)
35281  
35282       IF(MQ.GT.MD) MSB = MQ
35283       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
35284  
35285       MB = PYMRUN(5,MSB**2)
35286       MSUSYB = DSQRT(MSB**2 + MB**2)
35287       TT = LOG(MSUSYT**2/MTOP**2)
35288       TB = LOG(MSUSYB**2/MTOP**2)
35289  
35290       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
35291       HT = RMTOP/(V*SINB)
35292       HTST = RMTOP/V
35293       HB = MB/V/COSB
35294       G32 = ALPHA3*4D0*PI
35295       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
35296       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
35297       AL2 = 3D0/8D0/PI**2*HT**2
35298 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
35299 C      ALST = 3./8./PI**2*HTST**2
35300       AL1 = 3D0/8D0/PI**2*HB**2
35301  
35302       AL(1,1) = AL1
35303       AL(1,2) = (AL2+AL1)/2D0
35304       AL(2,1) = (AL2+AL1)/2D0
35305       AL(2,2) = AL2
35306  
35307       IF(MA.GT.MTOP) THEN
35308         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
35309      *        LOG(MTOP**2/MA**2))
35310         H1I = VI* COSBA
35311         H2I = VI*SINBA
35312         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
35313         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
35314         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
35315         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
35316       ELSE
35317         VI = V
35318         H1I = VI*COSB
35319         H2I = VI*SINB
35320         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
35321         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
35322         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
35323         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
35324       ENDIF
35325  
35326       TANBST = H2T/H1T
35327       SINBT = TANBST/DSQRT(1D0+TANBST**2)
35328  
35329       TANBSB = H2B/H1B
35330       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
35331       COSBB = SINBB/TANBSB
35332  
35333       DELTAMT = 0D0
35334       DELTAMB = 0D0
35335  
35336       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
35337       MTOP2 = DSQRT(MTOP4)
35338       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
35339      * /(1D0+DELTAMB)**4
35340       MBOT2 = DSQRT(MBOT4)
35341  
35342       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
35343      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35344      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35345      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
35346       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
35347      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35348      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35349      *  MQ2 - MUR2)**2*0.25D0
35350      *  + MTOP2*(AT-XMU/TANBST)**2)
35351       IF(STOP22.LT.0.) GOTO 120
35352       SBOT12 = (MQ2 + MD2)*.5D0
35353      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35354      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35355      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35356       SBOT22 = (MQ2 + MD2)*.5D0
35357      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35358      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35359      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35360       IF(SBOT22.LT.0.) SBOT22 = 10000D0
35361  
35362       STOP1 = DSQRT(STOP12)
35363       STOP2 = DSQRT(STOP22)
35364       SBOT1 = DSQRT(SBOT12)
35365       SBOT2 = DSQRT(SBOT22)
35366  
35367 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35368 C
35369 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
35370 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
35371 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
35372 C     INDUCED CORRECTIONS.
35373 C
35374 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35375  
35376       X=SBOT1
35377       Y=SBOT2
35378       Z=XMGL
35379       IF(X.EQ.Y) X = X - 0.00001D0
35380       IF(X.EQ.Z) X = X - 0.00002D0
35381       IF(Y.EQ.Z) Y = Y - 0.00003D0
35382  
35383       T1=T(X,Y,Z)
35384       X=STOP1
35385       Y=STOP2
35386       Z=XMU
35387       IF(X.EQ.Y) X = X - 0.00001D0
35388       IF(X.EQ.Z) X = X - 0.00002D0
35389       IF(Y.EQ.Z) Y = Y - 0.00003D0
35390       T2=T(X,Y,Z)
35391       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
35392      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
35393       X=STOP1
35394       Y=STOP2
35395       Z=XMGL
35396       IF(X.EQ.Y) X = X - 0.00001D0
35397       IF(X.EQ.Z) X = X - 0.00002D0
35398       IF(Y.EQ.Z) Y = Y - 0.00003D0
35399       T3=T(X,Y,Z)
35400       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
35401  
35402 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35403 C
35404 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
35405 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
35406 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
35407 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
35408 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
35409 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
35410 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
35411 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
35412 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
35413 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
35414 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
35415 C
35416 C
35417 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35418  
35419       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
35420       MTOP2 = DSQRT(MTOP4)
35421       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
35422      * /(1D0+DELTAMB)**4
35423       MBOT2 = DSQRT(MBOT4)
35424  
35425       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
35426      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35427      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35428      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
35429       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
35430      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35431      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35432      *  MQ2 - MUR2)**2*0.25D0
35433      *  + MTOP2*(AT-XMU/TANBST)**2)
35434  
35435       IF(STOP22.LT.0.) GOTO 120
35436       SBOT12 = (MQ2 + MD2)*.5D0
35437      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35438      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35439      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35440       SBOT22 = (MQ2 + MD2)*.5D0
35441      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35442      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35443      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35444       IF(SBOT22.LT.0.) GOTO 120
35445  
35446  
35447       STOP1 = DSQRT(STOP12)
35448       STOP2 = DSQRT(STOP22)
35449       SBOT1 = DSQRT(SBOT12)
35450       SBOT2 = DSQRT(SBOT22)
35451  
35452 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35453 CCC   D-TERMS
35454 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35455       STW=SW
35456  
35457       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
35458      *         LOG(STOP1/STOP2)
35459      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
35460      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
35461  
35462       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
35463      *        LOG(SBOT1/SBOT2)
35464      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
35465      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
35466  
35467       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
35468      *         (-.5D0*LOG(STOP12/STOP22)
35469      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
35470      *         G(STOP12,STOP22))
35471  
35472       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
35473      *         (.5D0*LOG(SBOT12/SBOT22)
35474      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
35475      *        G(SBOT12,SBOT22))
35476  
35477       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
35478      *  (MQ2+MBOT2)/(MD2+MBOT2))
35479      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
35480      *  LOG(SBOT1**2/SBOT2**2)) +
35481      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
35482      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
35483  
35484       VH3T(1,1) =
35485      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
35486      * -STOP2**2))**2*G(STOP12,STOP22)
35487  
35488       VH3B(1,1)=VH3B(1,1)+
35489      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
35490  
35491       VH3T(1,1) = VH3T(1,1) +
35492      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
35493  
35494       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
35495      *  (MQ2+MTOP2)/(MUR2+MTOP2))
35496      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
35497      *  LOG(STOP1**2/STOP2**2)) +
35498      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
35499      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
35500  
35501       VH3B(2,2) =
35502      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
35503      * -SBOT2**2))**2*G(SBOT12,SBOT22)
35504  
35505       VH3T(2,2)=VH3T(2,2)+
35506      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
35507       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
35508       VH3T(1,2) = -
35509      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
35510      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
35511      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
35512  
35513       VH3B(1,2) =
35514      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
35515      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
35516      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
35517  
35518  
35519       VH3T(1,2)=VH3T(1,2) +
35520      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
35521  
35522       VH3B(1,2)=VH3B(1,2) +
35523      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
35524  
35525       VH3T(2,1) = VH3T(1,2)
35526       VH3B(2,1) = VH3B(1,2)
35527  
35528 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
35529 C      TU = LOG((MUR2+MTOP2)/MTOP2)
35530 C      TQD = LOG((MQ2 + MB**2)/MB**2)
35531 C      TD = LOG((MD2+MB**2)/MB**2)
35532  
35533       DO 110 I = 1,2
35534         DO 100 J = 1,2
35535           VH(I,J) =
35536      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
35537      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
35538      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
35539      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
35540   100   CONTINUE
35541   110 CONTINUE
35542  
35543       GOTO 150
35544   120 DO 140 I =1,2
35545         DO 130 J = 1,2
35546           VH(I,J) = -1D15
35547   130   CONTINUE
35548   140 CONTINUE
35549  
35550  
35551   150 RETURN
35552       END
35553  
35554  
35555  
35556  
35557  
35558 C*********************************************************************
35559  
35560 C...PYFINT
35561 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
35562  
35563       FUNCTION PYFINT(A,B,C)
35564  
35565 C...Double precision and integer declarations.
35566       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35567       IMPLICIT INTEGER(I-N)
35568       INTEGER PYK,PYCHGE,PYCOMP
35569 C...Commonblock.
35570       COMMON/PYINTS/XXM(20)
35571       SAVE/PYINTS/
35572  
35573 C...Local variables.
35574       EXTERNAL PYFISB
35575       DOUBLE PRECISION PYFISB
35576  
35577       XXM(1)=A
35578       XXM(2)=B
35579       XXM(3)=C
35580       XLO=0D0
35581       XHI=1D0
35582       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
35583  
35584       RETURN
35585       END
35586  
35587 C*********************************************************************
35588  
35589 C...PYFISB
35590 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
35591  
35592       FUNCTION PYFISB(X)
35593  
35594 C...Double precision and integer declarations.
35595       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35596       IMPLICIT INTEGER(I-N)
35597       INTEGER PYK,PYCHGE,PYCOMP
35598 C...Commonblock.
35599       COMMON/PYINTS/XXM(20)
35600       SAVE/PYINTS/
35601  
35602       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
35603      &(X*(XXM(2)-XXM(3))+XXM(3)))
35604  
35605       RETURN
35606       END
35607  
35608 C*********************************************************************
35609  
35610 C...PYSFDC
35611 C...Calculates decays of sfermions.
35612  
35613       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
35614  
35615 C...Double precision and integer declarations.
35616       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35617       IMPLICIT INTEGER(I-N)
35618       INTEGER PYK,PYCHGE,PYCOMP
35619 C...Parameter statement to help give large particle numbers.
35620       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35621      &KEXCIT=4000000,KDIMEN=5000000)
35622 C...Commonblocks.
35623       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35624       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35625       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
35626       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
35627      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
35628       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
35629  
35630 C...Local variables.
35631       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
35632       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
35633       INTEGER KFIN,KCIN
35634       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
35635       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
35636       DOUBLE PRECISION PYLAMF,XL
35637       DOUBLE PRECISION TANW,XW,AEM,C1,AS
35638       DOUBLE PRECISION AL,AR,BL,BR
35639       DOUBLE PRECISION CH1,CH2,CH3,CH4
35640       DOUBLE PRECISION XMBOT,XMTOP
35641       DOUBLE PRECISION XLAM(0:400)
35642       INTEGER IDLAM(400,3)
35643       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
35644       DOUBLE PRECISION SR2
35645       DOUBLE PRECISION CBETA,SBETA
35646       DOUBLE PRECISION CW
35647       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
35648       DOUBLE PRECISION COSA,SINA,TANB
35649       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
35650       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
35651       INTEGER IG,KF1,KF2
35652       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
35653       DATA IGG/23,25,35,36/
35654       DATA PI/3.141592654D0/
35655       DATA SR2/1.4142136D0/
35656       DATA KFNCHI/1000022,1000023,1000025,1000035/
35657       DATA KFCCHI/1000024,1000037/
35658  
35659 C...COUNT THE NUMBER OF DECAY MODES
35660       LKNT=0
35661  
35662 C...NO NU_R DECAYS
35663       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
35664      &KFIN.EQ.KSUSY2+16) RETURN
35665  
35666       XMW=PMAS(24,1)
35667       XMW2=XMW**2
35668       XMZ=PMAS(23,1)
35669       XW=PARU(102)
35670       TANW = SQRT(XW/(1D0-XW))
35671       CW=SQRT(1D0-XW)
35672  
35673       DO 110 I=1,4
35674         DO 100 J=1,4
35675           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
35676   100   CONTINUE
35677   110 CONTINUE
35678       DO 130 I=1,2
35679         DO 120 J=1,2
35680            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
35681            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
35682   120   CONTINUE
35683   130 CONTINUE
35684  
35685 C...KCIN
35686       KCIN=PYCOMP(KFIN)
35687 C...ILR is 1 for left and 2 for right.
35688       ILR=KFIN/KSUSY1
35689 C...IFL is matching non-SUSY flavour.
35690       IFL=MOD(KFIN,KSUSY1)
35691 C...IDU is weak isospin, 1 for down and 2 for up.
35692       IDU=2-MOD(IFL,2)
35693  
35694       XMI=PMAS(KCIN,1)
35695       XMI2=XMI**2
35696       AEM=PYALEM(XMI2)
35697       AS =PYALPS(XMI2)
35698       C1=AEM/XW
35699       XMI3=XMI**3
35700       EI=KCHG(IFL,1)/3D0
35701  
35702       XMBOT=PYMRUN(5,XMI2)
35703       XMTOP=PYMRUN(6,XMI2)
35704  
35705       TANB=RMSS(5)
35706       BETA=ATAN(TANB)
35707       ALFA=RMSS(18)
35708       CBETA=COS(BETA)
35709       SBETA=TANB*CBETA
35710       SINA=SIN(ALFA)
35711       COSA=COS(ALFA)
35712       XMU=-RMSS(4)
35713       ATRIT=RMSS(16)
35714       ATRIB=RMSS(15)
35715       ATRIL=RMSS(17)
35716  
35717 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
35718  
35719       IF(IMSS(11).EQ.1) THEN
35720         XMP=RMSS(29)
35721         IDG=39+KSUSY1
35722         XMGR=PMAS(PYCOMP(IDG),1)
35723         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
35724         IF(IFL.EQ.5) THEN
35725           XMF=XMBOT
35726         ELSEIF(IFL.EQ.6) THEN
35727           XMF=XMTOP
35728         ELSE
35729           XMF=PMAS(IFL,1)
35730         ENDIF
35731         IF(XMI.GT.XMGR+XMF) THEN
35732           LKNT=LKNT+1
35733           IDLAM(LKNT,1)=IDG
35734           IDLAM(LKNT,2)=IFL
35735           IDLAM(LKNT,3)=0
35736           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
35737         ENDIF
35738       ENDIF
35739  
35740 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
35741  
35742 C...CHARGED DECAYS:
35743       DO 140 IX=1,2
35744 C...DI -> U CHI1-,CHI2-
35745         IF(IDU.EQ.1) THEN
35746           XMFP=PMAS(IFL+1,1)
35747           XMF =PMAS(IFL,1)
35748 C...UI -> D CHI1+,CHI2+
35749         ELSE
35750           XMFP=PMAS(IFL-1,1)
35751           XMF =PMAS(IFL,1)
35752         ENDIF
35753         XMJ=SMW(IX)
35754         AXMJ=ABS(XMJ)
35755         IF(XMI.GE.AXMJ+XMFP) THEN
35756           XMA2=XMJ**2
35757           XMB2=XMFP**2
35758           IF(IDU.EQ.2) THEN
35759             IF(IFL.EQ.6) THEN
35760               XMFP=XMBOT
35761               XMF =XMTOP
35762             ELSEIF(IFL.LT.6) THEN
35763               XMF=0D0
35764               XMFP=0D0
35765             ENDIF
35766             CBL=VMIXC(IX,1)
35767             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
35768             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
35769             CAR=0D0
35770           ELSE
35771             IF(IFL.EQ.5) THEN
35772               XMF =XMBOT
35773               XMFP=XMTOP
35774             ELSEIF(IFL.LT.5) THEN
35775               XMF=0D0
35776               XMFP=0D0
35777             ENDIF
35778             CBL=UMIXC(IX,1)
35779             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
35780             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
35781             CAR=0D0
35782           ENDIF
35783  
35784           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
35785           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
35786           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
35787           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
35788           CAL=CALP
35789           CBL=CBLP
35790           CAR=CARP
35791           CBR=CBRP
35792  
35793 C...F1 -> F` CHI
35794           IF(ILR.EQ.1) THEN
35795             CA=CAL
35796             CB=CBL
35797 C...F2 -> F` CHI
35798           ELSE
35799             CA=CAR
35800             CB=CBR
35801           ENDIF
35802           LKNT=LKNT+1
35803           XL=PYLAMF(XMI2,XMA2,XMB2)
35804 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
35805           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
35806      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
35807           IDLAM(LKNT,3)=0
35808           IF(IDU.EQ.1) THEN
35809             IDLAM(LKNT,1)=-KFCCHI(IX)
35810             IDLAM(LKNT,2)=IFL+1
35811           ELSE
35812             IDLAM(LKNT,1)=KFCCHI(IX)
35813             IDLAM(LKNT,2)=IFL-1
35814           ENDIF
35815         ENDIF
35816   140 CONTINUE
35817  
35818 C...NEUTRAL DECAYS
35819       DO 150 IX=1,4
35820 C...DI -> D CHI10
35821         XMF=PMAS(IFL,1)
35822         XMJ=SMZ(IX)
35823         AXMJ=ABS(XMJ)
35824         IF(XMI.GE.AXMJ+XMF) THEN
35825           XMA2=XMJ**2
35826           XMB2=XMF**2
35827           IF(IDU.EQ.1) THEN
35828             IF(IFL.EQ.5) THEN
35829               XMF=XMBOT
35830             ELSEIF(IFL.LT.5) THEN
35831               XMF=0D0
35832             ENDIF
35833             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
35834             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
35835             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
35836             CBR=CAL
35837           ELSE
35838             IF(IFL.EQ.6) THEN
35839               XMF=XMTOP
35840             ELSEIF(IFL.LT.5) THEN
35841               XMF=0D0
35842             ENDIF
35843             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
35844             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
35845             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
35846             CBR=CAL
35847           ENDIF
35848  
35849           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
35850           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
35851           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
35852           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
35853           CAL=CALP
35854           CBL=CBLP
35855           CAR=CARP
35856           CBR=CBRP
35857  
35858 C...F1 -> F CHI
35859           IF(ILR.EQ.1) THEN
35860             CA=CAL
35861             CB=CBL
35862 C...F2 -> F CHI
35863           ELSE
35864             CA=CAR
35865             CB=CBR
35866           ENDIF
35867           LKNT=LKNT+1
35868           XL=PYLAMF(XMI2,XMA2,XMB2)
35869 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
35870           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
35871      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
35872           IDLAM(LKNT,1)=KFNCHI(IX)
35873           IDLAM(LKNT,2)=IFL
35874           IDLAM(LKNT,3)=0
35875         ENDIF
35876   150 CONTINUE
35877  
35878 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
35879 C...IG=23,25,35,36
35880       DO 160 II=1,4
35881         IG=IGG(II)
35882         IF(ILR.EQ.1) GOTO 160
35883         XMB=PMAS(IG,1)
35884         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
35885         IF(XMI.LT.XMSF1+XMB) GOTO 160
35886         IF(IG.EQ.23) THEN
35887           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
35888           BR=EI*XW/CW
35889           BLR=0D0
35890         ELSEIF(IG.EQ.25) THEN
35891           IF(IFL.EQ.5) THEN
35892             XMF=XMBOT
35893           ELSEIF(IFL.EQ.6) THEN
35894             XMF=XMTOP
35895           ELSEIF(IFL.LT.5) THEN
35896             XMF=0D0
35897           ELSE
35898             XMF=PMAS(IFL,1)
35899           ENDIF
35900           IF(IDU.EQ.2) THEN
35901             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
35902      &      XMF**2/XMW*COSA/SBETA
35903             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
35904      &      XMF**2/XMW*COSA/SBETA
35905           ELSE
35906             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
35907      &      XMF**2/XMW*(-SINA)/CBETA
35908             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
35909      &      XMF**2/XMW*(-SINA)/CBETA
35910           ENDIF
35911           IF(IFL.EQ.5) THEN
35912             AT=ATRIB
35913           ELSEIF(IFL.EQ.6) THEN
35914             AT=ATRIT
35915           ELSEIF(IFL.EQ.15) THEN
35916             AT=ATRIL
35917           ELSE
35918             AT=0D0
35919           ENDIF
35920 C.........need to complexify
35921           IF(IDU.EQ.2) THEN
35922             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
35923      &      AT*COSA)
35924           ELSE
35925             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
35926      &      AT*SINA)
35927           ENDIF
35928           BL=GHLL
35929           BR=GHRR
35930           BLR=-GHLR
35931         ELSEIF(IG.EQ.35) THEN
35932           IF(IFL.EQ.5) THEN
35933             XMF=XMBOT
35934           ELSEIF(IFL.EQ.6) THEN
35935             XMF=XMTOP
35936           ELSEIF(IFL.LT.5) THEN
35937             XMF=0D0
35938           ELSE
35939             XMF=PMAS(IFL,1)
35940           ENDIF
35941           IF(IDU.EQ.2) THEN
35942             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
35943      &      XMF**2/XMW*SINA/SBETA
35944             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
35945      &      XMF**2/XMW*SINA/SBETA
35946           ELSE
35947             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
35948      &      XMF**2/XMW*COSA/CBETA
35949             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
35950      &      XMF**2/XMW*COSA/CBETA
35951           ENDIF
35952           IF(IFL.EQ.5) THEN
35953             AT=ATRIB
35954           ELSEIF(IFL.EQ.6) THEN
35955             AT=ATRIT
35956           ELSEIF(IFL.EQ.15) THEN
35957             AT=ATRIL
35958           ELSE
35959             AT=0D0
35960           ENDIF
35961 C.........Need to complexify
35962           IF(IDU.EQ.2) THEN
35963             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
35964      &      AT*SINA)
35965           ELSE
35966             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
35967      &      AT*COSA)
35968           ENDIF
35969           BL=GHLL
35970           BR=GHRR
35971           BLR=GHLR
35972         ELSEIF(IG.EQ.36) THEN
35973           GHLL=0D0
35974           GHRR=0D0
35975           IF(IFL.EQ.5) THEN
35976             XMF=XMBOT
35977           ELSEIF(IFL.EQ.6) THEN
35978             XMF=XMTOP
35979           ELSEIF(IFL.LT.5) THEN
35980             XMF=0D0
35981           ELSE
35982             XMF=PMAS(IFL,1)
35983           ENDIF
35984           IF(IFL.EQ.5) THEN
35985             AT=ATRIB
35986           ELSEIF(IFL.EQ.6) THEN
35987             AT=ATRIT
35988           ELSEIF(IFL.EQ.15) THEN
35989             AT=ATRIL
35990           ELSE
35991             AT=0D0
35992           ENDIF
35993 C.........Need to complexify
35994           IF(IDU.EQ.2) THEN
35995             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
35996           ELSE
35997             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
35998           ENDIF
35999           BL=GHLL
36000           BR=GHRR
36001           BLR=GHLR
36002         ENDIF
36003         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
36004      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
36005      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
36006         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36007         LKNT=LKNT+1
36008         IF(IG.EQ.23) THEN
36009           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36010         ELSE
36011           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
36012         ENDIF
36013         IDLAM(LKNT,3)=0
36014         IDLAM(LKNT,1)=KFIN-KSUSY1
36015         IDLAM(LKNT,2)=IG
36016   160 CONTINUE
36017  
36018 C...SF -> SF' + W
36019       XMB=PMAS(24,1)
36020       IF(MOD(IFL,2).EQ.0) THEN
36021         KF1=KSUSY1+IFL-1
36022       ELSE
36023         KF1=KSUSY1+IFL+1
36024       ENDIF
36025       KF2=KF1+KSUSY1
36026       XMSF1=PMAS(PYCOMP(KF1),1)
36027       XMSF2=PMAS(PYCOMP(KF2),1)
36028       IF(XMI.GT.XMB+XMSF1) THEN
36029         IF(MOD(IFL,2).EQ.0) THEN
36030           IF(ILR.EQ.1) THEN
36031             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
36032           ELSE
36033             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
36034           ENDIF
36035         ELSE
36036           IF(ILR.EQ.1) THEN
36037             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
36038           ELSE
36039             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
36040           ENDIF
36041         ENDIF
36042         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36043         LKNT=LKNT+1
36044         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36045         IDLAM(LKNT,3)=0
36046         IDLAM(LKNT,1)=KF1
36047         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
36048       ENDIF
36049       IF(XMI.GT.XMB+XMSF2) THEN
36050         IF(MOD(IFL,2).EQ.0) THEN
36051           IF(ILR.EQ.1) THEN
36052             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,3)
36053           ELSE
36054             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
36055           ENDIF
36056         ELSE
36057           IF(ILR.EQ.1) THEN
36058             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
36059           ELSE
36060             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
36061           ENDIF
36062         ENDIF
36063         XL=PYLAMF(XMI2,XMSF2**2,XMB**2)
36064         LKNT=LKNT+1
36065         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36066         IDLAM(LKNT,3)=0
36067         IDLAM(LKNT,1)=KF2
36068         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
36069       ENDIF
36070  
36071 C...SF -> SF' + HC
36072       XMB=PMAS(37,1)
36073       IF(MOD(IFL,2).EQ.0) THEN
36074         KF1=KSUSY1+IFL-1
36075       ELSE
36076         KF1=KSUSY1+IFL+1
36077       ENDIF
36078       KF2=KF1+KSUSY1
36079       XMSF1=PMAS(PYCOMP(KF1),1)
36080       XMSF2=PMAS(PYCOMP(KF2),1)
36081       IF(XMI.GT.XMB+XMSF1) THEN
36082         XMF=0D0
36083         XMFP=0D0
36084         AT=0D0
36085         AB=0D0
36086         IF(MOD(IFL,2).EQ.0) THEN
36087 C...T1-> B1 HC
36088           IF(ILR.EQ.1) THEN
36089             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
36090             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
36091             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
36092             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
36093 C...T2-> B1 HC
36094           ELSE
36095             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
36096             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
36097             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
36098             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
36099           ENDIF
36100           IF(IFL.EQ.6) THEN
36101             XMF=XMTOP
36102             XMFP=XMBOT
36103             AT=ATRIT
36104             AB=ATRIB
36105           ENDIF
36106         ELSE
36107 C...B1 -> T1 HC
36108           IF(ILR.EQ.1) THEN
36109             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
36110             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
36111             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
36112             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
36113 C...B2-> T1 HC
36114           ELSE
36115             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
36116             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
36117             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
36118             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
36119           ENDIF
36120           IF(IFL.EQ.5) THEN
36121             XMF=XMTOP
36122             XMFP=XMBOT
36123             AT=ATRIT
36124             AB=ATRIB
36125           ENDIF
36126         ENDIF
36127         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36128         LKNT=LKNT+1
36129 C.......Need to complexify
36130         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
36131      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
36132      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
36133         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
36134         IDLAM(LKNT,3)=0
36135         IDLAM(LKNT,1)=KF1
36136         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
36137       ENDIF
36138       IF(XMI.GT.XMB+XMSF2) THEN
36139         XMF=0D0
36140         XMFP=0D0
36141         AT=0D0
36142         AB=0D0
36143         IF(MOD(IFL,2).EQ.0) THEN
36144 C...T1-> B2 HC
36145           IF(ILR.EQ.1) THEN
36146             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
36147             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
36148             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
36149             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
36150 C...T2-> B2 HC
36151           ELSE
36152             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
36153             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
36154             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
36155             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
36156           ENDIF
36157           IF(IFL.EQ.6) THEN
36158             XMF=XMTOP
36159             XMFP=XMBOT
36160             AT=ATRIT
36161             AB=ATRIB
36162           ENDIF
36163         ELSE
36164 C...B1 -> T2 HC
36165           IF(ILR.EQ.1) THEN
36166             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
36167             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
36168             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
36169             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
36170 C...B2-> T2 HC
36171           ELSE
36172             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
36173             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
36174             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
36175             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
36176           ENDIF
36177           IF(IFL.EQ.5) THEN
36178             XMF=XMTOP
36179             XMFP=XMBOT
36180             AT=ATRIT
36181             AB=ATRIB
36182           ENDIF
36183         ENDIF
36184         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36185         LKNT=LKNT+1
36186 C.......Need to complexify
36187         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
36188      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
36189      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
36190         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
36191         IDLAM(LKNT,3)=0
36192         IDLAM(LKNT,1)=KF2
36193         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
36194       ENDIF
36195  
36196 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
36197  
36198       IF(IFL.LE.6) THEN
36199         XMFP=0D0
36200         XMF=0D0
36201         IF(IFL.EQ.6) XMF=PMAS(6,1)
36202         IF(IFL.EQ.5) XMF=PMAS(5,1)
36203         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
36204         AXMJ=ABS(XMJ)
36205         IF(XMI.GE.AXMJ+XMF) THEN
36206           AL=-SFMIX(IFL,3)
36207           BL=SFMIX(IFL,1)
36208           AR=-SFMIX(IFL,4)
36209           BR=SFMIX(IFL,2)
36210 C...F1 -> F CHI
36211           IF(ILR.EQ.1) THEN
36212             XCA=AL
36213             XCB=BL
36214 C...F2 -> F CHI
36215           ELSE
36216             XCA=AR
36217             XCB=BR
36218           ENDIF
36219           LKNT=LKNT+1
36220           XMA2=XMJ**2
36221           XMB2=XMF**2
36222           XL=PYLAMF(XMI2,XMA2,XMB2)
36223           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
36224      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
36225           IDLAM(LKNT,1)=KSUSY1+21
36226           IDLAM(LKNT,2)=IFL
36227           IDLAM(LKNT,3)=0
36228         ENDIF
36229       ENDIF
36230  
36231 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
36232       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
36233      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
36234 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
36235 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
36236 C...M*M = C1**2 * G**2/(16PI**2)
36237 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
36238         LKNT=LKNT+1
36239         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
36240         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
36241         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
36242         IDLAM(LKNT,1)=KSUSY1+22
36243         IDLAM(LKNT,2)=4
36244         IDLAM(LKNT,3)=0
36245       ENDIF
36246  
36247 C...R-violating sfermion decays (SKANDS).
36248       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
36249  
36250       IKNT=LKNT
36251       XLAM(0)=0D0
36252       DO 170 I=1,IKNT
36253         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
36254         XLAM(0)=XLAM(0)+XLAM(I)
36255   170 CONTINUE
36256       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
36257  
36258       RETURN
36259       END
36260  
36261 C*********************************************************************
36262  
36263 C...PYGLUI
36264 C...Calculates gluino decay modes.
36265  
36266       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
36267  
36268 C...Double precision and integer declarations.
36269       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36270       IMPLICIT INTEGER(I-N)
36271       INTEGER PYK,PYCHGE,PYCOMP
36272 C...Parameter statement to help give large particle numbers.
36273       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36274      &KEXCIT=4000000,KDIMEN=5000000)
36275 C...Commonblocks.
36276       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36277       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36278       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36279       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36280      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36281 CC     &SFMIX(16,4),
36282 C      COMMON/PYINTS/XXM(20)
36283       COMPLEX*16 CXC
36284       COMMON/PYINTC/XXC(10),CXC(8)
36285       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
36286  
36287 C...Local variables
36288       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
36289       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
36290       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
36291       DOUBLE PRECISION PYLAMF,XL
36292       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
36293       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
36294       DOUBLE PRECISION XLAM(0:400)
36295       INTEGER IDLAM(400,3)
36296       INTEGER LKNT,IX,ILR,I,IKNT,IFL
36297       DOUBLE PRECISION SR2
36298       DOUBLE PRECISION GAM
36299       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
36300       EXTERNAL PYGAUS,PYXXZ6
36301       DOUBLE PRECISION PYGAUS,PYXXZ6
36302       DOUBLE PRECISION PREC
36303       INTEGER KFNCHI(4),KFCCHI(2)
36304       DATA PI/3.141592654D0/
36305       DATA SR2/1.4142136D0/
36306       DATA PREC/1D-2/
36307       DATA KFNCHI/1000022,1000023,1000025,1000035/
36308       DATA KFCCHI/1000024,1000037/
36309  
36310 C...COUNT THE NUMBER OF DECAY MODES
36311       LKNT=0
36312       IF(KFIN.NE.KSUSY1+21) RETURN
36313       KCIN=PYCOMP(KFIN)
36314  
36315       XW=PARU(102)
36316       TANW = SQRT(XW/(1D0-XW))
36317  
36318       XMI=PMAS(KCIN,1)
36319       AXMI=ABS(XMI)
36320       XMI2=XMI**2
36321       AEM=PYALEM(XMI2)
36322       AS =PYALPS(XMI2)
36323       C1=AEM/XW
36324       XMI3=AXMI**3
36325  
36326       XMI=SIGN(XMI,RMSS(3))
36327  
36328 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
36329  
36330       IF(IMSS(11).EQ.1) THEN
36331         XMP=RMSS(29)
36332         IDG=39+KSUSY1
36333         XMGR=PMAS(PYCOMP(IDG),1)
36334         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
36335         IF(AXMI.GT.XMGR) THEN
36336           LKNT=LKNT+1
36337           IDLAM(LKNT,1)=IDG
36338           IDLAM(LKNT,2)=21
36339           IDLAM(LKNT,3)=0
36340           XLAM(LKNT)=XFAC
36341         ENDIF
36342       ENDIF
36343  
36344 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
36345  
36346       DO 110 IFL=1,6
36347         DO 100 ILR=1,2
36348           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
36349           AXMJ=ABS(XMJ)
36350           XMF=PMAS(IFL,1)
36351           IF(AXMI.GE.AXMJ+XMF) THEN
36352 C...Minus sign difference from gluino-quark-squark feynman rules
36353             AL=SFMIX(IFL,1)
36354             BL=-SFMIX(IFL,3)
36355             AR=SFMIX(IFL,2)
36356             BR=-SFMIX(IFL,4)
36357 C...F1 -> F CHI
36358             IF(ILR.EQ.1) THEN
36359               CA=AL
36360               CB=BL
36361 C...F2 -> F CHI
36362             ELSE
36363               CA=AR
36364               CB=BR
36365             ENDIF
36366             LKNT=LKNT+1
36367             XMA2=XMJ**2
36368             XMB2=XMF**2
36369             XL=PYLAMF(XMI2,XMA2,XMB2)
36370             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
36371      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
36372             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
36373             IDLAM(LKNT,2)=-IFL
36374             IDLAM(LKNT,3)=0
36375             LKNT=LKNT+1
36376             XLAM(LKNT)=XLAM(LKNT-1)
36377             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36378             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36379             IDLAM(LKNT,3)=0
36380           ENDIF
36381   100   CONTINUE
36382   110 CONTINUE
36383  
36384 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
36385 C...GLUINO -> NI Q QBAR
36386       DO 170 IX=1,4
36387         XMJ=SMZ(IX)
36388         AXMJ=ABS(XMJ)
36389         IF(AXMI.GE.AXMJ) THEN
36390           DO 120 I=1,4
36391             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
36392   120     CONTINUE
36393           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
36394           ORPP=DCONJG(OLPP)
36395           XXC(1)=0D0
36396           XXC(2)=XMJ
36397           XXC(3)=0D0
36398           XXC(4)=XMI
36399           IA=1
36400           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
36401           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
36402           XXC(7)=XXC(5)
36403           XXC(8)=XXC(6)
36404           XXC(9)=1D6
36405           XXC(10)=0D0
36406           EI=KCHG(IA,1)/3D0
36407           T3I=SIGN(1D0,EI+1D-6)/2D0
36408           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
36409           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
36410           CXC(1)=0D0
36411           CXC(2)=-GLIJ
36412           CXC(3)=0D0
36413           CXC(4)=DCONJG(GLIJ)
36414           CXC(5)=0D0
36415           CXC(6)=GRIJ
36416           CXC(7)=0D0
36417           CXC(8)=-DCONJG(GRIJ)
36418           S12MIN=0D0
36419           S12MAX=(AXMI-AXMJ)**2
36420           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
36421           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
36422             LKNT=LKNT+1
36423             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
36424      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
36425             IDLAM(LKNT,1)=KFNCHI(IX)
36426             IDLAM(LKNT,2)=1
36427             IDLAM(LKNT,3)=-1
36428           ENDIF
36429           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
36430             LKNT=LKNT+1
36431             XLAM(LKNT)=XLAM(LKNT-1)
36432             IDLAM(LKNT,1)=KFNCHI(IX)
36433             IDLAM(LKNT,2)=3
36434             IDLAM(LKNT,3)=-3
36435           ENDIF
36436   130     CONTINUE
36437           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
36438             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
36439             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
36440               GOTO 140
36441             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
36442               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
36443             ENDIF
36444             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
36445             LKNT=LKNT+1
36446             XLAM(LKNT)=GAM
36447             IDLAM(LKNT,1)=KFNCHI(IX)
36448             IDLAM(LKNT,2)=5
36449             IDLAM(LKNT,3)=-5
36450             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
36451           ENDIF
36452 C...U-TYPE QUARKS
36453   140     CONTINUE
36454           IA=2
36455           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
36456           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
36457 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
36458           XXC(7)=XXC(5)
36459           XXC(8)=XXC(6)
36460           EI=KCHG(IA,1)/3D0
36461           T3I=SIGN(1D0,EI+1D-6)/2D0
36462           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
36463           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
36464           CXC(2)=-GLIJ
36465           CXC(4)=DCONJG(GLIJ)
36466           CXC(6)=GRIJ
36467           CXC(8)=-DCONJG(GRIJ)
36468           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
36469           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
36470             LKNT=LKNT+1
36471             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
36472      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
36473             IDLAM(LKNT,1)=KFNCHI(IX)
36474             IDLAM(LKNT,2)=2
36475             IDLAM(LKNT,3)=-2
36476           ENDIF
36477           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
36478             LKNT=LKNT+1
36479             XLAM(LKNT)=XLAM(LKNT-1)
36480             IDLAM(LKNT,1)=KFNCHI(IX)
36481             IDLAM(LKNT,2)=4
36482             IDLAM(LKNT,3)=-4
36483           ENDIF
36484   150     CONTINUE
36485 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
36486 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
36487           XMF=PMAS(6,1)
36488           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
36489             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
36490             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
36491               GOTO 160
36492             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
36493               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
36494             ENDIF
36495             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
36496             LKNT=LKNT+1
36497             XLAM(LKNT)=GAM
36498             IDLAM(LKNT,1)=KFNCHI(IX)
36499             IDLAM(LKNT,2)=6
36500             IDLAM(LKNT,3)=-6
36501             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
36502           ENDIF
36503   160     CONTINUE
36504         ENDIF
36505   170 CONTINUE
36506  
36507 C...GLUINO -> CI Q QBAR'
36508       DO 210 IX=1,2
36509         XMJ=SMW(IX)
36510         AXMJ=ABS(XMJ)
36511         IF(AXMI.GE.AXMJ) THEN
36512           DO 180 I=1,2
36513             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
36514             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
36515   180     CONTINUE
36516           S12MIN=0D0
36517           S12MAX=(AXMI-AXMJ)**2
36518           XXC(1)=0D0
36519           XXC(2)=XMJ
36520           XXC(3)=0D0
36521           XXC(4)=XMI
36522           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
36523           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
36524           XXC(9)=1D6
36525           XXC(10)=0D0
36526           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
36527           ORPP=DCONJG(OLPP)
36528           CXC(1)=DCMPLX(0D0,0D0)
36529           CXC(3)=DCMPLX(0D0,0D0)
36530           CXC(5)=DCMPLX(0D0,0D0)
36531           CXC(7)=DCMPLX(0D0,0D0)
36532           CXC(2)=UMIXC(IX,1)*OLPP/SR2
36533           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
36534           CXC(6)=DCMPLX(0D0,0D0)
36535           CXC(8)=DCMPLX(0D0,0D0)
36536           IF(XXC(5).LT.AXMI) THEN
36537             XXC(5)=1D6
36538           ELSEIF(XXC(6).LT.AXMI) THEN
36539             XXC(6)=1D6
36540           ENDIF
36541           XXC(7)=XXC(6)
36542           XXC(8)=XXC(5)
36543           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
36544           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
36545             LKNT=LKNT+1
36546             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
36547      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
36548             IDLAM(LKNT,1)=KFCCHI(IX)
36549             IDLAM(LKNT,2)=1
36550             IDLAM(LKNT,3)=-2
36551             LKNT=LKNT+1
36552             XLAM(LKNT)=XLAM(LKNT-1)
36553             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36554             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36555             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36556           ENDIF
36557           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
36558             LKNT=LKNT+1
36559             XLAM(LKNT)=XLAM(LKNT-1)
36560             IDLAM(LKNT,1)=KFCCHI(IX)
36561             IDLAM(LKNT,2)=3
36562             IDLAM(LKNT,3)=-4
36563             LKNT=LKNT+1
36564             XLAM(LKNT)=XLAM(LKNT-1)
36565             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36566             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36567             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36568           ENDIF
36569   190     CONTINUE
36570  
36571           XMF=PMAS(6,1)
36572           XMFP=PMAS(5,1)
36573           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
36574             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
36575      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
36576             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
36577             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
36578             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
36579             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
36580             IF(XMI.GT.PMOLT2+XMF) PMOLT2=100D0*AXMI
36581             IF(XMI.GT.PMOLT1+XMF) PMOLT1=100D0*AXMI
36582             IF(XMI.GT.PMOLB2+XMFP) PMOLB2=100D0*AXMI
36583             IF(XMI.GT.PMOLB1+XMFP) PMOLB1=100D0*AXMI
36584             CALL PYTBBC(IX,100,XMI,GAM)
36585             LKNT=LKNT+1
36586             XLAM(LKNT)=GAM
36587             IDLAM(LKNT,1)=KFCCHI(IX)
36588             IDLAM(LKNT,2)=5
36589             IDLAM(LKNT,3)=-6
36590             LKNT=LKNT+1
36591             XLAM(LKNT)=XLAM(LKNT-1)
36592             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36593             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36594             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36595             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
36596             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
36597             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
36598             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
36599           ENDIF
36600   200     CONTINUE
36601         ENDIF
36602   210 CONTINUE
36603  
36604 C...R-parity violating (3-body) decays.
36605       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
36606  
36607       IKNT=LKNT
36608       XLAM(0)=0D0
36609       DO 220 I=1,IKNT
36610         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
36611         XLAM(0)=XLAM(0)+XLAM(I)
36612   220 CONTINUE
36613       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
36614  
36615       RETURN
36616       END
36617  
36618 C*********************************************************************
36619  
36620 C...PYTBBN
36621 C...Calculates the three-body decay of gluinos into
36622 C...neutralinos and third generation fermions.
36623  
36624       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
36625  
36626 C...Double precision and integer declarations.
36627       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36628       IMPLICIT INTEGER(I-N)
36629       INTEGER PYK,PYCHGE,PYCOMP
36630 C...Parameter statement to help give large particle numbers.
36631       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36632      &KEXCIT=4000000,KDIMEN=5000000)
36633 C...Commonblocks.
36634       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36635       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36636       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36637       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36638      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36639       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
36640  
36641 C...Local variables.
36642       EXTERNAL PYSIMP,PYLAMF
36643       DOUBLE PRECISION PYSIMP,PYLAMF
36644       INTEGER LIN,NN
36645       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
36646       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
36647       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
36648       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
36649       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
36650       DOUBLE PRECISION XLN1,XLN2,B1,B2
36651       DOUBLE PRECISION E,XMGLU,GAM
36652       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
36653       SAVE HRB,HLB,FLB,FRB
36654       DOUBLE PRECISION ALPHAW,ALPHAS
36655       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
36656       SAVE HLT,HRT,FLT,FRT
36657       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
36658       SAVE AMN,AN,ZN
36659       DOUBLE PRECISION AMBOT,SINC,COSC
36660       DOUBLE PRECISION AMTOP,SINA,COSA
36661       DOUBLE PRECISION SINW,COSW,TANW
36662       DOUBLE PRECISION ROT1(4,4)
36663       LOGICAL IFIRST
36664       SAVE IFIRST
36665       DATA IFIRST/.TRUE./
36666  
36667       TANB=RMSS(5)
36668       SINB=TANB/SQRT(1D0+TANB**2)
36669       COSB=SINB/TANB
36670       XW=PARU(102)
36671       SINW=SQRT(XW)
36672       COSW=SQRT(1D0-XW)
36673       TANW=SINW/COSW
36674       AMW=PMAS(24,1)
36675       COSC=SFMIX(5,1)
36676       SINC=SFMIX(5,3)
36677       COSA=SFMIX(6,1)
36678       SINA=SFMIX(6,3)
36679       AMBOT=PYMRUN(5,XMGLU**2)
36680       AMTOP=PYMRUN(6,XMGLU**2)
36681       W2=SQRT(2D0)
36682       FAKT1=AMBOT/W2/AMW/COSB
36683       FAKT2=AMTOP/W2/AMW/SINB
36684       IF(IFIRST) THEN
36685         DO 110 II=1,4
36686           AMN(II)=SMZ(II)
36687           DO 100 J=1,4
36688             ROT1(II,J)=0D0
36689             AN(II,J)=0D0
36690   100     CONTINUE
36691   110   CONTINUE
36692         ROT1(1,1)=COSW
36693         ROT1(1,2)=-SINW
36694         ROT1(2,1)=-ROT1(1,2)
36695         ROT1(2,2)=ROT1(1,1)
36696         ROT1(3,3)=COSB
36697         ROT1(3,4)=SINB
36698         ROT1(4,3)=-ROT1(3,4)
36699         ROT1(4,4)=ROT1(3,3)
36700         DO 140 II=1,4
36701           DO 130 J=1,4
36702             DO 120 JJ=1,4
36703               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
36704   120       CONTINUE
36705   130     CONTINUE
36706   140   CONTINUE
36707         DO 150 J=1,4
36708           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
36709           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
36710           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
36711      &    XW)*AN(J,2)/COSW
36712           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
36713           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
36714           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
36715           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
36716 C          FLU(J)=ZN(3)
36717 C          FRU(J)=ZN(2)
36718           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
36719           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
36720           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
36721           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
36722           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
36723           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
36724           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
36725 C          FLD(J)=ZN(3)
36726 C          FRD(J)=ZN(2)
36727   150   CONTINUE
36728 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
36729 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
36730 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
36731 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
36732         IFIRST=.FALSE.
36733       ENDIF
36734  
36735       IF(NINT(3D0*E).EQ.2) THEN
36736         HL=HLT(I)
36737         HR=HRT(I)
36738         FL=FLT(I)
36739         FR=FRT(I)
36740         COSD=SFMIX(6,1)
36741         SIND=SFMIX(6,3)
36742         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
36743         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
36744         XM=PMAS(6,1)
36745       ELSE
36746         HL=HLB(I)
36747         HR=HRB(I)
36748         FL=FLB(I)
36749         FR=FRB(I)
36750         COSD=SFMIX(5,1)
36751         SIND=SFMIX(5,3)
36752         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
36753         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
36754         XM=PMAS(5,1)
36755       ENDIF
36756       COSD2=COSD*COSD
36757       SIND2=SIND*SIND
36758       COS2D=COSD2-SIND2
36759       SIN2D=SIND*COSD*2D0
36760       HL2=HL*HL
36761       HR2=HR*HR
36762       FL2=FL*FL
36763       FR2=FR*FR
36764       FF=FL*FR
36765       HH=HL*HR
36766       HFL=HL*FL
36767       HFR=HR*FR
36768       HRFL=HR*FL
36769       HLFR=HL*FR
36770       XM2=XM*XM
36771       XMG=XMGLU
36772       XMG2=XMG*XMG
36773       ALPHAW=PYALEM(XMG2)
36774       ALPHAS=PYALPS(XMG2)
36775       XMR=AMN(I)
36776       XMR2=XMR*XMR
36777       XMQ4=XMG*XM2*XMR
36778       XM24=(XMG2+XM2)*(XM2+XMR2)
36779       SMIN=4D0*XM2
36780       SMAX=(XMG-ABS(XMR))**2
36781       XMQA=XMG2+2D0*XM2+XMR2
36782       DO 170 LIN=1,NN-1
36783         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
36784         GRS=SBAR-XMQA
36785         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
36786         W=DSQRT(W)
36787         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
36788         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
36789         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
36790         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
36791         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
36792      &  +2D0*(FF*SIND2-HH*COSD2))*W
36793         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
36794      &  +4D0*HFL*XM*XMR)*XLN1
36795      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
36796      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
36797      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
36798      &  +8D0*HFL*XMQ4*SIN2D)*B1
36799         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
36800      &  +4D0*HFR*XMR*XM)*XLN2
36801      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
36802      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
36803      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
36804      &  -8D0*HFR*XMQ4*SIN2D)*B2
36805         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
36806      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
36807      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
36808      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
36809      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
36810         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
36811      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
36812      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
36813         G(5)=(2D0*(HH*COSD2-FF*SIND2)
36814      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
36815      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
36816      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
36817      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
36818      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
36819      &  +COS2D*XM*(SBAR+XMG2-XMR2))
36820      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
36821      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
36822         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
36823      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
36824      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
36825      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
36826      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
36827         SUMME(LIN)=0D0
36828         DO 160 J=0,6
36829           SUMME(LIN)=SUMME(LIN)+G(J)
36830   160   CONTINUE
36831   170 CONTINUE
36832       SUMME(0)=0D0
36833       SUMME(NN)=0D0
36834       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
36835      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
36836  
36837       RETURN
36838       END
36839  
36840 C*********************************************************************
36841  
36842 C...PYTBBC
36843 C...Calculates the three-body decay of gluinos into
36844 C...charginos and third generation fermions.
36845  
36846       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
36847  
36848 C...Double precision and integer declarations.
36849       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36850       IMPLICIT INTEGER(I-N)
36851       INTEGER PYK,PYCHGE,PYCOMP
36852 C...Parameter statement to help give large particle numbers.
36853       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36854      &KEXCIT=4000000,KDIMEN=5000000)
36855 C...Commonblocks.
36856       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36857       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36858       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36859       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36860      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36861       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
36862  
36863 C...Local variables.
36864       EXTERNAL PYSIMP,PYLAMF
36865       DOUBLE PRECISION PYSIMP,PYLAMF
36866       INTEGER I,NN,LIN
36867       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
36868       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
36869       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
36870       DOUBLE PRECISION SUMME(0:100),A(4,8)
36871       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
36872       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
36873       DOUBLE PRECISION XMGLU,GAM
36874       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
36875      &DDD(2),EEE(2),FFF(2)
36876       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
36877       DOUBLE PRECISION ALPHAW,ALPHAS
36878       DOUBLE PRECISION AMC(2)
36879       SAVE AMC
36880       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
36881       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
36882       SAVE AMSB,AMST
36883       LOGICAL IFIRST
36884       SAVE IFIRST
36885       DATA IFIRST/.TRUE./
36886  
36887       TANB=RMSS(5)
36888       SINB=TANB/SQRT(1D0+TANB**2)
36889       COSB=SINB/TANB
36890       XW=PARU(102)
36891       AMW=PMAS(24,1)
36892       COSC=SFMIX(5,1)
36893       SINC=SFMIX(5,3)
36894       COSA=SFMIX(6,1)
36895       SINA=SFMIX(6,3)
36896       AMBOT=PYMRUN(5,XMGLU**2)
36897       AMTOP=PYMRUN(6,XMGLU**2)
36898       W2=SQRT(2D0)
36899       AMW=PMAS(24,1)
36900       FAKT1=AMBOT/W2/AMW/COSB
36901       FAKT2=AMTOP/W2/AMW/SINB
36902       IF(IFIRST) THEN
36903         AMC(1)=SMW(1)
36904         AMC(2)=SMW(2)
36905         DO 100 JJ=1,2
36906           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
36907           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
36908           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
36909           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
36910           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
36911           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
36912           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
36913           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
36914   100   CONTINUE
36915         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
36916         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
36917         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
36918         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
36919         IFIRST=.FALSE.
36920       ENDIF
36921  
36922       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
36923       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
36924       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
36925       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
36926  
36927       COS2A=COSA**2-SINA**2
36928       SIN2A=SINA*COSA*2D0
36929       COS2C=COSC**2-SINC**2
36930       SIN2C=SINC*COSC*2D0
36931  
36932       XMG=XMGLU
36933       XMT=PMAS(6,1)
36934       XMB=PMAS(5,1)
36935       XMR=AMC(I)
36936       XMG2=XMG*XMG
36937       ALPHAW=PYALEM(XMG2)
36938       ALPHAS=PYALPS(XMG2)
36939       XMT2=XMT*XMT
36940       XMB2=XMB*XMB
36941       XMR2=XMR*XMR
36942       XMQ2=XMG2+XMT2+XMB2+XMR2
36943       XMQ4=XMG*XMT*XMB*XMR
36944       XMQ3=XMG2*XMR2+XMT2*XMB2
36945       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
36946       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
36947  
36948       XMST(1)=AMST(1)*AMST(1)
36949       XMST(2)=AMST(1)*AMST(1)
36950       XMST(3)=AMST(2)*AMST(2)
36951       XMST(4)=AMST(2)*AMST(2)
36952       XMSB(1)=AMSB(1)*AMSB(1)
36953       XMSB(2)=AMSB(2)*AMSB(2)
36954       XMSB(3)=AMSB(1)*AMSB(1)
36955       XMSB(4)=AMSB(2)*AMSB(2)
36956  
36957       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
36958       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
36959       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
36960       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
36961       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
36962       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
36963       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
36964       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
36965  
36966       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
36967       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
36968       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
36969       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
36970       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
36971       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
36972       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
36973       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
36974  
36975       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
36976       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
36977       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
36978       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
36979       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
36980       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
36981       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
36982       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
36983  
36984       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
36985       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
36986       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
36987       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
36988       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
36989       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
36990       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
36991       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
36992  
36993       SMAX=(XMG-ABS(XMR))**2
36994       SMIN=(XMB+XMT)**2+0.1D0
36995  
36996       DO 120 LIN=0,NN-1
36997         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
36998         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
36999         GRS=SBAR-XMQ2
37000         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
37001         W=DSQRT(W)/2D0/SBAR
37002         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
37003         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
37004         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
37005         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
37006         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
37007      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
37008      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
37009      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
37010      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
37011      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
37012      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
37013         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
37014      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
37015      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
37016      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
37017      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
37018      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
37019      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
37020      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
37021         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
37022      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
37023      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
37024      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
37025      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
37026      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
37027      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
37028      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
37029         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
37030      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
37031      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
37032      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
37033      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
37034      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
37035      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
37036      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
37037         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
37038      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
37039      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
37040      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
37041         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
37042      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
37043      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
37044      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
37045         DO 110 J=1,4
37046           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
37047      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
37048      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
37049      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
37050      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
37051      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
37052      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
37053      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
37054      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
37055      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
37056      &    -A(J,6)*(XMG2+XMR2-SBAR)
37057      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
37058      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
37059      &    /(GRS+XMSB(J)+XMST(J))
37060   110   CONTINUE
37061   120 CONTINUE
37062       SUMME(NN)=0D0
37063       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
37064      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
37065  
37066       RETURN
37067       END
37068  
37069 C*********************************************************************
37070  
37071 C...PYNJDC
37072 C...Calculates decay widths for the neutralinos (admixtures of
37073 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
37074  
37075 C...Input:  KCIN = KF code for particle
37076 C...Output: XLAM = widths
37077 C...        IDLAM = KF codes for decay particles
37078 C...        IKNT = number of decay channels defined
37079 C...AUTHOR: STEPHEN MRENNA
37080 C...Last change:
37081 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
37082 C...when CHIGAMMA .NE. 0
37083 C...10 FEB 96:  Calculate this decay for small tan(beta)
37084  
37085       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
37086  
37087 C...Double precision and integer declarations.
37088       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37089       IMPLICIT INTEGER(I-N)
37090       INTEGER PYK,PYCHGE,PYCOMP
37091 C...Parameter statement to help give large particle numbers.
37092       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37093      &KEXCIT=4000000,KDIMEN=5000000)
37094 C...Commonblocks.
37095       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37096       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37097       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
37098 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37099 c     &SFMIX(16,4)
37100       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37101      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
37102 C      COMMON/PYINTS/XXM(20)
37103       COMPLEX*16 CXC
37104       COMMON/PYINTC/XXC(10),CXC(8)
37105       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
37106  
37107 C...Local variables.
37108       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
37109       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
37110       INTEGER KFIN
37111       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
37112      &XMZ,XMZ2,AXMJ,AXMI
37113       DOUBLE PRECISION S12MIN,S12MAX
37114       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
37115       DOUBLE PRECISION PYLAMF,XL
37116       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
37117       DOUBLE PRECISION PYX2XH,PYX2XG
37118       DOUBLE PRECISION XLAM(0:400)
37119       INTEGER IDLAM(400,3)
37120       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
37121       INTEGER ITH(3),KF1,KF2
37122       INTEGER ITHC
37123       DOUBLE PRECISION DH(3),EH(3)
37124       DOUBLE PRECISION SR2
37125       DOUBLE PRECISION CBETA,SBETA
37126       DOUBLE PRECISION GAMCON,XMT1,XMT2
37127       DOUBLE PRECISION PYALEM,PI,PYALPS
37128       DOUBLE PRECISION RAT1,RAT2
37129       DOUBLE PRECISION T3T,FCOL
37130       DOUBLE PRECISION ALFA,BETA,TANB
37131       DOUBLE PRECISION PYXXGA
37132       EXTERNAL PYGAUS,PYXXZ6
37133       DOUBLE PRECISION PYGAUS,PYXXZ6
37134       DOUBLE PRECISION PREC
37135       INTEGER KFNCHI(4),KFCCHI(2)
37136       DATA ITH/25,35,36/
37137       DATA ITHC/37/
37138       DATA PREC/1D-2/
37139       DATA PI/3.141592654D0/
37140       DATA SR2/1.4142136D0/
37141       DATA KFNCHI/1000022,1000023,1000025,1000035/
37142       DATA KFCCHI/1000024,1000037/
37143  
37144 C...COUNT THE NUMBER OF DECAY MODES
37145       LKNT=0
37146  
37147       XMW=PMAS(24,1)
37148       XMW2=XMW**2
37149       XMZ=PMAS(23,1)
37150       XMZ2=XMZ**2
37151       XW=1D0-XMW2/XMZ2
37152       XW1=1D0-XW
37153       TANW = SQRT(XW/XW1)
37154  
37155 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
37156       IX=1
37157       IF(KFIN.EQ.KFNCHI(2)) IX=2
37158       IF(KFIN.EQ.KFNCHI(3)) IX=3
37159       IF(KFIN.EQ.KFNCHI(4)) IX=4
37160  
37161       XMI=SMZ(IX)
37162       XMI2=XMI**2
37163       AXMI=ABS(XMI)
37164       AEM=PYALEM(XMI2)
37165       AS =PYALPS(XMI2)
37166       C1=AEM/XW
37167       XMI3=ABS(XMI**3)
37168  
37169       TANB=RMSS(5)
37170       BETA=ATAN(TANB)
37171       ALFA=RMSS(18)
37172       CBETA=COS(BETA)
37173       SBETA=TANB*CBETA
37174       CALFA=COS(ALFA)
37175       SALFA=SIN(ALFA)
37176  
37177       DO 110 I=1,4
37178         DO 100 J=1,4
37179           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
37180   100   CONTINUE
37181   110 CONTINUE
37182       DO 130 I=1,2
37183         DO 120 J=1,2
37184            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
37185            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
37186   120   CONTINUE
37187   130 CONTINUE
37188  
37189 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
37190       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
37191  
37192 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
37193       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
37194         XMJ=SMZ(1)
37195         AXMJ=ABS(XMJ)
37196         LKNT=LKNT+1
37197         GAMCON=AEM**3/8D0/PI/XMW2/XW
37198         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
37199         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
37200         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
37201         IDLAM(LKNT,1)=KSUSY1+22
37202         IDLAM(LKNT,2)=22
37203         IDLAM(LKNT,3)=0
37204         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
37205         GOTO 340
37206       ENDIF
37207  
37208 C...GRAVITINO DECAY MODES
37209  
37210       IF(IMSS(11).EQ.1) THEN
37211         XMP=RMSS(29)
37212         IDG=39+KSUSY1
37213         XMGR=PMAS(PYCOMP(IDG),1)
37214         SINW=SQRT(XW)
37215         COSW=SQRT(1D0-XW)
37216         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
37217         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
37218           LKNT=LKNT+1
37219           IDLAM(LKNT,1)=IDG
37220           IDLAM(LKNT,2)=22
37221           IDLAM(LKNT,3)=0
37222           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
37223         ENDIF
37224         IF(AXMI.GT.XMGR+XMZ) THEN
37225           LKNT=LKNT+1
37226           IDLAM(LKNT,1)=IDG
37227           IDLAM(LKNT,2)=23
37228           IDLAM(LKNT,3)=0
37229           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
37230      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
37231      &  (1D0-XMZ2/XMI2)**4
37232         ENDIF
37233         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
37234           LKNT=LKNT+1
37235           IDLAM(LKNT,1)=IDG
37236           IDLAM(LKNT,2)=25
37237           IDLAM(LKNT,3)=0
37238           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
37239      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
37240         ENDIF
37241         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
37242           LKNT=LKNT+1
37243           IDLAM(LKNT,1)=IDG
37244           IDLAM(LKNT,2)=35
37245           IDLAM(LKNT,3)=0
37246           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
37247      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
37248         ENDIF
37249         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
37250           LKNT=LKNT+1
37251           IDLAM(LKNT,1)=IDG
37252           IDLAM(LKNT,2)=36
37253           IDLAM(LKNT,3)=0
37254           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
37255      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
37256         ENDIF
37257         IF(IX.EQ.1) GOTO 300
37258       ENDIF
37259  
37260       DO 220 IJ=1,IX-1
37261         XMJ=SMZ(IJ)
37262         AXMJ=ABS(XMJ)
37263         XMJ2=XMJ**2
37264  
37265 C...CHI0_I -> CHI0_J + GAMMA
37266         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
37267           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
37268           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
37269           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
37270           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
37271           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
37272      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
37273             LKNT=LKNT+1
37274             IDLAM(LKNT,1)=KFNCHI(IJ)
37275             IDLAM(LKNT,2)=22
37276             IDLAM(LKNT,3)=0
37277             GAMCON=AEM**3/8D0/PI/XMW2/XW
37278             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
37279             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
37280             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
37281           ENDIF
37282         ENDIF
37283  
37284 C...CHI0_I -> CHI0_J + Z0
37285         IF(AXMI.GE.AXMJ+XMZ) THEN
37286           LKNT=LKNT+1
37287           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
37288      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
37289           ORPP=-DCONJG(OLPP)
37290           GX2=ABS(OLPP)**2+ABS(ORPP)**2
37291           GLR=DBLE(OLPP*DCONJG(ORPP))
37292           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
37293           IDLAM(LKNT,1)=KFNCHI(IJ)
37294           IDLAM(LKNT,2)=23
37295           IDLAM(LKNT,3)=0
37296         ELSEIF(AXMI.GE.AXMJ) THEN
37297           XXC(1)=0D0
37298           XXC(2)=XMJ
37299           XXC(3)=0D0
37300           XXC(4)=XMI
37301           XXC(9)=XMZ
37302           XXC(10)=PMAS(23,2)
37303           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
37304      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
37305           ORPP=DCONJG(OLPP)
37306 C...CHARGED LEPTONS
37307           FID=11
37308           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37309           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37310           EI=KCHG(FID,1)/3D0
37311           T3I=SIGN(1D0,EI+1D-6)/2D0
37312           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37313      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37314           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37315           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37316           CXC(2)=-GLIJ
37317           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37318           CXC(4)=DCONJG(GLIJ)
37319           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37320           CXC(6)=GRIJ
37321           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37322           CXC(8)=-DCONJG(GRIJ)
37323           S12MIN=0D0
37324           S12MAX=(AXMI-AXMJ)**2
37325           IF( XXC(5).LT.AXMI ) THEN
37326             XXC(5)=1D6
37327           ENDIF
37328           IF(XXC(6).LT.AXMI ) THEN
37329             XXC(6)=1D6
37330           ENDIF
37331           XXC(7)=XXC(5)
37332           XXC(8)=XXC(6)
37333  
37334           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
37335             LKNT=LKNT+1
37336             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37337      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37338             IDLAM(LKNT,1)=KFNCHI(IJ)
37339             IDLAM(LKNT,2)=FID
37340             IDLAM(LKNT,3)=-FID
37341             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
37342               LKNT=LKNT+1
37343               XLAM(LKNT)=XLAM(LKNT-1)
37344               IDLAM(LKNT,1)=KFNCHI(IJ)
37345               IDLAM(LKNT,2)=13
37346               IDLAM(LKNT,3)=-13
37347             ENDIF
37348           ENDIF
37349   140     CONTINUE
37350           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
37351             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
37352             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
37353           ELSE
37354             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
37355             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
37356           ENDIF
37357           IF( XXC(5).LT.AXMI ) THEN
37358             XXC(5)=1D6
37359           ENDIF
37360           IF(XXC(6).LT.AXMI ) THEN
37361             XXC(6)=1D6
37362           ENDIF
37363           XXC(7)=XXC(5)
37364           XXC(8)=XXC(6)
37365  
37366           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
37367             LKNT=LKNT+1
37368             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37369      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37370             IDLAM(LKNT,1)=KFNCHI(IJ)
37371             IDLAM(LKNT,2)=15
37372             IDLAM(LKNT,3)=-15
37373           ENDIF
37374  
37375 C...NEUTRINOS
37376   150     CONTINUE
37377           FID=12
37378           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37379           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37380           EI=KCHG(FID,1)/3D0
37381           T3I=SIGN(1D0,EI+1D-6)/2D0
37382           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37383      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37384           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37385           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37386           CXC(2)=-GLIJ
37387           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37388           CXC(4)=DCONJG(GLIJ)
37389           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37390           CXC(6)=GRIJ
37391           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37392           CXC(8)=-DCONJG(GRIJ)
37393           S12MIN=0D0
37394           S12MAX=(AXMI-AXMJ)**2
37395           IF( XXC(5).LT.AXMI ) THEN
37396             XXC(5)=1D6
37397           ENDIF
37398           IF( XXC(6).LT.AXMI ) THEN
37399             XXC(6)=1D6
37400           ENDIF
37401           XXC(7)=XXC(5)
37402           XXC(8)=XXC(6)
37403  
37404           LKNT=LKNT+1
37405           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37406      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37407           IDLAM(LKNT,1)=KFNCHI(IJ)
37408           IDLAM(LKNT,2)=12
37409           IDLAM(LKNT,3)=-12
37410           LKNT=LKNT+1
37411           XLAM(LKNT)=XLAM(LKNT-1)
37412           IDLAM(LKNT,1)=KFNCHI(IJ)
37413           IDLAM(LKNT,2)=14
37414           IDLAM(LKNT,3)=-14
37415   160     CONTINUE
37416  
37417           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
37418      &    THEN
37419             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
37420             IF( XXC(5).LT.AXMI ) THEN
37421               XXC(5)=1D6
37422             ENDIF
37423             XXC(7)=XXC(5)
37424             LKNT=LKNT+1
37425             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37426      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37427           ELSE
37428             LKNT=LKNT+1
37429             XLAM(LKNT)=XLAM(LKNT-1)
37430           ENDIF
37431           IDLAM(LKNT,1)=KFNCHI(IJ)
37432           IDLAM(LKNT,2)=16
37433           IDLAM(LKNT,3)=-16
37434 C...D-TYPE QUARKS
37435   170     CONTINUE
37436           FID=1
37437           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37438           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37439           EI=KCHG(FID,1)/3D0
37440           T3I=SIGN(1D0,EI+1D-6)/2D0
37441           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37442      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37443           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37444           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37445           CXC(2)=-GLIJ
37446           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37447           CXC(4)=DCONJG(GLIJ)
37448           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37449           CXC(6)=GRIJ
37450           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37451           CXC(8)=-DCONJG(GRIJ)
37452           S12MIN=0D0
37453           S12MAX=(AXMI-AXMJ)**2
37454           IF( XXC(5).LT.AXMI ) THEN
37455             XXC(5)=1D6
37456           ENDIF
37457           IF( XXC(6).LT.AXMI ) THEN
37458             XXC(6)=1D6
37459           ENDIF
37460           XXC(7)=XXC(5)
37461           XXC(8)=XXC(6)
37462  
37463           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
37464             LKNT=LKNT+1
37465             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37466      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37467             IDLAM(LKNT,1)=KFNCHI(IJ)
37468             IDLAM(LKNT,2)=1
37469             IDLAM(LKNT,3)=-1
37470             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
37471               LKNT=LKNT+1
37472               XLAM(LKNT)=XLAM(LKNT-1)
37473               IDLAM(LKNT,1)=KFNCHI(IJ)
37474               IDLAM(LKNT,2)=3
37475               IDLAM(LKNT,3)=-3
37476             ENDIF
37477           ENDIF
37478   180     CONTINUE
37479           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
37480             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
37481             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
37482           ELSE
37483             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
37484             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
37485           ENDIF
37486           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
37487           IF(XXC(5).LT.AXMI) THEN
37488             XXC(5)=1D6
37489           ELSEIF(XXC(6).LT.AXMI) THEN
37490             XXC(6)=1D6
37491           ENDIF
37492           XXC(7)=XXC(5)
37493           XXC(8)=XXC(6)
37494           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
37495             LKNT=LKNT+1
37496             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37497      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37498             IDLAM(LKNT,1)=KFNCHI(IJ)
37499             IDLAM(LKNT,2)=5
37500             IDLAM(LKNT,3)=-5
37501           ENDIF
37502  
37503 C...U-TYPE QUARKS
37504   190     CONTINUE
37505           FID=2
37506           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37507           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37508           EI=KCHG(FID,1)/3D0
37509           T3I=SIGN(1D0,EI+1D-6)/2D0
37510           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37511      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37512           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37513           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37514           CXC(2)=-GLIJ
37515           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37516           CXC(4)=DCONJG(GLIJ)
37517           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37518           CXC(6)=GRIJ
37519           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37520           CXC(8)=-DCONJG(GRIJ)
37521  
37522           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
37523           IF(XXC(5).LT.AXMI) THEN
37524             XXC(5)=1D6
37525           ELSEIF(XXC(6).LT.AXMI) THEN
37526             XXC(6)=1D6
37527           ENDIF
37528           XXC(7)=XXC(5)
37529           XXC(8)=XXC(6)
37530  
37531           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
37532             LKNT=LKNT+1
37533             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37534      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37535             IDLAM(LKNT,1)=KFNCHI(IJ)
37536             IDLAM(LKNT,2)=2
37537             IDLAM(LKNT,3)=-2
37538             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
37539               LKNT=LKNT+1
37540               XLAM(LKNT)=XLAM(LKNT-1)
37541               IDLAM(LKNT,1)=KFNCHI(IJ)
37542               IDLAM(LKNT,2)=4
37543               IDLAM(LKNT,3)=-4
37544             ENDIF
37545           ENDIF
37546   200     CONTINUE
37547         ENDIF
37548  
37549 C...CHI0_I -> CHI0_J + H0_K
37550         EH(1)=SIN(ALFA)
37551         EH(2)=COS(ALFA)
37552         EH(3)=-SIN(BETA)
37553         DH(1)=COS(ALFA)
37554         DH(2)=-SIN(ALFA)
37555         DH(3)=COS(BETA)
37556         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
37557      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
37558      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
37559      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
37560         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
37561      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
37562      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
37563      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
37564         DO 210 IH=1,3
37565           XMH=PMAS(ITH(IH),1)
37566           XMH2=XMH**2
37567           IF(AXMI.GE.AXMJ+XMH) THEN
37568             LKNT=LKNT+1
37569             XL=PYLAMF(XMI2,XMJ2,XMH2)
37570             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
37571             F12K=F21K
37572 C...SIGN OF MASSES I,J
37573             XMK=XMJ
37574             IF(IH.EQ.3) XMK=-XMK
37575             GX2=ABS(F21K)**2+ABS(F12K)**2
37576             GLR=DBLE(F21K*DCONJG(F12K))
37577             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
37578             IDLAM(LKNT,1)=KFNCHI(IJ)
37579             IDLAM(LKNT,2)=ITH(IH)
37580             IDLAM(LKNT,3)=0
37581           ENDIF
37582   210   CONTINUE
37583   220 CONTINUE
37584  
37585 C...CHI0_I -> CHI+_J + W-
37586       DO 260 IJ=1,2
37587         XMJ=SMW(IJ)
37588         AXMJ=ABS(XMJ)
37589         XMJ2=XMJ**2
37590         IF(AXMI.GE.AXMJ+XMW) THEN
37591           LKNT=LKNT+1
37592           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
37593      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
37594           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
37595      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
37596           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
37597           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
37598           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
37599           IDLAM(LKNT,1)=KFCCHI(IJ)
37600           IDLAM(LKNT,2)=-24
37601           IDLAM(LKNT,3)=0
37602           LKNT=LKNT+1
37603           XLAM(LKNT)=XLAM(LKNT-1)
37604           IDLAM(LKNT,1)=-KFCCHI(IJ)
37605           IDLAM(LKNT,2)=24
37606           IDLAM(LKNT,3)=0
37607         ELSEIF(AXMI.GE.AXMJ) THEN
37608           S12MIN=0D0
37609           S12MAX=(AXMI-AXMJ)**2
37610           RT2I = 1D0/SQRT(2D0)
37611           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
37612      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
37613           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
37614      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
37615           CXC(5)=DCMPLX(0D0,0D0)
37616           CXC(7)=DCMPLX(0D0,0D0)
37617           IA=11
37618           JA=12
37619           EI=KCHG(IA,1)/3D0
37620           T3I=SIGN(1D0,EI+1D-6)/2D0
37621           EJ=KCHG(JA,1)/3D0
37622           T3J=SIGN(1D0,EJ+1D-6)/2D0
37623           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
37624      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
37625           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
37626      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
37627           CXC(6)=DCMPLX(0D0,0D0)
37628           CXC(8)=DCMPLX(0D0,0D0)
37629           XXC(1)=0D0
37630           XXC(2)=XMJ
37631           XXC(3)=0D0
37632           XXC(4)=XMI
37633           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
37634           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
37635           XXC(9)=PMAS(24,1)
37636           XXC(10)=PMAS(24,2)
37637           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
37638           IF(XXC(5).LT.AXMI) THEN
37639             XXC(5)=1D6
37640           ELSEIF(XXC(6).LT.AXMI) THEN
37641             XXC(6)=1D6
37642           ENDIF
37643           XXC(7)=XXC(6)
37644           XXC(8)=XXC(5)
37645           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
37646             LKNT=LKNT+1
37647             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37648      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37649             IDLAM(LKNT,1)=KFCCHI(IJ)
37650             IDLAM(LKNT,2)=11
37651             IDLAM(LKNT,3)=-12
37652             LKNT=LKNT+1
37653             XLAM(LKNT)=XLAM(LKNT-1)
37654             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37655             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37656             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37657             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
37658               LKNT=LKNT+1
37659               XLAM(LKNT)=XLAM(LKNT-1)
37660               IDLAM(LKNT,1)=KFCCHI(IJ)
37661               IDLAM(LKNT,2)=13
37662               IDLAM(LKNT,3)=-14
37663               LKNT=LKNT+1
37664               XLAM(LKNT)=XLAM(LKNT-1)
37665               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37666               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37667               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37668             ENDIF
37669           ENDIF
37670   230     CONTINUE
37671           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
37672             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
37673             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
37674           ELSE
37675             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
37676             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
37677           ENDIF
37678           IF(XXC(5).LT.AXMI) THEN
37679             XXC(5)=1D6
37680           ENDIF
37681           IF(XXC(6).LT.AXMI) THEN
37682             XXC(6)=1D6
37683           ENDIF
37684           XXC(7)=XXC(6)
37685           XXC(8)=XXC(5)
37686           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
37687             LKNT=LKNT+1
37688             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37689      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37690             XLAM(LKNT)=XLAM(LKNT-1)
37691             IDLAM(LKNT,1)=KFCCHI(IJ)
37692             IDLAM(LKNT,2)=15
37693             IDLAM(LKNT,3)=-16
37694             LKNT=LKNT+1
37695             XLAM(LKNT)=XLAM(LKNT-1)
37696             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37697             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37698             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37699           ENDIF
37700  
37701 C...NOW, DO THE QUARKS
37702   240     CONTINUE
37703           IA=1
37704           JA=2
37705           EI=KCHG(IA,1)/3D0
37706           T3I=SIGN(1D0,EI+1D-6)/2D0
37707           EJ=KCHG(JA,1)/3D0
37708           T3J=SIGN(1D0,EJ+1D-6)/2D0
37709           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
37710      &    TANW+ZMIXC(IX,2)*T3J)
37711           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
37712      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
37713           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
37714           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
37715           IF(XXC(5).LT.AXMI) THEN
37716             XXC(5)=1D6
37717           ENDIF
37718           IF(XXC(6).LT.AXMI) THEN
37719             XXC(6)=1D6
37720           ENDIF
37721           XXC(7)=XXC(6)
37722           XXC(8)=XXC(5)
37723           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
37724             LKNT=LKNT+1
37725             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
37726      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37727             IDLAM(LKNT,1)=KFCCHI(IJ)
37728             IDLAM(LKNT,2)=1
37729             IDLAM(LKNT,3)=-2
37730             LKNT=LKNT+1
37731             XLAM(LKNT)=XLAM(LKNT-1)
37732             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37733             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37734             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37735             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
37736               LKNT=LKNT+1
37737               XLAM(LKNT)=XLAM(LKNT-1)
37738               IDLAM(LKNT,1)=KFCCHI(IJ)
37739               IDLAM(LKNT,2)=3
37740               IDLAM(LKNT,3)=-4
37741               LKNT=LKNT+1
37742               XLAM(LKNT)=XLAM(LKNT-1)
37743               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37744               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37745               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37746             ENDIF
37747           ENDIF
37748   250     CONTINUE
37749         ENDIF
37750   260 CONTINUE
37751   270 CONTINUE
37752  
37753 C...CHI0_I -> CHI+_I + H-
37754       DO 280 IJ=1,2
37755         XMJ=SMW(IJ)
37756         AXMJ=ABS(XMJ)
37757         XMJ2=XMJ**2
37758         XMHP=PMAS(ITHC,1)
37759         IF(AXMI.GE.AXMJ+XMHP) THEN
37760           LKNT=LKNT+1
37761           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
37762      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
37763           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
37764      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
37765      &    UMIXC(IJ,2)/SR2)
37766           GX2=ABS(OLPP)**2+ABS(ORPP)**2
37767           GLR=DBLE(OLPP*DCONJG(ORPP))
37768           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
37769           IDLAM(LKNT,1)=KFCCHI(IJ)
37770           IDLAM(LKNT,2)=-ITHC
37771           IDLAM(LKNT,3)=0
37772           LKNT=LKNT+1
37773           XLAM(LKNT)=XLAM(LKNT-1)
37774           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37775           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37776           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37777         ELSE
37778  
37779         ENDIF
37780   280 CONTINUE
37781  
37782 C...2-BODY DECAYS TO FERMION SFERMION
37783       DO 290 J=1,16
37784         IF(J.GE.7.AND.J.LE.10) GOTO 290
37785         KF1=KSUSY1+J
37786         KF2=KSUSY2+J
37787         XMSF1=PMAS(PYCOMP(KF1),1)
37788         XMSF2=PMAS(PYCOMP(KF2),1)
37789         XMF=PMAS(J,1)
37790         IF(J.LE.6) THEN
37791           FCOL=3D0
37792         ELSE
37793           FCOL=1D0
37794         ENDIF
37795  
37796         EI=KCHG(J,1)/3D0
37797         T3T=SIGN(1D0,EI)
37798         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
37799         IF(MOD(J,2).EQ.0) THEN
37800           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
37801           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
37802           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
37803           CBR=CAL
37804         ELSE
37805           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
37806           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
37807           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
37808           CBR=CAL
37809         ENDIF
37810  
37811 C...D~ D_L
37812         IF(AXMI.GE.XMF+XMSF1) THEN
37813           LKNT=LKNT+1
37814           XMA2=XMSF1**2
37815           XMB2=XMF**2
37816           XL=PYLAMF(XMI2,XMA2,XMB2)
37817           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
37818           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
37819           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
37820      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
37821           IDLAM(LKNT,1)=KF1
37822           IDLAM(LKNT,2)=-J
37823           IDLAM(LKNT,3)=0
37824           LKNT=LKNT+1
37825           XLAM(LKNT)=XLAM(LKNT-1)
37826           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37827           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37828           IDLAM(LKNT,3)=0
37829         ENDIF
37830  
37831 C...D~ D_R
37832         IF(AXMI.GE.XMF+XMSF2) THEN
37833           LKNT=LKNT+1
37834           XMA2=XMSF2**2
37835           XMB2=XMF**2
37836           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
37837           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
37838           XL=PYLAMF(XMI2,XMA2,XMB2)
37839           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
37840      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
37841           IDLAM(LKNT,1)=KF2
37842           IDLAM(LKNT,2)=-J
37843           IDLAM(LKNT,3)=0
37844           LKNT=LKNT+1
37845           XLAM(LKNT)=XLAM(LKNT-1)
37846           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37847           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37848           IDLAM(LKNT,3)=0
37849         ENDIF
37850   290 CONTINUE
37851   300 CONTINUE
37852 C...3-BODY DECAY TO Q Q~ GLUINO
37853       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
37854       IF(AXMI.GE.XMJ) THEN
37855         RT2I = 1D0/SQRT(2D0)
37856         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
37857         ORPP=DCONJG(OLPP)
37858         AXMJ=ABS(XMJ)
37859         XXC(1)=0D0
37860         XXC(2)=XMJ
37861         XXC(3)=0D0
37862         XXC(4)=XMI
37863         FID=1
37864         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37865         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37866         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
37867         XXC(7)=XXC(5)
37868         XXC(8)=XXC(6)
37869         XXC(9)=1D6
37870         XXC(10)=0D0
37871         EI=KCHG(FID,1)/3D0
37872         T3I=SIGN(1D0,EI+1D-6)/2D0
37873         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
37874         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
37875         CXC(1)=0D0
37876         CXC(2)=-GLIJ
37877         CXC(3)=0D0
37878         CXC(4)=DCONJG(GLIJ)
37879         CXC(5)=0D0
37880         CXC(6)=GRIJ
37881         CXC(7)=0D0
37882         CXC(8)=-DCONJG(GRIJ)
37883         S12MIN=0D0
37884         S12MAX=(AXMI-AXMJ)**2
37885 C...ALL QUARKS BUT T
37886         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
37887           LKNT=LKNT+1
37888           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
37889      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37890           IDLAM(LKNT,1)=KSUSY1+21
37891           IDLAM(LKNT,2)=1
37892           IDLAM(LKNT,3)=-1
37893           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
37894             LKNT=LKNT+1
37895             XLAM(LKNT)=XLAM(LKNT-1)
37896             IDLAM(LKNT,1)=KSUSY1+21
37897             IDLAM(LKNT,2)=3
37898             IDLAM(LKNT,3)=-3
37899           ENDIF
37900         ENDIF
37901   310   CONTINUE
37902         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
37903           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
37904           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
37905         ELSE
37906           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
37907           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
37908         ENDIF
37909         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
37910         XXC(7)=XXC(5)
37911         XXC(8)=XXC(6)
37912         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
37913           LKNT=LKNT+1
37914           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
37915      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37916           IDLAM(LKNT,1)=KSUSY1+21
37917           IDLAM(LKNT,2)=5
37918           IDLAM(LKNT,3)=-5
37919         ENDIF
37920 C...U-TYPE QUARKS
37921   320   CONTINUE
37922         FID=2
37923         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37924         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37925         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
37926         XXC(7)=XXC(5)
37927         XXC(8)=XXC(6)
37928         EI=KCHG(FID,1)/3D0
37929         T3I=SIGN(1D0,EI+1D-6)/2D0
37930         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
37931         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
37932         CXC(2)=-GLIJ
37933         CXC(4)=DCONJG(GLIJ)
37934         CXC(6)=GRIJ
37935         CXC(8)=-DCONJG(GRIJ)
37936         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
37937           LKNT=LKNT+1
37938           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
37939      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37940           IDLAM(LKNT,1)=KSUSY1+21
37941           IDLAM(LKNT,2)=2
37942           IDLAM(LKNT,3)=-2
37943           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
37944             LKNT=LKNT+1
37945             XLAM(LKNT)=XLAM(LKNT-1)
37946             IDLAM(LKNT,1)=KSUSY1+21
37947             IDLAM(LKNT,2)=4
37948             IDLAM(LKNT,3)=-4
37949           ENDIF
37950         ENDIF
37951   330   CONTINUE
37952       ENDIF
37953  
37954 C...R-violating decay modes (SKANDS).
37955       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
37956  
37957   340 IKNT=LKNT
37958       XLAM(0)=0D0
37959       DO 350 I=1,IKNT
37960         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
37961         XLAM(0)=XLAM(0)+XLAM(I)
37962   350 CONTINUE
37963       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
37964  
37965       RETURN
37966       END
37967  
37968 C*********************************************************************
37969  
37970 C...PYCJDC
37971 C...Calculate decay widths for the charginos (admixtures of
37972 C...charged Wino and charged Higgsino.
37973  
37974 C...Input:  KCIN = KF code for particle
37975 C...Output: XLAM = widths
37976 C...        IDLAM = KF codes for decay particles
37977 C...        IKNT = number of decay channels defined
37978 C...AUTHOR: STEPHEN MRENNA
37979 C...Last change:
37980 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
37981 C...when CHIENU .NE. 0
37982  
37983       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
37984  
37985 C...Double precision and integer declarations.
37986       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37987       IMPLICIT INTEGER(I-N)
37988       INTEGER PYK,PYCHGE,PYCOMP
37989 C...Parameter statement to help give large particle numbers.
37990       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37991      &KEXCIT=4000000,KDIMEN=5000000)
37992 C...Commonblocks.
37993       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37994       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37995       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
37996       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37997      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
37998 CC     &SFMIX(16,4),
37999 C      COMMON/PYINTS/XXM(20)
38000       COMPLEX*16 CXC
38001       COMMON/PYINTC/XXC(10),CXC(8)
38002       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
38003  
38004 C...Local variables
38005       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
38006       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
38007       INTEGER KFIN,KCIN
38008       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
38009      &XMZ,XMZ2,AXMJ,AXMI
38010       DOUBLE PRECISION S12MIN,S12MAX
38011       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
38012       DOUBLE PRECISION PYLAMF,XL
38013       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
38014       DOUBLE PRECISION PYX2XH,PYX2XG
38015       DOUBLE PRECISION XLAM(0:400)
38016       INTEGER IDLAM(400,3)
38017       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
38018       INTEGER ITH(3)
38019       INTEGER ITHC
38020       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
38021       DOUBLE PRECISION SR2
38022       DOUBLE PRECISION CBETA,SBETA,TANB
38023  
38024       DOUBLE PRECISION PYALEM,PI,PYALPS
38025       DOUBLE PRECISION FCOL
38026       INTEGER KF1,KF2,ISF
38027       INTEGER KFNCHI(4),KFCCHI(2)
38028  
38029       DOUBLE PRECISION TEMP
38030       EXTERNAL PYGAUS,PYXXZ6
38031       DOUBLE PRECISION PYGAUS,PYXXZ6
38032       DOUBLE PRECISION PREC
38033       DATA ITH/25,35,36/
38034       DATA ITHC/37/
38035       DATA ETAH/1D0,1D0,-1D0/
38036       DATA SR2/1.4142136D0/
38037       DATA PI/3.141592654D0/
38038       DATA PREC/1D-2/
38039       DATA KFNCHI/1000022,1000023,1000025,1000035/
38040       DATA KFCCHI/1000024,1000037/
38041  
38042 C...COUNT THE NUMBER OF DECAY MODES
38043       LKNT=0
38044       XMW=PMAS(24,1)
38045       XMW2=XMW**2
38046       XMZ=PMAS(23,1)
38047       XMZ2=XMZ**2
38048       XW=1D0-XMW2/XMZ2
38049       XW1=1D0-XW
38050       TANW = SQRT(XW/XW1)
38051  
38052 C...1 OR 2 DEPENDING ON CHARGINO TYPE
38053       IX=1
38054       IF(KFIN.EQ.KFCCHI(2)) IX=2
38055       KCIN=PYCOMP(KFIN)
38056  
38057       XMI=SMW(IX)
38058       XMI2=XMI**2
38059       AXMI=ABS(XMI)
38060       AEM=PYALEM(XMI2)
38061       AS =PYALPS(XMI2)
38062       C1=AEM/XW
38063       XMI3=ABS(XMI**3)
38064       TANB=RMSS(5)
38065       BETA=ATAN(TANB)
38066       CBETA=COS(BETA)
38067       SBETA=TANB*CBETA
38068       ALFA=RMSS(18)
38069  
38070       DO 110 I=1,2
38071         DO 100 J=1,2
38072           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
38073           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
38074   100   CONTINUE
38075   110 CONTINUE
38076  
38077 C...GRAVITINO DECAY MODES
38078  
38079       IF(IMSS(11).EQ.1) THEN
38080         XMP=RMSS(29)
38081         IDG=39+KSUSY1
38082         XMGR=PMAS(PYCOMP(IDG),1)
38083 C        SINW=SQRT(XW)
38084 C        COSW=SQRT(1D0-XW)
38085         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
38086         IF(AXMI.GT.XMGR+XMW) THEN
38087           LKNT=LKNT+1
38088           IDLAM(LKNT,1)=IDG
38089           IDLAM(LKNT,2)=24
38090           IDLAM(LKNT,3)=0
38091           XLAM(LKNT)=XFAC*(
38092      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
38093      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
38094      &  (1D0-XMW2/XMI2)**4
38095         ENDIF
38096         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
38097           LKNT=LKNT+1
38098           IDLAM(LKNT,1)=IDG
38099           IDLAM(LKNT,2)=37
38100           IDLAM(LKNT,3)=0
38101           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
38102      &   (ABS(UMIXC(IX,2))*SBETA)**2))
38103      &   *(1D0-PMAS(37,1)**2/XMI2)**4
38104        ENDIF
38105       ENDIF
38106  
38107 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
38108       IF(IX.EQ.1) GOTO 170
38109       XMJ=SMW(1)
38110       AXMJ=ABS(XMJ)
38111       XMJ2=XMJ**2
38112  
38113 C...CHI_2+ -> CHI_1+ + Z0
38114       IF(AXMI.GE.AXMJ+XMZ) THEN
38115         LKNT=LKNT+1
38116         IJ=1
38117         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
38118      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
38119         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
38120      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
38121         GX2=ABS(OLPP)**2+ABS(ORPP)**2
38122         GLR=DBLE(OLPP*DCONJG(ORPP))
38123         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
38124         IDLAM(LKNT,1)=KFCCHI(1)
38125         IDLAM(LKNT,2)=23
38126         IDLAM(LKNT,3)=0
38127  
38128 C...CHARGED LEPTONS
38129       ELSEIF(AXMI.GE.AXMJ) THEN
38130         S12MIN=0D0
38131         S12MAX=(AXMI-AXMJ)**2
38132         IA=11
38133         JA=12
38134         EI=KCHG(IABS(IA),1)/3D0
38135         T3I=SIGN(1D0,EI+1D-6)/2D0
38136         XXC(1)=0D0
38137         XXC(2)=XMJ
38138         XXC(3)=0D0
38139         XXC(4)=XMI
38140         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38141         XXC(6)=1D6
38142         XXC(9)=PMAS(23,1)
38143         XXC(10)=PMAS(23,2)
38144         IJ=1
38145         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
38146      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
38147         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
38148      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
38149         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38150         CXC(2)=DCMPLX(0D0,0D0)
38151         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38152         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
38153         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38154         CXC(6)=DCMPLX(0D0,0D0)
38155         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38156         CXC(8)=DCMPLX(0D0,0D0)
38157         IF( XXC(5).LT.AXMI ) THEN
38158           XXC(5)=1D6
38159         ENDIF
38160         XXC(7)=XXC(5)
38161         XXC(8)=XXC(6)
38162         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
38163           LKNT=LKNT+1
38164           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38165      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38166           IDLAM(LKNT,1)=KFCCHI(1)
38167           IDLAM(LKNT,2)=11
38168           IDLAM(LKNT,3)=-11
38169           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
38170             LKNT=LKNT+1
38171             XLAM(LKNT)=XLAM(LKNT-1)
38172             IDLAM(LKNT,1)=KFCCHI(1)
38173             IDLAM(LKNT,2)=13
38174             IDLAM(LKNT,3)=-13
38175           ENDIF
38176           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
38177             LKNT=LKNT+1
38178             XLAM(LKNT)=XLAM(LKNT-1)
38179             IDLAM(LKNT,1)=KFCCHI(1)
38180             IDLAM(LKNT,2)=15
38181             IDLAM(LKNT,3)=-15
38182           ENDIF
38183         ENDIF
38184  
38185 C...NEUTRINOS
38186   120   CONTINUE
38187         IA=12
38188         JA=11
38189         EI=KCHG(IABS(IA),1)/3D0
38190         T3I=SIGN(1D0,EI+1D-6)/2D0
38191         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38192         XXC(6)=1D6
38193         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38194         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38195         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
38196         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38197         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38198         IF( XXC(5).LT.AXMI ) THEN
38199           XXC(5)=1D6
38200         ENDIF
38201         XXC(7)=XXC(5)
38202         XXC(8)=XXC(6)
38203         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
38204           LKNT=LKNT+1
38205           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38206      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38207           IDLAM(LKNT,1)=KFCCHI(1)
38208           IDLAM(LKNT,2)=12
38209           IDLAM(LKNT,3)=-12
38210           LKNT=LKNT+1
38211           XLAM(LKNT)=XLAM(LKNT-1)
38212           IDLAM(LKNT,1)=KFCCHI(1)
38213           IDLAM(LKNT,2)=14
38214           IDLAM(LKNT,3)=-14
38215         ENDIF
38216         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
38217           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
38218             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
38219           ELSE
38220             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
38221           ENDIF
38222           IF( XXC(5).LT.AXMI ) THEN
38223             XXC(5)=1D6
38224           ENDIF
38225           XXC(7)=XXC(5)
38226           LKNT=LKNT+1
38227           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38228      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38229           IDLAM(LKNT,1)=KFCCHI(1)
38230           IDLAM(LKNT,2)=16
38231           IDLAM(LKNT,3)=-16
38232         ENDIF
38233  
38234 C...D-TYPE QUARKS
38235   130   CONTINUE
38236         IA=1
38237         JA=2
38238         EI=KCHG(IABS(IA),1)/3D0
38239         T3I=SIGN(1D0,EI+1D-6)/2D0
38240         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38241         XXC(6)=1D6
38242         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38243         CXC(2)=DCMPLX(0D0,0D0)
38244         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38245         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
38246         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38247         CXC(6)=DCMPLX(0D0,0D0)
38248         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38249         CXC(8)=DCMPLX(0D0,0D0)
38250         IF( XXC(5).LT.AXMI ) THEN
38251           XXC(5)=1D6
38252         ENDIF
38253         XXC(7)=XXC(5)
38254         XXC(8)=XXC(6)
38255         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
38256           LKNT=LKNT+1
38257           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38258      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38259           IDLAM(LKNT,1)=KFCCHI(1)
38260           IDLAM(LKNT,2)=1
38261           IDLAM(LKNT,3)=-1
38262           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
38263             LKNT=LKNT+1
38264             XLAM(LKNT)=XLAM(LKNT-1)
38265             IDLAM(LKNT,1)=KFCCHI(1)
38266             IDLAM(LKNT,2)=3
38267             IDLAM(LKNT,3)=-3
38268           ENDIF
38269         ENDIF
38270         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
38271           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
38272             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
38273           ELSE
38274             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
38275           ENDIF
38276           IF( XXC(5).LT.AXMI ) THEN
38277             XXC(5)=1D6
38278           ENDIF
38279           XXC(7)=XXC(5)
38280           LKNT=LKNT+1
38281           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38282      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38283           IDLAM(LKNT,1)=KFCCHI(1)
38284           IDLAM(LKNT,2)=5
38285           IDLAM(LKNT,3)=-5
38286         ENDIF
38287  
38288 C...U-TYPE QUARKS
38289   140   CONTINUE
38290         IA=2
38291         JA=1
38292         EI=KCHG(IABS(IA),1)/3D0
38293         T3I=SIGN(1D0,EI+1D-6)/2D0
38294         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38295         XXC(6)=1D6
38296         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38297         CXC(2)=DCMPLX(0D0,0D0)
38298         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38299         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
38300         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38301         CXC(6)=DCMPLX(0D0,0D0)
38302         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38303         CXC(8)=DCMPLX(0D0,0D0)
38304         IF( XXC(5).LT.AXMI ) THEN
38305           XXC(5)=1D6
38306         ENDIF
38307         XXC(7)=XXC(5)
38308         XXC(8)=XXC(6)
38309         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
38310           LKNT=LKNT+1
38311           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38312      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38313           IDLAM(LKNT,1)=KFCCHI(1)
38314           IDLAM(LKNT,2)=2
38315           IDLAM(LKNT,3)=-2
38316           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
38317             LKNT=LKNT+1
38318             XLAM(LKNT)=XLAM(LKNT-1)
38319             IDLAM(LKNT,1)=KFCCHI(1)
38320             IDLAM(LKNT,2)=4
38321             IDLAM(LKNT,3)=-4
38322           ENDIF
38323         ENDIF
38324   150   CONTINUE
38325       ENDIF
38326  
38327 C...CHI_2+ -> CHI_1+ + H0_K
38328       EH(2)=COS(ALFA)
38329       EH(1)=SIN(ALFA)
38330       EH(3)=-SBETA
38331       DH(2)=-SIN(ALFA)
38332       DH(1)=COS(ALFA)
38333       DH(3)=COS(BETA)
38334       DO 160 IH=1,3
38335         XMH=PMAS(ITH(IH),1)
38336         XMH2=XMH**2
38337 C...NO 3-BODY OPTION
38338         IF(AXMI.GE.AXMJ+XMH) THEN
38339           LKNT=LKNT+1
38340           XL=PYLAMF(XMI2,XMJ2,XMH2)
38341           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
38342      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
38343           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
38344      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
38345           XMK=XMJ*ETAH(IH)
38346           GX2=ABS(OLPP)**2+ABS(ORPP)**2
38347           GLR=DBLE(OLPP*DCONJG(ORPP))
38348           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
38349           IDLAM(LKNT,1)=KFCCHI(1)
38350           IDLAM(LKNT,2)=ITH(IH)
38351           IDLAM(LKNT,3)=0
38352         ENDIF
38353   160 CONTINUE
38354  
38355 C...CHI1 JUMPS TO HERE
38356   170 CONTINUE
38357  
38358 C...CHI+_I -> CHI0_J + W+
38359       DO 220 IJ=1,4
38360         XMJ=SMZ(IJ)
38361         AXMJ=ABS(XMJ)
38362         XMJ2=XMJ**2
38363         IF(AXMI.GE.AXMJ+XMW) THEN
38364           LKNT=LKNT+1
38365           DO 180 I=1,4
38366             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
38367   180     CONTINUE
38368           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
38369      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
38370           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
38371      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
38372           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
38373           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
38374           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
38375           IDLAM(LKNT,1)=KFNCHI(IJ)
38376           IDLAM(LKNT,2)=24
38377           IDLAM(LKNT,3)=0
38378 C...LEPTONS
38379         ELSEIF(AXMI.GE.AXMJ) THEN
38380           S12MIN=0D0
38381           S12MAX=(AXMI-AXMJ)**2
38382           DO 190 I=1,4
38383             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
38384   190     CONTINUE
38385           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
38386      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
38387           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
38388      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
38389           CXC(5)=DCMPLX(0D0,0D0)
38390           CXC(7)=DCMPLX(0D0,0D0)
38391           IA=11
38392           JA=12
38393           EI=KCHG(IA,1)/3D0
38394           T3I=SIGN(1D0,EI+1D-6)/2D0
38395           EJ=KCHG(JA,1)/3D0
38396           T3J=SIGN(1D0,EJ+1D-6)/2D0
38397           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
38398      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
38399           CXC(4)=-DCONJG(UMIXC(IX,1))*(
38400      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
38401           CXC(6)=DCMPLX(0D0,0D0)
38402           CXC(8)=DCMPLX(0D0,0D0)
38403           XXC(1)=0D0
38404           XXC(2)=XMJ
38405           XXC(3)=0D0
38406           XXC(4)=XMI
38407           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38408           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
38409           XXC(9)=PMAS(24,1)
38410           XXC(10)=PMAS(24,2)
38411 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
38412           IF(XXC(5).LT.AXMI) THEN
38413             XXC(5)=1D6
38414           ELSEIF(XXC(6).LT.AXMI) THEN
38415             XXC(6)=1D6
38416           ENDIF
38417           XXC(7)=XXC(6)
38418           XXC(8)=XXC(5)
38419 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
38420 C...--> 1/(16PI)/M**3*(AEM/XW)**2
38421           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
38422             LKNT=LKNT+1
38423             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38424             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
38425             IDLAM(LKNT,1)=KFNCHI(IJ)
38426             IDLAM(LKNT,2)=-11
38427             IDLAM(LKNT,3)=12
38428 C...ONLY DECAY CHI+1 -> E+ NU_E
38429             IF( IMSS(12).NE. 0 ) GOTO 260
38430             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
38431               LKNT=LKNT+1
38432               XLAM(LKNT)=XLAM(LKNT-1)
38433               IDLAM(LKNT,1)=KFNCHI(IJ)
38434               IDLAM(LKNT,2)=-13
38435               IDLAM(LKNT,3)=14
38436             ENDIF
38437           ENDIF
38438           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
38439             LKNT=LKNT+1
38440             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
38441               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
38442             ELSE
38443               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
38444             ENDIF
38445             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
38446             IF(XXC(5).LT.AXMI) THEN
38447               XXC(5)=1D6
38448             ELSEIF(XXC(6).LT.AXMI) THEN
38449               XXC(6)=1D6
38450             ENDIF
38451             XXC(7)=XXC(6)
38452             XXC(8)=XXC(5)
38453             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38454             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
38455             IDLAM(LKNT,1)=KFNCHI(IJ)
38456             IDLAM(LKNT,2)=-15
38457             IDLAM(LKNT,3)=16
38458           ENDIF
38459  
38460 C...NOW, DO THE QUARKS
38461   200     CONTINUE
38462           IA=1
38463           JA=2
38464           EI=KCHG(IA,1)/3D0
38465           T3I=SIGN(1D0,EI+1D-6)/2D0
38466           EJ=KCHG(JA,1)/3D0
38467           T3J=SIGN(1D0,EJ+1D-6)/2D0
38468           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
38469      &    TANW+ZMIXC(IX,2)*T3J)
38470           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
38471      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
38472           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38473           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
38474           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
38475           IF(XXC(5).LT.AXMI) THEN
38476             XXC(5)=1D6
38477           ENDIF
38478           IF(XXC(6).LT.AXMI) THEN
38479             XXC(6)=1D6
38480           ENDIF
38481           XXC(7)=XXC(6)
38482           XXC(8)=XXC(5)
38483           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
38484             LKNT=LKNT+1
38485             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38486      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38487             IDLAM(LKNT,1)=KFNCHI(IJ)
38488             IDLAM(LKNT,2)=-1
38489             IDLAM(LKNT,3)=2
38490             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
38491               LKNT=LKNT+1
38492               XLAM(LKNT)=XLAM(LKNT-1)
38493               IDLAM(LKNT,1)=KFNCHI(IJ)
38494               IDLAM(LKNT,2)=-3
38495               IDLAM(LKNT,3)=4
38496             ENDIF
38497           ENDIF
38498   210     CONTINUE
38499         ENDIF
38500   220 CONTINUE
38501  
38502 C...CHI+_I -> CHI0_J + H+
38503       DO 230 IJ=1,4
38504         XMJ=SMZ(IJ)
38505         AXMJ=ABS(XMJ)
38506         XMJ2=XMJ**2
38507         XMHP=PMAS(ITHC,1)
38508         IF(AXMI.GE.AXMJ+XMHP) THEN
38509           LKNT=LKNT+1
38510           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
38511      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
38512           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
38513      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
38514      &    UMIXC(IX,2)/SR2)
38515           GX2=ABS(OLPP)**2+ABS(ORPP)**2
38516           GLR=DBLE(OLPP*DCONJG(ORPP))
38517           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
38518           IDLAM(LKNT,1)=KFNCHI(IJ)
38519           IDLAM(LKNT,2)=ITHC
38520           IDLAM(LKNT,3)=0
38521         ELSE
38522  
38523         ENDIF
38524   230 CONTINUE
38525  
38526 C...2-BODY DECAYS TO FERMION SFERMION
38527       DO 240 J=1,16
38528         IF(J.GE.7.AND.J.LE.10) GOTO 240
38529         IF(MOD(J,2).EQ.0) THEN
38530           KF1=KSUSY1+J-1
38531         ELSE
38532           KF1=KSUSY1+J+1
38533         ENDIF
38534         KF2=KF1+KSUSY1
38535         XMSF1=PMAS(PYCOMP(KF1),1)
38536         XMSF2=PMAS(PYCOMP(KF2),1)
38537         XMF=PMAS(J,1)
38538         IF(J.LE.6) THEN
38539           FCOL=3D0
38540         ELSE
38541           FCOL=1D0
38542         ENDIF
38543  
38544 C...U~ D_L
38545         IF(MOD(J,2).EQ.0) THEN
38546           XMFP=PMAS(J-1,1)
38547           CAL=UMIXC(IX,1)
38548           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
38549           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
38550           CBR=0D0
38551           ISF=J-1
38552         ELSE
38553           XMFP=PMAS(J+1,1)
38554           CAL=VMIXC(IX,1)
38555           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
38556           CBR=0D0
38557           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
38558           ISF=J+1
38559         ENDIF
38560  
38561 C...~U_L D
38562         IF(AXMI.GE.XMF+XMSF1) THEN
38563           LKNT=LKNT+1
38564           XMA2=XMSF1**2
38565           XMB2=XMF**2
38566           XL=PYLAMF(XMI2,XMA2,XMB2)
38567           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
38568           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
38569           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
38570      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
38571           IDLAM(LKNT,3)=0
38572           IF(MOD(J,2).EQ.0) THEN
38573             IDLAM(LKNT,1)=-KF1
38574             IDLAM(LKNT,2)=J
38575           ELSE
38576             IDLAM(LKNT,1)=KF1
38577             IDLAM(LKNT,2)=-J
38578           ENDIF
38579         ENDIF
38580  
38581 C...U~ D_R
38582         IF(AXMI.GE.XMF+XMSF2) THEN
38583           LKNT=LKNT+1
38584           XMA2=XMSF2**2
38585           XMB2=XMF**2
38586           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
38587           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
38588           XL=PYLAMF(XMI2,XMA2,XMB2)
38589           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
38590      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
38591           IDLAM(LKNT,3)=0
38592           IF(MOD(J,2).EQ.0) THEN
38593             IDLAM(LKNT,1)=-KF2
38594             IDLAM(LKNT,2)=J
38595           ELSE
38596             IDLAM(LKNT,1)=KF2
38597             IDLAM(LKNT,2)=-J
38598           ENDIF
38599         ENDIF
38600   240 CONTINUE
38601  
38602 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
38603 C...A 2-BODY -- 2-BODY CHAIN
38604       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
38605       IF(AXMI.GE.XMJ) THEN
38606         AXMJ=ABS(XMJ)
38607         S12MIN=0D0
38608         S12MAX=(AXMI-AXMJ)**2
38609         XXC(1)=0D0
38610         XXC(2)=XMJ
38611         XXC(3)=0D0
38612         XXC(4)=XMI
38613         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
38614         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
38615         XXC(9)=1D6
38616         XXC(10)=0D0
38617         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
38618         ORPP=DCONJG(OLPP)
38619         CXC(1)=DCMPLX(0D0,0D0)
38620         CXC(3)=DCMPLX(0D0,0D0)
38621         CXC(5)=DCMPLX(0D0,0D0)
38622         CXC(7)=DCMPLX(0D0,0D0)
38623         CXC(2)=UMIXC(IX,1)*OLPP/SR2
38624         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
38625         CXC(6)=DCMPLX(0D0,0D0)
38626         CXC(8)=DCMPLX(0D0,0D0)
38627         IF(XXC(5).LT.AXMI) THEN
38628           XXC(5)=1D6
38629         ELSEIF(XXC(6).LT.AXMI) THEN
38630           XXC(6)=1D6
38631         ENDIF
38632         XXC(7)=XXC(6)
38633         XXC(8)=XXC(5)
38634         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
38635         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
38636           LKNT=LKNT+1
38637           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
38638      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38639           IDLAM(LKNT,1)=KSUSY1+21
38640           IDLAM(LKNT,2)=-1
38641           IDLAM(LKNT,3)=2
38642           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
38643             LKNT=LKNT+1
38644             XLAM(LKNT)=XLAM(LKNT-1)
38645             IDLAM(LKNT,1)=KSUSY1+21
38646             IDLAM(LKNT,2)=-3
38647             IDLAM(LKNT,3)=4
38648           ENDIF
38649         ENDIF
38650   250   CONTINUE
38651       ENDIF
38652  
38653 C...R-violating decay modes (SKANDS).
38654       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
38655  
38656   260 IKNT=LKNT
38657       XLAM(0)=0D0
38658       DO 270 I=1,IKNT
38659         XLAM(0)=XLAM(0)+XLAM(I)
38660         IF(XLAM(I).LT.0D0) THEN
38661           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
38662      &    (IDLAM(I,J),J=1,3)
38663           XLAM(I)=0D0
38664         ENDIF
38665   270 CONTINUE
38666       IF(XLAM(0).EQ.0D0) THEN
38667         XLAM(0)=1D-6
38668         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
38669         WRITE(MSTU(11),*) LKNT
38670         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
38671       ENDIF
38672  
38673       RETURN
38674       END
38675  
38676 C*********************************************************************
38677  
38678 C...PYXXZ6
38679 C...Used in the calculation of  inoi -> inoj + f + ~f.
38680  
38681       FUNCTION PYXXZ6(X)
38682  
38683 C...Double precision and integer declarations.
38684       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38685       IMPLICIT INTEGER(I-N)
38686       INTEGER PYK,PYCHGE,PYCOMP
38687 C...Parameter statement to help give large particle numbers.
38688       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
38689      &KEXCIT=4000000,KDIMEN=5000000)
38690 C...Commonblocks.
38691       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38692 C      COMMON/PYINTS/XXM(20)
38693       COMPLEX*16 CXC
38694       COMMON/PYINTC/XXC(10),CXC(8)
38695       SAVE /PYDAT1/,/PYINTC/
38696  
38697 C...Local variables.
38698       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
38699       DOUBLE PRECISION PYXXZ6,X
38700       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
38701       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
38702       DOUBLE PRECISION SIJ
38703       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
38704       DOUBLE PRECISION OL2
38705       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
38706       INTEGER I
38707  
38708 C...Statement functions.
38709 C...Integral from x to y of (t-a)(b-t) dt.
38710       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
38711 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
38712       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
38713      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
38714 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
38715       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
38716      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
38717 C...Integral from x to y of (t-a)/(b-t) dt.
38718       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
38719 C...Integral from x to y of 1/(t-a) dt.
38720       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
38721  
38722       XM12=XXC(1)**2
38723       XM22=XXC(2)**2
38724       XM32=XXC(3)**2
38725       S=XXC(4)**2
38726       S13=X
38727  
38728       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
38729       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
38730      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
38731  
38732       S23MIN=(S23AVE-S23DEL)
38733       S23MAX=(S23AVE+S23DEL)
38734  
38735       XMSD1=XXC(5)**2
38736       XMSD2=XXC(7)**2
38737       XMSU1=XXC(6)**2
38738       XMSU2=XXC(8)**2
38739  
38740       XMV=XXC(9)
38741       XMG=XXC(10)
38742       QLLS=CXC(1)
38743       QLLU=CXC(2)
38744       QLRS=CXC(3)
38745       QLRT=CXC(4)
38746       QRLS=CXC(5)
38747       QRLT=CXC(6)
38748       QRRS=CXC(7)
38749       QRRU=CXC(8)
38750       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
38751       SIJ=2D0*XXC(2)*XXC(4)*S13
38752       IF(XMV.LE.1000D0) THEN
38753         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
38754         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
38755         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
38756      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
38757         IF(XXC(5).LE.10000D0) THEN
38758           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
38759      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
38760      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
38761      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
38762      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
38763      &    *(S13-XMV**2)/WPROP2
38764         ELSE
38765           WFL1=0D0
38766         ENDIF
38767  
38768         IF(XXC(6).LE.10000D0) THEN
38769           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
38770      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
38771      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
38772      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
38773      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
38774      &    *(S13-XMV**2)/WPROP2
38775         ELSE
38776           WFL2=0D0
38777         ENDIF
38778       ELSE
38779         WW=0D0
38780         WFL1=0D0
38781         WFL2=0D0
38782       ENDIF
38783       IF(XXC(5).LE.10000D0) THEN
38784         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
38785      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
38786      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
38787      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
38788       ELSE
38789         WF1=0D0
38790       ENDIF
38791       IF(XXC(6).LE.10000D0) THEN
38792         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
38793      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
38794      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
38795      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
38796       ELSE
38797         WF2=0D0
38798       ENDIF
38799  
38800       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
38801  
38802       IF(PYXXZ6.LT.0D0) THEN
38803         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
38804         WRITE(MSTU(11),*) XXc(1),XXc(2),XXc(3),XXc(4)
38805         WRITE(MSTU(11),*) (XXc(I),I=5,8)
38806         WRITE(MSTU(11),*) (XXc(I),I=9,12)
38807         WRITE(MSTU(11),*) (XXc(I),I=13,16)
38808         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
38809         WRITE(MSTU(11),*) S23MIN,S23MAX
38810         PYXXZ6=0D0
38811       ENDIF
38812  
38813       RETURN
38814       END
38815  
38816  
38817 C*********************************************************************
38818  
38819 C...PYXXGA
38820 C...Calculates chi0_i -> chi0_j + gamma.
38821  
38822       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
38823  
38824 C...Double precision and integer declarations.
38825       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38826       IMPLICIT INTEGER(I-N)
38827       INTEGER PYK,PYCHGE,PYCOMP
38828  
38829 C...Local variables.
38830       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
38831       DOUBLE PRECISION F1,F2
38832  
38833       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
38834       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
38835       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
38836       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
38837  
38838       RETURN
38839       END
38840  
38841 C*********************************************************************
38842  
38843 C...PYX2XG
38844 C...Calculates the decay rate for ino -> ino + gauge boson.
38845  
38846       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
38847  
38848 C...Double precision and integer declarations.
38849       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38850       IMPLICIT INTEGER(I-N)
38851       INTEGER PYK,PYCHGE,PYCOMP
38852  
38853 C...Local variables.
38854       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
38855       DOUBLE PRECISION XL,PYLAMF,C1
38856       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
38857  
38858       XMI2=XM1**2
38859       XMI3=ABS(XM1**3)
38860       XMJ2=XM2**2
38861       XMV2=XM3**2
38862       XL=PYLAMF(XMI2,XMJ2,XMV2)
38863       PYX2XG=C1/8D0/XMI3*SQRT(XL)
38864      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
38865      &12D0*GLR*XM1*XM2*XMV2)
38866  
38867       RETURN
38868       END
38869  
38870 C*********************************************************************
38871  
38872 C...PYX2XH
38873 C...Calculates the decay rate for ino -> ino + H.
38874  
38875       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
38876  
38877 C...Double precision and integer declarations.
38878       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38879       IMPLICIT INTEGER(I-N)
38880       INTEGER PYK,PYCHGE,PYCOMP
38881  
38882 C...Local variables.
38883       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
38884       DOUBLE PRECISION XL,PYLAMF,C1
38885       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
38886  
38887       XMI2=XM1**2
38888       XMI3=ABS(XM1**3)
38889       XMJ2=XM2**2
38890       XMV2=XM3**2
38891       XL=PYLAMF(XMI2,XMJ2,XMV2)
38892       PYX2XH=C1/8D0/XMI3*SQRT(XL)
38893      &*(GX2*(XMI2+XMJ2-XMV2)+
38894      &4D0*GLR*XM1*XM2)
38895  
38896       RETURN
38897       END
38898  
38899 C*********************************************************************
38900  
38901 C...PYHEXT
38902 C...Calculates the non-standard decay modes of the Higgs boson.
38903 C...
38904 C...Author:  Stephen Mrenna
38905 C...Last Update:  April 2001
38906 C......Allow complex values for Z,U, and V
38907  
38908       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
38909  
38910 C...Double precision and integer declarations.
38911       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38912       IMPLICIT INTEGER(I-N)
38913       INTEGER PYK,PYCHGE,PYCOMP
38914 C...Parameter statement to help give large particle numbers.
38915       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
38916      &KEXCIT=4000000,KDIMEN=5000000)
38917 C...Commonblocks.
38918       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38919       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38920       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38921       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
38922       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
38923      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
38924       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
38925  
38926 C...Local variables.
38927       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
38928       COMPLEX*16 QIJ,RIJ,F21K,F12K
38929       INTEGER KFIN
38930       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
38931       DOUBLE PRECISION XMI2,XMI3,XMJ2
38932       DOUBLE PRECISION PYLAMF,XL,CF,EI
38933       INTEGER IDU,IFL
38934       DOUBLE PRECISION TANW,XW,AEM,C1,AS
38935       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
38936       DOUBLE PRECISION XLAM(0:400)
38937       INTEGER IDLAM(400,3)
38938       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
38939       INTEGER ITH(4)
38940       INTEGER KFNCHI(4),KFCCHI(2)
38941       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
38942       DOUBLE PRECISION SR2
38943       DOUBLE PRECISION BETA,ALFA
38944       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
38945       DOUBLE PRECISION PYALEM
38946       DOUBLE PRECISION AL,AR,ALR
38947       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
38948       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
38949       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
38950       DATA ITH/25,35,36,37/
38951       DATA ETAH/1D0,1D0,-1D0/
38952       DATA SR2/1.4142136D0/
38953       DATA KFNCHI/1000022,1000023,1000025,1000035/
38954       DATA KFCCHI/1000024,1000037/
38955  
38956 C...COUNT THE NUMBER OF DECAY MODES
38957       LKNT=IKNT
38958  
38959       XMW=PMAS(24,1)
38960       XMW2=XMW**2
38961       XMZ=PMAS(23,1)
38962       XW=PARU(102)
38963       TANW = SQRT(XW/(1D0-XW))
38964       CW=SQRT(1D0-XW)
38965  
38966 C...1 - 4 DEPENDING ON Higgs species.
38967       IH=1
38968       IF(KFIN.EQ.ITH(2)) IH=2
38969       IF(KFIN.EQ.ITH(3)) IH=3
38970       IF(KFIN.EQ.ITH(4)) IH=4
38971  
38972       XMI=PMAS(KFIN,1)
38973       XMI2=XMI**2
38974       AXMI=ABS(XMI)
38975       AEM=PYALEM(XMI2)
38976       C1=AEM/XW
38977       XMI3=ABS(XMI**3)
38978  
38979       TANB=RMSS(5)
38980       BETA=ATAN(TANB)
38981       CBETA=COS(BETA)
38982       SBETA=TANB*CBETA
38983       ALFA=RMSS(18)
38984       COSA=COS(ALFA)
38985       SINA=SIN(ALFA)
38986       ATRIT=RMSS(16)
38987       ATRIB=RMSS(15)
38988       ATRIL=RMSS(17)
38989       XMUZ=-RMSS(4)
38990  
38991       DO 110 I=1,4
38992         DO 100 J=1,4
38993           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
38994   100   CONTINUE
38995   110 CONTINUE
38996       DO 130 I=1,2
38997         DO 120 J=1,2
38998            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
38999            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
39000   120   CONTINUE
39001   130 CONTINUE
39002  
39003  
39004       IF(IH.EQ.4) GOTO 220
39005  
39006 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
39007 C...H0_K -> CHI0_I + CHI0_J
39008       EH(2)=SINA
39009       EH(1)=COSA
39010       EH(3)=CBETA
39011       DH(2)=COSA
39012       DH(1)=-SINA
39013       DH(3)=SBETA
39014       DO 150 IJ=1,4
39015         XMJ=SMZ(IJ)
39016         AXMJ=ABS(XMJ)
39017         DO 140 IK=1,IJ
39018           XMK=SMZ(IK)
39019           AXMK=ABS(XMK)
39020           IF(AXMI.GE.AXMJ+AXMK) THEN
39021             LKNT=LKNT+1
39022             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
39023      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
39024      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
39025      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
39026             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
39027      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
39028      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
39029      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
39030             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
39031             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
39032 C...SIGN OF MASSES I,J
39033             XML=XMK*ETAH(IH)
39034             GX2=ABS(F12K)**2+ABS(F21K)**2
39035             GLR=DBLE(F12K*DCONJG(F21K))
39036             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
39037             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
39038             IDLAM(LKNT,1)=KFNCHI(IJ)
39039             IDLAM(LKNT,2)=KFNCHI(IK)
39040             IDLAM(LKNT,3)=0
39041           ENDIF
39042   140   CONTINUE
39043   150 CONTINUE
39044  
39045 C...H0_K -> CHI+_I CHI-_J
39046       DO 170 IJ=1,2
39047         XMJ=SMW(IJ)
39048         AXMJ=ABS(XMJ)
39049         DO 160 IK=1,2
39050           XMK=SMW(IK)
39051           AXMK=ABS(XMK)
39052           IF(AXMI.GE.AXMJ+AXMK) THEN
39053             LKNT=LKNT+1
39054             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
39055      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
39056             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
39057      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
39058             GX2=ABS(OLPP)**2+ABS(ORPP)**2
39059             GLR=DBLE(OLPP*DCONJG(ORPP))
39060             XML=XMK*ETAH(IH)
39061             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
39062             IDLAM(LKNT,1)=KFCCHI(IJ)
39063             IDLAM(LKNT,2)=-KFCCHI(IK)
39064             IDLAM(LKNT,3)=0
39065           ENDIF
39066   160   CONTINUE
39067   170 CONTINUE
39068  
39069 C...HIGGS TO SFERMION SFERMION
39070       DO 200 IFL=1,16
39071         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
39072         IJ=KSUSY1+IFL
39073         XMJL=PMAS(PYCOMP(IJ),1)
39074         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
39075         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
39076           XMJ=XMJL
39077           XMJ2=XMJ**2
39078           XL=PYLAMF(XMI2,XMJ2,XMJ2)
39079           XMF=PMAS(IFL,1)
39080           EI=KCHG(IFL,1)/3D0
39081           IDU=2-MOD(IFL,2)
39082  
39083           IF(IH.EQ.1) THEN
39084             IF(IDU.EQ.1) THEN
39085               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
39086      &        XMF**2/XMW*SINA/CBETA
39087               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
39088      &        XMF**2/XMW*SINA/CBETA
39089               IF(IFL.EQ.5) THEN
39090                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
39091      &          ATRIB*SINA)
39092               ELSEIF(IFL.EQ.15) THEN
39093                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
39094      &          ATRIL*SINA)
39095               ELSE
39096                 GHLR=0D0
39097               ENDIF
39098             ELSE
39099               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
39100      &        XMF**2/XMW*COSA/SBETA
39101               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
39102      &        XMF**2/XMW*COSA/SBETA
39103               IF(IFL.EQ.6) THEN
39104                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
39105      &          ATRIT*COSA)
39106               ELSE
39107                 GHLR=0D0
39108               ENDIF
39109             ENDIF
39110  
39111           ELSEIF(IH.EQ.2) THEN
39112             IF(IDU.EQ.1) THEN
39113               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
39114      &        XMF**2/XMW*COSA/CBETA
39115               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
39116      &        XMF**2/XMW*COSA/CBETA
39117               IF(IFL.EQ.5) THEN
39118                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
39119      &          ATRIB*COSA)
39120               ELSEIF(IFL.EQ.15) THEN
39121                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
39122      &          ATRIL*COSA)
39123               ELSE
39124                 GHLR=0D0
39125               ENDIF
39126             ELSE
39127               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
39128      &        XMF**2/XMW*SINA/SBETA
39129               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
39130      &        XMF**2/XMW*SINA/SBETA
39131               IF(IFL.EQ.6) THEN
39132                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
39133      &          ATRIT*SINA)
39134               ELSE
39135                 GHLR=0D0
39136               ENDIF
39137             ENDIF
39138  
39139           ELSEIF(IH.EQ.3) THEN
39140             GHLL=0D0
39141             GHRR=0D0
39142             GHLR=0D0
39143             IF(IDU.EQ.1) THEN
39144               IF(IFL.EQ.5) THEN
39145                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
39146               ELSEIF(IFL.EQ.15) THEN
39147                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
39148               ENDIF
39149             ELSE
39150               IF(IFL.EQ.6) THEN
39151                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
39152               ENDIF
39153             ENDIF
39154           ENDIF
39155           IF(IH.EQ.3) GOTO 180
39156  
39157           AL=SFMIX(IFL,1)**2
39158           AR=SFMIX(IFL,2)**2
39159           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
39160           IF(IFL.LE.6) THEN
39161             CF=3D0
39162           ELSE
39163             CF=1D0
39164           ENDIF
39165  
39166           IF(AXMI.GE.2D0*XMJ) THEN
39167             LKNT=LKNT+1
39168             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39169      &      (GHLL*AL+GHRR*AR
39170      &      +2D0*GHLR*ALR)**2
39171             IDLAM(LKNT,1)=IJ
39172             IDLAM(LKNT,2)=-IJ
39173             IDLAM(LKNT,3)=0
39174           ENDIF
39175  
39176           IF(AXMI.GE.2D0*XMJR) THEN
39177             LKNT=LKNT+1
39178             AL=SFMIX(IFL,3)**2
39179             AR=SFMIX(IFL,4)**2
39180             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
39181             XMJ=XMJR
39182             XMJ2=XMJ**2
39183             XL=PYLAMF(XMI2,XMJ2,XMJ2)
39184             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39185      &      (GHLL*AL+GHRR*AR
39186      &      +2D0*GHLR*ALR)**2
39187             IDLAM(LKNT,1)=IJ+KSUSY1
39188             IDLAM(LKNT,2)=-(IJ+KSUSY1)
39189             IDLAM(LKNT,3)=0
39190           ENDIF
39191   180     CONTINUE
39192  
39193           IF(AXMI.GE.XMJL+XMJR) THEN
39194             LKNT=LKNT+1
39195             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
39196             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
39197             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
39198             XMJ=XMJR
39199             XMJ2=XMJ**2
39200             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
39201             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39202      &      (GHLL*AL+GHRR*AR)**2
39203             IDLAM(LKNT,1)=IJ
39204             IDLAM(LKNT,2)=-(IJ+KSUSY1)
39205             IDLAM(LKNT,3)=0
39206             LKNT=LKNT+1
39207             IDLAM(LKNT,1)=-IJ
39208             IDLAM(LKNT,2)=IJ+KSUSY1
39209             IDLAM(LKNT,3)=0
39210             XLAM(LKNT)=XLAM(LKNT-1)
39211           ENDIF
39212         ENDIF
39213   190   CONTINUE
39214   200 CONTINUE
39215   210 CONTINUE
39216  
39217       GOTO 270
39218   220 CONTINUE
39219  
39220 C...H+ -> CHI+_I + CHI0_J
39221       DO 240 IJ=1,4
39222         XMJ=SMZ(IJ)
39223         AXMJ=ABS(XMJ)
39224         XMJ2=XMJ**2
39225         DO 230 IK=1,2
39226           XMK=SMW(IK)
39227           AXMK=ABS(XMK)
39228           IF(AXMI.GE.AXMJ+AXMK) THEN
39229             LKNT=LKNT+1
39230             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
39231      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
39232             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
39233      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
39234             GX2=ABS(OLPP)**2+ABS(ORPP)**2
39235             GLR=DBLE(OLPP*DCONJG(ORPP))
39236             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
39237             IDLAM(LKNT,1)=KFNCHI(IJ)
39238             IDLAM(LKNT,2)=KFCCHI(IK)
39239             IDLAM(LKNT,3)=0
39240           ENDIF
39241   230   CONTINUE
39242   240 CONTINUE
39243  
39244       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
39245       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
39246       AL=0D0
39247       AR=0D0
39248       CF=3D0
39249  
39250 C...H+ -> T_1 B_1~
39251       XM1=PMAS(PYCOMP(KSUSY1+6),1)
39252       XM2=PMAS(PYCOMP(KSUSY1+5),1)
39253       IF(XMI.GE.XM1+XM2) THEN
39254         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39255         LKNT=LKNT+1
39256         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39257      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
39258         IDLAM(LKNT,1)=KSUSY1+6
39259         IDLAM(LKNT,2)=-(KSUSY1+5)
39260         IDLAM(LKNT,3)=0
39261       ENDIF
39262  
39263 C...H+ -> T_2 B_1~
39264       XM1=PMAS(PYCOMP(KSUSY2+6),1)
39265       XM2=PMAS(PYCOMP(KSUSY1+5),1)
39266       IF(XMI.GE.XM1+XM2) THEN
39267         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39268         LKNT=LKNT+1
39269         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39270      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
39271         IDLAM(LKNT,1)=KSUSY2+6
39272         IDLAM(LKNT,2)=-(KSUSY1+5)
39273         IDLAM(LKNT,3)=0
39274       ENDIF
39275  
39276 C...H+ -> T_1 B_2~
39277       XM1=PMAS(PYCOMP(KSUSY1+6),1)
39278       XM2=PMAS(PYCOMP(KSUSY2+5),1)
39279       IF(XMI.GE.XM1+XM2) THEN
39280         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39281         LKNT=LKNT+1
39282         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39283      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
39284         IDLAM(LKNT,1)=KSUSY1+6
39285         IDLAM(LKNT,2)=-(KSUSY2+5)
39286         IDLAM(LKNT,3)=0
39287       ENDIF
39288  
39289 C...H+ -> T_2 B_2~
39290       XM1=PMAS(PYCOMP(KSUSY2+6),1)
39291       XM2=PMAS(PYCOMP(KSUSY2+5),1)
39292       IF(XMI.GE.XM1+XM2) THEN
39293         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39294         LKNT=LKNT+1
39295         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39296      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
39297         IDLAM(LKNT,1)=KSUSY2+6
39298         IDLAM(LKNT,2)=-(KSUSY2+5)
39299         IDLAM(LKNT,3)=0
39300       ENDIF
39301  
39302 C...H+ -> UL DL~
39303       GL=-XMW/SR2*SIN(2D0*BETA)
39304       DO 250 IJ=1,3,2
39305         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
39306         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
39307         IF(XMI.GE.XM1+XM2) THEN
39308           XL=PYLAMF(XMI2,XM1**2,XM2**2)
39309           LKNT=LKNT+1
39310           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
39311           IDLAM(LKNT,1)=-(KSUSY1+IJ)
39312           IDLAM(LKNT,2)=KSUSY1+IJ+1
39313           IDLAM(LKNT,3)=0
39314         ENDIF
39315   250 CONTINUE
39316  
39317 C...H+ -> EL~ NUL
39318       CF=1D0
39319       DO 260 IJ=11,13,2
39320         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
39321         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
39322         IF(XMI.GE.XM1+XM2) THEN
39323           XL=PYLAMF(XMI2,XM1**2,XM2**2)
39324           LKNT=LKNT+1
39325           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
39326           IDLAM(LKNT,1)=-(KSUSY1+IJ)
39327           IDLAM(LKNT,2)=KSUSY1+IJ+1
39328           IDLAM(LKNT,3)=0
39329         ENDIF
39330   260 CONTINUE
39331  
39332 C...H+ -> TAU1 NUTAUL
39333       XM1=PMAS(PYCOMP(KSUSY1+15),1)
39334       XM2=PMAS(PYCOMP(KSUSY1+16),1)
39335       IF(XMI.GE.XM1+XM2) THEN
39336         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39337         LKNT=LKNT+1
39338         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
39339         IDLAM(LKNT,1)=-(KSUSY1+15)
39340         IDLAM(LKNT,2)= KSUSY1+16
39341         IDLAM(LKNT,3)=0
39342       ENDIF
39343  
39344 C...H+ -> TAU2 NUTAUL
39345       XM1=PMAS(PYCOMP(KSUSY2+15),1)
39346       XM2=PMAS(PYCOMP(KSUSY1+16),1)
39347       IF(XMI.GE.XM1+XM2) THEN
39348         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39349         LKNT=LKNT+1
39350         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
39351         IDLAM(LKNT,1)=-(KSUSY2+15)
39352         IDLAM(LKNT,2)= KSUSY1+16
39353         IDLAM(LKNT,3)=0
39354       ENDIF
39355  
39356   270 CONTINUE
39357       IKNT=LKNT
39358       XLAM(0)=0D0
39359       DO 280 I=1,IKNT
39360         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
39361         XLAM(0)=XLAM(0)+XLAM(I)
39362   280 CONTINUE
39363       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
39364  
39365       RETURN
39366       END
39367  
39368 C*********************************************************************
39369  
39370 C...PYH2XX
39371 C...Calculates the decay rate for a Higgs to an ino pair.
39372  
39373       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
39374  
39375 C...Double precision and integer declarations.
39376       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39377       IMPLICIT INTEGER(I-N)
39378       INTEGER PYK,PYCHGE,PYCOMP
39379 C...Commonblocks.
39380       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39381       SAVE /PYDAT1/
39382  
39383 C...Local variables.
39384       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
39385       DOUBLE PRECISION XL,PYLAMF,C1
39386       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
39387  
39388       XMI2=XM1**2
39389       XMI3=ABS(XM1**3)
39390       XMJ2=XM2**2
39391       XMK2=XM3**2
39392       XL=PYLAMF(XMI2,XMJ2,XMK2)
39393       PYH2XX=C1/4D0/XMI3*SQRT(XL)
39394      &*(GX2*(XMI2-XMJ2-XMK2)-
39395      &4D0*GLR*XM3*XM2)
39396       IF(PYH2XX.LT.0D0) THEN
39397         WRITE(MSTU(11),*) ' NEGATIVE WIDTH IN PYH2XX '
39398         WRITE(MSTU(11),*) XMI2,XMJ2,XMK2,GX2,GLR,XM1,XM2,XM3
39399         STOP
39400       ENDIF
39401  
39402       RETURN
39403       END
39404  
39405 C*********************************************************************
39406  
39407 C...PYGAUS
39408 C...Integration by adaptive Gaussian quadrature.
39409 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
39410  
39411       FUNCTION PYGAUS(F, A, B, EPS)
39412  
39413 C...Double precision and integer declarations.
39414       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39415       IMPLICIT INTEGER(I-N)
39416       INTEGER PYK,PYCHGE,PYCOMP
39417  
39418 C...Local declarations.
39419       EXTERNAL F
39420       DOUBLE PRECISION F,W(12), X(12)
39421       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
39422       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
39423       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
39424       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
39425       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
39426       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
39427       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
39428       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
39429       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
39430       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
39431       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
39432       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
39433  
39434 C...The Gaussian quadrature algorithm.
39435       H = 0D0
39436       IF(B .EQ. A) GOTO 140
39437       CONST = 5D-3 / ABS(B-A)
39438       BB = A
39439   100 CONTINUE
39440       AA = BB
39441       BB = B
39442   110 CONTINUE
39443       C1 = 0.5D0*(BB+AA)
39444       C2 = 0.5D0*(BB-AA)
39445       S8 = 0D0
39446       DO 120 I = 1, 4
39447         U = C2*X(I)
39448         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
39449   120 CONTINUE
39450       S16 = 0D0
39451       DO 130 I = 5, 12
39452         U = C2*X(I)
39453         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
39454   130 CONTINUE
39455       S16 = C2*S16
39456       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
39457         H = H + S16
39458         IF(BB .NE. B) GOTO 100
39459       ELSE
39460         BB = C1
39461         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
39462         H = 0D0
39463         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
39464         GOTO 140
39465       ENDIF
39466   140 CONTINUE
39467       PYGAUS = H
39468  
39469       RETURN
39470       END
39471  
39472 C*********************************************************************
39473  
39474 C...PYGAU2
39475 C...Integration by adaptive Gaussian quadrature.
39476 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
39477 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
39478  
39479       FUNCTION PYGAU2(F, A, B, EPS)
39480  
39481 C...Double precision and integer declarations.
39482       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39483       IMPLICIT INTEGER(I-N)
39484       INTEGER PYK,PYCHGE,PYCOMP
39485  
39486 C...Local declarations.
39487       EXTERNAL F
39488       DOUBLE PRECISION F,W(12), X(12)
39489       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
39490       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
39491       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
39492       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
39493       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
39494       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
39495       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
39496       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
39497       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
39498       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
39499       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
39500       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
39501  
39502 C...The Gaussian quadrature algorithm.
39503       H = 0D0
39504       IF(B .EQ. A) GOTO 140
39505       CONST = 5D-3 / ABS(B-A)
39506       BB = A
39507   100 CONTINUE
39508       AA = BB
39509       BB = B
39510   110 CONTINUE
39511       C1 = 0.5D0*(BB+AA)
39512       C2 = 0.5D0*(BB-AA)
39513       S8 = 0D0
39514       DO 120 I = 1, 4
39515         U = C2*X(I)
39516         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
39517   120 CONTINUE
39518       S16 = 0D0
39519       DO 130 I = 5, 12
39520         U = C2*X(I)
39521         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
39522   130 CONTINUE
39523       S16 = C2*S16
39524       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
39525         H = H + S16
39526         IF(BB .NE. B) GOTO 100
39527       ELSE
39528         BB = C1
39529         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
39530         H = 0D0
39531         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
39532         GOTO 140
39533       ENDIF
39534   140 CONTINUE
39535       PYGAU2 = H
39536  
39537       RETURN
39538       END
39539  
39540 C*********************************************************************
39541  
39542 C...PYSIMP
39543 C...Simpson formula for an integral.
39544  
39545       FUNCTION PYSIMP(Y,X0,X1,N)
39546  
39547 C...Double precision and integer declarations.
39548       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39549       IMPLICIT INTEGER(I-N)
39550       INTEGER PYK,PYCHGE,PYCOMP
39551  
39552 C...Local variables.
39553       DOUBLE PRECISION Y,X0,X1,H,S
39554       DIMENSION Y(0:N)
39555  
39556       S=0D0
39557       H=(X1-X0)/N
39558       DO 100 I=0,N-2,2
39559         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
39560   100 CONTINUE
39561       PYSIMP=S*H/3D0
39562  
39563       RETURN
39564       END
39565  
39566 C*********************************************************************
39567  
39568 C...PYLAMF
39569 C...The standard lambda function.
39570  
39571       FUNCTION PYLAMF(X,Y,Z)
39572  
39573 C...Double precision and integer declarations.
39574       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39575       IMPLICIT INTEGER(I-N)
39576       INTEGER PYK,PYCHGE,PYCOMP
39577  
39578 C...Local variables.
39579       DOUBLE PRECISION PYLAMF,X,Y,Z
39580  
39581       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
39582       IF(PYLAMF.LT.0D0) PYLAMF=0D0
39583  
39584       RETURN
39585       END
39586  
39587 C*********************************************************************
39588  
39589 C...PYTBDY
39590 C...Generates 3-body decays of gauginos.
39591  
39592       SUBROUTINE PYTBDY(IDIN)
39593  
39594 C...Double precision and integer declarations.
39595       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39596       IMPLICIT INTEGER(I-N)
39597       INTEGER PYK,PYCHGE,PYCOMP
39598 C...Parameter statement to help give large particle numbers.
39599       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
39600      &KEXCIT=4000000,KDIMEN=5000000)
39601 C...Commonblocks.
39602       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
39603       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39604       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39605 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
39606 C     COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39607       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
39608      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
39609 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
39610       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSSMT/
39611  
39612 C...Local variables.
39613       DOUBLE PRECISION XM(5)
39614       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
39615       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
39616       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
39617       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
39618       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
39619       DOUBLE PRECISION CPHI1,SPHI1
39620       DOUBLE PRECISION S23DEL,EPS
39621       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
39622       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
39623       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
39624       INTEGER INOID(4)
39625       DATA INOID/22,23,25,35/
39626       DATA EPS/1D-6/
39627  
39628       ID=IDIN
39629       ISKIP=1
39630       XM(1)=P(N+1,5)
39631       XM(2)=P(N+2,5)
39632       XM(3)=P(N+3,5)
39633       XM(5)=P(ID,5)
39634  
39635 C...GENERATE S12
39636       S12MIN=(XM(1)+XM(2))**2
39637       S12MAX=(XM(5)-XM(3))**2
39638       YJACO1=S12MAX-S12MIN
39639  
39640 C...Initialize some parameters
39641       XW=PARU(102)
39642       XW1=1D0-XW
39643       TANW=SQRT(XW/XW1)
39644       IZID1=0
39645       IWID1=0
39646       IZID2=0
39647       IWID2=0
39648       DO 100 I1=1,4
39649         IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
39650         IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
39651   100 CONTINUE
39652       IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
39653       IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
39654       IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
39655       IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
39656       IA=K(N+2,2)
39657       JA=K(N+3,2)
39658       ZM12=XM(5)**2
39659       ZM22=XM(1)**2
39660       EI=KCHG(IABS(IA),1)/3D0
39661       T3I=SIGN(1D0,EI+1D-6)/2D0
39662       IF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
39663         ISKIP=0
39664       ELSEIF(IZID1*IZID2.NE.0) THEN
39665         SQMZ=PMAS(23,1)**2
39666         GMMZ=PMAS(23,1)*PMAS(23,2)
39667         DO 110 I=1,4
39668           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
39669           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
39670   110   CONTINUE
39671         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
39672      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
39673         ORPP=DCONJG(OLPP)
39674         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
39675         XLR2=XLL2
39676         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
39677         XRL2=XRR2
39678         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
39679      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
39680         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
39681         XM1M2=SMZ(IZID1)*SMZ(IZID2)
39682         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
39683         QLLU=-GLIJ
39684         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
39685         QLRT=DCONJG(GLIJ)
39686         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
39687         QRLT=GRIJ
39688         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
39689         QRRU=-DCONJG(GRIJ)
39690       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
39691         IF(IZID1.NE.0) THEN
39692           XM1M2=SMZ(IZID1)*SMW(IWID2)
39693           IZID1=IWID2
39694           IZID2=IZID1
39695         ELSE
39696           XM1M2=SMZ(IZID2)*SMW(IWID1)
39697           IZID1=IWID1
39698         ENDIF
39699         RT2I = 1D0/SQRT(2D0)
39700         SQMZ=PMAS(24,1)**2
39701         GMMZ=PMAS(24,1)*PMAS(24,2)
39702         DO 120 I=1,2
39703           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
39704           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
39705   120   CONTINUE
39706         DO 130 I=1,4
39707           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
39708   130   CONTINUE
39709         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
39710      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
39711         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
39712      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
39713         EJ=KCHG(JA,1)/3D0
39714         T3J=SIGN(1D0,EJ+1D-6)/2D0
39715         QRLS=DCMPLX(0D0,0D0)
39716         QRLT=QRLS
39717         QRRS=QRLS
39718         QRRU=QRLS
39719         XRR2=1D6**2
39720         XRL2=XRR2
39721         XLR2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
39722         XLL2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
39723         IF(MOD(IA,2).EQ.0) THEN
39724           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
39725      &    TANW+ZMIXC(IZID2,2)*T3I)
39726           QLRT=-DCONJG(UMIXC(IZID1,1))*(
39727      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
39728         ELSE
39729           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
39730      &    TANW+ZMIXC(IZID2,2)*T3J)
39731           QLRT=-DCONJG(UMIXC(IZID1,1))*(
39732      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
39733         ENDIF
39734       ELSEIF(IWID1*IWID2.NE.0) THEN
39735         IZID1=IWID1
39736         IZID2=IWID2
39737         XM1M2=SMW(IWID1)*SMW(IWID2)
39738         SQMZ=PMAS(23,1)**2
39739         GMMZ=PMAS(23,1)*PMAS(23,2)
39740         DO 140 I=1,2
39741           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
39742           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
39743           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
39744           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
39745   140   CONTINUE
39746         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
39747      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
39748         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
39749      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
39750         QRLS=-DCMPLX(EI/XW1)*ORPP
39751         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
39752         QRRS=-DCMPLX(EI/XW1)*OLPP
39753         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
39754         IF(MOD(IA,2).EQ.0) THEN
39755           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
39756           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
39757         ELSE
39758           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
39759           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
39760         ENDIF
39761       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
39762      &THEN
39763         ISKIP=0
39764       ELSE
39765         ISKIP=0
39766       ENDIF
39767  
39768       IF(ISKIP.NE.0) THEN
39769         WTMAX=0D0
39770         DO 160 KT=1,100
39771           S12=S12MIN+YJACO1*(KT-1)/99
39772           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
39773      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
39774           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
39775      &    -(2D0*XM(1)*XM(2))**2
39776           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
39777      &    -(2D0*XM(3)*XM(5))**2
39778           S23DF1=S23DF1*EPS
39779           S23DF2=S23DF2*EPS
39780           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
39781           S23DEL=S23DEL/EPS
39782           S23MIN=S23AVE-S23DEL
39783           S23MAX=S23AVE+S23DEL
39784           YJACO2=S23MAX-S23MIN
39785           TH=S12
39786           DO 150 KS=1,100
39787             S23=S23MIN+YJACO2*(KS-1)/99
39788             SH=S23
39789             UH=ZM12+ZM22-SH-TH
39790             WU2 = (UH-ZM12)*(UH-ZM22)
39791             WT2 = (TH-ZM12)*(TH-ZM22)
39792             WS2 = XM1M2*SH
39793             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
39794             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
39795             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
39796             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
39797             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
39798             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
39799             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
39800      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
39801      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
39802             IF(WT0.GT.WTMAX) WTMAX=WT0
39803   150     CONTINUE
39804   160   CONTINUE
39805  
39806         WTMAX=WTMAX*1.05D0
39807       ENDIF
39808  
39809 C...FIND S12*
39810       AX=S12MIN
39811       CX=S12MAX
39812       BX=S12MIN+0.5D0*YJACO1
39813       X0=AX
39814       X3=CX
39815       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
39816         X1=BX
39817         X2=BX+C*(CX-BX)
39818       ELSE
39819         X2=BX
39820         X1=BX-C*(BX-AX)
39821       ENDIF
39822  
39823 C...SOLVE FOR F1 AND F2
39824       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
39825      &-(2D0*XM(1)*XM(2))**2
39826       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
39827      &-(2D0*XM(3)*XM(5))**2
39828       S23DF1=S23DF1*EPS
39829       S23DF2=S23DF2*EPS
39830       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
39831       F1=-2D0*S23DEL/EPS
39832       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
39833      &-(2D0*XM(1)*XM(2))**2
39834       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
39835      &-(2D0*XM(3)*XM(5))**2
39836       S23DF1=S23DF1*EPS
39837       S23DF2=S23DF2*EPS
39838       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
39839       F2=-2D0*S23DEL/EPS
39840  
39841   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
39842 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
39843         IF(F2.LE.F1)THEN
39844           X0=X1
39845           X1=X2
39846           X2=R*X1+C*X3
39847           F1=F2
39848           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
39849      &    -(2D0*XM(1)*XM(2))**2
39850           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
39851      &    -(2D0*XM(3)*XM(5))**2
39852           S23DF1=S23DF1*EPS
39853           S23DF2=S23DF2*EPS
39854           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
39855           F2=-2D0*S23DEL/EPS
39856         ELSE
39857           X3=X2
39858           X2=X1
39859           X1=R*X2+C*X0
39860           F2=F1
39861           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
39862      &    -(2D0*XM(1)*XM(2))**2
39863           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
39864      &    -(2D0*XM(3)*XM(5))**2
39865           S23DF1=S23DF1*EPS
39866           S23DF2=S23DF2*EPS
39867           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
39868           F1=-2D0*S23DEL/EPS
39869         ENDIF
39870         GOTO 170
39871       ENDIF
39872 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
39873       IF(F1.LT.F2)THEN
39874         GOLDEN=-F1
39875         XMIN=X1
39876       ELSE
39877         GOLDEN=-F2
39878         XMIN=X2
39879       ENDIF
39880  
39881       IKNT=0
39882   180 S12=S12MIN+PYR(0)*YJACO1
39883       IKNT=IKNT+1
39884 C...GENERATE S23
39885       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
39886      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
39887       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
39888      &-(2D0*XM(1)*XM(2))**2
39889       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
39890      &-(2D0*XM(3)*XM(5))**2
39891       S23DF1=S23DF1*EPS
39892       S23DF2=S23DF2*EPS
39893       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
39894       S23DEL=S23DEL/EPS
39895       S23MIN=S23AVE-S23DEL
39896       S23MAX=S23AVE+S23DEL
39897       YJACO2=S23MAX-S23MIN
39898       S23=S23MIN+PYR(0)*YJACO2
39899  
39900 C...CHECK THE SAMPLING
39901       IF(IKNT.GT.100) THEN
39902         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
39903         GOTO 190
39904       ENDIF
39905       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
39906  
39907       IF(ISKIP.EQ.0) GOTO 190
39908  
39909       SH=S23
39910       TH=S12
39911       UH=ZM12+ZM22-SH-TH
39912  
39913       WU2 = (UH-ZM12)*(UH-ZM22)
39914       WT2 = (TH-ZM12)*(TH-ZM22)
39915       WS2 = XM1M2*SH
39916       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
39917       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
39918  
39919       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
39920       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
39921       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
39922       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
39923 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
39924 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
39925 c     &/DCMPLX(TH-XML2)
39926 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
39927 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
39928 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
39929       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
39930      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
39931      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
39932  
39933       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
39934       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
39935  
39936   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
39937       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
39938       D2=XM(5)-D1-D3
39939       P1=SQRT(D1*D1-XM(1)**2)
39940       P2=SQRT(D2*D2-XM(2)**2)
39941       P3=SQRT(D3*D3-XM(3)**2)
39942       CTHE1=2D0*PYR(0)-1D0
39943       ANG1=2D0*PYR(0)*PARU(1)
39944       CPHI1=COS(ANG1)
39945       SPHI1=SIN(ANG1)
39946       ARG=1D0-CTHE1**2
39947       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
39948       STHE1=SQRT(ARG)
39949       P(N+1,1)=P1*STHE1*CPHI1
39950       P(N+1,2)=P1*STHE1*SPHI1
39951       P(N+1,3)=P1*CTHE1
39952       P(N+1,4)=D1
39953  
39954 C...GET CPHI3
39955       ANG3=2D0*PYR(0)*PARU(1)
39956       CPHI3=COS(ANG3)
39957       SPHI3=SIN(ANG3)
39958       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
39959       ARG=1D0-CTHE3**2
39960       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
39961       STHE3=SQRT(ARG)
39962       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
39963      &+P3*STHE3*SPHI3*SPHI1
39964      &+P3*CTHE3*STHE1*CPHI1
39965       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
39966      &-P3*STHE3*SPHI3*CPHI1
39967      &+P3*CTHE3*STHE1*SPHI1
39968       P(N+3,3)=P3*STHE3*CPHI3*STHE1
39969      &+P3*CTHE3*CTHE1
39970       P(N+3,4)=D3
39971  
39972       DO 200 I=1,3
39973         P(N+2,I)=-P(N+1,I)-P(N+3,I)
39974   200 CONTINUE
39975       P(N+2,4)=D2
39976  
39977       RETURN
39978       END
39979  
39980 C*********************************************************************
39981  
39982 C...PYTECM
39983 C...Finds the s-hat dependent eigenvalues of the inverse propagator
39984 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
39985 C...phase space generation.
39986  
39987       SUBROUTINE PYTECM(S1,S2)
39988  
39989 C...Double precision and integer declarations.
39990       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39991       IMPLICIT INTEGER(I-N)
39992       INTEGER PYK,PYCHGE,PYCOMP
39993 C...Parameter statement to help give large particle numbers.
39994       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
39995      &KEXCIT=4000000,KDIMEN=5000000)
39996 C...Commonblocks.
39997       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39998       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39999       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40000       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
40001       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
40002  
40003 C...Local variables.
40004       DOUBLE PRECISION AR(4,4),WR(4),ZR(4,4),ZI(4,4),WORK(12,12),
40005      &AT(4,4),WI(4),FV1(4),FV2(4),FV3(4),sh,aem,tanw,ct2w,qupd,alprht,
40006      &far,fao,fzr,fzo,shr,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5)
40007       INTEGER i,j,ierr
40008  
40009       SH=PMAS(PYCOMP(KTECHN+113),1)**2
40010       AEM=PYALEM(SH)
40011  
40012       TANW=SQRT(PARU(102)/(1D0-PARU(102)))
40013       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
40014       QUPD=2D0*RTCM(2)-1D0
40015  
40016       ALPRHT=2.91D0*(3D0/DBLE(ITCM(1)))
40017       FAR=SQRT(AEM/ALPRHT)
40018       FAO=FAR*QUPD
40019       FZR=FAR*CT2W
40020       FZO=-FAO*TANW
40021  
40022       AR(1,1) = SH
40023       AR(2,2) = SH-PMAS(23,1)**2
40024       AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
40025       AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
40026       AR(1,2) = 0D0
40027       AR(2,1) = 0D0
40028       AR(1,3) = -SH*FAR
40029       AR(3,1) = AR(1,3)
40030       AR(1,4) = -SH*FAO
40031       AR(4,1) = AR(1,4)
40032       AR(2,3) = -SH*FZR
40033       AR(3,2) = AR(2,3)
40034       AR(2,4) = -SH*FZO
40035       AR(4,2) = AR(2,4)
40036       AR(3,4) = 0D0
40037       AR(4,3) = 0D0
40038 CCCCCCCC
40039       DO 110 I=1,4
40040         DO 100 J=1,4
40041           AT(I,J)=0D0
40042   100   CONTINUE
40043   110 CONTINUE
40044       SHR=SQRT(SH)
40045       CALL PYWIDT(23,SH,WDTP,WDTE)
40046       AT(2,2) = WDTP(0)*SHR
40047       CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
40048       AT(3,3) = WDTP(0)*SHR
40049       CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
40050       AT(4,4) = WDTP(0)*SHR
40051 CCCC
40052       CALL PYEICG(4,4,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
40053       DO 120 I=1,4
40054         WI(I)=SQRT(ABS(SH-WR(I)))
40055         WR(I)=ABS(WR(I))
40056   120 CONTINUE
40057       R1=MIN(WR(1),WR(2),WR(3),WR(4))
40058       R2=1D20
40059       S1=0D0
40060       S2=0D0
40061       DO 130 I=1,4
40062         IF(ABS(WR(I)-R1).LT.1D-6) THEN
40063           S1=WI(I)
40064           GOTO 130
40065         ENDIF
40066         IF(WR(I).LE.R2) THEN
40067           R2=WR(I)
40068           S2=WI(I)
40069         ENDIF
40070   130 CONTINUE
40071       S1=S1**2
40072       S2=S2**2
40073       RETURN
40074       END
40075  
40076 C*********************************************************************
40077  
40078 C...PYEIGC
40079 C...Finds eigenvalues of a general complex matrix
40080 C
40081 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
40082 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
40083 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
40084 C     OF A COMPLEX GENERAL MATRIX.
40085 C
40086 C     ON INPUT
40087 C
40088 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
40089 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40090 C        DIMENSION STATEMENT.
40091 C
40092 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
40093 C
40094 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
40095 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
40096 C
40097 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
40098 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
40099 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
40100 C
40101 C     ON OUTPUT
40102 C
40103 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
40104 C        RESPECTIVELY, OF THE EIGENVALUES.
40105 C
40106 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
40107 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
40108 C
40109 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
40110 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
40111 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
40112 C
40113 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
40114 C
40115 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40116 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40117 C
40118 C     THIS VERSION DATED AUGUST 1983.
40119 C
40120  
40121       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
40122  
40123       INTEGER N,NM,IS1,IS2,IERR,MATZ
40124       DOUBLE PRECISION AR(4,4),AI(4,4),WR(4),WI(4),ZR(4,4),ZI(4,4),
40125      X       FV1(4),FV2(4),FV3(4)
40126       IF (N .LE. NM) GOTO 100
40127       IERR = 10 * N
40128       GOTO 120
40129 C
40130   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
40131       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
40132       IF (MATZ .NE. 0) GOTO 110
40133 C     .......... FIND EIGENVALUES ONLY ..........
40134       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
40135       GOTO 120
40136 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
40137   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
40138       IF (IERR .NE. 0) GOTO 120
40139       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
40140   120 RETURN
40141       END
40142  
40143 C*********************************************************************
40144  
40145 C...PYCMQR
40146 C...Auxiliary to PYEICG.
40147 C
40148 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
40149 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
40150 C     AND WILKINSON.
40151 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
40152 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
40153 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
40154 C
40155 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
40156 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
40157 C
40158 C     ON INPUT
40159 C
40160 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40161 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40162 C          DIMENSION STATEMENT.
40163 C
40164 C        N IS THE ORDER OF THE MATRIX.
40165 C
40166 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
40167 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
40168 C          SET LOW=1, IGH=N.
40169 C
40170 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
40171 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
40172 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
40173 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
40174 C          THE REDUCTION BY  CORTH, IF PERFORMED.
40175 C
40176 C     ON OUTPUT
40177 C
40178 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
40179 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
40180 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
40181 C          EIGENVECTORS IS TO BE PERFORMED.
40182 C
40183 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
40184 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
40185 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
40186 C          FOR INDICES IERR+1,...,N.
40187 C
40188 C        IERR IS SET TO
40189 C          ZERO       FOR NORMAL RETURN,
40190 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
40191 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
40192 C
40193 C     CALLS PYCDIV FOR COMPLEX DIVISION.
40194 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
40195 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
40196 C
40197 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40198 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40199 C
40200 C     THIS VERSION DATED AUGUST 1983.
40201 C
40202  
40203       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
40204  
40205       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
40206       DOUBLE PRECISION HR(4,4),HI(4,4),WR(4),WI(4)
40207       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
40208      X       PYTHAG
40209  
40210       IERR = 0
40211       IF (LOW .EQ. IGH) GOTO 130
40212 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
40213       L = LOW + 1
40214 C
40215       DO 120 I = L, IGH
40216          LL = MIN0(I+1,IGH)
40217          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
40218          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
40219          YR = HR(I,I-1) / NORM
40220          YI = HI(I,I-1) / NORM
40221          HR(I,I-1) = NORM
40222          HI(I,I-1) = 0.0D0
40223 C
40224          DO 100 J = I, IGH
40225             SI = YR * HI(I,J) - YI * HR(I,J)
40226             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
40227             HI(I,J) = SI
40228   100    CONTINUE
40229 C
40230          DO 110 J = LOW, LL
40231             SI = YR * HI(J,I) + YI * HR(J,I)
40232             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
40233             HI(J,I) = SI
40234   110    CONTINUE
40235 C
40236   120 CONTINUE
40237 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
40238   130 DO 140 I = 1, N
40239          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
40240          WR(I) = HR(I,I)
40241          WI(I) = HI(I,I)
40242   140 CONTINUE
40243 C
40244       EN = IGH
40245       TR = 0.0D0
40246       TI = 0.0D0
40247       ITN = 30*N
40248 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
40249   150 IF (EN .LT. LOW) GOTO 320
40250       ITS = 0
40251       ENM1 = EN - 1
40252 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
40253 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
40254   160 DO 170 LL = LOW, EN
40255          L = EN + LOW - LL
40256          IF (L .EQ. LOW) GOTO 180
40257          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
40258      X            + DABS(HR(L,L)) + DABS(HI(L,L))
40259          TST2 = TST1 + DABS(HR(L,L-1))
40260          IF (TST2 .EQ. TST1) GOTO 180
40261   170 CONTINUE
40262 C     .......... FORM SHIFT ..........
40263   180 IF (L .EQ. EN) GOTO 300
40264       IF (ITN .EQ. 0) GOTO 310
40265       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
40266       SR = HR(EN,EN)
40267       SI = HI(EN,EN)
40268       XR = HR(ENM1,EN) * HR(EN,ENM1)
40269       XI = HI(ENM1,EN) * HR(EN,ENM1)
40270       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
40271       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
40272       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
40273       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
40274       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
40275       ZZR = -ZZR
40276       ZZI = -ZZI
40277   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
40278       SR = SR - XR
40279       SI = SI - XI
40280       GOTO 210
40281 C     .......... FORM EXCEPTIONAL SHIFT ..........
40282   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
40283       SI = 0.0D0
40284 C
40285   210 DO 220 I = LOW, EN
40286          HR(I,I) = HR(I,I) - SR
40287          HI(I,I) = HI(I,I) - SI
40288   220 CONTINUE
40289 C
40290       TR = TR + SR
40291       TI = TI + SI
40292       ITS = ITS + 1
40293       ITN = ITN - 1
40294 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
40295       LP1 = L + 1
40296 C
40297       DO 240 I = LP1, EN
40298          SR = HR(I,I-1)
40299          HR(I,I-1) = 0.0D0
40300          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
40301          XR = HR(I-1,I-1) / NORM
40302          WR(I-1) = XR
40303          XI = HI(I-1,I-1) / NORM
40304          WI(I-1) = XI
40305          HR(I-1,I-1) = NORM
40306          HI(I-1,I-1) = 0.0D0
40307          HI(I,I-1) = SR / NORM
40308 C
40309          DO 230 J = I, EN
40310             YR = HR(I-1,J)
40311             YI = HI(I-1,J)
40312             ZZR = HR(I,J)
40313             ZZI = HI(I,J)
40314             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
40315             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
40316             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
40317             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
40318   230    CONTINUE
40319 C
40320   240 CONTINUE
40321 C
40322       SI = HI(EN,EN)
40323       IF (SI .EQ. 0.0D0) GOTO 250
40324       NORM = PYTHAG(HR(EN,EN),SI)
40325       SR = HR(EN,EN) / NORM
40326       SI = SI / NORM
40327       HR(EN,EN) = NORM
40328       HI(EN,EN) = 0.0D0
40329 C     .......... INVERSE OPERATION (COLUMNS) ..........
40330   250 DO 280 J = LP1, EN
40331          XR = WR(J-1)
40332          XI = WI(J-1)
40333 C
40334          DO 270 I = L, J
40335             YR = HR(I,J-1)
40336             YI = 0.0D0
40337             ZZR = HR(I,J)
40338             ZZI = HI(I,J)
40339             IF (I .EQ. J) GOTO 260
40340             YI = HI(I,J-1)
40341             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40342   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40343             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40344             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40345   270    CONTINUE
40346 C
40347   280 CONTINUE
40348 C
40349       IF (SI .EQ. 0.0D0) GOTO 160
40350 C
40351       DO 290 I = L, EN
40352          YR = HR(I,EN)
40353          YI = HI(I,EN)
40354          HR(I,EN) = SR * YR - SI * YI
40355          HI(I,EN) = SR * YI + SI * YR
40356   290 CONTINUE
40357 C
40358       GOTO 160
40359 C     .......... A ROOT FOUND ..........
40360   300 WR(EN) = HR(EN,EN) + TR
40361       WI(EN) = HI(EN,EN) + TI
40362       EN = ENM1
40363       GOTO 150
40364 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
40365 C                CONVERGED AFTER 30*N ITERATIONS ..........
40366   310 IERR = EN
40367   320 RETURN
40368       END
40369  
40370 C*********************************************************************
40371  
40372 C...PYCMQ2
40373 C...Auxiliary to PYEICG.
40374 C
40375 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
40376 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
40377 C     AND WILKINSON.
40378 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
40379 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
40380 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
40381 C
40382 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
40383 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
40384 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
40385 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
40386 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
40387 C
40388 C     ON INPUT
40389 C
40390 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40391 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40392 C          DIMENSION STATEMENT.
40393 C
40394 C        N IS THE ORDER OF THE MATRIX.
40395 C
40396 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
40397 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
40398 C          SET LOW=1, IGH=N.
40399 C
40400 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
40401 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
40402 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
40403 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
40404 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
40405 C
40406 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
40407 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
40408 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
40409 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
40410 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
40411 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
40412 C          ARBITRARY.
40413 C
40414 C     ON OUTPUT
40415 C
40416 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
40417 C          HAVE BEEN DESTROYED.
40418 C
40419 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
40420 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
40421 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
40422 C          FOR INDICES IERR+1,...,N.
40423 C
40424 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
40425 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
40426 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
40427 C          THE EIGENVECTORS HAS BEEN FOUND.
40428 C
40429 C        IERR IS SET TO
40430 C          ZERO       FOR NORMAL RETURN,
40431 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
40432 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
40433 C
40434 C     CALLS PYCDIV FOR COMPLEX DIVISION.
40435 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
40436 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
40437 C
40438 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40439 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40440 C
40441 C     THIS VERSION DATED OCTOBER 1989.
40442 C
40443 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
40444 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
40445 C
40446  
40447       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
40448  
40449       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
40450      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
40451       DOUBLE PRECISION HR(4,4),HI(4,4),WR(4),WI(4),ZR(4,4),ZI(4,4),
40452      X       ORTR(4),ORTI(4)
40453       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
40454      X       PYTHAG
40455  
40456       IERR = 0
40457 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
40458       DO 110 J = 1, N
40459 C
40460          DO 100 I = 1, N
40461             ZR(I,J) = 0.0D0
40462             ZI(I,J) = 0.0D0
40463   100    CONTINUE
40464          ZR(J,J) = 1.0D0
40465   110 CONTINUE
40466 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
40467 C                FROM THE INFORMATION LEFT BY CORTH ..........
40468       IEND = IGH - LOW - 1
40469       IF (IEND.LT.0) GOTO 220
40470       IF (IEND.EQ.0) GOTO 170
40471 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
40472       DO 160 II = 1, IEND
40473          I = IGH - II
40474          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
40475          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
40476 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
40477          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
40478          IP1 = I + 1
40479 C
40480          DO 120 K = IP1, IGH
40481             ORTR(K) = HR(K,I-1)
40482             ORTI(K) = HI(K,I-1)
40483   120    CONTINUE
40484 C
40485          DO 150 J = I, IGH
40486             SR = 0.0D0
40487             SI = 0.0D0
40488 C
40489             DO 130 K = I, IGH
40490                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
40491                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
40492   130       CONTINUE
40493 C
40494             SR = SR / NORM
40495             SI = SI / NORM
40496 C
40497             DO 140 K = I, IGH
40498                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
40499                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
40500   140       CONTINUE
40501 C
40502   150    CONTINUE
40503 C
40504   160 CONTINUE
40505 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
40506   170 L = LOW + 1
40507 C
40508       DO 210 I = L, IGH
40509          LL = MIN0(I+1,IGH)
40510          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
40511          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
40512          YR = HR(I,I-1) / NORM
40513          YI = HI(I,I-1) / NORM
40514          HR(I,I-1) = NORM
40515          HI(I,I-1) = 0.0D0
40516 C
40517          DO 180 J = I, N
40518             SI = YR * HI(I,J) - YI * HR(I,J)
40519             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
40520             HI(I,J) = SI
40521   180    CONTINUE
40522 C
40523          DO 190 J = 1, LL
40524             SI = YR * HI(J,I) + YI * HR(J,I)
40525             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
40526             HI(J,I) = SI
40527   190    CONTINUE
40528 C
40529          DO 200 J = LOW, IGH
40530             SI = YR * ZI(J,I) + YI * ZR(J,I)
40531             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
40532             ZI(J,I) = SI
40533   200    CONTINUE
40534 C
40535   210 CONTINUE
40536 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
40537   220 DO 230 I = 1, N
40538          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
40539          WR(I) = HR(I,I)
40540          WI(I) = HI(I,I)
40541   230 CONTINUE
40542 C
40543       EN = IGH
40544       TR = 0.0D0
40545       TI = 0.0D0
40546       ITN = 30*N
40547 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
40548   240 IF (EN .LT. LOW) GOTO 430
40549       ITS = 0
40550       ENM1 = EN - 1
40551 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
40552 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
40553   250 DO 260 LL = LOW, EN
40554          L = EN + LOW - LL
40555          IF (L .EQ. LOW) GOTO 270
40556          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
40557      X            + DABS(HR(L,L)) + DABS(HI(L,L))
40558          TST2 = TST1 + DABS(HR(L,L-1))
40559          IF (TST2 .EQ. TST1) GOTO 270
40560   260 CONTINUE
40561 C     .......... FORM SHIFT ..........
40562   270 IF (L .EQ. EN) GOTO 420
40563       IF (ITN .EQ. 0) GOTO 550
40564       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
40565       SR = HR(EN,EN)
40566       SI = HI(EN,EN)
40567       XR = HR(ENM1,EN) * HR(EN,ENM1)
40568       XI = HI(ENM1,EN) * HR(EN,ENM1)
40569       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
40570       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
40571       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
40572       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
40573       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
40574       ZZR = -ZZR
40575       ZZI = -ZZI
40576   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
40577       SR = SR - XR
40578       SI = SI - XI
40579       GOTO 300
40580 C     .......... FORM EXCEPTIONAL SHIFT ..........
40581   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
40582       SI = 0.0D0
40583 C
40584   300 DO 310 I = LOW, EN
40585          HR(I,I) = HR(I,I) - SR
40586          HI(I,I) = HI(I,I) - SI
40587   310 CONTINUE
40588 C
40589       TR = TR + SR
40590       TI = TI + SI
40591       ITS = ITS + 1
40592       ITN = ITN - 1
40593 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
40594       LP1 = L + 1
40595 C
40596       DO 330 I = LP1, EN
40597          SR = HR(I,I-1)
40598          HR(I,I-1) = 0.0D0
40599          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
40600          XR = HR(I-1,I-1) / NORM
40601          WR(I-1) = XR
40602          XI = HI(I-1,I-1) / NORM
40603          WI(I-1) = XI
40604          HR(I-1,I-1) = NORM
40605          HI(I-1,I-1) = 0.0D0
40606          HI(I,I-1) = SR / NORM
40607 C
40608          DO 320 J = I, N
40609             YR = HR(I-1,J)
40610             YI = HI(I-1,J)
40611             ZZR = HR(I,J)
40612             ZZI = HI(I,J)
40613             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
40614             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
40615             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
40616             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
40617   320    CONTINUE
40618 C
40619   330 CONTINUE
40620 C
40621       SI = HI(EN,EN)
40622       IF (SI .EQ. 0.0D0) GOTO 350
40623       NORM = PYTHAG(HR(EN,EN),SI)
40624       SR = HR(EN,EN) / NORM
40625       SI = SI / NORM
40626       HR(EN,EN) = NORM
40627       HI(EN,EN) = 0.0D0
40628       IF (EN .EQ. N) GOTO 350
40629       IP1 = EN + 1
40630 C
40631       DO 340 J = IP1, N
40632          YR = HR(EN,J)
40633          YI = HI(EN,J)
40634          HR(EN,J) = SR * YR + SI * YI
40635          HI(EN,J) = SR * YI - SI * YR
40636   340 CONTINUE
40637 C     .......... INVERSE OPERATION (COLUMNS) ..........
40638   350 DO 390 J = LP1, EN
40639          XR = WR(J-1)
40640          XI = WI(J-1)
40641 C
40642          DO 370 I = 1, J
40643             YR = HR(I,J-1)
40644             YI = 0.0D0
40645             ZZR = HR(I,J)
40646             ZZI = HI(I,J)
40647             IF (I .EQ. J) GOTO 360
40648             YI = HI(I,J-1)
40649             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40650   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40651             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40652             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40653   370    CONTINUE
40654 C
40655          DO 380 I = LOW, IGH
40656             YR = ZR(I,J-1)
40657             YI = ZI(I,J-1)
40658             ZZR = ZR(I,J)
40659             ZZI = ZI(I,J)
40660             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40661             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40662             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40663             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40664   380    CONTINUE
40665 C
40666   390 CONTINUE
40667 C
40668       IF (SI .EQ. 0.0D0) GOTO 250
40669 C
40670       DO 400 I = 1, EN
40671          YR = HR(I,EN)
40672          YI = HI(I,EN)
40673          HR(I,EN) = SR * YR - SI * YI
40674          HI(I,EN) = SR * YI + SI * YR
40675   400 CONTINUE
40676 C
40677       DO 410 I = LOW, IGH
40678          YR = ZR(I,EN)
40679          YI = ZI(I,EN)
40680          ZR(I,EN) = SR * YR - SI * YI
40681          ZI(I,EN) = SR * YI + SI * YR
40682   410 CONTINUE
40683 C
40684       GOTO 250
40685 C     .......... A ROOT FOUND ..........
40686   420 HR(EN,EN) = HR(EN,EN) + TR
40687       WR(EN) = HR(EN,EN)
40688       HI(EN,EN) = HI(EN,EN) + TI
40689       WI(EN) = HI(EN,EN)
40690       EN = ENM1
40691       GOTO 240
40692 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
40693 C                VECTORS OF UPPER TRIANGULAR FORM ..........
40694   430 NORM = 0.0D0
40695 C
40696       DO 440 I = 1, N
40697 C
40698          DO 440 J = I, N
40699             TR = DABS(HR(I,J)) + DABS(HI(I,J))
40700             IF (TR .GT. NORM) NORM = TR
40701   440 CONTINUE
40702 C
40703       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
40704 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
40705       DO 500 NN = 2, N
40706          EN = N + 2 - NN
40707          XR = WR(EN)
40708          XI = WI(EN)
40709          HR(EN,EN) = 1.0D0
40710          HI(EN,EN) = 0.0D0
40711          ENM1 = EN - 1
40712 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
40713          DO 490 II = 1, ENM1
40714             I = EN - II
40715             ZZR = 0.0D0
40716             ZZI = 0.0D0
40717             IP1 = I + 1
40718 C
40719             DO 450 J = IP1, EN
40720                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
40721                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
40722   450       CONTINUE
40723 C
40724             YR = XR - WR(I)
40725             YI = XI - WI(I)
40726             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
40727                TST1 = NORM
40728                YR = TST1
40729   460          YR = 0.01D0 * YR
40730                TST2 = NORM + YR
40731                IF (TST2 .GT. TST1) GOTO 460
40732   470       CONTINUE
40733             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
40734 C     .......... OVERFLOW CONTROL ..........
40735             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
40736             IF (TR .EQ. 0.0D0) GOTO 490
40737             TST1 = TR
40738             TST2 = TST1 + 1.0D0/TST1
40739             IF (TST2 .GT. TST1) GOTO 490
40740             DO 480 J = I, EN
40741                HR(J,EN) = HR(J,EN)/TR
40742                HI(J,EN) = HI(J,EN)/TR
40743   480       CONTINUE
40744 C
40745   490    CONTINUE
40746 C
40747   500 CONTINUE
40748 C     .......... END BACKSUBSTITUTION ..........
40749 C     .......... VECTORS OF ISOLATED ROOTS ..........
40750       DO 520 I = 1, N
40751          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
40752 C
40753          DO 510 J = I, N
40754             ZR(I,J) = HR(I,J)
40755             ZI(I,J) = HI(I,J)
40756   510    CONTINUE
40757 C
40758   520 CONTINUE
40759 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
40760 C                VECTORS OF ORIGINAL FULL MATRIX.
40761 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
40762       DO 540 JJ = LOW, N
40763          J = N + LOW - JJ
40764          M = MIN0(J,IGH)
40765 C
40766          DO 540 I = LOW, IGH
40767             ZZR = 0.0D0
40768             ZZI = 0.0D0
40769 C
40770             DO 530 K = LOW, M
40771                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
40772                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
40773   530       CONTINUE
40774 C
40775             ZR(I,J) = ZZR
40776             ZI(I,J) = ZZI
40777   540 CONTINUE
40778 C
40779       GOTO 560
40780 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
40781 C                CONVERGED AFTER 30*N ITERATIONS ..........
40782   550 IERR = EN
40783   560 RETURN
40784       END
40785  
40786 C*********************************************************************
40787  
40788 C...PYCDIV
40789 C...Auxiliary to PYCMQR
40790 C
40791 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
40792 C
40793  
40794       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
40795  
40796       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
40797       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
40798  
40799       S = DABS(BR) + DABS(BI)
40800       ARS = AR/S
40801       AIS = AI/S
40802       BRS = BR/S
40803       BIS = BI/S
40804       S = BRS**2 + BIS**2
40805       CR = (ARS*BRS + AIS*BIS)/S
40806       CI = (AIS*BRS - ARS*BIS)/S
40807       RETURN
40808       END
40809  
40810 C*********************************************************************
40811  
40812 C...PYCSRT
40813 C...Auxiliary to PYCMQR
40814 C
40815 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
40816 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
40817 C
40818  
40819       SUBROUTINE PYCSRT(XR,XI,YR,YI)
40820  
40821       DOUBLE PRECISION XR,XI,YR,YI
40822       DOUBLE PRECISION S,TR,TI,PYTHAG
40823  
40824       TR = XR
40825       TI = XI
40826       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
40827       IF (TR .GE. 0.0D0) YR = S
40828       IF (TI .LT. 0.0D0) S = -S
40829       IF (TR .LE. 0.0D0) YI = S
40830       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
40831       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
40832       RETURN
40833       END
40834  
40835       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
40836       DOUBLE PRECISION A,B
40837 C
40838 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
40839 C
40840       DOUBLE PRECISION P,R,S,T,U
40841       P = DMAX1(DABS(A),DABS(B))
40842       IF (P .EQ. 0.0D0) GOTO 110
40843       R = (DMIN1(DABS(A),DABS(B))/P)**2
40844   100 CONTINUE
40845          T = 4.0D0 + R
40846          IF (T .EQ. 4.0D0) GOTO 110
40847          S = R/T
40848          U = 1.0D0 + 2.0D0*S
40849          P = U*P
40850          R = (S/U)**2 * R
40851       GOTO 100
40852   110 PYTHAG = P
40853       RETURN
40854       END
40855  
40856 C*********************************************************************
40857  
40858 C...PYCBAL
40859 C...Auxiliary to PYEICG
40860 C
40861 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
40862 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
40863 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
40864 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
40865 C
40866 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
40867 C     EIGENVALUES WHENEVER POSSIBLE.
40868 C
40869 C     ON INPUT
40870 C
40871 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40872 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40873 C          DIMENSION STATEMENT.
40874 C
40875 C        N IS THE ORDER OF THE MATRIX.
40876 C
40877 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
40878 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
40879 C
40880 C     ON OUTPUT
40881 C
40882 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
40883 C          RESPECTIVELY, OF THE BALANCED MATRIX.
40884 C
40885 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
40886 C          ARE EQUAL TO ZERO IF
40887 C           (1) I IS GREATER THAN J AND
40888 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
40889 C
40890 C        SCALE CONTAINS INFORMATION DETERMINING THE
40891 C           PERMUTATIONS AND SCALING FACTORS USED.
40892 C
40893 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
40894 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
40895 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
40896 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
40897 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
40898 C                 = D(J,J)       J = LOW,...,IGH
40899 C                 = P(J)         J = IGH+1,...,N.
40900 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
40901 C     THEN 1 TO LOW-1.
40902 C
40903 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
40904 C
40905 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
40906 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
40907 C     K,L HAVE BEEN REVERSED.)
40908 C
40909 C     ARITHMETIC IS REAL THROUGHOUT.
40910 C
40911 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40912 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40913 C
40914 C     THIS VERSION DATED AUGUST 1983.
40915 C
40916  
40917       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
40918  
40919       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
40920       DOUBLE PRECISION AR(4,4),AI(4,4),SCALE(4)
40921       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
40922       LOGICAL NOCONV
40923  
40924       RADIX = 16.0D0
40925 C
40926       B2 = RADIX * RADIX
40927       K = 1
40928       L = N
40929       GOTO 150
40930 C     .......... IN-LINE PROCEDURE FOR ROW AND
40931 C                COLUMN EXCHANGE ..........
40932   100 SCALE(M) = J
40933       IF (J .EQ. M) GOTO 130
40934 C
40935       DO 110 I = 1, L
40936          F = AR(I,J)
40937          AR(I,J) = AR(I,M)
40938          AR(I,M) = F
40939          F = AI(I,J)
40940          AI(I,J) = AI(I,M)
40941          AI(I,M) = F
40942   110 CONTINUE
40943 C
40944       DO 120 I = K, N
40945          F = AR(J,I)
40946          AR(J,I) = AR(M,I)
40947          AR(M,I) = F
40948          F = AI(J,I)
40949          AI(J,I) = AI(M,I)
40950          AI(M,I) = F
40951   120 CONTINUE
40952 C
40953   130 IF(IEXC.EQ.1) GOTO 140
40954       IF(IEXC.EQ.2) GOTO 180
40955 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
40956 C                AND PUSH THEM DOWN ..........
40957   140 IF (L .EQ. 1) GOTO 320
40958       L = L - 1
40959 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
40960   150 DO 170 JJ = 1, L
40961          J = L + 1 - JJ
40962 C
40963          DO 160 I = 1, L
40964             IF (I .EQ. J) GOTO 160
40965             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
40966   160    CONTINUE
40967 C
40968          M = L
40969          IEXC = 1
40970          GOTO 100
40971   170 CONTINUE
40972 C
40973       GOTO 190
40974 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
40975 C                AND PUSH THEM LEFT ..........
40976   180 K = K + 1
40977 C
40978   190 DO 210 J = K, L
40979 C
40980          DO 200 I = K, L
40981             IF (I .EQ. J) GOTO 200
40982             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
40983   200    CONTINUE
40984 C
40985          M = K
40986          IEXC = 2
40987          GOTO 100
40988   210 CONTINUE
40989 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
40990       DO 220 I = K, L
40991   220 SCALE(I) = 1.0D0
40992 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
40993   230 NOCONV = .FALSE.
40994 C
40995       DO 310 I = K, L
40996          C = 0.0D0
40997          R = 0.0D0
40998 C
40999          DO 240 J = K, L
41000             IF (J .EQ. I) GOTO 240
41001             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
41002             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
41003   240    CONTINUE
41004 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
41005          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
41006          G = R / RADIX
41007          F = 1.0D0
41008          S = C + R
41009   250    IF (C .GE. G) GOTO 260
41010          F = F * RADIX
41011          C = C * B2
41012          GOTO 250
41013   260    G = R * RADIX
41014   270    IF (C .LT. G) GOTO 280
41015          F = F / RADIX
41016          C = C / B2
41017          GOTO 270
41018 C     .......... NOW BALANCE ..........
41019   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
41020          G = 1.0D0 / F
41021          SCALE(I) = SCALE(I) * F
41022          NOCONV = .TRUE.
41023 C
41024          DO 290 J = K, N
41025             AR(I,J) = AR(I,J) * G
41026             AI(I,J) = AI(I,J) * G
41027   290    CONTINUE
41028 C
41029          DO 300 J = 1, L
41030             AR(J,I) = AR(J,I) * F
41031             AI(J,I) = AI(J,I) * F
41032   300    CONTINUE
41033 C
41034   310 CONTINUE
41035 C
41036       IF (NOCONV) GOTO 230
41037 C
41038   320 LOW = K
41039       IGH = L
41040       RETURN
41041       END
41042  
41043 C*********************************************************************
41044  
41045 C...PYCBA2
41046 C...Auxiliary to PYEICG.
41047 C
41048 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
41049 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
41050 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
41051 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
41052 C
41053 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
41054 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
41055 C     BALANCED MATRIX DETERMINED BY  CBAL.
41056 C
41057 C     ON INPUT
41058 C
41059 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
41060 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
41061 C          DIMENSION STATEMENT.
41062 C
41063 C        N IS THE ORDER OF THE MATRIX.
41064 C
41065 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
41066 C
41067 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
41068 C          AND SCALING FACTORS USED BY  CBAL.
41069 C
41070 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
41071 C
41072 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
41073 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
41074 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
41075 C
41076 C     ON OUTPUT
41077 C
41078 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
41079 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
41080 C          IN THEIR FIRST M COLUMNS.
41081 C
41082 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
41083 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
41084 C
41085 C     THIS VERSION DATED AUGUST 1983.
41086 C
41087  
41088       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
41089  
41090       INTEGER I,J,K,M,N,II,NM,IGH,LOW
41091       DOUBLE PRECISION SCALE(4),ZR(4,4),ZI(4,4)
41092       DOUBLE PRECISION S
41093  
41094       IF (M .EQ. 0) GOTO 150
41095       IF (IGH .EQ. LOW) GOTO 120
41096 C
41097       DO 110 I = LOW, IGH
41098          S = SCALE(I)
41099 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
41100 C                IF THE FOREGOING STATEMENT IS REPLACED BY
41101 C                S=1.0D0/SCALE(I). ..........
41102          DO 100 J = 1, M
41103             ZR(I,J) = ZR(I,J) * S
41104             ZI(I,J) = ZI(I,J) * S
41105   100    CONTINUE
41106 C
41107   110 CONTINUE
41108 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
41109 C                IGH+1 STEP 1 UNTIL N DO -- ..........
41110   120 DO 140 II = 1, N
41111          I = II
41112          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
41113          IF (I .LT. LOW) I = LOW - II
41114          K = SCALE(I)
41115          IF (K .EQ. I) GOTO 140
41116 C
41117          DO 130 J = 1, M
41118             S = ZR(I,J)
41119             ZR(I,J) = ZR(K,J)
41120             ZR(K,J) = S
41121             S = ZI(I,J)
41122             ZI(I,J) = ZI(K,J)
41123             ZI(K,J) = S
41124   130    CONTINUE
41125 C
41126   140 CONTINUE
41127 C
41128   150 RETURN
41129       END
41130  
41131 C*********************************************************************
41132  
41133 C...PYCRTH
41134 C...Auxiliary to PYEICG.
41135 C
41136 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
41137 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
41138 C     BY MARTIN AND WILKINSON.
41139 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
41140 C
41141 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
41142 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
41143 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
41144 C     UNITARY SIMILARITY TRANSFORMATIONS.
41145 C
41146 C     ON INPUT
41147 C
41148 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
41149 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
41150 C          DIMENSION STATEMENT.
41151 C
41152 C        N IS THE ORDER OF THE MATRIX.
41153 C
41154 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
41155 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
41156 C          SET LOW=1, IGH=N.
41157 C
41158 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
41159 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
41160 C
41161 C     ON OUTPUT
41162 C
41163 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
41164 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
41165 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
41166 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
41167 C          HESSENBERG MATRIX.
41168 C
41169 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
41170 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
41171 C
41172 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
41173 C
41174 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
41175 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
41176 C
41177 C     THIS VERSION DATED AUGUST 1983.
41178 C
41179  
41180       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
41181  
41182       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
41183       DOUBLE PRECISION AR(4,4),AI(4,4),ORTR(4),ORTI(4)
41184       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
41185  
41186       LA = IGH - 1
41187       KP1 = LOW + 1
41188       IF (LA .LT. KP1) GOTO 210
41189 C
41190       DO 200 M = KP1, LA
41191          H = 0.0D0
41192          ORTR(M) = 0.0D0
41193          ORTI(M) = 0.0D0
41194          SCALE = 0.0D0
41195 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
41196          DO 100 I = M, IGH
41197   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
41198 C
41199          IF (SCALE .EQ. 0.0D0) GOTO 200
41200          MP = M + IGH
41201 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
41202          DO 110 II = M, IGH
41203             I = MP - II
41204             ORTR(I) = AR(I,M-1) / SCALE
41205             ORTI(I) = AI(I,M-1) / SCALE
41206             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
41207   110    CONTINUE
41208 C
41209          G = DSQRT(H)
41210          F = PYTHAG(ORTR(M),ORTI(M))
41211          IF (F .EQ. 0.0D0) GOTO 120
41212          H = H + F * G
41213          G = G / F
41214          ORTR(M) = (1.0D0 + G) * ORTR(M)
41215          ORTI(M) = (1.0D0 + G) * ORTI(M)
41216          GOTO 130
41217 C
41218   120    ORTR(M) = G
41219          AR(M,M-1) = SCALE
41220 C     .......... FORM (I-(U*UT)/H) * A ..........
41221   130    DO 160 J = M, N
41222             FR = 0.0D0
41223             FI = 0.0D0
41224 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
41225             DO 140 II = M, IGH
41226                I = MP - II
41227                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
41228                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
41229   140       CONTINUE
41230 C
41231             FR = FR / H
41232             FI = FI / H
41233 C
41234             DO 150 I = M, IGH
41235                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
41236                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
41237   150       CONTINUE
41238 C
41239   160    CONTINUE
41240 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
41241          DO 190 I = 1, IGH
41242             FR = 0.0D0
41243             FI = 0.0D0
41244 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
41245             DO 170 JJ = M, IGH
41246                J = MP - JJ
41247                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
41248                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
41249   170       CONTINUE
41250 C
41251             FR = FR / H
41252             FI = FI / H
41253 C
41254             DO 180 J = M, IGH
41255                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
41256                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
41257   180       CONTINUE
41258 C
41259   190    CONTINUE
41260 C
41261          ORTR(M) = SCALE * ORTR(M)
41262          ORTI(M) = SCALE * ORTI(M)
41263          AR(M,M-1) = -G * AR(M,M-1)
41264          AI(M,M-1) = -G * AI(M,M-1)
41265   200 CONTINUE
41266 C
41267   210 RETURN
41268       END
41269  
41270 C*********************************************************************
41271  
41272 C...PYLDCM
41273 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
41274 C...processes.
41275  
41276       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
41277       IMPLICIT NONE
41278       INTEGER N,NP,INDX(N)
41279       REAL*8 D,TINY
41280       COMPLEX*16 A(NP,NP)
41281       PARAMETER (TINY=1.0D-20)
41282       INTEGER I,IMAX,J,K
41283       REAL*8 AAMAX,VV(6),DUM
41284       COMPLEX*16 SUM,DUMC
41285  
41286       D=1D0
41287       DO 110 I=1,N
41288         AAMAX=0D0
41289         DO 100 J=1,N
41290           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
41291   100   CONTINUE
41292         IF (AAMAX.EQ.0D0) PAUSE 'SINGULAR MATRIX IN PYLDCM'
41293         VV(I)=1D0/AAMAX
41294   110 CONTINUE
41295       DO 180 J=1,N
41296         DO 130 I=1,J-1
41297           SUM=A(I,J)
41298           DO 120 K=1,I-1
41299             SUM=SUM-A(I,K)*A(K,J)
41300   120     CONTINUE
41301           A(I,J)=SUM
41302   130   CONTINUE
41303         AAMAX=0D0
41304         DO 150 I=J,N
41305           SUM=A(I,J)
41306           DO 140 K=1,J-1
41307             SUM=SUM-A(I,K)*A(K,J)
41308   140     CONTINUE
41309           A(I,J)=SUM
41310           DUM=VV(I)*ABS(SUM)
41311           IF (DUM.GE.AAMAX) THEN
41312             IMAX=I
41313             AAMAX=DUM
41314           ENDIF
41315   150   CONTINUE
41316         IF (J.NE.IMAX)THEN
41317           DO 160 K=1,N
41318             DUMC=A(IMAX,K)
41319             A(IMAX,K)=A(J,K)
41320             A(J,K)=DUMC
41321   160     CONTINUE
41322           D=-D
41323           VV(IMAX)=VV(J)
41324         ENDIF
41325         INDX(J)=IMAX
41326         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
41327         IF(J.NE.N)THEN
41328           DO 170 I=J+1,N
41329             A(I,J)=A(I,J)/A(J,J)
41330   170     CONTINUE
41331         ENDIF
41332   180 CONTINUE
41333  
41334       RETURN
41335       END
41336  
41337 C*********************************************************************
41338  
41339 C...PYBKSB
41340 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
41341 C...processes.
41342  
41343       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
41344       IMPLICIT NONE
41345       INTEGER N,NP,INDX(N)
41346       COMPLEX*16 A(NP,NP),B(N)
41347       INTEGER I,II,J,LL
41348       COMPLEX*16 SUM
41349  
41350       II=0
41351       DO 110 I=1,N
41352         LL=INDX(I)
41353         SUM=B(LL)
41354         B(LL)=B(I)
41355         IF (II.NE.0)THEN
41356           DO 100 J=II,I-1
41357             SUM=SUM-A(I,J)*B(J)
41358   100     CONTINUE
41359         ELSE IF (ABS(SUM).NE.0D0) THEN
41360           II=I
41361         ENDIF
41362         B(I)=SUM
41363   110 CONTINUE
41364       DO 130 I=N,1,-1
41365         SUM=B(I)
41366         DO 120 J=I+1,N
41367           SUM=SUM-A(I,J)*B(J)
41368   120   CONTINUE
41369         B(I)=SUM/A(I,I)
41370   130 CONTINUE
41371       RETURN
41372       END
41373  
41374 C***********************************************************************
41375  
41376 C...PYWIDX
41377 C...Calculates full and partial widths of resonances.
41378 C....copy of PYWIDT, used for techniparticle widths
41379  
41380       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
41381  
41382 C...Double precision and integer declarations.
41383       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41384       IMPLICIT INTEGER(I-N)
41385       INTEGER PYK,PYCHGE,PYCOMP
41386 C...Parameter statement to help give large particle numbers.
41387       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41388      &KEXCIT=4000000,KDIMEN=5000000)
41389 C...Commonblocks.
41390       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41391       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41392       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
41393       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
41394       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41395       COMMON/PYINT1/MINT(400),VINT(400)
41396       COMMON/PYINT4/MWID(500),WIDS(500,5)
41397       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41398       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
41399       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
41400      &/PYINT4/,/PYMSSM/,/PYTCSM/
41401 C...Local arrays and saved variables.
41402       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
41403      &WID2SV(3,2)
41404       SAVE MOFSV,WIDWSV,WID2SV
41405       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
41406  
41407 C...Compressed code and sign; mass.
41408       KFLA=IABS(KFLR)
41409       KFLS=ISIGN(1,KFLR)
41410       KC=PYCOMP(KFLA)
41411       SHR=SQRT(SH)
41412       PMR=PMAS(KC,1)
41413  
41414 C...Reset width information.
41415       DO 110 I=0,200
41416         WDTP(I)=0D0
41417         DO 100 J=0,5
41418           WDTE(I,J)=0D0
41419   100   CONTINUE
41420   110 CONTINUE
41421  
41422 C...Common electroweak and strong constants.
41423       XW=PARU(102)
41424       XWV=XW
41425       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
41426       XW1=1D0-XW
41427       AEM=PYALEM(SH)
41428       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
41429       AS=PYALPS(SH)
41430       RADC=1D0+AS/PARU(1)
41431  
41432       IF(KFLA.EQ.23) THEN
41433 C...Z0:
41434         ICASE=1
41435         XWC=1D0/(16D0*XW*XW1)
41436         FAC=(AEM*XWC/3D0)*SHR
41437   120   CONTINUE
41438         DO 130 I=1,MDCY(KC,3)
41439           IDC=I+MDCY(KC,2)-1
41440           IF(MDME(IDC,1).LT.0) GOTO 130
41441           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
41442           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
41443           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
41444           WID2=1D0
41445           IF(I.LE.8) THEN
41446 C...Z0 -> q + qbar
41447             EF=KCHG(I,1)/3D0
41448             AF=SIGN(1D0,EF+0.1D0)
41449             VF=AF-4D0*EF*XWV
41450             FCOF=3D0*RADC
41451             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
41452             IF(I.EQ.6) WID2=WIDS(6,1)
41453             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
41454           ELSEIF(I.LE.16) THEN
41455 C...Z0 -> l+ + l-, nu + nubar
41456             EF=KCHG(I+2,1)/3D0
41457             AF=SIGN(1D0,EF+0.1D0)
41458             VF=AF-4D0*EF*XWV
41459             FCOF=1D0
41460             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
41461           ENDIF
41462           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
41463             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
41464      &      BE34
41465             WDTP(0)=WDTP(0)+WDTP(I)
41466           IF(MDME(IDC,1).GT.0) THEN
41467               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41468               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
41469      &        WDTE(I,MDME(IDC,1))
41470               WDTE(I,0)=WDTE(I,MDME(IDC,1))
41471               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41472           ENDIF
41473   130   CONTINUE
41474  
41475  
41476       ELSEIF(KFLA.EQ.24) THEN
41477 C...W+/-:
41478         FAC=(AEM/(24D0*XW))*SHR
41479         DO 140 I=1,MDCY(KC,3)
41480           IDC=I+MDCY(KC,2)-1
41481           IF(MDME(IDC,1).LT.0) GOTO 140
41482           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
41483           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
41484           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
41485           WID2=1D0
41486           IF(I.LE.16) THEN
41487 C...W+/- -> q + qbar'
41488             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
41489             IF(KFLR.GT.0) THEN
41490               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
41491               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
41492               IF(I.GE.13) WID2=WID2*WIDS(7,3)
41493             ELSE
41494               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
41495               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
41496               IF(I.GE.13) WID2=WID2*WIDS(7,2)
41497             ENDIF
41498           ELSEIF(I.LE.20) THEN
41499 C...W+/- -> l+/- + nu
41500             FCOF=1D0
41501             IF(KFLR.GT.0) THEN
41502               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
41503             ELSE
41504               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
41505             ENDIF
41506           ENDIF
41507           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
41508      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
41509           WDTP(0)=WDTP(0)+WDTP(I)
41510           IF(MDME(IDC,1).GT.0) THEN
41511             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41512             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
41513             WDTE(I,0)=WDTE(I,MDME(IDC,1))
41514             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41515           ENDIF
41516   140   CONTINUE
41517  
41518 C.....V8 -> quark anti-quark
41519       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
41520         FAC=AS/6D0*SHR
41521         TANT3=RTCM(21)
41522         IF(ITCM(2).EQ.0) THEN
41523           IMDL=1
41524         ELSEIF(ITCM(2).EQ.1) THEN
41525           IMDL=2
41526         ENDIF
41527         DO 150 I=1,MDCY(KC,3)
41528           IDC=I+MDCY(KC,2)-1
41529           IF(MDME(IDC,1).LT.0) GOTO 150
41530           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
41531           RM1=PM1**2/SH
41532           IF(RM1.GT.0.25D0) GOTO 150
41533           WID2=1D0
41534           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
41535             FMIX=1D0/TANT3**2
41536           ELSE
41537             FMIX=TANT3**2
41538           ENDIF
41539           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
41540           IF(I.EQ.6) WID2=WIDS(6,1)
41541           WDTP(0)=WDTP(0)+WDTP(I)
41542           IF(MDME(IDC,1).GT.0) THEN
41543             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41544             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
41545             WDTE(I,0)=WDTE(I,MDME(IDC,1))
41546             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41547           ENDIF
41548   150   CONTINUE
41549       ENDIF
41550  
41551       RETURN
41552       END
41553  
41554 C*********************************************************************
41555  
41556 C...PYRVSF
41557 C...Calculates R-violating decays of sfermions.
41558 C...P. Z. Skands
41559  
41560       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
41561  
41562 C...Double precision and integer declarations.
41563       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41564       IMPLICIT INTEGER(I-N)
41565 C...Parameter statement to help give large particle numbers.
41566       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41567      &KEXCIT=4000000,KDIMEN=5000000)
41568 C...Commonblocks.
41569       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41570       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41571       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
41572      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
41573       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
41574 C...Local variables.
41575       DOUBLE PRECISION XLAM(0:400)
41576       INTEGER IDLAM(400,3), PYCOMP
41577       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
41578  
41579 C...IS R-VIOLATION ON ?
41580       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
41581 C...Mass eigenstate counter
41582         ICNT=INT(KFIN/KSUSY1)
41583 C...SM KF code of SUSY particle
41584         KFSM=KFIN-ICNT*KSUSY1
41585 C...Squared Sparticle Mass
41586         SM=PMAS(PYCOMP(KFIN),1)**2
41587 C... Squared mass of top quark
41588         SMT=PMAS(PYCOMP(6),1)**2
41589 C...IS L-VIOLATION ON ?
41590         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
41591 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
41592           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
41593      &         THEN
41594             K=INT((KFSM-9)/2)
41595             DO 110 I=1,3
41596               DO 100 J=1,3
41597                 IF(I.NE.J) THEN
41598 C...~e,~mu,~tau -> nu_I + lepton-_J
41599                   LKNT = LKNT+1
41600                   IDLAM(LKNT,1)= 12 +2*(I-1)
41601                   IDLAM(LKNT,2)= 11 +2*(J-1)
41602                   IDLAM(LKNT,3)= 0
41603                   XLAM(LKNT)=0D0
41604                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41605                   IF (IMSS(51).NE.0) XLAM(LKNT) =
41606      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41607 C...KINEMATICS CHECK
41608                   IF (XLAM(LKNT).EQ.0D0) THEN
41609                     LKNT=LKNT-1
41610                   ENDIF
41611                 ENDIF
41612   100         CONTINUE
41613   110       CONTINUE
41614 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
41615             J=INT((KFSM-9)/2)
41616             DO 130 I=1,3
41617               IF(I.NE.J) THEN
41618                 DO 120 K=1,3
41619                   LKNT = LKNT+1
41620                   IDLAM(LKNT,1)=-12 -2*(I-1)
41621                   IDLAM(LKNT,2)= 11 +2*(K-1)
41622                   IDLAM(LKNT,3)= 0
41623                   XLAM(LKNT)=0D0
41624                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41625                   IF (IMSS(51).NE.0) XLAM(LKNT) =
41626      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41627 C...KINEMATICS CHECK
41628                   IF (XLAM(LKNT).EQ.0D0) THEN
41629                     LKNT=LKNT-1
41630                   ENDIF
41631   120           CONTINUE
41632               ENDIF
41633   130       CONTINUE
41634 C...~e,~mu,~tau -> u_Jbar + d_K
41635             I=INT((KFSM-9)/2)
41636             DO 150 J=1,3
41637               DO 140 K=1,3
41638                 LKNT = LKNT+1
41639                 IDLAM(LKNT,1)=-2 -2*(J-1)
41640                 IDLAM(LKNT,2)= 1 +2*(K-1)
41641                 IDLAM(LKNT,3)= 0
41642                 XLAM(LKNT)=0
41643                 IF (IMSS(52).NE.0) THEN
41644 C...Use massive top quark
41645                   IF (IDLAM(LKNT,1).EQ.-6) THEN
41646                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
41647      &                   * (SM-SMT)
41648                     XLAM(LKNT) =
41649      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
41650 C...If no top quark, all decay products massless
41651                   ELSE
41652                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41653                     XLAM(LKNT) =
41654      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41655                   ENDIF
41656 C...KINEMATICS CHECK
41657                   IF (XLAM(LKNT).EQ.0D0) THEN
41658                     LKNT=LKNT-1
41659                   ENDIF
41660                 ENDIF
41661   140         CONTINUE
41662   150       CONTINUE
41663           ENDIF
41664 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
41665 C...No right-handed neutrinos
41666           IF(ICNT.EQ.1) THEN
41667             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
41668               J=INT((KFSM-10)/2)
41669               DO 170 I=1,3
41670                 DO 160 K=1,3
41671                   IF (I.NE.J) THEN
41672 C...~nu_J -> lepton+_I + lepton-_K
41673                     LKNT = LKNT+1
41674                     IDLAM(LKNT,1)=-11 -2*(I-1)
41675                     IDLAM(LKNT,2)= 11 +2*(K-1)
41676                     IDLAM(LKNT,3)=  0
41677                     XLAM(LKNT)=0D0
41678                     RM2=RVLAM(I,J,K)**2 * SM
41679                     IF (IMSS(51).NE.0) XLAM(LKNT) =
41680      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41681 C...KINEMATICS CHECK
41682                     IF (XLAM(LKNT).EQ.0D0) THEN
41683                       LKNT=LKNT-1
41684                     ENDIF
41685                   ENDIF
41686   160           CONTINUE
41687   170         CONTINUE
41688 C...~nu_I -> dbar_J + d_K
41689               I=INT((KFSM-10)/2)
41690               DO 190 J=1,3
41691                 DO 180 K=1,3
41692                   LKNT = LKNT+1
41693                   IDLAM(LKNT,1)=-1 -2*(J-1)
41694                   IDLAM(LKNT,2)= 1 +2*(K-1)
41695                   IDLAM(LKNT,3)= 0
41696                   XLAM(LKNT)=0D0
41697                   RM2=3*RVLAMP(I,J,K)**2 * SM
41698                   IF (IMSS(52).NE.0) XLAM(LKNT) =
41699      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41700 C...KINEMATICS CHECK
41701                   IF (XLAM(LKNT).EQ.0D0) THEN
41702                     LKNT=LKNT-1
41703                   ENDIF
41704   180           CONTINUE
41705   190         CONTINUE
41706             ENDIF
41707           ENDIF
41708 C * SDOWN -> NU(BAR) + D and LEPTON- + U
41709           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
41710             J=INT((KFSM+1)/2)
41711             DO 210 I=1,3
41712               DO 200 K=1,3
41713 C...~d_J -> nu_Ibar + d_K
41714                 LKNT = LKNT+1
41715                 IDLAM(LKNT,1)=-12 -2*(I-1)
41716                 IDLAM(LKNT,2)=  1 +2*(K-1)
41717                 IDLAM(LKNT,3)=  0
41718                 XLAM(LKNT)=0D0
41719                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41720                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41721      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41722 C...KINEMATICS CHECK
41723                 IF (XLAM(LKNT).EQ.0D0) THEN
41724                   LKNT=LKNT-1
41725                 ENDIF
41726   200         CONTINUE
41727   210       CONTINUE
41728             K=INT((KFSM+1)/2)
41729             DO 240 I=1,3
41730               DO 230 J=1,3
41731 C...~d_K -> nu_I + d_J
41732                 LKNT = LKNT+1
41733                 IDLAM(LKNT,1)= 12 +2*(I-1)
41734                 IDLAM(LKNT,2)=  1 +2*(J-1)
41735                 IDLAM(LKNT,3)=  0
41736                 XLAM(LKNT)=0D0
41737                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41738                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41739      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41740 C...KINEMATICS CHECK
41741                 IF (XLAM(LKNT).EQ.0D0) THEN
41742                   LKNT=LKNT-1
41743                 ENDIF
41744 C...~d_K -> lepton_I- + u_J
41745   220           LKNT = LKNT+1
41746                 IDLAM(LKNT,1)= 11 +2*(I-1)
41747                 IDLAM(LKNT,2)=  2 +2*(J-1)
41748                 IDLAM(LKNT,3)=  0
41749                 XLAM(LKNT)=0D0
41750                 IF (IMSS(52).NE.0) THEN
41751 C...Use massive top quark
41752                   IF (IDLAM(LKNT,2).EQ.6) THEN
41753                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
41754                     XLAM(LKNT) =
41755      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
41756 C...If no top quark, all decay products massless
41757                   ELSE
41758                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41759                     XLAM(LKNT) =
41760      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41761                   ENDIF
41762 C...KINEMATICS CHECK
41763                   IF (XLAM(LKNT).EQ.0D0) THEN
41764                     LKNT=LKNT-1
41765                   ENDIF
41766                 ENDIF
41767   230         CONTINUE
41768   240       CONTINUE
41769           ENDIF
41770 C * SUP -> LEPTON+ + D
41771           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
41772             J=NINT(KFSM/2.)
41773             DO 260 I=1,3
41774               DO 250 K=1,3
41775 C...~u_J -> lepton_I+ + d_K
41776                 LKNT = LKNT+1
41777                 IDLAM(LKNT,1)=-11 -2*(I-1)
41778                 IDLAM(LKNT,2)=  1 +2*(K-1)
41779                 IDLAM(LKNT,3)=  0
41780                 XLAM(LKNT)=0D0
41781                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41782                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41783      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41784 C...KINEMATICS CHECK
41785                 IF (XLAM(LKNT).EQ.0D0) THEN
41786                   LKNT=LKNT-1
41787                 ENDIF
41788   250         CONTINUE
41789   260       CONTINUE
41790           ENDIF
41791         ENDIF
41792 C...BARYON NUMBER VIOLATING DECAYS
41793         IF (IMSS(53).GE.1) THEN
41794 C * SUP -> DBAR + DBAR
41795           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
41796             I = KFSM/2
41797             DO 280 J=1,3
41798               DO 270 K=1,3
41799 C...~u_I -> dbar_J + dbar_K
41800                 IF (J.LT.K) THEN
41801 C...(anti-) symmetry J <-> K.
41802                   LKNT = LKNT + 1
41803                   IDLAM(LKNT,1) = -1 -2*(J-1)
41804                   IDLAM(LKNT,2) = -1 -2*(K-1)
41805                   IDLAM(LKNT,3) =  0
41806                   XLAM(LKNT)    =  0D0
41807                   RM2 = 2.*(RVLAMB(I,J,K)**2)
41808      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
41809                   XLAM(LKNT)    =
41810      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41811 C...KINEMATICS CHECK
41812                   IF (XLAM(LKNT).EQ.0D0) THEN
41813                     LKNT = LKNT-1
41814                   ENDIF
41815                 ENDIF
41816   270         CONTINUE
41817   280       CONTINUE
41818           ENDIF
41819 C * SDOWN -> UBAR + DBAR
41820           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
41821             K=(KFSM+1)/2
41822             DO 300 I=1,3
41823               DO 290 J=1,3
41824 C...LAMB coupling antisymmetric in J and K.
41825                 IF (J.NE.K) THEN
41826 C...~d_K -> ubar_I + dbar_K
41827                   LKNT = LKNT + 1
41828                   IDLAM(LKNT,1)= -2 -2*(I-1)
41829                   IDLAM(LKNT,2)= -1 -2*(J-1)
41830                   IDLAM(LKNT,3)=  0
41831                   XLAM(LKNT)=0D0
41832 C...Use massive top quark
41833                   IF (IDLAM(LKNT,1).EQ.-6) THEN
41834                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
41835      &                   )
41836                     XLAM(LKNT) =
41837      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
41838 C...If no top quark, all decay products massless
41839                   ELSE
41840                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41841                     XLAM(LKNT) =
41842      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41843                   ENDIF
41844 C...KINEMATICS CHECK
41845                   IF (XLAM(LKNT).EQ.0D0) THEN
41846                     LKNT=LKNT-1
41847                   ENDIF
41848                 ENDIF
41849   290         CONTINUE
41850   300       CONTINUE
41851           ENDIF
41852         ENDIF
41853       ENDIF
41854  
41855       RETURN
41856       END
41857  
41858 C*********************************************************************
41859  
41860 C...PYRVNE
41861 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
41862 C...P. Z. Skands
41863  
41864       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
41865  
41866 C...Double precision and integer declarations.
41867       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41868       IMPLICIT INTEGER(I-N)
41869 C...Parameter statement to help give large particle numbers.
41870       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41871      &KEXCIT=4000000,KDIMEN=5000000)
41872 C...Commonblocks.
41873       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41874       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41875       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41876       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
41877      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
41878       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
41879 C...Local variables.
41880       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
41881      &     ,DCMASS,KFR(3)
41882       DOUBLE PRECISION XLAM(0:400)
41883       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
41884       INTEGER IDLAM(400,3), PYCOMP
41885       LOGICAL DCMASS
41886       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
41887  
41888 C...R-VIOLATING DECAYS
41889       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
41890         KFSM=KFIN-KSUSY1
41891         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
41892 C...WHICH NEUTRALINO ?
41893           NCHI=1
41894           IF (KFSM.EQ.23) NCHI=2
41895           IF (KFSM.EQ.25) NCHI=3
41896           IF (KFSM.EQ.35) NCHI=4
41897 C...SIGN OF MASS (Opposite convention as HERWIG)
41898           ISM = 1
41899           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
41900  
41901 C...Useful parameters for the calculation of the A and B constants.
41902           WMASS = PMAS(PYCOMP(24),1)
41903           ECHG = 2*SQRT(PARU(103)*PARU(1))
41904           COSB=1/(SQRT(1+RMSS(5)**2))
41905           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
41906           COSW=SQRT(1-PARU(102))
41907           SINW=SQRT(PARU(102))
41908           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
41909 C...Run quark masses to neutralino mass squared (for Higgs-type
41910 C...couplings)
41911           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
41912           DO 100 I=1,6
41913             RMQ(I)=PYMRUN(I,SQMCHI)
41914   100     CONTINUE
41915 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
41916             DO 110 NCHJ=1,4
41917               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
41918               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
41919               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
41920               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
41921   110       CONTINUE
41922             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
41923             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
41924             C2=ECHG*ZPMIX(NCHI,1)
41925             C3=GW*ZPMIX(NCHI,2)/COSW
41926             EU=2D0/3D0
41927             ED=-1D0/3D0
41928 C... AB(x,y,z):
41929 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
41930 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
41931 C                                    11-16:e,nu_e,mu,...)
41932 C       z=1-2  : Mass eigenstate number
41933 C...CALCULATE COUPLINGS
41934           DO 120 I = 11,15,2
41935             CMS=PMAS(PYCOMP(I),1)
41936 C...Intermediate sleptons
41937             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
41938      &           *(C2-C3*SINW**2))
41939             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
41940      &           *(C2-C3*SINW**2))
41941             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
41942      &           **2))
41943             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
41944      &           **2))
41945 C...Inermediate sneutrinos
41946             AB(1,I+1,1)=0D0
41947             AB(2,I+1,1)=5D-1*C3
41948             AB(1,I+1,2)=0D0
41949             AB(2,I+1,2)=0D0
41950 C...Inermediate sdown
41951             J=I-10
41952             CMS=RMQ(J)
41953             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
41954      &           *ED*(C2-C3*SINW**2))
41955             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
41956      &           *ED*(C2-C3*SINW**2))
41957             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
41958      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
41959             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
41960      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
41961 C...Inermediate sup
41962             J=J+1
41963             CMS=RMQ(J)
41964             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
41965      &           *EU*(C2-C3*SINW**2))
41966             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
41967      &           *EU*(C2-C3*SINW**2))
41968             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
41969      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
41970             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
41971      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
41972   120     CONTINUE
41973  
41974           IF (IMSS(51).GE.1) THEN
41975 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
41976 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
41977 C...STEP IN I,J,K USING SINGLE COUNTER
41978             DO 130 ISC=0,26
41979 C...LAMBDA COUPLING ASYM IN I,J
41980               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
41981                 LKNT = LKNT+1
41982                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
41983                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
41984                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
41985                 XLAM(LKNT)    = 0D0
41986 C...Set coupling, and decay product masses on/off
41987                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
41988      &               ,MOD(ISC,3)+1)**2
41989                 DCMASS=.FALSE.
41990                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
41991      &               DCMASS = .TRUE.
41992 C...Resonance KF codes (1=I,2=J,3=K)
41993                 KFR(1)=-IDLAM(LKNT,1)
41994                 KFR(2)=-IDLAM(LKNT,2)
41995                 KFR(3)=-IDLAM(LKNT,3)
41996 C...Calculate width.
41997                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
41998      &               IDLAM(LKNT,3),XLAM(LKNT))
41999                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42000 C...Charge conjugate mode.
42001                 LKNT=LKNT+1
42002                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42003                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42004                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42005                 XLAM(LKNT)=XLAM(LKNT-1)
42006 C...KINEMATICS CHECK
42007                 IF (XLAM(LKNT).EQ.0D0) THEN
42008                   LKNT=LKNT-2
42009                 ENDIF
42010               ENDIF
42011   130       CONTINUE
42012           ENDIF
42013  
42014           IF (IMSS(52).GE.1) THEN
42015 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
42016 C * CHI0 -> NUBAR_I + DBAR_J + D_K
42017             DO 140 ISC=0,26
42018               LKNT = LKNT+1
42019               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42020               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42021               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42022               XLAM(LKNT)    =  0D0
42023 C...Set coupling, and decay product masses on/off
42024               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
42025      &             ,MOD(ISC,3)+1)**2
42026               DCMASS=.FALSE.
42027               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
42028      &             DCMASS = .TRUE.
42029 C...Resonance KF codes (1=I,2=J,3=K)
42030               KFR(1)=-IDLAM(LKNT,1)
42031               KFR(2)=-IDLAM(LKNT,2)
42032               KFR(3)=-IDLAM(LKNT,3)
42033 C...Calculate width.
42034               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42035      &             ,XLAM(LKNT))
42036               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42037 C...Charge conjugate mode.
42038               LKNT=LKNT+1
42039               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42040               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42041               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42042               XLAM(LKNT)=XLAM(LKNT-1)
42043 C...KINEMATICS CHECK
42044               IF (XLAM(LKNT).EQ.0D0) THEN
42045                 LKNT=LKNT-2
42046               ENDIF
42047  
42048 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
42049               LKNT = LKNT+1
42050               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42051               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42052               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42053               XLAM(LKNT)    =  0D0
42054 C...Set coupling, and decay product masses on/off
42055               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
42056      &             ,MOD(ISC,3)+1)**2
42057               DCMASS=.FALSE.
42058               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
42059      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
42060 C...Resonance KF codes (1=I,2=J,3=K)
42061               KFR(1)=-IDLAM(LKNT,1)
42062               KFR(2)=-IDLAM(LKNT,2)
42063               KFR(3)=-IDLAM(LKNT,3)
42064 C...Calculate width.
42065               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42066      &             ,XLAM(LKNT))
42067               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42068 C...Charge conjugate mode.
42069               LKNT=LKNT+1
42070               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42071               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42072               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42073               XLAM(LKNT)=XLAM(LKNT-1)
42074 C...KINEMATICS CHECK
42075               IF (XLAM(LKNT).EQ.0D0) THEN
42076                 LKNT=LKNT-2
42077               ENDIF
42078   140       CONTINUE
42079           ENDIF
42080  
42081           IF (IMSS(53).GE.1) THEN
42082 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
42083 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
42084             DO 150 ISC=0,26
42085 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
42086               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
42087                 LKNT = LKNT+1
42088                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
42089                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42090                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42091                 XLAM(LKNT)    =  0D0
42092 C...Set coupling, and decay product masses on/off
42093                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
42094      &               +1,MOD(ISC,3)+1)**2
42095                 DCMASS=.FALSE.
42096                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
42097      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
42098 C...Resonance KF codes (1=I,2=J,3=K)
42099                 KFR(1) = IDLAM(LKNT,1)
42100                 KFR(2) = IDLAM(LKNT,2)
42101                 KFR(3) = IDLAM(LKNT,3)
42102 C...Calculate width.
42103                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42104      &               IDLAM(LKNT,3),XLAM(LKNT))
42105                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42106 C...Charge conjugate mode.
42107                 LKNT=LKNT+1
42108                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42109                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42110                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42111                 XLAM(LKNT)=XLAM(LKNT-1)
42112 C...KINEMATICS CHECK
42113                 IF (XLAM(LKNT).EQ.0D0) THEN
42114                   LKNT=LKNT-2
42115                 ENDIF
42116               ENDIF
42117   150       CONTINUE
42118           ENDIF
42119         ENDIF
42120       ENDIF
42121  
42122       RETURN
42123       END
42124  
42125 C*********************************************************************
42126  
42127 C...PYRVCH
42128 C...Calculates R-violating chargino decay widths.
42129 C...P. Z. Skands
42130  
42131       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
42132  
42133 C...Double precision and integer declarations.
42134       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42135       IMPLICIT INTEGER(I-N)
42136 C...Parameter statement to help give large particle numbers.
42137       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42138      &KEXCIT=4000000,KDIMEN=5000000)
42139 C...Commonblocks.
42140       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42141       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42142       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42143       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42144      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42145       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
42146 C...Local variables.
42147       DOUBLE PRECISION XLAM(0:400)
42148       INTEGER IDLAM(400,3), PYCOMP
42149 C...Information from main routine to PYRVGW
42150       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42151      &     ,DCMASS,KFR(3)
42152 C...Auxiliary variables needed for BV (RV Gauge STOre)
42153       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
42154      &     ,RVLJKI,RVLJIK
42155 C...Running quark masses
42156       DOUBLE PRECISION RMQ(6)
42157 C...Decay product masses on/off
42158       LOGICAL DCMASS
42159       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
42160      &     /RVGSTO/
42161  
42162  
42163 C...IF R-VIOLATION ON.
42164       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
42165         KFSM=KFIN-KSUSY1
42166         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
42167 C...WHICH CHARGINO ?
42168           NCHI = 1
42169           IF (KFSM.EQ.37) NCHI = 2
42170  
42171 C...Useful parameters for calculating the A and B constants.
42172 C...SIGN OF MASS (Opposite convention as HERWIG)
42173           ISM  = 1
42174           IF (SMW(NCHI).LT.0D0) ISM = -1
42175           WMASS   = PMAS(PYCOMP(24),1)
42176           COSB    = 1/(SQRT(1+RMSS(5)**2))
42177           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
42178           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
42179           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
42180           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
42181           C2      = UMIX(NCHI,1)
42182           C3      = VMIX(NCHI,1)
42183 C...Running masses at Q^2=MCHI^2.
42184           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
42185           DO 100 I=1,6
42186             RMQ(I)=PYMRUN(I,SQMCHI)
42187   100     CONTINUE
42188  
42189 C... AB(x,y,z) coefficients:
42190 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
42191 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
42192 C                                    11-16:e,nu_e,mu,...)
42193 C       z=1-2  : Mass eigenstate number
42194           DO 110 I = 11,15,2
42195 C...Intermediate sleptons
42196             AB(1,I,1)   = 0D0
42197             AB(1,I,2)   = 0D0
42198             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
42199      &           SFMIX(I,1)*C2
42200             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
42201      &           SFMIX(I,3)*C2
42202 C...Intermediate sneutrinos
42203             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
42204             AB(1,I+1,2) = 0D0
42205             AB(2,I+1,1) = ISM*C3
42206             AB(2,I+1,2) = 0D0
42207 C...Intermediate sdown
42208             J=I-10
42209             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
42210             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
42211             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
42212             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
42213 C...Intermediate sup
42214             J=J+1
42215             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
42216             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
42217             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
42218             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
42219   110     CONTINUE
42220  
42221 C...LLE TYPE R-VIOLATION
42222           IF (IMSS(51).GE.1) THEN
42223 C...LOOP OVER DECAY MODES
42224             DO 140 ISC=0,26
42225  
42226 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
42227               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
42228                 LKNT = LKNT+1
42229                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
42230                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
42231                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
42232                 XLAM(LKNT)    =  0D0
42233 C...Set coupling, and decay product masses on/off
42234                 RVLAMC        = GW2 * 5D-1 *
42235      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42236      &               **2
42237                 DCMASS=.FALSE.
42238                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
42239 C...Resonance KF codes (1=I,2=J,3=K).
42240                 KFR(1) = 0
42241                 KFR(2) = 0
42242                 KFR(3) = -IDLAM(LKNT,3)+1
42243 C...Calculate width.
42244                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42245      &               IDLAM(LKNT,3),XLAM(LKNT))
42246                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42247 C...KINEMATICS CHECK
42248                 IF (XLAM(LKNT).EQ.0D0) THEN
42249                   LKNT=LKNT-1
42250                 ENDIF
42251  
42252 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
42253   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
42254                   LKNT = LKNT+1
42255                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
42256                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
42257                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
42258                   XLAM(LKNT)    = 0D0
42259 C...Set coupling, and decay product masses on/off
42260                   RVLAMC = GW2 * 5D-1 *
42261      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42262 C...I,J SYMMETRY => FACTOR 2
42263                   RVLAMC=2*RVLAMC
42264                   DCMASS=.FALSE.
42265                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
42266 C...Resonance KF codes (1=I,2=J,3=K)
42267                   KFR(1)=IDLAM(LKNT,1)-1
42268                   KFR(2)=IDLAM(LKNT,2)-1
42269                   KFR(3)=0
42270 C...Calculate width.
42271                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42272      &                 IDLAM(LKNT,3),XLAM(LKNT))
42273                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42274 C...KINEMATICS CHECK
42275                   IF (XLAM(LKNT).EQ.0D0) THEN
42276                     LKNT=LKNT-1
42277                   ENDIF
42278   130           ENDIF
42279  
42280 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K
42281                 LKNT = LKNT+1
42282                 IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42283                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
42284                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
42285                 XLAM(LKNT)    = 0D0
42286 C...Set coupling, and decay product masses on/off
42287                 RVLAMC = GW2 * 5D-1 *
42288      &             RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42289 C...I,J SYMMETRY => FACTOR 2
42290                 RVLAMC=2*RVLAMC
42291                 DCMASS=.FALSE.
42292                 IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
42293      &               .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
42294 C...Resonance KF codes (1=I,2=J,3=K)
42295                 KFR(1) =-IDLAM(LKNT,1)+1
42296                 KFR(2) =-IDLAM(LKNT,2)+1
42297                 KFR(3) = 0
42298 C...Calculate width.
42299                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42300      &               IDLAM(LKNT,3),XLAM(LKNT))
42301                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42302 C...KINEMATICS CHECK
42303                 IF (XLAM(LKNT).EQ.0D0) THEN
42304                   LKNT=LKNT-1
42305                 ENDIF
42306               ENDIF
42307   140       CONTINUE
42308           ENDIF
42309  
42310 C...LQD TYPE R-VIOLATION
42311           IF (IMSS(52).GE.1) THEN
42312 C...LOOP OVER DECAY MODES
42313             DO 180 ISC=0,26
42314  
42315 C...CHI+ -> NUBAR_I + DBAR_J + U_K
42316               LKNT = LKNT+1
42317               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42318               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42319               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
42320               XLAM(LKNT)    =  0D0
42321 C...Set coupling, and decay product masses on/off
42322               RVLAMC = 3. * GW2 * 5D-1 *
42323      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42324               DCMASS=.FALSE.
42325               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
42326      &             DCMASS = .TRUE.
42327 C...Resonance KF codes (1=I,2=J,3=K)
42328               KFR(1)=0
42329               KFR(2)=0
42330               KFR(3)=-IDLAM(LKNT,3)+1
42331 C...Calculate width.
42332               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42333      &             ,XLAM(LKNT))
42334               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42335 C...KINEMATICS CHECK
42336               IF (XLAM(LKNT).EQ.0D0) THEN
42337                 LKNT=LKNT-1
42338               ENDIF
42339  
42340 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
42341   150         LKNT = LKNT+1
42342               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42343               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42344               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
42345               XLAM(LKNT)    =  0D0
42346 C...Set coupling, and decay product masses on/off
42347               RVLAMC = 3. * GW2 * 5D-1 *
42348      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42349               DCMASS=.FALSE.
42350               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
42351      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
42352 C...Resonance KF codes (1=I,2=J,3=K)
42353               KFR(1)=0
42354               KFR(2)=0
42355               KFR(3)=-IDLAM(LKNT,3)+1
42356 C...Calculate width.
42357               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42358      &             ,XLAM(LKNT))
42359               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42360 C...KINEMATICS CHECK
42361               IF (XLAM(LKNT).EQ.0D0) THEN
42362                 LKNT=LKNT-1
42363               ENDIF
42364  
42365 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
42366   160         LKNT = LKNT+1
42367               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42368               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42369               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42370               XLAM(LKNT)    =  0D0
42371 C...Set coupling, and decay product masses on/off
42372               RVLAMC = 3. * GW2 * 5D-1 *
42373      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42374               DCMASS = .FALSE.
42375               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
42376      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
42377 C...Resonance KF codes (1=I,2=J,3=K)
42378               KFR(1)=-IDLAM(LKNT,1)+1
42379               KFR(2)=-IDLAM(LKNT,2)+1
42380               KFR(3)=0
42381 C...Calculate width.
42382               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42383      &             ,XLAM(LKNT))
42384               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42385 C...KINEMATICS CHECK
42386               IF (XLAM(LKNT).EQ.0D0) THEN
42387                 LKNT=LKNT-1
42388               ENDIF
42389  
42390 C * CHI+ -> NU_I + U_J + DBAR_K.
42391   170         LKNT = LKNT+1
42392               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
42393               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
42394               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42395               XLAM(LKNT)    =  0D0
42396 C...Set coupling, and decay product masses on/off
42397               DCMASS = .FALSE.
42398               RVLAMC = 3. * GW2 * 5D-1 *
42399      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42400               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
42401      &             DCMASS = .TRUE.
42402 C...Resonance KF codes (1=I,2=J,3=K)
42403               KFR(1)=IDLAM(LKNT,1)-1
42404               KFR(2)=IDLAM(LKNT,2)-1
42405               KFR(3)=0
42406 C...Calculate width.
42407               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42408      &             ,XLAM(LKNT))
42409               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42410 C...KINEMATICS CHECK
42411               IF (XLAM(LKNT).EQ.0D0) THEN
42412                 LKNT=LKNT-1
42413               ENDIF
42414  
42415   180       CONTINUE
42416           ENDIF
42417  
42418 C...UDD TYPE R-VIOLATION
42419 C...These decays need special treatment since more than one BV coupling
42420 C...contributes (with interference). Consider e.g. (symbolically)
42421 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
42422 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
42423 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
42424 C...The problem is that a single call to PYRVGW would evaluate all
42425 C...these terms and sum them, but without the different couplings. The
42426 C...way out is to call PYRVGW three times, once for the first line, once
42427 C...for the second line, and then once for all the lines (it is
42428 C...impossible to get just the last line out) without multiplying by
42429 C...couplings. The last line is then obtained as the result of the third
42430 C...call minus the results of the two first calls. Each term is then
42431 C...multiplied by its respective coupling before the whole thing is
42432 C...summed up in XLAM.
42433 C...Note that with three interfering resonances, this procedure becomes
42434 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
42435  
42436           IF (IMSS(53).GE.1) THEN
42437 C...LOOP OVER DECAY MODES
42438             DO 190 ISC=1,25
42439  
42440 C...CHI+ -> U_I + U_J + D_K
42441 C...Decay mode I<->J symmetric.
42442               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
42443                 LKNT = LKNT+1
42444                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
42445                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
42446                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42447                 XLAM(LKNT)    =  0D0
42448 C...Set coupling, and decay product masses on/off
42449                 RVLAMC= 6. * GW2 * 5D-1
42450                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
42451      &               +1)
42452                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
42453      &               +1)
42454                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
42455      &               * RVLAMC
42456                 DCMASS=.FALSE.
42457                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
42458      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
42459 C...Resonance KF codes (1=I,2=J,3=K)
42460                 KFR(1) = -IDLAM(LKNT,1)+1
42461                 KFR(2) = 0
42462                 KFR(3) = 0
42463 C...Calculate width.
42464                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42465      &               IDLAM(LKNT,3),XRESI)
42466 C...Resonance KF codes (1=I,2=J,3=K)
42467                 KFR(1) = 0
42468                 KFR(2) = -IDLAM(LKNT,2)+1
42469                 KFR(3) = 0
42470 C...Calculate width.
42471                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42472      &               IDLAM(LKNT,3),XRESJ)
42473 C...Resonance KF codes (1=I,2=J,3=K)
42474                 KFR(1) = -IDLAM(LKNT,1)+1
42475                 KFR(2) = -IDLAM(LKNT,2)+1
42476                 KFR(3) = 0
42477 C...Calculate width.
42478                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42479      &               IDLAM(LKNT,3),XRESIJ)
42480                 IF (ABS((XRESI+XRESJ)/XRESIJ-1.).GT.1D-4) THEN
42481                   XRESIJ = XRESIJ-XRESI-XRESJ
42482                 ELSE
42483                   XRESIJ = 0D0
42484                 ENDIF
42485 C...CALCULATE TOTAL WIDTH
42486                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
42487      &               + RVLJIK*RVLIJK * XRESIJ
42488                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42489 C...KINEMATICS CHECK
42490                 IF (XLAM(LKNT).EQ.0D0) THEN
42491                   LKNT=LKNT-1
42492                 ENDIF
42493               ENDIF
42494 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
42495 C...Symmetry I<->J<->K.
42496               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
42497      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
42498                 LKNT = LKNT+1
42499                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
42500                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42501                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42502                 XLAM(LKNT)    =  0D0
42503 C...Set coupling, and decay product masses on/off
42504                 RVLAMC = 6. * GW2 * 5D-1
42505                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
42506      &               +1)
42507                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
42508      &               +1)
42509                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
42510      &               +1)
42511                 DCMASS = .FALSE.
42512                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
42513      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
42514 C...Collect symmetry factors
42515                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
42516      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
42517      &               RVLAMC = 5D-1 * RVLAMC
42518 C...Resonance KF codes (1=I,2=J,3=K)
42519                 KFR(1) = IDLAM(LKNT,1)-1
42520                 KFR(2) = 0
42521                 KFR(3) = 0
42522 C...Calculate width.
42523                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42524      &               IDLAM(LKNT,3),XRESI)
42525 C...Resonance KF codes (1=I,2=J,3=K)
42526                 KFR(1) = 0
42527                 KFR(2) = IDLAM(LKNT,2)-1
42528                 KFR(3) = 0
42529 C...Calculate width.
42530                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42531      &               IDLAM(LKNT,3),XRESJ)
42532 C...Resonance KF codes (1=I,2=J,3=K)
42533                 KFR(1) = 0
42534                 KFR(2) = 0
42535                 KFR(3) = IDLAM(LKNT,3)-1
42536 C...Calculate width.
42537                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42538      &               IDLAM(LKNT,3),XRESK)
42539 C...Resonance KF codes (1=I,2=J,3=K)
42540                 KFR(1) = IDLAM(LKNT,1)-1
42541                 KFR(2) = IDLAM(LKNT,2)-1
42542                 KFR(3) = 0
42543 C...Calculate width.
42544                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42545      &               IDLAM(LKNT,3),XRESIJ)
42546                 IF (ABS(XRESIJ/(XRESI+XRESJ)-1.).GT.1D-4) THEN
42547                   XRESIJ = XRESI+XRESJ-XRESIJ
42548                 ELSE
42549                   XRESIJ = 0D0
42550                 ENDIF
42551 C...Resonance KF codes (1=I,2=J,3=K)
42552                 KFR(1) = 0
42553                 KFR(2) = IDLAM(LKNT,2)-1
42554                 KFR(3) = IDLAM(LKNT,3)-1
42555 C...Calculate width.
42556                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42557      &               IDLAM(LKNT,3),XRESJK)
42558                 IF (ABS(XRESJK/(XRESJ+XRESK)-1.).GT.1D-4) THEN
42559                   XRESJK = XRESJ+XRESK-XRESJK
42560                 ELSE
42561                   XRESJK = 0D0
42562                 ENDIF
42563 C...Resonance KF codes (1=I,2=J,3=K)
42564                 KFR(1) = IDLAM(LKNT,1)-1
42565                 KFR(2) = 0
42566                 KFR(3) = IDLAM(LKNT,3)-1
42567 C...Calculate width.
42568                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42569      &               IDLAM(LKNT,3),XRESIK)
42570                 IF (ABS(XRESIK/(XRESI+XRESK)-1.).GT.1D-4) THEN
42571                   XRESIK = XRESI+XRESK-XRESIK
42572                 ELSE
42573                   XRESIK = 0D0
42574                 ENDIF
42575 C...CALCULATE TOTAL WIDTH
42576                 XLAM(LKNT) =
42577      &                 RVLIJK**2 * XRESI
42578      &               + RVLJKI**2 * XRESJ
42579      &               + RVLKIJ**2 * XRESK
42580      &               + RVLIJK*RVLJKI * XRESIJ
42581      &               + RVLIJK*RVLKIJ * XRESIK
42582      &               + RVLJKI*RVLKIJ * XRESJK
42583                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
42584 C...KINEMATICS CHECK
42585                 IF (XLAM(LKNT).EQ.0D0) THEN
42586                   LKNT=LKNT-1
42587                 ENDIF
42588               ENDIF
42589   190       CONTINUE
42590           ENDIF
42591         ENDIF
42592       ENDIF
42593  
42594       RETURN
42595       END
42596  
42597 C*********************************************************************
42598  
42599 C...PYRVGL
42600 C...Calculates R-violating gluino decay widths.
42601 C...See BV part of PYRVCH for comments about the way the BV decay width
42602 C...is calculated. Same comments apply here.
42603 C...P. Z. Skands
42604  
42605       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
42606  
42607 C...Double precision and integer declarations.
42608       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42609       IMPLICIT INTEGER(I-N)
42610 C...Parameter statement to help give large particle numbers.
42611       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42612      &KEXCIT=4000000,KDIMEN=5000000)
42613 C...Commonblocks.
42614       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42615       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42616       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42617       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42618      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42619       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
42620 C...Local variables.
42621       DOUBLE PRECISION XLAM(0:400)
42622       INTEGER IDLAM(400,3), PYCOMP
42623 C...Information from main routine to PYRVGW
42624       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42625      &     ,DCMASS,KFR(3)
42626 C...Auxiliary variables needed for BV (RV Gauge STOre)
42627       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
42628      &     ,RVLJKI,RVLJIK
42629 C...Running quark masses
42630       DOUBLE PRECISION RMQ(6)
42631 C...Decay product masses on/off
42632       LOGICAL DCMASS
42633       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
42634      &     /RVGSTO/
42635  
42636 C...IF LQD OR UDD TYPE R-VIOLATION ON.
42637       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
42638         KFSM=KFIN-KSUSY1
42639  
42640 C... AB(x,y,z):
42641 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
42642 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
42643 C                                    11-16:e,nu_e,mu,... not used here)
42644 C       z=1-2  : Mass eigenstate number
42645         DO 100 I = 1,6
42646 C...A Couplings
42647           AB(1,I,1) = SFMIX(I,2)
42648           AB(1,I,2) = SFMIX(I,4)
42649 C...B Couplings
42650           AB(2,I,1) = -SFMIX(I,1)
42651           AB(2,I,2) = -SFMIX(I,3)
42652   100   CONTINUE
42653         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
42654 C...LQD DECAYS.
42655         IF (IMSS(52).GE.1) THEN
42656 C...STEP IN I,J,K USING SINGLE COUNTER
42657           DO 120 ISC=0,26
42658 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
42659             LKNT          = LKNT+1
42660             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42661             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42662             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42663             XLAM(LKNT)=0D0
42664 C...Set coupling, and decay product masses on/off
42665             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42666      &           * 5D-1 * GSTR2
42667             DCMASS        = .FALSE.
42668             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
42669 C...Resonance KF codes (1=I,2=J,3=K)
42670             KFR(1)        = 0
42671             KFR(2)        = -IDLAM(LKNT,2)
42672             KFR(3)        = -IDLAM(LKNT,3)
42673 C...Calculate width.
42674             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42675      &           ,XLAM(LKNT))
42676 C...Normalize
42677             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42678 C...Charge conjugate mode.
42679   110       LKNT          = LKNT+1
42680             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
42681             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
42682             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
42683             XLAM(LKNT)    = XLAM(LKNT-1)
42684 C...KINEMATICS CHECK
42685             IF (XLAM(LKNT).EQ.0D0) THEN
42686               LKNT=LKNT-2
42687             ENDIF
42688  
42689 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
42690             LKNT = LKNT+1
42691             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42692             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42693             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42694             XLAM(LKNT)=0D0
42695 C...Set coupling, and decay product masses on/off
42696             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42697      &           **2* 5D-1 * GSTR2
42698             DCMASS        = .FALSE.
42699             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
42700      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
42701 C...Resonance KF codes (1=I,2=J,3=K)
42702             KFR(1)        = 0
42703             KFR(2)        = -IDLAM(LKNT,2)
42704             KFR(3)        = -IDLAM(LKNT,3)
42705 C...Calculate width.
42706             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42707      &           ,XLAM(LKNT))
42708             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42709 C...Charge conjugate mode.
42710             LKNT=LKNT+1
42711             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
42712             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
42713             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
42714             XLAM(LKNT)    =  XLAM(LKNT-1)
42715 C...KINEMATICS CHECK
42716             IF (XLAM(LKNT).EQ.0D0) THEN
42717               LKNT=LKNT-2
42718             ENDIF
42719  
42720   120     CONTINUE
42721         ENDIF
42722  
42723 C...UDD DECAYS.
42724         IF (IMSS(53).GE.1) THEN
42725 C...STEP IN I,J,K USING SINGLE COUNTER
42726           DO 130 ISC=0,26
42727 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
42728             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
42729               LKNT          = LKNT+1
42730               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
42731               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42732               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42733               XLAM(LKNT)=0D0
42734 C...Set coupling, and decay product masses on/off. A factor of 2 for
42735 C...(N_C-1) has been used to cancel a factor 0.5.
42736               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42737      &             **2 * GSTR2
42738               DCMASS        = .FALSE.
42739               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
42740      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
42741 C...Resonance KF codes (1=I,2=J,3=K)
42742               KFR(1)        = IDLAM(LKNT,1)
42743               KFR(2)        = 0
42744               KFR(3)        = 0
42745 C...Calculate width.
42746               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42747      &             ,XRESI)
42748 C...Resonance KF codes (1=I,2=J,3=K)
42749               KFR(1)        = 0
42750               KFR(2)        = IDLAM(LKNT,2)
42751               KFR(3)        = 0
42752 C...Calculate width.
42753               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42754      &             ,XRESJ)
42755 C...Resonance KF codes (1=I,2=J,3=K)
42756               KFR(1)        = 0
42757               KFR(2)        = 0
42758               KFR(3)        = IDLAM(LKNT,3)
42759 C...Calculate width.
42760               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42761      &             ,XRESK)
42762 C...Resonance KF codes (1=I,2=J,3=K)
42763               KFR(1)        = IDLAM(LKNT,1)
42764               KFR(2)        = IDLAM(LKNT,2)
42765               KFR(3)        = 0
42766 C...Calculate width.
42767               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42768      &             ,XRESIJ)
42769 C...Calculate interference function. (Factor -1/2 to make up for factor
42770 C...-2 in PYRVGW.
42771               IF (ABS((XRESI+XRESJ)/XRESIJ-1D0).GT.1D-4) THEN
42772                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
42773               ELSE
42774                 XRESIJ = 0D0
42775               ENDIF
42776 C...Resonance KF codes (1=I,2=J,3=K)
42777               KFR(1)        = 0
42778               KFR(2)        = IDLAM(LKNT,2)
42779               KFR(3)        = IDLAM(LKNT,3)
42780 C...Calculate width.
42781               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42782      &             ,XRESJK)
42783               IF (ABS((XRESJ+XRESK)/XRESJK-1).GT.1D-4) THEN
42784                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
42785               ELSE
42786                 XRESJK = 0D0
42787               ENDIF
42788 C...Resonance KF codes (1=I,2=J,3=K)
42789               KFR(1)        = IDLAM(LKNT,1)
42790               KFR(2)        = 0
42791               KFR(3)        = IDLAM(LKNT,3)
42792 C...Calculate width.
42793               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42794      &             ,XRESIK)
42795               IF (ABS((XRESI+XRESK)/XRESIK-1).GT.1D-4) THEN
42796                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
42797               ELSE
42798                 XRESIK = 0D0
42799               ENDIF
42800 C...Calculate total width (factor 1/2 from 1/(N_C-1))
42801               XLAM(LKNT) = XRESI + XRESJ + XRESK
42802      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
42803 C...Normalize
42804               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42805 C...Charge conjugate mode.
42806               LKNT          = LKNT+1
42807               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
42808               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
42809               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
42810               XLAM(LKNT)    = XLAM(LKNT-1)
42811 C...KINEMATICS CHECK
42812               IF (XLAM(LKNT).EQ.0D0) THEN
42813                 LKNT=LKNT-2
42814               ENDIF
42815             ENDIF
42816   130     CONTINUE
42817         ENDIF
42818       ENDIF
42819       RETURN
42820       END
42821  
42822 C*********************************************************************
42823  
42824 C...PYRVSB
42825 C...Auxiliary function to PYRVSF for calculating R-Violating
42826 C...sfermion widths. Though the decay products are most often treated
42827 C...as massless in the calculation, the kinematical boundary of phase
42828 C...space is tested using the true masses.
42829 C...MODE = 1: All decay products massive
42830 C...MODE = 2: Decay product 1 massless
42831 C...MODE = 3: Decay product 2 massless
42832 C...MODE = 4: All decay products  massless
42833  
42834       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
42835  
42836       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42837       IMPLICIT INTEGER (I-N)
42838       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42839       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42840       SAVE /PYDAT1/,/PYDAT2/
42841       DOUBLE PRECISION SM(3)
42842       INTEGER PYCOMP, KC(3)
42843       KC(1)=PYCOMP(KFIN)
42844       KC(2)=PYCOMP(ID1)
42845       KC(3)=PYCOMP(ID2)
42846       SM(1)=PMAS(KC(1),1)**2
42847       SM(2)=PMAS(KC(2),1)**2
42848       SM(3)=PMAS(KC(3),1)**2
42849 C...Kinematics check
42850       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
42851         PYRVSB=0D0
42852         RETURN
42853       ENDIF
42854 C...CM momenta squared
42855       IF (MODE.EQ.1) THEN
42856         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
42857      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
42858       ELSE IF (MODE.EQ.2) THEN
42859         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
42860       ELSE IF (MODE.EQ.3) THEN
42861         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
42862       ELSE
42863         P2CM=SM(1)/4.
42864       ENDIF
42865 C...Calculate Width
42866       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
42867       RETURN
42868       END
42869  
42870 C*********************************************************************
42871  
42872 C...PYRVGW
42873 C...Generalized Matrix Element for R-Violating 3-body widths.
42874 C...P. Z. Skands
42875       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
42876  
42877       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42878       IMPLICIT INTEGER (I-N)
42879       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42880      &KEXCIT=4000000,KDIMEN=5000000)
42881       PARAMETER (EPS=1D-4)
42882       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42883       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42884      &     ,DCMASS,KFR(3)
42885       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42886      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42887       DOUBLE PRECISION XLIM(3,3)
42888       INTEGER KC(0:3), PYCOMP
42889       LOGICAL DCMASS, DCHECK(6)
42890       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
42891  
42892       XLAM   = 0D0
42893  
42894       KC(0)  = PYCOMP(KFIN)
42895       KC(1)  = PYCOMP(ID1)
42896       KC(2)  = PYCOMP(ID2)
42897       KC(3)  = PYCOMP(ID3)
42898       RMS(0) = PMAS(KC(0),1)
42899       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
42900       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
42901       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
42902 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
42903       XLIM(1,1)=(RMS(1)+RMS(2))**2
42904       XLIM(1,2)=(RMS(0)-RMS(3))**2
42905       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
42906       XLIM(2,1)=(RMS(2)+RMS(3))**2
42907       XLIM(2,2)=(RMS(0)-RMS(1))**2
42908       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
42909       XLIM(3,1)=(RMS(1)+RMS(3))**2
42910       XLIM(3,2)=(RMS(0)-RMS(2))**2
42911       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
42912 C...Check Phase Space
42913       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
42914         RETURN
42915       ENDIF
42916  
42917 C...INITIALIZE RESONANCE INFORMATION
42918       DO 110 JRES = 1,3
42919         DO 100 IMASS = 1,2
42920           IRES = 2*(JRES-1)+IMASS
42921           INTRES(IRES,1) = 0
42922           DCHECK(IRES)   =.FALSE.
42923 C...NO RIGHT-HANDED NEUTRINOS
42924           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
42925      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
42926      &         .KFR(JRES).EQ.0) GOTO 100
42927           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
42928           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
42929           INTRES(IRES,1) = IABS(KFR(JRES))
42930           INTRES(IRES,2) = IMASS
42931           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
42932           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
42933   100   CONTINUE
42934   110 CONTINUE
42935  
42936 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
42937  
42938 C...RESONANCE CONTRIBUTIONS
42939 C...(Only sum contributions where the resonance is off shell).
42940 C...Store whether diagram on/off in DCHECK.
42941 C...LOOP OVER MASS STATES
42942       DO 120 J=1,2
42943         IDR=J
42944         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42945         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
42946      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42947           DCHECK(IDR) =.TRUE.
42948           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
42949         ENDIF
42950  
42951         IDR=J+2
42952         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42953         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
42954      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42955           DCHECK(IDR) =.TRUE.
42956           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
42957         ENDIF
42958  
42959         IDR=J+4
42960         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42961         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
42962      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42963           DCHECK(IDR) =.TRUE.
42964           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
42965         ENDIF
42966   120 CONTINUE
42967 C... L-R INTERFERENCES
42968 C... (Only add contributions where both contributing diagrams
42969 C... are non-resonant).
42970       IDR=1
42971       IF (DCHECK(1).AND.DCHECK(2)) THEN
42972 C...Bug corrected 11/12 2001. Skands.
42973         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
42974      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
42975      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
42976       ENDIF
42977  
42978       IDR=3
42979       IF (DCHECK(3).AND.DCHECK(4)) THEN
42980         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
42981      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
42982      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
42983       ENDIF
42984  
42985       IDR=5
42986       IF (DCHECK(5).AND.DCHECK(6)) THEN
42987         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
42988      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
42989      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
42990       ENDIF
42991 C... TRUE INTERFERENCES
42992 C... (Only add contributions where both contributing diagrams
42993 C... are non-resonant).
42994       PREF=-2D0
42995       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
42996       DO 140 IKR1 = 1,2
42997         DO 130 IKR2 = 1,2
42998           IDR  = IKR1+2
42999           IDR2 = IKR2
43000           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
43001             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
43002      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
43003      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
43004           ENDIF
43005  
43006           IDR  = IKR1+4
43007           IDR2 = IKR2
43008           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
43009             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
43010      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
43011      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
43012           ENDIF
43013  
43014           IDR  = IKR1+4
43015           IDR2 = IKR2+2
43016           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
43017             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
43018      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
43019      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
43020           ENDIF
43021   130   CONTINUE
43022   140 CONTINUE
43023  
43024       RETURN
43025       END
43026  
43027 C*********************************************************************
43028  
43029 C...PYRVI1
43030 C...Function to integrate resonance contributions
43031  
43032       FUNCTION PYRVI1(ID1,ID2,ID3)
43033  
43034       IMPLICIT NONE
43035       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
43036       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43037       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43038       LOGICAL MFLAG,DCMASS
43039       EXTERNAL PYRVG1,PYGAUS
43040       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43041      &     ,DCMASS,KFR(3)
43042       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43043       SAVE/PYRVNV/,/PYRVPM/
43044 C...Initialize mass and width information
43045       PYRVI1 = 0D0
43046       RM(0)  = RMS(0)
43047       RM(1)  = RMS(ID1)
43048       RM(2)  = RMS(ID2)
43049       RM(3)  = RMS(ID3)
43050       RESM(1)= RES(IDR,1)
43051       RESW(1)= RES(IDR,2)
43052 C...A->B and B->A for antisparticles
43053       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43054       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43055 C...Integration boundaries and mass flag
43056       LO     = (RM(1)+RM(2))**2
43057       HI     = (RM(0)-RM(3))**2
43058       MFLAG  = DCMASS
43059       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
43060       RETURN
43061       END
43062  
43063 C*********************************************************************
43064  
43065 C...PYRVI2
43066 C...Function to integrate L-R interference contributions
43067  
43068       FUNCTION PYRVI2(ID1,ID2,ID3)
43069  
43070       IMPLICIT NONE
43071       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
43072       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43073       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43074       LOGICAL MFLAG,DCMASS
43075       EXTERNAL PYRVG2,PYGAUS
43076       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43077      &     ,DCMASS,KFR(3)
43078       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43079       SAVE/PYRVNV/,/PYRVPM/
43080 C...Initialize mass and width information
43081       PYRVI2 = 0D0
43082       RM(0)  = RMS(0)
43083       RM(1)  = RMS(ID1)
43084       RM(2)  = RMS(ID2)
43085       RM(3)  = RMS(ID3)
43086       RESM(1)= RES(IDR,1)
43087       RESW(1)= RES(IDR,2)
43088       RESM(2)= RES(IDR+1,1)
43089       RESW(2)= RES(IDR+1,2)
43090 C...A->B and B->A for antisparticles
43091       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43092       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43093       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
43094       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
43095 C...Boundaries and mass flag
43096       LO     = (RM(1)+RM(2))**2
43097       HI     = (RM(0)-RM(3))**2
43098       MFLAG  = DCMASS
43099       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
43100       RETURN
43101       END
43102  
43103 C*********************************************************************
43104  
43105 C...PYRVI3
43106 C...Function to integrate true interference contributions
43107  
43108       FUNCTION PYRVI3(ID1,ID2,ID3)
43109  
43110       IMPLICIT NONE
43111       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
43112       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43113       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43114       LOGICAL MFLAG,DCMASS
43115       EXTERNAL PYRVG3,PYGAUS
43116       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43117      &     ,DCMASS,KFR(3)
43118       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43119       SAVE/PYRVNV/,/PYRVPM/
43120 C...Initialize mass and width information
43121       PYRVI3 = 0D0
43122       RM(0)  = RMS(0)
43123       RM(1)  = RMS(ID1)
43124       RM(2)  = RMS(ID2)
43125       RM(3)  = RMS(ID3)
43126       RESM(1)= RES(IDR,1)
43127       RESW(1)= RES(IDR,2)
43128       RESM(2)= RES(IDR2,1)
43129       RESW(2)= RES(IDR2,2)
43130 C...A -> B and B -> A for antisparticles
43131       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43132       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43133       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
43134       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
43135 C...Boundaries and mass flag
43136       LO     = (RM(1)+RM(2))**2
43137       HI     = (RM(0)-RM(3))**2
43138       MFLAG  = DCMASS
43139       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
43140       RETURN
43141       END
43142  
43143 C*********************************************************************
43144  
43145 C...PYRVG1
43146 C...Integrand for resonance contributions
43147  
43148       FUNCTION PYRVG1(X)
43149  
43150       IMPLICIT NONE
43151       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43152       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
43153       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
43154       LOGICAL MFLAG
43155       SAVE/PYRVPM/
43156       RVR    = PYRVR(X,RESM(1),RESW(1))
43157       C1     = 2D0*SQRT(MAX(0D0,X))
43158       IF (.NOT.MFLAG) THEN
43159         E2     = X/C1
43160         E3     = (RM(0)**2-X)/C1
43161         DELTAY = 4D0*E2*E3
43162         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
43163       ELSE
43164         E2     = (X-RM(1)**2+RM(2)**2)/C1
43165         E3     = (RM(0)**2-X-RM(3)**2)/C1
43166         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
43167         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
43168         DELTAY = 4D0*SR1*SR2
43169         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
43170         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
43171         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
43172       ENDIF
43173       RETURN
43174       END
43175  
43176 C*********************************************************************
43177  
43178 C...PYRVG2
43179 C...Integrand for L-R interference contributions
43180  
43181       FUNCTION PYRVG2(X)
43182  
43183       IMPLICIT NONE
43184       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43185       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
43186       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
43187       LOGICAL MFLAG
43188       SAVE/PYRVPM/
43189       C1     = 2D0*SQRT(MAX(0D0,X))
43190       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
43191       IF (.NOT.MFLAG) THEN
43192         E2     = X/C1
43193         E3     = (RM(0)**2-X)/C1
43194         DELTAY = 4D0*E2*E3
43195         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
43196       ELSE
43197         E2     = (X-RM(1)**2+RM(2)**2)/C1
43198         E3     = (RM(0)**2-X-RM(3)**2)/C1
43199         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
43200         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
43201         DELTAY = 4D0*SR1*SR2
43202         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
43203      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
43204      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
43205       ENDIF
43206       RETURN
43207       END
43208  
43209 C*********************************************************************
43210  
43211 C...PYRVG3
43212 C...Function to do Y integration over true interference contributions
43213  
43214       FUNCTION PYRVG3(X)
43215  
43216       IMPLICIT NONE
43217       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43218 C...Second Dalitz variable for PYRVG4
43219       COMMON/PYG2DX/X1
43220       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
43221       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
43222       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
43223       LOGICAL MFLAG
43224       EXTERNAL PYGAU2,PYRVG4
43225       SAVE/PYRVPM/,/PYG2DX/
43226       PYRVG3=0D0
43227       C1=2D0*SQRT(MAX(1D-9,X))
43228       X1=X
43229       IF (.NOT.MFLAG) THEN
43230         E2    = X/C1
43231         E3    = (RM(0)**2-X)/C1
43232         YMIN  = 0D0
43233         YMAX  = 4D0*E2*E3
43234       ELSE
43235         E2    = (X-RM(1)**2+RM(2)**2)/C1
43236         E3    = (RM(0)**2-X-RM(3)**2)/C1
43237         SQ1   = (E2+E3)**2
43238         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
43239         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
43240         YMIN  = SQ1-(SR1+SR2)**2
43241         YMAX  = SQ1-(SR1-SR2)**2
43242       ENDIF
43243       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
43244       RETURN
43245       END
43246  
43247 C*********************************************************************
43248  
43249 C...PYRVG4
43250 C...Integrand for true intereference contributions
43251  
43252       FUNCTION PYRVG4(Y)
43253  
43254       IMPLICIT NONE
43255       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43256       COMMON/PYG2DX/X
43257       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
43258       LOGICAL MFLAG
43259       SAVE /PYRVPM/,/PYG2DX/
43260       PYRVG4=0D0
43261       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
43262       IF (.NOT.MFLAG) THEN
43263         PYRVG4 = RVS*B(1)*B(2)*X*Y
43264       ELSE
43265         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
43266      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
43267      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
43268      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
43269       ENDIF
43270       RETURN
43271       END
43272  
43273 C*********************************************************************
43274  
43275 C...PYRVR
43276 C...Breit-Wigner for resonance contributions
43277  
43278       FUNCTION PYRVR(Mab2,RM,RW)
43279  
43280       IMPLICIT NONE
43281       DOUBLE PRECISION Mab2,RM,RW,PYRVR
43282       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
43283       RETURN
43284       END
43285  
43286 C*********************************************************************
43287  
43288 C...PYRVS
43289 C...Interference function
43290  
43291       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
43292  
43293       IMPLICIT NONE
43294       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
43295       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
43296      &     +W1*W2*M1*M2)
43297       RETURN
43298       END
43299  
43300 C*********************************************************************
43301  
43302 C...PY1ENT
43303 C...Stores one parton/particle in commonblock PYJETS.
43304  
43305       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
43306  
43307 C...Double precision and integer declarations.
43308       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43309       IMPLICIT INTEGER(I-N)
43310       INTEGER PYK,PYCHGE,PYCOMP
43311 C...Commonblocks.
43312       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43313       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43314       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43315       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43316  
43317 C...Standard checks.
43318       MSTU(28)=0
43319       IF(MSTU(12).GE.1) CALL PYLIST(0)
43320       IPA=MAX(1,IABS(IP))
43321       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
43322      &'(PY1ENT:) writing outside PYJETS memory')
43323       KC=PYCOMP(KF)
43324       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
43325  
43326 C...Find mass. Reset K, P and V vectors.
43327       PM=0D0
43328       IF(MSTU(10).EQ.1) PM=P(IPA,5)
43329       IF(MSTU(10).GE.2) PM=PYMASS(KF)
43330       DO 100 J=1,5
43331         K(IPA,J)=0
43332         P(IPA,J)=0D0
43333         V(IPA,J)=0D0
43334   100 CONTINUE
43335  
43336 C...Store parton/particle in K and P vectors.
43337       K(IPA,1)=1
43338       IF(IP.LT.0) K(IPA,1)=2
43339       K(IPA,2)=KF
43340       P(IPA,5)=PM
43341       P(IPA,4)=MAX(PE,PM)
43342       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
43343       P(IPA,1)=PA*SIN(THE)*COS(PHI)
43344       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
43345       P(IPA,3)=PA*COS(THE)
43346  
43347 C...Set N. Optionally fragment/decay.
43348       N=IPA
43349       IF(IP.EQ.0) CALL PYEXEC
43350  
43351       RETURN
43352       END
43353  
43354 C*********************************************************************
43355  
43356 C...PY2ENT
43357 C...Stores two partons/particles in their CM frame,
43358 C...with the first along the +z axis.
43359  
43360       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
43361  
43362 C...Double precision and integer declarations.
43363       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43364       IMPLICIT INTEGER(I-N)
43365       INTEGER PYK,PYCHGE,PYCOMP
43366 C...Commonblocks.
43367       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43368       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43369       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43370       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43371  
43372 C...Standard checks.
43373       MSTU(28)=0
43374       IF(MSTU(12).GE.1) CALL PYLIST(0)
43375       IPA=MAX(1,IABS(IP))
43376       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
43377      &'(PY2ENT:) writing outside PYJETS memory')
43378       KC1=PYCOMP(KF1)
43379       KC2=PYCOMP(KF2)
43380       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
43381      &'(PY2ENT:) unknown flavour code')
43382  
43383 C...Find masses. Reset K, P and V vectors.
43384       PM1=0D0
43385       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43386       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43387       PM2=0D0
43388       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43389       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43390       DO 110 I=IPA,IPA+1
43391         DO 100 J=1,5
43392           K(I,J)=0
43393           P(I,J)=0D0
43394           V(I,J)=0D0
43395   100   CONTINUE
43396   110 CONTINUE
43397  
43398 C...Check flavours.
43399       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43400       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43401       IF(MSTU(19).EQ.1) THEN
43402         MSTU(19)=0
43403       ELSE
43404         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
43405      &  '(PY2ENT:) unphysical flavour combination')
43406       ENDIF
43407       K(IPA,2)=KF1
43408       K(IPA+1,2)=KF2
43409  
43410 C...Store partons/particles in K vectors for normal case.
43411       IF(IP.GE.0) THEN
43412         K(IPA,1)=1
43413         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
43414         K(IPA+1,1)=1
43415  
43416 C...Store partons in K vectors for parton shower evolution.
43417       ELSE
43418         K(IPA,1)=3
43419         K(IPA+1,1)=3
43420         K(IPA,4)=MSTU(5)*(IPA+1)
43421         K(IPA,5)=K(IPA,4)
43422         K(IPA+1,4)=MSTU(5)*IPA
43423         K(IPA+1,5)=K(IPA+1,4)
43424       ENDIF
43425  
43426 C...Check kinematics and store partons/particles in P vectors.
43427       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
43428      &'(PY2ENT:) energy smaller than sum of masses')
43429       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
43430      &(2D0*PECM)
43431       P(IPA,3)=PA
43432       P(IPA,4)=SQRT(PM1**2+PA**2)
43433       P(IPA,5)=PM1
43434       P(IPA+1,3)=-PA
43435       P(IPA+1,4)=SQRT(PM2**2+PA**2)
43436       P(IPA+1,5)=PM2
43437  
43438 C...Set N. Optionally fragment/decay.
43439       N=IPA+1
43440       IF(IP.EQ.0) CALL PYEXEC
43441  
43442       RETURN
43443       END
43444  
43445 C*********************************************************************
43446  
43447 C...PY3ENT
43448 C...Stores three partons or particles in their CM frame,
43449 C...with the first along the +z axis and the third in the (x,z)
43450 C...plane with x > 0.
43451  
43452       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
43453  
43454 C...Double precision and integer declarations.
43455       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43456       IMPLICIT INTEGER(I-N)
43457       INTEGER PYK,PYCHGE,PYCOMP
43458 C...Commonblocks.
43459       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43460       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43461       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43462       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43463  
43464 C...Standard checks.
43465       MSTU(28)=0
43466       IF(MSTU(12).GE.1) CALL PYLIST(0)
43467       IPA=MAX(1,IABS(IP))
43468       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
43469      &'(PY3ENT:) writing outside PYJETS memory')
43470       KC1=PYCOMP(KF1)
43471       KC2=PYCOMP(KF2)
43472       KC3=PYCOMP(KF3)
43473       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
43474      &'(PY3ENT:) unknown flavour code')
43475  
43476 C...Find masses. Reset K, P and V vectors.
43477       PM1=0D0
43478       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43479       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43480       PM2=0D0
43481       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43482       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43483       PM3=0D0
43484       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
43485       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
43486       DO 110 I=IPA,IPA+2
43487         DO 100 J=1,5
43488           K(I,J)=0
43489           P(I,J)=0D0
43490           V(I,J)=0D0
43491   100   CONTINUE
43492   110 CONTINUE
43493  
43494 C...Check flavours.
43495       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43496       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43497       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
43498       IF(MSTU(19).EQ.1) THEN
43499         MSTU(19)=0
43500       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
43501       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
43502      &  KQ1+KQ3.EQ.4)) THEN
43503       ELSE
43504         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
43505       ENDIF
43506       K(IPA,2)=KF1
43507       K(IPA+1,2)=KF2
43508       K(IPA+2,2)=KF3
43509  
43510 C...Store partons/particles in K vectors for normal case.
43511       IF(IP.GE.0) THEN
43512         K(IPA,1)=1
43513         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
43514         K(IPA+1,1)=1
43515         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
43516         K(IPA+2,1)=1
43517  
43518 C...Store partons in K vectors for parton shower evolution.
43519       ELSE
43520         K(IPA,1)=3
43521         K(IPA+1,1)=3
43522         K(IPA+2,1)=3
43523         KCS=4
43524         IF(KQ1.EQ.-1) KCS=5
43525         K(IPA,KCS)=MSTU(5)*(IPA+1)
43526         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
43527         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
43528         K(IPA+1,9-KCS)=MSTU(5)*IPA
43529         K(IPA+2,KCS)=MSTU(5)*IPA
43530         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
43531       ENDIF
43532  
43533 C...Check kinematics.
43534       MKERR=0
43535       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
43536      &0.5D0*X3*PECM.LE.PM3) MKERR=1
43537       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
43538       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
43539       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
43540       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
43541       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
43542       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
43543       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
43544       IF(MKERR.NE.0) CALL PYERRM(13,
43545      &'(PY3ENT:) unphysical kinematical variable setup')
43546  
43547 C...Store partons/particles in P vectors.
43548       P(IPA,3)=PA1
43549       P(IPA,4)=SQRT(PA1**2+PM1**2)
43550       P(IPA,5)=PM1
43551       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
43552       P(IPA+2,3)=PA3*CTHE3
43553       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
43554       P(IPA+2,5)=PM3
43555       P(IPA+1,1)=-P(IPA+2,1)
43556       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
43557       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
43558       P(IPA+1,5)=PM2
43559  
43560 C...Set N. Optionally fragment/decay.
43561       N=IPA+2
43562       IF(IP.EQ.0) CALL PYEXEC
43563  
43564       RETURN
43565       END
43566  
43567 C*********************************************************************
43568  
43569 C...PY4ENT
43570 C...Stores four partons or particles in their CM frame, with
43571 C...the first along the +z axis, the last in the xz plane with x > 0
43572 C...and the second having y < 0 and y > 0 with equal probability.
43573  
43574       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
43575  
43576 C...Double precision and integer declarations.
43577       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43578       IMPLICIT INTEGER(I-N)
43579       INTEGER PYK,PYCHGE,PYCOMP
43580 C...Commonblocks.
43581       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43582       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43583       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43584       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43585  
43586 C...Standard checks.
43587       MSTU(28)=0
43588       IF(MSTU(12).GE.1) CALL PYLIST(0)
43589       IPA=MAX(1,IABS(IP))
43590       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
43591      &'(PY4ENT:) writing outside PYJETS momory')
43592       KC1=PYCOMP(KF1)
43593       KC2=PYCOMP(KF2)
43594       KC3=PYCOMP(KF3)
43595       KC4=PYCOMP(KF4)
43596       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
43597      &'(PY4ENT:) unknown flavour code')
43598  
43599 C...Find masses. Reset K, P and V vectors.
43600       PM1=0D0
43601       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43602       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43603       PM2=0D0
43604       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43605       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43606       PM3=0D0
43607       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
43608       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
43609       PM4=0D0
43610       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
43611       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
43612       DO 110 I=IPA,IPA+3
43613         DO 100 J=1,5
43614           K(I,J)=0
43615           P(I,J)=0D0
43616           V(I,J)=0D0
43617   100   CONTINUE
43618   110 CONTINUE
43619  
43620 C...Check flavours.
43621       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43622       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43623       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
43624       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
43625       IF(MSTU(19).EQ.1) THEN
43626         MSTU(19)=0
43627       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
43628       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
43629      &  KQ1+KQ4.EQ.4)) THEN
43630       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
43631      &  THEN
43632       ELSE
43633         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
43634       ENDIF
43635       K(IPA,2)=KF1
43636       K(IPA+1,2)=KF2
43637       K(IPA+2,2)=KF3
43638       K(IPA+3,2)=KF4
43639  
43640 C...Store partons/particles in K vectors for normal case.
43641       IF(IP.GE.0) THEN
43642         K(IPA,1)=1
43643         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
43644         K(IPA+1,1)=1
43645         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
43646      &  K(IPA+1,1)=2
43647         K(IPA+2,1)=1
43648         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
43649         K(IPA+3,1)=1
43650  
43651 C...Store partons for parton shower evolution from q-g-g-qbar or
43652 C...g-g-g-g event.
43653       ELSEIF(KQ1+KQ2.NE.0) THEN
43654         K(IPA,1)=3
43655         K(IPA+1,1)=3
43656         K(IPA+2,1)=3
43657         K(IPA+3,1)=3
43658         KCS=4
43659         IF(KQ1.EQ.-1) KCS=5
43660         K(IPA,KCS)=MSTU(5)*(IPA+1)
43661         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
43662         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
43663         K(IPA+1,9-KCS)=MSTU(5)*IPA
43664         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
43665         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
43666         K(IPA+3,KCS)=MSTU(5)*IPA
43667         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
43668  
43669 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
43670       ELSE
43671         K(IPA,1)=3
43672         K(IPA+1,1)=3
43673         K(IPA+2,1)=3
43674         K(IPA+3,1)=3
43675         K(IPA,4)=MSTU(5)*(IPA+1)
43676         K(IPA,5)=K(IPA,4)
43677         K(IPA+1,4)=MSTU(5)*IPA
43678         K(IPA+1,5)=K(IPA+1,4)
43679         K(IPA+2,4)=MSTU(5)*(IPA+3)
43680         K(IPA+2,5)=K(IPA+2,4)
43681         K(IPA+3,4)=MSTU(5)*(IPA+2)
43682         K(IPA+3,5)=K(IPA+3,4)
43683       ENDIF
43684  
43685 C...Check kinematics.
43686       MKERR=0
43687       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
43688      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
43689      &MKERR=1
43690       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
43691       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
43692       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
43693       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
43694       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
43695       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
43696       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
43697       STHE4=SQRT(1D0-CTHE4**2)
43698       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
43699       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
43700       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
43701       STHE2=SQRT(1D0-CTHE2**2)
43702       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
43703      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
43704       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
43705       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
43706       IF(MKERR.EQ.1) CALL PYERRM(13,
43707      &'(PY4ENT:) unphysical kinematical variable setup')
43708  
43709 C...Store partons/particles in P vectors.
43710       P(IPA,3)=PA1
43711       P(IPA,4)=SQRT(PA1**2+PM1**2)
43712       P(IPA,5)=PM1
43713       P(IPA+3,1)=PA4*STHE4
43714       P(IPA+3,3)=PA4*CTHE4
43715       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
43716       P(IPA+3,5)=PM4
43717       P(IPA+1,1)=PA2*STHE2*CPHI2
43718       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
43719       P(IPA+1,3)=PA2*CTHE2
43720       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
43721       P(IPA+1,5)=PM2
43722       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
43723       P(IPA+2,2)=-P(IPA+1,2)
43724       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
43725       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
43726       P(IPA+2,5)=PM3
43727  
43728 C...Set N. Optionally fragment/decay.
43729       N=IPA+3
43730       IF(IP.EQ.0) CALL PYEXEC
43731  
43732       RETURN
43733       END
43734  
43735 C*********************************************************************
43736  
43737 C...PY2FRM
43738 C...An interface from a two-fermion generator to include
43739 C...parton showers and hadronization.
43740  
43741       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
43742  
43743 C...Double precision and integer declarations.
43744       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43745       IMPLICIT INTEGER(I-N)
43746       INTEGER PYK,PYCHGE,PYCOMP
43747 C...Commonblocks.
43748       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43749       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43750       SAVE /PYJETS/,/PYDAT1/
43751 C...Local arrays.
43752       DIMENSION IJOIN(2),INTAU(2)
43753  
43754 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
43755       IF(ICOM.EQ.0) THEN
43756         MSTU(28)=0
43757         CALL PYHEPC(2)
43758       ENDIF
43759  
43760 C...Loop through entries and pick up all final fermions/antifermions.
43761       I1=0
43762       I2=0
43763       DO 100 I=1,N
43764       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
43765       KFA=IABS(K(I,2))
43766       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
43767         IF(K(I,2).GT.0) THEN
43768           IF(I1.EQ.0) THEN
43769             I1=I
43770           ELSE
43771             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
43772           ENDIF
43773         ELSE
43774           IF(I2.EQ.0) THEN
43775             I2=I
43776           ELSE
43777             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
43778           ENDIF
43779         ENDIF
43780       ENDIF
43781   100 CONTINUE
43782  
43783 C...Check that event is arranged according to conventions.
43784       IF(I1.EQ.0.OR.I2.EQ.0) THEN
43785         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
43786       ENDIF
43787       IF(I2.LT.I1) THEN
43788         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
43789       ENDIF
43790  
43791 C...Check whether fermion pair is quarks or leptons.
43792       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
43793         IQL12=1
43794       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
43795         IQL12=2
43796       ELSE
43797         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
43798       ENDIF
43799  
43800 C...Decide whether to allow or not photon radiation in showers.
43801       MSTJ(41)=2
43802       IF(IRAD.EQ.0) MSTJ(41)=1
43803  
43804 C...Do colour joining and parton showers.
43805       IP1=I1
43806       IP2=I2
43807       IF(IQL12.EQ.1) THEN
43808         IJOIN(1)=IP1
43809         IJOIN(2)=IP2
43810         CALL PYJOIN(2,IJOIN)
43811       ENDIF
43812       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
43813         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
43814      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
43815         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
43816       ENDIF
43817  
43818 C...Do fragmentation and decays. Possibly except tau decay.
43819       IF(ITAU.EQ.0) THEN
43820         NTAU=0
43821         DO 110 I=1,N
43822         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
43823           NTAU=NTAU+1
43824           INTAU(NTAU)=I
43825           K(I,1)=11
43826         ENDIF
43827   110   CONTINUE
43828       ENDIF
43829       CALL PYEXEC
43830       IF(ITAU.EQ.0) THEN
43831         DO 120 I=1,NTAU
43832         K(INTAU(I),1)=1
43833   120   CONTINUE
43834       ENDIF
43835  
43836 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
43837       IF(ICOM.EQ.0) THEN
43838         MSTU(28)=0
43839         CALL PYHEPC(1)
43840       ENDIF
43841  
43842       END
43843  
43844 C*********************************************************************
43845  
43846 C...PY4FRM
43847 C...An interface from a four-fermion generator to include
43848 C...parton showers and hadronization.
43849  
43850       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
43851  
43852 C...Double precision and integer declarations.
43853       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43854       IMPLICIT INTEGER(I-N)
43855       INTEGER PYK,PYCHGE,PYCOMP
43856 C...Commonblocks.
43857       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43858       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43859       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43860       COMMON/PYINT1/MINT(400),VINT(400)
43861       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
43862 C...Local arrays.
43863       DIMENSION IJOIN(2),INTAU(4)
43864  
43865 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
43866       IF(ICOM.EQ.0) THEN
43867         MSTU(28)=0
43868         CALL PYHEPC(2)
43869       ENDIF
43870  
43871 C...Loop through entries and pick up all final fermions/antifermions.
43872       I1=0
43873       I2=0
43874       I3=0
43875       I4=0
43876       DO 100 I=1,N
43877       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
43878       KFA=IABS(K(I,2))
43879       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
43880         IF(K(I,2).GT.0) THEN
43881           IF(I1.EQ.0) THEN
43882             I1=I
43883           ELSEIF(I3.EQ.0) THEN
43884             I3=I
43885           ELSE
43886             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
43887           ENDIF
43888         ELSE
43889           IF(I2.EQ.0) THEN
43890             I2=I
43891           ELSEIF(I4.EQ.0) THEN
43892             I4=I
43893           ELSE
43894             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
43895           ENDIF
43896         ENDIF
43897       ENDIF
43898   100 CONTINUE
43899  
43900 C...Check that event is arranged according to conventions.
43901       IF(I3.EQ.0.OR.I4.EQ.0) THEN
43902         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
43903       ENDIF
43904       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
43905         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
43906       ENDIF
43907  
43908 C...Check which fermion pairs are quarks and which leptons.
43909       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
43910         IQL12=1
43911       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
43912         IQL12=2
43913       ELSE
43914         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
43915       ENDIF
43916       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
43917         IQL34=1
43918       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
43919         IQL34=2
43920       ELSE
43921         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
43922       ENDIF
43923  
43924 C...Decide whether to allow or not photon radiation in showers.
43925       MSTJ(41)=2
43926       IF(IRAD.EQ.0) MSTJ(41)=1
43927  
43928 C...Decide on dipole pairing.
43929       IP1=I1
43930       IP2=I2
43931       IP3=I3
43932       IP4=I4
43933       IF(IQL12.EQ.IQL34) THEN
43934         R1SQ=A1SQ
43935         R2SQ=A2SQ
43936         DELTA=ATOTSQ-A1SQ-A2SQ
43937         IF(ISTRAT.EQ.1) THEN
43938           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
43939           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
43940         ELSEIF(ISTRAT.EQ.2) THEN
43941           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
43942           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
43943         ENDIF
43944         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
43945           IP2=I4
43946           IP4=I2
43947         ENDIF
43948       ENDIF
43949  
43950 C...If colour reconnection then bookkeep W+W- or Z0Z0
43951 C...and copy q qbar q qbar consecutively.
43952       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
43953         K(N+1,1)=11
43954         K(N+1,3)=IP1
43955         K(N+1,4)=N+3
43956         K(N+1,5)=N+4
43957         K(N+2,1)=11
43958         K(N+2,3)=IP3
43959         K(N+2,4)=N+5
43960         K(N+2,5)=N+6
43961         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
43962           K(N+1,2)=23
43963           K(N+2,2)=23
43964           MINT(1)=22
43965         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
43966           K(N+1,2)=24
43967           K(N+2,2)=-24
43968           MINT(1)=25
43969         ELSE
43970           K(N+1,2)=-24
43971           K(N+2,2)=24
43972           MINT(1)=25
43973         ENDIF
43974         DO 110 J=1,5
43975           K(N+3,J)=K(IP1,J)
43976           K(N+4,J)=K(IP2,J)
43977           K(N+5,J)=K(IP3,J)
43978           K(N+6,J)=K(IP4,J)
43979           P(N+1,J)=P(IP1,J)+P(IP2,J)
43980           P(N+2,J)=P(IP3,J)+P(IP4,J)
43981           P(N+3,J)=P(IP1,J)
43982           P(N+4,J)=P(IP2,J)
43983           P(N+5,J)=P(IP3,J)
43984           P(N+6,J)=P(IP4,J)
43985           V(N+1,J)=V(IP1,J)
43986           V(N+2,J)=V(IP3,J)
43987           V(N+3,J)=V(IP1,J)
43988           V(N+4,J)=V(IP2,J)
43989           V(N+5,J)=V(IP3,J)
43990           V(N+6,J)=V(IP4,J)
43991   110   CONTINUE
43992         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
43993      &  P(N+1,3)**2))
43994         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
43995      &  P(N+2,3)**2))
43996         K(N+3,3)=N+1
43997         K(N+4,3)=N+1
43998         K(N+5,3)=N+2
43999         K(N+6,3)=N+2
44000 C...Remove original q qbar q qbar and update counters.
44001         K(IP1,1)=K(IP1,1)+10
44002         K(IP2,1)=K(IP2,1)+10
44003         K(IP3,1)=K(IP3,1)+10
44004         K(IP4,1)=K(IP4,1)+10
44005         IW1=N+1
44006         IW2=N+2
44007         NSD1=N+2
44008         IP1=N+3
44009         IP2=N+4
44010         IP3=N+5
44011         IP4=N+6
44012         N=N+6
44013       ENDIF
44014  
44015 C...Do colour joinings and parton showers.
44016       IF(IQL12.EQ.1) THEN
44017         IJOIN(1)=IP1
44018         IJOIN(2)=IP2
44019         CALL PYJOIN(2,IJOIN)
44020       ENDIF
44021       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
44022         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
44023      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
44024         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
44025       ENDIF
44026       NAFT1=N
44027       IF(IQL34.EQ.1) THEN
44028         IJOIN(1)=IP3
44029         IJOIN(2)=IP4
44030         CALL PYJOIN(2,IJOIN)
44031       ENDIF
44032       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
44033         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
44034      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
44035         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
44036       ENDIF
44037  
44038 C...Optionally do colour reconnection.
44039       MINT(32)=0
44040       MSTI(32)=0
44041       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
44042         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
44043         MSTI(32)=MINT(32)
44044       ENDIF
44045  
44046 C...Do fragmentation and decays. Possibly except tau decay.
44047       IF(ITAU.EQ.0) THEN
44048         NTAU=0
44049         DO 120 I=1,N
44050         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
44051           NTAU=NTAU+1
44052           INTAU(NTAU)=I
44053           K(I,1)=11
44054         ENDIF
44055   120   CONTINUE
44056       ENDIF
44057       CALL PYEXEC
44058       IF(ITAU.EQ.0) THEN
44059         DO 130 I=1,NTAU
44060         K(INTAU(I),1)=1
44061   130   CONTINUE
44062       ENDIF
44063  
44064 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44065       IF(ICOM.EQ.0) THEN
44066         MSTU(28)=0
44067         CALL PYHEPC(1)
44068       ENDIF
44069  
44070       END
44071  
44072 C*********************************************************************
44073  
44074 C...PY6FRM
44075 C...An interface from a six-fermion generator to include
44076 C...parton showers and hadronization.
44077  
44078       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
44079  
44080 C...Double precision and integer declarations.
44081       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44082       IMPLICIT INTEGER(I-N)
44083       INTEGER PYK,PYCHGE,PYCOMP
44084 C...Commonblocks.
44085       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44086       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44087       SAVE /PYJETS/,/PYDAT1/
44088 C...Local arrays.
44089       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
44090  
44091 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
44092       IF(ICOM.EQ.0) THEN
44093         MSTU(28)=0
44094         CALL PYHEPC(2)
44095       ENDIF
44096  
44097 C...Loop through entries and pick up all final fermions/antifermions.
44098       I1=0
44099       I2=0
44100       I3=0
44101       I4=0
44102       I5=0
44103       I6=0
44104       DO 100 I=1,N
44105       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
44106       KFA=IABS(K(I,2))
44107       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
44108         IF(K(I,2).GT.0) THEN
44109           IF(I1.EQ.0) THEN
44110             I1=I
44111           ELSEIF(I3.EQ.0) THEN
44112             I3=I
44113           ELSEIF(I5.EQ.0) THEN
44114             I5=I
44115           ELSE
44116             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
44117           ENDIF
44118         ELSE
44119           IF(I2.EQ.0) THEN
44120             I2=I
44121           ELSEIF(I4.EQ.0) THEN
44122             I4=I
44123           ELSEIF(I6.EQ.0) THEN
44124             I6=I
44125           ELSE
44126             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
44127           ENDIF
44128         ENDIF
44129       ENDIF
44130   100 CONTINUE
44131  
44132 C...Check that event is arranged according to conventions.
44133       IF(I5.EQ.0.OR.I6.EQ.0) THEN
44134         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
44135       ENDIF
44136       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
44137         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
44138       ENDIF
44139  
44140 C...Check which fermion pairs are quarks and which leptons.
44141       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
44142         IQL12=1
44143       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
44144         IQL12=2
44145       ELSE
44146         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
44147       ENDIF
44148       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
44149         IQL34=1
44150       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
44151         IQL34=2
44152       ELSE
44153         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
44154       ENDIF
44155       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
44156         IQL56=1
44157       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
44158         IQL56=2
44159       ELSE
44160         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
44161       ENDIF
44162  
44163 C...Decide whether to allow or not photon radiation in showers.
44164       MSTJ(41)=2
44165       IF(IRAD.EQ.0) MSTJ(41)=1
44166  
44167 C...Allow dipole pairings only among leptons and quarks separately.
44168       P12D=P12
44169       P13D=0D0
44170       IF(IQL34.EQ.IQL56) P13D=P13
44171       P21D=0D0
44172       IF(IQL12.EQ.IQL34) P21D=P21
44173       P23D=0D0
44174       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
44175       P31D=0D0
44176       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
44177       P32D=0D0
44178       IF(IQL12.EQ.IQL56) P32D=P32
44179  
44180 C...Decide whether t+tbar.
44181       ITOP=0
44182       IF(PYR(0).LT.PTOP) THEN
44183         ITOP=1
44184  
44185 C...If t+tbar: reconstruct t's.
44186         IT=N+1
44187         ITB=N+2
44188         DO 110 J=1,5
44189           K(IT,J)=0
44190           K(ITB,J)=0
44191           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
44192           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
44193           V(IT,J)=0D0
44194           V(ITB,J)=0D0
44195   110   CONTINUE
44196         K(IT,1)=1
44197         K(ITB,1)=1
44198         K(IT,2)=6
44199         K(ITB,2)=-6
44200         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
44201      &  P(IT,3)**2))
44202         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
44203      &  P(ITB,3)**2))
44204         N=N+2
44205  
44206 C...If t+tbar: colour join t's and let them shower.
44207         IJOIN(1)=IT
44208         IJOIN(2)=ITB
44209         CALL PYJOIN(2,IJOIN)
44210         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
44211      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
44212         CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
44213  
44214 C...If t+tbar: pick up the t's after shower.
44215         ITNEW=IT
44216         ITBNEW=ITB
44217         DO 120 I=ITB+1,N
44218           IF(K(I,2).EQ.6) ITNEW=I
44219           IF(K(I,2).EQ.-6) ITBNEW=I
44220   120   CONTINUE
44221  
44222 C...If t+tbar: loop over two top systems.
44223         DO 200 IT1=1,2
44224           IF(IT1.EQ.1) THEN
44225             ITO=IT
44226             ITN=ITNEW
44227             IBO=I1
44228             IW1=I3
44229             IW2=I4
44230           ELSE
44231             ITO=ITB
44232             ITN=ITBNEW
44233             IBO=I2
44234             IW1=I5
44235             IW2=I6
44236           ENDIF
44237           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
44238      &    '(PY6FRM:) not b in t decay')
44239  
44240 C...If t+tbar: find boost from original to new top frame.
44241           DO 130 J=1,3
44242             BETAO(J)=P(ITO,J)/P(ITO,4)
44243             BETAN(J)=P(ITN,J)/P(ITN,4)
44244   130     CONTINUE
44245  
44246 C...If t+tbar: boost copy of b by t shower and connect it in colour.
44247           N=N+1
44248           IB=N
44249           K(IB,1)=3
44250           K(IB,2)=K(IBO,2)
44251           K(IB,3)=ITN
44252           DO 140 J=1,5
44253             P(IB,J)=P(IBO,J)
44254             V(IB,J)=0D0
44255   140     CONTINUE
44256           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44257           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44258           K(IB,4)=MSTU(5)*ITN
44259           K(IB,5)=MSTU(5)*ITN
44260           K(ITN,4)=K(ITN,4)+IB
44261           K(ITN,5)=K(ITN,5)+IB
44262           K(ITN,1)=K(ITN,1)+10
44263           K(IBO,1)=K(IBO,1)+10
44264  
44265 C...If t+tbar: construct W recoiling against b.
44266           N=N+1
44267           IW=N
44268           DO 150 J=1,5
44269             K(IW,J)=0
44270             V(IW,J)=0D0
44271   150     CONTINUE
44272           K(IW,1)=1
44273           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
44274           IF(IABS(KCHW).EQ.3) THEN
44275             K(IW,2)=ISIGN(24,KCHW)
44276           ELSE
44277             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
44278           ENDIF
44279           K(IW,3)=IW1
44280  
44281 C...If t+tbar: construct W momentum, including boost by t shower.
44282           DO 160 J=1,4
44283             P(IW,J)=P(IW1,J)+P(IW2,J)
44284   160     CONTINUE
44285           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
44286      &    P(IW,3)**2))
44287           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44288           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44289  
44290 C...If t+tbar: boost b and W to top rest frame.
44291           DO 170 J=1,3
44292             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
44293   170     CONTINUE
44294           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44295           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44296  
44297 C...If t+tbar: let b shower and pick up modified W.
44298           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
44299      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
44300           CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
44301           DO 180 I=IW,N
44302             IF(IABS(K(I,2)).EQ.24) IWM=I
44303   180     CONTINUE
44304  
44305 C...If t+tbar: take copy of W decay products.
44306           DO 190 J=1,5
44307             K(N+1,J)=K(IW1,J)
44308             P(N+1,J)=P(IW1,J)
44309             V(N+1,J)=V(IW1,J)
44310             K(N+2,J)=K(IW2,J)
44311             P(N+2,J)=P(IW2,J)
44312             V(N+2,J)=V(IW2,J)
44313   190     CONTINUE
44314           K(IW1,1)=K(IW1,1)+10
44315           K(IW2,1)=K(IW2,1)+10
44316           K(IWM,1)=K(IWM,1)+10
44317           K(IWM,4)=N+1
44318           K(IWM,5)=N+2
44319           K(N+1,3)=IWM
44320           K(N+2,3)=IWM
44321           IF(IT1.EQ.1) THEN
44322             I3=N+1
44323             I4=N+2
44324           ELSE
44325             I5=N+1
44326             I6=N+2
44327           ENDIF
44328           N=N+2
44329  
44330 C...If t+tbar: boost W decay products, first by effects of t shower,
44331 C...then by those of b shower. b and its shower simple boost back.
44332           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44333           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44334           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44335           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
44336      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
44337           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
44338      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
44339           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
44340           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
44341   200   CONTINUE
44342       ENDIF
44343  
44344 C...Decide on dipole pairing.
44345       IP1=I1
44346       IP3=I3
44347       IP5=I5
44348       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
44349       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
44350         IP2=I2
44351         IP4=I4
44352         IP6=I6
44353       ELSEIF(PRN.LT.P12D+P13D) THEN
44354         IP2=I2
44355         IP4=I6
44356         IP6=I4
44357       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
44358         IP2=I4
44359         IP4=I2
44360         IP6=I6
44361       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
44362         IP2=I4
44363         IP4=I6
44364         IP6=I2
44365       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
44366         IP2=I6
44367         IP4=I2
44368         IP6=I4
44369       ELSE
44370         IP2=I6
44371         IP4=I4
44372         IP6=I2
44373       ENDIF
44374  
44375 C...Do colour joinings and parton showers
44376 C...(except ones already made for t+tbar).
44377       IF(ITOP.EQ.0) THEN
44378         IF(IQL12.EQ.1) THEN
44379           IJOIN(1)=IP1
44380           IJOIN(2)=IP2
44381           CALL PYJOIN(2,IJOIN)
44382         ENDIF
44383         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
44384           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
44385      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
44386           CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
44387         ENDIF
44388       ENDIF
44389       IF(IQL34.EQ.1) THEN
44390         IJOIN(1)=IP3
44391         IJOIN(2)=IP4
44392         CALL PYJOIN(2,IJOIN)
44393       ENDIF
44394       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
44395         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
44396      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
44397         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
44398       ENDIF
44399       IF(IQL56.EQ.1) THEN
44400         IJOIN(1)=IP5
44401         IJOIN(2)=IP6
44402         CALL PYJOIN(2,IJOIN)
44403       ENDIF
44404       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
44405         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
44406      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
44407         CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
44408       ENDIF
44409  
44410 C...Do fragmentation and decays. Possibly except tau decay.
44411       IF(ITAU.EQ.0) THEN
44412         NTAU=0
44413         DO 210 I=1,N
44414         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
44415           NTAU=NTAU+1
44416           INTAU(NTAU)=I
44417           K(I,1)=11
44418         ENDIF
44419   210   CONTINUE
44420       ENDIF
44421       CALL PYEXEC
44422       IF(ITAU.EQ.0) THEN
44423         DO 220 I=1,NTAU
44424         K(INTAU(I),1)=1
44425   220   CONTINUE
44426       ENDIF
44427  
44428 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44429       IF(ICOM.EQ.0) THEN
44430         MSTU(28)=0
44431         CALL PYHEPC(1)
44432       ENDIF
44433  
44434       END
44435  
44436 C*********************************************************************
44437  
44438 C...PY4JET
44439 C...An interface from a four-parton generator to include
44440 C...parton showers and hadronization.
44441  
44442       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
44443  
44444 C...Double precision and integer declarations.
44445       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44446       IMPLICIT INTEGER(I-N)
44447       INTEGER PYK,PYCHGE,PYCOMP
44448 C...Commonblocks.
44449       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44450       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44451       SAVE /PYJETS/,/PYDAT1/
44452 C...Local arrays.
44453       DIMENSION IJOIN(2),PTOT(4),BETA(3)
44454  
44455 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
44456       IF(ICOM.EQ.0) THEN
44457         MSTU(28)=0
44458         CALL PYHEPC(2)
44459       ENDIF
44460  
44461 C...Loop through entries and pick up all final partons.
44462       I1=0
44463       I2=0
44464       I3=0
44465       I4=0
44466       DO 100 I=1,N
44467       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
44468       KFA=IABS(K(I,2))
44469       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
44470         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
44471           IF(I1.EQ.0) THEN
44472             I1=I
44473           ELSEIF(I3.EQ.0) THEN
44474             I3=I
44475           ELSE
44476             CALL PYERRM(16,'(PY4JET:) more than two quarks')
44477           ENDIF
44478         ELSEIF(K(I,2).LT.0) THEN
44479           IF(I2.EQ.0) THEN
44480             I2=I
44481           ELSEIF(I4.EQ.0) THEN
44482             I4=I
44483           ELSE
44484             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
44485           ENDIF
44486         ELSE
44487           IF(I3.EQ.0) THEN
44488             I3=I
44489           ELSEIF(I4.EQ.0) THEN
44490             I4=I
44491           ELSE
44492             CALL PYERRM(16,'(PY4JET:) more than two gluons')
44493           ENDIF
44494         ENDIF
44495       ENDIF
44496   100 CONTINUE
44497  
44498 C...Check that event is arranged according to conventions.
44499       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
44500         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
44501       ENDIF
44502       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
44503         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
44504       ENDIF
44505  
44506 C...Check whether second pair are quarks or gluons.
44507       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
44508         IQG34=1
44509       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
44510         IQG34=2
44511       ELSE
44512         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
44513       ENDIF
44514  
44515 C...Boost partons to their cm frame.
44516       DO 110 J=1,4
44517         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
44518   110 CONTINUE
44519       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
44520       DO 120 J=1,3
44521         BETA(J)=PTOT(J)/PTOT(4)
44522   120 CONTINUE
44523       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44524       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44525       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44526       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44527       NSAV=N
44528  
44529 C...Decide and set up shower history for q qbar q' qbar' events.
44530       IF(IQG34.EQ.1) THEN
44531         W1=PY4JTW(0,I1,I3,I4)
44532         W2=PY4JTW(0,I2,I3,I4)
44533         IF(W1.GT.PYR(0)*(W1+W2)) THEN
44534           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
44535         ELSE
44536           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
44537         ENDIF
44538  
44539 C...Decide and set up shower history for q qbar g g events.
44540       ELSE
44541         W1=PY4JTW(I1,I3,I2,I4)
44542         W2=PY4JTW(I1,I4,I2,I3)
44543         W3=PY4JTW(0,I3,I1,I4)
44544         W4=PY4JTW(0,I4,I1,I3)
44545         W5=PY4JTW(0,I3,I2,I4)
44546         W6=PY4JTW(0,I4,I2,I3)
44547         W7=PY4JTW(0,I1,I3,I4)
44548         W8=PY4JTW(0,I2,I3,I4)
44549         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
44550         IF(W1.GT.WR) THEN
44551           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
44552         ELSEIF(W1+W2.GT.WR) THEN
44553           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
44554         ELSEIF(W1+W2+W3.GT.WR) THEN
44555           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
44556         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
44557           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
44558         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
44559           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
44560         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
44561           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
44562         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
44563           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
44564         ELSE
44565           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
44566         ENDIF
44567       ENDIF
44568  
44569 C...Boost back original partons and mark them as deleted.
44570       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
44571       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
44572       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
44573       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
44574       K(I1,1)=K(I1,1)+10
44575       K(I2,1)=K(I2,1)+10
44576       K(I3,1)=K(I3,1)+10
44577       K(I4,1)=K(I4,1)+10
44578  
44579 C...Rotate shower initiating partons to be along z axis.
44580       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
44581       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
44582       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
44583       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
44584  
44585 C...Set up copy of shower initiating partons as on mass shell.
44586       DO 140 I=N+1,N+2
44587         DO 130 J=1,5
44588           K(I,J)=0
44589           P(I,J)=0D0
44590           V(I,J)=V(I1,J)
44591   130   CONTINUE
44592         K(I,1)=1
44593         K(I,2)=K(I-6,2)
44594   140 CONTINUE
44595       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
44596         K(N+1,3)=I1
44597         P(N+1,5)=P(I1,5)
44598         K(N+2,3)=I2
44599         P(N+2,5)=P(I2,5)
44600       ELSE
44601         K(N+1,3)=I2
44602         P(N+1,5)=P(I2,5)
44603         K(N+2,3)=I1
44604         P(N+2,5)=P(I1,5)
44605       ENDIF
44606       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
44607      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
44608       P(N+1,3)=PABS
44609       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
44610       P(N+2,3)=-PABS
44611       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
44612       N=N+2
44613  
44614 C...Decide whether to allow or not photon radiation in showers.
44615 C...Connect up colours.
44616       MSTJ(41)=2
44617       IF(IRAD.EQ.0) MSTJ(41)=1
44618       IJOIN(1)=N-1
44619       IJOIN(2)=N
44620       CALL PYJOIN(2,IJOIN)
44621  
44622 C...Decide on maximum virtuality and do parton shower.
44623       IF(PMAX.LT.PARJ(82)) THEN
44624         PQMAX=QMAX
44625       ELSE
44626         PQMAX=PMAX
44627       ENDIF
44628       CALL PYSHOW(NSAV+1,-8,PQMAX)
44629  
44630 C...Rotate and boost back system.
44631       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
44632  
44633 C...Do fragmentation and decays.
44634       CALL PYEXEC
44635  
44636 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44637       IF(ICOM.EQ.0) THEN
44638         MSTU(28)=0
44639         CALL PYHEPC(1)
44640       ENDIF
44641  
44642       RETURN
44643       END
44644  
44645 C*********************************************************************
44646  
44647 C...PY4JTW
44648 C...Auxiliary to PY4JET, to evaluate weight of configuration.
44649  
44650       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
44651  
44652 C...Double precision and integer declarations.
44653       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44654       IMPLICIT INTEGER(I-N)
44655       INTEGER PYK,PYCHGE,PYCOMP
44656 C...Commonblocks.
44657       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44658       SAVE /PYJETS/
44659  
44660 C...First case: when both original partons radiate.
44661 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
44662       IF(IA1.NE.0) THEN
44663         DO 100 J=1,4
44664           P(N+1,J)=P(IA1,J)+P(IA2,J)
44665           P(N+2,J)=P(IA3,J)+P(IA4,J)
44666   100   CONTINUE
44667         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44668      &  P(N+1,3)**2))
44669         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44670      &  P(N+2,3)**2))
44671         Z1=P(IA1,4)/P(N+1,4)
44672         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
44673         Z2=P(IA3,4)/P(N+2,4)
44674         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
44675  
44676 C...Second case: when one original parton radiates to three.
44677 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
44678       ELSE
44679         DO 110 J=1,4
44680           P(N+2,J)=P(IA3,J)+P(IA4,J)
44681           P(N+1,J)=P(N+2,J)+P(IA2,J)
44682   110   CONTINUE
44683         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44684      &  P(N+1,3)**2))
44685         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44686      &  P(N+2,3)**2))
44687         IF(K(IA2,2).EQ.21) THEN
44688           Z1=P(N+2,4)/P(N+1,4)
44689           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
44690      &    P(IA3,5)**2)
44691         ELSE
44692           Z1=P(IA2,4)/P(N+1,4)
44693           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
44694      &    P(IA2,5)**2)
44695         ENDIF
44696         Z2=P(IA3,4)/P(N+2,4)
44697         IF(K(IA2,2).EQ.21) THEN
44698           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
44699      &    P(IA3,5)**2)
44700         ELSEIF(K(IA3,2).EQ.21) THEN
44701           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
44702         ELSE
44703           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
44704         ENDIF
44705       ENDIF
44706  
44707 C...Total weight.
44708       PY4JTW=WT1*WT2
44709  
44710       RETURN
44711       END
44712  
44713 C*********************************************************************
44714  
44715 C...PY4JTS
44716 C...Auxiliary to PY4JET, to set up chosen configuration.
44717  
44718       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
44719  
44720 C...Double precision and integer declarations.
44721       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44722       IMPLICIT INTEGER(I-N)
44723       INTEGER PYK,PYCHGE,PYCOMP
44724 C...Commonblocks.
44725       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44726       SAVE /PYJETS/
44727  
44728 C...Reset info.
44729       DO 110 I=N+1,N+6
44730         DO 100 J=1,5
44731           K(I,J)=0
44732           V(I,J)=V(IA2,J)
44733   100   CONTINUE
44734         K(I,1)=16
44735   110 CONTINUE
44736  
44737 C...First case: when both original partons radiate.
44738 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
44739       IF(IA1.NE.0) THEN
44740  
44741 C...Set up flavour and history pointers for new partons.
44742         K(N+1,2)=K(IA1,2)
44743         K(N+2,2)=K(IA3,2)
44744         K(N+3,2)=K(IA1,2)
44745         K(N+4,2)=K(IA2,2)
44746         K(N+5,2)=K(IA3,2)
44747         K(N+6,2)=K(IA4,2)
44748         K(N+1,3)=IA1
44749         K(N+1,4)=N+3
44750         K(N+1,5)=N+4
44751         K(N+2,3)=IA3
44752         K(N+2,4)=N+5
44753         K(N+2,5)=N+6
44754         K(N+3,3)=N+1
44755         K(N+4,3)=N+1
44756         K(N+5,3)=N+2
44757         K(N+6,3)=N+2
44758  
44759 C...Set up momenta for new partons.
44760         DO 120 J=1,5
44761           P(N+1,J)=P(IA1,J)+P(IA2,J)
44762           P(N+2,J)=P(IA3,J)+P(IA4,J)
44763           P(N+3,J)=P(IA1,J)
44764           P(N+4,J)=P(IA2,J)
44765           P(N+5,J)=P(IA3,J)
44766           P(N+6,J)=P(IA4,J)
44767   120   CONTINUE
44768         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44769      &  P(N+1,3)**2))
44770         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44771      &  P(N+2,3)**2))
44772         QMAX=MIN(P(N+1,5),P(N+2,5))
44773  
44774 C...Second case: q radiates twice.
44775 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
44776 C...IA5=N+2 does not radiate.
44777       ELSEIF(K(IA2,2).EQ.21) THEN
44778  
44779 C...Set up flavour and history pointers for new partons.
44780         K(N+1,2)=K(IA3,2)
44781         K(N+2,2)=K(IA5,2)
44782         K(N+3,2)=K(IA3,2)
44783         K(N+4,2)=K(IA2,2)
44784         K(N+5,2)=K(IA3,2)
44785         K(N+6,2)=K(IA4,2)
44786         K(N+1,3)=IA3
44787         K(N+1,4)=N+3
44788         K(N+1,5)=N+4
44789         K(N+2,3)=IA5
44790         K(N+3,3)=N+1
44791         K(N+3,4)=N+5
44792         K(N+3,5)=N+6
44793         K(N+4,3)=N+1
44794         K(N+5,3)=N+3
44795         K(N+6,3)=N+3
44796  
44797 C...Set up momenta for new partons.
44798         DO 130 J=1,5
44799           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
44800           P(N+2,J)=P(IA5,J)
44801           P(N+3,J)=P(IA3,J)+P(IA4,J)
44802           P(N+4,J)=P(IA2,J)
44803           P(N+5,J)=P(IA3,J)
44804           P(N+6,J)=P(IA4,J)
44805   130   CONTINUE
44806         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44807      &  P(N+1,3)**2))
44808         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
44809      &  P(N+3,3)**2))
44810         QMAX=P(N+3,5)
44811  
44812 C...Third case: q radiates g, g branches.
44813 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
44814 C...IA5=N+2 does not radiate.
44815       ELSE
44816  
44817 C...Set up flavour and history pointers for new partons.
44818         K(N+1,2)=K(IA2,2)
44819         K(N+2,2)=K(IA5,2)
44820         K(N+3,2)=K(IA2,2)
44821         K(N+4,2)=21
44822         K(N+5,2)=K(IA3,2)
44823         K(N+6,2)=K(IA4,2)
44824         K(N+1,3)=IA2
44825         K(N+1,4)=N+3
44826         K(N+1,5)=N+4
44827         K(N+2,3)=IA5
44828         K(N+3,3)=N+1
44829         K(N+4,3)=N+1
44830         K(N+4,4)=N+5
44831         K(N+4,5)=N+6
44832         K(N+5,3)=N+4
44833         K(N+6,3)=N+4
44834  
44835 C...Set up momenta for new partons.
44836         DO 140 J=1,5
44837           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
44838           P(N+2,J)=P(IA5,J)
44839           P(N+3,J)=P(IA2,J)
44840           P(N+4,J)=P(IA3,J)+P(IA4,J)
44841           P(N+5,J)=P(IA3,J)
44842           P(N+6,J)=P(IA4,J)
44843   140   CONTINUE
44844         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44845      &  P(N+1,3)**2))
44846         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
44847      &  P(N+4,3)**2))
44848         QMAX=P(N+4,5)
44849  
44850       ENDIF
44851       N=N+6
44852  
44853       RETURN
44854       END
44855  
44856 C*********************************************************************
44857  
44858 C...PYJOIN
44859 C...Connects a sequence of partons with colour flow indices,
44860 C...as required for subsequent shower evolution (or other operations).
44861  
44862       SUBROUTINE PYJOIN(NJOIN,IJOIN)
44863  
44864 C...Double precision and integer declarations.
44865       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44866       IMPLICIT INTEGER(I-N)
44867       INTEGER PYK,PYCHGE,PYCOMP
44868 C...Commonblocks.
44869       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44870       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44871       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44872       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
44873 C...Local array.
44874       DIMENSION IJOIN(*)
44875  
44876 C...Check that partons are of right types to be connected.
44877       IF(NJOIN.LT.2) GOTO 120
44878       KQSUM=0
44879       DO 100 IJN=1,NJOIN
44880         I=IJOIN(IJN)
44881         IF(I.LE.0.OR.I.GT.N) GOTO 120
44882         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
44883         KC=PYCOMP(K(I,2))
44884         IF(KC.EQ.0) GOTO 120
44885         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
44886         IF(KQ.EQ.0) GOTO 120
44887         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
44888         IF(KQ.NE.2) KQSUM=KQSUM+KQ
44889         IF(IJN.EQ.1) KQS=KQ
44890   100 CONTINUE
44891       IF(KQSUM.NE.0) GOTO 120
44892  
44893 C...Connect the partons sequentially (closing for gluon loop).
44894       KCS=(9-KQS)/2
44895       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
44896       DO 110 IJN=1,NJOIN
44897         I=IJOIN(IJN)
44898         K(I,1)=3
44899         IF(IJN.NE.1) IP=IJOIN(IJN-1)
44900         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
44901         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
44902         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
44903         K(I,KCS)=MSTU(5)*IN
44904         K(I,9-KCS)=MSTU(5)*IP
44905         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
44906         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
44907   110 CONTINUE
44908  
44909 C...Error exit: no action taken.
44910       RETURN
44911   120 CALL PYERRM(12,
44912      &'(PYJOIN:) given entries can not be joined by one string')
44913  
44914       RETURN
44915       END
44916  
44917 C*********************************************************************
44918  
44919 C...PYGIVE
44920 C...Sets values of commonblock variables.
44921  
44922       SUBROUTINE PYGIVE(CHIN)
44923  
44924 C...Double precision and integer declarations.
44925       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44926       IMPLICIT INTEGER(I-N)
44927       INTEGER PYK,PYCHGE,PYCOMP
44928 C...Commonblocks.
44929       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44930       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44931       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44932       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
44933       COMMON/PYDAT4/CHAF(500,2)
44934       CHARACTER CHAF*16
44935       COMMON/PYDATR/MRPY(6),RRPY(100)
44936       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
44937       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
44938       COMMON/PYINT1/MINT(400),VINT(400)
44939       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
44940       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
44941       COMMON/PYINT4/MWID(500),WIDS(500,5)
44942       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
44943       COMMON/PYINT6/PROC(0:500)
44944       CHARACTER PROC*28
44945       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
44946       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
44947      &XPDIR(-6:6)
44948       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44949       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
44950       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
44951       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
44952      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
44953      &/PYINT5/,/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/
44954 C...Local arrays and character variables.
44955       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
44956      &CHNEW2*28,CHNAM*6,CHVAR(54)*6,CHALP(2)*26,CHIND*8,CHINI*10,
44957      &CHINR*16
44958       DIMENSION MSVAR(54,8)
44959  
44960 C...For each variable to be translated give: name,
44961 C...integer/real/character, no. of indices, lower&upper index bounds.
44962       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
44963      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
44964      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
44965      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
44966      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
44967      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
44968      &'ITCM','RTCM'/
44969       DATA ((MSVAR(I,J),J=1,8),I=1,54)/ 1,7*0,  1,2,1,4000,1,5,2*0,
44970      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
44971      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
44972      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
44973      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
44974      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
44975      &1,1,1,6,4*0,  2,1,1,100,4*0,
44976      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
44977      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
44978      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
44979      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
44980      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
44981      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
44982      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
44983      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
44984      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
44985      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
44986      &1,1,0,99,4*0,  2,1,0,99,4*0/
44987       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
44988      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
44989  
44990 C...Length of character variable. Subdivide it into instructions.
44991       IF(MSTU(12).GE.1) CALL PYLIST(0)
44992       CHBIT=CHIN//' '
44993       LBIT=101
44994   100 LBIT=LBIT-1
44995       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
44996       LTOT=0
44997       DO 110 LCOM=1,LBIT
44998         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
44999         LTOT=LTOT+1
45000         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
45001   110 CONTINUE
45002       LLOW=0
45003   120 LHIG=LLOW+1
45004   130 LHIG=LHIG+1
45005       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
45006       LBIT=LHIG-LLOW-1
45007       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
45008  
45009 C...Peel off any text following exclamation mark.
45010       LHIG2=LBIT
45011       DO 140 LLOW2=LHIG2,1,-1
45012         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
45013   140 CONTINUE
45014       IF(LBIT.EQ.0) RETURN
45015  
45016 C...Identify commonblock variable.
45017       LNAM=1
45018   150 LNAM=LNAM+1
45019       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
45020      &LNAM.LE.6) GOTO 150
45021       CHNAM=CHBIT(1:LNAM-1)//' '
45022       DO 170 LCOM=1,LNAM-1
45023         DO 160 LALP=1,26
45024           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
45025      &    CHALP(2)(LALP:LALP)
45026   160   CONTINUE
45027   170 CONTINUE
45028       IVAR=0
45029       DO 180 IV=1,54
45030         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
45031   180 CONTINUE
45032       IF(IVAR.EQ.0) THEN
45033         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
45034         LLOW=LHIG
45035         IF(LLOW.LT.LTOT) GOTO 120
45036         RETURN
45037       ENDIF
45038  
45039 C...Identify any indices.
45040       I1=0
45041       I2=0
45042       I3=0
45043       NINDX=0
45044       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
45045         LIND=LNAM
45046   190   LIND=LIND+1
45047         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
45048         CHIND=' '
45049         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
45050      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
45051      &  IVAR.EQ.37)) THEN
45052           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
45053           READ(CHIND,'(I8)') KF
45054           I1=PYCOMP(KF)
45055         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
45056      &    'c') THEN
45057           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
45058      &    CHNAM)
45059           LLOW=LHIG
45060           IF(LLOW.LT.LTOT) GOTO 120
45061           RETURN
45062         ELSE
45063           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45064           READ(CHIND,'(I8)') I1
45065         ENDIF
45066         LNAM=LIND
45067         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
45068         NINDX=1
45069       ENDIF
45070       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
45071         LIND=LNAM
45072   200   LIND=LIND+1
45073         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
45074         CHIND=' '
45075         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45076         READ(CHIND,'(I8)') I2
45077         LNAM=LIND
45078         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
45079         NINDX=2
45080       ENDIF
45081       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
45082         LIND=LNAM
45083   210   LIND=LIND+1
45084         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
45085         CHIND=' '
45086         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45087         READ(CHIND,'(I8)') I3
45088         LNAM=LIND+1
45089         NINDX=3
45090       ENDIF
45091  
45092 C...Check that indices allowed.
45093       IERR=0
45094       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
45095       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
45096      &IERR=2
45097       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
45098      &IERR=3
45099       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
45100      &IERR=4
45101       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
45102       IF(IERR.GE.1) THEN
45103         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
45104      &  CHBIT(1:LNAM-1))
45105         LLOW=LHIG
45106         IF(LLOW.LT.LTOT) GOTO 120
45107         RETURN
45108       ENDIF
45109  
45110 C...Save old value of variable.
45111       IF(IVAR.EQ.1) THEN
45112         IOLD=N
45113       ELSEIF(IVAR.EQ.2) THEN
45114         IOLD=K(I1,I2)
45115       ELSEIF(IVAR.EQ.3) THEN
45116         ROLD=P(I1,I2)
45117       ELSEIF(IVAR.EQ.4) THEN
45118         ROLD=V(I1,I2)
45119       ELSEIF(IVAR.EQ.5) THEN
45120         IOLD=MSTU(I1)
45121       ELSEIF(IVAR.EQ.6) THEN
45122         ROLD=PARU(I1)
45123       ELSEIF(IVAR.EQ.7) THEN
45124         IOLD=MSTJ(I1)
45125       ELSEIF(IVAR.EQ.8) THEN
45126         ROLD=PARJ(I1)
45127       ELSEIF(IVAR.EQ.9) THEN
45128         IOLD=KCHG(I1,I2)
45129       ELSEIF(IVAR.EQ.10) THEN
45130         ROLD=PMAS(I1,I2)
45131       ELSEIF(IVAR.EQ.11) THEN
45132         ROLD=PARF(I1)
45133       ELSEIF(IVAR.EQ.12) THEN
45134         ROLD=VCKM(I1,I2)
45135       ELSEIF(IVAR.EQ.13) THEN
45136         IOLD=MDCY(I1,I2)
45137       ELSEIF(IVAR.EQ.14) THEN
45138         IOLD=MDME(I1,I2)
45139       ELSEIF(IVAR.EQ.15) THEN
45140         ROLD=BRAT(I1)
45141       ELSEIF(IVAR.EQ.16) THEN
45142         IOLD=KFDP(I1,I2)
45143       ELSEIF(IVAR.EQ.17) THEN
45144         CHOLD=CHAF(I1,I2)
45145       ELSEIF(IVAR.EQ.18) THEN
45146         IOLD=MRPY(I1)
45147       ELSEIF(IVAR.EQ.19) THEN
45148         ROLD=RRPY(I1)
45149       ELSEIF(IVAR.EQ.20) THEN
45150         IOLD=MSEL
45151       ELSEIF(IVAR.EQ.21) THEN
45152         IOLD=MSUB(I1)
45153       ELSEIF(IVAR.EQ.22) THEN
45154         IOLD=KFIN(I1,I2)
45155       ELSEIF(IVAR.EQ.23) THEN
45156         ROLD=CKIN(I1)
45157       ELSEIF(IVAR.EQ.24) THEN
45158         IOLD=MSTP(I1)
45159       ELSEIF(IVAR.EQ.25) THEN
45160         ROLD=PARP(I1)
45161       ELSEIF(IVAR.EQ.26) THEN
45162         IOLD=MSTI(I1)
45163       ELSEIF(IVAR.EQ.27) THEN
45164         ROLD=PARI(I1)
45165       ELSEIF(IVAR.EQ.28) THEN
45166         IOLD=MINT(I1)
45167       ELSEIF(IVAR.EQ.29) THEN
45168         ROLD=VINT(I1)
45169       ELSEIF(IVAR.EQ.30) THEN
45170         IOLD=ISET(I1)
45171       ELSEIF(IVAR.EQ.31) THEN
45172         IOLD=KFPR(I1,I2)
45173       ELSEIF(IVAR.EQ.32) THEN
45174         ROLD=COEF(I1,I2)
45175       ELSEIF(IVAR.EQ.33) THEN
45176         IOLD=ICOL(I1,I2,I3)
45177       ELSEIF(IVAR.EQ.34) THEN
45178         ROLD=XSFX(I1,I2)
45179       ELSEIF(IVAR.EQ.35) THEN
45180         IOLD=ISIG(I1,I2)
45181       ELSEIF(IVAR.EQ.36) THEN
45182         ROLD=SIGH(I1)
45183       ELSEIF(IVAR.EQ.37) THEN
45184         IOLD=MWID(I1)
45185       ELSEIF(IVAR.EQ.38) THEN
45186         ROLD=WIDS(I1,I2)
45187       ELSEIF(IVAR.EQ.39) THEN
45188         IOLD=NGEN(I1,I2)
45189       ELSEIF(IVAR.EQ.40) THEN
45190         ROLD=XSEC(I1,I2)
45191       ELSEIF(IVAR.EQ.41) THEN
45192         CHOLD2=PROC(I1)
45193       ELSEIF(IVAR.EQ.42) THEN
45194         ROLD=SIGT(I1,I2,I3)
45195       ELSEIF(IVAR.EQ.43) THEN
45196         ROLD=XPVMD(I1)
45197       ELSEIF(IVAR.EQ.44) THEN
45198         ROLD=XPANL(I1)
45199       ELSEIF(IVAR.EQ.45) THEN
45200         ROLD=XPANH(I1)
45201       ELSEIF(IVAR.EQ.46) THEN
45202         ROLD=XPBEH(I1)
45203       ELSEIF(IVAR.EQ.47) THEN
45204         ROLD=XPDIR(I1)
45205       ELSEIF(IVAR.EQ.48) THEN
45206         IOLD=IMSS(I1)
45207       ELSEIF(IVAR.EQ.49) THEN
45208         ROLD=RMSS(I1)
45209       ELSEIF(IVAR.EQ.50) THEN
45210         ROLD=RVLAM(I1,I2,I3)
45211       ELSEIF(IVAR.EQ.51) THEN
45212         ROLD=RVLAMP(I1,I2,I3)
45213       ELSEIF(IVAR.EQ.52) THEN
45214         ROLD=RVLAMB(I1,I2,I3)
45215       ELSEIF(IVAR.EQ.53) THEN
45216         IOLD=ITCM(I1)
45217       ELSEIF(IVAR.EQ.54) THEN
45218         ROLD=RTCM(I1)
45219       ENDIF
45220  
45221 C...Print current value of variable. Loop back.
45222       IF(LNAM.GE.LBIT) THEN
45223         CHBIT(LNAM:14)=' '
45224         CHBIT(15:60)=' has the value                                '
45225         IF(MSVAR(IVAR,1).EQ.1) THEN
45226           WRITE(CHBIT(51:60),'(I10)') IOLD
45227         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45228           WRITE(CHBIT(47:60),'(F14.5)') ROLD
45229         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45230           CHBIT(53:60)=CHOLD
45231         ELSE
45232           CHBIT(33:60)=CHOLD
45233         ENDIF
45234         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45235         LLOW=LHIG
45236         IF(LLOW.LT.LTOT) GOTO 120
45237         RETURN
45238       ENDIF
45239  
45240 C...Read in new variable value.
45241       IF(MSVAR(IVAR,1).EQ.1) THEN
45242         CHINI=' '
45243         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
45244         READ(CHINI,'(I10)') INEW
45245       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45246         CHINR=' '
45247         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
45248         READ(CHINR,*) RNEW
45249       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45250         CHNEW=CHBIT(LNAM+1:LBIT)//' '
45251       ELSE
45252         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
45253       ENDIF
45254  
45255 C...Store new variable value.
45256       IF(IVAR.EQ.1) THEN
45257         N=INEW
45258       ELSEIF(IVAR.EQ.2) THEN
45259         K(I1,I2)=INEW
45260       ELSEIF(IVAR.EQ.3) THEN
45261         P(I1,I2)=RNEW
45262       ELSEIF(IVAR.EQ.4) THEN
45263         V(I1,I2)=RNEW
45264       ELSEIF(IVAR.EQ.5) THEN
45265         MSTU(I1)=INEW
45266       ELSEIF(IVAR.EQ.6) THEN
45267         PARU(I1)=RNEW
45268       ELSEIF(IVAR.EQ.7) THEN
45269         MSTJ(I1)=INEW
45270       ELSEIF(IVAR.EQ.8) THEN
45271         PARJ(I1)=RNEW
45272       ELSEIF(IVAR.EQ.9) THEN
45273         KCHG(I1,I2)=INEW
45274       ELSEIF(IVAR.EQ.10) THEN
45275         PMAS(I1,I2)=RNEW
45276       ELSEIF(IVAR.EQ.11) THEN
45277         PARF(I1)=RNEW
45278       ELSEIF(IVAR.EQ.12) THEN
45279         VCKM(I1,I2)=RNEW
45280       ELSEIF(IVAR.EQ.13) THEN
45281         MDCY(I1,I2)=INEW
45282       ELSEIF(IVAR.EQ.14) THEN
45283         MDME(I1,I2)=INEW
45284       ELSEIF(IVAR.EQ.15) THEN
45285         BRAT(I1)=RNEW
45286       ELSEIF(IVAR.EQ.16) THEN
45287         KFDP(I1,I2)=INEW
45288       ELSEIF(IVAR.EQ.17) THEN
45289         CHAF(I1,I2)=CHNEW
45290       ELSEIF(IVAR.EQ.18) THEN
45291         MRPY(I1)=INEW
45292       ELSEIF(IVAR.EQ.19) THEN
45293         RRPY(I1)=RNEW
45294       ELSEIF(IVAR.EQ.20) THEN
45295         MSEL=INEW
45296       ELSEIF(IVAR.EQ.21) THEN
45297         MSUB(I1)=INEW
45298       ELSEIF(IVAR.EQ.22) THEN
45299         KFIN(I1,I2)=INEW
45300       ELSEIF(IVAR.EQ.23) THEN
45301         CKIN(I1)=RNEW
45302       ELSEIF(IVAR.EQ.24) THEN
45303         MSTP(I1)=INEW
45304       ELSEIF(IVAR.EQ.25) THEN
45305         PARP(I1)=RNEW
45306       ELSEIF(IVAR.EQ.26) THEN
45307         MSTI(I1)=INEW
45308       ELSEIF(IVAR.EQ.27) THEN
45309         PARI(I1)=RNEW
45310       ELSEIF(IVAR.EQ.28) THEN
45311         MINT(I1)=INEW
45312       ELSEIF(IVAR.EQ.29) THEN
45313         VINT(I1)=RNEW
45314       ELSEIF(IVAR.EQ.30) THEN
45315         ISET(I1)=INEW
45316       ELSEIF(IVAR.EQ.31) THEN
45317         KFPR(I1,I2)=INEW
45318       ELSEIF(IVAR.EQ.32) THEN
45319         COEF(I1,I2)=RNEW
45320       ELSEIF(IVAR.EQ.33) THEN
45321         ICOL(I1,I2,I3)=INEW
45322       ELSEIF(IVAR.EQ.34) THEN
45323         XSFX(I1,I2)=RNEW
45324       ELSEIF(IVAR.EQ.35) THEN
45325         ISIG(I1,I2)=INEW
45326       ELSEIF(IVAR.EQ.36) THEN
45327         SIGH(I1)=RNEW
45328       ELSEIF(IVAR.EQ.37) THEN
45329         MWID(I1)=INEW
45330       ELSEIF(IVAR.EQ.38) THEN
45331         WIDS(I1,I2)=RNEW
45332       ELSEIF(IVAR.EQ.39) THEN
45333         NGEN(I1,I2)=INEW
45334       ELSEIF(IVAR.EQ.40) THEN
45335         XSEC(I1,I2)=RNEW
45336       ELSEIF(IVAR.EQ.41) THEN
45337         PROC(I1)=CHNEW2
45338       ELSEIF(IVAR.EQ.42) THEN
45339         SIGT(I1,I2,I3)=RNEW
45340       ELSEIF(IVAR.EQ.43) THEN
45341         XPVMD(I1)=RNEW
45342       ELSEIF(IVAR.EQ.44) THEN
45343         XPANL(I1)=RNEW
45344       ELSEIF(IVAR.EQ.45) THEN
45345         XPANH(I1)=RNEW
45346       ELSEIF(IVAR.EQ.46) THEN
45347         XPBEH(I1)=RNEW
45348       ELSEIF(IVAR.EQ.47) THEN
45349         XPDIR(I1)=RNEW
45350       ELSEIF(IVAR.EQ.48) THEN
45351         IMSS(I1)=INEW
45352       ELSEIF(IVAR.EQ.49) THEN
45353         RMSS(I1)=RNEW
45354       ELSEIF(IVAR.EQ.50) THEN
45355         RVLAM(I1,I2,I3)=RNEW
45356       ELSEIF(IVAR.EQ.51) THEN
45357         RVLAMP(I1,I2,I3)=RNEW
45358       ELSEIF(IVAR.EQ.52) THEN
45359         RVLAMB(I1,I2,I3)=RNEW
45360       ELSEIF(IVAR.EQ.53) THEN
45361         ITCM(I1)=INEW
45362       ELSEIF(IVAR.EQ.54) THEN
45363         RTCM(I1)=RNEW
45364       ENDIF
45365  
45366 C...Write old and new value. Loop back.
45367       CHBIT(LNAM:14)=' '
45368       CHBIT(15:60)=' changed from                to               '
45369       IF(MSVAR(IVAR,1).EQ.1) THEN
45370         WRITE(CHBIT(33:42),'(I10)') IOLD
45371         WRITE(CHBIT(51:60),'(I10)') INEW
45372         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45373       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45374         WRITE(CHBIT(29:42),'(F14.5)') ROLD
45375         WRITE(CHBIT(47:60),'(F14.5)') RNEW
45376         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45377       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45378         CHBIT(35:42)=CHOLD
45379         CHBIT(53:60)=CHNEW
45380         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45381       ELSE
45382         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
45383         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
45384       ENDIF
45385       LLOW=LHIG
45386       IF(LLOW.LT.LTOT) GOTO 120
45387  
45388 C...Format statement for output on unit MSTU(11) (by default 6).
45389  5000 FORMAT(5X,A60)
45390  5100 FORMAT(5X,A88)
45391  
45392       RETURN
45393       END
45394  
45395 C*********************************************************************
45396  
45397 C...PYEXEC
45398 C...Administrates the fragmentation and decay chain.
45399  
45400       SUBROUTINE PYEXEC
45401  
45402 C...Double precision and integer declarations.
45403       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45404       IMPLICIT INTEGER(I-N)
45405       INTEGER PYK,PYCHGE,PYCOMP
45406 C...Commonblocks.
45407       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
45408       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45409       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45410       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45411       COMMON/PYINT4/MWID(500),WIDS(500,5)
45412       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT4/
45413 C...Local array.
45414       DIMENSION PS(2,6),IJOIN(100)
45415  
45416 C...Initialize and reset.
45417       MSTU(24)=0
45418       IF(MSTU(12).GE.1) CALL PYLIST(0)
45419       MSTU(29)=0
45420       MSTU(31)=MSTU(31)+1
45421       MSTU(1)=0
45422       MSTU(2)=0
45423       MSTU(3)=0
45424       IF(MSTU(17).LE.0) MSTU(90)=0
45425       MCONS=1
45426  
45427 C...Sum up momentum, energy and charge for starting entries.
45428       NSAV=N
45429       DO 110 I=1,2
45430         DO 100 J=1,6
45431           PS(I,J)=0D0
45432   100   CONTINUE
45433   110 CONTINUE
45434       DO 130 I=1,N
45435         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
45436         DO 120 J=1,4
45437           PS(1,J)=PS(1,J)+P(I,J)
45438   120   CONTINUE
45439         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
45440   130 CONTINUE
45441       PARU(21)=PS(1,4)
45442  
45443 C...Start by all decays of coloured resonances involved in shower.
45444       NORIG=N
45445       DO 140 I=1,NORIG
45446         IF(K(I,1).EQ.3) THEN
45447           KC=PYCOMP(K(I,2))
45448           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
45449         ENDIF
45450   140 CONTINUE
45451  
45452 C...Prepare system for subsequent fragmentation/decay.
45453       CALL PYPREP(0)
45454  
45455 C...Loop through jet fragmentation and particle decays.
45456       MBE=0
45457   150 MBE=MBE+1
45458       IP=0
45459   160 IP=IP+1
45460       KC=0
45461       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
45462       IF(KC.EQ.0) THEN
45463  
45464 C...Deal with any remaining undecayed resonance
45465 C...(normally the task of PYEVNT, so seldom used).
45466       ELSEIF(MWID(KC).NE.0) THEN
45467         IBEG=IP
45468         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
45469           IBEG=IP+1
45470   170     IBEG=IBEG-1
45471           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
45472           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
45473           IEND=IP-1
45474   180     IEND=IEND+1
45475           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
45476           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
45477           NJOIN=0
45478           DO 190 I=IBEG,IEND
45479             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
45480               NJOIN=NJOIN+1
45481               IJOIN(NJOIN)=I
45482             ENDIF
45483   190     CONTINUE
45484         ENDIF
45485         CALL PYRESD(IP)
45486         CALL PYPREP(IBEG)
45487  
45488 C...Particle decay if unstable and allowed. Save long-lived particle
45489 C...decays until second pass after Bose-Einstein effects.
45490       ELSEIF(KCHG(KC,2).EQ.0) THEN
45491         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
45492      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
45493      &  CALL PYDECY(IP)
45494  
45495 C...Decay products may develop a shower.
45496         IF(MSTJ(92).GT.0) THEN
45497           IP1=MSTJ(92)
45498           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
45499      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
45500           CALL PYSHOW(IP1,IP1+1,QMAX)
45501           CALL PYPREP(IP1)
45502           MSTJ(92)=0
45503         ELSEIF(MSTJ(92).LT.0) THEN
45504           IP1=-MSTJ(92)
45505           CALL PYSHOW(IP1,-3,P(IP,5))
45506           CALL PYPREP(IP1)
45507           MSTJ(92)=0
45508         ENDIF
45509  
45510 C...Jet fragmentation: string or independent fragmentation.
45511       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
45512         MFRAG=MSTJ(1)
45513         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
45514         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
45515           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
45516      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
45517             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
45518           ENDIF
45519         ENDIF
45520         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
45521         IF(MFRAG.EQ.2) CALL PYINDF(IP)
45522         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
45523         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
45524       ENDIF
45525  
45526 C...Loop back if enough space left in PYJETS and no error abort.
45527       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
45528       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
45529         GOTO 160
45530       ELSEIF(IP.LT.N) THEN
45531         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
45532       ENDIF
45533  
45534 C...Include simple Bose-Einstein effect parametrization if desired.
45535       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
45536         CALL PYBOEI(NSAV)
45537         GOTO 150
45538       ENDIF
45539  
45540 C...Check that momentum, energy and charge were conserved.
45541       DO 210 I=1,N
45542         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
45543         DO 200 J=1,4
45544           PS(2,J)=PS(2,J)+P(I,J)
45545   200   CONTINUE
45546         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
45547   210 CONTINUE
45548       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
45549      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
45550       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
45551      &'(PYEXEC:) four-momentum was not conserved')
45552       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
45553      &'(PYEXEC:) charge was not conserved')
45554  
45555       RETURN
45556       END
45557  
45558 C*********************************************************************
45559  
45560 C...PYPREP
45561 C...Rearranges partons along strings.
45562 C...Special considerations for systems with junctions, with
45563 C...possibility of junction-antijunction annihilation.
45564 C...Allows small systems to collapse into one or two particles.
45565 C...Checks flavours and colour singlet invariant masses.
45566  
45567       SUBROUTINE PYPREP(IP)
45568  
45569 C...Double precision and integer declarations.
45570       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45571       INTEGER PYK,PYCHGE,PYCOMP
45572 C...Commonblocks.
45573       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
45574       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45575       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45576       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45577       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
45578 C...Local arrays.
45579       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
45580      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
45581      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
45582      &IJCP(0:6),TJUOLD(5)
45583  
45584 C...Function to give four-product.
45585       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)
45586  
45587 C...Rearrange parton shower product listing along strings: begin loop.
45588       NOLD=N
45589       I1=N
45590       NJUNC=0
45591       NPIECE=0
45592       NJJSTR=0
45593       MSTU32=MSTU(32)+1
45594       DO 170 MQGST=1,3
45595         DO 160 I=MAX(1,IP),N
45596  
45597 C...Special treatment for junctions
45598           IF(K(I,1).EQ.42) THEN
45599 C...First, just store positions
45600             IF (MQGST.EQ.1) THEN
45601               NJUNC=NJUNC+1
45602               IJUNC(NJUNC,0)=I
45603               IJUNC(NJUNC,4)=0
45604 C...Then look for junction-junction strings (not detected in the
45605 C...main search below).
45606             ELSE IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
45607               IF (NJJSTR.EQ.0) THEN
45608                 NJJSTR = (3*NJUNC-NPIECE)/2
45609               ENDIF
45610 C...Check how many already identified strings end on this junction
45611               ILC=0
45612               DO 100 J=1,NPIECE
45613                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
45614   100         CONTINUE
45615 C...If only 2, third one must be to another junction
45616               IF (ILC.EQ.2) THEN
45617 C...The colour information in the junction is unreadable for the
45618 C...colour space search further down in this routine, so we must
45619 C...start on the colour mother of this junction and then "artificially"
45620 C...prevent the colour mother from connecting here again.
45621                 IA=MOD(K(I,4),MSTU(5))
45622                 KCS=4
45623                 IF (MOD(MOD(K(I,4)/MSTU(5),MSTU(5)),2).EQ.1) KCS=5
45624                 K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
45625                 K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
45626                 I1BEG = I1
45627                 NSTP = 0
45628                 GOTO 150
45629               ELSE IF (ILC.NE.3) THEN
45630 C...This could happen if 2 legs of a junction connect to other
45631 C...junctions.
45632                 CALL PYERRM(12,
45633      &          '(PYPREP:) Too many junction-junction strings.')
45634               ENDIF
45635             ENDIF
45636           ENDIF
45637  
45638 C...Look for coloured string endpoint, or (later) leftover gluon.
45639           IF(K(I,1).NE.3) GOTO 160
45640           KC=PYCOMP(K(I,2))
45641           IF(KC.EQ.0) GOTO 160
45642           KQ=KCHG(KC,2)
45643           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 160
45644  
45645 C...Pick up loose string end.
45646           KCS=4
45647           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
45648           IA=I
45649           IB=I
45650           I1BEG=I1
45651           NSTP=0
45652   110     NSTP=NSTP+1
45653           IF(NSTP.GT.4*N) THEN
45654             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
45655             RETURN
45656           ENDIF
45657  
45658 C...Copy undecayed parton. Finished if reached string endpoint.
45659           IF(K(IA,1).EQ.3) THEN
45660             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
45661               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
45662               RETURN
45663             ENDIF
45664             I1=I1+1
45665             K(I1,1)=2
45666             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
45667             K(I1,2)=K(IA,2)
45668             K(I1,3)=IA
45669             K(I1,4)=0
45670             K(I1,5)=0
45671             DO 120 J=1,5
45672               P(I1,J)=P(IA,J)
45673               V(I1,J)=V(IA,J)
45674   120       CONTINUE
45675             K(IA,1)=K(IA,1)+10
45676             IF(K(I1,1).EQ.1) GOTO 160
45677           ENDIF
45678  
45679 C...Also finished (for now) if reached junction; then copy to end.
45680           IF(K(IA,1).EQ.42) THEN
45681             NCOPY=I1-I1BEG
45682             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
45683               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
45684               RETURN
45685             ENDIF
45686             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
45687               DO 140 ICOPY=1,NCOPY
45688                 DO 130 J=1,5
45689                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
45690                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
45691                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
45692   130           CONTINUE
45693   140         CONTINUE
45694             ENDIF
45695             NPIECE=NPIECE+1
45696             IPIECE(NPIECE,0)=I
45697             IPIECE(NPIECE,1)=MSTU32+1
45698             IPIECE(NPIECE,2)=MSTU32+NCOPY
45699             IPIECE(NPIECE,3)=IB
45700             IPIECE(NPIECE,4)=IA
45701             MSTU32=MSTU32+NCOPY
45702             I1=I1BEG
45703             GOTO 160
45704           ENDIF
45705  
45706 C...GOTO next parton in colour space.
45707   150     IB=IA
45708           IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
45709      &    .NE.0) THEN
45710             IA=MOD(K(IB,KCS),MSTU(5))
45711             K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
45712             MREV=0
45713           ELSE
45714             IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
45715      &      MSTU(5)).EQ.0) KCS=9-KCS
45716             IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
45717             K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
45718             MREV=1
45719           ENDIF
45720           IF(IA.LE.0.OR.IA.GT.N) THEN
45721             CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
45722             RETURN
45723           ENDIF
45724           IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
45725      &    MSTU(5)).EQ.IB) THEN
45726             IF(MREV.EQ.1) KCS=9-KCS
45727             IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
45728             K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
45729           ELSE
45730             IF(MREV.EQ.0) KCS=9-KCS
45731             IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
45732             K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
45733           ENDIF
45734           IF(IA.NE.I) GOTO 110
45735           K(I1,1)=1
45736   160   CONTINUE
45737   170 CONTINUE
45738  
45739 C...Junction systems remain.
45740       IJU=0
45741       IJUS=0
45742       IJUCNT=0
45743       MREV=0
45744       IJJSTR=0
45745   180 IJUCNT=IJUCNT+1
45746       IF (IJUCNT.LE.NJUNC) THEN
45747 C...If we are not processing a j-j string, treat this junction as new.
45748         IF (IJJSTR.EQ.0) THEN
45749           IJU=IJUNC(IJUCNT,0)
45750           MREV=0
45751 C...If junction has already been read, ignore it.
45752           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 180
45753 C...If we are on a j-j string, goto second j-j junction.
45754         ELSE
45755           IJUCNT=IJUCNT-1
45756           IJU=IJUS
45757         ENDIF
45758 C...Mark selected junction read.
45759         DO 190 J=1,NJUNC
45760           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
45761   190   CONTINUE
45762  
45763 C...Determine junction type
45764         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
45765 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
45766 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
45767 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
45768         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
45769           IHK=0
45770   200     IHK=IHK+1
45771 C...Find which quarks belong to given junction.
45772           IF(IHK.EQ.1) IEND=MOD(K(IJU,5),MSTU(5))
45773           IF(IHK.EQ.2) IEND=MOD(K(IJU,5)/MSTU(5),MSTU(5))
45774 C...IHK = 3 is special. Either normal string piece, or j-j string.
45775           IF(IHK.EQ.3) THEN
45776             IEND=MOD(K(IJU,4),MSTU(5))
45777             IF (MREV.NE.1) THEN
45778               DO 210 IPC=1,NPIECE
45779 C...If there is a j-j string starting on the present junction which has
45780 C...zero length, insert next junction immediately.
45781                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
45782      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
45783                   IJJSTR = 1
45784                   GOTO 250
45785                 ENDIF
45786   210         CONTINUE
45787               MREV = 1
45788 C...If MREV is 1 and IHK is 3 we are finished with this system.
45789             ELSE
45790               MREV=0
45791               GOTO 180
45792             ENDIF
45793           ENDIF
45794  
45795 C...If we've gotten this far, then either IHK < 3, or
45796 C...an interjunction string exists, or just a third normal string.
45797           IJUNC(IJUCNT,IHK)=0
45798           IJJSTR = 0
45799 C..Order pieces belonging to this junction. Also look for j-j.
45800           DO 220 IPC=1,NPIECE
45801             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
45802             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
45803      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
45804               IJUNC(IJUCNT,IHK)=IPC
45805               IJJSTR = 1
45806               MREV = 0
45807             ENDIF
45808   220     CONTINUE
45809 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
45810           IPC=IJUNC(IJUCNT,IHK)
45811           DO 240 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
45812             I1=I1+1
45813             DO 230 J=1,5
45814               K(I1,J)=K(MSTU(4)-ICP,J)
45815               P(I1,J)=P(MSTU(4)-ICP,J)
45816               V(I1,J)=V(MSTU(4)-ICP,J)
45817   230       CONTINUE
45818   240     CONTINUE
45819           K(I1,1)=2
45820 C...Mark last quark.
45821           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
45822 C...Do not insert junctions at wrong places.
45823           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 270
45824 C...Insert junction.
45825   250     IJUS = IJU
45826           IF (IHK.EQ.3) THEN
45827 C...Shift to end junction if a j-j string has been processed.
45828             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
45829             MREV= 1
45830           ENDIF
45831           I1=I1+1
45832           DO 260 J=1,5
45833             K(I1,J)=0
45834             P(I1,J)=0.
45835             V(I1,J)=0.
45836   260     CONTINUE
45837           K(I1,1)=41
45838           K(IJUS,1)=K(IJUS,1)+10
45839           K(I1,2)=K(IJUS,2)
45840           K(I1,3)=K(IJUS,3)
45841   270     IF (IHK.LT.3) GOTO 200
45842         ELSE
45843           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
45844         ENDIF
45845         IF (IJUCNT.NE.NJUNC) GOTO 180
45846       ENDIF
45847       N=I1
45848  
45849 C...Rearrange three strings from junction, e.g. in case one has been
45850 C...shortened by shower, so the last is the largest-energy one.
45851       IF(NJUNC.GE.1) THEN
45852 C...Find systems with exactly one junction.
45853         MJUN1=0
45854         NBEG=NOLD+1
45855         DO 380 I=NOLD+1,N
45856           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
45857           ELSEIF(K(I,1).EQ.41) THEN
45858             MJUN1=MJUN1+1
45859           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
45860             MJUN1=0
45861             NBEG=I+1
45862           ELSE
45863             NEND=I
45864 C...Sum up energy-momentum in each junction string.
45865             DO 280 J=1,5
45866               PJU(1,J)=0D0
45867               PJU(2,J)=0D0
45868               PJU(3,J)=0D0
45869   280       CONTINUE
45870             NJU=0
45871             DO 300 I1=NBEG,NEND
45872               IF(K(I1,2).NE.21) THEN
45873                 NJU=NJU+1
45874                 IJUR(NJU)=I1
45875               ENDIF
45876               DO 290 J=1,5
45877                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
45878   290         CONTINUE
45879   300       CONTINUE
45880 C...Find which of them has highest energy (minus mass) in rest frame.
45881             DO 310 J=1,5
45882               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
45883   310       CONTINUE
45884             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
45885      &      PJU(4,3)**2))
45886             DO 320 I2=1,3
45887               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
45888      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
45889   320       CONTINUE
45890             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
45891 C...Decide how to rearrange so that new last has highest energy.
45892               IF(PJU(1,6).LT.PJU(2,6)) THEN
45893                 IRNG(1,1)=IJUR(1)
45894                 IRNG(1,2)=IJUR(2)-1
45895                 IRNG(2,1)=IJUR(4)
45896                 IRNG(2,2)=IJUR(3)+1
45897                 IRNG(4,1)=IJUR(3)-1
45898                 IRNG(4,2)=IJUR(2)
45899               ELSE
45900                 IRNG(1,1)=IJUR(4)
45901                 IRNG(1,2)=IJUR(3)+1
45902                 IRNG(2,1)=IJUR(2)
45903                 IRNG(2,2)=IJUR(3)-1
45904                 IRNG(4,1)=IJUR(2)-1
45905                 IRNG(4,2)=IJUR(1)
45906               ENDIF
45907               IRNG(3,1)=IJUR(3)
45908               IRNG(3,2)=IJUR(3)
45909 C...Copy in correct order below bottom of current event record.
45910               I2=N
45911               DO 350 II=1,4
45912                 DO 340 I1=IRNG(II,1),IRNG(II,2),
45913      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
45914                   I2=I2+1
45915                   DO 330 J=1,5
45916                     K(I2,J)=K(I1,J)
45917                     P(I2,J)=P(I1,J)
45918                     V(I2,J)=V(I1,J)
45919   330             CONTINUE
45920                   IF(K(I2,1).EQ.1) K(I2,1)=2
45921   340           CONTINUE
45922   350         CONTINUE
45923               K(I2,1)=1
45924 C...Copy back up, overwriting but now in correct order.
45925               DO 370 I1=NBEG,NEND
45926                 I2=I1-NBEG+N+1
45927                 DO 360 J=1,5
45928                   K(I1,J)=K(I2,J)
45929                   P(I1,J)=P(I2,J)
45930                   V(I1,J)=V(I2,J)
45931   360           CONTINUE
45932   370         CONTINUE
45933             ENDIF
45934             MJUN1=0
45935             NBEG=I+1
45936           ENDIF
45937   380   CONTINUE
45938 C++SKANDS
45939 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
45940 C...to two q-qbar systems.
45941 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
45942         IF (MSTJ(19).NE.1) THEN
45943           MJUN1  = 0
45944           JJGLUE = 0
45945           NBEG   = NOLD+1
45946 C...Force collapse when MSTJ(19)=2.
45947           IF (MSTJ(19).EQ.2) THEN
45948             DELMJJ = 1D9
45949             DELMQQ = 0D0
45950           ENDIF
45951 C...Find systems with exactly two junctions.
45952           DO 610 I=NOLD+1,N
45953 C...Count junctions
45954             IF (K(I,1).EQ.41) THEN
45955               MJUN1 = MJUN1+1
45956 C...Check for interjunction gluons
45957               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
45958                 JJGLUE = 1
45959               ENDIF
45960             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
45961 C...If end of system reached with either zero or one junction, restart
45962 C...with next system.
45963               MJUN1  = 0
45964               JJGLUE = 0
45965               NBEG   = I+1
45966             ELSEIF(K(I,1).EQ.1) THEN
45967 C...If end of system reached with exactly two junctions, compute string
45968 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
45969 C...length measure for the (q-qbar)(q-qbar) topology.
45970               NEND=I
45971 C...Loop down through chain.
45972               ISID=0
45973               DO 390 I1=NBEG,NEND
45974 C...Store string piece division locations in event record
45975                 IF (K(I1,2).NE.21) THEN
45976                   ISID       = ISID+1
45977                   IJCP(ISID) = I1
45978                 ENDIF
45979   390         CONTINUE
45980 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
45981               ISW=0
45982               IF (PYR(0).LT.0.5D0) ISW=1
45983 C...Randomly choose which qqbar string gets the jj gluons.
45984               IGS=1
45985               IF (PYR(0).GT.0.5D0) IGS=2
45986 C...Only compute string lengths when no topology forced.
45987               IF (MSTJ(19).EQ.0) THEN
45988 C...Repeat following for each junction
45989                 DO 480 IJU=1,2
45990 C...Initialize iterative procedure for finding JRF
45991                   IJRFIT=0
45992                   DO 400 IX=1,3
45993                     TJUOLD(IX)=0D0
45994   400             CONTINUE
45995                   TJUOLD(4)=1D0
45996 C...Start iteration. Sum up momenta in string pieces
45997   410             DO 450 IJS=1,3
45998 C...JD=-1 for first junction, +1 for second junction.
45999 C...Find out where piece starts and ends and which direction to go.
46000                     JD=2*IJU-3
46001                     IF (IJS.LE.2) THEN
46002                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
46003                       IB = IJCP((IJU-1)*7 - JD*IJS)
46004                     ELSEIF (IJS.EQ.3) THEN
46005                       JD =-JD
46006                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
46007                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
46008                     ENDIF
46009 C...Initialize junction pull 4-vector.
46010                     DO 420 J=1,5
46011                       PUL(IJS,J)=0D0
46012   420               CONTINUE
46013 C...Initialize weight
46014                     PWT = 0D0
46015                     PWTOLD = 0D0
46016 C...Sum up (weighted) momenta along each string piece
46017                     DO 440 ISP=IA,IB,JD
46018 C...If present parton not last in chain
46019                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
46020 C...If last parton was a junction, store present weight
46021                         IF (K(ISP-JD,2).EQ.88) THEN
46022                           PWTOLD = PWT
46023 C...If last parton was a quark, reset to stored weight.
46024                         ELSEIF (K(ISP-JD,2).NE.21) THEN
46025                           PWT = PWTOLD
46026                         ENDIF
46027                       ENDIF
46028 C...Skip next parton if weight already large
46029                       IF (PWT.GT.10D0) GOTO 440
46030 C...Compute momentum in TJUOLD frame:
46031                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
46032      &                     )*P(ISP,3)
46033                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
46034                       DO 430 J=1,3
46035                         TMP=P(ISP,J)+TJUOLD(J)*BFC
46036                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
46037   430                 CONTINUE
46038 C...Boosted energy
46039                       TMP=TJUOLD(4)*P(ISP,4)+TDP
46040                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
46041 C...Update weight
46042                       PWT=PWT+TMP/PARJ(48)
46043 C...Put |p| rather than m in 5th slot
46044                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
46045      &                     +PUL(IJS,3)**2)
46046   440               CONTINUE
46047   450             CONTINUE
46048 C...Compute boost
46049                   IJRFIT=IJRFIT+1
46050                   CALL PYJURF(PUL,T)
46051 C...Combine new boost (T) with old boost (TJUOLD)
46052                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
46053                   DO 460 IX=1,3
46054                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
46055      &                   ))
46056   460             CONTINUE
46057                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
46058      &                 **2)
46059 C...If last boost small, accept JRF, else iterate.
46060 C...Also prevent possibility of infinite loop.
46061                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
46062      &                 IJRFIT.LT.MSTJ(18))THEN
46063                     GOTO 410
46064                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
46065                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
46066                   ENDIF
46067 C...Store final boost, with change of sign since TJJ motion vector.
46068                   DO 470 IX=1,3
46069                     TJJ(IJU,IX)=-TJUOLD(IX)
46070   470             CONTINUE
46071                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
46072      &                 +TJJ(IJU,3)**2)
46073   480           CONTINUE
46074 C...String length measure for (q-qbar)(q-qbar) topology.
46075 C...Note only momenta of nearest partons used (since rest of system
46076 C...identical).
46077                 IF (JJGLUE.EQ.0) THEN
46078                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
46079      &                 -1,IJCP(5-ISW)+1)
46080                 ELSE
46081 C...Put jj gluons on selected string (IGS selected randomly above).
46082                   IF (IGS.EQ.1) THEN
46083                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
46084      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
46085                   ELSE
46086                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
46087      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
46088      &                   ,IJCP(5-ISW)+1)
46089                   ENDIF
46090                 ENDIF
46091 C...String length measure for q-q-j-j-q-q topology.
46092                 T1G1=0D0
46093                 T2G2=0D0
46094                 T1T2=0D0
46095                 T1P1=0D0
46096                 T1P2=0D0
46097                 T2P3=0D0
46098                 T2P4=0D0
46099                 ISGN=-1
46100 C...Note only momenta of nearest partons used (since rest of system
46101 C...identical).
46102                 DO 490 IX=1,4
46103                   IF (IX.EQ.4) ISGN=1
46104                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
46105                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
46106                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
46107                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
46108                   IF (JJGLUE.EQ.0) THEN
46109 C...Junction motion vector dot product gives length when inter-junction
46110 C...gluons absent.
46111                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
46112                   ELSE
46113 C...Junction motion vector dot products with gluon momenta give length
46114 C...when inter-junction gluons present.
46115                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
46116                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
46117                   ENDIF
46118   490           CONTINUE
46119                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
46120                 IF (JJGLUE.EQ.0) THEN
46121                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
46122                 ELSE
46123                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
46124                 ENDIF
46125               ENDIF
46126 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
46127 C...(Always the case for MSTJ(19)=2 due to initialization above)
46128               IF (DELMJJ.GT.DELMQQ) THEN
46129 C...Put new system at end of event record
46130                 NCOP=N
46131                 DO 560 IST=1,2
46132                   DO 510 ICOP=IJCP(IST),IJCP(IST+1)-1
46133                     NCOP=NCOP+1
46134                     DO 500 IX=1,5
46135                       P(NCOP,IX)=P(ICOP,IX)
46136                       K(NCOP,IX)=K(ICOP,IX)
46137   500               CONTINUE
46138   510             CONTINUE
46139                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
46140 C...Insert inter-junction gluon string piece (reversed)
46141                     NJJGL=0
46142                     DO 530 ICOP=IJCP(4)-1,IJCP(3)+1,-1
46143                       NJJGL=NJJGL+1
46144                       NCOP=NCOP+1
46145                       DO 520 IX=1,5
46146                         P(NCOP,IX)=P(ICOP,IX)
46147                         K(NCOP,IX)=K(ICOP,IX)
46148   520                 CONTINUE
46149   530               CONTINUE
46150                     ENDIF
46151                   IFC=-2*IST+3
46152                   DO 550 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
46153                     NCOP=NCOP+1
46154                     DO 540 IX=1,5
46155                       P(NCOP,IX)=P(ICOP,IX)
46156                       K(NCOP,IX)=K(ICOP,IX)
46157   540               CONTINUE
46158   550             CONTINUE
46159                   K(NCOP,1)=1
46160   560           CONTINUE
46161 C...Copy system back in right order
46162                 DO 580 ICOP=NBEG,NEND-2
46163                   DO 570 IX=1,5
46164                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
46165                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
46166   570             CONTINUE
46167   580           CONTINUE
46168 C...Shift down rest of event record
46169                 DO 600 ICOP=NEND+1,N
46170                   DO 590 IX=1,5
46171                     P(ICOP-2,IX)=P(ICOP,IX)
46172                     K(ICOP-2,IX)=K(ICOP,IX)
46173   590             CONTINUE
46174   600             CONTINUE
46175 C...Update length of event record.
46176                 N=N-2
46177               ENDIF
46178               MJUN1=0
46179               NBEG=I+1
46180             ENDIF
46181   610     CONTINUE
46182         ENDIF
46183       ENDIF
46184  
46185 C...Done if no checks on small-mass systems.
46186       IF(MSTJ(14).LT.0) RETURN
46187       IF(MSTJ(14).EQ.0) GOTO 1050
46188  
46189 C...Find lowest-mass colour singlet jet system.
46190       NS=N
46191   620 NSIN=N-NS
46192       PDMIN=1D0+PARJ(32)
46193       IC=0
46194       DO 680 I=MAX(1,IP),N
46195         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
46196         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
46197           NSIN=NSIN+1
46198           IC=I
46199           DO 630 J=1,4
46200             DPS(J)=P(I,J)
46201   630     CONTINUE
46202           MSTJ(93)=1
46203           DPS(5)=PYMASS(K(I,2))
46204         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
46205           DO 640 J=1,4
46206             DPS(J)=DPS(J)+P(I,J)
46207   640     CONTINUE
46208           MSTJ(93)=1
46209           DPS(5)=DPS(5)+PYMASS(K(I,2))
46210         ELSEIF(K(I,1).EQ.2) THEN
46211           DO 650 J=1,4
46212             DPS(J)=DPS(J)+P(I,J)
46213   650     CONTINUE
46214         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46215           DO 660 J=1,4
46216             DPS(J)=DPS(J)+P(I,J)
46217   660     CONTINUE
46218           MSTJ(93)=1
46219           DPS(5)=DPS(5)+PYMASS(K(I,2))
46220           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
46221      &    DPS(5)
46222           IF(PD.LT.PDMIN) THEN
46223             PDMIN=PD
46224             DO 670 J=1,5
46225               DPC(J)=DPS(J)
46226   670       CONTINUE
46227             IC1=IC
46228             IC2=I
46229           ENDIF
46230           IC=0
46231         ELSE
46232           NSIN=NSIN+1
46233         ENDIF
46234   680 CONTINUE
46235  
46236 C...Done if lowest-mass system above threshold for string frag.
46237       IF(PDMIN.GE.PARJ(32)) GOTO 1050
46238  
46239 C...Fill small-mass system as cluster.
46240       NSAV=N
46241       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
46242       K(N+1,1)=11
46243       K(N+1,2)=91
46244       K(N+1,3)=IC1
46245       P(N+1,1)=DPC(1)
46246       P(N+1,2)=DPC(2)
46247       P(N+1,3)=DPC(3)
46248       P(N+1,4)=DPC(4)
46249       P(N+1,5)=PECM
46250  
46251 C...Set up history, assuming cluster -> 2 hadrons.
46252       NBODY=2
46253       K(N+1,4)=N+2
46254       K(N+1,5)=N+3
46255       K(N+2,1)=1
46256       K(N+3,1)=1
46257       IF(MSTU(16).NE.2) THEN
46258         K(N+2,3)=N+1
46259         K(N+3,3)=N+1
46260       ELSE
46261         K(N+2,3)=IC1
46262         K(N+3,3)=IC2
46263       ENDIF
46264       K(N+2,4)=0
46265       K(N+3,4)=0
46266       K(N+2,5)=0
46267       K(N+3,5)=0
46268       V(N+1,5)=0D0
46269       V(N+2,5)=0D0
46270       V(N+3,5)=0D0
46271  
46272 C...Find total flavour content - complicated by presence of junctions.
46273       NQ=0
46274       NDIQ=0
46275       DO 690 I=IC1,IC2
46276         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
46277           NQ=NQ+1
46278           KFQ(NQ)=K(I,2)
46279           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
46280         ENDIF
46281   690 CONTINUE
46282  
46283 C...If several diquarks, split up one to give even number of flavours.
46284       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
46285         I1=3
46286         IF(IABS(KFQ(3)).LT.1000) I1=1
46287         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
46288         KFQ(I1)=KFQ(I1)/1000
46289         NQ=4
46290         NDIQ=NDIQ-1
46291       ENDIF
46292  
46293 C...If four quark ends, join two to diquark.
46294       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
46295         I1=1
46296         I2=2
46297         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
46298         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
46299         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
46300         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
46301         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
46302      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
46303         KFQ(I2)=KFQ(4)
46304         NQ=3
46305         NDIQ=1
46306       ENDIF
46307  
46308 C...If two quark ends, plus quark or diquark, join quarks to diquark.
46309       IF(NQ.EQ.3) THEN
46310         I1=1
46311         I2=2
46312         IF(IABS(KFQ(I1)).GT.1000) I1=3
46313         IF(IABS(KFQ(I2)).GT.1000) I2=3
46314         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
46315         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
46316         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
46317      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
46318         KFQ(I2)=KFQ(3)
46319         NQ=2
46320         NDIQ=NDIQ+1
46321       ENDIF
46322  
46323 C...Form two particles from flavours of lowest-mass system, if feasible.
46324       NTRY = 0
46325   700 NTRY = NTRY + 1
46326  
46327 C...Open string with two specified endpoint flavours.
46328       IF(NQ.EQ.2) THEN
46329         KC1=PYCOMP(KFQ(1))
46330         KC2=PYCOMP(KFQ(2))
46331         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1050
46332         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
46333         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
46334         IF(KQ1+KQ2.NE.0) GOTO 1050
46335 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
46336   710   K1=KFQ(1)
46337         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
46338         MSTU(125)=0
46339         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
46340         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
46341         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 710
46342  
46343 C...Open string with four specified flavours.
46344       ELSEIF(NQ.EQ.4) THEN
46345         KC1=PYCOMP(KFQ(1))
46346         KC2=PYCOMP(KFQ(2))
46347         KC3=PYCOMP(KFQ(3))
46348         KC4=PYCOMP(KFQ(4))
46349         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1050
46350         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
46351         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
46352         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
46353         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
46354         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1050
46355 C...Combine flavours pairwise to form two hadrons.
46356   720   I1=1
46357         I2=2
46358         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
46359      &  IABS(KFQ(2)).GT.1000)) I2=3
46360         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
46361      &  IABS(KFQ(3)).GT.1000))) I2=4
46362         I3=3
46363         IF(I2.EQ.3) I3=2
46364         I4=10-I1-I2-I3
46365         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
46366         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
46367         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 720
46368  
46369 C...Closed string.
46370       ELSE
46371         IF(IABS(K(IC2,2)).NE.21) GOTO 1050
46372 C...No room for popcorn mesons in closed string -> 2 hadrons.
46373         MSTU(125)=0
46374   730   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
46375         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
46376         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
46377         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 730
46378       ENDIF
46379       P(N+2,5)=PYMASS(K(N+2,2))
46380       P(N+3,5)=PYMASS(K(N+3,2))
46381  
46382 C...If it does not work: try again (a number of times), give up (if no
46383 C...place to shuffle momentum or too many flavours), or form one hadron.
46384       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
46385         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
46386           GOTO 700
46387         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
46388           GOTO 1050
46389         ELSE
46390           GOTO 800
46391         END IF
46392       END IF
46393  
46394 C...Perform two-particle decay of jet system.
46395 C...First step: find reference axis in decaying system rest frame.
46396 C...(Borrow slot N+2 for temporary direction.)
46397       DO 740 J=1,4
46398         P(N+2,J)=P(IC1,J)
46399   740 CONTINUE
46400       DO 760 I=IC1+1,IC2-1
46401         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
46402      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46403           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
46404           DO 750 J=1,4
46405             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
46406   750     CONTINUE
46407         ENDIF
46408   760 CONTINUE
46409       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
46410      &-DPC(3)/DPC(4))
46411       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
46412       PHI1=PYANGL(P(N+2,1),P(N+2,2))
46413  
46414 C...Second step: generate isotropic/anisotropic decay.
46415       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
46416      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
46417   770 UE(3)=PYR(0)
46418       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
46419       PT2=(1D0-UE(3)**2)*PA**2
46420       IF(MSTJ(16).LE.0) THEN
46421         PREV=0.5D0
46422       ELSE
46423         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 770
46424         PR1=P(N+2,5)**2+PT2
46425         PR2=P(N+3,5)**2+PT2
46426         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
46427         PREVCF=PARJ(42)
46428         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
46429         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
46430       ENDIF
46431       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
46432       PHI=PARU(2)*PYR(0)
46433       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
46434       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
46435       DO 780 J=1,3
46436         P(N+2,J)=PA*UE(J)
46437         P(N+3,J)=-PA*UE(J)
46438   780 CONTINUE
46439       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
46440       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
46441  
46442 C...Third step: move back to event frame and set production vertex.
46443       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
46444      &DPC(3)/DPC(4))
46445       DO 790 J=1,4
46446         V(N+1,J)=V(IC1,J)
46447         V(N+2,J)=V(IC1,J)
46448         V(N+3,J)=V(IC2,J)
46449   790 CONTINUE
46450       N=N+3
46451       GOTO 1030
46452  
46453 C...Else form one particle, if possible.
46454   800 NBODY=1
46455       K(N+1,5)=N+2
46456       DO 810 J=1,4
46457         V(N+1,J)=V(IC1,J)
46458         V(N+2,J)=V(IC1,J)
46459   810 CONTINUE
46460  
46461 C...Select hadron flavour from available quark flavours.
46462   820 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
46463         GOTO 1050
46464       ELSEIF(NQ.EQ.2) THEN
46465         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
46466       ELSE
46467         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
46468         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
46469       ENDIF
46470       IF(K(N+2,2).EQ.0) GOTO 820
46471       P(N+2,5)=PYMASS(K(N+2,2))
46472  
46473 C...Use old algorithm for E/p conservation? (EN)
46474       IF (MSTJ(16).LE.0) GOTO 990
46475  
46476 C...Find the string piece closest to the cluster by a loop
46477 C...over the undecayed partons not in present cluster. (EN)
46478       DGLOMI=1D30
46479       IBEG=0
46480       I0=0
46481       NJUNC=0
46482       DO 850 I1=MAX(1,IP),N-1
46483         IF(K(I,1).EQ.1) NJUNC=0
46484         IF(K(I,1).EQ.41) NJUNC=NJUNC+1
46485         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
46486           I0=0
46487         ELSEIF(K(I1,1).EQ.2) THEN
46488           IF(I0.EQ.0) I0=I1
46489           I2=I1
46490   830     I2=I2+1
46491           IF(K(I2,1).EQ.41) GOTO 850
46492           IF(K(I2,1).GT.10) GOTO 830
46493           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 830
46494           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
46495      &    NJUNC.EQ.0) GOTO 850
46496           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 850
46497  
46498 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
46499           DO 840 J=1,3
46500             E1(J)=P(I1,J)/P(I1,4)
46501             E2(J)=P(I2,J)/P(I2,4)
46502             ECL(J)=P(N+1,J)/P(N+1,4)
46503             E3(J)=E2(J)-E1(J)
46504             E4(J)=ECL(J)-E1(J)
46505   840     CONTINUE
46506  
46507 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
46508           E3S=E3(1)**2+E3(2)**2+E3(3)**2
46509           E4S=E4(1)**2+E4(2)**2+E4(3)**2
46510           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
46511           IF(E34.LE.0D0) THEN
46512             DDMIN=E4S
46513           ELSEIF(E34.LT.E3S) THEN
46514             DDMIN=E4S-E34**2/E3S
46515           ELSE
46516             DDMIN=E4S-2D0*E34+E3S
46517           ENDIF
46518  
46519 C...Is this the smallest so far?
46520           IF(DDMIN.LT.DGLOMI) THEN
46521             DGLOMI=DDMIN
46522             IBEG=I0
46523             IPCS=I1
46524           ENDIF
46525         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
46526           I0=0
46527         ENDIF
46528   850 CONTINUE
46529  
46530 C... Check if there are any strings to connect to the new gluon. (EN)
46531       IF (IBEG.EQ.0) GOTO 990
46532  
46533 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
46534       IF (P(N+1,5).GE.P(N+2,5)) THEN
46535  
46536 C...Construct 'gluon' that is needed to put hadron on the mass shell.
46537         FRAC=P(N+2,5)/P(N+1,5)
46538         DO 860 J=1,5
46539           P(N+2,J)=FRAC*P(N+1,J)
46540           PG(J)=(1D0-FRAC)*P(N+1,J)
46541   860   CONTINUE
46542  
46543 C... Copy string with new gluon put in.
46544         N=N+2
46545         I=IBEG-1
46546   870   I=I+1
46547         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 870
46548         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 870
46549         N=N+1
46550         DO 880 J=1,5
46551           K(N,J)=K(I,J)
46552           P(N,J)=P(I,J)
46553           V(N,J)=V(I,J)
46554   880   CONTINUE
46555         K(I,1)=K(I,1)+10
46556         K(I,4)=N
46557         K(I,5)=N
46558         K(N,3)=I
46559         IF(I.EQ.IPCS) THEN
46560           N=N+1
46561           DO 890 J=1,5
46562             K(N,J)=K(N-1,J)
46563             P(N,J)=PG(J)
46564             V(N,J)=V(N-1,J)
46565   890     CONTINUE
46566           K(N,2)=21
46567           K(N,3)=NSAV+1
46568         ENDIF
46569         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 870
46570         GOTO 1030
46571  
46572 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
46573 C...from string piece endpoints.
46574       ELSE
46575  
46576 C...Begin by copying string that should give energy to cluster.
46577         N=N+2
46578         I=IBEG-1
46579   900   I=I+1
46580         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 900
46581         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 900
46582         N=N+1
46583         DO 910 J=1,5
46584           K(N,J)=K(I,J)
46585           P(N,J)=P(I,J)
46586           V(N,J)=V(I,J)
46587   910   CONTINUE
46588         K(I,1)=K(I,1)+10
46589         K(I,4)=N
46590         K(I,5)=N
46591         K(N,3)=I
46592         IF(I.EQ.IPCS) I1=N
46593         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 900
46594         I2=I1+1
46595  
46596 C...Set initial Phad.
46597         DO 920 J=1,4
46598           P(NSAV+2,J)=P(NSAV+1,J)
46599   920   CONTINUE
46600  
46601 C...Calculate Pg, a part of which will be added to Phad later. (EN)
46602   930   IF(MSTJ(16).EQ.1) THEN
46603           ALPHA=1D0
46604           BETA=1D0
46605         ELSE
46606           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
46607           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
46608         ENDIF
46609         DO 940 J=1,4
46610           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
46611   940   CONTINUE
46612         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
46613  
46614 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
46615         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
46616      &  P(NSAV+2,3)**2
46617         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
46618      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
46619         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
46620  
46621 C...If all gluon energy eaten, zero it and take a step back.
46622         ITER=0
46623         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3) THEN
46624           ITER=1
46625           DO 950 J=1,4
46626             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
46627             P(I1,J)=0D0
46628   950     CONTINUE
46629           P(I1,5)=0D0
46630           K(I1,1)=K(I1,1)+10
46631           I1=I1-1
46632           IF(K(I1,1).EQ.41) ITER=-1
46633         ENDIF
46634         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N) THEN
46635           ITER=1
46636           DO 960 J=1,4
46637             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
46638             P(I2,J)=0D0
46639   960     CONTINUE
46640           P(I2,5)=0D0
46641           K(I2,1)=K(I2,1)+10
46642           I2=I2+1
46643           IF(K(I2,1).EQ.41) ITER=-1
46644         ENDIF
46645         IF(ITER.EQ.1) GOTO 930
46646  
46647 C...If also all endpoint energy eaten, revert to old procedure.
46648         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
46649      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
46650           DO 970 I=NSAV+3,N
46651             IM=K(I,3)
46652             K(IM,1)=K(IM,1)-10
46653             K(IM,4)=0
46654             K(IM,5)=0
46655   970     CONTINUE
46656           N=NSAV
46657           GOTO 990
46658         ENDIF
46659  
46660 C... Construct the collapsed hadron and modified string partons.
46661         DO 980 J=1,4
46662           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
46663           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
46664           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
46665   980   CONTINUE
46666           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
46667           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
46668  
46669 C...Finished with string collapse in new scheme.
46670         GOTO 1030
46671       ENDIF
46672  
46673 C... Use old algorithm; by choice or when in trouble.
46674   990 CONTINUE
46675 C...Find parton/particle which combines to largest extra mass.
46676       IR=0
46677       HA=0D0
46678       HSM=0D0
46679       DO 1010 MCOMB=1,3
46680         IF(IR.NE.0) GOTO 1010
46681         DO 1000 I=MAX(1,IP),N
46682           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
46683      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1000
46684           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
46685           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1000
46686           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1000
46687           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
46688      &    GOTO 1000
46689           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
46690           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
46691           IF(HSR.GT.HSM) THEN
46692             IR=I
46693             HA=HCR
46694             HSM=HSR
46695           ENDIF
46696  1000   CONTINUE
46697  1010 CONTINUE
46698  
46699 C...Shuffle energy and momentum to put new particle on mass shell.
46700       IF(IR.NE.0) THEN
46701         HB=PECM**2+HA
46702         HC=P(N+2,5)**2+HA
46703         HD=P(IR,5)**2+HA
46704         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
46705      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
46706         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
46707         DO 1020 J=1,4
46708           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
46709           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
46710  1020   CONTINUE
46711         N=N+2
46712       ELSE
46713         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
46714         RETURN
46715       ENDIF
46716  
46717 C...Mark collapsed system and store daughter pointers. Iterate.
46718  1030 DO 1040 I=IC1,IC2
46719         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
46720      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46721           K(I,1)=K(I,1)+10
46722           IF(MSTU(16).NE.2) THEN
46723             K(I,4)=NSAV+1
46724             K(I,5)=NSAV+1
46725           ELSE
46726             K(I,4)=NSAV+2
46727             K(I,5)=NSAV+1+NBODY
46728           ENDIF
46729         ENDIF
46730         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
46731  1040 CONTINUE
46732       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 620
46733  
46734 C...Check flavours and invariant masses in parton systems.
46735  1050 NP=0
46736       KFN=0
46737       KQS=0
46738       NJU=0
46739       DO 1060 J=1,5
46740         DPS(J)=0D0
46741  1060 CONTINUE
46742       DO 1090 I=MAX(1,IP),N
46743         IF(K(I,1).EQ.41) NJU=NJU+1
46744         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1090
46745         KC=PYCOMP(K(I,2))
46746         IF(KC.EQ.0) GOTO 1090
46747         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
46748         IF(KQ.EQ.0) GOTO 1090
46749         NP=NP+1
46750         IF(KQ.NE.2) THEN
46751           KFN=KFN+1
46752           KQS=KQS+KQ
46753           MSTJ(93)=1
46754           DPS(5)=DPS(5)+PYMASS(K(I,2))
46755         ENDIF
46756         DO 1070 J=1,4
46757           DPS(J)=DPS(J)+P(I,J)
46758  1070   CONTINUE
46759         IF(K(I,1).EQ.1) THEN
46760           NFERR=0
46761           IF(NJU.EQ.0.AND.NP.NE.1) THEN
46762             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
46763           ELSEIF(NJU.EQ.1) THEN
46764             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
46765           ELSEIF(NJU.EQ.2) THEN
46766             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
46767           ELSEIF(NJU.GE.3) THEN
46768             NFERR=1
46769           ENDIF
46770           IF(NFERR.EQ.1) CALL
46771      &    PYERRM(2,'(PYPREP:) unphysical flavour combination')
46772           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
46773      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
46774      &    '(PYPREP:) too small mass in jet system')
46775           NP=0
46776           KFN=0
46777           KQS=0
46778           NJU=0
46779           DO 1080 J=1,5
46780             DPS(J)=0D0
46781  1080     CONTINUE
46782         ENDIF
46783  1090 CONTINUE
46784  
46785       RETURN
46786       END
46787  
46788 C*********************************************************************
46789  
46790 C...PYSTRF
46791 C...Handles the fragmentation of an arbitrary colour singlet
46792 C...jet system according to the Lund string fragmentation model.
46793  
46794       SUBROUTINE PYSTRF(IP)
46795  
46796 C...Double precision and integer declarations.
46797       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46798       IMPLICIT INTEGER(I-N)
46799       INTEGER PYK,PYCHGE,PYCOMP
46800 C...Commonblocks.
46801       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
46802       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46803       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46804       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
46805 C...Local arrays. All MOPS variables ends with MO
46806       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
46807      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
46808      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
46809      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
46810      &PBST(3,5),TJUOLD(5)
46811  
46812 C...Function: four-product of two vectors.
46813       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)
46814       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
46815      &DP(I,3)*DP(J,3)
46816  
46817 C...Reset counters.
46818       MSTJ(91)=0
46819       NSAV=N
46820       MSTU90=MSTU(90)
46821       NP=0
46822       KQSUM=0
46823       DO 100 J=1,5
46824         DPS(J)=0D0
46825   100 CONTINUE
46826       MJU(1)=0
46827       MJU(2)=0
46828       NTRYFN=0
46829       IJUORI(1)=0
46830       IJUORI(2)=0
46831  
46832 C...Identify parton system.
46833       I=IP-1
46834   110 I=I+1
46835       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
46836         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
46837         IF(MSTU(21).GE.1) RETURN
46838       ENDIF
46839       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
46840       KC=PYCOMP(K(I,2))
46841       IF(KC.EQ.0) GOTO 110
46842       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
46843       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
46844       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
46845         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
46846         IF(MSTU(21).GE.1) RETURN
46847       ENDIF
46848  
46849 C...Take copy of partons to be considered. Check flavour sum.
46850       NP=NP+1
46851       DO 120 J=1,5
46852         K(N+NP,J)=K(I,J)
46853         P(N+NP,J)=P(I,J)
46854         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
46855   120 CONTINUE
46856       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
46857       K(N+NP,3)=I
46858       IF(KQ.NE.2) KQSUM=KQSUM+KQ
46859       IF(K(I,1).EQ.41) THEN
46860         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
46861           MJU(1)=N+NP
46862           IJUORI(1)=I
46863         ELSE
46864           MJU(2)=N+NP
46865           IJUORI(2)=I
46866         ENDIF
46867       ENDIF
46868       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
46869       IF(MOD(KQSUM,3).NE.0) THEN
46870         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
46871         IF(MSTU(21).GE.1) RETURN
46872       ENDIF
46873       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
46874  
46875 C...Boost copied system to CM frame (for better numerical precision).
46876       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
46877         MBST=0
46878         MSTU(33)=1
46879         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
46880      &  -DPS(3)/DPS(4))
46881       ELSE
46882         MBST=1
46883         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
46884         DO 130 I=N+1,N+NP
46885           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
46886           IF(P(I,3).GT.0D0) THEN
46887             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
46888             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
46889             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
46890           ELSE
46891             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
46892             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
46893             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
46894           ENDIF
46895   130   CONTINUE
46896       ENDIF
46897  
46898 C...Search for very nearby partons that may be recombined.
46899       NTRYR=0
46900       NTRYWR=0
46901       PARU12=PARU(12)
46902       PARU13=PARU(13)
46903       MJU(3)=MJU(1)
46904       MJU(4)=MJU(2)
46905       NR=NP
46906   140 IF(NR.GE.3) THEN
46907         PDRMIN=2D0*PARU12
46908         DO 150 I=N+1,N+NR
46909           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
46910           I1=I+1
46911           IF(I.EQ.N+NR) I1=N+1
46912           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
46913           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
46914      &    GOTO 150
46915           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
46916      &    GOTO 150
46917           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
46918      &    P(I1,2)**2+P(I1,3)**2))
46919           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
46920           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
46921           IF(PDR.LT.PDRMIN) THEN
46922             IR=I
46923             PDRMIN=PDR
46924           ENDIF
46925   150   CONTINUE
46926  
46927 C...Recombine very nearby partons to avoid machine precision problems.
46928         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
46929           DO 160 J=1,4
46930             P(N+1,J)=P(N+1,J)+P(N+NR,J)
46931   160     CONTINUE
46932           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
46933      &    P(N+1,3)**2))
46934           NR=NR-1
46935           GOTO 140
46936         ELSEIF(PDRMIN.LT.PARU12) THEN
46937           DO 170 J=1,4
46938             P(IR,J)=P(IR,J)+P(IR+1,J)
46939   170     CONTINUE
46940           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
46941      &    P(IR,3)**2))
46942           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
46943           DO 190 I=IR+1,N+NR-1
46944             K(I,1)=K(I+1,1)
46945             K(I,2)=K(I+1,2)
46946             DO 180 J=1,5
46947               P(I,J)=P(I+1,J)
46948   180       CONTINUE
46949   190     CONTINUE
46950           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
46951           NR=NR-1
46952           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
46953           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
46954           GOTO 140
46955         ENDIF
46956       ENDIF
46957       NTRYR=NTRYR+1
46958  
46959 C...Reset particle counter. Skip ahead if no junctions are present;
46960 C...this is usually the case!
46961       NRS=MAX(5*NR+11,NP)
46962       NTRY=0
46963   200 NTRY=NTRY+1
46964       IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
46965         PARU12=4D0*PARU12
46966         PARU13=2D0*PARU13
46967         GOTO 140
46968       ELSEIF(NTRY.GT.100) THEN
46969         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
46970         IF(MSTU(21).GE.1) RETURN
46971       ENDIF
46972       I=N+NRS
46973       MSTU(90)=MSTU90
46974       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 640
46975       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
46976      &     ' junction strings not handled by MSTJ(12)>3 options')
46977       DO 630 JT=1,2
46978         NJS(JT)=0
46979         IF(MJU(JT).EQ.0) GOTO 630
46980         JS=3-2*JT
46981  
46982 C++SKANDS
46983 C...Find and sum up momentum on three sides of junction.
46984 C...Begin with previous boost = zero.
46985         IJRFIT=0
46986         DO 210 IX=1,3
46987           TJUOLD(IX)=0D0
46988   210   CONTINUE
46989         TJUOLD(4)=1D0
46990   220   IU=0
46991 C...Beginning and end of string system in event record.
46992         I1BEG=N+1+(JT-1)*(NR-1)
46993         I1END=N+NR+(JT-1)*(1-NR)
46994 C...Look for junction string piece end points
46995         DO 230 I1=I1BEG,I1END,JS
46996           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
46997 C...Store junction string piece end points.
46998 C                 1-junction systems        2-junction systems
46999 C           IU :  1     2     3   4     1     2   3     4   5     6
47000 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
47001             IU=IU+1
47002             IJU(IU)=I1
47003           ENDIF
47004 C...Sum over momenta, from junction outwards.
47005   230   CONTINUE
47006         DO 280 IU=1,3
47007           PWT=0D0
47008 C...Initialize junction drag and string piece 4-vectors.
47009           DO 240 J=1,5
47010             PBST(IU,J)=0D0
47011             PJU(IU,J)=0D0
47012   240     CONTINUE
47013 C...First two branches. Inwards out means opposite direction to JS.
47014 C...(JS is 1 for JT=1, -1 for JT=2)
47015           IF (IU.LT.3) THEN
47016             I1A=IJU(IU+1)-JS
47017             I1B=IJU(IU)
47018             IDIR=-JS
47019 C...Last branch (gq or gjgqgq). Direction now reversed.
47020           ELSE
47021             I1A=IJU(IU)+JS
47022             I1B=I1END
47023             IDIR=JS
47024           ENDIF
47025           DO 270 I1=I1A,I1B,IDIR
47026 C...Sum up momentum directions with exponential suppression
47027 C...for use in finding junction rest frame below.
47028             IF (K(I1,2).EQ.88) THEN
47029 C...gjgqgq type system encountered. Use current PWT as start
47030 C...for both strings.
47031               PWTOLD=PWT
47032             ELSE
47033               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
47034 C...Sum up string piece (boosted) 4-momenta.
47035               DO 250 J=1,4
47036                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
47037   250         CONTINUE
47038 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
47039 C...boost is zero, see above). Skip parton if suppression factor large.
47040               IF (PWT.GT.10D0) GOTO 270
47041 C...Compute momentum in current frame:
47042               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
47043               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
47044               DO 260 J=1,3
47045                 PTMP=P(I1,J)+TJUOLD(J)*BFC
47046                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
47047   260         CONTINUE
47048 C...Boosted energy
47049               PTMP=TJUOLD(4)*P(I1,4)+TDP
47050               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
47051               PWT=PWT+PTMP/PARJ(48)
47052             ENDIF
47053   270     CONTINUE
47054 C...Put |p| rather than m in 5th slot.
47055           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
47056           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
47057   280   CONTINUE
47058  
47059 C...Calculate boost from present frame to next JRF candidate.
47060         IJRFIT=IJRFIT+1
47061         CALL PYJURF(PBST,TJU)
47062  
47063 C...Combine new boost (TJU) with old boost (TJUOLD)
47064         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
47065         DO 290 IX=1,3
47066           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
47067   290   CONTINUE
47068         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
47069  
47070 C...If last boost small, accept JRF, else iterate.
47071 C...Also prevent possibility of infinite loop.
47072         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
47073      &  IJRFIT.LT.MSTJ(18)) THEN
47074           GOTO 220
47075         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
47076           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
47077         ENDIF
47078  
47079 C...Now store total boost in TJU and change perception.
47080 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
47081 C...TJU = junction motion vector in string CM, so the sign changes.
47082         DO 300 J=1,3
47083           TJU(J)=-TJUOLD(J)
47084   300   CONTINUE
47085         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
47086  
47087 C--SKANDS
47088  
47089 C...Calculate string piece energies in junction rest frame.
47090         DO 310 IU=1,3
47091           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
47092      &    TJU(3)*PJU(IU,3)
47093           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
47094      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
47095   310   CONTINUE
47096  
47097 C...Start preparing for fragmentation of two strings from junction.
47098         ISTA=I
47099         NTRYER=0
47100   320   NTRYER=NTRYER+1
47101         I=ISTA
47102         DO 610 IU=1,2
47103           NS=IABS(IJU(IU+1)-IJU(IU))
47104  
47105 C...Junction strings: find longitudinal string directions.
47106           DO 350 IS=1,NS
47107             IS1=IJU(IU)+JS*(IS-1)
47108             IS2=IJU(IU)+JS*IS
47109             DO 330 J=1,5
47110               DP(1,J)=0.5D0*P(IS1,J)
47111               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
47112               DP(2,J)=0.5D0*P(IS2,J)
47113               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
47114      &        (PJU(IU,5)/PBST(IU,5))
47115   330       CONTINUE
47116             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
47117      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
47118             DP(3,5)=DFOUR(1,1)
47119             DP(4,5)=DFOUR(2,2)
47120             DHKC=DFOUR(1,2)
47121             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
47122               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47123               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47124               DP(3,5)=0D0
47125               DP(4,5)=0D0
47126               DHKC=DFOUR(1,2)
47127             ENDIF
47128             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
47129             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
47130             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
47131             IN1=N+NR+4*IS-3
47132             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
47133             DO 340 J=1,4
47134               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
47135               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
47136   340       CONTINUE
47137   350     CONTINUE
47138  
47139 C...Junction strings: initialize flavour, momentum and starting pos.
47140           ISAV=I
47141           MSTU91=MSTU(90)
47142   360     NTRY=NTRY+1
47143           IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
47144             PARU12=4D0*PARU12
47145             PARU13=2D0*PARU13
47146             GOTO 140
47147           ELSEIF(NTRY.GT.100) THEN
47148             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
47149             IF(MSTU(21).GE.1) RETURN
47150           ENDIF
47151           I=ISAV
47152           MSTU(90)=MSTU91
47153           IRANKJ=0
47154           IE(1)=K(N+1+(JT/2)*(NP-1),3)
47155           IN(4)=N+NR+1
47156           IN(5)=IN(4)+1
47157           IN(6)=N+NR+4*NS+1
47158           DO 380 JQ=1,2
47159             DO 370 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
47160               P(IN1,1)=2-JQ
47161               P(IN1,2)=JQ-1
47162               P(IN1,3)=1D0
47163   370       CONTINUE
47164   380     CONTINUE
47165           KFL(1)=K(IJU(IU),2)
47166           PX(1)=0D0
47167           PY(1)=0D0
47168           GAM(1)=0D0
47169           DO 390 J=1,5
47170             PJU(IU+3,J)=0D0
47171   390     CONTINUE
47172  
47173 C...Junction strings: find initial transverse directions.
47174           DO 400 J=1,4
47175             DP(1,J)=P(IN(4),J)
47176             DP(2,J)=P(IN(4)+1,J)
47177             DP(3,J)=0D0
47178             DP(4,J)=0D0
47179   400     CONTINUE
47180           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47181           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47182           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47183           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47184           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47185           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47186           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47187           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47188           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47189           DHC12=DFOUR(1,2)
47190           DHCX1=DFOUR(3,1)/DHC12
47191           DHCX2=DFOUR(3,2)/DHC12
47192           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47193           DHCY1=DFOUR(4,1)/DHC12
47194           DHCY2=DFOUR(4,2)/DHC12
47195           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47196           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47197           DO 410 J=1,4
47198             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47199             P(IN(6),J)=DP(3,J)
47200             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47201      &      DHCYX*DP(3,J))
47202   410     CONTINUE
47203  
47204 C...Junction strings: produce new particle, origin.
47205   420     I=I+1
47206           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
47207             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
47208             IF(MSTU(21).GE.1) RETURN
47209           ENDIF
47210           IRANKJ=IRANKJ+1
47211           K(I,1)=1
47212           K(I,3)=IE(1)
47213           K(I,4)=0
47214           K(I,5)=0
47215  
47216 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
47217   430     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
47218           IF(K(I,2).EQ.0) GOTO 360
47219           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
47220      &    IABS(KFL(3)).GT.10) THEN
47221             IF(PYR(0).GT.PARJ(19)) GOTO 430
47222           ENDIF
47223           P(I,5)=PYMASS(K(I,2))
47224           CALL PYPTDI(KFL(1),PX(3),PY(3))
47225           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
47226           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
47227           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
47228      &    MSTU(90).LT.8) THEN
47229             MSTU(90)=MSTU(90)+1
47230             MSTU(90+MSTU(90))=I
47231             PARU(90+MSTU(90))=Z
47232           ENDIF
47233           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
47234           DO 440 J=1,3
47235             IN(J)=IN(3+J)
47236   440     CONTINUE
47237  
47238 C...Junction strings: stepping within 'low' string region.
47239           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
47240      &    P(IN(1),5)**2.GE.PR(1)) THEN
47241             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
47242             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
47243             DO 450 J=1,4
47244               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
47245   450       CONTINUE
47246             GOTO 550
47247 C...Has used up energy of junction string, i.e. no more hadrons in it.
47248           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
47249             DO 460 J=1,5
47250               P(I,J)=0D0
47251   460       CONTINUE
47252             GOTO 590
47253 C...Stepping from 'low' string region
47254           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
47255             P(IN(2)+2,4)=P(IN(2)+2,3)
47256             P(IN(2)+2,1)=1D0
47257             IN(2)=IN(2)+4
47258             IF(IN(2).GT.N+NR+4*NS) GOTO 360
47259             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47260               P(IN(1)+2,4)=P(IN(1)+2,3)
47261               P(IN(1)+2,1)=0D0
47262               IN(1)=IN(1)+4
47263             ENDIF
47264           ENDIF
47265  
47266 C...Junction strings: find new transverse directions.
47267   470     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
47268      &    IN(1).GT.IN(2)) GOTO 360
47269           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
47270             DO 480 J=1,4
47271               DP(1,J)=P(IN(1),J)
47272               DP(2,J)=P(IN(2),J)
47273               DP(3,J)=0D0
47274               DP(4,J)=0D0
47275   480       CONTINUE
47276             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47277             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47278             DHC12=DFOUR(1,2)
47279             IF(DHC12.LE.1D-2) THEN
47280               P(IN(1)+2,4)=P(IN(1)+2,3)
47281               P(IN(1)+2,1)=0D0
47282               IN(1)=IN(1)+4
47283               GOTO 470
47284             ENDIF
47285             IN(3)=N+NR+4*NS+5
47286             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47287             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47288             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47289             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47290             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47291             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47292             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47293             DHCX1=DFOUR(3,1)/DHC12
47294             DHCX2=DFOUR(3,2)/DHC12
47295             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47296             DHCY1=DFOUR(4,1)/DHC12
47297             DHCY2=DFOUR(4,2)/DHC12
47298             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47299             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47300             DO 490 J=1,4
47301               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47302               P(IN(3),J)=DP(3,J)
47303               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47304      &        DHCYX*DP(3,J))
47305   490       CONTINUE
47306 C...Express pT with respect to new axes, if sensible.
47307             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
47308             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
47309             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
47310               PX(3)=PXP
47311               PY(3)=PYP
47312             ENDIF
47313           ENDIF
47314  
47315 C...Junction strings: sum up known four-momentum, coefficients for m2.
47316           DO 520 J=1,4
47317             DHG(J)=0D0
47318             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
47319      &      PY(3)*P(IN(3)+1,J)
47320             DO 500 IN1=IN(4),IN(1)-4,4
47321               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
47322   500       CONTINUE
47323             DO 510 IN2=IN(5),IN(2)-4,4
47324               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
47325   510       CONTINUE
47326   520     CONTINUE
47327           DHM(1)=FOUR(I,I)
47328           DHM(2)=2D0*FOUR(I,IN(1))
47329           DHM(3)=2D0*FOUR(I,IN(2))
47330           DHM(4)=2D0*FOUR(IN(1),IN(2))
47331  
47332 C...Junction strings: find coefficients for Gamma expression.
47333           DO 540 IN2=IN(1)+1,IN(2),4
47334             DO 530 IN1=IN(1),IN2-1,4
47335               DHC=2D0*FOUR(IN1,IN2)
47336               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
47337               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
47338               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
47339               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
47340   530       CONTINUE
47341   540     CONTINUE
47342  
47343 C...Junction strings: solve (m2, Gamma) equation system for energies.
47344           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
47345           IF(ABS(DHS1).LT.1D-4) GOTO 360
47346           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
47347      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
47348           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
47349           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
47350      &    ABS(DHS1)-DHS2/DHS1)
47351           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
47352           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
47353      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
47354  
47355 C...Junction strings: step to new region if necessary.
47356           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
47357             P(IN(2)+2,4)=P(IN(2)+2,3)
47358             P(IN(2)+2,1)=1D0
47359             IN(2)=IN(2)+4
47360             IF(IN(2).GT.N+NR+4*NS) GOTO 360
47361             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47362               P(IN(1)+2,4)=P(IN(1)+2,3)
47363               P(IN(1)+2,1)=0D0
47364               IN(1)=IN(1)+4
47365             ENDIF
47366             GOTO 470
47367           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
47368             P(IN(1)+2,4)=P(IN(1)+2,3)
47369             P(IN(1)+2,1)=0D0
47370             IN(1)=IN(1)+4
47371             GOTO 470
47372           ENDIF
47373  
47374 C...Junction strings: particle four-momentum, remainder, loop back.
47375   550     DO 560 J=1,4
47376             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
47377      &      P(IN(2)+2,4)*P(IN(2),J)
47378             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
47379   560     CONTINUE
47380           IF(P(I,4).LT.P(I,5)) GOTO 360
47381           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
47382      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
47383           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
47384             KFL(1)=-KFL(3)
47385             PX(1)=-PX(3)
47386             PY(1)=-PY(3)
47387             GAM(1)=GAM(3)
47388             IF(IN(3).NE.IN(6)) THEN
47389               DO 570 J=1,4
47390                 P(IN(6),J)=P(IN(3),J)
47391                 P(IN(6)+1,J)=P(IN(3)+1,J)
47392   570         CONTINUE
47393             ENDIF
47394             DO 580 JQ=1,2
47395               IN(3+JQ)=IN(JQ)
47396               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
47397               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
47398   580       CONTINUE
47399             GOTO 420
47400           ENDIF
47401  
47402 C...Junction strings: save quantities left after each string.
47403           IF(IABS(KFL(1)).GT.10) GOTO 360
47404   590     I=I-1
47405           KFJH(IU)=KFL(1)
47406           DO 600 J=1,4
47407             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
47408   600     CONTINUE
47409  
47410 C...Junction strings: loopback if much unused energy in both strings.
47411           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
47412      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
47413           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
47414   610   CONTINUE
47415         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
47416      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
47417      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
47418      &  .AND.NTRYER.LT.10) GOTO 320
47419  
47420 C...Junction strings: put together to new effective string endpoint.
47421         NJS(JT)=I-ISTA
47422         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
47423         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
47424         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
47425      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
47426         DO 620 J=1,4
47427           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
47428           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
47429   620   CONTINUE
47430         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
47431      &  PJS(JT,3)**2))
47432         PJS(JT+2,5)=0D0
47433   630 CONTINUE
47434  
47435 C...Open versus closed strings. Choose breakup region for latter.
47436   640 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
47437         NS=MJU(2)-MJU(1)
47438         NB=MJU(1)-N
47439       ELSEIF(MJU(1).NE.0) THEN
47440         NS=N+NR-MJU(1)
47441         NB=MJU(1)-N
47442       ELSEIF(MJU(2).NE.0) THEN
47443         NS=MJU(2)-N
47444         NB=1
47445       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
47446         NS=NR-1
47447         NB=1
47448       ELSE
47449         NS=NR+1
47450         W2SUM=0D0
47451         DO 650 IS=1,NR
47452           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
47453           W2SUM=W2SUM+P(N+NR+IS,1)
47454   650   CONTINUE
47455         W2RAN=PYR(0)*W2SUM
47456         NB=0
47457   660   NB=NB+1
47458         W2SUM=W2SUM-P(N+NR+NB,1)
47459         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 660
47460       ENDIF
47461  
47462 C...Find longitudinal string directions (i.e. lightlike four-vectors).
47463       DO 690 IS=1,NS
47464         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
47465         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
47466         DO 670 J=1,5
47467           DP(1,J)=P(IS1,J)
47468           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
47469           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
47470           DP(2,J)=P(IS2,J)
47471           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
47472           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
47473   670   CONTINUE
47474         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
47475      &  DP(1,2)**2-DP(1,3)**2))
47476         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
47477      &  DP(2,2)**2-DP(2,3)**2))
47478         DP(3,5)=DFOUR(1,1)
47479         DP(4,5)=DFOUR(2,2)
47480         DHKC=DFOUR(1,2)
47481         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
47482         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
47483         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
47484         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
47485         IN1=N+NR+4*IS-3
47486         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
47487         DO 680 J=1,4
47488           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
47489           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
47490   680   CONTINUE
47491   690 CONTINUE
47492  
47493 C...Begin initialization: sum up energy, set starting position.
47494       ISAV=I
47495       MSTU91=MSTU(90)
47496   700 NTRY=NTRY+1
47497       IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
47498         PARU12=4D0*PARU12
47499         PARU13=2D0*PARU13
47500         GOTO 140
47501       ELSEIF(NTRY.GT.100) THEN
47502         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
47503         IF(MSTU(21).GE.1) RETURN
47504       ENDIF
47505       I=ISAV
47506       MSTU(90)=MSTU91
47507       DO 720 J=1,4
47508         P(N+NRS,J)=0D0
47509         DO 710 IS=1,NR
47510           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
47511   710   CONTINUE
47512   720 CONTINUE
47513       DO 740 JT=1,2
47514         IRANK(JT)=0
47515         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
47516         IF(NS.GT.NR) IRANK(JT)=1
47517         IBARRK(JT)=0
47518         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
47519         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
47520         IN(3*JT+2)=IN(3*JT+1)+1
47521         IN(3*JT+3)=N+NR+4*NS+2*JT-1
47522         DO 730 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
47523           P(IN1,1)=2-JT
47524           P(IN1,2)=JT-1
47525           P(IN1,3)=1D0
47526   730   CONTINUE
47527   740 CONTINUE
47528  
47529 C.. MOPS variables and switches
47530       NRVMO=0
47531       XBMO=1D0
47532       MSTU(121)=0
47533       MSTU(122)=0
47534  
47535 C...Initialize flavour and pT variables for open string.
47536       IF(NS.LT.NR) THEN
47537         PX(1)=0D0
47538         PY(1)=0D0
47539         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
47540         PX(2)=-PX(1)
47541         PY(2)=-PY(1)
47542         DO 750 JT=1,2
47543           KFL(JT)=K(IE(JT),2)
47544           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
47545           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
47546           MSTJ(93)=1
47547           PMQ(JT)=PYMASS(KFL(JT))
47548           GAM(JT)=0D0
47549   750   CONTINUE
47550  
47551 C...Closed string: random initial breakup flavour, pT and vertex.
47552       ELSE
47553         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
47554         IBMO=0
47555   760   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
47556 C.. Closed string: first vertex diq attempt => enforced second
47557 C.. vertex diq
47558         IF(IABS(KFL(1)).GT.10)THEN
47559            IBMO=1
47560            MSTU(121)=0
47561            GOTO 760
47562         ENDIF
47563         IF(IBMO.EQ.1) MSTU(121)=-1
47564         KFL(2)=-KFL(1)
47565         CALL PYPTDI(KFL(1),PX(1),PY(1))
47566         PX(2)=-PX(1)
47567         PY(2)=-PY(1)
47568         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
47569   770   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
47570         ZR=PR3/(Z*P(N+NR+1,5)**2)
47571         IF(ZR.GE.1D0) GOTO 770
47572         DO 780 JT=1,2
47573           MSTJ(93)=1
47574           PMQ(JT)=PYMASS(KFL(JT))
47575           GAM(JT)=PR3*(1D0-Z)/Z
47576           IN1=N+NR+3+4*(JT/2)*(NS-1)
47577           P(IN1,JT)=1D0-Z
47578           P(IN1,3-JT)=JT-1
47579           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
47580           P(IN1+1,JT)=ZR
47581           P(IN1+1,3-JT)=2-JT
47582           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
47583   780   CONTINUE
47584       ENDIF
47585 C.. MOPS variables
47586       DO 790 JT=1,2
47587          XTMO(JT)=1D0
47588          PM2QMO(JT)=PMQ(JT)**2
47589          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
47590   790 CONTINUE
47591  
47592 C...Find initial transverse directions (i.e. spacelike four-vectors).
47593       DO 830 JT=1,2
47594         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
47595           IN1=IN(3*JT+1)
47596           IN3=IN(3*JT+3)
47597           DO 800 J=1,4
47598             DP(1,J)=P(IN1,J)
47599             DP(2,J)=P(IN1+1,J)
47600             DP(3,J)=0D0
47601             DP(4,J)=0D0
47602   800     CONTINUE
47603           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47604           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47605           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47606           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47607           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47608           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47609           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47610           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47611           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47612           DHC12=DFOUR(1,2)
47613           DHCX1=DFOUR(3,1)/DHC12
47614           DHCX2=DFOUR(3,2)/DHC12
47615           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47616           DHCY1=DFOUR(4,1)/DHC12
47617           DHCY2=DFOUR(4,2)/DHC12
47618           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47619           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47620           DO 810 J=1,4
47621             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47622             P(IN3,J)=DP(3,J)
47623             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47624      &      DHCYX*DP(3,J))
47625   810     CONTINUE
47626         ELSE
47627           DO 820 J=1,4
47628             P(IN3+2,J)=P(IN3,J)
47629             P(IN3+3,J)=P(IN3+1,J)
47630   820     CONTINUE
47631         ENDIF
47632   830 CONTINUE
47633  
47634 C...Remove energy used up in junction string fragmentation.
47635       IF(MJU(1)+MJU(2).GT.0) THEN
47636         DO 850 JT=1,2
47637           IF(NJS(JT).EQ.0) GOTO 850
47638           DO 840 J=1,4
47639             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
47640   840     CONTINUE
47641   850   CONTINUE
47642         PARJST=PARJ(33)
47643         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
47644         WMIN=PARJST+PMQ(1)+PMQ(2)
47645         WREM2=FOUR(N+NRS,N+NRS)
47646         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
47647           NTRYWR=NTRYWR+1
47648           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
47649           GOTO 140
47650         ENDIF
47651       ENDIF
47652  
47653 C...Produce new particle: side, origin.
47654   860 I=I+1
47655       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
47656         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
47657         IF(MSTU(21).GE.1) RETURN
47658       ENDIF
47659 C.. New side priority for popcorn systems
47660       IF(MSTU(121).LE.0)THEN
47661          JT=1.5D0+PYR(0)
47662          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
47663          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
47664       ENDIF
47665       JR=3-JT
47666       JS=3-2*JT
47667       IRANK(JT)=IRANK(JT)+1
47668       K(I,1)=1
47669       K(I,4)=0
47670       K(I,5)=0
47671  
47672 C...Generate flavour, hadron and pT.
47673   870 K(I,3)=IE(JT)
47674       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
47675       IF(K(I,2).EQ.0) GOTO 700
47676       MU90MO=MSTU(90)
47677       IF(MSTU(121).EQ.-1) GOTO 900
47678       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
47679      &IABS(KFL(3)).GT.10) THEN
47680         IF(PYR(0).GT.PARJ(19)) GOTO 870
47681       ENDIF
47682       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47683      &K(I,3)=IJUORI(JT)
47684       P(I,5)=PYMASS(K(I,2))
47685       CALL PYPTDI(KFL(JT),PX(3),PY(3))
47686       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
47687  
47688 C...Final hadrons for small invariant mass.
47689       MSTJ(93)=1
47690       PMQ(3)=PYMASS(KFL(3))
47691       PARJST=PARJ(33)
47692       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
47693       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
47694       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
47695      &WMIN-0.5D0*PARJ(36)*PMQ(3)
47696       WREM2=FOUR(N+NRS,N+NRS)
47697       IF(WREM2.LT.0.10D0) GOTO 700
47698       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
47699      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1070
47700  
47701 C...Choose z, which gives Gamma. Shift z for heavy flavours.
47702       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
47703       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
47704      &MSTU(90).LT.8) THEN
47705         MSTU(90)=MSTU(90)+1
47706         MSTU(90+MSTU(90))=I
47707         PARU(90+MSTU(90))=Z
47708       ENDIF
47709       KFL1A=IABS(KFL(1))
47710       KFL2A=IABS(KFL(2))
47711       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
47712      &MOD(KFL2A/1000,10)).GE.4) THEN
47713         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47714         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
47715         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
47716         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47717         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1070
47718       ENDIF
47719       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
47720  
47721 C.. MOPS baryon model modification
47722       XTMO3=(1D0-Z)*XTMO(JT)
47723       IF(IABS(KFL(3)).LE.10) NRVMO=0
47724       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
47725          GTSTMO=1D0
47726          PTSTMO=1D0
47727          RTSTMO=PYR(0)
47728          IF(IABS(KFL(JT)).LE.10)THEN
47729             XBMO=MIN(XTMO3,1D0-(2D-10))
47730             GBMO=GAM(3)
47731             PMMO=0D0
47732             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
47733             GTSTMO=1D0-PARF(192)**PGMO
47734          ELSE
47735             IF(IRANK(JT).EQ.1) THEN
47736                GBMO=GAM(JT)
47737                PMMO=0D0
47738                XBMO=1D0
47739             ENDIF
47740             IF(XBMO.LT.1D0-(1D-10))THEN
47741                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
47742                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
47743                PGMO=PGNMO
47744             ENDIF
47745             IF(MSTJ(12).GE.5)THEN
47746                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
47747                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
47748                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
47749                PMMO=PMNMO
47750             ENDIF
47751          ENDIF
47752  
47753 C.. MOPS Accepting popcorn system hadron.
47754          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
47755             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
47756                NRVMO=I-N-NR
47757                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
47758                   CALL PYERRM(11,
47759      &                 '(PYSTRF:) no more memory left in PYJETS')
47760                   IF(MSTU(21).GE.1) RETURN
47761                ENDIF
47762                IMO=I
47763                KFLMO=KFL(JT)
47764                PMQMO=PMQ(JT)
47765                PXMO=PX(JT)
47766                PYMO=PY(JT)
47767                GAMMO=GAM(JT)
47768                IRMO=IRANK(JT)
47769                XMO=XTMO(JT)
47770                DO 890 J=1,9
47771                   IF(J.LE.5) THEN
47772                      DO 880 LINE=1,I-N-NR
47773                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
47774                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
47775   880                CONTINUE
47776                   ENDIF
47777                   INMO(J)=IN(J)
47778   890          CONTINUE
47779             ENDIF
47780          ELSE
47781 C..Reject popcorn system, flag=-1 if enforcing new one
47782             MSTU(121)=-1
47783             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
47784          ENDIF
47785       ENDIF
47786  
47787  
47788 C..Lift restoring string outside MOPS block
47789   900 IF(MSTU(121).LT.0) THEN
47790          IF(MSTU(121).EQ.-2) MSTU(121)=0
47791          MSTU(90)=MU90MO
47792          NRVMO=0
47793          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 870
47794          I=IMO
47795          KFL(JT)=KFLMO
47796          PMQ(JT)=PMQMO
47797          PX(JT)=PXMO
47798          PY(JT)=PYMO
47799          GAM(JT)=GAMMO
47800          IRANK(JT)=IRMO
47801          XTMO(JT)=XMO
47802          DO 920 J=1,9
47803             IF(J.LE.5) THEN
47804                DO 910 LINE=1,I-N-NR
47805                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
47806                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
47807   910          CONTINUE
47808             ENDIF
47809             IN(J)=INMO(J)
47810   920    CONTINUE
47811          GOTO 870
47812       ENDIF
47813       XTMO(JT)=XTMO3
47814 C.. MOPS end of modification
47815  
47816       DO 930 J=1,3
47817         IN(J)=IN(3*JT+J)
47818   930 CONTINUE
47819  
47820 C...Stepping within or from 'low' string region easy.
47821       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
47822      &P(IN(1),5)**2.GE.PR(JT)) THEN
47823         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
47824         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
47825         DO 940 J=1,4
47826           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
47827   940   CONTINUE
47828         GOTO 1030
47829       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
47830         P(IN(JR)+2,4)=P(IN(JR)+2,3)
47831         P(IN(JR)+2,JT)=1D0
47832         IN(JR)=IN(JR)+4*JS
47833         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 700
47834         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47835           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47836           P(IN(JT)+2,JT)=0D0
47837           IN(JT)=IN(JT)+4*JS
47838         ENDIF
47839       ENDIF
47840  
47841 C...Find new transverse directions (i.e. spacelike string vectors).
47842   950 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
47843      &IN(1).GT.IN(2)) GOTO 700
47844       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
47845         DO 960 J=1,4
47846           DP(1,J)=P(IN(1),J)
47847           DP(2,J)=P(IN(2),J)
47848           DP(3,J)=0D0
47849           DP(4,J)=0D0
47850   960   CONTINUE
47851         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47852         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47853         DHC12=DFOUR(1,2)
47854         IF(DHC12.LE.1D-2) THEN
47855           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47856           P(IN(JT)+2,JT)=0D0
47857           IN(JT)=IN(JT)+4*JS
47858           GOTO 950
47859         ENDIF
47860         IN(3)=N+NR+4*NS+5
47861         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47862         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47863         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47864         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47865         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47866         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47867         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47868         DHCX1=DFOUR(3,1)/DHC12
47869         DHCX2=DFOUR(3,2)/DHC12
47870         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47871         DHCY1=DFOUR(4,1)/DHC12
47872         DHCY2=DFOUR(4,2)/DHC12
47873         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47874         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47875         DO 970 J=1,4
47876           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47877           P(IN(3),J)=DP(3,J)
47878           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47879      &    DHCYX*DP(3,J))
47880   970   CONTINUE
47881 C...Express pT with respect to new axes, if sensible.
47882         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
47883      &  FOUR(IN(3*JT+3)+1,IN(3)))
47884         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
47885      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
47886         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
47887           PX(3)=PXP
47888           PY(3)=PYP
47889         ENDIF
47890       ENDIF
47891  
47892 C...Sum up known four-momentum. Gives coefficients for m2 expression.
47893       DO 1000 J=1,4
47894         DHG(J)=0D0
47895         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
47896      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
47897         DO 980 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
47898           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
47899   980   CONTINUE
47900         DO 990 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
47901           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
47902   990   CONTINUE
47903  1000 CONTINUE
47904       DHM(1)=FOUR(I,I)
47905       DHM(2)=2D0*FOUR(I,IN(1))
47906       DHM(3)=2D0*FOUR(I,IN(2))
47907       DHM(4)=2D0*FOUR(IN(1),IN(2))
47908  
47909 C...Find coefficients for Gamma expression.
47910       DO 1020 IN2=IN(1)+1,IN(2),4
47911         DO 1010 IN1=IN(1),IN2-1,4
47912           DHC=2D0*FOUR(IN1,IN2)
47913           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
47914           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
47915           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
47916           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
47917  1010   CONTINUE
47918  1020 CONTINUE
47919  
47920 C...Solve (m2, Gamma) equation system for energies taken.
47921       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
47922       IF(ABS(DHS1).LT.1D-4) GOTO 700
47923       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
47924      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
47925       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
47926       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
47927      &ABS(DHS1)-DHS2/DHS1)
47928       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 700
47929       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
47930      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
47931  
47932 C...Step to new region if necessary.
47933       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
47934         P(IN(JR)+2,4)=P(IN(JR)+2,3)
47935         P(IN(JR)+2,JT)=1D0
47936         IN(JR)=IN(JR)+4*JS
47937         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 700
47938         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47939           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47940           P(IN(JT)+2,JT)=0D0
47941           IN(JT)=IN(JT)+4*JS
47942         ENDIF
47943         GOTO 950
47944       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
47945         P(IN(JT)+2,4)=P(IN(JT)+2,3)
47946         P(IN(JT)+2,JT)=0D0
47947         IN(JT)=IN(JT)+4*JS
47948         GOTO 950
47949       ENDIF
47950  
47951 C...Four-momentum of particle. Remaining quantities. Loop back.
47952  1030 DO 1040 J=1,4
47953         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
47954         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
47955  1040 CONTINUE
47956       IF(P(I,4).LT.P(I,5)) GOTO 700
47957       KFL(JT)=-KFL(3)
47958       PMQ(JT)=PMQ(3)
47959       PX(JT)=-PX(3)
47960       PY(JT)=-PY(3)
47961       GAM(JT)=GAM(3)
47962       IF(IN(3).NE.IN(3*JT+3)) THEN
47963         DO 1050 J=1,4
47964           P(IN(3*JT+3),J)=P(IN(3),J)
47965           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
47966  1050   CONTINUE
47967       ENDIF
47968       DO 1060 JQ=1,2
47969         IN(3*JT+JQ)=IN(JQ)
47970         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
47971         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
47972  1060 CONTINUE
47973       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47974      &IBARRK(JT)=0
47975       GOTO 860
47976  
47977 C...Final hadron: side, flavour, hadron, mass.
47978  1070 I=I+1
47979       K(I,1)=1
47980       K(I,3)=IE(JR)
47981       K(I,4)=0
47982       K(I,5)=0
47983       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
47984       IF(K(I,2).EQ.0) GOTO 700
47985       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
47986      &IBARRK(JT)=0
47987       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47988      &K(I,3)=IJUORI(JT)
47989       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47990      &K(I,3)=IJUORI(JR)
47991       P(I,5)=PYMASS(K(I,2))
47992       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47993  
47994 C...Final two hadrons: find common setup of four-vectors.
47995       JQ=1
47996       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
47997      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
47998       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
47999       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
48000       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
48001       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
48002         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
48003         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
48004         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
48005      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
48006       ENDIF
48007  
48008 C...Solve kinematics for final two hadrons, if possible.
48009       WREM2=2D0*DHR1*DHR2*DHC12
48010       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
48011       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
48012       IF(FD.GE.1D0) GOTO 700
48013       FA=WREM2+PR(JT)-PR(JR)
48014       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
48015       PREVCF=PARJ(42)
48016       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
48017       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
48018       FB=SIGN(FB,JS*(PYR(0)-PREV))
48019       KFL1A=IABS(KFL(1))
48020       KFL2A=IABS(KFL(2))
48021       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
48022      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
48023      &4D0*WREM2*PR(JT))),DBLE(JS))
48024       DO 1080 J=1,4
48025         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
48026      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
48027      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
48028         P(I,J)=P(N+NRS,J)-P(I-1,J)
48029  1080 CONTINUE
48030       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 700
48031       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
48032       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
48033       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
48034         NTRYFN=NTRYFN+1
48035         IF(NTRYFN.LT.100) GOTO 140
48036         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
48037       ENDIF
48038  
48039 C...Mark jets as fragmented and give daughter pointers.
48040       N=I-NRS+1
48041       DO 1090 I=NSAV+1,NSAV+NP
48042         IM=K(I,3)
48043         K(IM,1)=K(IM,1)+10
48044         IF(MSTU(16).NE.2) THEN
48045           K(IM,4)=NSAV+1
48046           K(IM,5)=NSAV+1
48047         ELSE
48048           K(IM,4)=NSAV+2
48049           K(IM,5)=N
48050         ENDIF
48051  1090 CONTINUE
48052  
48053 C...Document string system. Move up particles.
48054       NSAV=NSAV+1
48055       K(NSAV,1)=11
48056       K(NSAV,2)=92
48057       K(NSAV,3)=IP
48058       K(NSAV,4)=NSAV+1
48059       K(NSAV,5)=N
48060       DO 1100 J=1,4
48061         P(NSAV,J)=DPS(J)
48062         V(NSAV,J)=V(IP,J)
48063  1100 CONTINUE
48064       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
48065       V(NSAV,5)=0D0
48066       DO 1120 I=NSAV+1,N
48067         DO 1110 J=1,5
48068           K(I,J)=K(I+NRS-1,J)
48069           P(I,J)=P(I+NRS-1,J)
48070           V(I,J)=0D0
48071  1110   CONTINUE
48072  1120 CONTINUE
48073       MSTU91=MSTU(90)
48074       DO 1130 IZ=MSTU90+1,MSTU91
48075         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
48076         PARU9T(IZ)=PARU(90+IZ)
48077  1130 CONTINUE
48078       MSTU(90)=MSTU90
48079  
48080 C...Order particles in rank along the chain. Update mother pointer.
48081       DO 1150 I=NSAV+1,N
48082         DO 1140 J=1,5
48083           K(I-NSAV+N,J)=K(I,J)
48084           P(I-NSAV+N,J)=P(I,J)
48085  1140   CONTINUE
48086  1150 CONTINUE
48087       I1=NSAV
48088       DO 1180 I=N+1,2*N-NSAV
48089         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1180
48090         I1=I1+1
48091         DO 1160 J=1,5
48092           K(I1,J)=K(I,J)
48093           P(I1,J)=P(I,J)
48094  1160   CONTINUE
48095         IF(MSTU(16).NE.2) K(I1,3)=NSAV
48096         DO 1170 IZ=MSTU90+1,MSTU91
48097           IF(MSTU9T(IZ).EQ.I) THEN
48098             MSTU(90)=MSTU(90)+1
48099             MSTU(90+MSTU(90))=I1
48100             PARU(90+MSTU(90))=PARU9T(IZ)
48101           ENDIF
48102  1170   CONTINUE
48103  1180 CONTINUE
48104       DO 1210 I=2*N-NSAV,N+1,-1
48105         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1210
48106         I1=I1+1
48107         DO 1190 J=1,5
48108           K(I1,J)=K(I,J)
48109           P(I1,J)=P(I,J)
48110  1190   CONTINUE
48111         IF(MSTU(16).NE.2) K(I1,3)=NSAV
48112         DO 1200 IZ=MSTU90+1,MSTU91
48113           IF(MSTU9T(IZ).EQ.I) THEN
48114             MSTU(90)=MSTU(90)+1
48115             MSTU(90+MSTU(90))=I1
48116             PARU(90+MSTU(90))=PARU9T(IZ)
48117           ENDIF
48118  1200   CONTINUE
48119  1210 CONTINUE
48120  
48121 C...Boost back particle system. Set production vertices.
48122       IF(MBST.EQ.0) THEN
48123         MSTU(33)=1
48124         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
48125      &  DPS(3)/DPS(4))
48126       ELSE
48127         DO 1220 I=NSAV+1,N
48128           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
48129           IF(P(I,3).GT.0D0) THEN
48130             HHPEZ=(P(I,4)+P(I,3))*HHBZ
48131             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
48132             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
48133           ELSE
48134             HHPEZ=(P(I,4)-P(I,3))/HHBZ
48135             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
48136             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
48137           ENDIF
48138  1220   CONTINUE
48139       ENDIF
48140       DO 1240 I=NSAV+1,N
48141         DO 1230 J=1,4
48142           V(I,J)=V(IP,J)
48143  1230   CONTINUE
48144  1240 CONTINUE
48145  
48146       RETURN
48147       END
48148  
48149 C*********************************************************************
48150  
48151 C...PYJURF
48152 C...From three given input vectors in PJU the boost VJU from
48153 C...the "lab frame" to the junction rest frame is constructed.
48154  
48155       SUBROUTINE PYJURF(PJU,VJU)
48156  
48157 C...Double precision and integer declarations.
48158       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48159       IMPLICIT INTEGER(I-N)
48160  
48161 C...Input, output and local arrays.
48162       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
48163       DATA TWOPI/6.283186D0/
48164  
48165 C...Calculate masses and other invariants.
48166       DO 100 J=1,4
48167         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
48168   100 CONTINUE
48169       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
48170       PSUM(5)=SQRT(PSUM2)
48171       DO 120 I=1,3
48172         DO 110 J=1,3
48173           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
48174      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
48175   110   CONTINUE
48176   120 CONTINUE
48177  
48178 C...Pick I to be most massive parton and J to be the one closest to I.
48179       ITRY=0
48180       I=1
48181       IF(A(2,2).GT.A(1,1)) I=2
48182       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
48183   130 ITRY=ITRY+1
48184       J=1+MOD(I,3)
48185       K=1+MOD(J,3)
48186       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
48187         K=1+MOD(I,3)
48188         J=1+MOD(K,3)
48189       ENDIF
48190       PMI2=A(I,I)
48191       PMJ2=A(J,J)
48192       PMK2=A(K,K)
48193       AIJ=A(I,J)
48194       AIK=A(I,K)
48195       AJK=A(J,K)
48196  
48197 C...Trivial find new parton energies if all three partons are massless.
48198       IF(PMI2.LT.1D-4) THEN
48199         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
48200         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
48201         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
48202  
48203 C...Else find momentum range for parton I and values at extremes.
48204       ELSE
48205         PAIMIN=0D0
48206         PEIMIN=SQRT(PMI2)
48207         PEJMIN=AIJ/PEIMIN
48208         PEKMIN=AIK/PEIMIN
48209         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
48210         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
48211         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
48212         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
48213         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
48214         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
48215         HI=PEIMAX**2-0.25D0*PAIMAX**2
48216         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
48217      &  0.5D0*PAIMAX*AIJ)/HI
48218         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
48219      &  0.5D0*PAIMAX*AIK)/HI
48220         PEJMAX=SQRT(PAJMAX**2+PMJ2)
48221         PEKMAX=SQRT(PAKMAX**2+PMK2)
48222         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
48223  
48224 C...If unexpected values at upper endpoint then pick another parton.
48225         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
48226           I1=1+MOD(I,3)
48227           IF(A(I1,I1).GE.1D-4) THEN
48228             I=I1
48229             GOTO 130
48230           ENDIF
48231           ITRY=ITRY+1
48232           I1=1+MOD(I,3)
48233           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
48234             I=I1
48235             GOTO 130
48236           ENDIF
48237         ENDIF
48238  
48239 C..Start binary + linear search to find solution inside range.
48240         ITER=0
48241         ITMIN=0
48242         ITMAX=0
48243         PAI=0.5D0*(PAIMIN+PAIMAX)
48244   140   ITER=ITER+1
48245  
48246 C...Derive momentum of other two partons and distance to root.
48247         PEI=SQRT(PAI**2+PMI2)
48248         HI=PEI**2-0.25D0*PAI**2
48249         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
48250         PEJ=SQRT(PAJ**2+PMJ2)
48251         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
48252         PEK=SQRT(PAK**2+PMK2)
48253         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
48254  
48255 C...Pick next I momentum to explore, hopefully closer to root.
48256         IF(FNOW.GT.0D0) THEN
48257           PAIMIN=PAI
48258           FMIN=FNOW
48259           ITMIN=ITMIN+1
48260         ELSE
48261           PAIMAX=PAI
48262           FMAX=FNOW
48263           ITMAX=ITMAX+1
48264         ENDIF
48265         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
48266      &  THEN
48267           PAI=0.5D0*(PAIMIN+PAIMAX)
48268           GOTO 140
48269         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
48270      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
48271           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
48272           GOTO 140
48273         ENDIF
48274       ENDIF
48275  
48276 C...Now know energies in junction rest frame.
48277       PENEW(I)=PEI
48278       PENEW(J)=PEJ
48279       PENEW(K)=PEK
48280  
48281 C...Boost (copy of) partons to their rest frame.
48282       VXCM=-PSUM(1)/PSUM(5)
48283       VYCM=-PSUM(2)/PSUM(5)
48284       VZCM=-PSUM(3)/PSUM(5)
48285       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
48286       DO 150 I=1,3
48287         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
48288         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
48289         PCM(I,1)=PJU(I,1)+FAC2*VXCM
48290         PCM(I,2)=PJU(I,2)+FAC2*VYCM
48291         PCM(I,3)=PJU(I,3)+FAC2*VZCM
48292         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
48293         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
48294   150 CONTINUE
48295  
48296 C...Construct difference vectors and boost to junction rest frame.
48297       DO 160 J=1,3
48298         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
48299         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
48300   160 CONTINUE
48301       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
48302       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
48303       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
48304       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
48305       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
48306       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
48307       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
48308       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
48309       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
48310       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
48311       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
48312  
48313 C...Add two boosts, giving final result.
48314       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
48315       VJU(1)=VXJU+FCM*VXCM
48316       VJU(2)=VYJU+FCM*VYCM
48317       VJU(3)=VZJU+FCM*VZCM
48318       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
48319       VJU(5)=1D0
48320  
48321 C...In case of error in reconstruction: revert to CM frame of system.
48322       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
48323      &(PCM(1,5)*PCM(2,5))
48324       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
48325      &(PCM(1,5)*PCM(3,5))
48326       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
48327      &(PCM(2,5)*PCM(3,5))
48328       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
48329       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
48330       DO 170 I=1,3
48331         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
48332         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
48333         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
48334         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
48335         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
48336         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
48337         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
48338   170 CONTINUE
48339       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
48340      &(PCM(1,5)*PCM(2,5))
48341       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
48342      &(PCM(1,5)*PCM(3,5))
48343       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
48344      &(PCM(2,5)*PCM(3,5))
48345       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
48346       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
48347       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
48348         VJU(1)=VXCM
48349         VJU(2)=VYCM
48350         VJU(3)=VZCM
48351         VJU(4)=GAMCM
48352       ENDIF
48353  
48354       RETURN
48355       END
48356  
48357 C*********************************************************************
48358  
48359 C...PYINDF
48360 C...Handles the fragmentation of a jet system (or a single
48361 C...jet) according to independent fragmentation models.
48362  
48363       SUBROUTINE PYINDF(IP)
48364  
48365 C...Double precision and integer declarations.
48366       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48367       IMPLICIT INTEGER(I-N)
48368       INTEGER PYK,PYCHGE,PYCOMP
48369 C...Commonblocks.
48370       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
48371       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48372       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48373       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
48374 C...Local arrays.
48375       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
48376      &KFLO(2),PXO(2),PYO(2),WO(2)
48377  
48378 C.. MOPS error message
48379       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
48380      &' are not treated as expected in independent fragmentation')
48381  
48382 C...Reset counters. Identify parton system and take copy. Check flavour.
48383       NSAV=N
48384       MSTU90=MSTU(90)
48385       NJET=0
48386       KQSUM=0
48387       DO 100 J=1,5
48388         DPS(J)=0D0
48389   100 CONTINUE
48390       I=IP-1
48391   110 I=I+1
48392       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
48393         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
48394         IF(MSTU(21).GE.1) RETURN
48395       ENDIF
48396       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
48397       KC=PYCOMP(K(I,2))
48398       IF(KC.EQ.0) GOTO 110
48399       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
48400       IF(KQ.EQ.0) GOTO 110
48401       NJET=NJET+1
48402       IF(KQ.NE.2) KQSUM=KQSUM+KQ
48403       DO 120 J=1,5
48404         K(NSAV+NJET,J)=K(I,J)
48405         P(NSAV+NJET,J)=P(I,J)
48406         DPS(J)=DPS(J)+P(I,J)
48407   120 CONTINUE
48408       K(NSAV+NJET,3)=I
48409       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
48410      &K(I+1,1).EQ.2)) GOTO 110
48411       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
48412         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
48413         IF(MSTU(21).GE.1) RETURN
48414       ENDIF
48415  
48416 C...Boost copied system to CM frame. Find CM energy and sum flavours.
48417       IF(NJET.NE.1) THEN
48418         MSTU(33)=1
48419         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
48420      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
48421       ENDIF
48422       PECM=0D0
48423       DO 130 J=1,3
48424         NFI(J)=0
48425   130 CONTINUE
48426       DO 140 I=NSAV+1,NSAV+NJET
48427         PECM=PECM+P(I,4)
48428         KFA=IABS(K(I,2))
48429         IF(KFA.LE.3) THEN
48430           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
48431         ELSEIF(KFA.GT.1000) THEN
48432           KFLA=MOD(KFA/1000,10)
48433           KFLB=MOD(KFA/100,10)
48434           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
48435           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
48436         ENDIF
48437   140 CONTINUE
48438  
48439 C...Loop over attempts made. Reset counters.
48440       NTRY=0
48441   150 NTRY=NTRY+1
48442       IF(NTRY.GT.200) THEN
48443         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
48444         IF(MSTU(21).GE.1) RETURN
48445       ENDIF
48446       N=NSAV+NJET
48447       MSTU(90)=MSTU90
48448       DO 160 J=1,3
48449         NFL(J)=NFI(J)
48450         IFET(J)=0
48451         KFLF(J)=0
48452   160 CONTINUE
48453  
48454 C...Loop over jets to be fragmented.
48455       DO 230 IP1=NSAV+1,NSAV+NJET
48456         MSTJ(91)=0
48457         NSAV1=N
48458         MSTU91=MSTU(90)
48459  
48460 C...Initial flavour and momentum values. Jet along +z axis.
48461         KFLH=IABS(K(IP1,2))
48462         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
48463         KFLO(2)=0
48464         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
48465  
48466 C...Initial values for quark or diquark jet.
48467   170   IF(IABS(K(IP1,2)).NE.21) THEN
48468           NSTR=1
48469           KFLO(1)=K(IP1,2)
48470           CALL PYPTDI(0,PXO(1),PYO(1))
48471           WO(1)=WF
48472  
48473 C...Initial values for gluon treated like random quark jet.
48474         ELSEIF(MSTJ(2).LE.2) THEN
48475           NSTR=1
48476           IF(MSTJ(2).EQ.2) MSTJ(91)=1
48477           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
48478           CALL PYPTDI(0,PXO(1),PYO(1))
48479           WO(1)=WF
48480  
48481 C...Initial values for gluon treated like quark-antiquark jet pair,
48482 C...sharing energy according to Altarelli-Parisi splitting function.
48483         ELSE
48484           NSTR=2
48485           IF(MSTJ(2).EQ.4) MSTJ(91)=1
48486           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
48487           KFLO(2)=-KFLO(1)
48488           CALL PYPTDI(0,PXO(1),PYO(1))
48489           PXO(2)=-PXO(1)
48490           PYO(2)=-PYO(1)
48491           WO(1)=WF*PYR(0)**(1D0/3D0)
48492           WO(2)=WF-WO(1)
48493         ENDIF
48494  
48495 C...Initial values for rank, flavour, pT and W+.
48496         DO 220 ISTR=1,NSTR
48497   180     I=N
48498           MSTU(90)=MSTU91
48499           IRANK=0
48500           KFL1=KFLO(ISTR)
48501           PX1=PXO(ISTR)
48502           PY1=PYO(ISTR)
48503           W=WO(ISTR)
48504  
48505 C...New hadron. Generate flavour and hadron species.
48506   190     I=I+1
48507           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
48508             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
48509             IF(MSTU(21).GE.1) RETURN
48510           ENDIF
48511           IRANK=IRANK+1
48512           K(I,1)=1
48513           K(I,3)=IP1
48514           K(I,4)=0
48515           K(I,5)=0
48516   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
48517           IF(K(I,2).EQ.0) GOTO 180
48518           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
48519             IF(PYR(0).GT.PARJ(19)) GOTO 200
48520           ENDIF
48521  
48522 C...Find hadron mass. Generate four-momentum.
48523           P(I,5)=PYMASS(K(I,2))
48524           CALL PYPTDI(KFL1,PX2,PY2)
48525           P(I,1)=PX1+PX2
48526           P(I,2)=PY1+PY2
48527           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
48528           CALL PYZDIS(KFL1,KFL2,PR,Z)
48529           MZSAV=0
48530           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
48531             MZSAV=1
48532             MSTU(90)=MSTU(90)+1
48533             MSTU(90+MSTU(90))=I
48534             PARU(90+MSTU(90))=Z
48535           ENDIF
48536           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
48537           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
48538           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
48539      &    P(I,3).LE.0.001D0) THEN
48540             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
48541             P(I,3)=0.0001D0
48542             P(I,4)=SQRT(PR)
48543             Z=P(I,4)/W
48544           ENDIF
48545  
48546 C...Remaining flavour and momentum.
48547           KFL1=-KFL2
48548           PX1=-PX2
48549           PY1=-PY2
48550           W=(1D0-Z)*W
48551           DO 210 J=1,5
48552             V(I,J)=0D0
48553   210     CONTINUE
48554  
48555 C...Check if pL acceptable. Go back for new hadron if enough energy.
48556           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
48557             I=I-1
48558             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
48559           ENDIF
48560           IF(W.GT.PARJ(31)) GOTO 190
48561           N=I
48562   220   CONTINUE
48563         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
48564         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
48565  
48566 C...Rotate jet to new direction.
48567         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
48568         PHI=PYANGL(P(IP1,1),P(IP1,2))
48569         MSTU(33)=1
48570         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
48571         K(K(IP1,3),4)=NSAV1+1
48572         K(K(IP1,3),5)=N
48573  
48574 C...End of jet generation loop. Skip conservation in some cases.
48575   230 CONTINUE
48576       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
48577       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
48578  
48579 C...Subtract off produced hadron flavours, finished if zero.
48580       DO 240 I=NSAV+NJET+1,N
48581         KFA=IABS(K(I,2))
48582         KFLA=MOD(KFA/1000,10)
48583         KFLB=MOD(KFA/100,10)
48584         KFLC=MOD(KFA/10,10)
48585         IF(KFLA.EQ.0) THEN
48586           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
48587           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
48588         ELSE
48589           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
48590           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
48591           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
48592         ENDIF
48593   240 CONTINUE
48594       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48595      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48596       IF(NREQ.EQ.0) GOTO 320
48597  
48598 C...Take away flavour of low-momentum particles until enough freedom.
48599       NREM=0
48600   250 IREM=0
48601       P2MIN=PECM**2
48602       DO 260 I=NSAV+NJET+1,N
48603         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
48604         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
48605         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
48606   260 CONTINUE
48607       IF(IREM.EQ.0) GOTO 150
48608       K(IREM,1)=7
48609       KFA=IABS(K(IREM,2))
48610       KFLA=MOD(KFA/1000,10)
48611       KFLB=MOD(KFA/100,10)
48612       KFLC=MOD(KFA/10,10)
48613       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
48614       IF(K(IREM,1).EQ.8) GOTO 250
48615       IF(KFLA.EQ.0) THEN
48616         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
48617         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
48618         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
48619       ELSE
48620         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
48621         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
48622         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
48623       ENDIF
48624       NREM=NREM+1
48625       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48626      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48627       IF(NREQ.GT.NREM) GOTO 250
48628       DO 270 I=NSAV+NJET+1,N
48629         IF(K(I,1).EQ.8) K(I,1)=1
48630   270 CONTINUE
48631  
48632 C...Find combination of existing and new flavours for hadron.
48633   280 NFET=2
48634       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
48635       IF(NREQ.LT.NREM) NFET=1
48636       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
48637       DO 290 J=1,NFET
48638         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
48639         KFLF(J)=ISIGN(1,NFL(1))
48640         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
48641         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
48642   290 CONTINUE
48643       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
48644      &GOTO 280
48645       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
48646      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
48647      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
48648       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
48649       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
48650       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
48651       IF(NFET.LE.2) KFLF(3)=0
48652       IF(KFLF(3).NE.0) THEN
48653         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
48654      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
48655         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
48656      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
48657       ELSE
48658         KFLFC=KFLF(1)
48659       ENDIF
48660       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
48661       IF(KF.EQ.0) GOTO 280
48662       DO 300 J=1,MAX(2,NFET)
48663         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
48664   300 CONTINUE
48665  
48666 C...Store hadron at random among free positions.
48667       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
48668       DO 310 I=NSAV+NJET+1,N
48669         IF(K(I,1).EQ.7) NPOS=NPOS-1
48670         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
48671         K(I,1)=1
48672         K(I,2)=KF
48673         P(I,5)=PYMASS(K(I,2))
48674         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48675   310 CONTINUE
48676       NREM=NREM-1
48677       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48678      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48679       IF(NREM.GT.0) GOTO 280
48680  
48681 C...Compensate for missing momentum in global scheme (3 options).
48682   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
48683         DO 340 J=1,3
48684           PSI(J)=0D0
48685           DO 330 I=NSAV+NJET+1,N
48686             PSI(J)=PSI(J)+P(I,J)
48687   330     CONTINUE
48688   340   CONTINUE
48689         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
48690         PWS=0D0
48691         DO 350 I=NSAV+NJET+1,N
48692           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
48693           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
48694      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
48695           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
48696   350   CONTINUE
48697         DO 370 I=NSAV+NJET+1,N
48698           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
48699           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
48700      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
48701           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
48702           DO 360 J=1,3
48703             P(I,J)=P(I,J)-PSI(J)*PW/PWS
48704   360     CONTINUE
48705           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48706   370   CONTINUE
48707  
48708 C...Compensate for missing momentum withing each jet separately.
48709       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
48710         DO 390 I=N+1,N+NJET
48711           K(I,1)=0
48712           DO 380 J=1,5
48713             P(I,J)=0D0
48714   380     CONTINUE
48715   390   CONTINUE
48716         DO 410 I=NSAV+NJET+1,N
48717           IR1=K(I,3)
48718           IR2=N+IR1-NSAV
48719           K(IR2,1)=K(IR2,1)+1
48720           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
48721      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
48722           DO 400 J=1,3
48723             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
48724   400     CONTINUE
48725           P(IR2,4)=P(IR2,4)+P(I,4)
48726           P(IR2,5)=P(IR2,5)+PLS
48727   410   CONTINUE
48728         PSS=0D0
48729         DO 420 I=N+1,N+NJET
48730           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
48731   420   CONTINUE
48732         DO 440 I=NSAV+NJET+1,N
48733           IR1=K(I,3)
48734           IR2=N+IR1-NSAV
48735           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
48736      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
48737           DO 430 J=1,3
48738             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
48739      &      PLS*P(IR1,J)
48740   430     CONTINUE
48741           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48742   440   CONTINUE
48743       ENDIF
48744  
48745 C...Scale momenta for energy conservation.
48746       IF(MOD(MSTJ(3),5).NE.0) THEN
48747         PMS=0D0
48748         PES=0D0
48749         PQS=0D0
48750         DO 450 I=NSAV+NJET+1,N
48751           PMS=PMS+P(I,5)
48752           PES=PES+P(I,4)
48753           PQS=PQS+P(I,5)**2/P(I,4)
48754   450   CONTINUE
48755         IF(PMS.GE.PECM) GOTO 150
48756         NECO=0
48757   460   NECO=NECO+1
48758         PFAC=(PECM-PQS)/(PES-PQS)
48759         PES=0D0
48760         PQS=0D0
48761         DO 480 I=NSAV+NJET+1,N
48762           DO 470 J=1,3
48763             P(I,J)=PFAC*P(I,J)
48764   470     CONTINUE
48765           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48766           PES=PES+P(I,4)
48767           PQS=PQS+P(I,5)**2/P(I,4)
48768   480   CONTINUE
48769         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
48770       ENDIF
48771  
48772 C...Origin of produced particles and parton daughter pointers.
48773   490 DO 500 I=NSAV+NJET+1,N
48774         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
48775         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
48776   500 CONTINUE
48777       DO 510 I=NSAV+1,NSAV+NJET
48778         I1=K(I,3)
48779         K(I1,1)=K(I1,1)+10
48780         IF(MSTU(16).NE.2) THEN
48781           K(I1,4)=NSAV+1
48782           K(I1,5)=NSAV+1
48783         ELSE
48784           K(I1,4)=K(I1,4)-NJET+1
48785           K(I1,5)=K(I1,5)-NJET+1
48786           IF(K(I1,5).LT.K(I1,4)) THEN
48787             K(I1,4)=0
48788             K(I1,5)=0
48789           ENDIF
48790         ENDIF
48791   510 CONTINUE
48792  
48793 C...Document independent fragmentation system. Remove copy of jets.
48794       NSAV=NSAV+1
48795       K(NSAV,1)=11
48796       K(NSAV,2)=93
48797       K(NSAV,3)=IP
48798       K(NSAV,4)=NSAV+1
48799       K(NSAV,5)=N-NJET+1
48800       DO 520 J=1,4
48801         P(NSAV,J)=DPS(J)
48802         V(NSAV,J)=V(IP,J)
48803   520 CONTINUE
48804       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
48805       V(NSAV,5)=0D0
48806       DO 540 I=NSAV+NJET,N
48807         DO 530 J=1,5
48808           K(I-NJET+1,J)=K(I,J)
48809           P(I-NJET+1,J)=P(I,J)
48810           V(I-NJET+1,J)=V(I,J)
48811   530   CONTINUE
48812   540 CONTINUE
48813       N=N-NJET+1
48814       DO 550 IZ=MSTU90+1,MSTU(90)
48815         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
48816   550 CONTINUE
48817  
48818 C...Boost back particle system. Set production vertices.
48819       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
48820      &DPS(2)/DPS(4),DPS(3)/DPS(4))
48821       DO 570 I=NSAV+1,N
48822         DO 560 J=1,4
48823           V(I,J)=V(IP,J)
48824   560   CONTINUE
48825   570 CONTINUE
48826  
48827       RETURN
48828       END
48829  
48830 C*********************************************************************
48831  
48832 C...PYDECY
48833 C...Handles the decay of unstable particles.
48834  
48835       SUBROUTINE PYDECY(IP)
48836  
48837 C...Double precision and integer declarations.
48838       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48839       IMPLICIT INTEGER(I-N)
48840       INTEGER PYK,PYCHGE,PYCOMP
48841 C...Commonblocks.
48842       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
48843       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48844       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48845       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
48846       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
48847 C...Local arrays.
48848       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
48849      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
48850       CHARACTER CIDC*4
48851       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
48852  
48853 C...Functions: momentum in two-particle decays and four-product.
48854       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
48855       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)
48856  
48857 C...Initial values.
48858       NTRY=0
48859       NSAV=N
48860       KFA=IABS(K(IP,2))
48861       KFS=ISIGN(1,K(IP,2))
48862       KC=PYCOMP(KFA)
48863       MSTJ(92)=0
48864  
48865 C...Choose lifetime and determine decay vertex.
48866       IF(K(IP,1).EQ.5) THEN
48867         V(IP,5)=0D0
48868       ELSEIF(K(IP,1).NE.4) THEN
48869         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
48870       ENDIF
48871       DO 100 J=1,4
48872         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
48873   100 CONTINUE
48874  
48875 C...Determine whether decay allowed or not.
48876       MOUT=0
48877       IF(MSTJ(22).EQ.2) THEN
48878         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
48879       ELSEIF(MSTJ(22).EQ.3) THEN
48880         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
48881       ELSEIF(MSTJ(22).EQ.4) THEN
48882         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
48883         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
48884       ENDIF
48885       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
48886         K(IP,1)=4
48887         RETURN
48888       ENDIF
48889  
48890 C...Interface to external tau decay library (for tau polarization).
48891       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
48892  
48893 C...Starting values for pointers and momenta.
48894         ITAU=IP
48895         DO 110 J=1,4
48896           PTAU(J)=P(ITAU,J)
48897           PCMTAU(J)=P(ITAU,J)
48898   110   CONTINUE
48899  
48900 C...Iterate to find position and code of mother of tau.
48901         IMTAU=ITAU
48902   120   IMTAU=K(IMTAU,3)
48903  
48904         IF(IMTAU.EQ.0) THEN
48905 C...If no known origin then impossible to do anything further.
48906           KFORIG=0
48907           IORIG=0
48908  
48909         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
48910 C...If tau -> tau + gamma then add gamma energy and loop.
48911           IF(K(K(IMTAU,4),2).EQ.22) THEN
48912             DO 130 J=1,4
48913               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
48914   130       CONTINUE
48915           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
48916             DO 140 J=1,4
48917               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
48918   140       CONTINUE
48919           ENDIF
48920           GOTO 120
48921  
48922         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
48923 C...If coming from weak decay of hadron then W is not stored in record,
48924 C...but can be reconstructed by adding neutrino momentum.
48925           KFORIG=-ISIGN(24,K(ITAU,2))
48926           IORIG=0
48927           DO 160 II=K(IMTAU,4),K(IMTAU,5)
48928             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
48929               DO 150 J=1,4
48930                 PCMTAU(J)=PCMTAU(J)+P(II,J)
48931   150         CONTINUE
48932             ENDIF
48933   160     CONTINUE
48934  
48935         ELSE
48936 C...If coming from resonance decay then find latest copy of this
48937 C...resonance (may not completely agree).
48938           KFORIG=K(IMTAU,2)
48939           IORIG=IMTAU
48940           DO 170 II=IMTAU+1,IP-1
48941             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
48942      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
48943   170     CONTINUE
48944           DO 180 J=1,4
48945             PCMTAU(J)=P(IORIG,J)
48946   180     CONTINUE
48947         ENDIF
48948  
48949 C...Boost tau to rest frame of production process (where known)
48950 C...and rotate it to sit along +z axis.
48951         DO 190 J=1,3
48952           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
48953   190   CONTINUE
48954         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
48955      &  -DBETAU(2),-DBETAU(3))
48956         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
48957         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
48958         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
48959         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
48960  
48961 C...Call tau decay routine (if meaningful) and fill extra info.
48962         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
48963           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
48964           DO 200 II=NSAV+1,NSAV+NDECAY
48965             K(II,1)=1
48966             K(II,3)=IP
48967             K(II,4)=0
48968             K(II,5)=0
48969   200     CONTINUE
48970           N=NSAV+NDECAY
48971         ENDIF
48972  
48973 C...Boost back decay tau and decay products.
48974         DO 210 J=1,4
48975           P(ITAU,J)=PTAU(J)
48976   210   CONTINUE
48977         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
48978           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
48979           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
48980      &    DBETAU(2),DBETAU(3))
48981  
48982 C...Skip past ordinary tau decay treatment.
48983           MMAT=0
48984           MBST=0
48985           ND=0
48986           GOTO 630
48987         ENDIF
48988       ENDIF
48989  
48990 C...B-Bbar mixing: flip sign of meson appropriately.
48991       MMIX=0
48992       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
48993         XBBMIX=PARJ(76)
48994         IF(KFA.EQ.531) XBBMIX=PARJ(77)
48995         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
48996         IF(MMIX.EQ.1) KFS=-KFS
48997       ENDIF
48998  
48999 C...Check existence of decay channels. Particle/antiparticle rules.
49000       KCA=KC
49001       IF(MDCY(KC,2).GT.0) THEN
49002         MDMDCY=MDME(MDCY(KC,2),2)
49003         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
49004       ENDIF
49005       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
49006         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
49007         RETURN
49008       ENDIF
49009       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
49010       IF(KCHG(KC,3).EQ.0) THEN
49011         KFSP=1
49012         KFSN=0
49013         IF(PYR(0).GT.0.5D0) KFS=-KFS
49014       ELSEIF(KFS.GT.0) THEN
49015         KFSP=1
49016         KFSN=0
49017       ELSE
49018         KFSP=0
49019         KFSN=1
49020       ENDIF
49021  
49022 C...Sum branching ratios of allowed decay channels.
49023   220 NOPE=0
49024       BRSU=0D0
49025       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
49026         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
49027      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
49028         IF(MDME(IDL,2).GT.100) GOTO 230
49029         NOPE=NOPE+1
49030         BRSU=BRSU+BRAT(IDL)
49031   230 CONTINUE
49032       IF(NOPE.EQ.0) THEN
49033         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
49034         RETURN
49035       ENDIF
49036  
49037 C...Select decay channel among allowed ones.
49038   240 RBR=BRSU*PYR(0)
49039       IDL=MDCY(KCA,2)-1
49040   250 IDL=IDL+1
49041       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
49042      &KFSN*MDME(IDL,1).NE.3) THEN
49043         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
49044       ELSEIF(MDME(IDL,2).GT.100) THEN
49045         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
49046       ELSE
49047         IDC=IDL
49048         RBR=RBR-BRAT(IDL)
49049         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
49050       ENDIF
49051  
49052 C...Start readout of decay channel: matrix element, reset counters.
49053       MMAT=MDME(IDC,2)
49054   260 NTRY=NTRY+1
49055       IF(MOD(NTRY,200).EQ.0) THEN
49056         WRITE(CIDC,'(I4)') IDC
49057 C...Do not print warning for some well-known special cases.
49058         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
49059      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
49060      &  CIDC)
49061         GOTO 240
49062       ENDIF
49063       IF(NTRY.GT.1000) THEN
49064         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
49065         IF(MSTU(21).GE.1) RETURN
49066       ENDIF
49067       I=N
49068       NP=0
49069       NQ=0
49070       MBST=0
49071       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
49072       DO 270 J=1,4
49073         PV(1,J)=0D0
49074         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
49075   270 CONTINUE
49076       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
49077       PV(1,5)=P(IP,5)
49078       PS=0D0
49079       PSQ=0D0
49080       MREM=0
49081       MHADDY=0
49082       IF(KFA.GT.80) MHADDY=1
49083 C.. Random flavour and popcorn system memory.
49084       IRNDMO=0
49085       JTMO=0
49086       MSTU(121)=0
49087       MSTU(125)=10
49088  
49089 C...Read out decay products. Convert to standard flavour code.
49090       JTMAX=5
49091       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
49092       DO 280 JT=1,JTMAX
49093         IF(JT.LE.5) KP=KFDP(IDC,JT)
49094         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
49095         IF(KP.EQ.0) GOTO 280
49096         KPA=IABS(KP)
49097         KCP=PYCOMP(KPA)
49098         IF(KPA.GT.80) MHADDY=1
49099         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
49100           KFP=KP
49101         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
49102           KFP=KFS*KP
49103         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
49104           KFP=-KFS*MOD(KFA/10,10)
49105         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
49106           KFP=KFS*(100*MOD(KFA/10,100)+3)
49107         ELSEIF(KPA.EQ.81) THEN
49108           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
49109         ELSEIF(KP.EQ.82) THEN
49110           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
49111           IF(KFP.EQ.0) GOTO 260
49112           KFP=-KFP
49113           IRNDMO=1
49114           MSTJ(93)=1
49115           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
49116         ELSEIF(KP.EQ.-82) THEN
49117           KFP=MSTU(124)
49118         ENDIF
49119         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
49120  
49121 C...Add decay product to event record or to quark flavour list.
49122         KFPA=IABS(KFP)
49123         KQP=KCHG(KCP,2)
49124         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
49125           NQ=NQ+1
49126           KFLO(NQ)=KFP
49127 C...set rndmflav popcorn system pointer
49128           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
49129           MSTJ(93)=2
49130           PSQ=PSQ+PYMASS(KFLO(NQ))
49131         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
49132      &    MOD(NQ,2).EQ.1) THEN
49133           NQ=NQ-1
49134           PS=PS-P(I,5)
49135           K(I,1)=1
49136           KFI=K(I,2)
49137           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
49138           IF(K(I,2).EQ.0) GOTO 260
49139           MSTJ(93)=1
49140           P(I,5)=PYMASS(K(I,2))
49141           PS=PS+P(I,5)
49142         ELSE
49143           I=I+1
49144           NP=NP+1
49145           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
49146           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
49147           K(I,1)=1+MOD(NQ,2)
49148           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
49149           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
49150           K(I,2)=KFP
49151           K(I,3)=IP
49152           K(I,4)=0
49153           K(I,5)=0
49154           P(I,5)=PYMASS(KFP)
49155           PS=PS+P(I,5)
49156         ENDIF
49157   280 CONTINUE
49158  
49159 C...Check masses for resonance decays.
49160       IF(MHADDY.EQ.0) THEN
49161         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
49162       ENDIF
49163  
49164 C...Choose decay multiplicity in phase space model.
49165   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
49166         PSP=PS
49167         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
49168         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
49169   300   NTRY=NTRY+1
49170 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
49171         IF(IRNDMO.EQ.0) THEN
49172            MSTU(121)=0
49173            JTMO=0
49174         ELSEIF(IRNDMO.EQ.1) THEN
49175            IRNDMO=2
49176         ELSE
49177            GOTO 260
49178         ENDIF
49179         IF(NTRY.GT.1000) THEN
49180           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
49181           IF(MSTU(21).GE.1) RETURN
49182         ENDIF
49183         IF(MMAT.LE.20) THEN
49184           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
49185      &    SIN(PARU(2)*PYR(0))
49186           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
49187           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
49188           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
49189           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
49190           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
49191         ELSE
49192           ND=MMAT-20
49193         ENDIF
49194 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
49195         MSTU(125)=ND-NQ/2
49196         IF(MSTU(121).GT.MSTU(125)) GOTO 300
49197  
49198 C...Form hadrons from flavour content.
49199         DO 310 JT=1,NQ
49200           KFL1(JT)=KFLO(JT)
49201   310   CONTINUE
49202         IF(ND.EQ.NP+NQ/2) GOTO 330
49203         DO 320 I=N+NP+1,N+ND-NQ/2
49204 C.. Stick to started popcorn system, else pick side at random
49205           JT=JTMO
49206           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
49207           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
49208           IF(K(I,2).EQ.0) GOTO 300
49209           MSTU(125)=MSTU(125)-1
49210           JTMO=0
49211           IF(MSTU(121).GT.0) JTMO=JT
49212           KFL1(JT)=-KFL2
49213   320   CONTINUE
49214   330   JT=2
49215         JT2=3
49216         JT3=4
49217         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
49218         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
49219      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
49220         IF(JT.EQ.3) JT2=2
49221         IF(JT.EQ.4) JT3=2
49222         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
49223         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
49224         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
49225         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
49226  
49227 C...Check that sum of decay product masses not too large.
49228         PS=PSP
49229         DO 340 I=N+NP+1,N+ND
49230           K(I,1)=1
49231           K(I,3)=IP
49232           K(I,4)=0
49233           K(I,5)=0
49234           P(I,5)=PYMASS(K(I,2))
49235           PS=PS+P(I,5)
49236   340   CONTINUE
49237         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
49238  
49239 C...Rescale energy to subtract off spectator quark mass.
49240       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
49241      &  .AND.NP.GE.3) THEN
49242         PS=PS-P(N+NP,5)
49243         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
49244         DO 350 J=1,5
49245           P(N+NP,J)=PQT*PV(1,J)
49246           PV(1,J)=(1D0-PQT)*PV(1,J)
49247   350   CONTINUE
49248         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
49249         ND=NP-1
49250         MREM=1
49251  
49252 C...Fully specified final state: check mass broadening effects.
49253       ELSE
49254         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
49255         ND=NP
49256       ENDIF
49257  
49258 C...Determine position of grandmother, number of sisters.
49259       NM=0
49260       KFAS=0
49261       MSGN=0
49262       IF(MMAT.EQ.3) THEN
49263         IM=K(IP,3)
49264         IF(IM.LT.0.OR.IM.GE.IP) IM=0
49265         IF(IM.NE.0) KFAM=IABS(K(IM,2))
49266         IF(IM.NE.0) THEN
49267           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
49268             IF(K(IL,3).EQ.IM) NM=NM+1
49269             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
49270   360     CONTINUE
49271           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
49272      &    MOD(KFAM/1000,10).NE.0) NM=0
49273           IF(NM.EQ.2) THEN
49274             KFAS=IABS(K(ISIS,2))
49275             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
49276      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
49277           ENDIF
49278         ENDIF
49279       ENDIF
49280  
49281 C...Kinematics of one-particle decays.
49282       IF(ND.EQ.1) THEN
49283         DO 370 J=1,4
49284           P(N+1,J)=P(IP,J)
49285   370   CONTINUE
49286         GOTO 630
49287       ENDIF
49288  
49289 C...Calculate maximum weight ND-particle decay.
49290       PV(ND,5)=P(N+ND,5)
49291       IF(ND.GE.3) THEN
49292         WTMAX=1D0/WTCOR(ND-2)
49293         PMAX=PV(1,5)-PS+P(N+ND,5)
49294         PMIN=0D0
49295         DO 380 IL=ND-1,1,-1
49296           PMAX=PMAX+P(N+IL,5)
49297           PMIN=PMIN+P(N+IL+1,5)
49298           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
49299   380   CONTINUE
49300       ENDIF
49301  
49302 C...Find virtual gamma mass in Dalitz decay.
49303   390 IF(ND.EQ.2) THEN
49304       ELSEIF(MMAT.EQ.2) THEN
49305         PMES=4D0*PMAS(11,1)**2
49306         PMRHO2=PMAS(131,1)**2
49307         PGRHO2=PMAS(131,2)**2
49308   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
49309         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
49310      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
49311      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
49312         IF(WT.LT.PYR(0)) GOTO 400
49313         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
49314  
49315 C...M-generator gives weight. If rejected, try again.
49316       ELSE
49317   410   RORD(1)=1D0
49318         DO 440 IL1=2,ND-1
49319           RSAV=PYR(0)
49320           DO 420 IL2=IL1-1,1,-1
49321             IF(RSAV.LE.RORD(IL2)) GOTO 430
49322             RORD(IL2+1)=RORD(IL2)
49323   420     CONTINUE
49324   430     RORD(IL2+1)=RSAV
49325   440   CONTINUE
49326         RORD(ND)=0D0
49327         WT=1D0
49328         DO 450 IL=ND-1,1,-1
49329           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
49330      &    (PV(1,5)-PS)
49331           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
49332   450   CONTINUE
49333         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
49334       ENDIF
49335  
49336 C...Perform two-particle decays in respective CM frame.
49337   460 DO 480 IL=1,ND-1
49338         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
49339         UE(3)=2D0*PYR(0)-1D0
49340         PHI=PARU(2)*PYR(0)
49341         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
49342         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
49343         DO 470 J=1,3
49344           P(N+IL,J)=PA*UE(J)
49345           PV(IL+1,J)=-PA*UE(J)
49346   470   CONTINUE
49347         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
49348         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
49349   480 CONTINUE
49350  
49351 C...Lorentz transform decay products to lab frame.
49352       DO 490 J=1,4
49353         P(N+ND,J)=PV(ND,J)
49354   490 CONTINUE
49355       DO 530 IL=ND-1,1,-1
49356         DO 500 J=1,3
49357           BE(J)=PV(IL,J)/PV(IL,4)
49358   500   CONTINUE
49359         GA=PV(IL,4)/PV(IL,5)
49360         DO 520 I=N+IL,N+ND
49361           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
49362           DO 510 J=1,3
49363             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
49364   510     CONTINUE
49365           P(I,4)=GA*(P(I,4)+BEP)
49366   520   CONTINUE
49367   530 CONTINUE
49368  
49369 C...Check that no infinite loop in matrix element weight.
49370       NTRY=NTRY+1
49371       IF(NTRY.GT.800) GOTO 560
49372  
49373 C...Matrix elements for omega and phi decays.
49374       IF(MMAT.EQ.1) THEN
49375         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
49376      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
49377      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
49378         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
49379  
49380 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
49381       ELSEIF(MMAT.EQ.2) THEN
49382         FOUR12=FOUR(N+1,N+2)
49383         FOUR13=FOUR(N+1,N+3)
49384         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
49385      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
49386         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
49387  
49388 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
49389 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
49390 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
49391       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
49392         FOUR10=FOUR(IP,IM)
49393         FOUR12=FOUR(IP,N+1)
49394         FOUR02=FOUR(IM,N+1)
49395         PMS1=P(IP,5)**2
49396         PMS0=P(IM,5)**2
49397         PMS2=P(N+1,5)**2
49398         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
49399         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
49400      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
49401         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
49402         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
49403         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
49404  
49405 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
49406       ELSEIF(MMAT.EQ.4) THEN
49407         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
49408         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
49409         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
49410         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
49411      &  ((1D0-HX3)/(HX1*HX2))**2
49412         IF(WT.LT.2D0*PYR(0)) GOTO 390
49413         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
49414      &  GOTO 390
49415  
49416 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
49417       ELSEIF(MMAT.EQ.41) THEN
49418         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
49419         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
49420         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
49421  
49422 C...Matrix elements for weak decays (only semileptonic for c and b)
49423       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
49424      &  .AND.ND.EQ.3) THEN
49425         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
49426         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
49427         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
49428       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
49429         DO 550 J=1,4
49430           P(N+NP+1,J)=0D0
49431           DO 540 IS=N+3,N+NP
49432             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
49433   540     CONTINUE
49434   550   CONTINUE
49435         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
49436         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
49437         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
49438       ENDIF
49439  
49440 C...Scale back energy and reattach spectator.
49441   560 IF(MREM.EQ.1) THEN
49442         DO 570 J=1,5
49443           PV(1,J)=PV(1,J)/(1D0-PQT)
49444   570   CONTINUE
49445         ND=ND+1
49446         MREM=0
49447       ENDIF
49448  
49449 C...Low invariant mass for system with spectator quark gives particle,
49450 C...not two jets. Readjust momenta accordingly.
49451       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
49452         MSTJ(93)=1
49453         PM2=PYMASS(K(N+2,2))
49454         MSTJ(93)=1
49455         PM3=PYMASS(K(N+3,2))
49456         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
49457      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
49458         K(N+2,1)=1
49459         KFTEMP=K(N+2,2)
49460         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
49461         IF(K(N+2,2).EQ.0) GOTO 260
49462         P(N+2,5)=PYMASS(K(N+2,2))
49463         PS=P(N+1,5)+P(N+2,5)
49464         PV(2,5)=P(N+2,5)
49465         MMAT=0
49466         ND=2
49467         GOTO 460
49468       ELSEIF(MMAT.EQ.44) THEN
49469         MSTJ(93)=1
49470         PM3=PYMASS(K(N+3,2))
49471         MSTJ(93)=1
49472         PM4=PYMASS(K(N+4,2))
49473         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
49474      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
49475         K(N+3,1)=1
49476         KFTEMP=K(N+3,2)
49477         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
49478         IF(K(N+3,2).EQ.0) GOTO 260
49479         P(N+3,5)=PYMASS(K(N+3,2))
49480         DO 580 J=1,3
49481           P(N+3,J)=P(N+3,J)+P(N+4,J)
49482   580   CONTINUE
49483         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)
49484         HA=P(N+1,4)**2-P(N+2,4)**2
49485         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
49486         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
49487      &  (P(N+1,3)-P(N+2,3))**2
49488         HD=(PV(1,4)-P(N+3,4))**2
49489         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
49490         HF=HD*HC-HB**2
49491         HG=HD*HC-HA*HB
49492         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
49493         DO 590 J=1,3
49494           PCOR=HH*(P(N+1,J)-P(N+2,J))
49495           P(N+1,J)=P(N+1,J)+PCOR
49496           P(N+2,J)=P(N+2,J)-PCOR
49497   590   CONTINUE
49498         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)
49499         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)
49500         ND=ND-1
49501       ENDIF
49502  
49503 C...Check invariant mass of W jets. May give one particle or start over.
49504   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
49505      &.AND.IABS(K(N+1,2)).LT.10) THEN
49506         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
49507         MSTJ(93)=1
49508         PM1=PYMASS(K(N+1,2))
49509         MSTJ(93)=1
49510         PM2=PYMASS(K(N+2,2))
49511         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
49512         KFLDUM=INT(1.5D0+PYR(0))
49513         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
49514         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
49515         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
49516         PSM=PYMASS(KF1)+PYMASS(KF2)
49517         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
49518         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
49519         IF(MMAT.EQ.48) GOTO 390
49520         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
49521         K(N+1,1)=1
49522         KFTEMP=K(N+1,2)
49523         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
49524         IF(K(N+1,2).EQ.0) GOTO 260
49525         P(N+1,5)=PYMASS(K(N+1,2))
49526         K(N+2,2)=K(N+3,2)
49527         P(N+2,5)=P(N+3,5)
49528         PS=P(N+1,5)+P(N+2,5)
49529         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
49530         PV(2,5)=P(N+3,5)
49531         MMAT=0
49532         ND=2
49533         GOTO 460
49534       ENDIF
49535  
49536 C...Phase space decay of partons from W decay.
49537   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
49538         KFLO(1)=K(N+1,2)
49539         KFLO(2)=K(N+2,2)
49540         K(N+1,1)=K(N+3,1)
49541         K(N+1,2)=K(N+3,2)
49542         DO 620 J=1,5
49543           PV(1,J)=P(N+1,J)+P(N+2,J)
49544           P(N+1,J)=P(N+3,J)
49545   620   CONTINUE
49546         PV(1,5)=PMR
49547         N=N+1
49548         NP=0
49549         NQ=2
49550         PS=0D0
49551         MSTJ(93)=2
49552         PSQ=PYMASS(KFLO(1))
49553         MSTJ(93)=2
49554         PSQ=PSQ+PYMASS(KFLO(2))
49555         MMAT=11
49556         GOTO 290
49557       ENDIF
49558  
49559 C...Boost back for rapidly moving particle.
49560   630 N=N+ND
49561       IF(MBST.EQ.1) THEN
49562         DO 640 J=1,3
49563           BE(J)=P(IP,J)/P(IP,4)
49564   640   CONTINUE
49565         GA=P(IP,4)/P(IP,5)
49566         DO 660 I=NSAV+1,N
49567           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
49568           DO 650 J=1,3
49569             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
49570   650     CONTINUE
49571           P(I,4)=GA*(P(I,4)+BEP)
49572   660   CONTINUE
49573       ENDIF
49574  
49575 C...Fill in position of decay vertex.
49576       DO 680 I=NSAV+1,N
49577         DO 670 J=1,4
49578           V(I,J)=VDCY(J)
49579   670   CONTINUE
49580         V(I,5)=0D0
49581   680 CONTINUE
49582  
49583 C...Set up for parton shower evolution from jets.
49584       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
49585         K(NSAV+1,1)=3
49586         K(NSAV+2,1)=3
49587         K(NSAV+3,1)=3
49588         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
49589         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
49590         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
49591         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
49592         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
49593         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
49594         MSTJ(92)=-(NSAV+1)
49595       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
49596         K(NSAV+2,1)=3
49597         K(NSAV+3,1)=3
49598         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
49599         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
49600         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
49601         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
49602         MSTJ(92)=NSAV+2
49603       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
49604      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
49605         K(NSAV+1,1)=3
49606         K(NSAV+2,1)=3
49607         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
49608         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
49609         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
49610         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
49611         MSTJ(92)=NSAV+1
49612       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
49613      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
49614         MSTJ(92)=NSAV+1
49615       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
49616      &  THEN
49617         K(NSAV+1,1)=3
49618         K(NSAV+2,1)=3
49619         K(NSAV+3,1)=3
49620         KCP=PYCOMP(K(NSAV+1,2))
49621         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
49622         JCON=4
49623         IF(KQP.LT.0) JCON=5
49624         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
49625         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
49626         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
49627         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
49628         MSTJ(92)=NSAV+1
49629       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
49630         K(NSAV+1,1)=3
49631         K(NSAV+3,1)=3
49632         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
49633         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
49634         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
49635         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
49636         MSTJ(92)=NSAV+1
49637       ENDIF
49638  
49639 C...Mark decayed particle; special option for B-Bbar mixing.
49640       IF(K(IP,1).EQ.5) K(IP,1)=15
49641       IF(K(IP,1).LE.10) K(IP,1)=11
49642       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
49643       K(IP,4)=NSAV+1
49644       K(IP,5)=N
49645  
49646       RETURN
49647       END
49648  
49649  
49650 C*********************************************************************
49651  
49652 C...PYDCYK
49653 C...Handles flavour production in the decay of unstable particles
49654 C...and small string clusters.
49655  
49656       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
49657  
49658 C...Double precision and integer declarations.
49659       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49660       IMPLICIT INTEGER(I-N)
49661       INTEGER PYK,PYCHGE,PYCOMP
49662 C...Commonblocks.
49663       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49664       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49665       SAVE /PYDAT1/,/PYDAT2/
49666  
49667  
49668 C.. Call PYKFDI directly if no popcorn option is on
49669       IF(MSTJ(12).LT.2) THEN
49670          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
49671          MSTU(124)=KFL3
49672          RETURN
49673       ENDIF
49674  
49675       KFL3=0
49676       KF=0
49677       IF(KFL1.EQ.0) RETURN
49678       KF1A=IABS(KFL1)
49679       KF2A=IABS(KFL2)
49680  
49681       NSTO=130
49682       NMAX=MIN(MSTU(125),10)
49683  
49684 C.. Identify rank 0 cluster qq
49685       IRANK=1
49686       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
49687  
49688       IF(KF2A.GT.0)THEN
49689 C.. Join jets: Fails if store not empty
49690          IF(MSTU(121).GT.0) THEN
49691             MSTU(121)=0
49692             RETURN
49693          ENDIF
49694          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
49695       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
49696 C.. Pick popcorn meson from store, return same qq, decrease store
49697          KF=MSTU(NSTO+MSTU(121))
49698          KFL3=-KFL1
49699          MSTU(121)=MSTU(121)-1
49700       ELSE
49701 C.. Generate new flavour. Then done if no diquark is generated
49702   100    CALL PYKFDI(KFL1,0,KFL3,KF)
49703          IF(MSTU(121).EQ.-1) GOTO 100
49704          MSTU(124)=KFL3
49705          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
49706  
49707 C.. Simple case if no dynamical popcorn suppressions are considered
49708          IF(MSTJ(12).LT.4) THEN
49709             IF(MSTU(121).EQ.0) RETURN
49710             NMES=1
49711             KFPREV=-KFL3
49712             CALL PYKFDI(KFPREV,0,KFL3,KFM)
49713 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
49714             IF(IABS(KFL3).LE.10)THEN
49715                KFL3=-KFPREV
49716                RETURN
49717             ENDIF
49718             GOTO 120
49719          ENDIF
49720  
49721 C test output qq against fake Gamma, then return if no popcorn.
49722          GB=2D0
49723          IF(IRANK.NE.0)THEN
49724             CALL PYZDIS(1,2103,5D0,Z)
49725             GB=5D0*(1D0-Z)/Z
49726             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
49727                MSTU(121)=0
49728                GOTO 100
49729             ENDIF
49730          ENDIF
49731          IF(MSTU(121).EQ.0) RETURN
49732  
49733 C..Set store size memory. Pick fake dynamical variables of qq.
49734          NMES=MSTU(121)
49735          CALL PYPTDI(1,PX3,PY3)
49736          X=1D0
49737          POPM=0D0
49738          G=GB
49739          POPG=GB
49740  
49741 C.. Pick next popcorn meson, test with fake dynamical variables
49742   110    KFPREV=-KFL3
49743          PX1=-PX3
49744          PY1=-PY3
49745          CALL PYKFDI(KFPREV,0,KFL3,KFM)
49746          IF(MSTU(121).EQ.-1) GOTO 100
49747          CALL PYPTDI(KFL3,PX3,PY3)
49748          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
49749          CALL PYZDIS(KFPREV,KFL3,PM,Z)
49750          G=(1D0-Z)*(G+PM/Z)
49751          X=(1D0-Z)*X
49752  
49753          PTST=1D0
49754          GTST=1D0
49755          RTST=PYR(0)
49756          IF(MSTJ(12).GT.4)THEN
49757             POPMN=SQRT((1D0-X)*(G/X-GB))
49758             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
49759             PTST=EXP((POPM-POPMN)*PARF(193))
49760             POPM=POPMN
49761          ENDIF
49762          IF(IRANK.NE.0)THEN
49763             POPGN=X*GB
49764             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
49765             POPG=POPGN
49766          ENDIF
49767          IF(RTST.GT.PTST*GTST)THEN
49768             MSTU(121)=0
49769             IF(RTST.GT.PTST) MSTU(121)=-1
49770             GOTO 100
49771          ENDIF
49772  
49773 C.. Store meson
49774   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
49775          IF(MSTU(121).GT.0) GOTO 110
49776  
49777 C.. Test accepted system size. If OK set global popcorn size variable.
49778          IF(NMES.GT.NMAX)THEN
49779             KF=0
49780             KFL3=0
49781             RETURN
49782          ENDIF
49783          MSTU(121)=NMES
49784       ENDIF
49785  
49786       RETURN
49787       END
49788  
49789 C********************************************************************
49790  
49791 C...PYKFDI
49792 C...Generates a new flavour pair and combines off a hadron
49793  
49794       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
49795  
49796 C...Double precision and integer declarations.
49797       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49798       IMPLICIT INTEGER(I-N)
49799       INTEGER PYK,PYCHGE,PYCOMP
49800 C...Commonblocks.
49801       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49802       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49803       SAVE /PYDAT1/,/PYDAT2/
49804 C...Local arrays.
49805       DIMENSION PD(7)
49806  
49807       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
49808  
49809 C...Default flavour values. Input consistency checks.
49810       KF1A=IABS(KFL1)
49811       KF2A=IABS(KFL2)
49812       KFL3=0
49813       KF=0
49814       IF(KF1A.EQ.0) RETURN
49815       IF(KF2A.NE.0)THEN
49816         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
49817         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
49818         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
49819       ENDIF
49820  
49821 C...Check if tabulated flavour probabilities are to be used.
49822       IF(MSTJ(15).EQ.1) THEN
49823         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
49824      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
49825      &        ' together with MSTJ(12)>=5 modification')
49826         KTAB1=-1
49827         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
49828         KFL1A=MOD(KF1A/1000,10)
49829         KFL1B=MOD(KF1A/100,10)
49830         KFL1S=MOD(KF1A,10)
49831         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
49832      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
49833         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
49834         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
49835         KTAB2=0
49836         IF(KF2A.NE.0) THEN
49837           KTAB2=-1
49838           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
49839           KFL2A=MOD(KF2A/1000,10)
49840           KFL2B=MOD(KF2A/100,10)
49841           KFL2S=MOD(KF2A,10)
49842           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
49843      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
49844           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
49845         ENDIF
49846         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
49847       ENDIF
49848  
49849 C.. Recognize rank 0 diquark case
49850   100 IRANK=1
49851       KFDIQ=MAX(KF1A,KF2A)
49852       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
49853  
49854 C.. Join two flavours to meson or baryon. Test for popcorn.
49855       IF(KF2A.GT.0)THEN
49856         MBARY=0
49857         IF(KFDIQ.GT.10) THEN
49858           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
49859      &         CALL PYNMES(KFDIQ)
49860           IF(MSTU(121).NE.0) THEN
49861              MSTU(121)=0
49862              RETURN
49863           ENDIF
49864           MBARY=2
49865         ENDIF
49866         KFQOLD=KF1A
49867         KFQVER=KF2A
49868         GOTO 130
49869       ENDIF
49870  
49871 C.. Separate incoming flavours, curtain flavour consistency check
49872       KFIN=KFL1
49873       KFQOLD=KF1A
49874       KFQPOP=KF1A/10000
49875       IF(KF1A.GT.10)THEN
49876          KFIN=-KFL1
49877          KFL1A=MOD(KF1A/1000,10)
49878          KFL1B=MOD(KF1A/100,10)
49879          IF(IRANK.EQ.0)THEN
49880             QAWT=1D0
49881             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
49882             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
49883             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
49884          ENDIF
49885          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
49886              MSTU(121)=0
49887              RETURN
49888           ENDIF
49889          KFQOLD=KFL1A+KFL1B-KFQPOP
49890       ENDIF
49891  
49892 C...Meson/baryon choice. Set number of mesons if starting a popcorn
49893 C...system.
49894   110 MBARY=0
49895       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
49896          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
49897             MBARY=1
49898             CALL PYNMES(0)
49899          ENDIF
49900       ELSEIF(KF1A.GT.10)THEN
49901          MBARY=2
49902          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
49903          IF(MSTU(121).GT.0) MBARY=-1
49904       ENDIF
49905  
49906 C..x->H+q: Choose single vertex quark. Jump to form hadron.
49907       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
49908          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
49909          KFL3=ISIGN(KFQVER,-KFIN)
49910          GOTO 130
49911       ENDIF
49912  
49913 C..x->H+qq: (IDW=proper PARF position for diquark weights)
49914       IDW=160
49915       IF(MBARY.EQ.1)THEN
49916          IF(MSTU(121).EQ.0) IDW=150
49917          SQWT=PARF(IDW+1)
49918          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
49919          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
49920 C..   Shift to s-curtain parameters if needed
49921          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
49922             PARF(194)=PARF(138)*PARF(139)
49923             PARF(193)=PARJ(8)+PARJ(9)
49924          ENDIF
49925       ENDIF
49926  
49927 C.. x->H+qq: Get vertex quark
49928       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
49929          IDW=MSTU(122)
49930          MSTU(121)=MSTU(121)-1
49931          IF(IDW.EQ.170) THEN
49932             IF(MSTU(121).EQ.0)THEN
49933                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
49934             ELSE
49935                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
49936             ENDIF
49937          ELSE
49938             IF(MSTU(121).EQ.0)THEN
49939                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
49940             ELSE
49941                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
49942             ENDIF
49943          ENDIF
49944          IPOS=200+30*IPOS+1
49945  
49946          IMES=-1
49947          RMES=PYR(0)*PARF(194)
49948   120    IMES=IMES+1
49949          RMES=RMES-PARF(IPOS+IMES)
49950          IF(IMES.EQ.30) THEN
49951             MSTU(121)=-1
49952             KF=-111
49953             RETURN
49954          ENDIF
49955          IF(RMES.GT.0D0) GOTO 120
49956          KMUL=IMES/5
49957          KFJ=2*KMUL+1
49958          IF(KMUL.EQ.2) KFJ=10003
49959          IF(KMUL.EQ.3) KFJ=10001
49960          IF(KMUL.EQ.4) KFJ=20003
49961          IF(KMUL.EQ.5) KFJ=5
49962          IDIAG=0
49963          KFQVER=MOD(IMES,5)+1
49964          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
49965          IF(KFQVER.GT.3)THEN
49966             IDIAG=KFQVER-3
49967             KFQVER=KFQOLD
49968          ENDIF
49969       ELSE
49970          IF(MBARY.EQ.-1) IDW=170
49971          SQWT=PARF(IDW+2)
49972          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
49973          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
49974          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
49975          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
49976             KFQVER=KFQPOP
49977             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
49978          ENDIF
49979       ENDIF
49980  
49981 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
49982       KFLDS=3
49983       IF(KFQPOP.NE.KFQVER)THEN
49984          SWT=PARF(IDW+7)
49985          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
49986          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
49987          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
49988       ENDIF
49989       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
49990      &      +10000*KFQPOP
49991       KFL3=ISIGN(KFDIQ,KFIN)
49992  
49993 C..x->M+y: flavour for meson.
49994   130 IF(MBARY.LE.0)THEN
49995         KFLA=MAX(KFQOLD,KFQVER)
49996         KFLB=MIN(KFQOLD,KFQVER)
49997         KFS=ISIGN(1,KFL1)
49998         IF(KFLA.NE.KFQOLD) KFS=-KFS
49999 C... Form meson, with spin and flavour mixing for diagonal states.
50000         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
50001            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
50002            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
50003            RETURN
50004         ENDIF
50005         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
50006         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
50007         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
50008         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
50009           IF(PYR(0).LT.PARJ(14)) KMUL=2
50010         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
50011           RMUL=PYR(0)
50012           IF(RMUL.LT.PARJ(15)) KMUL=3
50013           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
50014           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
50015         ENDIF
50016         KFLS=3
50017         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
50018         IF(KMUL.EQ.5) KFLS=5
50019         IF(KFLA.NE.KFLB)THEN
50020           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
50021         ELSE
50022           RMIX=PYR(0)
50023           IMIX=2*KFLA+10*KMUL
50024           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
50025      &    INT(RMIX+PARF(IMIX)))+KFLS
50026           IF(KFLA.GE.4) KF=110*KFLA+KFLS
50027         ENDIF
50028         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
50029         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
50030  
50031 C..Optional extra suppression of eta and eta'.
50032 C..Allow shift to qq->B+q in old version (set IRANK to 0)
50033         IF(KF.EQ.221.OR.KF.EQ.331)THEN
50034            IF(PYR(0).GT.PARJ(25+KF/300))THEN
50035               IF(KF2A.GT.0) GOTO 130
50036               IF(MSTJ(12).LT.4) IRANK=0
50037               GOTO 110
50038            ENDIF
50039         ENDIF
50040         MSTU(121)=0
50041  
50042 C.. x->B+y: Flavour for baryon
50043       ELSE
50044         KFLA=KFQVER
50045         IF(KF1A.LE.10) KFLA=KFQOLD
50046         KFLB=MOD(KFDIQ/1000,10)
50047         KFLC=MOD(KFDIQ/100,10)
50048         KFLDS=MOD(KFDIQ,10)
50049         KFLD=MAX(KFLA,KFLB,KFLC)
50050         KFLF=MIN(KFLA,KFLB,KFLC)
50051         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
50052  
50053 C...  SU(6) factors for formation of baryon.
50054         KBARY=3
50055         KDMAX=5
50056         KFLG=KFLB
50057         IF(KFLB.NE.KFLC)THEN
50058            KBARY=2*KFLDS-1
50059            KDMAX=1+KFLDS/2
50060            IF(KFLB.GT.2) KDMAX=KDMAX+2
50061         ENDIF
50062         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
50063            KBARY=KBARY+1
50064            KFLG=KFLA
50065         ENDIF
50066  
50067         SU6MAX=PARF(140+KDMAX)
50068         SU6DEC=PARJ(18)
50069         SU6S  =PARF(146)
50070         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
50071            SU6MAX=1D0
50072            SU6DEC=1D0
50073            SU6S  =1D0
50074         ENDIF
50075         SU6OCT=PARF(60+KBARY)
50076         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
50077            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
50078            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
50079         ELSE
50080            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
50081         ENDIF
50082         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
50083  
50084 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
50085         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
50086            MSTU(121)=0
50087            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
50088            GOTO 110
50089         ENDIF
50090  
50091 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
50092         KSIG=1
50093         KFLS=2
50094         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
50095         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
50096           KSIG=KFLDS/3
50097           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
50098         ENDIF
50099         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
50100         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
50101       ENDIF
50102       RETURN
50103  
50104 C...Use tabulated probabilities to select new flavour and hadron.
50105   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
50106         KT3L=1
50107         KT3U=6
50108       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
50109         KT3L=1
50110         KT3U=6
50111       ELSEIF(KTAB2.EQ.0) THEN
50112         KT3L=1
50113         KT3U=22
50114       ELSE
50115         KT3L=KTAB2
50116         KT3U=KTAB2
50117       ENDIF
50118       RFL=0D0
50119       DO 160 KTS=0,2
50120         DO 150 KT3=KT3L,KT3U
50121           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
50122   150   CONTINUE
50123   160 CONTINUE
50124       RFL=PYR(0)*RFL
50125       DO 180 KTS=0,2
50126         KTABS=KTS
50127         DO 170 KT3=KT3L,KT3U
50128           KTAB3=KT3
50129           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
50130           IF(RFL.LE.0D0) GOTO 190
50131   170   CONTINUE
50132   180 CONTINUE
50133   190 CONTINUE
50134  
50135 C...Reconstruct flavour of produced quark/diquark.
50136       IF(KTAB3.LE.6) THEN
50137         KFL3A=KTAB3
50138         KFL3B=0
50139         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
50140       ELSE
50141         KFL3A=1
50142         IF(KTAB3.GE.8) KFL3A=2
50143         IF(KTAB3.GE.11) KFL3A=3
50144         IF(KTAB3.GE.16) KFL3A=4
50145         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
50146         KFL3=1000*KFL3A+100*KFL3B+1
50147         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
50148      &  KFL3+2
50149         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
50150       ENDIF
50151  
50152 C...Reconstruct meson code.
50153       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
50154      &KFL3B.NE.0)) THEN
50155         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
50156      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
50157         KF=110+2*KTABS+1
50158         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
50159         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
50160      &  25*KTABS)) KF=330+2*KTABS+1
50161       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
50162         KFLA=MAX(KTAB1,KTAB3)
50163         KFLB=MIN(KTAB1,KTAB3)
50164         KFS=ISIGN(1,KFL1)
50165         IF(KFLA.NE.KF1A) KFS=-KFS
50166         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
50167       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
50168         KFS=ISIGN(1,KFL1)
50169         IF(KFL1A.EQ.KFL3A) THEN
50170           KFLA=MAX(KFL1B,KFL3B)
50171           KFLB=MIN(KFL1B,KFL3B)
50172           IF(KFLA.NE.KFL1B) KFS=-KFS
50173         ELSEIF(KFL1A.EQ.KFL3B) THEN
50174           KFLA=KFL3A
50175           KFLB=KFL1B
50176           KFS=-KFS
50177         ELSEIF(KFL1B.EQ.KFL3A) THEN
50178           KFLA=KFL1A
50179           KFLB=KFL3B
50180         ELSEIF(KFL1B.EQ.KFL3B) THEN
50181           KFLA=MAX(KFL1A,KFL3A)
50182           KFLB=MIN(KFL1A,KFL3A)
50183           IF(KFLA.NE.KFL1A) KFS=-KFS
50184         ELSE
50185           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
50186           GOTO 100
50187         ENDIF
50188         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
50189  
50190 C...Reconstruct baryon code.
50191       ELSE
50192         IF(KTAB1.GE.7) THEN
50193           KFLA=KFL3A
50194           KFLB=KFL1A
50195           KFLC=KFL1B
50196         ELSE
50197           KFLA=KFL1A
50198           KFLB=KFL3A
50199           KFLC=KFL3B
50200         ENDIF
50201         KFLD=MAX(KFLA,KFLB,KFLC)
50202         KFLF=MIN(KFLA,KFLB,KFLC)
50203         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
50204         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
50205         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
50206       ENDIF
50207  
50208 C...Check that constructed flavour code is an allowed one.
50209       IF(KFL2.NE.0) KFL3=0
50210       KC=PYCOMP(KF)
50211       IF(KC.EQ.0) THEN
50212         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
50213      &  'failed')
50214         GOTO 100
50215       ENDIF
50216  
50217       RETURN
50218       END
50219  
50220 C*********************************************************************
50221  
50222 C...PYNMES
50223 C...Generates number of popcorn mesons and stores some relevant
50224 C...parameters.
50225  
50226       SUBROUTINE PYNMES(KFDIQ)
50227  
50228 C...Double precision and integer declarations.
50229       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50230       IMPLICIT INTEGER(I-N)
50231       INTEGER PYK,PYCHGE,PYCOMP
50232 C...Commonblocks.
50233       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50234       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50235       SAVE /PYDAT1/,/PYDAT2/
50236  
50237       MSTU(121)=0
50238       IF(MSTJ(12).LT.2) RETURN
50239  
50240 C..Old version: Get 1 or 0 popcorn mesons
50241       IF(MSTJ(12).LT.5)THEN
50242          POPWT=PARF(131)
50243          IF(KFDIQ.NE.0) THEN
50244             KFDIQA=IABS(KFDIQ)
50245             KFA=MOD(KFDIQA/1000,10)
50246             KFB=MOD(KFDIQA/100,10)
50247             KFS=MOD(KFDIQA,10)
50248             POPWT=PARF(132)
50249             IF(KFA.EQ.3) POPWT=PARF(133)
50250             IF(KFB.EQ.3) POPWT=PARF(134)
50251             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
50252          ENDIF
50253          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
50254          RETURN
50255       ENDIF
50256  
50257 C..New version: Store popcorn- or rank 0 diquark parameters
50258       MSTU(122)=170
50259       PARF(193)=PARJ(8)
50260       PARF(194)=PARF(139)
50261       IF(KFDIQ.NE.0) THEN
50262          MSTU(122)=180
50263          PARF(193)=PARJ(10)
50264          PARF(194)=PARF(140)
50265       ENDIF
50266       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
50267          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
50268      &        '(PYNMES:) Neglecting too large popcorn possibility')
50269          RETURN
50270       ENDIF
50271  
50272 C..New version: Get number of popcorn mesons
50273   100 RTST=PYR(0)
50274       MSTU(121)=-1
50275   110 MSTU(121)=MSTU(121)+1
50276       RTST=RTST/PARF(194)
50277       IF(RTST.LT.1D0) GOTO 110
50278       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
50279      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
50280       RETURN
50281       END
50282  
50283 C***************************************************************
50284  
50285 C...PYKFIN
50286 C...Precalculates a set of diquark and popcorn weights.
50287  
50288       SUBROUTINE PYKFIN
50289  
50290 C...Double precision and integer declarations.
50291       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50292       IMPLICIT INTEGER(I-N)
50293       INTEGER PYK,PYCHGE,PYCOMP
50294 C...Commonblocks.
50295       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50296       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50297       SAVE /PYDAT1/,/PYDAT2/
50298  
50299       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
50300  
50301  
50302       MSTU(123)=1
50303 C..Diquark indices for dimensional variables
50304       IUD1=1
50305       IUU1=2
50306       IUS0=3
50307       ISU0=4
50308       IUS1=5
50309       ISU1=6
50310       ISS1=7
50311  
50312 C.. *** SU(6) factors **
50313 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
50314       PARF(146)=1D0
50315       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
50316       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
50317      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
50318       DO 100 I=1,6
50319          SU6(I)=PARF(60+I)
50320          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
50321   100 CONTINUE
50322       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
50323       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
50324       DO 110 I=1,6
50325          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
50326          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
50327   110 CONTINUE
50328  
50329 C..SU(6)max            q       q'     s,c,b
50330       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
50331       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
50332       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
50333       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
50334       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
50335       SU6M(IUS0)=SU6M(ISU0)
50336       SU6M(ISS1)=SU6M(IUU1)
50337       SU6M(IUS1)=SU6M(ISU1)
50338  
50339 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
50340       PARF(141)=SU6MUD
50341       PARF(142)=SU6M(IUD1)
50342       PARF(143)=SU6M(ISU0)
50343       PARF(144)=SU6M(ISU1)
50344       PARF(145)=SU6M(ISS1)
50345  
50346 C..diquark SU(6) survival =
50347 C..sum over quark (quark tunnel weight)*(SU(6)).
50348       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
50349       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
50350       DMB(IUS0)=DMB(ISU0)
50351       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
50352       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
50353       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
50354       DMB(IUS1)=DMB(ISU1)
50355       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
50356  
50357 C.. *** Tunneling factors for Diquark production***
50358 C.. T: half a curtain pair = sqrt(curtain pair factor)
50359       IF(MSTJ(12).GE.5) THEN
50360          PMUD0=PYMASS(2101)
50361          PMUD1=PYMASS(2103)-PMUD0
50362          PMUS0=PYMASS(3201)-PMUD0
50363          PMUS1=PYMASS(3203)-PMUS0-PMUD0
50364          PMSS1=PYMASS(3303)-PMUS0-PMUD0
50365          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
50366          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
50367          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
50368          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
50369          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
50370          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
50371          QBB(IUD1)=QBB(IUU1)
50372       ELSE
50373          PAR2M=SQRT(PARJ(2))
50374          PAR3M=SQRT(PARJ(3))
50375          PAR4M=SQRT(PARJ(4))
50376          QBB(ISU0)=PAR2M*PAR3M
50377          QBB(IUS0)=PAR3M
50378          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
50379          QBB(IUU1)=PAR4M
50380          QBB(ISU1)=PAR4M*QBB(ISU0)
50381          QBB(IUS1)=PAR4M*QBB(IUS0)
50382          QBB(IUD1)=PAR4M
50383       ENDIF
50384  
50385 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
50386       QBM(ISU0)=QBB(ISU0)
50387       QBM(IUS0)=PARJ(2)*QBB(IUS0)
50388       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
50389       QBM(IUU1)=6D0*QBB(IUU1)
50390       QBM(ISU1)=3D0*QBB(ISU1)
50391       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
50392       QBM(IUD1)=3D0*QBB(IUD1)
50393  
50394 C.. Combine T and tau to diquark weight for q-> B+B+..
50395       DO 120 I=1,7
50396          QBB(I)=QBB(I)*QBM(I)
50397   120 CONTINUE
50398  
50399       IF(MSTJ(12).GE.5)THEN
50400 C..New version: tau  for rank 0 diquark.
50401          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
50402          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
50403          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
50404          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
50405          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
50406          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
50407          DMB(7+IUD1)=DMB(7+IUU1)/2D0
50408  
50409 C..New version: curtain flavour ratios.
50410 C.. s/u for q->B+M+...
50411 C.. s/u for rank 0 diquark: su -> ...M+B+...
50412 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
50413          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
50414          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
50415          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
50416          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
50417          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
50418      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
50419       ELSE
50420 C..Old version: reset unused rank 0 diquark weights and
50421 C..             unused diquark SU(6) survival weights
50422          DO 130 I=1,7
50423             IF(MSTJ(12).LT.3) DMB(I)=1D0
50424             DMB(7+I)=1D0
50425   130    CONTINUE
50426  
50427 C..Old version: Shuffle PARJ(7) into tau
50428          QBM(IUS0)=QBM(IUS0)*PARJ(7)
50429          QBM(ISS1)=QBM(ISS1)*PARJ(7)
50430          QBM(IUS1)=QBM(IUS1)*PARJ(7)
50431  
50432 C..Old version: curtain flavour ratios.
50433 C.. s/u for q->B+M+...
50434 C.. s/u for rank 0 diquark: su -> ...M+B+...
50435 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
50436          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
50437          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
50438          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
50439          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
50440       ENDIF
50441  
50442 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
50443 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
50444       DO 140 I=1,7
50445          DMB(7+I)=DMB(7+I)*DMB(I)
50446          DMB(I)=DMB(I)*QBM(I)
50447          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
50448          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
50449   140 CONTINUE
50450  
50451 C.. *** Popcorn factors ***
50452  
50453       IF(MSTJ(12).LT.5)THEN
50454 C.. Old version: Resulting popcorn weights.
50455          PARF(138)=PARJ(6)
50456          WS=PARF(135)*PARF(138)
50457          WQ=WU*PARJ(5)/3D0
50458          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
50459          PARF(133)=WQ*
50460      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
50461          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
50462          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
50463      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
50464      &        (1D0+QBB(IUD1)+QBB(IUU1)+
50465      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
50466       ELSE
50467 C..New version: Store weights for popcorn mesons,
50468 C..get prel. popcorn weights.
50469          DO 150 IPOS=201,1400
50470             PARF(IPOS)=0D0
50471   150    CONTINUE
50472          DO 160 I=138,140
50473             PARF(I)=0D0
50474   160    CONTINUE
50475          IPOS=200
50476          PARF(193)=PARJ(8)
50477          DO 240 MR=0,7,7
50478            IF(MR.EQ.7) PARF(193)=PARJ(10)
50479            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
50480      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
50481            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
50482            DO 230 NMES=0,1
50483              IF(NMES.EQ.1) SQWT=PARJ(2)
50484              DO 220 KFQPOP=1,4
50485                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
50486                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
50487                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
50488                   QQWT=0.5D0
50489                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
50490                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
50491                ENDIF
50492                DO 210 KFQOLD =1,5
50493                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
50494                   IF(NMES.EQ.1) THEN
50495                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
50496                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
50497                   ENDIF
50498                   WTTOT=0D0
50499                   WTFAIL=0D0
50500       DO 190 KMUL=0,5
50501          PJWT=PARJ(12+KMUL)
50502          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
50503          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
50504          IF(PJWT.LE.0D0) GOTO 190
50505          IF(PJWT.GT.1D0) PJWT=1D0
50506          IMES=5*KMUL
50507          IMIX=2*KFQOLD+10*KMUL
50508          KFJ=2*KMUL+1
50509          IF(KMUL.EQ.2) KFJ=10003
50510          IF(KMUL.EQ.3) KFJ=10001
50511          IF(KMUL.EQ.4) KFJ=20003
50512          IF(KMUL.EQ.5) KFJ=5
50513          DO 180 KFQVER =1,3
50514             KFLA=MAX(KFQOLD,KFQVER)
50515             KFLB=MIN(KFQOLD,KFQVER)
50516             SWT=PARJ(11+KFLA/3+KFLA/4)
50517             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
50518             SWT=SWT*PJWT
50519             QWT=SQWT/(2D0+SQWT)
50520             IF(KFQVER.LT.3)THEN
50521                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
50522                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
50523             ENDIF
50524             IF(KFQVER.NE.KFQOLD)THEN
50525                IMES=IMES+1
50526                KFM=100*KFLA+10*KFLB+KFJ
50527                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
50528                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
50529                WTTOT=WTTOT+PARF(IPOS+IMES)
50530             ELSE
50531                DO 170 ID=3,5
50532                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
50533                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
50534                   IF(ID.EQ.5) DWT=PARF(IMIX)
50535                   KFM=110*(ID-2)+KFJ
50536                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
50537                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
50538                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
50539                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
50540                      PARF(IPOS+5*KMUL+ID)=
50541      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
50542                   ENDIF
50543                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
50544   170          CONTINUE
50545             ENDIF
50546   180    CONTINUE
50547   190 CONTINUE
50548                   DO 200 IMES=1,30
50549                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
50550   200             CONTINUE
50551                   IF(MR.EQ.7) PARF(140)=
50552      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
50553                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
50554      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
50555                   IPOS=IPOS+30
50556   210           CONTINUE
50557   220         CONTINUE
50558   230       CONTINUE
50559   240    CONTINUE
50560          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
50561          MSTU(121)=0
50562  
50563       ENDIF
50564  
50565 C..Recombine diquark weights to flavour and spin ratios
50566       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
50567      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
50568       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
50569       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
50570       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
50571       PARF(155)=QBB(ISU1)/QBB(ISU0)
50572       PARF(156)=QBB(IUS1)/QBB(IUS0)
50573       PARF(157)=QBB(IUD1)
50574  
50575       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
50576      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
50577       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
50578       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
50579       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
50580       PARF(165)=QBM(ISU1)/QBM(ISU0)
50581       PARF(166)=QBM(IUS1)/QBM(IUS0)
50582       PARF(167)=QBM(IUD1)
50583  
50584       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
50585      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
50586       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
50587       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
50588       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
50589       PARF(175)=DMB(ISU1)/DMB(ISU0)
50590       PARF(176)=DMB(IUS1)/DMB(IUS0)
50591       PARF(177)=DMB(IUD1)
50592  
50593       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
50594       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
50595       PARF(187)=DMB(7+IUD1)
50596  
50597       RETURN
50598       END
50599  
50600  
50601 C*********************************************************************
50602  
50603 C...PYPTDI
50604 C...Generates transverse momentum according to a Gaussian.
50605  
50606       SUBROUTINE PYPTDI(KFL,PX,PY)
50607  
50608 C...Double precision and integer declarations.
50609       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50610       IMPLICIT INTEGER(I-N)
50611       INTEGER PYK,PYCHGE,PYCOMP
50612 C...Commonblocks.
50613       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50614       SAVE /PYDAT1/
50615  
50616 C...Generate p_T and azimuthal angle, gives p_x and p_y.
50617       KFLA=IABS(KFL)
50618       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
50619       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
50620       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
50621       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
50622       PHI=PARU(2)*PYR(0)
50623       PX=PT*COS(PHI)
50624       PY=PT*SIN(PHI)
50625  
50626       RETURN
50627       END
50628  
50629 C*********************************************************************
50630  
50631 C...PYZDIS
50632 C...Generates the longitudinal splitting variable z.
50633  
50634       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
50635  
50636 C...Double precision and integer declarations.
50637       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50638       IMPLICIT INTEGER(I-N)
50639       INTEGER PYK,PYCHGE,PYCOMP
50640 C...Commonblocks.
50641       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50642       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50643       SAVE /PYDAT1/,/PYDAT2/
50644  
50645 C...Check if heavy flavour fragmentation.
50646       KFLA=IABS(KFL1)
50647       KFLB=IABS(KFL2)
50648       KFLH=KFLA
50649       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
50650  
50651 C...Lund symmetric scaling function: determine parameters of shape.
50652       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
50653      &MSTJ(11).GE.4) THEN
50654         FA=PARJ(41)
50655         IF(MSTJ(91).EQ.1) FA=PARJ(43)
50656         IF(KFLB.GE.10) FA=FA+PARJ(45)
50657         FBB=PARJ(42)
50658         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
50659         FB=FBB*PR
50660         FC=1D0
50661         IF(KFLA.GE.10) FC=FC-PARJ(45)
50662         IF(KFLB.GE.10) FC=FC+PARJ(45)
50663         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
50664           FRED=PARJ(46)
50665           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
50666           FC=FC+FRED*FBB*PARF(100+KFLH)**2
50667         ENDIF
50668         MC=1
50669         IF(ABS(FC-1D0).GT.0.01D0) MC=2
50670  
50671 C...Determine position of maximum. Special cases for a = 0 or a = c.
50672         IF(FA.LT.0.02D0) THEN
50673           MA=1
50674           ZMAX=1D0
50675           IF(FC.GT.FB) ZMAX=FB/FC
50676         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
50677           MA=2
50678           ZMAX=FB/(FB+FC)
50679         ELSE
50680           MA=3
50681           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
50682           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
50683         ENDIF
50684  
50685 C...Subdivide z range if distribution very peaked near endpoint.
50686         MMAX=2
50687         IF(ZMAX.LT.0.1D0) THEN
50688           MMAX=1
50689           ZDIV=2.75D0*ZMAX
50690           IF(MC.EQ.1) THEN
50691             FINT=1D0-LOG(ZDIV)
50692           ELSE
50693             ZDIVC=ZDIV**(1D0-FC)
50694             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
50695           ENDIF
50696         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
50697           MMAX=3
50698           FSCB=SQRT(4D0+(FC/FB)**2)
50699           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
50700           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
50701           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
50702           FINT=1D0+FB*(1D0-ZDIV)
50703         ENDIF
50704  
50705 C...Choice of z, preweighted for peaks at low or high z.
50706   100   Z=PYR(0)
50707         FPRE=1D0
50708         IF(MMAX.EQ.1) THEN
50709           IF(FINT*PYR(0).LE.1D0) THEN
50710             Z=ZDIV*Z
50711           ELSEIF(MC.EQ.1) THEN
50712             Z=ZDIV**Z
50713             FPRE=ZDIV/Z
50714           ELSE
50715             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
50716             FPRE=(ZDIV/Z)**FC
50717           ENDIF
50718         ELSEIF(MMAX.EQ.3) THEN
50719           IF(FINT*PYR(0).LE.1D0) THEN
50720             Z=ZDIV+LOG(Z)/FB
50721             FPRE=EXP(FB*(Z-ZDIV))
50722           ELSE
50723             Z=ZDIV+Z*(1D0-ZDIV)
50724           ENDIF
50725         ENDIF
50726  
50727 C...Weighting according to correct formula.
50728         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
50729         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
50730         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
50731         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
50732         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
50733  
50734 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
50735       ELSE
50736         FC=PARJ(50+MAX(1,KFLH))
50737         IF(MSTJ(91).EQ.1) FC=PARJ(59)
50738   110   Z=PYR(0)
50739         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
50740           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
50741         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
50742           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
50743      &    GOTO 110
50744         ELSE
50745           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
50746           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
50747         ENDIF
50748       ENDIF
50749  
50750       RETURN
50751       END
50752  
50753 C*********************************************************************
50754  
50755 C...PYSHOW
50756 C...Generates timelike parton showers from given partons.
50757  
50758       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
50759  
50760 C...Double precision and integer declarations.
50761       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50762       IMPLICIT INTEGER(I-N)
50763       INTEGER PYK,PYCHGE,PYCOMP
50764 C...Parameter statement to help give large particle numbers.
50765       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50766      &KEXCIT=4000000,KDIMEN=5000000)
50767 C...Commonblocks.
50768       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
50769       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50770       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50771       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
50772 C...Local arrays.
50773       DIMENSION PMTH(5,50),PS(5),PMA(19),PMSD(10),IEP(10),IPA(10),
50774      &KFLA(10),KFLD(10),KFL(10),ITRY(10),ISI(10),ISL(10),DP(10),
50775      &DPT(5,4),KSH(0:40),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
50776      &PHIIIS(2,2),ISII(2),ISSET(3),ISCOL(0:40),ISCHG(0:40),
50777      &IREF(1000)
50778  
50779 C...Check that QMAX not too low.
50780       IF(MSTJ(41).LE.0) THEN
50781         RETURN
50782       ELSEIF(MSTJ(41).EQ.1) THEN
50783         IF(QMAX.LE.PARJ(82).AND.IP2.GT.-8) RETURN
50784       ELSE
50785         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GT.-8)
50786      &  RETURN
50787       ENDIF
50788  
50789 C...Initialization of cutoff masses etc.
50790       DO 100 IFL=0,40
50791         ISCOL(IFL)=0
50792         ISCHG(IFL)=0
50793         KSH(IFL)=0
50794   100 CONTINUE
50795       ISCOL(21)=1
50796       KSH(21)=1
50797       PMTH(1,21)=PYMASS(21)
50798       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
50799       PMTH(3,21)=2D0*PMTH(2,21)
50800       PMTH(4,21)=PMTH(3,21)
50801       PMTH(5,21)=PMTH(3,21)
50802       PMTH(1,22)=PYMASS(22)
50803       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
50804       PMTH(3,22)=2D0*PMTH(2,22)
50805       PMTH(4,22)=PMTH(3,22)
50806       PMTH(5,22)=PMTH(3,22)
50807       PMQTH1=PARJ(82)
50808       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
50809       PMQT1E=MIN(PMQTH1,PARJ(90))
50810       PMQTH2=PMTH(2,21)
50811       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
50812       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
50813       DO 110 IFL=1,5
50814         ISCOL(IFL)=1
50815         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
50816         KSH(IFL)=1
50817         PMTH(1,IFL)=PYMASS(IFL)
50818         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
50819         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
50820         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
50821         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
50822   110 CONTINUE
50823       DO 120 IFL=11,15,2
50824         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
50825         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
50826         PMTH(1,IFL)=PYMASS(IFL)
50827         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
50828         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
50829         PMTH(4,IFL)=PMTH(3,IFL)
50830         PMTH(5,IFL)=PMTH(3,IFL)
50831   120 CONTINUE
50832       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
50833       ALAMS=PARJ(81)**2
50834       ALFM=LOG(PT2MIN/ALAMS)
50835  
50836 C...Store positions of shower initiating partons.
50837       MPSPD=0
50838       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
50839         NPA=1
50840         IPA(1)=IP1
50841       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
50842      &  MSTU(32))) THEN
50843         NPA=2
50844         IPA(1)=IP1
50845         IPA(2)=IP2
50846       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
50847      &  .AND.IP2.GE.-7) THEN
50848         NPA=IABS(IP2)
50849         DO 130 I=1,NPA
50850           IPA(I)=IP1+I-1
50851   130   CONTINUE
50852       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
50853      &IP2.EQ.-8) THEN
50854         MPSPD=1
50855         NPA=2
50856         IPA(1)=IP1+6
50857         IPA(2)=IP1+7
50858       ELSE
50859         CALL PYERRM(12,
50860      &  '(PYSHOW:) failed to reconstruct showering system')
50861         IF(MSTU(21).GE.1) RETURN
50862       ENDIF
50863  
50864 C...Check on phase space available for emission.
50865       IREJ=0
50866       DO 140 J=1,5
50867         PS(J)=0D0
50868   140 CONTINUE
50869       PM=0D0
50870       KFLA(2)=0
50871       DO 160 I=1,NPA
50872         KFLA(I)=IABS(K(IPA(I),2))
50873         PMA(I)=P(IPA(I),5)
50874 C...Special cutoff masses for initial partons (may be a heavy quark,
50875 C...squark, ..., and need not be on the mass shell).
50876         IR=30+I
50877         IF(NPA.LE.1) IREF(I)=IR
50878         IF(NPA.GE.2) IREF(I+1)=IR
50879         IF(KFLA(I).LE.8) THEN
50880           ISCOL(IR)=1
50881           IF(MSTJ(41).GE.2) ISCHG(IR)=1
50882         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
50883      &  KFLA(I).EQ.17) THEN
50884           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
50885         ELSEIF(KFLA(I).EQ.21) THEN
50886           ISCOL(IR)=1
50887         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
50888      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
50889           ISCOL(IR)=1
50890         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
50891           ISCOL(IR)=1
50892         ENDIF
50893         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
50894         PMTH(1,IR)=PMA(I)
50895         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
50896           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
50897           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
50898           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
50899           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
50900         ELSEIF(ISCOL(IR).EQ.1) THEN
50901           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
50902           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
50903           PMTH(4,IR)=PMTH(3,IR)
50904           PMTH(5,IR)=PMTH(3,IR)
50905         ELSEIF(ISCHG(IR).EQ.1) THEN
50906           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
50907           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
50908           PMTH(4,IR)=PMTH(3,IR)
50909           PMTH(5,IR)=PMTH(3,IR)
50910         ENDIF
50911         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
50912         PM=PM+PMA(I)
50913         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
50914         DO 150 J=1,4
50915           PS(J)=PS(J)+P(IPA(I),J)
50916   150   CONTINUE
50917   160 CONTINUE
50918       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
50919       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
50920       IF(NPA.EQ.1) PS(5)=PS(4)
50921       IF(PS(5).LE.PM+PMQT1E) RETURN
50922  
50923 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
50924       KFSRCE=0
50925       IF(IP2.LE.0) THEN
50926       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
50927         KFSRCE=IABS(K(K(IP1,3),2))
50928       ELSE
50929         IPAR1=MAX(1,K(IP1,3))
50930         IPAR2=MAX(1,K(IP2,3))
50931         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
50932      &       KFSRCE=IABS(K(K(IPAR1,3),2))
50933       ENDIF
50934       ITYPES=0
50935       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
50936       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
50937       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
50938       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
50939       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
50940       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
50941       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
50942       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
50943  
50944 C...Identify two primary showerers.
50945       ITYPE1=0
50946       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
50947       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
50948       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
50949       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
50950       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
50951       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
50952       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
50953       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
50954       ITYPE2=0
50955       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
50956       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
50957       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
50958       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
50959       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
50960       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
50961       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
50962       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
50963  
50964 C...Order of showerers. Presence of gluino.
50965       ITYPMN=MIN(ITYPE1,ITYPE2)
50966       ITYPMX=MAX(ITYPE1,ITYPE2)
50967       IORD=1
50968       IF(ITYPE1.GT.ITYPE2) IORD=2
50969       IGLUI=0
50970       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
50971  
50972 C...Check if 3-jet matrix elements to be used.
50973       M3JC=0
50974       ALPHA=0.5D0
50975       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
50976         IF(MSTJ(38).NE.0) THEN
50977           M3JC=MSTJ(38)
50978           ALPHA=PARJ(80)
50979           MSTJ(38)=0
50980         ELSEIF(MSTJ(47).GE.6) THEN
50981           M3JC=MSTJ(47)
50982         ELSE
50983           ICLASS=1
50984           ICOMBI=4
50985  
50986 C...Vector/axial vector -> q + qbar; q -> q + V.
50987           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
50988      &    ITYPES.EQ.3)) THEN
50989             ICLASS=2
50990             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
50991               ICOMBI=1
50992             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
50993      &      K(IP1,2)+K(IP2,2).EQ.0)) THEN
50994 C...gamma*/Z0: assume e+e- initial state if unknown.
50995               EI=-1D0
50996               IF(KFSRCE.EQ.23) THEN
50997                 IANNFL=K(K(IP1,3),3)
50998                 IF(IANNFL.NE.0) THEN
50999                   KANNFL=IABS(K(IANNFL,2))
51000                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
51001                 ENDIF
51002               ENDIF
51003               AI=SIGN(1D0,EI+0.1D0)
51004               VI=AI-4D0*EI*PARU(102)
51005               EF=KCHG(KFLA(1),1)/3D0
51006               AF=SIGN(1D0,EF+0.1D0)
51007               VF=AF-4D0*EF*PARU(102)
51008               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
51009               SH=PS(5)**2
51010               SQMZ=PMAS(23,1)**2
51011               SQWZ=PS(5)*PMAS(23,2)
51012               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
51013               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
51014      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
51015               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
51016               ICOMBI=3
51017               ALPHA=VECT/(VECT+AXIV)
51018             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
51019               ICOMBI=4
51020             ENDIF
51021 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
51022           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
51023             ICLASS=2
51024           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
51025      &    ITYPES.EQ.1)) THEN
51026             ICLASS=3
51027  
51028 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
51029           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
51030             ICLASS=4
51031             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
51032               ICOMBI=1
51033             ELSEIF(KFSRCE.EQ.36) THEN
51034               ICOMBI=2
51035             ENDIF
51036           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
51037      &    ITYPES.EQ.1)) THEN
51038             ICLASS=5
51039  
51040 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
51041           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
51042      &    ITYPES.EQ.3)) THEN
51043             ICLASS=6
51044           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
51045      &    ITYPES.EQ.2)) THEN
51046             ICLASS=7
51047           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
51048             ICLASS=8
51049           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
51050      &    ITYPES.EQ.2)) THEN
51051             ICLASS=9
51052  
51053 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
51054           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
51055      &    ITYPES.EQ.5)) THEN
51056             ICLASS=10
51057           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
51058      &    ITYPES.EQ.2)) THEN
51059             ICLASS=11
51060           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
51061      &    ITYPES.EQ.1)) THEN
51062             ICLASS=12
51063  
51064 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
51065           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
51066             ICLASS=13
51067           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
51068      &    ITYPES.EQ.2)) THEN
51069             ICLASS=14
51070           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
51071      &    ITYPES.EQ.1)) THEN
51072             ICLASS=15
51073  
51074 C...g -> ~g + ~g (eikonal approximation).
51075           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
51076             ICLASS=16
51077           ENDIF
51078           M3JC=5*ICLASS+ICOMBI
51079         ENDIF
51080       ENDIF
51081  
51082 C...Find if interference with initial state partons.
51083       MIIS=0
51084       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
51085      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
51086       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
51087      &MIIS=MSTJ(50)-3
51088       IF(MIIS.NE.0) THEN
51089         DO 180 I=1,2
51090           KCII(I)=0
51091           KCA=PYCOMP(KFLA(I))
51092           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
51093           NIIS(I)=0
51094           IF(KCII(I).NE.0) THEN
51095             DO 170 J=1,2
51096               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
51097               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
51098      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
51099                 NIIS(I)=NIIS(I)+1
51100                 IIIS(I,NIIS(I))=ICSI
51101               ENDIF
51102   170       CONTINUE
51103           ENDIF
51104   180   CONTINUE
51105         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
51106       ENDIF
51107  
51108 C...Boost interfering initial partons to rest frame
51109 C...and reconstruct their polar and azimuthal angles.
51110       IF(MIIS.NE.0) THEN
51111         DO 200 I=1,2
51112           DO 190 J=1,5
51113             K(N+I,J)=K(IPA(I),J)
51114             P(N+I,J)=P(IPA(I),J)
51115             V(N+I,J)=0D0
51116   190     CONTINUE
51117   200   CONTINUE
51118         DO 220 I=3,2+NIIS(1)
51119           DO 210 J=1,5
51120             K(N+I,J)=K(IIIS(1,I-2),J)
51121             P(N+I,J)=P(IIIS(1,I-2),J)
51122             V(N+I,J)=0D0
51123   210     CONTINUE
51124   220   CONTINUE
51125         DO 240 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
51126           DO 230 J=1,5
51127             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
51128             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
51129             V(N+I,J)=0D0
51130   230     CONTINUE
51131   240   CONTINUE
51132         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
51133      &  -PS(2)/PS(4),-PS(3)/PS(4))
51134         PHI=PYANGL(P(N+1,1),P(N+1,2))
51135         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
51136         THE=PYANGL(P(N+1,3),P(N+1,1))
51137         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
51138         DO 250 I=3,2+NIIS(1)
51139           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
51140           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
51141   250   CONTINUE
51142         DO 260 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
51143           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
51144      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
51145           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
51146   260   CONTINUE
51147       ENDIF
51148  
51149 C...Boost 3 or more partons to their rest frame.
51150       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
51151      &-PS(2)/PS(4),-PS(3)/PS(4))
51152  
51153 C...Define imagined single initiator of shower for parton system.
51154       NS=N
51155       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
51156         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
51157         IF(MSTU(21).GE.1) RETURN
51158       ENDIF
51159   270 N=NS
51160       IF(NPA.GE.2) THEN
51161         K(N+1,1)=11
51162         K(N+1,2)=21
51163         K(N+1,3)=0
51164         K(N+1,4)=0
51165         K(N+1,5)=0
51166         P(N+1,1)=0D0
51167         P(N+1,2)=0D0
51168         P(N+1,3)=0D0
51169         P(N+1,4)=PS(5)
51170         P(N+1,5)=PS(5)
51171         V(N+1,5)=PS(5)**2
51172         N=N+1
51173         IREF(1)=21
51174       ENDIF
51175  
51176 C...Loop over partons that may branch.
51177       NEP=NPA
51178       IM=NS
51179       IF(NPA.EQ.1) IM=NS-1
51180   280 IM=IM+1
51181       IF(N.GT.NS) THEN
51182         IF(IM.GT.N) GOTO 590
51183         KFLM=IABS(K(IM,2))
51184         IR=IREF(IM-NS)
51185         IF(KSH(IR).EQ.0) GOTO 280
51186         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 280
51187         IGM=K(IM,3)
51188       ELSE
51189         IGM=-1
51190       ENDIF
51191       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
51192         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
51193         IF(MSTU(21).GE.1) RETURN
51194       ENDIF
51195  
51196 C...Position of aunt (sister to branching parton).
51197 C...Origin and flavour of daughters.
51198       IAU=0
51199       IF(IGM.GT.0) THEN
51200         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
51201         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
51202       ENDIF
51203       IF(IGM.GE.0) THEN
51204         K(IM,4)=N+1
51205         DO 290 I=1,NEP
51206           K(N+I,3)=IM
51207   290   CONTINUE
51208       ELSE
51209         K(N+1,3)=IPA(1)
51210       ENDIF
51211       IF(IGM.LE.0) THEN
51212         DO 300 I=1,NEP
51213           K(N+I,2)=K(IPA(I),2)
51214   300   CONTINUE
51215       ELSEIF(KFLM.NE.21) THEN
51216         K(N+1,2)=K(IM,2)
51217         K(N+2,2)=K(IM,5)
51218         IREF(N+1-NS)=IREF(IM-NS)
51219         IREF(N+2-NS)=IABS(K(N+2,2))
51220       ELSEIF(K(IM,5).EQ.21) THEN
51221         K(N+1,2)=21
51222         K(N+2,2)=21
51223         IREF(N+1-NS)=21
51224         IREF(N+2-NS)=21
51225       ELSE
51226         K(N+1,2)=K(IM,5)
51227         K(N+2,2)=-K(IM,5)
51228         IREF(N+1-NS)=IABS(K(N+1,2))
51229         IREF(N+2-NS)=IABS(K(N+2,2))
51230       ENDIF
51231  
51232 C...Reset flags on daughters and tries made.
51233       DO 310 IP=1,NEP
51234         K(N+IP,1)=3
51235         K(N+IP,4)=0
51236         K(N+IP,5)=0
51237         KFLD(IP)=IABS(K(N+IP,2))
51238         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
51239         ITRY(IP)=0
51240         ISL(IP)=0
51241         ISI(IP)=0
51242         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
51243   310 CONTINUE
51244       ISLM=0
51245  
51246 C...Maximum virtuality of daughters.
51247       IF(IGM.LE.0) THEN
51248         DO 320 I=1,NPA
51249           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
51250           P(N+I,5)=MIN(QMAX,PS(5))
51251           IR=IREF(N+I-NS)
51252           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
51253           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
51254   320   CONTINUE
51255       ELSE
51256         IF(MSTJ(43).LE.2) PEM=V(IM,2)
51257         IF(MSTJ(43).GE.3) PEM=P(IM,4)
51258         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
51259         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
51260         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
51261       ENDIF
51262       DO 330 I=1,NEP
51263         PMSD(I)=P(N+I,5)
51264         IF(ISI(I).EQ.1) THEN
51265           IR=IREF(N+I-NS)
51266           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
51267         ENDIF
51268         V(N+I,5)=P(N+I,5)**2
51269   330 CONTINUE
51270  
51271 C...Choose one of the daughters for evolution.
51272   340 INUM=0
51273       IF(NEP.EQ.1) INUM=1
51274       DO 350 I=1,NEP
51275         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
51276   350 CONTINUE
51277       DO 360 I=1,NEP
51278         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
51279           IR=IREF(N+I-NS)
51280           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
51281         ENDIF
51282   360 CONTINUE
51283       IF(INUM.EQ.0) THEN
51284         RMAX=0D0
51285         DO 370 I=1,NEP
51286           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
51287             RPM=P(N+I,5)/PMSD(I)
51288             IR=IREF(N+I-NS)
51289             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
51290               RMAX=RPM
51291               INUM=I
51292             ENDIF
51293           ENDIF
51294   370   CONTINUE
51295       ENDIF
51296  
51297 C...Cancel choice of predetermined daughter already treated.
51298       INUM=MAX(1,INUM)
51299       INUMT=INUM
51300       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
51301         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
51302       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
51303         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
51304         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
51305       ENDIF
51306  
51307 C...Store information on choice of evolving daughter.
51308       IEP(1)=N+INUM
51309       DO 380 I=2,NEP
51310         IEP(I)=IEP(I-1)+1
51311         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
51312   380 CONTINUE
51313       DO 390 I=1,NEP
51314         KFL(I)=IABS(K(IEP(I),2))
51315   390 CONTINUE
51316       ITRY(INUM)=ITRY(INUM)+1
51317       IF(ITRY(INUM).GT.200) THEN
51318         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
51319         IF(MSTU(21).GE.1) RETURN
51320       ENDIF
51321       Z=0.5D0
51322       IR=IREF(IEP(1)-NS)
51323       IF(KSH(IR).EQ.0) GOTO 440
51324       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 440
51325  
51326 C...Check if evolution already predetermined for daughter.
51327       IPSPD=0
51328       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
51329         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
51330       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
51331         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
51332         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
51333       ENDIF
51334       ISSET(INUM)=0
51335       IF(IPSPD.NE.0) ISSET(INUM)=1
51336  
51337 C...Select side for interference with initial state partons.
51338       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
51339         III=IEP(1)-NS-1
51340         ISII(III)=0
51341         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
51342           ISII(III)=1
51343         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
51344           IF(PYR(0).GT.0.5D0) ISII(III)=1
51345         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
51346           ISII(III)=1
51347           IF(PYR(0).GT.0.5D0) ISII(III)=2
51348         ENDIF
51349       ENDIF
51350  
51351 C...Calculate allowed z range.
51352       IF(NEP.EQ.1) THEN
51353         PMED=PS(4)
51354       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51355         PMED=P(IM,5)
51356       ELSE
51357         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
51358         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
51359       ENDIF
51360       IF(MOD(MSTJ(43),2).EQ.1) THEN
51361         ZC=PMTH(2,21)/PMED
51362         ZCE=PMTH(2,22)/PMED
51363         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
51364       ELSE
51365         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
51366         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
51367         PMTMPE=PMTH(2,22)
51368         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
51369         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
51370         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
51371       ENDIF
51372       ZC=MIN(ZC,0.491D0)
51373       ZCE=MIN(ZCE,0.49991D0)
51374       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
51375      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
51376         P(IEP(1),5)=PMTH(1,IR)
51377         V(IEP(1),5)=P(IEP(1),5)**2
51378         GOTO 440
51379       ENDIF
51380  
51381 C...Integral of Altarelli-Parisi z kernel for QCD.
51382 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
51383       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
51384         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
51385       ELSEIF(MSTJ(49).EQ.0) THEN
51386         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
51387         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
51388  
51389 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
51390       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
51391         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
51392       ELSEIF(MSTJ(49).EQ.1) THEN
51393         FBR=(1D0-2D0*ZC)/3D0
51394         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
51395  
51396 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
51397       ELSEIF(KFL(1).EQ.21) THEN
51398         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
51399       ELSE
51400         FBR=2D0*LOG((1D0-ZC)/ZC)
51401       ENDIF
51402  
51403 C...Reset QCD probability for colourless.
51404       IF(ISCOL(IR).EQ.0) FBR=0D0
51405  
51406 C...Integral of Altarelli-Parisi kernel for photon emission.
51407       FBRE=0D0
51408       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
51409         IF(KFL(1).LE.18) THEN
51410           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
51411         ENDIF
51412         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
51413       ENDIF
51414  
51415 C...Inner veto algorithm starts. Find maximum mass for evolution.
51416   400 PMS=V(IEP(1),5)
51417       IF(IGM.GE.0) THEN
51418         PM2=0D0
51419         DO 410 I=2,NEP
51420           PM=P(IEP(I),5)
51421           IRI=IREF(IEP(I)-NS)
51422           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
51423           PM2=PM2+PM
51424   410   CONTINUE
51425         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
51426       ENDIF
51427  
51428 C...Select mass for daughter in QCD evolution.
51429       B0=27D0/6D0
51430       DO 420 IFF=4,MSTJ(45)
51431         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
51432   420 CONTINUE
51433 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
51434       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
51435 C...Already predetermined choice.
51436       IF(IPSPD.NE.0) THEN
51437         PMSQCD=P(IPSPD,5)**2
51438       ELSEIF(FBR.LT.1D-3) THEN
51439         PMSQCD=0D0
51440       ELSEIF(MSTJ(44).LE.0) THEN
51441         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
51442       ELSEIF(MSTJ(44).EQ.1) THEN
51443         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
51444       ELSE
51445         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
51446       ENDIF
51447 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
51448       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
51449       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
51450       V(IEP(1),5)=PMSQCD
51451       MCE=1
51452  
51453 C...Select mass for daughter in QED evolution.
51454       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
51455 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
51456         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
51457         IF(FBRE.LT.1D-3) THEN
51458           PMSQED=0D0
51459         ELSE
51460           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
51461      &    (PARU(101)*FBRE)))
51462         ENDIF
51463 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
51464         PMSQED=PMSQED+PMTH(1,IR)**2
51465         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
51466      &  PMTH(2,IR)**2
51467         IF(PMSQED.GT.PMSQCD) THEN
51468           V(IEP(1),5)=PMSQED
51469           MCE=2
51470         ENDIF
51471       ENDIF
51472  
51473 C...Check whether daughter mass below cutoff.
51474       P(IEP(1),5)=SQRT(V(IEP(1),5))
51475       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
51476         P(IEP(1),5)=PMTH(1,IR)
51477         V(IEP(1),5)=P(IEP(1),5)**2
51478         GOTO 440
51479       ENDIF
51480  
51481 C...Already predetermined choice of z, and flavour in g -> qqbar.
51482       IF(IPSPD.NE.0) THEN
51483         IPSGD1=K(IPSPD,4)
51484         IPSGD2=K(IPSPD,5)
51485         PMSGD1=P(IPSGD1,5)**2
51486         PMSGD2=P(IPSGD2,5)**2
51487         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
51488      &  4D0*PMSGD1*PMSGD2))
51489         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
51490      &  PMSGD1+PMSGD2)/ALAMPS
51491         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
51492         IF(KFL(1).NE.21) THEN
51493           K(IEP(1),5)=21
51494         ELSE
51495           K(IEP(1),5)=IABS(K(IPSGD1,2))
51496         ENDIF
51497  
51498 C...Select z value of branching: q -> qgamma.
51499       ELSEIF(MCE.EQ.2) THEN
51500         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
51501         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 400
51502         K(IEP(1),5)=22
51503  
51504 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
51505       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
51506         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
51507 C...Only do z weighting when no ME correction afterwards.
51508         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 400
51509         K(IEP(1),5)=21
51510       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
51511         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
51512         IF(PYR(0).GT.0.5D0) Z=1D0-Z
51513         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 400
51514         K(IEP(1),5)=21
51515       ELSEIF(MSTJ(49).NE.1) THEN
51516         Z=PYR(0)
51517         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 400
51518         KFLB=1+INT(MSTJ(45)*PYR(0))
51519         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
51520         IF(PMQ.GE.1D0) GOTO 400
51521         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
51522           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 400
51523           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
51524           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
51525      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 400
51526         ELSE
51527           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 400
51528         ENDIF
51529         K(IEP(1),5)=KFLB
51530  
51531 C...Ditto for scalar gluon model.
51532       ELSEIF(KFL(1).NE.21) THEN
51533         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
51534         K(IEP(1),5)=21
51535       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
51536         Z=ZC+(1D0-2D0*ZC)*PYR(0)
51537         K(IEP(1),5)=21
51538       ELSE
51539         Z=ZC+(1D0-2D0*ZC)*PYR(0)
51540         KFLB=1+INT(MSTJ(45)*PYR(0))
51541         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
51542         IF(PMQ.GE.1D0) GOTO 400
51543         K(IEP(1),5)=KFLB
51544       ENDIF
51545  
51546 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
51547       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
51548         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
51549      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51550           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 400
51551         ELSE
51552           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
51553           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
51554      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
51555           IF(PT2APP.LT.PT2MIN) GOTO 400
51556           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 400
51557         ENDIF
51558       ENDIF
51559  
51560 C...Check if z consistent with chosen m.
51561       IF(KFL(1).EQ.21) THEN
51562         IRGD1=IABS(K(IEP(1),5))
51563         IRGD2=IRGD1
51564       ELSE
51565         IRGD1=IR
51566         IRGD2=IABS(K(IEP(1),5))
51567       ENDIF
51568       IF(NEP.EQ.1) THEN
51569         PED=PS(4)
51570       ELSEIF(NEP.GE.3) THEN
51571         PED=P(IEP(1),4)
51572       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51573         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
51574       ELSE
51575         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
51576         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
51577       ENDIF
51578       IF(MOD(MSTJ(43),2).EQ.1) THEN
51579         PMQTH3=0.5D0*PARJ(82)
51580         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
51581         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
51582         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
51583         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
51584         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
51585      &  4D0*PMQ1*PMQ2)))
51586         ZH=1D0+PMQ1-PMQ2
51587       ELSE
51588         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
51589         ZH=1D0
51590       ENDIF
51591       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
51592      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51593       ELSEIF(IPSPD.NE.0) THEN
51594       ELSE
51595         ZL=0.5D0*(ZH-ZD)
51596         ZU=0.5D0*(ZH+ZD)
51597         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 400
51598       ENDIF
51599       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
51600      &(1D0-ZU)))
51601       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
51602  
51603 C...Width suppression for q -> q + g.
51604       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
51605         IF(IGM.EQ.0) THEN
51606           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
51607         ELSE
51608           EGLU=PMED*(1D0-Z)
51609         ENDIF
51610         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
51611         IF(MSTJ(40).EQ.1) THEN
51612           IF(CHI.LT.PYR(0)) GOTO 400
51613         ELSEIF(MSTJ(40).EQ.2) THEN
51614           IF(1D0-CHI.LT.PYR(0)) GOTO 400
51615         ENDIF
51616       ENDIF
51617  
51618 C...Three-jet matrix element correction.
51619       IF(M3JC.GE.1) THEN
51620         WME=1D0
51621         WSHOW=1D0
51622  
51623 C...QED matrix elements: only for massless case so far.
51624         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
51625           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
51626           X2=1D0-V(IEP(1),5)/V(NS+1,5)
51627           X3=(1D0-X1)+(1D0-X2)
51628           KI1=K(IPA(INUM),2)
51629           KI2=K(IPA(3-INUM),2)
51630           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
51631           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
51632           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
51633      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
51634           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
51635         ELSEIF(MCE.EQ.2) THEN
51636  
51637 C...QCD matrix elements, including mass effects.
51638         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
51639           PS1ME=V(IEP(1),5)
51640           PM1ME=PMTH(1,IR)
51641           M3JCC=M3JC
51642           IF(IR.GE.31.AND.IGM.EQ.0) THEN
51643 C...QCD ME: original parton, first branching.
51644             PM2ME=PMTH(1,63-IR)
51645             ECMME=PS(5)
51646           ELSEIF(IR.GE.31) THEN
51647 C...QCD ME: original parton, subsequent branchings.
51648             PM2ME=PMTH(1,63-IR)
51649             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
51650             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51651           ELSEIF(K(IM,2).EQ.21) THEN
51652 C...QCD ME: secondary partons, first branching.
51653             PM2ME=PM1ME
51654             ZMME=V(IM,1)
51655             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
51656             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
51657      &      4D0*PS1ME*PM2ME**2))
51658             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
51659      &      V(IM,5)
51660             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51661             M3JCC=66
51662           ELSE
51663 C...QCD ME: secondary partons, subsequent branchings.
51664             PM2ME=PM1ME
51665             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
51666             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51667             M3JCC=66
51668           ENDIF
51669 C...Construct ME variables.
51670           R1ME=PM1ME/ECMME
51671           R2ME=PM2ME/ECMME
51672           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
51673           X2=1D0+R2ME**2-PS1ME/ECMME**2
51674 C...Call ME, with right order important for two inequivalent showerers.
51675           IF(IR.EQ.IORD+30) THEN
51676             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
51677           ELSE
51678             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
51679           ENDIF
51680 C...Split up total ME when two radiating partons.
51681           ISPRAD=1
51682           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
51683      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
51684      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
51685      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
51686      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
51687           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
51688      &    MAX(1D-10,2D0-X1-X2)
51689 C...Evaluate shower rate to be compared with.
51690           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
51691      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
51692           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
51693         ELSEIF(MSTJ(49).NE.1) THEN
51694  
51695 C...Toy model scalar theory matrix elements; no mass effects.
51696         ELSE
51697           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
51698           X2=1D0-V(IEP(1),5)/V(NS+1,5)
51699           X3=(1D0-X1)+(1D0-X2)
51700           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
51701           WME=X3**2
51702           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
51703      &    PARJ(171)
51704         ENDIF
51705  
51706         IF(WME.LT.PYR(0)*WSHOW) GOTO 400
51707       ENDIF
51708  
51709 C...Impose angular ordering by rejection of nonordered emission.
51710       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
51711         PEMAO=V(IM,1)*P(IM,4)
51712         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
51713         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
51714           MAOD=0
51715         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
51716      &  .OR.MSTJ(42).EQ.7)) THEN
51717           MAOD=0
51718         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
51719      &  .OR.MSTJ(42).EQ.6)) THEN
51720           MAOD=1
51721           PMDAO=PMTH(2,K(IEP(1),5))
51722           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
51723         ELSE
51724           MAOD=1
51725           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
51726           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
51727      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
51728         ENDIF
51729         MAOM=1
51730         IAOM=IM
51731   430   IF(K(IAOM,5).EQ.22) THEN
51732           IAOM=K(IAOM,3)
51733           IF(K(IAOM,3).LE.NS) MAOM=0
51734           IF(MAOM.EQ.1) GOTO 430
51735         ENDIF
51736         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
51737           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
51738           IF(THE2ID.LT.THE2IM) GOTO 400
51739         ENDIF
51740       ENDIF
51741  
51742 C...Impose user-defined maximum angle at first branching.
51743       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
51744         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
51745           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
51746           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 400
51747         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
51748           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
51749           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 400
51750         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
51751           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
51752           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 400
51753         ENDIF
51754       ENDIF
51755  
51756 C...Impose angular constraint in first branching from interference
51757 C...with initial state partons.
51758       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
51759         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
51760         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
51761           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 400
51762         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
51763           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 400
51764         ENDIF
51765       ENDIF
51766  
51767 C...End of inner veto algorithm. Check if only one leg evolved so far.
51768   440 V(IEP(1),1)=Z
51769       ISL(1)=0
51770       ISL(2)=0
51771       IF(NEP.EQ.1) GOTO 480
51772       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 340
51773       DO 450 I=1,NEP
51774         IR=IREF(N+I-NS)
51775         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
51776           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 340
51777         ENDIF
51778   450 CONTINUE
51779  
51780 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
51781       IF(NEP.GE.3) THEN
51782         PMSUM=0D0
51783         DO 460 I=1,NEP
51784           PMSUM=PMSUM+P(N+I,5)
51785   460   CONTINUE
51786         IF(PMSUM.GE.PS(5)) GOTO 340
51787       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
51788         DO 470 I1=N+1,N+2
51789           IRDA=IREF(I1-NS)
51790           IF(KSH(IRDA).EQ.0) GOTO 470
51791           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 470
51792           IF(IRDA.EQ.21) THEN
51793             IRGD1=IABS(K(I1,5))
51794             IRGD2=IRGD1
51795           ELSE
51796             IRGD1=IRDA
51797             IRGD2=IABS(K(I1,5))
51798           ENDIF
51799           I2=2*N+3-I1
51800           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51801             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
51802           ELSE
51803             IF(I1.EQ.N+1) ZM=V(IM,1)
51804             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
51805             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
51806      &      4D0*V(N+1,5)*V(N+2,5))
51807             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
51808      &      V(IM,5)
51809           ENDIF
51810           IF(MOD(MSTJ(43),2).EQ.1) THEN
51811             PMQTH3=0.5D0*PARJ(82)
51812             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
51813             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
51814             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
51815             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
51816             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
51817      &      4D0*PMQ1*PMQ2)))
51818             ZH=1D0+PMQ1-PMQ2
51819           ELSE
51820             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
51821             ZH=1D0
51822           ENDIF
51823           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
51824      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51825           ELSE
51826             ZL=0.5D0*(ZH-ZD)
51827             ZU=0.5D0*(ZH+ZD)
51828             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
51829      &      ISSET(1).EQ.0) THEN
51830               ISL(1)=1
51831             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
51832      &      ISSET(2).EQ.0) THEN
51833               ISL(2)=1
51834             ENDIF
51835           ENDIF
51836           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
51837      &    ZL*(1D0-ZU)))
51838           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
51839   470   CONTINUE
51840         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
51841           ISL(3-ISLM)=0
51842           ISLM=3-ISLM
51843         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
51844           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
51845           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
51846           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
51847           IF(ISL(1).EQ.1) ISL(2)=0
51848           IF(ISL(1).EQ.0) ISLM=1
51849           IF(ISL(2).EQ.0) ISLM=2
51850         ENDIF
51851         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 340
51852       ENDIF
51853       IRD1=IREF(N+1-NS)
51854       IRD2=IREF(N+2-NS)
51855       IF(IGM.GT.0) THEN
51856         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
51857      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
51858           PMQ1=V(N+1,5)/V(IM,5)
51859           PMQ2=V(N+2,5)/V(IM,5)
51860           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
51861      &    4D0*PMQ1*PMQ2)))
51862           ZH=1D0+PMQ1-PMQ2
51863           ZL=0.5D0*(ZH-ZD)
51864           ZU=0.5D0*(ZH+ZD)
51865           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 340
51866         ENDIF
51867       ENDIF
51868  
51869 C...Accepted branch. Construct four-momentum for initial partons.
51870   480 MAZIP=0
51871       MAZIC=0
51872       IF(NEP.EQ.1) THEN
51873         P(N+1,1)=0D0
51874         P(N+1,2)=0D0
51875         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
51876      &  P(N+1,5))))
51877         P(N+1,4)=P(IPA(1),4)
51878         V(N+1,2)=P(N+1,4)
51879       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
51880         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
51881         P(N+1,1)=0D0
51882         P(N+1,2)=0D0
51883         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
51884         P(N+1,4)=PED1
51885         P(N+2,1)=0D0
51886         P(N+2,2)=0D0
51887         P(N+2,3)=-P(N+1,3)
51888         P(N+2,4)=P(IM,5)-PED1
51889         V(N+1,2)=P(N+1,4)
51890         V(N+2,2)=P(N+2,4)
51891       ELSEIF(NEP.GE.3) THEN
51892 C...Rescale all momenta for energy conservation.
51893         LOOP=0
51894         PES=0D0
51895         PQS=0D0
51896         DO 500 I=1,NEP
51897           DO 490 J=1,4
51898             P(N+I,J)=P(IPA(I),J)
51899   490     CONTINUE
51900           PES=PES+P(N+I,4)
51901           PQS=PQS+P(N+I,5)**2/P(N+I,4)
51902   500   CONTINUE
51903   510   LOOP=LOOP+1
51904         FAC=(PS(5)-PQS)/(PES-PQS)
51905         PES=0D0
51906         PQS=0D0
51907         DO 530 I=1,NEP
51908           DO 520 J=1,3
51909             P(N+I,J)=FAC*P(N+I,J)
51910   520     CONTINUE
51911           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)
51912           V(N+I,2)=P(N+I,4)
51913           PES=PES+P(N+I,4)
51914           PQS=PQS+P(N+I,5)**2/P(N+I,4)
51915   530   CONTINUE
51916         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 510
51917  
51918 C...Construct transverse momentum for ordinary branching in shower.
51919       ELSE
51920         ZM=V(IM,1)
51921         LOOPPT=0
51922   540   LOOPPT=LOOPPT+1
51923         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
51924         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
51925         IF(PZM.LE.0D0) THEN
51926           PTS=0D0
51927         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
51928      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51929           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
51930         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
51931           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
51932      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
51933         ELSE
51934           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
51935         ENDIF
51936         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
51937           ZM=0.05D0+0.9D0*ZM
51938           GOTO 540
51939         ELSEIF(PTS.LT.0D0) THEN
51940           GOTO 270
51941         ENDIF
51942         PT=SQRT(MAX(0D0,PTS))
51943  
51944 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
51945         HAZIP=0D0
51946         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
51947      &  .AND.IAU.NE.0) THEN
51948           IF(K(IGM,3).NE.0) MAZIP=1
51949           ZAU=V(IGM,1)
51950           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
51951           IF(MAZIP.EQ.0) ZAU=0D0
51952           IF(K(IGM,2).NE.21) THEN
51953             HAZIP=2D0*ZAU/(1D0+ZAU**2)
51954           ELSE
51955             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
51956           ENDIF
51957           IF(K(N+1,2).NE.21) THEN
51958             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
51959           ELSE
51960             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
51961           ENDIF
51962         ENDIF
51963  
51964 C...Find coefficient of azimuthal asymmetry due to soft gluon
51965 C...interference.
51966         HAZIC=0D0
51967         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
51968      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
51969           IF(K(IGM,3).NE.0) MAZIC=N+1
51970           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
51971           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
51972      &    ZM.GT.0.5D0) MAZIC=N+2
51973           IF(K(IAU,2).EQ.22) MAZIC=0
51974           ZS=ZM
51975           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
51976           ZGM=V(IGM,1)
51977           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
51978           IF(MAZIC.EQ.0) ZGM=1D0
51979           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
51980      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
51981           HAZIC=MIN(0.95D0,HAZIC)
51982         ENDIF
51983       ENDIF
51984  
51985 C...Construct energies for ordinary branching in shower.
51986   550 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
51987         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
51988      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51989           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
51990      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
51991         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
51992           P(N+1,4)=PEM*V(IM,1)
51993         ELSE
51994           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
51995      &    SQRT(PMLS)*ZM)/V(IM,5)
51996         ENDIF
51997  
51998 C...Already predetermined choice of phi angle or not
51999         PHI=PARU(2)*PYR(0)
52000         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
52001           IPSPD=IP1+IM-NS-2
52002           IF(K(IPSPD,4).GT.0) THEN
52003             IPSGD1=K(IPSPD,4)
52004             IF(IM.EQ.NS+2) THEN
52005               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
52006             ELSE
52007               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
52008             ENDIF
52009           ENDIF
52010         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
52011           IPSPD=IP1+IM-NS-2
52012           IF(K(IPSPD,4).GT.0) THEN
52013             IPSGD1=K(IPSPD,4)
52014             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
52015             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
52016             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
52017             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
52018             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
52019             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
52020           ENDIF
52021         ENDIF
52022  
52023 C...Construct momenta for ordinary branching in shower.
52024         P(N+1,1)=PT*COS(PHI)
52025         P(N+1,2)=PT*SIN(PHI)
52026         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
52027      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
52028           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
52029      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
52030         ELSEIF(PZM.GT.0D0) THEN
52031           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
52032      &    2D0*PEM*P(N+1,4))/PZM
52033         ELSE
52034           P(N+1,3)=0D0
52035         ENDIF
52036         P(N+2,1)=-P(N+1,1)
52037         P(N+2,2)=-P(N+1,2)
52038         P(N+2,3)=PZM-P(N+1,3)
52039         P(N+2,4)=PEM-P(N+1,4)
52040         IF(MSTJ(43).LE.2) THEN
52041           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
52042           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
52043         ENDIF
52044       ENDIF
52045  
52046 C...Rotate and boost daughters.
52047       IF(IGM.GT.0) THEN
52048         IF(MSTJ(43).LE.2) THEN
52049           BEX=P(IGM,1)/P(IGM,4)
52050           BEY=P(IGM,2)/P(IGM,4)
52051           BEZ=P(IGM,3)/P(IGM,4)
52052           GA=P(IGM,4)/P(IGM,5)
52053           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
52054      &    P(IM,4))
52055         ELSE
52056           BEX=0D0
52057           BEY=0D0
52058           BEZ=0D0
52059           GA=1D0
52060           GABEP=0D0
52061         ENDIF
52062         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
52063         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
52064         IF(PTIMB.GT.1D-4) THEN
52065           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
52066         ELSE
52067           PHI=0D0
52068         ENDIF
52069         DO 560 I=N+1,N+2
52070           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
52071      &    SIN(THE)*COS(PHI)*P(I,3)
52072           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
52073      &    SIN(THE)*SIN(PHI)*P(I,3)
52074           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
52075           DP(4)=P(I,4)
52076           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
52077           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
52078           P(I,1)=DP(1)+DGABP*BEX
52079           P(I,2)=DP(2)+DGABP*BEY
52080           P(I,3)=DP(3)+DGABP*BEZ
52081           P(I,4)=GA*(DP(4)+DBP)
52082   560   CONTINUE
52083       ENDIF
52084  
52085 C...Weight with azimuthal distribution, if required.
52086       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
52087         DO 570 J=1,3
52088           DPT(1,J)=P(IM,J)
52089           DPT(2,J)=P(IAU,J)
52090           DPT(3,J)=P(N+1,J)
52091   570   CONTINUE
52092         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
52093         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
52094         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
52095         DO 580 J=1,3
52096           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
52097           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
52098   580   CONTINUE
52099         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
52100         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
52101         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
52102           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
52103      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
52104           IF(MAZIP.NE.0) THEN
52105             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
52106      &      GOTO 550
52107           ENDIF
52108           IF(MAZIC.NE.0) THEN
52109             IF(MAZIC.EQ.N+2) CAD=-CAD
52110             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
52111      &      .LT.PYR(0)) GOTO 550
52112           ENDIF
52113         ENDIF
52114       ENDIF
52115  
52116 C...Azimuthal anisotropy due to interference with initial state partons.
52117       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
52118      &K(N+2,2).EQ.21)) THEN
52119         III=IM-NS-1
52120         IF(ISII(III).GE.1) THEN
52121           IAZIID=N+1
52122           IF(K(N+1,2).NE.21) IAZIID=N+2
52123           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
52124      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
52125           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
52126           IF(III.EQ.2) THEIID=PARU(1)-THEIID
52127           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
52128           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
52129           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
52130           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
52131           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
52132           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
52133      &    .LT.PYR(0)) GOTO 550
52134         ENDIF
52135       ENDIF
52136  
52137 C...Continue loop over partons that may branch, until none left.
52138       IF(IGM.GE.0) K(IM,1)=14
52139       N=N+NEP
52140       NEP=2
52141       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
52142         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
52143         IF(MSTU(21).GE.1) N=NS
52144         IF(MSTU(21).GE.1) RETURN
52145       ENDIF
52146       GOTO 280
52147  
52148 C...Set information on imagined shower initiator.
52149   590 IF(NPA.GE.2) THEN
52150         K(NS+1,1)=11
52151         K(NS+1,2)=94
52152         K(NS+1,3)=IP1
52153         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
52154         K(NS+1,4)=NS+2
52155         K(NS+1,5)=NS+1+NPA
52156         IIM=1
52157       ELSE
52158         IIM=0
52159       ENDIF
52160  
52161 C...Reconstruct string drawing information.
52162       DO 600 I=NS+1+IIM,N
52163         KQ=KCHG(PYCOMP(K(I,2)),2)
52164         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
52165           K(I,1)=1
52166         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
52167      &    IABS(K(I,2)).LE.18) THEN
52168           K(I,1)=1
52169         ELSEIF(K(I,1).LE.10) THEN
52170           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
52171           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
52172         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
52173           ID1=MOD(K(I,4),MSTU(5))
52174           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
52175           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
52176      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
52177           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
52178           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
52179           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
52180           K(ID1,4)=K(ID1,4)+MSTU(5)*I
52181           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
52182           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
52183           K(ID2,5)=K(ID2,5)+MSTU(5)*I
52184         ELSE
52185           ID1=MOD(K(I,4),MSTU(5))
52186           ID2=ID1+1
52187           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
52188           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
52189           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
52190             K(ID1,4)=K(ID1,4)+MSTU(5)*I
52191             K(ID1,5)=K(ID1,5)+MSTU(5)*I
52192           ELSE
52193             K(ID1,4)=0
52194             K(ID1,5)=0
52195           ENDIF
52196           K(ID2,4)=0
52197           K(ID2,5)=0
52198         ENDIF
52199   600 CONTINUE
52200  
52201 C...Transformation from CM frame.
52202       IF(NPA.EQ.1) THEN
52203         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
52204         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
52205         MSTU(33)=1
52206         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
52207       ELSEIF(NPA.EQ.2) THEN
52208         BEX=PS(1)/PS(4)
52209         BEY=PS(2)/PS(4)
52210         BEZ=PS(3)/PS(4)
52211         GA=PS(4)/PS(5)
52212         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
52213      &  /(1D0+GA)-P(IPA(1),4))
52214         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
52215      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
52216         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
52217         MSTU(33)=1
52218         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
52219       ELSE
52220         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
52221      &  PS(3)/PS(4))
52222         MSTU(33)=1
52223         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
52224       ENDIF
52225  
52226 C...Decay vertex of shower.
52227       DO 620 I=NS+1,N
52228         DO 610 J=1,5
52229           V(I,J)=V(IP1,J)
52230   610   CONTINUE
52231   620 CONTINUE
52232  
52233 C...Delete trivial shower, else connect initiators.
52234       IF(N.LE.NS+NPA+IIM) THEN
52235         N=NS
52236       ELSE
52237         DO 630 IP=1,NPA
52238           K(IPA(IP),1)=14
52239           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
52240           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
52241           K(NS+IIM+IP,3)=IPA(IP)
52242           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
52243           IF(K(NS+IIM+IP,1).NE.1) THEN
52244             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
52245             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
52246           ENDIF
52247   630   CONTINUE
52248       ENDIF
52249  
52250       RETURN
52251       END
52252  
52253 C*********************************************************************
52254  
52255 C...PYMAEL
52256 C...Auxiliary to PYSHOW.
52257 C...Matrix elements for gluon (or photon) emission from
52258 C...a two-body state; to be used by the parton shower routine.
52259 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
52260 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
52261 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
52262 C...i.e. normalization is such that one recovers the familiar
52263 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
52264 C...Coupling structure:
52265 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
52266 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
52267 C...   = 16-19 : q -> q V
52268 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
52269 C...   = 26-29 : q -> q S
52270 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
52271 C...   = 36-39 : ~q -> ~q V
52272 C...   = 41-44 : S -> ~q ~qbar
52273 C...   = 46-49 : ~q -> ~q S
52274 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
52275 C...   = 56-59 : ~q -> q chi
52276 C...   = 61-64 : q -> ~q chi
52277 C...   = 66-69 : ~g -> q ~qbar
52278 C...   = 71-74 : ~q -> q ~g
52279 C...   = 76-79 : q -> ~q ~g
52280 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
52281 C...Note that the order of the decay products is important.
52282 C...In each set of four, the variants are ordered as:
52283 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
52284 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
52285 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
52286 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
52287  
52288       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
52289  
52290 C...Double precision and integer declarations.
52291       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52292       IMPLICIT INTEGER(I-N)
52293  
52294 C...Check input values. Return zero outside allowed phase space.
52295       PYMAEL=0D0
52296       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
52297       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
52298       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
52299       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
52300      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
52301       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
52302  
52303 C...Initial values and flags.
52304       ICLASS=NI/5
52305       ICOMBI=NI-5*ICLASS
52306       ISSET1=0
52307       ISSET2=0
52308       ISSET4=0
52309  
52310 C... Phase space.
52311       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
52312  
52313 C...Eikonal expression; also acts as default.
52314       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
52315         RLO=PS
52316         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
52317           ANUM=0D0
52318         ELSEIF(ICOMBI.EQ.2) THEN
52319           ANUM=(2D0-X1-X2)**2
52320         ELSEIF(ICOMBI.EQ.3) THEN
52321           ANUM=ALPCOR*(2D0-X1-X2)**2
52322         ELSE
52323           ANUM=0.5D0*(2D0-X1-X2)**2
52324         ENDIF
52325         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
52326      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
52327      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
52328      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
52329         ICOMBI=0
52330  
52331 C...V -> q qbar (V = gamma*/Z0/W+-/...).
52332       ELSEIF(ICLASS.EQ.2) THEN
52333         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52334         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
52335         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
52336      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
52337      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
52338      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
52339      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
52340      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
52341      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
52342      &       (-1+R1**2-R2**2+X2)**2
52343         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
52344      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
52345      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
52346      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
52347      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
52348      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
52349      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52350         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
52351      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
52352      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
52353      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
52354      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
52355         RFO1=RFO1/2.D0
52356         ISSET1=1
52357         ENDIF
52358         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52359         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
52360         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
52361      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
52362      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
52363      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
52364      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
52365      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
52366      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
52367         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
52368      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
52369      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
52370      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
52371      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
52372      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
52373      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52374         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
52375      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
52376      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
52377      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
52378      &       +X2)/(-1-R1**2+R2**2+X1)**2
52379         RFO2=RFO2/2.D0
52380         ISSET2=1
52381         ENDIF
52382         IF(ICOMBI.EQ.4) THEN
52383         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
52384         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
52385      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
52386      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
52387      &       (-1-R1**2+R2**2+X1)**2
52388         RFO4=RFO4
52389      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
52390      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
52391      &       -R1**2*X2**2+X1*X2**2)/
52392      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52393         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
52394      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
52395      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
52396      &       (-1+R1**2-R2**2+X2)**2
52397         RFO4=RFO4/2.D0
52398         ISSET4=1
52399         ENDIF
52400  
52401 C...q -> q V.
52402       ELSEIF(ICLASS.EQ.3) THEN
52403         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52404         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
52405      &        +R1**2*R2**2-2D0*R2**4)
52406         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
52407      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
52408      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
52409      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
52410      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
52411      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
52412      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
52413         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
52414      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
52415      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
52416      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52417      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52418         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
52419      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
52420      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
52421      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
52422      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52423      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
52424      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
52425         ISSET1=1
52426         ENDIF
52427         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52428         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
52429      &        +R1**2*R2**2-2D0*R2**4)
52430         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
52431      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
52432      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
52433      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
52434      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
52435      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
52436      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52437         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
52438      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
52439      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
52440      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52441      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52442         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
52443      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
52444      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
52445      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
52446      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52447      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
52448      &       +X1*X2**2)/(-2+X1+X2)**2
52449         ISSET2=1
52450         ENDIF
52451         IF(ICOMBI.EQ.4) THEN
52452         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
52453         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
52454      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
52455      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
52456      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
52457      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52458         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
52459      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
52460      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52461      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52462         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
52463      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
52464      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
52465      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52466      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
52467      &       +X1*X2**2)/(2-X1-X2)**2
52468         ISSET4=1
52469         ENDIF
52470  
52471 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
52472       ELSEIF(ICLASS.EQ.4) THEN
52473         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52474         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
52475         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52476      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52477      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52478      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
52479      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
52480      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52481      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52482      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52483      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52484         ISSET1=1
52485         ENDIF
52486         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52487         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
52488         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52489      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52490      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52491      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52492      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
52493      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52494      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
52495      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
52496      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
52497      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52498         ISSET2=1
52499         ENDIF
52500         IF(ICOMBI.EQ.4) THEN
52501         RLO4=PS*(1D0-R1**2-R2**2)
52502         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
52503      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52504      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
52505      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
52506      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52507      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
52508      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52509         ISSET4=1
52510         ENDIF
52511  
52512 C...q -> q S.
52513       ELSEIF(ICLASS.EQ.5) THEN
52514         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52515         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52516         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
52517      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52518      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
52519      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52520      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
52521      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
52522      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52523      &       (-1+R1**2-R2**2+X2)**2
52524         ISSET1=1
52525         ENDIF
52526         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52527         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
52528         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
52529      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52530      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
52531      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52532      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
52533      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
52534      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52535      &       (-1+R1**2-R2**2+X2)**2
52536         ISSET2=1
52537         ENDIF
52538         IF(ICOMBI.EQ.4) THEN
52539         RLO4=PS*(1D0+R1**2-R2**2)
52540         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
52541      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52542      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
52543      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
52544      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
52545      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
52546         ISSET4=1
52547         ENDIF
52548  
52549 C...V -> ~q ~qbar  (~q = squark).
52550       ELSEIF(ICLASS.EQ.6) THEN
52551         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
52552         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
52553      &       (-1-R1**2+R2**2+X1)**2
52554      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
52555      &       (-1-R1**2+R2**2+X1)
52556      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
52557      &       /(-1+R1**2-R2**2+X2)**2
52558      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
52559      &       (-1+R1**2-R2**2+X2)
52560      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
52561      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
52562      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
52563      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52564         ISSET1=1
52565  
52566 C...~q -> ~q V.
52567       ELSEIF(ICLASS.EQ.7) THEN
52568         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
52569         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
52570      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
52571      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
52572      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
52573      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
52574      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
52575      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
52576      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
52577      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
52578      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
52579      &       (3*(-2+X1+X2))
52580         RFO1=3D0*RFO1/8D0
52581         ISSET1=1
52582  
52583 C...S -> ~q ~qbar.
52584       ELSEIF(ICLASS.EQ.8) THEN
52585         RLO1=PS
52586         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
52587      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
52588      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
52589      &       -R1**2*X2**2+X1*X2**2)/
52590      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
52591         RFO1=2D0*RFO1
52592         ISSET1=1
52593  
52594 C...~q -> ~q S.
52595       ELSEIF(ICLASS.EQ.9) THEN
52596         RLO1=PS
52597         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52598      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52599      &       -(X1+X2)/(-2+X1+X2)**2
52600         ISSET1=1
52601  
52602 C...chi -> q ~qbar   (chi = neutralino/chargino).
52603       ELSEIF(ICLASS.EQ.10) THEN
52604         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52605         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52606         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
52607      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
52608      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
52609      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52610      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
52611      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52612      &       (-1+R1**2-R2**2+X2)**2
52613         ISSET1=1
52614         ENDIF
52615         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52616         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
52617         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
52618      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
52619      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
52620      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52621      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
52622      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52623      &       (-1+R1**2-R2**2+X2)**2
52624         ISSET2=1
52625         ENDIF
52626         IF(ICOMBI.EQ.4) THEN
52627         RLO4=PS*(1+R1**2-R2**2)
52628         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
52629      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
52630      &       +X2+R1**2*X2-X1*X2/2)/
52631      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52632      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
52633      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
52634         ISSET4=1
52635         ENDIF
52636  
52637 C...~q -> q chi.
52638       ELSEIF(ICLASS.EQ.11) THEN
52639         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52640         RLO1=PS*(1D0-(R1+R2)**2)
52641         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
52642      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52643      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52644      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52645      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
52646      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52647      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52648         ISSET1=1
52649         ENDIF
52650         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52651         RLO2=PS*(1D0-(R1-R2)**2)
52652         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
52653      &       (-2+X1+X2)**2
52654      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52655      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
52656      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52657      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
52658      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52659      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52660         ISSET2=1
52661         ENDIF
52662         IF(ICOMBI.EQ.4) THEN
52663         RLO4=PS*(1D0-R1**2-R2**2)
52664         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
52665      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
52666      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
52667      &       (-1+R1**2-R2**2+X2)**2
52668      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
52669      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
52670      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52671         ISSET4=1
52672         ENDIF
52673  
52674 C...q -> ~q chi.
52675       ELSEIF(ICLASS.EQ.12) THEN
52676         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52677         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
52678         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52679      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
52680      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
52681      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
52682      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52683      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52684         ISSET1=1
52685         END IF
52686         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52687         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
52688         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
52689      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
52690      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
52691      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
52692      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52693      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52694         ISSET2=1
52695         END IF
52696         IF(ICOMBI.EQ.4) THEN
52697         RLO4=PS*(1D0-R1**2+R2**2)
52698         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52699      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
52700      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
52701      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
52702      &       +R1**2*X2-X1*X2/2-X2**2/2)/
52703      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52704         ISSET4=1
52705         END IF
52706  
52707 C...~g -> q ~qbar.
52708       ELSEIF(ICLASS.EQ.13) THEN
52709         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52710         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52711         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
52712      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
52713      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
52714      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
52715      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
52716      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
52717      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
52718      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
52719      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
52720      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
52721      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
52722      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52723      &       (3*(-1+R1**2-R2**2+X2)**2)
52724         RFO1=3D0*RFO1/4D0
52725         ISSET1=1
52726         ENDIF
52727         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52728         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
52729         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
52730      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
52731      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52732      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
52733      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
52734      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
52735      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
52736      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
52737      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
52738      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52739      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
52740      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
52741      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52742      &       (3*(-1+R1**2-R2**2+X2)**2)
52743         RFO2=3D0*RFO2/4D0
52744         ISSET2=1
52745         ENDIF
52746         IF(ICOMBI.EQ.4) THEN
52747         RLO4=PS*(1D0+R1**2-R2**2)
52748         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
52749      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
52750      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
52751      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
52752      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
52753      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52754      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
52755      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52756      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
52757      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52758      &       (3*(-1+R1**2-R2**2+X2)**2)
52759         RFO4=3D0*RFO4/8D0
52760         ISSET4=1
52761         ENDIF
52762  
52763 C...~q -> q ~g.
52764       ELSEIF(ICLASS.EQ.14) THEN
52765         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52766         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
52767         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
52768      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52769      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52770      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
52771      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
52772      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
52773      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
52774      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52775      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52776      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
52777      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
52778      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
52779      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
52780         RFO1=RFO1
52781      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
52782      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52783      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52784         RFO1=9D0*RFO1/64D0
52785         ISSET1=1
52786         ENDIF
52787         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52788         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
52789         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
52790      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52791      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52792      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
52793      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
52794      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
52795      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
52796      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
52797      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
52798      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
52799         RFO2=RFO2
52800      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
52801      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
52802      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
52803      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
52804      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
52805      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52806         RFO2=9D0*RFO2/64D0
52807         ISSET2=1
52808         ENDIF
52809         IF(ICOMBI.EQ.4) THEN
52810         RLO4=PS*(1-R1**2-R2**2)
52811         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
52812      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
52813      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52814      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
52815      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
52816      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
52817      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
52818      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
52819      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
52820      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
52821      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
52822         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
52823      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
52824      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
52825         RFO4=9D0*RFO4/128D0
52826         ISSET4=1
52827         ENDIF
52828  
52829 C...q -> ~q ~g.
52830       ELSEIF(ICLASS.EQ.15) THEN
52831         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52832         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
52833         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
52834      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
52835      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
52836      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
52837      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
52838      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
52839      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
52840      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
52841      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
52842         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
52843      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
52844      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
52845      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
52846      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52847         RFO1=9D0*RFO1/32D0
52848         ISSET1=1
52849         END IF
52850         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52851         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
52852         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
52853      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
52854      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
52855      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
52856      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
52857      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
52858      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
52859      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
52860      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52861         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
52862      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
52863      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
52864      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52865      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52866         RFO2=9D0*RFO2/32D0
52867         ISSET2=1
52868         END IF
52869         IF(ICOMBI.EQ.4) THEN
52870         RLO4=PS*(1D0-R1**2+R2**2)
52871         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
52872      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
52873      &       -R2**2*X2/2-X1*X2/2)/
52874      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
52875      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
52876      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52877      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
52878      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
52879         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
52880      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
52881      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
52882      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52883         RFO4=9D0*RFO4/64D0
52884         ISSET4=1
52885         END IF
52886  
52887 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
52888       ELSEIF(ICLASS.EQ.16) THEN
52889         RLO=PS
52890         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
52891           ANUM=0D0
52892         ELSEIF(ICOMBI.EQ.2) THEN
52893           ANUM=(2D0-X1-X2)**2
52894         ELSEIF(ICOMBI.EQ.3) THEN
52895           ANUM=ALPCOR*(2D0-X1-X2)**2
52896         ELSE
52897           ANUM=0.5D0*(2D0-X1-X2)**2
52898         ENDIF
52899         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
52900      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
52901      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
52902      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
52903         RFO=9D0*RFO/4D0
52904         ICOMBI=0
52905       ENDIF
52906  
52907 C...Find relevant LO and FO expression.
52908       IF(ICOMBI.EQ.0) THEN
52909       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
52910         RLO=RLO1
52911         RFO=RFO1
52912       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
52913         RLO=RLO2
52914         RFO=RFO2
52915       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
52916         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
52917         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
52918       ELSEIF(ISSET4.EQ.1) THEN
52919         RLO=RLO4
52920         RFO=RFO4
52921       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
52922         RLO=0.5D0*(RLO1+RLO2)
52923         RFO=0.5D0*(RFO1+RFO2)
52924       ELSEIF(ISSET1.EQ.1) THEN
52925         RLO=RLO1
52926         RFO=RFO1
52927       ELSE
52928         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
52929         RLO=1D0
52930         RFO=0D0
52931       ENDIF
52932  
52933 C...Output.
52934       PYMAEL=RFO/RLO
52935  
52936       RETURN
52937       END
52938  
52939 C*********************************************************************
52940  
52941 C...PYBOEI
52942 C...Modifies an event so as to approximately take into account
52943 C...Bose-Einstein effects according to a simple phenomenological
52944 C...parametrization.
52945  
52946       SUBROUTINE PYBOEI(NSAV)
52947  
52948 C...Double precision and integer declarations.
52949       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52950       IMPLICIT INTEGER(I-N)
52951       INTEGER PYK,PYCHGE,PYCOMP
52952 C...Parameter statement to help give large particle numbers.
52953       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52954      &KEXCIT=4000000,KDIMEN=5000000)
52955 C...Commonblocks.
52956       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
52957       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52958       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52959       COMMON/PYINT1/MINT(400),VINT(400)
52960       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
52961 C...Local arrays and data.
52962       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
52963      &BEIW(100),BEI3W(100)
52964       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
52965 C...Statement function: squared invariant mass.
52966       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
52967      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
52968  
52969 C...Boost event to overall CM frame. Calculate CM energy.
52970       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
52971       DO 100 J=1,4
52972         DPS(J)=0D0
52973   100 CONTINUE
52974       DO 120 I=1,N
52975         KFA=IABS(K(I,2))
52976         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
52977      &  .AND.K(I,3).GT.0) THEN
52978           KFMA=IABS(K(K(I,3),2))
52979           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
52980         ENDIF
52981         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
52982         DO 110 J=1,4
52983           DPS(J)=DPS(J)+P(I,J)
52984   110   CONTINUE
52985   120 CONTINUE
52986       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
52987      &-DPS(3)/DPS(4))
52988       PECM=0D0
52989       DO 130 I=1,N
52990         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
52991   130 CONTINUE
52992  
52993 C...Check if we have separated strings
52994  
52995 C...Reserve copy of particles by species at end of record.
52996       IWP=0
52997       IWN=0
52998       NBE(0)=N+MSTU(3)
52999       NMAX=NBE(0)
53000       SMMIN=PECM
53001       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
53002         NBE(IBE)=NBE(IBE-1)
53003         DO 180 I=NSAV+1,N
53004           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
53005             DO 140 IIBE=1,IBE-1
53006               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
53007   140       CONTINUE
53008           ELSE
53009             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
53010           ENDIF
53011           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
53012           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
53013             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
53014             RETURN
53015           ENDIF
53016           NBE(IBE)=NBE(IBE)+1
53017           NMAX=NBE(IBE)
53018           K(NBE(IBE),1)=I
53019           K(NBE(IBE),2)=0
53020           K(NBE(IBE),3)=0
53021           K(NBE(IBE),4)=0
53022           K(NBE(IBE),5)=0
53023           P(NBE(IBE),1)=0.0D0
53024           P(NBE(IBE),2)=0.0D0
53025           P(NBE(IBE),3)=0.0D0
53026           P(NBE(IBE),4)=0.0D0
53027           P(NBE(IBE),5)=0.0D0
53028           SMMIN=MIN(SMMIN,P(I,5))
53029 C...Check if particles comes from different W's or Z's
53030           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
53031             IM=I
53032   150       IF(K(IM,3).GT.0) THEN
53033               IM=K(IM,3)
53034               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
53035               K(NBE(IBE),5)=IM
53036               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
53037               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
53038               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
53039               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
53040             ENDIF
53041           ENDIF
53042 C...Check if particles comes from different strings.
53043           IF(PARJ(94).GT.0.0D0) THEN
53044             IM=I
53045   160       IF(K(IM,3).GT.0) THEN
53046               IM=K(IM,3)
53047               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
53048               K(NBE(IBE),5)=IM
53049             ENDIF
53050           ENDIF
53051           DO 170 J=1,3
53052             P(NBE(IBE),J)=0D0
53053             V(NBE(IBE),J)=0D0
53054   170     CONTINUE
53055           P(NBE(IBE),5)=-1.0D0
53056   180   CONTINUE
53057   190 CONTINUE
53058       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
53059  
53060 C...Calculate separation between W+ and W- or between two Z0's.
53061 C...No separation if there has been re-connections.
53062       SIGW=PARJ(93)
53063       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
53064         IF(K(IWP,2).EQ.23) THEN
53065           DMW=PMAS(23,1)
53066           DGW=PMAS(23,2)
53067         ELSE
53068           DMW=PMAS(24,1)
53069           DGW=PMAS(24,2)
53070         ENDIF
53071         DMP=P(IWP,5)
53072         DMN=P(IWN,5)
53073         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
53074         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
53075         TAUP=-TAUPD*LOG(PYR(IDUM))
53076         TAUN=-TAUND*LOG(PYR(IDUM))
53077         DXP=TAUP*PYP(IWP,8)/DMP
53078         DXN=TAUN*PYP(IWN,8)/DMN
53079         DX=DXP+DXN
53080         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
53081         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
53082       ENDIF
53083  
53084 C...Add separation between strings.
53085       IF(PARJ(94).GT.0.0D0) THEN
53086         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
53087         IWP=-1
53088         IWN=-1
53089       ENDIF
53090  
53091       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
53092         DO 220 IBE=1,MIN(9,MSTJ(52))
53093           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
53094             Q2MIN=PECM**2
53095             I1=K(I1M,1)
53096             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
53097               IF(I2M.EQ.I1M) GOTO 200
53098               I2=K(I2M,1)
53099               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
53100      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
53101      &        (P(I1,5)+P(I2,5))**2
53102               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
53103                 Q2MIN=Q2
53104               ENDIF
53105   200       CONTINUE
53106             P(I1M,5)=Q2MIN
53107   210     CONTINUE
53108   220   CONTINUE
53109       ENDIF
53110  
53111 C...Tabulate integral for subsequent momentum shift.
53112       DO 400 IBE=1,MIN(9,MSTJ(52))
53113         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
53114         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
53115      &  .LE.1) GOTO 270
53116         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
53117      &  NBE(7)-NBE(6)).LE.1) GOTO 270
53118         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
53119         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
53120         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
53121         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
53122         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
53123         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
53124         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
53125         QDELW=0.1D0*MIN(PMHQ,SIGW)
53126         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
53127         IF(MSTJ(51).EQ.1) THEN
53128           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
53129           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
53130           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
53131           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
53132           BEEX=EXP(0.5D0*QDEL/PARJ(93))
53133           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
53134           BEEXW=EXP(0.5D0*QDELW/SIGW)
53135           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
53136           BERT=EXP(-QDEL/PARJ(93))
53137           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
53138           BERTW=EXP(-QDELW/SIGW)
53139           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
53140         ELSE
53141           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
53142           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
53143           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
53144           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
53145         ENDIF
53146         DO 230 IBIN=1,NBIN
53147           QBIN=QDEL*(IBIN-0.5D0)
53148           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53149           IF(MSTJ(51).EQ.1) THEN
53150             BEEX=BEEX*BERT
53151             BEI(IBIN)=BEI(IBIN)*BEEX
53152           ELSE
53153             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
53154           ENDIF
53155           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
53156   230   CONTINUE
53157         DO 240 IBIN=1,NBIN3
53158           QBIN=QDEL3*(IBIN-0.5D0)
53159           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53160           IF(MSTJ(51).EQ.1) THEN
53161             BEEX3=BEEX3*BERT3
53162             BEI3(IBIN)=BEI3(IBIN)*BEEX3
53163           ELSE
53164             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
53165           ENDIF
53166           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
53167   240   CONTINUE
53168         DO 250 IBIN=1,NBINW
53169           QBIN=QDELW*(IBIN-0.5D0)
53170           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53171           IF(MSTJ(51).EQ.1) THEN
53172             BEEXW=BEEXW*BERTW
53173             BEIW(IBIN)=BEIW(IBIN)*BEEXW
53174           ELSE
53175             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
53176           ENDIF
53177           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
53178   250   CONTINUE
53179         DO 260 IBIN=1,NBIN3W
53180           QBIN=QDEL3W*(IBIN-0.5D0)
53181           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
53182      &    SQRT(QBIN**2+PMHQ**2)
53183           IF(MSTJ(51).EQ.1) THEN
53184             BEEX3W=BEEX3W*BERT3W
53185             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
53186           ELSE
53187             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
53188           ENDIF
53189           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
53190   260   CONTINUE
53191  
53192 C...Loop through particle pairs and find old relative momentum.
53193   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
53194           I1=K(I1M,1)
53195           DO 380 I2M=I1M+1,NBE(IBE)
53196             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
53197             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
53198             I2=K(I2M,1)
53199             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
53200      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
53201             IF(Q2OLD.LE.0.0D0) GOTO 380
53202             QOLD=SQRT(Q2OLD)
53203  
53204 C...Calculate new relative momentum.
53205             QMOV=0.0D0
53206             QMOV3=0.0D0
53207             QMOVW=0.0D0
53208             QMOV3W=0.0D0
53209             IF(QOLD.LT.1D-3*QDEL) THEN
53210               GOTO 280
53211             ELSEIF(QOLD.LE.QDEL) THEN
53212               QMOV=QOLD/3D0
53213             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
53214               RBIN=QOLD/QDEL
53215               IBIN=RBIN
53216               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
53217               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
53218      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53219             ELSE
53220               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53221             ENDIF
53222   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
53223             IF(QOLD.LT.1D-3*QDEL3) THEN
53224               GOTO 290
53225             ELSEIF(QOLD.LE.QDEL3) THEN
53226               QMOV3=QOLD/3D0
53227             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
53228               RBIN3=QOLD/QDEL3
53229               IBIN3=RBIN3
53230               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
53231               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
53232      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53233             ELSE
53234               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53235             ENDIF
53236   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
53237             RSCALE=1.0D0
53238             IF(MSTJ(54).EQ.2)
53239      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
53240             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
53241      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
53242  
53243             IF(QOLD.LT.1D-3*QDELW) THEN
53244               GOTO 300
53245             ELSEIF(QOLD.LE.QDELW) THEN
53246               QMOVW=QOLD/3D0
53247             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
53248               RBINW=QOLD/QDELW
53249               IBINW=RBINW
53250               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
53251               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
53252      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53253             ELSE
53254               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53255             ENDIF
53256   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
53257             IF(QOLD.LT.1D-3*QDEL3W) THEN
53258               GOTO 310
53259             ELSEIF(QOLD.LE.QDEL3W) THEN
53260               QMOV3W=QOLD/3D0
53261             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
53262               RBIN3W=QOLD/QDEL3W
53263               IBIN3W=RBIN3W
53264               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
53265               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
53266      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53267             ELSE
53268               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53269             ENDIF
53270   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
53271             IF(MSTJ(54).EQ.2)
53272      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
53273  
53274   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
53275             DO 330 J=1,3
53276               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
53277               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
53278   330       CONTINUE
53279             IF(MSTJ(54).GE.1) THEN
53280               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
53281               DO 340 J=1,3
53282                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
53283                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
53284   340         CONTINUE
53285             ELSEIF(MSTJ(54).LE.-1) THEN
53286               EDEL=P(I1,4)+P(I2,4)-
53287      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
53288               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
53289      &        (P(I1,3)-P(I2,3))**2
53290               WMAX=-1.0D20
53291               MI3=0
53292               MI4=0
53293               S12=SDIP(I1,I2)
53294               SM1=(P(I1,5)+SMMIN)**2
53295               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53296                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
53297                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
53298                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
53299      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
53300                 I3=K(I3M,1)
53301                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
53302                 S13=SDIP(I1,I3)
53303                 S23=SDIP(I2,I3)
53304                 SM3=(P(I3,5)+SMMIN)**2
53305                 IF(MSTJ(54).EQ.-2) THEN
53306                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
53307      &            S23*MIN(SM1,SM3))*SM1)
53308                 ELSE
53309                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
53310      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
53311      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
53312      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
53313                 ENDIF
53314                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
53315                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
53316      &                 GOTO 360
53317                 ELSE
53318                   IF(WMAX*WI.GE.1.0) GOTO 360
53319                 ENDIF
53320                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
53321                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
53322                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
53323                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
53324      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
53325                   I4=K(I4M,1)
53326                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
53327      &            GOTO 350
53328                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
53329      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
53330      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
53331      &            GOTO 350
53332                   IF(MSTJ(54).EQ.-2) THEN
53333                     S14=SDIP(I1,I4)
53334                     S24=SDIP(I2,I4)
53335                     S34=SDIP(I3,I4)
53336                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
53337                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
53338                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
53339                     W=MIN(W,MIN(S23,S24)*S13*S14)
53340                     W=1.0D0/W
53341                   ELSE
53342 C...weight=1-cos(theta)/mtot2
53343                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
53344      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
53345      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
53346      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
53347                     W=1.0D0/S1234
53348                     IF(W.LE.WMAX) GOTO 350
53349                   ENDIF
53350                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
53351      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
53352                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
53353      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
53354                   IF(W.LE.WMAX) GOTO 350
53355                   MI3=I3M
53356                   MI4=I4M
53357                   WMAX=W
53358   350           CONTINUE
53359   360         CONTINUE
53360               IF(MI4.EQ.0) GOTO 380
53361               I3=K(MI3,1)
53362               I4=K(MI4,1)
53363               EOLD=P(I3,4)+P(I4,4)
53364               ENEW=EOLD+EDEL
53365               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
53366      &        (P(I3,3)+P(I4,3))**2
53367               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
53368               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
53369               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
53370               DO 370 J=1,3
53371                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
53372                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
53373   370         CONTINUE
53374             ENDIF
53375   380     CONTINUE
53376   390   CONTINUE
53377   400 CONTINUE
53378  
53379 C...Shift momenta and recalculate energies.
53380       ESUMP=0.0D0
53381       ESUM=0.0D0
53382       PROD=0.0D0
53383       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53384         I=K(IM,1)
53385         ESUMP=ESUMP+P(I,4)
53386         DO 410 J=1,3
53387           P(I,J)=P(I,J)+P(IM,J)
53388   410   CONTINUE
53389         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53390         ESUM=ESUM+P(I,4)
53391         DO 420 J=1,3
53392           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
53393   420   CONTINUE
53394   430 CONTINUE
53395  
53396       PARJ(96)=0.0D0
53397       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
53398   440   ALPHA=(ESUMP-ESUM)/PROD
53399         PARJ(96)=PARJ(96)+ALPHA
53400         PROD=0.0D0
53401         ESUM=0.0D0
53402         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53403           I=K(IM,1)
53404           DO 450 J=1,3
53405             P(I,J)=P(I,J)+ALPHA*V(IM,J)
53406   450     CONTINUE
53407           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53408           ESUM=ESUM+P(I,4)
53409           DO 460 J=1,3
53410             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
53411   460     CONTINUE
53412   470   CONTINUE
53413         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
53414      &  GOTO 440
53415       ENDIF
53416  
53417 C...Rescale all momenta for energy conservation.
53418       PES=0D0
53419       PQS=0D0
53420       DO 480 I=1,N
53421         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
53422         PES=PES+P(I,4)
53423         PQS=PQS+P(I,5)**2/P(I,4)
53424   480 CONTINUE
53425       PARJ(95)=PES-PECM
53426       FAC=(PECM-PQS)/(PES-PQS)
53427       DO 500 I=1,N
53428         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
53429         DO 490 J=1,3
53430           P(I,J)=FAC*P(I,J)
53431   490   CONTINUE
53432         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53433   500 CONTINUE
53434  
53435 C...Boost back to correct reference frame.
53436   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
53437       DO 520 I=1,N
53438         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
53439   520 CONTINUE
53440  
53441       RETURN
53442       END
53443  
53444 C*********************************************************************
53445  
53446 C...PYBESQ
53447 C...Calculates the momentum shift in a system of two particles assuming
53448 C...the relative momentum squared should be shifted to Q2NEW. NI is the
53449 C...last position occupied in /PYJETS/.
53450  
53451       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
53452  
53453 C...Double precision and integer declarations.
53454       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53455       IMPLICIT INTEGER(I-N)
53456       INTEGER PYK,PYCHGE,PYCOMP
53457 C...Parameter statement to help give large particle numbers.
53458       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53459      &KEXCIT=4000000,KDIMEN=5000000)
53460 C...Commonblocks.
53461       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53462       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53463       SAVE /PYJETS/,/PYDAT1/
53464 C...Local arrays and data.
53465       DIMENSION DP(5)
53466       SAVE HC1
53467  
53468       IF(MSTJ(55).EQ.0) THEN
53469         DQ2=Q2NEW-Q2OLD
53470         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
53471      &  (P(I1,3)-P(I2,3))**2
53472         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
53473      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
53474         SE=P(I1,4)+P(I2,4)
53475         DE=P(I1,4)-P(I2,4)
53476         DQ2SE=DQ2+SE**2
53477         DA=SE*DE*DP12-DP2*DQ2SE
53478         DB=DP2*DQ2SE-DP12**2
53479         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
53480         DO 100 J=1,3
53481           PD=HA*(P(I1,J)-P(I2,J))
53482           P(NI+1,J)=PD
53483           P(NI+2,J)=-PD
53484   100   CONTINUE
53485         RETURN
53486       ENDIF
53487  
53488       K(NI+1,1)=1
53489       K(NI+2,1)=1
53490       DO 110 J=1,5
53491         P(NI+1,J)=P(I1,J)
53492         P(NI+2,J)=P(I2,J)
53493         DP(J)=P(I1,J)+P(I2,J)
53494   110 CONTINUE
53495  
53496 C...Boost to cms and rotate first particle to z-axis
53497       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
53498      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
53499       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
53500       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
53501       S=Q2NEW+(P(I1,5)+P(I2,5))**2
53502       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
53503       P(NI+1,1)=0.0D0
53504       P(NI+1,2)=0.0D0
53505       P(NI+1,3)=PZ
53506       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
53507       P(NI+2,1)=0.0D0
53508       P(NI+2,2)=0.0D0
53509       P(NI+2,3)=-PZ
53510       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
53511       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
53512       CALL PYROBO(NI+1,NI+2,THE,PHI,
53513      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
53514  
53515       DO 120 J=1,3
53516         P(NI+1,J)=P(NI+1,J)-P(I1,J)
53517         P(NI+2,J)=P(NI+2,J)-P(I2,J)
53518   120 CONTINUE
53519  
53520       RETURN
53521       END
53522  
53523 C*********************************************************************
53524  
53525 C...PYMASS
53526 C...Gives the mass of a particle/parton.
53527  
53528       FUNCTION PYMASS(KF)
53529  
53530 C...Double precision and integer declarations.
53531       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53532       IMPLICIT INTEGER(I-N)
53533       INTEGER PYK,PYCHGE,PYCOMP
53534 C...Commonblocks.
53535       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53536       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53537       SAVE /PYDAT1/,/PYDAT2/
53538  
53539 C...Reset variables. Compressed code. Special case for popcorn diquarks.
53540       PYMASS=0D0
53541       KFA=IABS(KF)
53542       KC=PYCOMP(KF)
53543       IF(KC.EQ.0) THEN
53544         MSTJ(93)=0
53545         RETURN
53546       ENDIF
53547  
53548 C...Guarantee use of constituent masses for internal checks.
53549       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
53550      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
53551         IF(KFA.LE.5) THEN
53552           PYMASS=PARF(100+KFA)
53553           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
53554         ELSEIF(KFA.LE.10) THEN
53555           PYMASS=PMAS(KFA,1)
53556         ELSEIF(MSTJ(93).EQ.1) THEN
53557           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
53558         ELSE
53559           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
53560         ENDIF
53561  
53562 C...Other masses can be read directly off table.
53563       ELSE
53564         PYMASS=PMAS(KC,1)
53565       ENDIF
53566  
53567 C...Optional mass broadening according to truncated Breit-Wigner
53568 C...(either in m or in m^2).
53569       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
53570         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
53571           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
53572      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
53573         ELSE
53574           PM0=PYMASS
53575           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
53576      &    (PM0*PMAS(KC,2)))
53577           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
53578           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
53579      &    (PMUPP-PMLOW)*PYR(0))))
53580         ENDIF
53581       ENDIF
53582       MSTJ(93)=0
53583  
53584       RETURN
53585       END
53586  
53587 C*********************************************************************
53588  
53589 C...PYMRUN
53590 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
53591 C...for Higgs couplings. Everything else sent on to PYMASS.
53592  
53593       FUNCTION PYMRUN(KF,Q2)
53594  
53595 C...Double precision and integer declarations.
53596       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53597       IMPLICIT INTEGER(I-N)
53598       INTEGER PYK,PYCHGE,PYCOMP
53599 C...Commonblocks.
53600       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53601       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53602       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53603       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
53604  
53605 C...Most masses not handled here.
53606       KFA=IABS(KF)
53607       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
53608         PYMRUN=PYMASS(KF)
53609  
53610 C...Current-algebra masses, but no Q2 dependence.
53611       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
53612         PYMRUN=PARF(90+KFA)
53613  
53614 C...Running current-algebra masses.
53615       ELSE
53616         AS=PYALPS(Q2)
53617         PYMRUN=PARF(90+KFA)*
53618      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
53619      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
53620       ENDIF
53621  
53622       RETURN
53623       END
53624  
53625 C*********************************************************************
53626  
53627 C...PYNAME
53628 C...Gives the particle/parton name as a character string.
53629  
53630       SUBROUTINE PYNAME(KF,CHAU)
53631  
53632 C...Double precision and integer declarations.
53633       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53634       IMPLICIT INTEGER(I-N)
53635       INTEGER PYK,PYCHGE,PYCOMP
53636 C...Commonblocks.
53637       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53638       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53639       COMMON/PYDAT4/CHAF(500,2)
53640       CHARACTER CHAF*16
53641       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
53642 C...Local character variable.
53643       CHARACTER CHAU*16
53644  
53645 C...Read out code with distinction particle/antiparticle.
53646       CHAU=' '
53647       KC=PYCOMP(KF)
53648       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
53649  
53650  
53651       RETURN
53652       END
53653  
53654 C*********************************************************************
53655  
53656 C...PYCHGE
53657 C...Gives three times the charge for a particle/parton.
53658  
53659       FUNCTION PYCHGE(KF)
53660  
53661 C...Double precision and integer declarations.
53662       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53663       IMPLICIT INTEGER(I-N)
53664       INTEGER PYK,PYCHGE,PYCOMP
53665 C...Commonblocks.
53666       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53667       SAVE /PYDAT2/
53668  
53669 C...Read out charge and change sign for antiparticle.
53670       PYCHGE=0
53671       KC=PYCOMP(KF)
53672       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
53673  
53674       RETURN
53675       END
53676  
53677 C*********************************************************************
53678  
53679 C...PYCOMP
53680 C...Compress the standard KF codes for use in mass and decay arrays;
53681 C...also checks whether a given code actually is defined.
53682  
53683       FUNCTION PYCOMP(KF)
53684  
53685 C...Double precision and integer declarations.
53686       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53687       IMPLICIT INTEGER(I-N)
53688       INTEGER PYK,PYCHGE,PYCOMP
53689 C...Commonblocks.
53690       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53691       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53692       SAVE /PYDAT1/,/PYDAT2/
53693 C...Local arrays and saved data.
53694       DIMENSION KFORD(100:500),KCORD(101:500)
53695       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
53696  
53697 C...Whenever necessary reorder codes for faster search.
53698       IF(MSTU(20).EQ.0) THEN
53699         NFORD=100
53700         KFORD(100)=0
53701         DO 120 I=101,500
53702           KFA=KCHG(I,4)
53703           IF(KFA.LE.100) GOTO 120
53704           NFORD=NFORD+1
53705           DO 100 I1=NFORD-1,0,-1
53706             IF(KFA.GE.KFORD(I1)) GOTO 110
53707             KFORD(I1+1)=KFORD(I1)
53708             KCORD(I1+1)=KCORD(I1)
53709   100     CONTINUE
53710   110     KFORD(I1+1)=KFA
53711           KCORD(I1+1)=I
53712   120   CONTINUE
53713         MSTU(20)=1
53714         KFLAST=0
53715         KCLAST=0
53716       ENDIF
53717  
53718 C...Fast action if same code as in latest call.
53719       IF(KF.EQ.KFLAST) THEN
53720         PYCOMP=KCLAST
53721         RETURN
53722       ENDIF
53723  
53724 C...Starting values. Remove internal diquark flags.
53725       PYCOMP=0
53726       KFA=IABS(KF)
53727       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
53728      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
53729  
53730 C...Simple cases: direct translation.
53731       IF(KFA.GT.KFORD(NFORD)) THEN
53732       ELSEIF(KFA.LE.100) THEN
53733         PYCOMP=KFA
53734  
53735 C...Else binary search.
53736       ELSE
53737         IMIN=100
53738         IMAX=NFORD+1
53739   130   IAVG=(IMIN+IMAX)/2
53740         IF(KFORD(IAVG).GT.KFA) THEN
53741           IMAX=IAVG
53742           IF(IMAX.GT.IMIN+1) GOTO 130
53743         ELSEIF(KFORD(IAVG).LT.KFA) THEN
53744           IMIN=IAVG
53745           IF(IMAX.GT.IMIN+1) GOTO 130
53746         ELSE
53747           PYCOMP=KCORD(IAVG)
53748         ENDIF
53749       ENDIF
53750  
53751 C...Check if antiparticle allowed.
53752       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
53753         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
53754       ENDIF
53755  
53756 C...Save codes for possible future fast action.
53757       KFLAST=KF
53758       KCLAST=PYCOMP
53759  
53760       RETURN
53761       END
53762  
53763 C*********************************************************************
53764  
53765 C...PYERRM
53766 C...Informs user of errors in program execution.
53767  
53768       SUBROUTINE PYERRM(MERR,CHMESS)
53769  
53770 C...Double precision and integer declarations.
53771       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53772       IMPLICIT INTEGER(I-N)
53773       INTEGER PYK,PYCHGE,PYCOMP
53774 C...Commonblocks.
53775       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53776       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53777       SAVE /PYJETS/,/PYDAT1/
53778 C...Local character variable.
53779       CHARACTER CHMESS*(*)
53780  
53781 C...Write first few warnings, then be silent.
53782       IF(MERR.LE.10) THEN
53783         MSTU(27)=MSTU(27)+1
53784         MSTU(28)=MERR
53785         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
53786      &  MERR,MSTU(31),CHMESS
53787  
53788 C...Write first few errors, then be silent or stop program.
53789       ELSEIF(MERR.LE.20) THEN
53790         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
53791         MSTU(24)=MERR-10
53792         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
53793      &  MERR-10,MSTU(31),CHMESS
53794         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
53795           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
53796           WRITE(MSTU(11),5200)
53797           IF(MERR.NE.17) CALL PYLIST(2)
53798           STOP
53799         ENDIF
53800  
53801 C...Stop program in case of irreparable error.
53802       ELSE
53803         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
53804         STOP
53805       ENDIF
53806  
53807 C...Formats for output.
53808  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
53809      &' PYEXEC calls:'/5X,A)
53810  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
53811      &' PYEXEC calls:'/5X,A)
53812  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
53813      &'event!')
53814  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
53815      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
53816  
53817       RETURN
53818       END
53819  
53820 C*********************************************************************
53821  
53822 C...PYALEM
53823 C...Calculates the running alpha_electromagnetic.
53824  
53825       FUNCTION PYALEM(Q2)
53826  
53827 C...Double precision and integer declarations.
53828       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53829       IMPLICIT INTEGER(I-N)
53830       INTEGER PYK,PYCHGE,PYCOMP
53831 C...Commonblocks.
53832       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53833       SAVE /PYDAT1/
53834  
53835 C...Calculate real part of photon vacuum polarization.
53836 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
53837 C...For hadrons use parametrization of H. Burkhardt et al.
53838 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
53839       AEMPI=PARU(101)/(3D0*PARU(1))
53840       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
53841         RPIGG=0D0
53842       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
53843         RPIGG=0D0
53844       ELSEIF(MSTU(101).EQ.2) THEN
53845         RPIGG=1D0-PARU(101)/PARU(103)
53846       ELSEIF(Q2.LT.0.09D0) THEN
53847         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
53848       ELSEIF(Q2.LT.9D0) THEN
53849         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
53850      &  0.00238D0*LOG(1D0+3.927D0*Q2)
53851       ELSEIF(Q2.LT.1D4) THEN
53852         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
53853      &  0.00299D0*LOG(1D0+Q2)
53854       ELSE
53855         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
53856      &  0.00293D0*LOG(1D0+Q2)
53857       ENDIF
53858  
53859 C...Calculate running alpha_em.
53860       PYALEM=PARU(101)/(1D0-RPIGG)
53861       PARU(108)=PYALEM
53862  
53863       RETURN
53864       END
53865  
53866 C*********************************************************************
53867  
53868 C...PYALPS
53869 C...Gives the value of alpha_strong.
53870  
53871       FUNCTION PYALPS(Q2)
53872  
53873 C...Double precision and integer declarations.
53874       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53875       IMPLICIT INTEGER(I-N)
53876       INTEGER PYK,PYCHGE,PYCOMP
53877 C...Commonblocks.
53878       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53879       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53880       SAVE /PYDAT1/,/PYDAT2/
53881  
53882 C...Constant alpha_strong trivial. Pick artificial Lambda.
53883       IF(MSTU(111).LE.0) THEN
53884         PYALPS=PARU(111)
53885         MSTU(118)=MSTU(112)
53886         PARU(117)=0.2D0
53887         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
53888      &  ((33D0-2D0*MSTU(112))*PARU(111)))
53889         PARU(118)=PARU(111)
53890         RETURN
53891       ENDIF
53892  
53893 C...Find effective Q2, number of flavours and Lambda.
53894       Q2EFF=Q2
53895       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
53896       NF=MSTU(112)
53897       ALAM2=PARU(112)**2
53898   100 IF(NF.GT.MAX(2,MSTU(113))) THEN
53899         Q2THR=PARU(113)*PMAS(NF,1)**2
53900         IF(Q2EFF.LT.Q2THR) THEN
53901           NF=NF-1
53902           ALAM2=ALAM2*(Q2THR/ALAM2)**(2D0/(33D0-2D0*NF))
53903           GOTO 100
53904         ENDIF
53905       ENDIF
53906   110 IF(NF.LT.MIN(8,MSTU(114))) THEN
53907         Q2THR=PARU(113)*PMAS(NF+1,1)**2
53908         IF(Q2EFF.GT.Q2THR) THEN
53909           NF=NF+1
53910           ALAM2=ALAM2*(ALAM2/Q2THR)**(2D0/(33D0-2D0*NF))
53911           GOTO 110
53912         ENDIF
53913       ENDIF
53914       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
53915       PARU(117)=SQRT(ALAM2)
53916  
53917 C...Evaluate first or second order alpha_strong.
53918       B0=(33D0-2D0*NF)/6D0
53919       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
53920       IF(MSTU(111).EQ.1) THEN
53921         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
53922       ELSE
53923         B1=(153D0-19D0*NF)/6D0
53924         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
53925      &  (B0**2*ALGQ)))
53926       ENDIF
53927       MSTU(118)=NF
53928       PARU(118)=PYALPS
53929  
53930       RETURN
53931       END
53932  
53933 C*********************************************************************
53934  
53935 C...PYANGL
53936 C...Reconstructs an angle from given x and y coordinates.
53937  
53938       FUNCTION PYANGL(X,Y)
53939  
53940 C...Double precision and integer declarations.
53941       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53942       IMPLICIT INTEGER(I-N)
53943       INTEGER PYK,PYCHGE,PYCOMP
53944 C...Commonblocks.
53945       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53946       SAVE /PYDAT1/
53947  
53948       PYANGL=0D0
53949       R=SQRT(X**2+Y**2)
53950       IF(R.LT.1D-20) RETURN
53951       IF(ABS(X)/R.LT.0.8D0) THEN
53952         PYANGL=SIGN(ACOS(X/R),Y)
53953       ELSE
53954         PYANGL=ASIN(Y/R)
53955         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
53956           PYANGL=PARU(1)-PYANGL
53957         ELSEIF(X.LT.0D0) THEN
53958           PYANGL=-PARU(1)-PYANGL
53959         ENDIF
53960       ENDIF
53961  
53962       RETURN
53963       END
53964  
53965 C*********************************************************************
53966  
53967 C...PYROBO
53968 C...Performs rotations and boosts.
53969  
53970       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
53971  
53972 C...Double precision and integer declarations.
53973       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53974       IMPLICIT INTEGER(I-N)
53975       INTEGER PYK,PYCHGE,PYCOMP
53976 C...Commonblocks.
53977       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53978       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53979       SAVE /PYJETS/,/PYDAT1/
53980 C...Local arrays.
53981       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
53982  
53983 C...Find and check range of rotation/boost.
53984       IMIN=IMI
53985       IF(IMIN.LE.0) IMIN=1
53986       IF(MSTU(1).GT.0) IMIN=MSTU(1)
53987       IMAX=IMA
53988       IF(IMAX.LE.0) IMAX=N
53989       IF(MSTU(2).GT.0) IMAX=MSTU(2)
53990       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
53991         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
53992         RETURN
53993       ENDIF
53994  
53995 C...Optional resetting of V (when not set before.)
53996       IF(MSTU(33).NE.0) THEN
53997         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
53998           DO 100 J=1,5
53999             V(I,J)=0D0
54000   100     CONTINUE
54001   110   CONTINUE
54002         MSTU(33)=0
54003       ENDIF
54004  
54005 C...Rotate, typically from z axis to direction (theta,phi).
54006       IF(THE**2+PHI**2.GT.1D-20) THEN
54007         ROT(1,1)=COS(THE)*COS(PHI)
54008         ROT(1,2)=-SIN(PHI)
54009         ROT(1,3)=SIN(THE)*COS(PHI)
54010         ROT(2,1)=COS(THE)*SIN(PHI)
54011         ROT(2,2)=COS(PHI)
54012         ROT(2,3)=SIN(THE)*SIN(PHI)
54013         ROT(3,1)=-SIN(THE)
54014         ROT(3,2)=0D0
54015         ROT(3,3)=COS(THE)
54016         DO 140 I=IMIN,IMAX
54017           IF(K(I,1).LE.0) GOTO 140
54018           DO 120 J=1,3
54019             PR(J)=P(I,J)
54020             VR(J)=V(I,J)
54021   120     CONTINUE
54022           DO 130 J=1,3
54023             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
54024             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
54025   130     CONTINUE
54026   140   CONTINUE
54027       ENDIF
54028  
54029 C...Boost, typically from rest to momentum/energy=beta.
54030       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
54031         DBX=BEX
54032         DBY=BEY
54033         DBZ=BEZ
54034         DB=SQRT(DBX**2+DBY**2+DBZ**2)
54035         EPS1=1D0-1D-12
54036         IF(DB.GT.EPS1) THEN
54037 C...Rescale boost vector if too close to unity.
54038           CALL PYERRM(3,'(PYROBO:) boost vector too large')
54039           DBX=DBX*(EPS1/DB)
54040           DBY=DBY*(EPS1/DB)
54041           DBZ=DBZ*(EPS1/DB)
54042           DB=EPS1
54043         ENDIF
54044         DGA=1D0/SQRT(1D0-DB**2)
54045         DO 160 I=IMIN,IMAX
54046           IF(K(I,1).LE.0) GOTO 160
54047           DO 150 J=1,4
54048             DP(J)=P(I,J)
54049             DV(J)=V(I,J)
54050   150     CONTINUE
54051           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
54052           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
54053           P(I,1)=DP(1)+DGABP*DBX
54054           P(I,2)=DP(2)+DGABP*DBY
54055           P(I,3)=DP(3)+DGABP*DBZ
54056           P(I,4)=DGA*(DP(4)+DBP)
54057           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
54058           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
54059           V(I,1)=DV(1)+DGABV*DBX
54060           V(I,2)=DV(2)+DGABV*DBY
54061           V(I,3)=DV(3)+DGABV*DBZ
54062           V(I,4)=DGA*(DV(4)+DBV)
54063   160   CONTINUE
54064       ENDIF
54065  
54066       RETURN
54067       END
54068  
54069 C*********************************************************************
54070  
54071 C...PYEDIT
54072 C...Performs global manipulations on the event record, in particular
54073 C...to exclude unstable or undetectable partons/particles.
54074  
54075       SUBROUTINE PYEDIT(MEDIT)
54076  
54077 C...Double precision and integer declarations.
54078       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54079       IMPLICIT INTEGER(I-N)
54080       INTEGER PYK,PYCHGE,PYCOMP
54081 C...Commonblocks.
54082       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
54083       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54084       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54085       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
54086 C...Local arrays.
54087       DIMENSION NS(2),PTS(2),PLS(2)
54088  
54089 C...Remove unwanted partons/particles.
54090       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
54091         IMAX=N
54092         IF(MSTU(2).GT.0) IMAX=MSTU(2)
54093         I1=MAX(1,MSTU(1))-1
54094         DO 110 I=MAX(1,MSTU(1)),IMAX
54095           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
54096           IF(MEDIT.EQ.1) THEN
54097             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
54098           ELSEIF(MEDIT.EQ.2) THEN
54099             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
54100             KC=PYCOMP(K(I,2))
54101             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.KC.EQ.18)
54102      &      GOTO 110
54103           ELSEIF(MEDIT.EQ.3) THEN
54104             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
54105             KC=PYCOMP(K(I,2))
54106             IF(KC.EQ.0) GOTO 110
54107             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
54108           ELSEIF(MEDIT.EQ.5) THEN
54109             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
54110             KC=PYCOMP(K(I,2))
54111             IF(KC.EQ.0) GOTO 110
54112             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
54113      &      KCHG(KC,2).EQ.0) GOTO 110
54114           ENDIF
54115  
54116 C...Pack remaining partons/particles. Origin no longer known.
54117           I1=I1+1
54118           DO 100 J=1,5
54119             K(I1,J)=K(I,J)
54120             P(I1,J)=P(I,J)
54121             V(I1,J)=V(I,J)
54122   100     CONTINUE
54123           K(I1,3)=0
54124   110   CONTINUE
54125         IF(I1.LT.N) MSTU(3)=0
54126         IF(I1.LT.N) MSTU(70)=0
54127         N=I1
54128  
54129 C...Selective removal of class of entries. New position of retained.
54130       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
54131         I1=0
54132         DO 120 I=1,N
54133           K(I,3)=MOD(K(I,3),MSTU(5))
54134           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
54135           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
54136           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
54137      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
54138           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
54139      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
54140           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
54141           I1=I1+1
54142           K(I,3)=K(I,3)+MSTU(5)*I1
54143   120   CONTINUE
54144  
54145 C...Find new event history information and replace old.
54146         DO 140 I=1,N
54147           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
54148      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
54149           ID=I
54150   130     IM=MOD(K(ID,3),MSTU(5))
54151           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
54152             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
54153      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
54154               ID=IM
54155               GOTO 130
54156             ENDIF
54157           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
54158             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
54159      &      K(IM,2).EQ.94) THEN
54160               ID=IM
54161               GOTO 130
54162             ENDIF
54163           ENDIF
54164           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
54165           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
54166           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
54167      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
54168             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
54169      &      K(K(I,4),3)/MSTU(5)
54170             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
54171      &      K(K(I,5),3)/MSTU(5)
54172           ELSE
54173             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
54174             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
54175      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
54176             KCD=MOD(K(I,4),MSTU(5))
54177             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
54178             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
54179             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
54180             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
54181             KCD=MOD(K(I,5),MSTU(5))
54182             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
54183             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
54184           ENDIF
54185   140   CONTINUE
54186  
54187 C...Pack remaining entries.
54188         I1=0
54189         MSTU90=MSTU(90)
54190         MSTU(90)=0
54191         DO 170 I=1,N
54192           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
54193           I1=I1+1
54194           DO 150 J=1,5
54195             K(I1,J)=K(I,J)
54196             P(I1,J)=P(I,J)
54197             V(I1,J)=V(I,J)
54198   150     CONTINUE
54199           K(I1,3)=MOD(K(I1,3),MSTU(5))
54200           DO 160 IZ=1,MSTU90
54201             IF(I.EQ.MSTU(90+IZ)) THEN
54202               MSTU(90)=MSTU(90)+1
54203               MSTU(90+MSTU(90))=I1
54204               PARU(90+MSTU(90))=PARU(90+IZ)
54205             ENDIF
54206   160     CONTINUE
54207   170   CONTINUE
54208         IF(I1.LT.N) MSTU(3)=0
54209         IF(I1.LT.N) MSTU(70)=0
54210         N=I1
54211  
54212 C...Fill in some missing daughter pointers (lost in colour flow).
54213       ELSEIF(MEDIT.EQ.16) THEN
54214         DO 220 I=1,N
54215           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
54216           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
54217 C...Find daughters who point to mother.
54218           DO 180 I1=I+1,N
54219             IF(K(I1,3).NE.I) THEN
54220             ELSEIF(K(I,4).EQ.0) THEN
54221               K(I,4)=I1
54222             ELSE
54223               K(I,5)=I1
54224             ENDIF
54225   180     CONTINUE
54226           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54227           IF(K(I,4).NE.0) GOTO 220
54228 C...Find daughters who point to documentation version of mother.
54229           IM=K(I,3)
54230           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
54231           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
54232           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
54233           DO 190 I1=I+1,N
54234             IF(K(I1,3).NE.IM) THEN
54235             ELSEIF(K(I,4).EQ.0) THEN
54236               K(I,4)=I1
54237             ELSE
54238               K(I,5)=I1
54239             ENDIF
54240   190     CONTINUE
54241           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54242           IF(K(I,4).NE.0) GOTO 220
54243 C...Find daughters who point to documentation daughters who,
54244 C...in their turn, point to documentation mother.
54245           ID1=IM
54246           ID2=IM
54247           DO 200 I1=IM+1,I-1
54248             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
54249               ID2=I1
54250               IF(ID1.EQ.IM) ID1=I1
54251             ENDIF
54252   200     CONTINUE
54253           DO 210 I1=I+1,N
54254             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
54255             ELSEIF(K(I,4).EQ.0) THEN
54256               K(I,4)=I1
54257             ELSE
54258               K(I,5)=I1
54259             ENDIF
54260   210     CONTINUE
54261           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54262   220   CONTINUE
54263  
54264 C...Save top entries at bottom of PYJETS commonblock.
54265       ELSEIF(MEDIT.EQ.21) THEN
54266         IF(2*N.GE.MSTU(4)) THEN
54267           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
54268           RETURN
54269         ENDIF
54270         DO 240 I=1,N
54271           DO 230 J=1,5
54272             K(MSTU(4)-I,J)=K(I,J)
54273             P(MSTU(4)-I,J)=P(I,J)
54274             V(MSTU(4)-I,J)=V(I,J)
54275   230     CONTINUE
54276   240   CONTINUE
54277         MSTU(32)=N
54278  
54279 C...Restore bottom entries of commonblock PYJETS to top.
54280       ELSEIF(MEDIT.EQ.22) THEN
54281         DO 260 I=1,MSTU(32)
54282           DO 250 J=1,5
54283             K(I,J)=K(MSTU(4)-I,J)
54284             P(I,J)=P(MSTU(4)-I,J)
54285             V(I,J)=V(MSTU(4)-I,J)
54286   250     CONTINUE
54287   260   CONTINUE
54288         N=MSTU(32)
54289  
54290 C...Mark primary entries at top of commonblock PYJETS as untreated.
54291       ELSEIF(MEDIT.EQ.23) THEN
54292         I1=0
54293         DO 270 I=1,N
54294           KH=K(I,3)
54295           IF(KH.GE.1) THEN
54296             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
54297           ENDIF
54298           IF(KH.NE.0) GOTO 280
54299           I1=I1+1
54300           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
54301           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
54302   270   CONTINUE
54303   280   N=I1
54304  
54305 C...Place largest axis along z axis and second largest in xy plane.
54306       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
54307         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
54308      &  P(MSTU(61),2)),0D0,0D0,0D0)
54309         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
54310      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
54311         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
54312      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
54313         IF(MEDIT.EQ.31) RETURN
54314  
54315 C...Rotate to put slim jet along +z axis.
54316         DO 290 IS=1,2
54317           NS(IS)=0
54318           PTS(IS)=0D0
54319           PLS(IS)=0D0
54320   290   CONTINUE
54321         DO 300 I=1,N
54322           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
54323           IF(MSTU(41).GE.2) THEN
54324             KC=PYCOMP(K(I,2))
54325             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
54326      &      KC.EQ.18) GOTO 300
54327             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
54328      &      .EQ.0) GOTO 300
54329           ENDIF
54330           IS=2D0-SIGN(0.5D0,P(I,3))
54331           NS(IS)=NS(IS)+1
54332           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
54333   300   CONTINUE
54334         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
54335      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
54336  
54337 C...Rotate to put second largest jet into -z,+x quadrant.
54338         DO 310 I=1,N
54339           IF(P(I,3).GE.0D0) GOTO 310
54340           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
54341           IF(MSTU(41).GE.2) THEN
54342             KC=PYCOMP(K(I,2))
54343             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
54344      &      KC.EQ.18) GOTO 310
54345             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
54346      &      .EQ.0) GOTO 310
54347           ENDIF
54348           IS=2D0-SIGN(0.5D0,P(I,1))
54349           PLS(IS)=PLS(IS)-P(I,3)
54350   310   CONTINUE
54351         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
54352      &  0D0,0D0,0D0)
54353       ENDIF
54354  
54355       RETURN
54356       END
54357  
54358 C*********************************************************************
54359  
54360 C...PYLIST
54361 C...Gives program heading, or lists an event, or particle
54362 C...data, or current parameter values.
54363  
54364       SUBROUTINE PYLIST(MLIST)
54365  
54366 C...Double precision and integer declarations.
54367       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54368       IMPLICIT INTEGER(I-N)
54369       INTEGER PYK,PYCHGE,PYCOMP
54370 C...Parameter statement to help give large particle numbers.
54371       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54372      &KEXCIT=4000000,KDIMEN=5000000)
54373  
54374 C...HEPEVT commonblock.
54375       PARAMETER (NMXHEP=4000)
54376       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
54377      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
54378       DOUBLE PRECISION PHEP,VHEP
54379       SAVE /HEPEVT/
54380  
54381 C...User process event common block.
54382       INTEGER MAXNUP
54383       PARAMETER (MAXNUP=500)
54384       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
54385       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
54386       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
54387      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
54388      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
54389       SAVE /HEPEUP/
54390  
54391 C...Commonblocks.
54392       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
54393       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54394       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54395       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54396       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
54397 C...Local arrays, character variables and data.
54398       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
54399       DIMENSION PS(6)
54400       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
54401  
54402 C...Initialization printout: version number and date of last change.
54403       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
54404         CALL PYLOGO
54405         MSTU(12)=0
54406         IF(MLIST.EQ.0) RETURN
54407       ENDIF
54408  
54409 C...List event data, including additional lines after N.
54410       IF(MLIST.GE.1.AND.MLIST.LE.3) THEN
54411         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
54412         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
54413         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
54414         LMX=12
54415         IF(MLIST.GE.2) LMX=16
54416         ISTR=0
54417         IMAX=N
54418         IF(MSTU(2).GT.0) IMAX=MSTU(2)
54419         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
54420           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
54421           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
54422           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
54423  
54424 C...Get particle name, pad it and check it is not too long.
54425           CALL PYNAME(K(I,2),CHAP)
54426           LEN=0
54427           DO 100 LEM=1,16
54428             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
54429   100     CONTINUE
54430           MDL=(K(I,1)+19)/10
54431           LDL=0
54432           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
54433             CHAC=CHAP
54434             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
54435           ELSE
54436             LDL=1
54437             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
54438             IF(LEN.EQ.0) THEN
54439               CHAC=CHDL(MDL)(1:2*LDL)//' '
54440             ELSE
54441               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
54442      &        CHDL(MDL)(LDL+1:2*LDL)//' '
54443               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
54444             ENDIF
54445           ENDIF
54446  
54447 C...Add information on string connection.
54448           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
54449      &    THEN
54450             KC=PYCOMP(K(I,2))
54451             KCC=0
54452             IF(KC.NE.0) KCC=KCHG(KC,2)
54453             IF(IABS(K(I,2)).EQ.39) THEN
54454               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
54455             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
54456               ISTR=1
54457               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
54458             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
54459               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
54460             ELSEIF(KCC.NE.0) THEN
54461               ISTR=0
54462               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
54463             ENDIF
54464           ENDIF
54465           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
54466      &    CHAC(LMX-1:LMX-1)='I'
54467  
54468 C...Write data for particle/jet.
54469           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
54470             WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3),
54471      &      (P(I,J2),J2=1,5)
54472           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
54473             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
54474      &      (P(I,J2),J2=1,5)
54475           ELSEIF(MLIST.EQ.1) THEN
54476             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
54477      &      (P(I,J2),J2=1,5)
54478           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
54479      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
54480             WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3),
54481      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
54482      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
54483      &      (P(I,J2),J2=1,5)
54484           ELSE
54485             WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),
54486      &      (P(I,J2),J2=1,5)
54487           ENDIF
54488           IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5)
54489  
54490 C...Insert extra separator lines specified by user.
54491           IF(MSTU(70).GE.1) THEN
54492             ISEP=0
54493             DO 110 J=1,MIN(10,MSTU(70))
54494               IF(I.EQ.MSTU(70+J)) ISEP=1
54495   110       CONTINUE
54496             IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000)
54497             IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100)
54498           ENDIF
54499   120   CONTINUE
54500  
54501 C...Sum of charges and momenta.
54502         DO 130 J=1,6
54503           PS(J)=PYP(0,J)
54504   130   CONTINUE
54505         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
54506           WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5)
54507         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
54508           WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5)
54509         ELSEIF(MLIST.EQ.1) THEN
54510           WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5)
54511         ELSE
54512           WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5)
54513         ENDIF
54514  
54515 C...Simple listing of HEPEVT entries (mainly for test purposes).
54516       ELSEIF(MLIST.EQ.5) THEN
54517         WRITE(MSTU(11),7500)
54518         DO 140 I=1,NHEP
54519           IF(ISTHEP(I).EQ.0) GOTO 140
54520           WRITE(MSTU(11),7600) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
54521      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
54522   140   CONTINUE
54523  
54524  
54525 C...Simple listing of user-process entries (mainly for test purposes).
54526       ELSEIF(MLIST.EQ.7) THEN
54527         WRITE(MSTU(11),7300)
54528         DO 150 I=1,NUP
54529           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
54530      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
54531   150   CONTINUE
54532  
54533 C...Give simple list of KF codes defined in program.
54534       ELSEIF(MLIST.EQ.11) THEN
54535         WRITE(MSTU(11),6600)
54536         DO 160 KF=1,80
54537           CALL PYNAME(KF,CHAP)
54538           CALL PYNAME(-KF,CHAN)
54539           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP
54540           IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54541   160   CONTINUE
54542         DO 190 KFLS=1,3,2
54543           DO 180 KFLA=1,5
54544             DO 170 KFLB=1,KFLA-(3-KFLS)/2
54545               KF=1000*KFLA+100*KFLB+KFLS
54546               CALL PYNAME(KF,CHAP)
54547               CALL PYNAME(-KF,CHAN)
54548               WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54549   170       CONTINUE
54550   180     CONTINUE
54551   190   CONTINUE
54552         DO 220 KMUL=0,5
54553           KFLS=3
54554           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
54555           IF(KMUL.EQ.5) KFLS=5
54556           KFLR=0
54557           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
54558           IF(KMUL.EQ.4) KFLR=2
54559           DO 210 KFLB=1,5
54560             DO 200 KFLC=1,KFLB-1
54561               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
54562               CALL PYNAME(KF,CHAP)
54563               CALL PYNAME(-KF,CHAN)
54564               WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54565               IF(KF.EQ.311) THEN
54566                 KFK=130
54567                 CALL PYNAME(KFK,CHAP)
54568                 WRITE(MSTU(11),6700) KFK,CHAP
54569                 KFK=310
54570                 CALL PYNAME(KFK,CHAP)
54571                 WRITE(MSTU(11),6700) KFK,CHAP
54572               ENDIF
54573   200       CONTINUE
54574             KF=10000*KFLR+110*KFLB+KFLS
54575             CALL PYNAME(KF,CHAP)
54576             WRITE(MSTU(11),6700) KF,CHAP
54577   210     CONTINUE
54578   220   CONTINUE
54579         KF=100443
54580         CALL PYNAME(KF,CHAP)
54581         WRITE(MSTU(11),6700) KF,CHAP
54582         KF=100553
54583         CALL PYNAME(KF,CHAP)
54584         WRITE(MSTU(11),6700) KF,CHAP
54585         DO 260 KFLSP=1,3
54586           KFLS=2+2*(KFLSP/3)
54587           DO 250 KFLA=1,5
54588             DO 240 KFLB=1,KFLA
54589               DO 230 KFLC=1,KFLB
54590                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
54591      &          GOTO 230
54592                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
54593                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
54594                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
54595                 CALL PYNAME(KF,CHAP)
54596                 CALL PYNAME(-KF,CHAN)
54597                 WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54598   230         CONTINUE
54599   240       CONTINUE
54600   250     CONTINUE
54601   260   CONTINUE
54602         DO 270 KC=1,500
54603           KF=KCHG(KC,4)
54604           IF(KF.LT.1000000) GOTO 270
54605           CALL PYNAME(KF,CHAP)
54606           CALL PYNAME(-KF,CHAN)
54607           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP
54608           IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54609   270   CONTINUE
54610  
54611 C...List parton/particle data table. Check whether to be listed.
54612       ELSEIF(MLIST.EQ.12) THEN
54613         WRITE(MSTU(11),6800)
54614         DO 300 KC=1,MSTU(6)
54615           KF=KCHG(KC,4)
54616           IF(KF.EQ.0) GOTO 300
54617           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
54618      &    GOTO 300
54619  
54620 C...Find particle name and mass. Print information.
54621           CALL PYNAME(KF,CHAP)
54622           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
54623           CALL PYNAME(-KF,CHAN)
54624           WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
54625      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
54626  
54627 C...Particle decay: channel number, branching ratios, matrix element,
54628 C...decay products.
54629           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
54630             DO 280 J=1,5
54631               CALL PYNAME(KFDP(IDC,J),CHAD(J))
54632   280       CONTINUE
54633             WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
54634      &      (CHAD(J),J=1,5)
54635   290     CONTINUE
54636   300   CONTINUE
54637  
54638 C...List parameter value table.
54639       ELSEIF(MLIST.EQ.13) THEN
54640         WRITE(MSTU(11),7100)
54641         DO 310 I=1,200
54642           WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
54643   310   CONTINUE
54644       ENDIF
54645  
54646 C...Format statements for output on unit MSTU(11) (by default 6).
54647  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
54648      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
54649  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
54650      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
54651      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
54652  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
54653      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
54654      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
54655      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
54656  5400 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
54657  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
54658  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
54659  5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
54660  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
54661  5900 FORMAT(66X,5(1X,F12.3))
54662  6000 FORMAT(1X,78('='))
54663  6100 FORMAT(1X,130('='))
54664  6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
54665  6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
54666  6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
54667  6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
54668      &5F13.5)
54669  6600 FORMAT(///20X,'List of KF codes in program'/)
54670  6700 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
54671  6800 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
54672      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
54673      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
54674      &1X,'ME',3X,'Br.rat.',4X,'decay products')
54675  6900 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
54676      &1X,1P,E13.5,3X,I2)
54677  7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
54678  7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
54679      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
54680  7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
54681  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
54682      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
54683      &'       E        m')
54684  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
54685  7500 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
54686      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
54687      &'       E        m')
54688  7600 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
54689  
54690       RETURN
54691       END
54692  
54693 C*********************************************************************
54694  
54695 C...PYLOGO
54696 C...Writes a logo for the program.
54697  
54698       SUBROUTINE PYLOGO
54699  
54700 C...Double precision and integer declarations.
54701       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54702       IMPLICIT INTEGER(I-N)
54703       INTEGER PYK,PYCHGE,PYCOMP
54704 C...Parameter for length of information block.
54705       PARAMETER (IREFER=24)
54706 C...Commonblocks.
54707       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54708       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54709       SAVE /PYDAT1/,/PYPARS/
54710 C...Local arrays and character variables.
54711       INTEGER IDATI(6)
54712       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
54713      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
54714  
54715 C...Data on months, logo, titles, and references.
54716       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
54717      &'Oct','Nov','Dec'/
54718       DATA (LOGO(J),J=1,19)/
54719      &'            *......*            ',
54720      &'       *:::!!:::::::::::*       ',
54721      &'    *::::::!!::::::::::::::*    ',
54722      &'  *::::::::!!::::::::::::::::*  ',
54723      &' *:::::::::!!:::::::::::::::::* ',
54724      &' *:::::::::!!:::::::::::::::::* ',
54725      &'  *::::::::!!::::::::::::::::*! ',
54726      &'    *::::::!!::::::::::::::* !! ',
54727      &'    !! *:::!!:::::::::::*    !! ',
54728      &'    !!     !* -><- *         !! ',
54729      &'    !!     !!                !! ',
54730      &'    !!     !!                !! ',
54731      &'    !!                       !! ',
54732      &'    !!        lh             !! ',
54733      &'    !!                       !! ',
54734      &'    !!                 hh    !! ',
54735      &'    !!    ll                 !! ',
54736      &'    !!                       !! ',
54737      &'    !!                          '/
54738       DATA (LOGO(J),J=20,38)/
54739      &'Welcome to the Lund Monte Carlo!',
54740      &'                                ',
54741      &'PPP  Y   Y TTTTT H   H III   A  ',
54742      &'P  P  Y Y    T   H   H  I   A A ',
54743      &'PPP    Y     T   HHHHH  I  AAAAA',
54744      &'P      Y     T   H   H  I  A   A',
54745      &'P      Y     T   H   H III A   A',
54746      &'                                ',
54747      &'This is PYTHIA version x.xxx    ',
54748      &'Last date of change: xx xxx 199x',
54749      &'                                ',
54750      &'Now is xx xxx 199x at xx:xx:xx  ',
54751      &'                                ',
54752      &'Disclaimer: this program comes  ',
54753      &'without any guarantees. Beware  ',
54754      &'of errors and use common sense  ',
54755      &'when interpreting results.      ',
54756      &'                                ',
54757      &'Copyright T. Sjostrand (2003)   '/
54758       DATA (REFER(J),J=1,18)/
54759      &'An archive of program versions and d',
54760      &'ocumentation is found on the web:   ',
54761      &'http://www.thep.lu.se/~torbjorn/Pyth',
54762      &'ia.html                             ',
54763      &'                                    ',
54764      &'                                    ',
54765      &'When you cite this program, currentl',
54766      &'y the official reference is         ',
54767      &'T. Sjostrand, P. Eden, C. Friberg, L',
54768      &'. Lonnblad, G. Miu, S. Mrenna and   ',
54769      &'E. Norrbin, Computer Physics Commun.',
54770      &' 135 (2001) 238.                    ',
54771      &'The large manual is                 ',
54772      &'                                    ',
54773      &'T. Sjostrand, L. Lonnblad and S. Mre',
54774      &'nna, LU TP 01-21 [hep-ph/0108264].  ',
54775      &'Also remember that the program, to a',
54776      &' large extent, represents original  '/
54777       DATA (REFER(J),J=19,36)/
54778      &'physics research. Other publications',
54779      &' of special relevance to your       ',
54780      &'studies may therefore deserve separa',
54781      &'te mention.                         ',
54782      &'                                    ',
54783      &'                                    ',
54784      &'Main author: Torbjorn Sjostrand; Dep',
54785      &'artment of Theoretical Physics 2,   ',
54786      &'  Lund University, Solvegatan 14A, S',
54787      &'-223 62 Lund, Sweden;               ',
54788      &'  phone: + 46 - 46 - 222 48 16; e-ma',
54789      &'il: torbjorn@thep.lu.se             ',
54790      &'Author: Leif Lonnblad; Department of',
54791      &' Theoretical Physics 2,             ',
54792      &'  Lund University, Solvegatan 14A, S',
54793      &'-223 62 Lund, Sweden;               ',
54794      &'  phone: + 46 - 46 - 222 77 80; e-ma',
54795      &'il: leif@thep.lu.se                 '/
54796       DATA (REFER(J),J=37,2*IREFER)/
54797      &'Author: Stephen Mrenna; Computing Di',
54798      &'vision, Simulations Group,          ',
54799      &'  Fermi National Accelerator Laborat',
54800      &'ory, MS 234, Batavia, IL 60510, USA;',
54801      &'  phone: + 1 - 630 - 840 - 2556; e-m',
54802      &'ail: mrenna@fnal.gov                ',
54803      &'Author: Peter Skands; Department of ',
54804      &'Theoretical Physics 2,              ',
54805      &'  Lund University, Solvegatan 14A, S',
54806      &'-223 62 Lund, Sweden;               ',
54807      &'  phone: + 46 - 46 - 222 31 92; e-ma',
54808      &'il: zeiler@thep.lu.se               '/
54809  
54810 C...Check that PYDATA linked.
54811       IF(MSTP(183)/10.NE.199.AND.MSTP(183)/10.NE.200) THEN
54812         WRITE(*,'(1X,A)')
54813      &  'Error: PYDATA has not been linked.'
54814         WRITE(*,'(1X,A)') 'Execution stopped!'
54815         STOP
54816  
54817 C...Write current version number and current date+time.
54818       ELSE
54819         WRITE(VERS,'(I1)') MSTP(181)
54820         LOGO(28)(24:24)=VERS
54821         WRITE(SUBV,'(I3)') MSTP(182)
54822         LOGO(28)(26:28)=SUBV
54823         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
54824         WRITE(DATE,'(I2)') MSTP(185)
54825         LOGO(29)(22:23)=DATE
54826         LOGO(29)(25:27)=MONTH(MSTP(184))
54827         WRITE(YEAR,'(I4)') MSTP(183)
54828         LOGO(29)(29:32)=YEAR
54829         CALL PYTIME(IDATI)
54830         IF(IDATI(1).LE.0) THEN
54831           LOGO(31)='                                '
54832         ELSE
54833           WRITE(DATE,'(I2)') IDATI(3)
54834           LOGO(31)(8:9)=DATE
54835           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
54836           WRITE(YEAR,'(I4)') IDATI(1)
54837           LOGO(31)(15:18)=YEAR
54838           WRITE(HOUR,'(I2)') IDATI(4)
54839           LOGO(31)(23:24)=HOUR
54840           WRITE(MINU,'(I2)') IDATI(5)
54841           LOGO(31)(26:27)=MINU
54842           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
54843           WRITE(SECO,'(I2)') IDATI(6)
54844           LOGO(31)(29:30)=SECO
54845           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
54846         ENDIF
54847       ENDIF
54848  
54849 C...Loop over lines in header. Define page feed and side borders.
54850       DO 100 ILIN=1,29+IREFER
54851         LINE=' '
54852         IF(ILIN.EQ.1) THEN
54853           LINE(1:1)='1'
54854         ELSE
54855           LINE(2:3)='**'
54856           LINE(78:79)='**'
54857         ENDIF
54858  
54859 C...Separator lines and logos.
54860         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
54861           LINE(4:77)='***********************************************'//
54862      &    '***************************'
54863         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
54864           LINE(6:37)=LOGO(ILIN-5)
54865           LINE(44:75)=LOGO(ILIN+14)
54866         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
54867           LINE(5:40)=REFER(2*ILIN-51)
54868           LINE(41:76)=REFER(2*ILIN-50)
54869         ENDIF
54870  
54871 C...Write lines to appropriate unit.
54872         WRITE(MSTU(11),'(A79)') LINE
54873   100 CONTINUE
54874  
54875       RETURN
54876       END
54877  
54878 C*********************************************************************
54879  
54880 C...PYUPDA
54881 C...Facilitates the updating of particle and decay data
54882 C...by allowing it to be done in an external file.
54883  
54884       SUBROUTINE PYUPDA(MUPDA,LFN)
54885  
54886 C...Double precision and integer declarations.
54887       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54888       IMPLICIT INTEGER(I-N)
54889       INTEGER PYK,PYCHGE,PYCOMP
54890 C...Commonblocks.
54891       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54892       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54893       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54894       COMMON/PYDAT4/CHAF(500,2)
54895       CHARACTER CHAF*16
54896       COMMON/PYINT4/MWID(500),WIDS(500,5)
54897       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
54898 C...Local arrays, character variables and data.
54899       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
54900      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
54901       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
54902      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
54903      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
54904      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
54905      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
54906  
54907 C...Write header if not yet done.
54908       IF(MSTU(12).GE.1) CALL PYLIST(0)
54909  
54910 C...Write information on file for editing.
54911       IF(MUPDA.EQ.1) THEN
54912         DO 110 KC=1,500
54913           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
54914      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
54915      &    MWID(KC),MDCY(KC,1)
54916           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
54917             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
54918      &      (KFDP(IDC,J),J=1,5)
54919   100     CONTINUE
54920   110   CONTINUE
54921  
54922 C...Read complete set of information from edited file or
54923 C...read partial set of new or updated information from edited file.
54924       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
54925  
54926 C...Reset counters.
54927         KCC=100
54928         NDC=0
54929         CHKF='         '
54930         IF(MUPDA.EQ.2) THEN
54931           DO 120 I=1,MSTU(6)
54932             KCHG(I,4)=0
54933   120     CONTINUE
54934         ELSE
54935           DO 130 KC=1,MSTU(6)
54936             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
54937             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
54938   130     CONTINUE
54939         ENDIF
54940  
54941 C...Begin of loop: read new line; unknown whether particle or
54942 C...decay data.
54943   140   READ(LFN,5200,END=190) CHINL
54944  
54945 C...Identify particle code and whether already defined  (for MUPDA=3).
54946         IF(CHINL(2:10).NE.'         ') THEN
54947           CHKF=CHINL(2:10)
54948           READ(CHKF,5300) KF
54949           IF(MUPDA.EQ.2) THEN
54950             IF(KF.LE.100) THEN
54951               KC=KF
54952             ELSE
54953               KCC=KCC+1
54954               KC=KCC
54955             ENDIF
54956           ELSE
54957             KCREP=0
54958             IF(KF.LE.100) THEN
54959               KCREP=KF
54960             ELSE
54961               DO 150 KCR=101,KCC
54962                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
54963   150         CONTINUE
54964             ENDIF
54965 C...Remove duplicate old decay data.
54966             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
54967               IDCREP=MDCY(KCREP,2)
54968               NDCREP=MDCY(KCREP,3)
54969               DO 160 I=1,KCC
54970                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
54971   160         CONTINUE
54972               DO 180 I=IDCREP,NDC-NDCREP
54973                 MDME(I,1)=MDME(I+NDCREP,1)
54974                 MDME(I,2)=MDME(I+NDCREP,2)
54975                 BRAT(I)=BRAT(I+NDCREP)
54976                 DO 170 J=1,5
54977                   KFDP(I,J)=KFDP(I+NDCREP,J)
54978   170           CONTINUE
54979   180         CONTINUE
54980               NDC=NDC-NDCREP
54981               KC=KCREP
54982             ELSEIF(KCREP.NE.0) THEN
54983               KC=KCREP
54984             ELSE
54985               KCC=KCC+1
54986               KC=KCC
54987             ENDIF
54988           ENDIF
54989  
54990 C...Study line with particle data.
54991           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
54992      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
54993           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
54994      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
54995      &    MWID(KC),MDCY(KC,1)
54996           MDCY(KC,2)=0
54997           MDCY(KC,3)=0
54998  
54999 C...Study line with decay data.
55000         ELSE
55001           NDC=NDC+1
55002           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
55003      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
55004           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
55005           MDCY(KC,3)=MDCY(KC,3)+1
55006           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
55007      &    (KFDP(NDC,J),J=1,5)
55008         ENDIF
55009  
55010 C...End of loop; ensure that PYCOMP tables are updated.
55011         GOTO 140
55012   190   CONTINUE
55013         MSTU(20)=0
55014  
55015 C...Perform possible tests that new information is consistent.
55016         DO 220 KC=1,MSTU(6)
55017           KF=KCHG(KC,4)
55018           IF(KF.EQ.0) GOTO 220
55019           WRITE(CHKF,5300) KF
55020           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
55021      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
55022      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
55023           BRSUM=0D0
55024           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
55025             IF(MDME(IDC,2).GT.80) GOTO 210
55026             KQ=KCHG(KC,1)
55027             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
55028             MERR=0
55029             DO 200 J=1,5
55030               KP=KFDP(IDC,J)
55031               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
55032                 IF(KP.EQ.81) KQ=0
55033               ELSEIF(PYCOMP(KP).EQ.0) THEN
55034                 MERR=3
55035               ELSE
55036                 KQ=KQ-PYCHGE(KP)
55037                 KPC=PYCOMP(KP)
55038                 PMS=PMS-PMAS(KPC,1)
55039                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
55040      &          PMAS(KPC,3))
55041               ENDIF
55042   200       CONTINUE
55043             IF(KQ.NE.0) MERR=MAX(2,MERR)
55044             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
55045      &      MERR=MAX(1,MERR)
55046             IF(MERR.EQ.3) CALL PYERRM(17,
55047      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
55048             IF(MERR.EQ.2) CALL PYERRM(17,
55049      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
55050             IF(MERR.EQ.1) CALL PYERRM(7,
55051      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
55052             BRSUM=BRSUM+BRAT(IDC)
55053   210     CONTINUE
55054           WRITE(CHTMP,5500) BRSUM
55055           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
55056      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
55057      &    CHTMP(9:16)//' for KF ='//CHKF)
55058   220   CONTINUE
55059  
55060 C...Write DATA statements for inclusion in program.
55061       ELSEIF(MUPDA.EQ.4) THEN
55062  
55063 C...Find out how many codes and decay channels are actually used.
55064         KCC=0
55065         NDC=0
55066         DO 230 I=1,MSTU(6)
55067           IF(KCHG(I,4).NE.0) THEN
55068             KCC=I
55069             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
55070           ENDIF
55071   230   CONTINUE
55072  
55073 C...Initialize writing of DATA statements for inclusion in program.
55074         DO 300 IVAR=1,22
55075           NDIM=MSTU(6)
55076           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
55077           NLIN=1
55078           CHLIN=' '
55079           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
55080           LLIN=35
55081           CHOLD='START'
55082  
55083 C...Loop through variables for conversion to characters.
55084           DO 280 IDIM=1,NDIM
55085             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
55086             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
55087             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
55088             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
55089             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
55090             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
55091             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
55092             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
55093             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
55094             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
55095             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
55096             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
55097             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
55098             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
55099             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
55100             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
55101             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
55102             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
55103             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
55104             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
55105             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
55106             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
55107  
55108 C...Replace variables beyond what is properly defined.
55109             IF(IVAR.LE.4) THEN
55110               IF(IDIM.GT.KCC) CHTMP='               0'
55111             ELSEIF(IVAR.LE.8) THEN
55112               IF(IDIM.GT.KCC) CHTMP='             0.0'
55113             ELSEIF(IVAR.LE.11) THEN
55114               IF(IDIM.GT.KCC) CHTMP='               0'
55115             ELSEIF(IVAR.LE.13) THEN
55116               IF(IDIM.GT.NDC) CHTMP='               0'
55117             ELSEIF(IVAR.LE.14) THEN
55118               IF(IDIM.GT.NDC) CHTMP='             0.0'
55119             ELSEIF(IVAR.LE.19) THEN
55120               IF(IDIM.GT.NDC) CHTMP='               0'
55121             ELSEIF(IVAR.LE.21) THEN
55122               IF(IDIM.GT.KCC) CHTMP='                '
55123             ELSE
55124               IF(IDIM.GT.KCC) CHTMP='               0'
55125             ENDIF
55126  
55127 C...Length of variable, trailing decimal zeros, quotation marks.
55128             LLOW=1
55129             LHIG=1
55130             DO 240 LL=1,16
55131               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
55132               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
55133   240       CONTINUE
55134             CHNEW=CHTMP(LLOW:LHIG)//' '
55135             LNEW=1+LHIG-LLOW
55136             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
55137               LNEW=LNEW+1
55138   250         LNEW=LNEW-1
55139               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
55140               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
55141               IF(LNEW.EQ.0) THEN
55142                 CHNEW(1:3)='0D0'
55143                 LNEW=3
55144               ELSE
55145                 CHNEW(LNEW+1:LNEW+2)='D0'
55146                 LNEW=LNEW+2
55147               ENDIF
55148             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
55149               DO 260 LL=LNEW,1,-1
55150                 IF(CHNEW(LL:LL).EQ.'''') THEN
55151                   CHTMP=CHNEW
55152                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
55153                   LNEW=LNEW+1
55154                 ENDIF
55155   260         CONTINUE
55156               LNEW=MIN(14,LNEW)
55157               CHTMP=CHNEW
55158               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
55159               LNEW=LNEW+2
55160             ENDIF
55161  
55162 C...Form composite character string, often including repetition counter.
55163             IF(CHNEW.NE.CHOLD) THEN
55164               NRPT=1
55165               CHOLD=CHNEW
55166               CHCOM=CHNEW
55167               LCOM=LNEW
55168             ELSE
55169               LRPT=LNEW+1
55170               IF(NRPT.GE.2) LRPT=LNEW+3
55171               IF(NRPT.GE.10) LRPT=LNEW+4
55172               IF(NRPT.GE.100) LRPT=LNEW+5
55173               IF(NRPT.GE.1000) LRPT=LNEW+6
55174               LLIN=LLIN-LRPT
55175               NRPT=NRPT+1
55176               WRITE(CHTMP,5400) NRPT
55177               LRPT=1
55178               IF(NRPT.GE.10) LRPT=2
55179               IF(NRPT.GE.100) LRPT=3
55180               IF(NRPT.GE.1000) LRPT=4
55181               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
55182               LCOM=LRPT+1+LNEW
55183             ENDIF
55184  
55185 C...Add characters to end of line, to new line (after storing old line),
55186 C...or to new block of lines (after writing old block).
55187             IF(LLIN+LCOM.LE.70) THEN
55188               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
55189               LLIN=LLIN+LCOM+1
55190             ELSEIF(NLIN.LE.19) THEN
55191               CHLIN(LLIN+1:72)=' '
55192               CHBLK(NLIN)=CHLIN
55193               NLIN=NLIN+1
55194               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
55195               LLIN=6+LCOM+1
55196             ELSE
55197               CHLIN(LLIN:72)='/'//' '
55198               CHBLK(NLIN)=CHLIN
55199               WRITE(CHTMP,5400) IDIM-NRPT
55200               CHBLK(1)(30:33)=CHTMP(13:16)
55201               DO 270 ILIN=1,NLIN
55202                 WRITE(LFN,5700) CHBLK(ILIN)
55203   270         CONTINUE
55204               NLIN=1
55205               CHLIN=' '
55206               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
55207      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
55208               WRITE(CHTMP,5400) IDIM-NRPT+1
55209               CHLIN(25:28)=CHTMP(13:16)
55210               LLIN=35+LCOM+1
55211             ENDIF
55212   280     CONTINUE
55213  
55214 C...Write final block of lines.
55215           CHLIN(LLIN:72)='/'//' '
55216           CHBLK(NLIN)=CHLIN
55217           WRITE(CHTMP,5400) NDIM
55218           CHBLK(1)(30:33)=CHTMP(13:16)
55219           DO 290 ILIN=1,NLIN
55220             WRITE(LFN,5700) CHBLK(ILIN)
55221   290     CONTINUE
55222   300   CONTINUE
55223       ENDIF
55224  
55225 C...Formats for reading and writing particle data.
55226  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
55227  5100 FORMAT(10X,2I5,F12.6,5I10)
55228  5200 FORMAT(A120)
55229  5300 FORMAT(I9)
55230  5400 FORMAT(I16)
55231  5500 FORMAT(F16.5)
55232  5600 FORMAT(F16.6)
55233  5700 FORMAT(A72)
55234  
55235       RETURN
55236       END
55237  
55238 C*********************************************************************
55239  
55240 C...PYK
55241 C...Provides various integer-valued event related data.
55242  
55243       FUNCTION PYK(I,J)
55244  
55245 C...Double precision and integer declarations.
55246       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55247       IMPLICIT INTEGER(I-N)
55248       INTEGER PYK,PYCHGE,PYCOMP
55249 C...Commonblocks.
55250       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55251       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55252       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55253       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55254  
55255 C...Default value. For I=0 number of entries, number of stable entries
55256 C...or 3 times total charge.
55257       PYK=0
55258       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
55259       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
55260         PYK=N
55261       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
55262         DO 100 I1=1,N
55263           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
55264           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
55265      &    PYCHGE(K(I1,2))
55266   100   CONTINUE
55267       ELSEIF(I.EQ.0) THEN
55268  
55269 C...For I > 0 direct readout of K matrix or charge.
55270       ELSEIF(J.LE.5) THEN
55271         PYK=K(I,J)
55272       ELSEIF(J.EQ.6) THEN
55273         PYK=PYCHGE(K(I,2))
55274  
55275 C...Status (existing/fragmented/decayed), parton/hadron separation.
55276       ELSEIF(J.LE.8) THEN
55277         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
55278         IF(J.EQ.8) PYK=PYK*K(I,2)
55279       ELSEIF(J.LE.12) THEN
55280         KFA=IABS(K(I,2))
55281         KC=PYCOMP(KFA)
55282         KQ=0
55283         IF(KC.NE.0) KQ=KCHG(KC,2)
55284         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
55285         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
55286         IF(J.EQ.11) PYK=KC
55287         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
55288  
55289 C...Heaviest flavour in hadron/diquark.
55290       ELSEIF(J.EQ.13) THEN
55291         KFA=IABS(K(I,2))
55292         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
55293         IF(KFA.LT.10) PYK=KFA
55294         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
55295         PYK=PYK*ISIGN(1,K(I,2))
55296  
55297 C...Particle history: generation, ancestor, rank.
55298       ELSEIF(J.LE.15) THEN
55299         I2=I
55300         I1=I
55301   110   PYK=PYK+1
55302         I2=I1
55303         I1=K(I1,3)
55304         IF(I1.GT.0) THEN
55305           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
55306         ENDIF
55307         IF(J.EQ.15) PYK=I2
55308       ELSEIF(J.EQ.16) THEN
55309         KFA=IABS(K(I,2))
55310         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
55311      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
55312           I1=I
55313   120     I2=I1
55314           I1=K(I1,3)
55315           IF(I1.GT.0) THEN
55316             KFAM=IABS(K(I1,2))
55317             ILP=1
55318             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
55319             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
55320      &      ILP=0
55321             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
55322             IF(ILP.EQ.1) GOTO 120
55323           ENDIF
55324           IF(K(I1,1).EQ.12) THEN
55325             DO 130 I3=I1+1,I2
55326               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
55327      &        .AND.K(I3,2).NE.93) PYK=PYK+1
55328   130       CONTINUE
55329           ELSE
55330             I3=I2
55331   140       PYK=PYK+1
55332             I3=I3+1
55333             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
55334           ENDIF
55335         ENDIF
55336  
55337 C...Particle coming from collapsing jet system or not.
55338       ELSEIF(J.EQ.17) THEN
55339         I1=I
55340   150   PYK=PYK+1
55341         I3=I1
55342         I1=K(I1,3)
55343         I0=MAX(1,I1)
55344         KC=PYCOMP(K(I0,2))
55345         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
55346           IF(PYK.EQ.1) PYK=-1
55347           IF(PYK.GT.1) PYK=0
55348           RETURN
55349         ENDIF
55350         IF(KCHG(KC,2).EQ.0) GOTO 150
55351         IF(K(I1,1).NE.12) PYK=0
55352         IF(K(I1,1).NE.12) RETURN
55353         I2=I1
55354   160   I2=I2+1
55355         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
55356         K3M=K(I3-1,3)
55357         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
55358         K3P=K(I3+1,3)
55359         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
55360  
55361 C...Number of decay products. Colour flow.
55362       ELSEIF(J.EQ.18) THEN
55363         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
55364         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
55365       ELSEIF(J.LE.22) THEN
55366         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
55367         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
55368         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
55369         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
55370         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
55371       ELSE
55372       ENDIF
55373  
55374       RETURN
55375       END
55376  
55377 C*********************************************************************
55378  
55379 C...PYP
55380 C...Provides various real-valued event related data.
55381  
55382       FUNCTION PYP(I,J)
55383  
55384 C...Double precision and integer declarations.
55385       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55386       IMPLICIT INTEGER(I-N)
55387       INTEGER PYK,PYCHGE,PYCOMP
55388 C...Commonblocks.
55389       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55390       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55391       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55392       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55393 C...Local array.
55394       DIMENSION PSUM(4)
55395  
55396 C...Set default value. For I = 0 sum of momenta or charges,
55397 C...or invariant mass of system.
55398       PYP=0D0
55399       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
55400       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
55401         DO 100 I1=1,N
55402           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
55403   100   CONTINUE
55404       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
55405         DO 120 J1=1,4
55406           PSUM(J1)=0D0
55407           DO 110 I1=1,N
55408             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
55409      &      P(I1,J1)
55410   110     CONTINUE
55411   120   CONTINUE
55412         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
55413       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
55414         DO 130 I1=1,N
55415           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
55416   130   CONTINUE
55417       ELSEIF(I.EQ.0) THEN
55418  
55419 C...Direct readout of P matrix.
55420       ELSEIF(J.LE.5) THEN
55421         PYP=P(I,J)
55422  
55423 C...Charge, total momentum, transverse momentum, transverse mass.
55424       ELSEIF(J.LE.12) THEN
55425         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
55426         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
55427         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
55428         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
55429         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
55430  
55431 C...Theta and phi angle in radians or degrees.
55432       ELSEIF(J.LE.16) THEN
55433         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
55434         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
55435         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
55436  
55437 C...True rapidity, rapidity with pion mass, pseudorapidity.
55438       ELSEIF(J.LE.19) THEN
55439         PMR=0D0
55440         IF(J.EQ.17) PMR=P(I,5)
55441         IF(J.EQ.18) PMR=PYMASS(211)
55442         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
55443         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
55444      &  1D20)),P(I,3))
55445  
55446 C...Energy and momentum fractions (only to be used in CM frame).
55447       ELSEIF(J.LE.25) THEN
55448         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
55449         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
55450         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
55451         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
55452         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
55453         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
55454       ENDIF
55455  
55456       RETURN
55457       END
55458  
55459 C*********************************************************************
55460  
55461 C...PYSPHE
55462 C...Performs sphericity tensor analysis to give sphericity,
55463 C...aplanarity and the related event axes.
55464  
55465       SUBROUTINE PYSPHE(SPH,APL)
55466  
55467 C...Double precision and integer declarations.
55468       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55469       IMPLICIT INTEGER(I-N)
55470       INTEGER PYK,PYCHGE,PYCOMP
55471 C...Commonblocks.
55472       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55473       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55474       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55475       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55476 C...Local arrays.
55477       DIMENSION SM(3,3),SV(3,3)
55478  
55479 C...Calculate matrix to be diagonalized.
55480       NP=0
55481       DO 110 J1=1,3
55482         DO 100 J2=J1,3
55483           SM(J1,J2)=0D0
55484   100   CONTINUE
55485   110 CONTINUE
55486       PS=0D0
55487       DO 140 I=1,N
55488         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
55489         IF(MSTU(41).GE.2) THEN
55490           KC=PYCOMP(K(I,2))
55491           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55492      &    KC.EQ.18) GOTO 140
55493           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55494      &    GOTO 140
55495         ENDIF
55496         NP=NP+1
55497         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55498         PWT=1D0
55499         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
55500      &  MAX(1D-10,PA)**(PARU(41)-2D0)
55501         DO 130 J1=1,3
55502           DO 120 J2=J1,3
55503             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
55504   120     CONTINUE
55505   130   CONTINUE
55506         PS=PS+PWT*PA**2
55507   140 CONTINUE
55508  
55509 C...Very low multiplicities (0 or 1) not considered.
55510       IF(NP.LE.1) THEN
55511         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
55512         SPH=-1D0
55513         APL=-1D0
55514         RETURN
55515       ENDIF
55516       DO 160 J1=1,3
55517         DO 150 J2=J1,3
55518           SM(J1,J2)=SM(J1,J2)/PS
55519   150   CONTINUE
55520   160 CONTINUE
55521  
55522 C...Find eigenvalues to matrix (third degree equation).
55523       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
55524      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
55525       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
55526      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
55527      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
55528       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
55529       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
55530       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
55531       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
55532       IF(P(N+2,4).LT.1D-5) THEN
55533         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
55534         SPH=-1D0
55535         APL=-1D0
55536         RETURN
55537       ENDIF
55538  
55539 C...Find first and last eigenvector by solving equation system.
55540       DO 240 I=1,3,2
55541         DO 180 J1=1,3
55542           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
55543           DO 170 J2=J1+1,3
55544             SV(J1,J2)=SM(J1,J2)
55545             SV(J2,J1)=SM(J1,J2)
55546   170     CONTINUE
55547   180   CONTINUE
55548         SMAX=0D0
55549         DO 200 J1=1,3
55550           DO 190 J2=1,3
55551             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
55552             JA=J1
55553             JB=J2
55554             SMAX=ABS(SV(J1,J2))
55555   190     CONTINUE
55556   200   CONTINUE
55557         SMAX=0D0
55558         DO 220 J3=JA+1,JA+2
55559           J1=J3-3*((J3-1)/3)
55560           RL=SV(J1,JB)/SV(JA,JB)
55561           DO 210 J2=1,3
55562             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
55563             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
55564             JC=J1
55565             SMAX=ABS(SV(J1,J2))
55566   210     CONTINUE
55567   220   CONTINUE
55568         JB1=JB+1-3*(JB/3)
55569         JB2=JB+2-3*((JB+1)/3)
55570         P(N+I,JB1)=-SV(JC,JB2)
55571         P(N+I,JB2)=SV(JC,JB1)
55572         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
55573      &  SV(JA,JB)
55574         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
55575         SGN=(-1D0)**INT(PYR(0)+0.5D0)
55576         DO 230 J=1,3
55577           P(N+I,J)=SGN*P(N+I,J)/PA
55578   230   CONTINUE
55579   240 CONTINUE
55580  
55581 C...Middle axis orthogonal to other two. Fill other codes.
55582       SGN=(-1D0)**INT(PYR(0)+0.5D0)
55583       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
55584       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
55585       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
55586       DO 260 I=1,3
55587         K(N+I,1)=31
55588         K(N+I,2)=95
55589         K(N+I,3)=I
55590         K(N+I,4)=0
55591         K(N+I,5)=0
55592         P(N+I,5)=0D0
55593         DO 250 J=1,5
55594           V(I,J)=0D0
55595   250   CONTINUE
55596   260 CONTINUE
55597  
55598 C...Calculate sphericity and aplanarity. Select storing option.
55599       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
55600       APL=1.5D0*P(N+3,4)
55601       MSTU(61)=N+1
55602       MSTU(62)=NP
55603       IF(MSTU(43).LE.1) MSTU(3)=3
55604       IF(MSTU(43).GE.2) N=N+3
55605  
55606       RETURN
55607       END
55608  
55609 C*********************************************************************
55610  
55611 C...PYTHRU
55612 C...Performs thrust analysis to give thrust, oblateness
55613 C...and the related event axes.
55614  
55615       SUBROUTINE PYTHRU(THR,OBL)
55616  
55617 C...Double precision and integer declarations.
55618       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55619       IMPLICIT INTEGER(I-N)
55620       INTEGER PYK,PYCHGE,PYCOMP
55621 C...Commonblocks.
55622       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55623       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55624       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55625       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55626 C...Local arrays.
55627       DIMENSION TDI(3),TPR(3)
55628  
55629 C...Take copy of particles that are to be considered in thrust analysis.
55630       NP=0
55631       PS=0D0
55632       DO 100 I=1,N
55633         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
55634         IF(MSTU(41).GE.2) THEN
55635           KC=PYCOMP(K(I,2))
55636           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55637      &    KC.EQ.18) GOTO 100
55638           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55639      &    GOTO 100
55640         ENDIF
55641         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
55642           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
55643           THR=-2D0
55644           OBL=-2D0
55645           RETURN
55646         ENDIF
55647         NP=NP+1
55648         K(N+NP,1)=23
55649         P(N+NP,1)=P(I,1)
55650         P(N+NP,2)=P(I,2)
55651         P(N+NP,3)=P(I,3)
55652         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55653         P(N+NP,5)=1D0
55654         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
55655      &  P(N+NP,4)**(PARU(42)-1D0)
55656         PS=PS+P(N+NP,4)*P(N+NP,5)
55657   100 CONTINUE
55658  
55659 C...Very low multiplicities (0 or 1) not considered.
55660       IF(NP.LE.1) THEN
55661         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
55662         THR=-1D0
55663         OBL=-1D0
55664         RETURN
55665       ENDIF
55666  
55667 C...Loop over thrust and major. T axis along z direction in latter case.
55668       DO 320 ILD=1,2
55669         IF(ILD.EQ.2) THEN
55670           K(N+NP+1,1)=31
55671           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
55672           MSTU(33)=1
55673           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
55674           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
55675           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
55676         ENDIF
55677  
55678 C...Find and order particles with highest p (pT for major).
55679         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
55680           P(ILF,4)=0D0
55681   110   CONTINUE
55682         DO 160 I=N+1,N+NP
55683           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
55684           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
55685             IF(P(I,4).LE.P(ILF,4)) GOTO 140
55686             DO 120 J=1,5
55687               P(ILF+1,J)=P(ILF,J)
55688   120       CONTINUE
55689   130     CONTINUE
55690           ILF=N+NP+3
55691   140     DO 150 J=1,5
55692             P(ILF+1,J)=P(I,J)
55693   150     CONTINUE
55694   160   CONTINUE
55695  
55696 C...Find and order initial axes with highest thrust (major).
55697         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
55698           P(ILG,4)=0D0
55699   170   CONTINUE
55700         NC=2**(MIN(MSTU(44),NP)-1)
55701         DO 250 ILC=1,NC
55702           DO 180 J=1,3
55703             TDI(J)=0D0
55704   180     CONTINUE
55705           DO 200 ILF=1,MIN(MSTU(44),NP)
55706             SGN=P(N+NP+ILF+3,5)
55707             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
55708             DO 190 J=1,4-ILD
55709               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
55710   190       CONTINUE
55711   200     CONTINUE
55712           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
55713           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
55714             IF(TDS.LE.P(ILG,4)) GOTO 230
55715             DO 210 J=1,4
55716               P(ILG+1,J)=P(ILG,J)
55717   210       CONTINUE
55718   220     CONTINUE
55719           ILG=N+NP+MSTU(44)+4
55720   230     DO 240 J=1,3
55721             P(ILG+1,J)=TDI(J)
55722   240     CONTINUE
55723           P(ILG+1,4)=TDS
55724   250   CONTINUE
55725  
55726 C...Iterate direction of axis until stable maximum.
55727         P(N+NP+ILD,4)=0D0
55728         ILG=0
55729   260   ILG=ILG+1
55730         THP=0D0
55731   270   THPS=THP
55732         DO 280 J=1,3
55733           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
55734           IF(THP.GT.1D-10) TDI(J)=TPR(J)
55735           TPR(J)=0D0
55736   280   CONTINUE
55737         DO 300 I=N+1,N+NP
55738           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
55739           DO 290 J=1,4-ILD
55740             TPR(J)=TPR(J)+SGN*P(I,J)
55741   290     CONTINUE
55742   300   CONTINUE
55743         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
55744         IF(THP.GE.THPS+PARU(48)) GOTO 270
55745  
55746 C...Save good axis. Try new initial axis until a number of tries agree.
55747         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
55748         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
55749           IAGR=0
55750           SGN=(-1D0)**INT(PYR(0)+0.5D0)
55751           DO 310 J=1,3
55752             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
55753   310     CONTINUE
55754           P(N+NP+ILD,4)=THP
55755           P(N+NP+ILD,5)=0D0
55756         ENDIF
55757         IAGR=IAGR+1
55758         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
55759   320 CONTINUE
55760  
55761 C...Find minor axis and value by orthogonality.
55762       SGN=(-1D0)**INT(PYR(0)+0.5D0)
55763       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
55764       P(N+NP+3,2)=SGN*P(N+NP+2,1)
55765       P(N+NP+3,3)=0D0
55766       THP=0D0
55767       DO 330 I=N+1,N+NP
55768         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
55769   330 CONTINUE
55770       P(N+NP+3,4)=THP/PS
55771       P(N+NP+3,5)=0D0
55772  
55773 C...Fill axis information. Rotate back to original coordinate system.
55774       DO 350 ILD=1,3
55775         K(N+ILD,1)=31
55776         K(N+ILD,2)=96
55777         K(N+ILD,3)=ILD
55778         K(N+ILD,4)=0
55779         K(N+ILD,5)=0
55780         DO 340 J=1,5
55781           P(N+ILD,J)=P(N+NP+ILD,J)
55782           V(N+ILD,J)=0D0
55783   340   CONTINUE
55784   350 CONTINUE
55785       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
55786  
55787 C...Calculate thrust and oblateness. Select storing option.
55788       THR=P(N+1,4)
55789       OBL=P(N+2,4)-P(N+3,4)
55790       MSTU(61)=N+1
55791       MSTU(62)=NP
55792       IF(MSTU(43).LE.1) MSTU(3)=3
55793       IF(MSTU(43).GE.2) N=N+3
55794  
55795       RETURN
55796       END
55797  
55798 C*********************************************************************
55799  
55800 C...PYCLUS
55801 C...Subdivides the particle content of an event into jets/clusters.
55802  
55803       SUBROUTINE PYCLUS(NJET)
55804  
55805 C...Double precision and integer declarations.
55806       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55807       IMPLICIT INTEGER(I-N)
55808       INTEGER PYK,PYCHGE,PYCOMP
55809 C...Commonblocks.
55810       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55811       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55812       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55813       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55814 C...Local arrays and saved variables.
55815       DIMENSION PS(5)
55816       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
55817  
55818 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
55819       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
55820      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
55821       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
55822      &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
55823       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
55824      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
55825  
55826 C...If first time, reset. If reentering, skip preliminaries.
55827       IF(MSTU(48).LE.0) THEN
55828         NP=0
55829         DO 100 J=1,5
55830           PS(J)=0D0
55831   100   CONTINUE
55832         PSS=0D0
55833         PIMASS=PMAS(PYCOMP(211),1)
55834       ELSE
55835         NJET=NSAV
55836         IF(MSTU(43).GE.2) N=N-NJET
55837         DO 110 I=N+1,N+NJET
55838           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55839   110   CONTINUE
55840         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
55841           R2ACC=PARU(44)**2
55842         ELSE
55843           R2ACC=PARU(45)*PS(5)**2
55844         ENDIF
55845         NLOOP=0
55846         GOTO 300
55847       ENDIF
55848  
55849 C...Find which particles are to be considered in cluster search.
55850       DO 140 I=1,N
55851         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
55852         IF(MSTU(41).GE.2) THEN
55853           KC=PYCOMP(K(I,2))
55854           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55855      &    KC.EQ.18) GOTO 140
55856           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55857      &    GOTO 140
55858         ENDIF
55859         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
55860           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
55861           NJET=-1
55862           RETURN
55863         ENDIF
55864  
55865 C...Take copy of these particles, with space left for jets later on.
55866         NP=NP+1
55867         K(N+NP,3)=I
55868         DO 120 J=1,5
55869           P(N+NP,J)=P(I,J)
55870   120   CONTINUE
55871         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
55872         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
55873         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
55874         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55875         DO 130 J=1,4
55876           PS(J)=PS(J)+P(N+NP,J)
55877   130   CONTINUE
55878         PSS=PSS+P(N+NP,5)
55879   140 CONTINUE
55880       DO 160 I=N+1,N+NP
55881         K(I+NP,3)=K(I,3)
55882         DO 150 J=1,5
55883           P(I+NP,J)=P(I,J)
55884   150   CONTINUE
55885   160 CONTINUE
55886       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
55887  
55888 C...Very low multiplicities not considered.
55889       IF(NP.LT.MSTU(47)) THEN
55890         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
55891         NJET=-1
55892         RETURN
55893       ENDIF
55894  
55895 C...Find precluster configuration. If too few jets, make harder cuts.
55896       NLOOP=0
55897       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
55898         R2ACC=PARU(44)**2
55899       ELSE
55900         R2ACC=PARU(45)*PS(5)**2
55901       ENDIF
55902       RINIT=1.25D0*PARU(43)
55903       IF(NP.LE.MSTU(47)+2) RINIT=0D0
55904   170 RINIT=0.8D0*RINIT
55905       NPRE=0
55906       NREM=NP
55907       DO 180 I=N+NP+1,N+2*NP
55908         K(I,4)=0
55909   180 CONTINUE
55910  
55911 C...Sum up small momentum region. Jet if enough absolute momentum.
55912       IF(MSTU(46).LE.2) THEN
55913         DO 190 J=1,4
55914           P(N+1,J)=0D0
55915   190   CONTINUE
55916         DO 210 I=N+NP+1,N+2*NP
55917           IF(P(I,5).GT.2D0*RINIT) GOTO 210
55918           NREM=NREM-1
55919           K(I,4)=1
55920           DO 200 J=1,4
55921             P(N+1,J)=P(N+1,J)+P(I,J)
55922   200     CONTINUE
55923   210   CONTINUE
55924         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
55925         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
55926         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
55927         IF(NREM.EQ.0) GOTO 170
55928       ENDIF
55929  
55930 C...Find fastest remaining particle.
55931   220 NPRE=NPRE+1
55932       PMAX=0D0
55933       DO 230 I=N+NP+1,N+2*NP
55934         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
55935         IMAX=I
55936         PMAX=P(I,5)
55937   230 CONTINUE
55938       DO 240 J=1,5
55939         P(N+NPRE,J)=P(IMAX,J)
55940   240 CONTINUE
55941       NREM=NREM-1
55942       K(IMAX,4)=NPRE
55943  
55944 C...Sum up precluster around it according to pT separation.
55945       IF(MSTU(46).LE.2) THEN
55946         DO 260 I=N+NP+1,N+2*NP
55947           IF(K(I,4).NE.0) GOTO 260
55948           R2=R2T(I,IMAX)
55949           IF(R2.GT.RINIT**2) GOTO 260
55950           NREM=NREM-1
55951           K(I,4)=NPRE
55952           DO 250 J=1,4
55953             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
55954   250     CONTINUE
55955   260   CONTINUE
55956         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
55957  
55958 C...Sum up precluster around it according to mass or
55959 C...Durham pT separation.
55960       ELSE
55961   270   IMIN=0
55962         R2MIN=RINIT**2
55963         DO 280 I=N+NP+1,N+2*NP
55964           IF(K(I,4).NE.0) GOTO 280
55965           IF(MSTU(46).LE.4) THEN
55966             R2=R2M(I,N+NPRE)
55967           ELSE
55968             R2=R2D(I,N+NPRE)
55969           ENDIF
55970           IF(R2.GE.R2MIN) GOTO 280
55971           IMIN=I
55972           R2MIN=R2
55973   280   CONTINUE
55974         IF(IMIN.NE.0) THEN
55975           DO 290 J=1,4
55976             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
55977   290     CONTINUE
55978           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
55979           NREM=NREM-1
55980           K(IMIN,4)=NPRE
55981           GOTO 270
55982         ENDIF
55983       ENDIF
55984  
55985 C...Check if more preclusters to be found. Start over if too few.
55986       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
55987       IF(NREM.GT.0) GOTO 220
55988       NJET=NPRE
55989  
55990 C...Reassign all particles to nearest jet. Sum up new jet momenta.
55991   300 TSAV=0D0
55992       PSJT=0D0
55993   310 IF(MSTU(46).LE.1) THEN
55994         DO 330 I=N+1,N+NJET
55995           DO 320 J=1,4
55996             V(I,J)=0D0
55997   320     CONTINUE
55998   330   CONTINUE
55999         DO 360 I=N+NP+1,N+2*NP
56000           R2MIN=PSS**2
56001           DO 340 IJET=N+1,N+NJET
56002             IF(P(IJET,5).LT.RINIT) GOTO 340
56003             R2=R2T(I,IJET)
56004             IF(R2.GE.R2MIN) GOTO 340
56005             IMIN=IJET
56006             R2MIN=R2
56007   340     CONTINUE
56008           K(I,4)=IMIN-N
56009           DO 350 J=1,4
56010             V(IMIN,J)=V(IMIN,J)+P(I,J)
56011   350     CONTINUE
56012   360   CONTINUE
56013         PSJT=0D0
56014         DO 380 I=N+1,N+NJET
56015           DO 370 J=1,4
56016             P(I,J)=V(I,J)
56017   370     CONTINUE
56018           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56019           PSJT=PSJT+P(I,5)
56020   380   CONTINUE
56021       ENDIF
56022  
56023 C...Find two closest jets.
56024       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
56025       DO 400 ITRY1=N+1,N+NJET-1
56026         DO 390 ITRY2=ITRY1+1,N+NJET
56027           IF(MSTU(46).LE.2) THEN
56028             R2=R2T(ITRY1,ITRY2)
56029           ELSEIF(MSTU(46).LE.4) THEN
56030             R2=R2M(ITRY1,ITRY2)
56031           ELSE
56032             R2=R2D(ITRY1,ITRY2)
56033           ENDIF
56034           IF(R2.GE.R2MIN) GOTO 390
56035           IMIN1=ITRY1
56036           IMIN2=ITRY2
56037           R2MIN=R2
56038   390   CONTINUE
56039   400 CONTINUE
56040  
56041 C...If allowed, join two closest jets and start over.
56042       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
56043         IREC=MIN(IMIN1,IMIN2)
56044         IDEL=MAX(IMIN1,IMIN2)
56045         DO 410 J=1,4
56046           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
56047   410   CONTINUE
56048         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
56049         DO 430 I=IDEL+1,N+NJET
56050           DO 420 J=1,5
56051             P(I-1,J)=P(I,J)
56052   420     CONTINUE
56053   430   CONTINUE
56054         IF(MSTU(46).GE.2) THEN
56055           DO 440 I=N+NP+1,N+2*NP
56056             IORI=N+K(I,4)
56057             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
56058             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
56059   440     CONTINUE
56060         ENDIF
56061         NJET=NJET-1
56062         GOTO 300
56063  
56064 C...Divide up broad jet if empty cluster in list of final ones.
56065       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
56066         DO 450 I=N+1,N+NJET
56067           K(I,5)=0
56068   450   CONTINUE
56069         DO 460 I=N+NP+1,N+2*NP
56070           K(N+K(I,4),5)=K(N+K(I,4),5)+1
56071   460   CONTINUE
56072         IEMP=0
56073         DO 470 I=N+1,N+NJET
56074           IF(K(I,5).EQ.0) IEMP=I
56075   470   CONTINUE
56076         IF(IEMP.NE.0) THEN
56077           NLOOP=NLOOP+1
56078           ISPL=0
56079           R2MAX=0D0
56080           DO 480 I=N+NP+1,N+2*NP
56081             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
56082             IJET=N+K(I,4)
56083             R2=R2T(I,IJET)
56084             IF(R2.LE.R2MAX) GOTO 480
56085             ISPL=I
56086             R2MAX=R2
56087   480     CONTINUE
56088           IF(ISPL.NE.0) THEN
56089             IJET=N+K(ISPL,4)
56090             DO 490 J=1,4
56091               P(IEMP,J)=P(ISPL,J)
56092               P(IJET,J)=P(IJET,J)-P(ISPL,J)
56093   490       CONTINUE
56094             P(IEMP,5)=P(ISPL,5)
56095             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
56096             IF(NLOOP.LE.2) GOTO 300
56097           ENDIF
56098         ENDIF
56099       ENDIF
56100  
56101 C...If generalized thrust has not yet converged, continue iteration.
56102       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
56103      &THEN
56104         TSAV=PSJT/PSS
56105         GOTO 310
56106       ENDIF
56107  
56108 C...Reorder jets according to energy.
56109       DO 510 I=N+1,N+NJET
56110         DO 500 J=1,5
56111           V(I,J)=P(I,J)
56112   500   CONTINUE
56113   510 CONTINUE
56114       DO 540 INEW=N+1,N+NJET
56115         PEMAX=0D0
56116         DO 520 ITRY=N+1,N+NJET
56117           IF(V(ITRY,4).LE.PEMAX) GOTO 520
56118           IMAX=ITRY
56119           PEMAX=V(ITRY,4)
56120   520   CONTINUE
56121         K(INEW,1)=31
56122         K(INEW,2)=97
56123         K(INEW,3)=INEW-N
56124         K(INEW,4)=0
56125         DO 530 J=1,5
56126           P(INEW,J)=V(IMAX,J)
56127   530   CONTINUE
56128         V(IMAX,4)=-1D0
56129         K(IMAX,5)=INEW
56130   540 CONTINUE
56131  
56132 C...Clean up particle-jet assignments and jet information.
56133       DO 550 I=N+NP+1,N+2*NP
56134         IORI=K(N+K(I,4),5)
56135         K(I,4)=IORI-N
56136         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
56137         K(IORI,4)=K(IORI,4)+1
56138   550 CONTINUE
56139       IEMP=0
56140       PSJT=0D0
56141       DO 570 I=N+1,N+NJET
56142         K(I,5)=0
56143         PSJT=PSJT+P(I,5)
56144         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
56145         DO 560 J=1,5
56146           V(I,J)=0D0
56147   560   CONTINUE
56148         IF(K(I,4).EQ.0) IEMP=I
56149   570 CONTINUE
56150  
56151 C...Select storing option. Output variables. Check for failure.
56152       MSTU(61)=N+1
56153       MSTU(62)=NP
56154       MSTU(63)=NPRE
56155       PARU(61)=PS(5)
56156       PARU(62)=PSJT/PSS
56157       PARU(63)=SQRT(R2MIN)
56158       IF(NJET.LE.1) PARU(63)=0D0
56159       IF(IEMP.NE.0) THEN
56160         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
56161         NJET=-1
56162         RETURN
56163       ENDIF
56164       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
56165       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
56166       NSAV=NJET
56167  
56168       RETURN
56169       END
56170  
56171 C*********************************************************************
56172  
56173 C...PYCELL
56174 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
56175 C...as used for calorimeters at hadron colliders.
56176  
56177       SUBROUTINE PYCELL(NJET)
56178  
56179 C...Double precision and integer declarations.
56180       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56181       IMPLICIT INTEGER(I-N)
56182       INTEGER PYK,PYCHGE,PYCOMP
56183 C...Commonblocks.
56184       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56185       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56186       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56187       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56188  
56189 C...Loop over all particles. Find cell that was hit by given particle.
56190       PTLRAT=1D0/SINH(PARU(51))**2
56191       NP=0
56192       NC=N
56193       DO 110 I=1,N
56194         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
56195         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
56196         IF(MSTU(41).GE.2) THEN
56197           KC=PYCOMP(K(I,2))
56198           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56199      &    KC.EQ.18) GOTO 110
56200           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56201      &    GOTO 110
56202         ENDIF
56203         NP=NP+1
56204         PT=SQRT(P(I,1)**2+P(I,2)**2)
56205         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
56206         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
56207      &  (ETA/PARU(51)+1D0))))
56208         PHI=PYANGL(P(I,1),P(I,2))
56209         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
56210      &  (PHI/PARU(1)+1D0))))
56211         IETPH=MSTU(52)*IETA+IPHI
56212  
56213 C...Add to cell already hit, or book new cell.
56214         DO 100 IC=N+1,NC
56215           IF(IETPH.EQ.K(IC,3)) THEN
56216             K(IC,4)=K(IC,4)+1
56217             P(IC,5)=P(IC,5)+PT
56218             GOTO 110
56219           ENDIF
56220   100   CONTINUE
56221         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
56222           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
56223           NJET=-2
56224           RETURN
56225         ENDIF
56226         NC=NC+1
56227         K(NC,3)=IETPH
56228         K(NC,4)=1
56229         K(NC,5)=2
56230         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
56231         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
56232         P(NC,5)=PT
56233   110 CONTINUE
56234  
56235 C...Smear true bin content by calorimeter resolution.
56236       IF(MSTU(53).GE.1) THEN
56237         DO 130 IC=N+1,NC
56238           PEI=P(IC,5)
56239           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
56240   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
56241      &    COS(PARU(2)*PYR(0))
56242           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
56243           P(IC,5)=PEF
56244           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
56245   130   CONTINUE
56246       ENDIF
56247  
56248 C...Remove cells below threshold.
56249       IF(PARU(58).GT.0D0) THEN
56250         NCC=NC
56251         NC=N
56252         DO 140 IC=N+1,NCC
56253           IF(P(IC,5).GT.PARU(58)) THEN
56254             NC=NC+1
56255             K(NC,3)=K(IC,3)
56256             K(NC,4)=K(IC,4)
56257             K(NC,5)=K(IC,5)
56258             P(NC,1)=P(IC,1)
56259             P(NC,2)=P(IC,2)
56260             P(NC,5)=P(IC,5)
56261           ENDIF
56262   140   CONTINUE
56263       ENDIF
56264  
56265 C...Find initiator cell: the one with highest pT of not yet used ones.
56266       NJ=NC
56267   150 ETMAX=0D0
56268       DO 160 IC=N+1,NC
56269         IF(K(IC,5).NE.2) GOTO 160
56270         IF(P(IC,5).LE.ETMAX) GOTO 160
56271         ICMAX=IC
56272         ETA=P(IC,1)
56273         PHI=P(IC,2)
56274         ETMAX=P(IC,5)
56275   160 CONTINUE
56276       IF(ETMAX.LT.PARU(52)) GOTO 220
56277       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
56278         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
56279         NJET=-2
56280         RETURN
56281       ENDIF
56282       K(ICMAX,5)=1
56283       NJ=NJ+1
56284       K(NJ,4)=0
56285       K(NJ,5)=1
56286       P(NJ,1)=ETA
56287       P(NJ,2)=PHI
56288       P(NJ,3)=0D0
56289       P(NJ,4)=0D0
56290       P(NJ,5)=0D0
56291  
56292 C...Sum up unused cells within required distance of initiator.
56293       DO 170 IC=N+1,NC
56294         IF(K(IC,5).EQ.0) GOTO 170
56295         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
56296         DPHIA=ABS(P(IC,2)-PHI)
56297         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
56298         PHIC=P(IC,2)
56299         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
56300         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
56301         K(IC,5)=-K(IC,5)
56302         K(NJ,4)=K(NJ,4)+K(IC,4)
56303         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
56304         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
56305         P(NJ,5)=P(NJ,5)+P(IC,5)
56306   170 CONTINUE
56307  
56308 C...Reject cluster below minimum ET, else accept.
56309       IF(P(NJ,5).LT.PARU(53)) THEN
56310         NJ=NJ-1
56311         DO 180 IC=N+1,NC
56312           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
56313   180   CONTINUE
56314       ELSEIF(MSTU(54).LE.2) THEN
56315         P(NJ,3)=P(NJ,3)/P(NJ,5)
56316         P(NJ,4)=P(NJ,4)/P(NJ,5)
56317         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
56318      &  P(NJ,4))
56319         DO 190 IC=N+1,NC
56320           IF(K(IC,5).LT.0) K(IC,5)=0
56321   190   CONTINUE
56322       ELSE
56323         DO 200 J=1,4
56324           P(NJ,J)=0D0
56325   200   CONTINUE
56326         DO 210 IC=N+1,NC
56327           IF(K(IC,5).GE.0) GOTO 210
56328           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
56329           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
56330           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
56331           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
56332           K(IC,5)=0
56333   210   CONTINUE
56334       ENDIF
56335       GOTO 150
56336  
56337 C...Arrange clusters in falling ET sequence.
56338   220 DO 250 I=1,NJ-NC
56339         ETMAX=0D0
56340         DO 230 IJ=NC+1,NJ
56341           IF(K(IJ,5).EQ.0) GOTO 230
56342           IF(P(IJ,5).LT.ETMAX) GOTO 230
56343           IJMAX=IJ
56344           ETMAX=P(IJ,5)
56345   230   CONTINUE
56346         K(IJMAX,5)=0
56347         K(N+I,1)=31
56348         K(N+I,2)=98
56349         K(N+I,3)=I
56350         K(N+I,4)=K(IJMAX,4)
56351         K(N+I,5)=0
56352         DO 240 J=1,5
56353           P(N+I,J)=P(IJMAX,J)
56354           V(N+I,J)=0D0
56355   240   CONTINUE
56356   250 CONTINUE
56357       NJET=NJ-NC
56358  
56359 C...Convert to massless or massive four-vectors.
56360       IF(MSTU(54).EQ.2) THEN
56361         DO 260 I=N+1,N+NJET
56362           ETA=P(I,3)
56363           P(I,1)=P(I,5)*COS(P(I,4))
56364           P(I,2)=P(I,5)*SIN(P(I,4))
56365           P(I,3)=P(I,5)*SINH(ETA)
56366           P(I,4)=P(I,5)*COSH(ETA)
56367           P(I,5)=0D0
56368   260   CONTINUE
56369       ELSEIF(MSTU(54).GE.3) THEN
56370         DO 270 I=N+1,N+NJET
56371           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
56372   270   CONTINUE
56373       ENDIF
56374  
56375 C...Information about storage.
56376       MSTU(61)=N+1
56377       MSTU(62)=NP
56378       MSTU(63)=NC-N
56379       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
56380       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
56381  
56382       RETURN
56383       END
56384  
56385 C*********************************************************************
56386  
56387 C...PYJMAS
56388 C...Determines, approximately, the two jet masses that minimize
56389 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
56390  
56391       SUBROUTINE PYJMAS(PMH,PML)
56392  
56393 C...Double precision and integer declarations.
56394       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56395       IMPLICIT INTEGER(I-N)
56396       INTEGER PYK,PYCHGE,PYCOMP
56397 C...Commonblocks.
56398       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56399       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56400       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56401       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56402 C...Local arrays.
56403       DIMENSION SM(3,3),SAX(3),PS(3,5)
56404  
56405 C...Reset.
56406       NP=0
56407       DO 120 J1=1,3
56408         DO 100 J2=J1,3
56409           SM(J1,J2)=0D0
56410   100   CONTINUE
56411         DO 110 J2=1,4
56412           PS(J1,J2)=0D0
56413   110   CONTINUE
56414   120 CONTINUE
56415       PSS=0D0
56416       PIMASS=PMAS(PYCOMP(211),1)
56417  
56418 C...Take copy of particles that are to be considered in mass analysis.
56419       DO 170 I=1,N
56420         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
56421         IF(MSTU(41).GE.2) THEN
56422           KC=PYCOMP(K(I,2))
56423           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56424      &    KC.EQ.18) GOTO 170
56425           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56426      &    GOTO 170
56427         ENDIF
56428         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
56429           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
56430           PMH=-2D0
56431           PML=-2D0
56432           RETURN
56433         ENDIF
56434         NP=NP+1
56435         DO 130 J=1,5
56436           P(N+NP,J)=P(I,J)
56437   130   CONTINUE
56438         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
56439         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
56440         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
56441  
56442 C...Fill information in sphericity tensor and total momentum vector.
56443         DO 150 J1=1,3
56444           DO 140 J2=J1,3
56445             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
56446   140     CONTINUE
56447   150   CONTINUE
56448         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56449         DO 160 J=1,4
56450           PS(3,J)=PS(3,J)+P(N+NP,J)
56451   160   CONTINUE
56452   170 CONTINUE
56453  
56454 C...Very low multiplicities (0 or 1) not considered.
56455       IF(NP.LE.1) THEN
56456         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
56457         PMH=-1D0
56458         PML=-1D0
56459         RETURN
56460       ENDIF
56461       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
56462      &PS(3,3)**2))
56463  
56464 C...Find largest eigenvalue to matrix (third degree equation).
56465       DO 190 J1=1,3
56466         DO 180 J2=J1,3
56467           SM(J1,J2)=SM(J1,J2)/PSS
56468   180   CONTINUE
56469   190 CONTINUE
56470       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
56471      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
56472       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
56473      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
56474      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
56475       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
56476       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
56477  
56478 C...Find largest eigenvector by solving equation system.
56479       DO 210 J1=1,3
56480         SM(J1,J1)=SM(J1,J1)-SMA
56481         DO 200 J2=J1+1,3
56482           SM(J2,J1)=SM(J1,J2)
56483   200   CONTINUE
56484   210 CONTINUE
56485       SMAX=0D0
56486       DO 230 J1=1,3
56487         DO 220 J2=1,3
56488           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
56489           JA=J1
56490           JB=J2
56491           SMAX=ABS(SM(J1,J2))
56492   220   CONTINUE
56493   230 CONTINUE
56494       SMAX=0D0
56495       DO 250 J3=JA+1,JA+2
56496         J1=J3-3*((J3-1)/3)
56497         RL=SM(J1,JB)/SM(JA,JB)
56498         DO 240 J2=1,3
56499           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
56500           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
56501           JC=J1
56502           SMAX=ABS(SM(J1,J2))
56503   240   CONTINUE
56504   250 CONTINUE
56505       JB1=JB+1-3*(JB/3)
56506       JB2=JB+2-3*((JB+1)/3)
56507       SAX(JB1)=-SM(JC,JB2)
56508       SAX(JB2)=SM(JC,JB1)
56509       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
56510  
56511 C...Divide particles into two initial clusters by hemisphere.
56512       DO 270 I=N+1,N+NP
56513         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
56514         IS=1
56515         IF(PSAX.LT.0D0) IS=2
56516         K(I,3)=IS
56517         DO 260 J=1,4
56518           PS(IS,J)=PS(IS,J)+P(I,J)
56519   260   CONTINUE
56520   270 CONTINUE
56521       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
56522      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
56523  
56524 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
56525   280 PMD=0D0
56526       IM=0
56527       DO 290 J=1,4
56528         PS(3,J)=PS(1,J)-PS(2,J)
56529   290 CONTINUE
56530       DO 300 I=N+1,N+NP
56531         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)
56532         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
56533         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
56534         IF(PMDI.LT.PMD) THEN
56535           PMD=PMDI
56536           IM=I
56537         ENDIF
56538   300 CONTINUE
56539  
56540 C...Loop back if significant reduction in sum of m^2.
56541       IF(PMD.LT.-PARU(48)*PMS) THEN
56542         PMS=PMS+PMD
56543         IS=K(IM,3)
56544         DO 310 J=1,4
56545           PS(IS,J)=PS(IS,J)-P(IM,J)
56546           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
56547   310   CONTINUE
56548         K(IM,3)=3-IS
56549         GOTO 280
56550       ENDIF
56551  
56552 C...Final masses and output.
56553       MSTU(61)=N+1
56554       MSTU(62)=NP
56555       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
56556       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
56557       PMH=MAX(PS(1,5),PS(2,5))
56558       PML=MIN(PS(1,5),PS(2,5))
56559  
56560       RETURN
56561       END
56562  
56563 C*********************************************************************
56564  
56565 C...PYFOWO
56566 C...Calculates the first few Fox-Wolfram moments.
56567  
56568       SUBROUTINE PYFOWO(H10,H20,H30,H40)
56569  
56570 C...Double precision and integer declarations.
56571       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56572       IMPLICIT INTEGER(I-N)
56573       INTEGER PYK,PYCHGE,PYCOMP
56574 C...Commonblocks.
56575       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56576       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56577       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56578       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56579  
56580 C...Copy momenta for particles and calculate H0.
56581       NP=0
56582       H0=0D0
56583       HD=0D0
56584       DO 110 I=1,N
56585         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
56586         IF(MSTU(41).GE.2) THEN
56587           KC=PYCOMP(K(I,2))
56588           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56589      &    KC.EQ.18) GOTO 110
56590           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56591      &    GOTO 110
56592         ENDIF
56593         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
56594           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
56595           H10=-1D0
56596           H20=-1D0
56597           H30=-1D0
56598           H40=-1D0
56599           RETURN
56600         ENDIF
56601         NP=NP+1
56602         DO 100 J=1,3
56603           P(N+NP,J)=P(I,J)
56604   100   CONTINUE
56605         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56606         H0=H0+P(N+NP,4)
56607         HD=HD+P(N+NP,4)**2
56608   110 CONTINUE
56609       H0=H0**2
56610  
56611 C...Very low multiplicities (0 or 1) not considered.
56612       IF(NP.LE.1) THEN
56613         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
56614         H10=-1D0
56615         H20=-1D0
56616         H30=-1D0
56617         H40=-1D0
56618         RETURN
56619       ENDIF
56620  
56621 C...Calculate H1 - H4.
56622       H10=0D0
56623       H20=0D0
56624       H30=0D0
56625       H40=0D0
56626       DO 130 I1=N+1,N+NP
56627         DO 120 I2=I1+1,N+NP
56628           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
56629      &    (P(I1,4)*P(I2,4))
56630           H10=H10+P(I1,4)*P(I2,4)*CTHE
56631           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
56632           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
56633           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
56634      &    0.375D0)
56635   120   CONTINUE
56636   130 CONTINUE
56637  
56638 C...Calculate H1/H0 - H4/H0. Output.
56639       MSTU(61)=N+1
56640       MSTU(62)=NP
56641       H10=(HD+2D0*H10)/H0
56642       H20=(HD+2D0*H20)/H0
56643       H30=(HD+2D0*H30)/H0
56644       H40=(HD+2D0*H40)/H0
56645  
56646       RETURN
56647       END
56648  
56649 C*********************************************************************
56650  
56651 C...PYTABU
56652 C...Evaluates various properties of an event, with statistics
56653 C...accumulated during the course of the run and
56654 C...printed at the end.
56655  
56656       SUBROUTINE PYTABU(MTABU)
56657  
56658 C...Double precision and integer declarations.
56659       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56660       IMPLICIT INTEGER(I-N)
56661       INTEGER PYK,PYCHGE,PYCOMP
56662 C...Commonblocks.
56663       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56664       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56665       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56666       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
56667       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
56668 C...Local arrays, character variables, saved variables and data.
56669       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
56670      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
56671      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
56672      &KFDM(8),KFDC(200,0:8),NPDC(200)
56673       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
56674      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
56675      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
56676       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
56677       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
56678      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
56679      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
56680      &NEVDC/0/,NKFDC/0/,NREDC/0/
56681  
56682 C...Reset statistics on initial parton state.
56683       IF(MTABU.EQ.10) THEN
56684         NEVIS=0
56685         NKFIS=0
56686  
56687 C...Identify and order flavour content of initial state.
56688       ELSEIF(MTABU.EQ.11) THEN
56689         NEVIS=NEVIS+1
56690         KFM1=2*IABS(MSTU(161))
56691         IF(MSTU(161).GT.0) KFM1=KFM1-1
56692         KFM2=2*IABS(MSTU(162))
56693         IF(MSTU(162).GT.0) KFM2=KFM2-1
56694         KFMN=MIN(KFM1,KFM2)
56695         KFMX=MAX(KFM1,KFM2)
56696         DO 100 I=1,NKFIS
56697           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
56698             IKFIS=-I
56699             GOTO 110
56700           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
56701      &      KFMX.LT.KFIS(I,2))) THEN
56702             IKFIS=I
56703             GOTO 110
56704           ENDIF
56705   100   CONTINUE
56706         IKFIS=NKFIS+1
56707   110   IF(IKFIS.LT.0) THEN
56708           IKFIS=-IKFIS
56709         ELSE
56710           IF(NKFIS.GE.100) RETURN
56711           DO 130 I=NKFIS,IKFIS,-1
56712             KFIS(I+1,1)=KFIS(I,1)
56713             KFIS(I+1,2)=KFIS(I,2)
56714             DO 120 J=0,10
56715               NPIS(I+1,J)=NPIS(I,J)
56716   120       CONTINUE
56717   130     CONTINUE
56718           NKFIS=NKFIS+1
56719           KFIS(IKFIS,1)=KFMN
56720           KFIS(IKFIS,2)=KFMX
56721           DO 140 J=0,10
56722             NPIS(IKFIS,J)=0
56723   140     CONTINUE
56724         ENDIF
56725         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
56726  
56727 C...Count number of partons in initial state.
56728         NP=0
56729         DO 160 I=1,N
56730           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
56731           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
56732           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
56733      &      THEN
56734           ELSE
56735             IM=I
56736   150       IM=K(IM,3)
56737             IF(IM.LE.0.OR.IM.GT.N) THEN
56738               NP=NP+1
56739             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
56740               NP=NP+1
56741             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
56742             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
56743      &        .NE.0) THEN
56744             ELSE
56745               GOTO 150
56746             ENDIF
56747           ENDIF
56748   160   CONTINUE
56749         NPCO=MAX(NP,1)
56750         IF(NP.GE.6) NPCO=6
56751         IF(NP.GE.8) NPCO=7
56752         IF(NP.GE.11) NPCO=8
56753         IF(NP.GE.16) NPCO=9
56754         IF(NP.GE.26) NPCO=10
56755         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
56756         MSTU(62)=NP
56757  
56758 C...Write statistics on initial parton state.
56759       ELSEIF(MTABU.EQ.12) THEN
56760         FAC=1D0/MAX(1,NEVIS)
56761         WRITE(MSTU(11),5000) NEVIS
56762         DO 170 I=1,NKFIS
56763           KFMN=KFIS(I,1)
56764           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
56765           KFM1=(KFMN+1)/2
56766           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
56767           CALL PYNAME(KFM1,CHAU)
56768           CHIS(1)=CHAU(1:12)
56769           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
56770           KFMX=KFIS(I,2)
56771           IF(KFIS(I,1).EQ.0) KFMX=0
56772           KFM2=(KFMX+1)/2
56773           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
56774           CALL PYNAME(KFM2,CHAU)
56775           CHIS(2)=CHAU(1:12)
56776           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
56777           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
56778      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
56779   170   CONTINUE
56780  
56781 C...Copy statistics on initial parton state into /PYJETS/.
56782       ELSEIF(MTABU.EQ.13) THEN
56783         FAC=1D0/MAX(1,NEVIS)
56784         DO 190 I=1,NKFIS
56785           KFMN=KFIS(I,1)
56786           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
56787           KFM1=(KFMN+1)/2
56788           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
56789           KFMX=KFIS(I,2)
56790           IF(KFIS(I,1).EQ.0) KFMX=0
56791           KFM2=(KFMX+1)/2
56792           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
56793           K(I,1)=32
56794           K(I,2)=99
56795           K(I,3)=KFM1
56796           K(I,4)=KFM2
56797           K(I,5)=NPIS(I,0)
56798           DO 180 J=1,5
56799             P(I,J)=FAC*NPIS(I,J)
56800             V(I,J)=FAC*NPIS(I,J+5)
56801   180     CONTINUE
56802   190   CONTINUE
56803         N=NKFIS
56804         DO 200 J=1,5
56805           K(N+1,J)=0
56806           P(N+1,J)=0D0
56807           V(N+1,J)=0D0
56808   200   CONTINUE
56809         K(N+1,1)=32
56810         K(N+1,2)=99
56811         K(N+1,5)=NEVIS
56812         MSTU(3)=1
56813  
56814 C...Reset statistics on number of particles/partons.
56815       ELSEIF(MTABU.EQ.20) THEN
56816         NEVFS=0
56817         NPRFS=0
56818         NFIFS=0
56819         NCHFS=0
56820         NKFFS=0
56821  
56822 C...Identify whether particle/parton is primary or not.
56823       ELSEIF(MTABU.EQ.21) THEN
56824         NEVFS=NEVFS+1
56825         MSTU(62)=0
56826         DO 260 I=1,N
56827           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
56828           MSTU(62)=MSTU(62)+1
56829           KC=PYCOMP(K(I,2))
56830           MPRI=0
56831           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
56832             MPRI=1
56833           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
56834             MPRI=1
56835           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
56836             MPRI=1
56837           ELSEIF(KC.EQ.0) THEN
56838           ELSEIF(K(K(I,3),1).EQ.13) THEN
56839             IM=K(K(I,3),3)
56840             IF(IM.LE.0.OR.IM.GT.N) THEN
56841               MPRI=1
56842             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
56843               MPRI=1
56844             ENDIF
56845           ELSEIF(KCHG(KC,2).EQ.0) THEN
56846             KCM=PYCOMP(K(K(I,3),2))
56847             IF(KCM.NE.0) THEN
56848               IF(KCHG(KCM,2).NE.0) MPRI=1
56849             ENDIF
56850           ENDIF
56851           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
56852             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
56853           ENDIF
56854           IF(K(I,1).LE.10) THEN
56855             NFIFS=NFIFS+1
56856             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
56857           ENDIF
56858  
56859 C...Fill statistics on number of particles/partons in event.
56860           KFA=IABS(K(I,2))
56861           KFS=3-ISIGN(1,K(I,2))-MPRI
56862           DO 210 IP=1,NKFFS
56863             IF(KFA.EQ.KFFS(IP)) THEN
56864               IKFFS=-IP
56865               GOTO 220
56866             ELSEIF(KFA.LT.KFFS(IP)) THEN
56867               IKFFS=IP
56868               GOTO 220
56869             ENDIF
56870   210     CONTINUE
56871           IKFFS=NKFFS+1
56872   220     IF(IKFFS.LT.0) THEN
56873             IKFFS=-IKFFS
56874           ELSE
56875             IF(NKFFS.GE.400) RETURN
56876             DO 240 IP=NKFFS,IKFFS,-1
56877               KFFS(IP+1)=KFFS(IP)
56878               DO 230 J=1,4
56879                 NPFS(IP+1,J)=NPFS(IP,J)
56880   230         CONTINUE
56881   240       CONTINUE
56882             NKFFS=NKFFS+1
56883             KFFS(IKFFS)=KFA
56884             DO 250 J=1,4
56885               NPFS(IKFFS,J)=0
56886   250       CONTINUE
56887           ENDIF
56888           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
56889   260   CONTINUE
56890  
56891 C...Write statistics on particle/parton composition of events.
56892       ELSEIF(MTABU.EQ.22) THEN
56893         FAC=1D0/MAX(1,NEVFS)
56894         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
56895         DO 270 I=1,NKFFS
56896           CALL PYNAME(KFFS(I),CHAU)
56897           KC=PYCOMP(KFFS(I))
56898           MDCYF=0
56899           IF(KC.NE.0) MDCYF=MDCY(KC,1)
56900           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
56901      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
56902   270   CONTINUE
56903  
56904 C...Copy particle/parton composition information into /PYJETS/.
56905       ELSEIF(MTABU.EQ.23) THEN
56906         FAC=1D0/MAX(1,NEVFS)
56907         DO 290 I=1,NKFFS
56908           K(I,1)=32
56909           K(I,2)=99
56910           K(I,3)=KFFS(I)
56911           K(I,4)=0
56912           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
56913           DO 280 J=1,4
56914             P(I,J)=FAC*NPFS(I,J)
56915             V(I,J)=0D0
56916   280     CONTINUE
56917           P(I,5)=FAC*K(I,5)
56918           V(I,5)=0D0
56919   290   CONTINUE
56920         N=NKFFS
56921         DO 300 J=1,5
56922           K(N+1,J)=0
56923           P(N+1,J)=0D0
56924           V(N+1,J)=0D0
56925   300   CONTINUE
56926         K(N+1,1)=32
56927         K(N+1,2)=99
56928         K(N+1,5)=NEVFS
56929         P(N+1,1)=FAC*NPRFS
56930         P(N+1,2)=FAC*NFIFS
56931         P(N+1,3)=FAC*NCHFS
56932         MSTU(3)=1
56933  
56934 C...Reset factorial moments statistics.
56935       ELSEIF(MTABU.EQ.30) THEN
56936         NEVFM=0
56937         NMUFM=0
56938         DO 330 IM=1,3
56939           DO 320 IB=1,10
56940             DO 310 IP=1,4
56941               FM1FM(IM,IB,IP)=0D0
56942               FM2FM(IM,IB,IP)=0D0
56943   310       CONTINUE
56944   320     CONTINUE
56945   330   CONTINUE
56946  
56947 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
56948       ELSEIF(MTABU.EQ.31) THEN
56949         NEVFM=NEVFM+1
56950         NLOW=N+MSTU(3)
56951         NUPP=NLOW
56952         DO 410 I=1,N
56953           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
56954           IF(MSTU(41).GE.2) THEN
56955             KC=PYCOMP(K(I,2))
56956             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56957      &      KC.EQ.18) GOTO 410
56958             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
56959      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
56960           ENDIF
56961           PMR=0D0
56962           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
56963           IF(MSTU(42).GE.2) PMR=P(I,5)
56964           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
56965           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
56966      &    1D20)),P(I,3))
56967           IF(ABS(YETA).GT.PARU(57)) GOTO 410
56968           PHI=PYANGL(P(I,1),P(I,2))
56969           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
56970           IYETA=MAX(0,MIN(511,IYETA))
56971           IPHI=512D0*(PHI+PARU(1))/PARU(2)
56972           IPHI=MAX(0,MIN(511,IPHI))
56973           IYEP=0
56974           DO 340 IB=0,9
56975             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
56976   340     CONTINUE
56977  
56978 C...Order particles in (pseudo)rapidity and/or azimuth.
56979           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
56980             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
56981             RETURN
56982           ENDIF
56983           NUPP=NUPP+1
56984           IF(NUPP.EQ.NLOW+1) THEN
56985             K(NUPP,1)=IYETA
56986             K(NUPP,2)=IPHI
56987             K(NUPP,3)=IYEP
56988           ELSE
56989             DO 350 I1=NUPP-1,NLOW+1,-1
56990               IF(IYETA.GE.K(I1,1)) GOTO 360
56991               K(I1+1,1)=K(I1,1)
56992   350       CONTINUE
56993   360       K(I1+1,1)=IYETA
56994             DO 370 I1=NUPP-1,NLOW+1,-1
56995               IF(IPHI.GE.K(I1,2)) GOTO 380
56996               K(I1+1,2)=K(I1,2)
56997   370       CONTINUE
56998   380       K(I1+1,2)=IPHI
56999             DO 390 I1=NUPP-1,NLOW+1,-1
57000               IF(IYEP.GE.K(I1,3)) GOTO 400
57001               K(I1+1,3)=K(I1,3)
57002   390       CONTINUE
57003   400       K(I1+1,3)=IYEP
57004           ENDIF
57005   410   CONTINUE
57006         K(NUPP+1,1)=2**10
57007         K(NUPP+1,2)=2**10
57008         K(NUPP+1,3)=4**10
57009  
57010 C...Calculate sum of factorial moments in event.
57011         DO 480 IM=1,3
57012           DO 430 IB=1,10
57013             DO 420 IP=1,4
57014               FEVFM(IB,IP)=0D0
57015   420       CONTINUE
57016   430     CONTINUE
57017           DO 450 IB=1,10
57018             IF(IM.LE.2) IBIN=2**(10-IB)
57019             IF(IM.EQ.3) IBIN=4**(10-IB)
57020             IAGR=K(NLOW+1,IM)/IBIN
57021             NAGR=1
57022             DO 440 I=NLOW+2,NUPP+1
57023               ICUT=K(I,IM)/IBIN
57024               IF(ICUT.EQ.IAGR) THEN
57025                 NAGR=NAGR+1
57026               ELSE
57027                 IF(NAGR.EQ.1) THEN
57028                 ELSEIF(NAGR.EQ.2) THEN
57029                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
57030                 ELSEIF(NAGR.EQ.3) THEN
57031                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
57032                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
57033                 ELSEIF(NAGR.EQ.4) THEN
57034                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
57035                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
57036                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
57037                 ELSE
57038                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
57039                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
57040                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
57041      &            (NAGR-3D0)
57042                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
57043      &            (NAGR-3D0)*(NAGR-4D0)
57044                 ENDIF
57045                 IAGR=ICUT
57046                 NAGR=1
57047               ENDIF
57048   440       CONTINUE
57049   450     CONTINUE
57050  
57051 C...Add results to total statistics.
57052           DO 470 IB=10,1,-1
57053             DO 460 IP=1,4
57054               IF(FEVFM(1,IP).LT.0.5D0) THEN
57055                 FEVFM(IB,IP)=0D0
57056               ELSEIF(IM.LE.2) THEN
57057                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
57058               ELSE
57059                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
57060               ENDIF
57061               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
57062               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
57063   460       CONTINUE
57064   470     CONTINUE
57065   480   CONTINUE
57066         NMUFM=NMUFM+(NUPP-NLOW)
57067         MSTU(62)=NUPP-NLOW
57068  
57069 C...Write accumulated statistics on factorial moments.
57070       ELSEIF(MTABU.EQ.32) THEN
57071         FAC=1D0/MAX(1,NEVFM)
57072         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
57073         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
57074         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
57075         DO 510 IM=1,3
57076           WRITE(MSTU(11),5500)
57077           DO 500 IB=1,10
57078             BYETA=2D0*PARU(57)
57079             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
57080             BPHI=PARU(2)
57081             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
57082             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
57083             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
57084             DO 490 IP=1,4
57085               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
57086               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
57087      &        FMOMA(IP)**2)))
57088   490       CONTINUE
57089             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
57090      &      IP=1,4)
57091   500     CONTINUE
57092   510   CONTINUE
57093  
57094 C...Copy statistics on factorial moments into /PYJETS/.
57095       ELSEIF(MTABU.EQ.33) THEN
57096         FAC=1D0/MAX(1,NEVFM)
57097         DO 540 IM=1,3
57098           DO 530 IB=1,10
57099             I=10*(IM-1)+IB
57100             K(I,1)=32
57101             K(I,2)=99
57102             K(I,3)=1
57103             IF(IM.NE.2) K(I,3)=2**(IB-1)
57104             K(I,4)=1
57105             IF(IM.NE.1) K(I,4)=2**(IB-1)
57106             K(I,5)=0
57107             P(I,1)=2D0*PARU(57)/K(I,3)
57108             V(I,1)=PARU(2)/K(I,4)
57109             DO 520 IP=1,4
57110               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
57111               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
57112      &        P(I,IP+1)**2)))
57113   520       CONTINUE
57114   530     CONTINUE
57115   540   CONTINUE
57116         N=30
57117         DO 550 J=1,5
57118           K(N+1,J)=0
57119           P(N+1,J)=0D0
57120           V(N+1,J)=0D0
57121   550   CONTINUE
57122         K(N+1,1)=32
57123         K(N+1,2)=99
57124         K(N+1,5)=NEVFM
57125         MSTU(3)=1
57126  
57127 C...Reset statistics on Energy-Energy Correlation.
57128       ELSEIF(MTABU.EQ.40) THEN
57129         NEVEE=0
57130         DO 560 J=1,25
57131           FE1EC(J)=0D0
57132           FE2EC(J)=0D0
57133           FE1EC(51-J)=0D0
57134           FE2EC(51-J)=0D0
57135           FE1EA(J)=0D0
57136           FE2EA(J)=0D0
57137   560   CONTINUE
57138  
57139 C...Find particles to include, with proper assumed mass.
57140       ELSEIF(MTABU.EQ.41) THEN
57141         NEVEE=NEVEE+1
57142         NLOW=N+MSTU(3)
57143         NUPP=NLOW
57144         ECM=0D0
57145         DO 570 I=1,N
57146           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
57147           IF(MSTU(41).GE.2) THEN
57148             KC=PYCOMP(K(I,2))
57149             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
57150      &      KC.EQ.18) GOTO 570
57151             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
57152      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
57153           ENDIF
57154           PMR=0D0
57155           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
57156           IF(MSTU(42).GE.2) PMR=P(I,5)
57157           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
57158             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
57159             RETURN
57160           ENDIF
57161           NUPP=NUPP+1
57162           P(NUPP,1)=P(I,1)
57163           P(NUPP,2)=P(I,2)
57164           P(NUPP,3)=P(I,3)
57165           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
57166           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
57167           ECM=ECM+P(NUPP,4)
57168   570   CONTINUE
57169         IF(NUPP.EQ.NLOW) RETURN
57170  
57171 C...Analyze Energy-Energy Correlation in event.
57172         FAC=(2D0/ECM**2)*50D0/PARU(1)
57173         DO 580 J=1,50
57174           FEVEE(J)=0D0
57175   580   CONTINUE
57176         DO 600 I1=NLOW+2,NUPP
57177           DO 590 I2=NLOW+1,I1-1
57178             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
57179      &      (P(I1,5)*P(I2,5))
57180             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
57181             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
57182             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
57183   590     CONTINUE
57184   600   CONTINUE
57185         DO 610 J=1,25
57186           FE1EC(J)=FE1EC(J)+FEVEE(J)
57187           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
57188           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
57189           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
57190           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
57191           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
57192   610   CONTINUE
57193         MSTU(62)=NUPP-NLOW
57194  
57195 C...Write statistics on Energy-Energy Correlation.
57196       ELSEIF(MTABU.EQ.42) THEN
57197         FAC=1D0/MAX(1,NEVEE)
57198         WRITE(MSTU(11),5700) NEVEE
57199         DO 620 J=1,25
57200           FEEC1=FAC*FE1EC(J)
57201           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
57202           FEEC2=FAC*FE1EC(51-J)
57203           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
57204           FEECA=FAC*FE1EA(J)
57205           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
57206           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
57207      &    FEEC2,FEES2,FEECA,FEESA
57208   620   CONTINUE
57209  
57210 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
57211       ELSEIF(MTABU.EQ.43) THEN
57212         FAC=1D0/MAX(1,NEVEE)
57213         DO 630 I=1,25
57214           K(I,1)=32
57215           K(I,2)=99
57216           K(I,3)=0
57217           K(I,4)=0
57218           K(I,5)=0
57219           P(I,1)=FAC*FE1EC(I)
57220           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
57221           P(I,2)=FAC*FE1EC(51-I)
57222           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
57223           P(I,3)=FAC*FE1EA(I)
57224           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
57225           P(I,4)=PARU(1)*(I-1)/50D0
57226           P(I,5)=PARU(1)*I/50D0
57227           V(I,4)=3.6D0*(I-1)
57228           V(I,5)=3.6D0*I
57229   630   CONTINUE
57230         N=25
57231         DO 640 J=1,5
57232           K(N+1,J)=0
57233           P(N+1,J)=0D0
57234           V(N+1,J)=0D0
57235   640   CONTINUE
57236         K(N+1,1)=32
57237         K(N+1,2)=99
57238         K(N+1,5)=NEVEE
57239         MSTU(3)=1
57240  
57241 C...Reset statistics on decay channels.
57242       ELSEIF(MTABU.EQ.50) THEN
57243         NEVDC=0
57244         NKFDC=0
57245         NREDC=0
57246  
57247 C...Identify and order flavour content of final state.
57248       ELSEIF(MTABU.EQ.51) THEN
57249         NEVDC=NEVDC+1
57250         NDS=0
57251         DO 670 I=1,N
57252           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
57253           NDS=NDS+1
57254           IF(NDS.GT.8) THEN
57255             NREDC=NREDC+1
57256             RETURN
57257           ENDIF
57258           KFM=2*IABS(K(I,2))
57259           IF(K(I,2).LT.0) KFM=KFM-1
57260           DO 650 IDS=NDS-1,1,-1
57261             IIN=IDS+1
57262             IF(KFM.LT.KFDM(IDS)) GOTO 660
57263             KFDM(IDS+1)=KFDM(IDS)
57264   650     CONTINUE
57265           IIN=1
57266   660     KFDM(IIN)=KFM
57267   670   CONTINUE
57268  
57269 C...Find whether old or new final state.
57270         DO 690 IDC=1,NKFDC
57271           IF(NDS.LT.KFDC(IDC,0)) THEN
57272             IKFDC=IDC
57273             GOTO 700
57274           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
57275             DO 680 I=1,NDS
57276               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
57277                 IKFDC=IDC
57278                 GOTO 700
57279               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
57280                 GOTO 690
57281               ENDIF
57282   680       CONTINUE
57283             IKFDC=-IDC
57284             GOTO 700
57285           ENDIF
57286   690   CONTINUE
57287         IKFDC=NKFDC+1
57288   700   IF(IKFDC.LT.0) THEN
57289           IKFDC=-IKFDC
57290         ELSEIF(NKFDC.GE.200) THEN
57291           NREDC=NREDC+1
57292           RETURN
57293         ELSE
57294           DO 720 IDC=NKFDC,IKFDC,-1
57295             NPDC(IDC+1)=NPDC(IDC)
57296             DO 710 I=0,8
57297               KFDC(IDC+1,I)=KFDC(IDC,I)
57298   710       CONTINUE
57299   720     CONTINUE
57300           NKFDC=NKFDC+1
57301           KFDC(IKFDC,0)=NDS
57302           DO 730 I=1,NDS
57303             KFDC(IKFDC,I)=KFDM(I)
57304   730     CONTINUE
57305           NPDC(IKFDC)=0
57306         ENDIF
57307         NPDC(IKFDC)=NPDC(IKFDC)+1
57308  
57309 C...Write statistics on decay channels.
57310       ELSEIF(MTABU.EQ.52) THEN
57311         FAC=1D0/MAX(1,NEVDC)
57312         WRITE(MSTU(11),5900) NEVDC
57313         DO 750 IDC=1,NKFDC
57314           DO 740 I=1,KFDC(IDC,0)
57315             KFM=KFDC(IDC,I)
57316             KF=(KFM+1)/2
57317             IF(2*KF.NE.KFM) KF=-KF
57318             CALL PYNAME(KF,CHAU)
57319             CHDC(I)=CHAU(1:12)
57320             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
57321   740     CONTINUE
57322           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
57323   750   CONTINUE
57324         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
57325  
57326 C...Copy statistics on decay channels into /PYJETS/.
57327       ELSEIF(MTABU.EQ.53) THEN
57328         FAC=1D0/MAX(1,NEVDC)
57329         DO 780 IDC=1,NKFDC
57330           K(IDC,1)=32
57331           K(IDC,2)=99
57332           K(IDC,3)=0
57333           K(IDC,4)=0
57334           K(IDC,5)=KFDC(IDC,0)
57335           DO 760 J=1,5
57336             P(IDC,J)=0D0
57337             V(IDC,J)=0D0
57338   760     CONTINUE
57339           DO 770 I=1,KFDC(IDC,0)
57340             KFM=KFDC(IDC,I)
57341             KF=(KFM+1)/2
57342             IF(2*KF.NE.KFM) KF=-KF
57343             IF(I.LE.5) P(IDC,I)=KF
57344             IF(I.GE.6) V(IDC,I-5)=KF
57345   770     CONTINUE
57346           V(IDC,5)=FAC*NPDC(IDC)
57347   780   CONTINUE
57348         N=NKFDC
57349         DO 790 J=1,5
57350           K(N+1,J)=0
57351           P(N+1,J)=0D0
57352           V(N+1,J)=0D0
57353   790   CONTINUE
57354         K(N+1,1)=32
57355         K(N+1,2)=99
57356         K(N+1,5)=NEVDC
57357         V(N+1,5)=FAC*NREDC
57358         MSTU(3)=1
57359       ENDIF
57360  
57361 C...Format statements for output on unit MSTU(11) (default 6).
57362  5000 FORMAT(///20X,'Event statistics - initial state'/
57363      &20X,'based on an analysis of ',I6,' events'//
57364      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
57365      &'according to fragmenting system multiplicity'/
57366      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
57367      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
57368  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
57369  5200 FORMAT(///20X,'Event statistics - final state'/
57370      &20X,'based on an analysis of ',I7,' events'//
57371      &5X,'Mean primary multiplicity =',F10.4/
57372      &5X,'Mean final   multiplicity =',F10.4/
57373      &5X,'Mean charged multiplicity =',F10.4//
57374      &5X,'Number of particles produced per event (directly and via ',
57375      &'decays/branchings)'/
57376      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
57377      &8X,'Total'/35X,'prim        seco        prim        seco'/)
57378  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
57379  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
57380      &20X,'based on an analysis of ',I6,' events'//
57381      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
57382      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
57383  5500 FORMAT(10X)
57384  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
57385  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
57386      &20X,'based on an analysis of ',I6,' events'//
57387      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
57388      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
57389  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
57390  5900 FORMAT(///20X,'Decay channel analysis - final state'/
57391      &20X,'based on an analysis of ',I6,' events'//
57392      &2X,'Probability',10X,'Complete final state'/)
57393  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
57394  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
57395      &'or table overflow)')
57396  
57397       RETURN
57398       END
57399  
57400 C*********************************************************************
57401  
57402 C...PYEEVT
57403 C...Handles the generation of an e+e- annihilation jet event.
57404  
57405       SUBROUTINE PYEEVT(KFL,ECM)
57406  
57407 C...Double precision and integer declarations.
57408       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57409       IMPLICIT INTEGER(I-N)
57410       INTEGER PYK,PYCHGE,PYCOMP
57411 C...Commonblocks.
57412       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57413       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57414       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57415       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
57416  
57417 C...Check input parameters.
57418       IF(MSTU(12).GE.1) CALL PYLIST(0)
57419       IF(KFL.LT.0.OR.KFL.GT.8) THEN
57420         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
57421         IF(MSTU(21).GE.1) RETURN
57422       ENDIF
57423       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
57424       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
57425       IF(ECM.LT.ECMMIN) THEN
57426         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
57427         IF(MSTU(21).GE.1) RETURN
57428       ENDIF
57429  
57430 C...Check consistency of MSTJ options set.
57431       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
57432         CALL PYERRM(6,
57433      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
57434         MSTJ(110)=1
57435       ENDIF
57436       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
57437         CALL PYERRM(6,
57438      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
57439         MSTJ(111)=0
57440       ENDIF
57441  
57442 C...Initialize alpha_strong and total cross-section.
57443       MSTU(111)=MSTJ(108)
57444       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
57445      &MSTU(111)=1
57446       PARU(112)=PARJ(121)
57447       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
57448       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
57449      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
57450      &XTOT)
57451       IF(MSTJ(116).GE.3) MSTJ(116)=1
57452       PARJ(171)=0D0
57453  
57454 C...Add initial e+e- to event record (documentation only).
57455       NTRY=0
57456   100 NTRY=NTRY+1
57457       IF(NTRY.GT.100) THEN
57458         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
57459         RETURN
57460       ENDIF
57461       MSTU(24)=0
57462       NC=0
57463       IF(MSTJ(115).GE.2) THEN
57464         NC=NC+2
57465         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
57466         K(NC-1,1)=21
57467         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
57468         K(NC,1)=21
57469       ENDIF
57470  
57471 C...Radiative photon (in initial state).
57472       MK=0
57473       ECMC=ECM
57474       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
57475      &THEK,PHIK,ALPK)
57476       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
57477       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
57478         NC=NC+1
57479         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
57480         K(NC,3)=MIN(MSTJ(115)/2,1)
57481       ENDIF
57482  
57483 C...Virtual exchange boson (gamma or Z0).
57484       IF(MSTJ(115).GE.3) THEN
57485         NC=NC+1
57486         KF=22
57487         IF(MSTJ(102).EQ.2) KF=23
57488         MSTU10=MSTU(10)
57489         MSTU(10)=1
57490         P(NC,5)=ECMC
57491         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
57492         K(NC,1)=21
57493         K(NC,3)=1
57494         MSTU(10)=MSTU10
57495       ENDIF
57496  
57497 C...Choice of flavour and jet configuration.
57498       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
57499       IF(KFLC.EQ.0) GOTO 100
57500       CALL PYXJET(ECMC,NJET,CUT)
57501       KFLN=21
57502       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
57503      &X12,X14)
57504       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
57505       IF(NJET.EQ.2) MSTJ(120)=1
57506  
57507 C...Fill jet configuration and origin.
57508       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
57509       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
57510      &ECMC)
57511       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
57512       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
57513      &-KFLC,ECMC,X1,X2,X4,X12,X14)
57514       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
57515      &-KFLC,ECMC,X1,X2,X4,X12,X14)
57516       IF(MSTU(24).NE.0) GOTO 100
57517       DO 110 IP=NC+1,N
57518         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
57519   110 CONTINUE
57520  
57521 C...Angular orientation according to matrix element.
57522       IF(MSTJ(106).EQ.1) THEN
57523         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
57524         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
57525         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
57526       ENDIF
57527  
57528 C...Rotation and boost from radiative photon.
57529       IF(MK.EQ.1) THEN
57530         DBEK=-PAK/(ECM-PAK)
57531         NMIN=NC+1-MSTJ(115)/3
57532         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
57533         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
57534         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
57535       ENDIF
57536  
57537 C...Generate parton shower. Rearrange along strings and check.
57538       IF(MSTJ(101).EQ.5) THEN
57539         CALL PYSHOW(N-1,N,ECMC)
57540         MSTJ14=MSTJ(14)
57541         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
57542         IF(MSTJ(105).GE.0) MSTU(28)=0
57543         CALL PYPREP(0)
57544         MSTJ(14)=MSTJ14
57545         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
57546       ENDIF
57547  
57548 C...Fragmentation/decay generation. Information for PYTABU.
57549       IF(MSTJ(105).EQ.1) CALL PYEXEC
57550       MSTU(161)=KFLC
57551       MSTU(162)=-KFLC
57552  
57553       RETURN
57554       END
57555  
57556 C*********************************************************************
57557  
57558 C...PYXTEE
57559 C...Calculates total cross-section, including initial state
57560 C...radiation effects.
57561  
57562       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
57563  
57564 C...Double precision and integer declarations.
57565       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57566       IMPLICIT INTEGER(I-N)
57567       INTEGER PYK,PYCHGE,PYCOMP
57568 C...Commonblocks.
57569       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57570       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57571       SAVE /PYDAT1/,/PYDAT2/
57572  
57573 C...Status, (optimized) Q^2 scale, alpha_strong.
57574       PARJ(151)=ECM
57575       MSTJ(119)=10*MSTJ(102)+KFL
57576       IF(MSTJ(111).EQ.0) THEN
57577         Q2R=ECM**2
57578       ELSEIF(MSTU(111).EQ.0) THEN
57579         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
57580      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
57581         Q2R=PARJ(168)*ECM**2
57582       ELSE
57583         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
57584      &  (2D0*PARU(112)/ECM)**2))
57585         Q2R=PARJ(168)*ECM**2
57586       ENDIF
57587       ALSPI=PYALPS(Q2R)/PARU(1)
57588  
57589 C...QCD corrections factor in R.
57590       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
57591         RQCD=1D0
57592       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
57593         RQCD=1D0+ALSPI
57594       ELSEIF(MSTJ(109).EQ.0) THEN
57595         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
57596         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
57597      &  LOG(PARJ(168))*ALSPI**2)
57598       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
57599         RQCD=1D0+(3D0/4D0)*ALSPI
57600       ELSE
57601         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
57602       ENDIF
57603  
57604 C...Calculate Z0 width if default value not acceptable.
57605       IF(MSTJ(102).GE.3) THEN
57606         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
57607      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
57608         DO 100 KFLC=5,6
57609           VQ=1D0
57610           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
57611      &    (2D0*PYMASS(KFLC)/ ECM)**2))
57612           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
57613           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
57614           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
57615   100   CONTINUE
57616         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
57617      &  (1D0-PARU(102)))
57618       ENDIF
57619  
57620 C...Calculate propagator and related constants for QFD case.
57621       POLL=1D0-PARJ(131)*PARJ(132)
57622       IF(MSTJ(102).GE.2) THEN
57623         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
57624         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
57625         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
57626         VE=4D0*PARU(102)-1D0
57627         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
57628         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
57629         HF1I=SFI*SF1I
57630         HF1W=SFW*SF1W
57631       ENDIF
57632  
57633 C...Loop over different flavours: charge, velocity.
57634       RTOT=0D0
57635       RQQ=0D0
57636       RQV=0D0
57637       RVA=0D0
57638       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
57639         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
57640         MSTJ(93)=1
57641         PMQ=PYMASS(KFLC)
57642         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
57643         QF=KCHG(KFLC,1)/3D0
57644         VQ=1D0
57645         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
57646  
57647 C...Calculate R and sum of charges for QED or QFD case.
57648         RQQ=RQQ+3D0*QF**2*POLL
57649         IF(MSTJ(102).LE.1) THEN
57650           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
57651         ELSE
57652           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
57653           RQV=RQV-6D0*QF*VF*SF1I
57654           RVA=RVA+3D0*(VF**2+1D0)*SF1W
57655           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
57656      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
57657         ENDIF
57658   110 CONTINUE
57659       RSUM=RQQ
57660       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
57661  
57662 C...Calculate cross-section, including QCD corrections.
57663       PARJ(141)=RQQ
57664       PARJ(142)=RTOT
57665       PARJ(143)=RTOT*RQCD
57666       PARJ(144)=PARJ(143)
57667       PARJ(145)=PARJ(141)*86.8D0/ECM**2
57668       PARJ(146)=PARJ(142)*86.8D0/ECM**2
57669       PARJ(147)=PARJ(143)*86.8D0/ECM**2
57670       PARJ(148)=PARJ(147)
57671       PARJ(157)=RSUM*RQCD
57672       PARJ(158)=0D0
57673       PARJ(159)=0D0
57674       XTOT=PARJ(147)
57675       IF(MSTJ(107).LE.0) RETURN
57676  
57677 C...Virtual cross-section.
57678       XKL=PARJ(135)
57679       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
57680       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
57681       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
57682      &1.526D0*LOG(ECM**2/0.932D0)
57683  
57684 C...Soft and hard radiative cross-section in QED case.
57685       IF(MSTJ(102).LE.1) THEN
57686         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
57687         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
57688         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
57689  
57690 C...Soft and hard radiative cross-section in QFD case.
57691       ELSE
57692         SZM=1D0-(PARJ(123)/ECM)**2
57693         SZW=PARJ(123)*PARJ(124)/ECM**2
57694         PARJ(161)=-RQQ/RSUM
57695         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
57696         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
57697         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
57698      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
57699         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
57700      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
57701         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
57702      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
57703      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
57704         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
57705      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
57706      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
57707      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
57708       ENDIF
57709  
57710 C...Total cross-section and fraction of hard photon events.
57711       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
57712       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
57713       PARJ(144)=PARJ(157)
57714       PARJ(148)=PARJ(144)*86.8D0/ECM**2
57715       XTOT=PARJ(148)
57716  
57717       RETURN
57718       END
57719  
57720 C*********************************************************************
57721  
57722 C...PYRADK
57723 C...Generates initial state photon radiation.
57724  
57725       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
57726  
57727 C...Double precision and integer declarations.
57728       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57729       IMPLICIT INTEGER(I-N)
57730       INTEGER PYK,PYCHGE,PYCOMP
57731 C...Commonblocks.
57732       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57733       SAVE /PYDAT1/
57734  
57735 C...Function: cumulative hard photon spectrum in QFD case.
57736       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
57737      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
57738  
57739 C...Determine whether radiative photon or not.
57740       MK=0
57741       PAK=0D0
57742       IF(PARJ(160).LT.PYR(0)) RETURN
57743       MK=1
57744  
57745 C...Photon energy range. Find photon momentum in QED case.
57746       XKL=PARJ(135)
57747       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
57748       IF(MSTJ(102).LE.1) THEN
57749   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
57750         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
57751  
57752 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
57753       ELSE
57754         SZM=1D0-(PARJ(123)/ECM)**2
57755         SZW=PARJ(123)*PARJ(124)/ECM**2
57756         FXKL=FXK(XKL)
57757         FXKU=FXK(XKU)
57758         FXKD=1D-4*(FXKU-FXKL)
57759         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
57760         NXK=0
57761   110   NXK=NXK+1
57762         XK=0.5D0*(XKL+XKU)
57763         FXKV=FXK(XK)
57764         IF(FXKV.GT.FXKR) THEN
57765           XKU=XK
57766           FXKU=FXKV
57767         ELSE
57768           XKL=XK
57769           FXKL=FXKV
57770         ENDIF
57771         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
57772         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
57773       ENDIF
57774       PAK=0.5D0*ECM*XK
57775  
57776 C...Photon polar and azimuthal angle.
57777       PME=2D0*(PYMASS(11)/ECM)**2
57778   120 CTHM=PME*(2D0/PME)**PYR(0)
57779       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
57780      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
57781       CTHE=1D0-CTHM
57782       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
57783       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
57784       THEK=PYANGL(CTHE,STHE)
57785       PHIK=PARU(2)*PYR(0)
57786  
57787 C...Rotation angle for hadronic system.
57788       SGN=1D0
57789       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
57790      &PYR(0)) SGN=-1D0
57791       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
57792      &(2D0-XK*(1D0-SGN*CTHE)))
57793  
57794       RETURN
57795       END
57796  
57797 C*********************************************************************
57798  
57799 C...PYXKFL
57800 C...Selects flavour for produced qqbar pair.
57801  
57802       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
57803  
57804 C...Double precision and integer declarations.
57805       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57806       IMPLICIT INTEGER(I-N)
57807       INTEGER PYK,PYCHGE,PYCOMP
57808 C...Commonblocks.
57809       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57810       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57811       SAVE /PYDAT1/,/PYDAT2/
57812  
57813 C...Calculate maximum weight in QED or QFD case.
57814       IF(MSTJ(102).LE.1) THEN
57815         RFMAX=4D0/9D0
57816       ELSE
57817         POLL=1D0-PARJ(131)*PARJ(132)
57818         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
57819         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
57820         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
57821         VE=4D0*PARU(102)-1D0
57822         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
57823         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
57824         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
57825      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
57826      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
57827      &  1D0)*HF1W)
57828       ENDIF
57829  
57830 C...Choose flavour. Gives charge and velocity.
57831       NTRY=0
57832   100 NTRY=NTRY+1
57833       IF(NTRY.GT.100) THEN
57834         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
57835         KFLC=0
57836         RETURN
57837       ENDIF
57838       KFLC=KFL
57839       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
57840       MSTJ(93)=1
57841       PMQ=PYMASS(KFLC)
57842       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
57843       QF=KCHG(KFLC,1)/3D0
57844       VQ=1D0
57845       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
57846  
57847 C...Calculate weight in QED or QFD case.
57848       IF(MSTJ(102).LE.1) THEN
57849         RF=QF**2
57850         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
57851       ELSE
57852         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
57853         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
57854         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
57855      &  VQ**3*HF1W
57856         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
57857       ENDIF
57858  
57859 C...Weighting or new event (radiative photon). Cross-section update.
57860       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
57861       PARJ(158)=PARJ(158)+1D0
57862       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
57863       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
57864       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
57865       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
57866       PARJ(148)=PARJ(144)*86.8D0/ECM**2
57867  
57868       RETURN
57869       END
57870  
57871 C*********************************************************************
57872  
57873 C...PYXJET
57874 C...Selects number of jets in matrix element approach.
57875  
57876       SUBROUTINE PYXJET(ECM,NJET,CUT)
57877  
57878 C...Double precision and integer declarations.
57879       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57880       IMPLICIT INTEGER(I-N)
57881       INTEGER PYK,PYCHGE,PYCOMP
57882 C...Commonblocks.
57883       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57884       SAVE /PYDAT1/
57885 C...Local array and data.
57886       DIMENSION ZHUT(5)
57887       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
57888  
57889 C...Trivial result for two-jets only, including parton shower.
57890       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
57891         CUT=0D0
57892  
57893 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
57894       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
57895         CF=4D0/3D0
57896         IF(MSTJ(109).EQ.2) CF=1D0
57897         IF(MSTJ(111).EQ.0) THEN
57898           Q2=ECM**2
57899           Q2R=ECM**2
57900         ELSEIF(MSTU(111).EQ.0) THEN
57901           PARJ(169)=MIN(1D0,PARJ(129))
57902           Q2=PARJ(169)*ECM**2
57903           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
57904      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
57905           Q2R=PARJ(168)*ECM**2
57906         ELSE
57907           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
57908           Q2=PARJ(169)*ECM**2
57909           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
57910      &    (2D0*PARU(112)/ECM)**2))
57911           Q2R=PARJ(168)*ECM**2
57912         ENDIF
57913  
57914 C...alpha_strong for R and R itself.
57915         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
57916         IF(IABS(MSTJ(101)).EQ.1) THEN
57917           RQCD=1D0+ALSPI
57918         ELSEIF(MSTJ(109).EQ.0) THEN
57919           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
57920           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
57921      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
57922         ELSE
57923           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
57924         ENDIF
57925  
57926 C...alpha_strong for jet rate. Initial value for y cut.
57927         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
57928         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
57929         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
57930      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
57931         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
57932  
57933 C...Parametrization of first order three-jet cross-section.
57934   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
57935           PARJ(152)=0D0
57936         ELSE
57937           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
57938      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
57939      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
57940      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
57941           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
57942      &    PARJ(152)=0D0
57943         ENDIF
57944  
57945 C...Parametrization of second order three-jet cross-section.
57946         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
57947      &  CUT.GE.0.25D0) THEN
57948           PARJ(153)=0D0
57949         ELSEIF(MSTJ(110).LE.1) THEN
57950           CT=LOG(1D0/CUT-2D0)
57951           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
57952      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
57953  
57954 C...Interpolation in second/first order ratio for Zhu parametrization.
57955         ELSEIF(MSTJ(110).EQ.2) THEN
57956           IZA=0
57957           DO 110 IY=1,5
57958             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
57959   110     CONTINUE
57960           IF(IZA.NE.0) THEN
57961             ZHURAT=ZHUT(IZA)
57962           ELSE
57963             IZ=100D0*CUT
57964             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
57965           ENDIF
57966           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
57967         ENDIF
57968  
57969 C...Shift in second order three-jet cross-section with optimized Q^2.
57970         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
57971      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
57972      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
57973  
57974 C...Parametrization of second order four-jet cross-section.
57975         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
57976           PARJ(154)=0D0
57977         ELSE
57978           CT=LOG(1D0/CUT-5D0)
57979           IF(CUT.LE.0.018D0) THEN
57980             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
57981             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
57982      &      0.4059D0*CT**2)
57983             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
57984             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
57985           ELSE
57986             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
57987             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
57988      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
57989             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
57990      &      0.002093D0*CT**3)
57991             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
57992           ENDIF
57993           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
57994           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
57995         ENDIF
57996  
57997 C...If negative three-jet rate, change y' optimization parameter.
57998         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
57999      &  PARJ(169).LT.0.99D0) THEN
58000           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
58001           Q2=PARJ(169)*ECM**2
58002           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
58003           GOTO 100
58004         ENDIF
58005  
58006 C...If too high cross-section, use harder cuts, or fail.
58007         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
58008           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
58009      &    PARJ(169).LT.0.99D0) THEN
58010             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
58011             Q2=PARJ(169)*ECM**2
58012             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
58013             GOTO 100
58014           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
58015             CALL PYERRM(26,
58016      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
58017           ENDIF
58018           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
58019      &    PARJ(154))**(-1D0/3D0)
58020           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
58021           GOTO 100
58022         ENDIF
58023  
58024 C...Scalar gluon (first order only).
58025       ELSE
58026         ALSPI=PYALPS(ECM**2)/PARU(1)
58027         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
58028         PARJ(152)=0D0
58029         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
58030      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
58031         PARJ(153)=0D0
58032         PARJ(154)=0D0
58033       ENDIF
58034  
58035 C...Select number of jets.
58036       PARJ(150)=CUT
58037       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
58038         NJET=2
58039       ELSEIF(MSTJ(101).LE.0) THEN
58040         NJET=MIN(4,2-MSTJ(101))
58041       ELSE
58042         RNJ=PYR(0)
58043         NJET=2
58044         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
58045         IF(PARJ(154).GT.RNJ) NJET=4
58046       ENDIF
58047  
58048       RETURN
58049       END
58050  
58051 C*********************************************************************
58052  
58053 C...PYX3JT
58054 C...Selects the kinematical variables of three-jet events.
58055  
58056       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
58057  
58058 C...Double precision and integer declarations.
58059       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58060       IMPLICIT INTEGER(I-N)
58061       INTEGER PYK,PYCHGE,PYCOMP
58062 C...Commonblocks.
58063       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58064       SAVE /PYDAT1/
58065 C...Local array.
58066       DIMENSION ZHUP(5,12)
58067  
58068 C...Coefficients of Zhu second order parametrization.
58069       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
58070      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
58071      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
58072      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
58073      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
58074      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
58075      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
58076      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
58077      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
58078      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
58079      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
58080  
58081 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
58082       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
58083      &X**7/49D0
58084  
58085 C...Event type. Mass effect factors and other common constants.
58086       MSTJ(120)=2
58087       MSTJ(121)=0
58088       PMQ=PYMASS(KFL)
58089       QME=(2D0*PMQ/ECM)**2
58090       IF(MSTJ(109).NE.1) THEN
58091         CUTL=LOG(CUT)
58092         CUTD=LOG(1D0/CUT-2D0)
58093         IF(MSTJ(109).EQ.0) THEN
58094           CF=4D0/3D0
58095           CN=3D0
58096           TR=2D0
58097           WTMX=MIN(20D0,37D0-6D0*CUTD)
58098           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
58099         ELSE
58100           CF=1D0
58101           CN=0D0
58102           TR=12D0
58103           WTMX=0D0
58104         ENDIF
58105  
58106 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
58107         ALS2PI=PARU(118)/PARU(2)
58108         WTOPT=0D0
58109         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
58110      &  LOG(PARJ(169))*ALS2PI
58111         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
58112  
58113 C...Choose three-jet events in allowed region.
58114   100   NJET=3
58115   110   Y13L=CUTL+CUTD*PYR(0)
58116         Y23L=CUTL+CUTD*PYR(0)
58117         Y13=EXP(Y13L)
58118         Y23=EXP(Y23L)
58119         Y12=1D0-Y13-Y23
58120         IF(Y12.LE.CUT) GOTO 110
58121         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
58122  
58123 C...Second order corrections.
58124         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
58125           Y12L=LOG(Y12)
58126           Y13M=LOG(1D0-Y13)
58127           Y23M=LOG(1D0-Y23)
58128           Y12M=LOG(1D0-Y12)
58129           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
58130           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
58131           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
58132           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
58133           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
58134           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
58135           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
58136           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
58137      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
58138      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
58139      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
58140      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
58141      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
58142      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
58143      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
58144      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
58145      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
58146      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
58147      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
58148      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
58149      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
58150      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
58151      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
58152      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
58153           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
58154           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
58155           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
58156  
58157         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
58158 C...Second order corrections; Zhu parametrization of ERT.
58159           ZX=(Y23-Y13)**2
58160           ZY=1D0-Y12
58161           IZA=0
58162           DO 120 IY=1,5
58163             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
58164   120     CONTINUE
58165           IF(IZA.NE.0) THEN
58166             IZ=IZA
58167             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
58168      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
58169      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
58170      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
58171           ELSE
58172             IZ=100D0*CUT
58173             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
58174      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
58175      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
58176      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
58177             IZ=IZ+1
58178             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
58179      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
58180      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
58181      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
58182             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
58183           ENDIF
58184           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
58185           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
58186           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
58187         ENDIF
58188  
58189 C...Impose mass cuts (gives two jets). For fixed jet number new try.
58190         X1=1D0-Y23
58191         X2=1D0-Y13
58192         X3=1D0-Y12
58193         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
58194         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
58195      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
58196      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
58197         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
58198  
58199 C...Scalar gluon model (first order only, no mass effects).
58200       ELSE
58201   130   NJET=3
58202   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
58203         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
58204         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
58205         X1=1D0-0.5D0*(X3+YD)
58206         X2=1D0-0.5D0*(X3-YD)
58207         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
58208         IF(MSTJ(102).GE.2) THEN
58209           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
58210      &    X3**2*PYR(0)) NJET=2
58211         ENDIF
58212         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
58213       ENDIF
58214  
58215       RETURN
58216       END
58217  
58218 C*********************************************************************
58219  
58220 C...PYX4JT
58221 C...Selects the kinematical variables of four-jet events.
58222  
58223       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
58224  
58225 C...Double precision and integer declarations.
58226       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58227       IMPLICIT INTEGER(I-N)
58228       INTEGER PYK,PYCHGE,PYCOMP
58229 C...Commonblocks.
58230       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58231       SAVE /PYDAT1/
58232 C...Local arrays.
58233       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
58234  
58235 C...Common constants. Colour factors for QCD and Abelian gluon theory.
58236       PMQ=PYMASS(KFL)
58237       QME=(2D0*PMQ/ECM)**2
58238       CT=LOG(1D0/CUT-5D0)
58239       IF(MSTJ(109).EQ.0) THEN
58240         CF=4D0/3D0
58241         CN=3D0
58242         TR=2.5D0
58243       ELSE
58244         CF=1D0
58245         CN=0D0
58246         TR=15D0
58247       ENDIF
58248  
58249 C...Choice of process (qqbargg or qqbarqqbar).
58250   100 NJET=4
58251       IT=1
58252       IF(PARJ(155).GT.PYR(0)) IT=2
58253       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
58254       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
58255       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
58256       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
58257       ID=1
58258  
58259 C...Sample the five kinematical variables (for qqgg preweighted in y34).
58260   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
58261       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
58262       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
58263       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
58264       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
58265       VT=PYR(0)
58266       CP=COS(PARU(1)*PYR(0))
58267       Y14=(Y134-Y34)*VT
58268       Y13=Y134-Y14-Y34
58269       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
58270       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
58271      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
58272       Y23=Y234-Y34-Y24
58273       Y12=1D0-Y134-Y23-Y24
58274       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
58275       Y123=Y12+Y13+Y23
58276       Y124=Y12+Y14+Y24
58277  
58278 C...Calculate matrix elements for qqgg or qqqq process.
58279       IC=0
58280       WTTOT=0D0
58281   120 IC=IC+1
58282       IF(IT.EQ.1) THEN
58283         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
58284      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
58285      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
58286      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
58287      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
58288      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
58289      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
58290      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
58291         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
58292      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
58293      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
58294      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
58295         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
58296      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
58297      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
58298      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
58299      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
58300      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
58301      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
58302      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
58303      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
58304      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
58305      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
58306      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
58307         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
58308      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
58309      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
58310      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
58311      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
58312      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
58313      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
58314      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
58315      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
58316      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
58317      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
58318      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
58319      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
58320      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
58321      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
58322      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
58323         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
58324      &  CN*WTC(IC))/8D0
58325       ELSE
58326         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
58327      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
58328      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
58329      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
58330      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
58331      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
58332      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
58333      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
58334      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
58335         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
58336      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
58337      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
58338      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
58339      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
58340      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
58341      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
58342      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
58343         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
58344       ENDIF
58345  
58346 C...Permutations of momenta in matrix element. Weighting.
58347   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
58348         YSAV=Y13
58349         Y13=Y14
58350         Y14=YSAV
58351         YSAV=Y23
58352         Y23=Y24
58353         Y24=YSAV
58354         YSAV=Y123
58355         Y123=Y124
58356         Y124=YSAV
58357       ENDIF
58358       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
58359         YSAV=Y13
58360         Y13=Y23
58361         Y23=YSAV
58362         YSAV=Y14
58363         Y14=Y24
58364         Y24=YSAV
58365         YSAV=Y134
58366         Y134=Y234
58367         Y234=YSAV
58368       ENDIF
58369       IF(IC.LE.3) GOTO 120
58370       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
58371       IC=5
58372  
58373 C...qqgg events: string configuration and event type.
58374       IF(IT.EQ.1) THEN
58375         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
58376           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
58377      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
58378           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
58379      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
58380           IF(ID.EQ.2) GOTO 130
58381         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
58382           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
58383           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
58384           IF(ID.EQ.2) GOTO 130
58385         ENDIF
58386         MSTJ(120)=3
58387         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
58388      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
58389         KFLN=21
58390  
58391 C...Mass cuts. Kinematical variables out.
58392         IF(Y12.LE.CUT+QME) NJET=2
58393         IF(NJET.EQ.2) GOTO 150
58394         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
58395         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
58396         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
58397         X2=1D0-Y124
58398         X12=(1D0-Q12)*Y13+Q12*Y23
58399         X14=Y12-0.5D0*QME
58400         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
58401  
58402 C...qqbarqqbar events: string configuration, choose new flavour.
58403       ELSE
58404         IF(ID.EQ.1) THEN
58405           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
58406           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
58407           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
58408           IF(WTR.LT.WTD(4)) ID=4
58409           IF(ID.GE.2) GOTO 130
58410         ENDIF
58411         MSTJ(120)=5
58412         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
58413   140   KFLN=1+INT(5D0*PYR(0))
58414         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
58415         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
58416         IF(KFLN.GT.MSTJ(104)) NJET=2
58417         PMQN=PYMASS(KFLN)
58418         QMEN=(2D0*PMQN/ECM)**2
58419  
58420 C...Mass cuts. Kinematical variables out.
58421         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
58422         IF(NJET.EQ.2) GOTO 150
58423         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
58424         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
58425         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
58426         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
58427         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
58428         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
58429      &  Q13*Y23)
58430         X14=Y24-0.5D0*QME
58431         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
58432      &  Q13*Y14)
58433         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
58434      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
58435         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
58436       ENDIF
58437   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
58438  
58439       RETURN
58440       END
58441  
58442 C*********************************************************************
58443  
58444 C...PYXDIF
58445 C...Gives the angular orientation of events.
58446  
58447       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
58448  
58449 C...Double precision and integer declarations.
58450       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58451       IMPLICIT INTEGER(I-N)
58452       INTEGER PYK,PYCHGE,PYCOMP
58453 C...Commonblocks.
58454       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58455       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58456       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58457       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58458  
58459 C...Charge. Factors depending on polarization for QED case.
58460       QF=KCHG(KFL,1)/3D0
58461       POLL=1D0-PARJ(131)*PARJ(132)
58462       POLD=PARJ(132)-PARJ(131)
58463       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
58464         HF1=POLL
58465         HF2=0D0
58466         HF3=PARJ(133)**2
58467         HF4=0D0
58468  
58469 C...Factors depending on flavour, energy and polarization for QFD case.
58470       ELSE
58471         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
58472         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
58473         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
58474         AE=-1D0
58475         VE=4D0*PARU(102)-1D0
58476         AF=SIGN(1D0,QF)
58477         VF=AF-4D0*QF*PARU(102)
58478         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
58479      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
58480         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
58481      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
58482         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
58483      &  SFW*SFF**2*(VE**2-AE**2))
58484         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
58485      &  SFF*AE
58486       ENDIF
58487  
58488 C...Mass factor. Differential cross-sections for two-jet events.
58489       SQ2=SQRT(2D0)
58490       QME=0D0
58491       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
58492      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
58493       IF(NJET.EQ.2) THEN
58494         SIGU=4D0*SQRT(1D0-QME)
58495         SIGL=2D0*QME*SQRT(1D0-QME)
58496         SIGT=0D0
58497         SIGI=0D0
58498         SIGA=0D0
58499         SIGP=4D0
58500  
58501 C...Kinematical variables. Reduce four-jet event to three-jet one.
58502       ELSE
58503         IF(NJET.EQ.3) THEN
58504           X1=2D0*P(NC+1,4)/ECM
58505           X2=2D0*P(NC+3,4)/ECM
58506         ELSE
58507           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
58508      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
58509           X1=2D0*P(NC+1,4)/ECMR
58510           X2=2D0*P(NC+4,4)/ECMR
58511         ENDIF
58512  
58513 C...Differential cross-sections for three-jet (or reduced four-jet).
58514         XQ=(1D0-X1)/(1D0-X2)
58515         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
58516         ST12=SQRT(1D0-CT12**2)
58517         IF(MSTJ(109).NE.1) THEN
58518           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
58519      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
58520           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
58521      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
58522      &    X2)*XQ
58523           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
58524           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
58525      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
58526           SIGA=X2**2*ST12/SQ2
58527           SIGP=2D0*(X1**2-X2**2*CT12)
58528  
58529 C...Differential cross-sect for scalar gluons (no mass effects).
58530         ELSE
58531           X3=2D0-X1-X2
58532           XT=X2*ST12
58533           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
58534           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
58535      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
58536           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
58537      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
58538           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
58539      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
58540           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
58541      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
58542           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
58543           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
58544         ENDIF
58545       ENDIF
58546  
58547 C...Upper bounds for differential cross-section.
58548       HF1A=ABS(HF1)
58549       HF2A=ABS(HF2)
58550       HF3A=ABS(HF3)
58551       HF4A=ABS(HF4)
58552       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
58553      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
58554      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
58555      &2D0*HF2A*ABS(SIGP)
58556  
58557 C...Generate angular orientation according to differential cross-sect.
58558   100 CHI=PARU(2)*PYR(0)
58559       CTHE=2D0*PYR(0)-1D0
58560       PHI=PARU(2)*PYR(0)
58561       CCHI=COS(CHI)
58562       SCHI=SIN(CHI)
58563       C2CHI=COS(2D0*CHI)
58564       S2CHI=SIN(2D0*CHI)
58565       THE=ACOS(CTHE)
58566       STHE=SIN(THE)
58567       C2PHI=COS(2D0*(PHI-PARJ(134)))
58568       S2PHI=SIN(2D0*(PHI-PARJ(134)))
58569       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
58570      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
58571      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
58572      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
58573      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
58574      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
58575      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
58576       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
58577  
58578       RETURN
58579       END
58580  
58581 C*********************************************************************
58582  
58583 C...PYONIA
58584 C...Generates Upsilon and toponium decays into three gluons
58585 C...or two gluons and a photon.
58586  
58587       SUBROUTINE PYONIA(KFL,ECM)
58588  
58589 C...Double precision and integer declarations.
58590       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58591       IMPLICIT INTEGER(I-N)
58592       INTEGER PYK,PYCHGE,PYCOMP
58593 C...Commonblocks.
58594       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58595       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58596       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58597       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58598  
58599 C...Printout. Check input parameters.
58600       IF(MSTU(12).GE.1) CALL PYLIST(0)
58601       IF(KFL.LT.0.OR.KFL.GT.8) THEN
58602         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
58603         IF(MSTU(21).GE.1) RETURN
58604       ENDIF
58605       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
58606         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
58607         IF(MSTU(21).GE.1) RETURN
58608       ENDIF
58609  
58610 C...Initial e+e- and onium state (optional).
58611       NC=0
58612       IF(MSTJ(115).GE.2) THEN
58613         NC=NC+2
58614         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
58615         K(NC-1,1)=21
58616         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
58617         K(NC,1)=21
58618       ENDIF
58619       KFLC=IABS(KFL)
58620       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
58621         NC=NC+1
58622         KF=110*KFLC+3
58623         MSTU10=MSTU(10)
58624         MSTU(10)=1
58625         P(NC,5)=ECM
58626         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
58627         K(NC,1)=21
58628         K(NC,3)=1
58629         MSTU(10)=MSTU10
58630       ENDIF
58631  
58632 C...Choose x1 and x2 according to matrix element.
58633       NTRY=0
58634   100 X1=PYR(0)
58635       X2=PYR(0)
58636       X3=2D0-X1-X2
58637       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
58638      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
58639       NTRY=NTRY+1
58640       NJET=3
58641       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
58642       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
58643  
58644 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
58645       MSTU(111)=MSTJ(108)
58646       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
58647      &MSTU(111)=1
58648       PARU(112)=PARJ(121)
58649       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
58650       QF=0D0
58651       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
58652       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
58653       MK=0
58654       ECMC=ECM
58655       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
58656         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
58657      &  NJET=2
58658         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
58659         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
58660       ELSE
58661         MK=1
58662         ECMC=SQRT(1D0-X1)*ECM
58663         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
58664         K(NC+1,1)=1
58665         K(NC+1,2)=22
58666         K(NC+1,4)=0
58667         K(NC+1,5)=0
58668         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
58669         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
58670         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
58671         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
58672         NJET=2
58673         IF(ECMC.LT.4D0*PARJ(127)) THEN
58674           MSTU10=MSTU(10)
58675           MSTU(10)=1
58676           P(NC+2,5)=ECMC
58677           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
58678           MSTU(10)=MSTU10
58679           NJET=0
58680         ENDIF
58681       ENDIF
58682       DO 110 IP=NC+1,N
58683         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
58684   110 CONTINUE
58685  
58686 C...Differential cross-sections. Upper limit for cross-section.
58687       IF(MSTJ(106).EQ.1) THEN
58688         SQ2=SQRT(2D0)
58689         HF1=1D0-PARJ(131)*PARJ(132)
58690         HF3=PARJ(133)**2
58691         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
58692         ST13=SQRT(1D0-CT13**2)
58693         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
58694         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
58695         SIGT=0.5D0*SIGL
58696         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
58697         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
58698      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
58699  
58700 C...Angular orientation of event.
58701   120   CHI=PARU(2)*PYR(0)
58702         CTHE=2D0*PYR(0)-1D0
58703         PHI=PARU(2)*PYR(0)
58704         CCHI=COS(CHI)
58705         SCHI=SIN(CHI)
58706         C2CHI=COS(2D0*CHI)
58707         S2CHI=SIN(2D0*CHI)
58708         THE=ACOS(CTHE)
58709         STHE=SIN(THE)
58710         C2PHI=COS(2D0*(PHI-PARJ(134)))
58711         S2PHI=SIN(2D0*(PHI-PARJ(134)))
58712         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
58713      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
58714      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
58715      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
58716      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
58717         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
58718         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
58719         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
58720       ENDIF
58721  
58722 C...Generate parton shower. Rearrange along strings and check.
58723       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
58724         CALL PYSHOW(NC+MK+1,-NJET,ECMC)
58725         MSTJ14=MSTJ(14)
58726         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
58727         IF(MSTJ(105).GE.0) MSTU(28)=0
58728         CALL PYPREP(0)
58729         MSTJ(14)=MSTJ14
58730         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
58731       ENDIF
58732  
58733 C...Generate fragmentation. Information for PYTABU:
58734       IF(MSTJ(105).EQ.1) CALL PYEXEC
58735       MSTU(161)=110*KFLC+3
58736       MSTU(162)=0
58737  
58738       RETURN
58739       END
58740  
58741 C*********************************************************************
58742  
58743 C...PYBOOK
58744 C...Books a histogram.
58745  
58746       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
58747  
58748 C...Double precision declaration.
58749       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58750       IMPLICIT INTEGER(I-N)
58751 C...Commonblock.
58752       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58753       SAVE /PYBINS/
58754 C...Local character variables.
58755       CHARACTER TITLE*(*), TITFX*60
58756  
58757 C...Check that input is sensible. Find initial address in memory.
58758       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58759      &'(PYBOOK:) not allowed histogram number')
58760       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
58761      &'(PYBOOK:) not allowed number of bins')
58762       IF(XL.GE.XU) CALL PYERRM(28,
58763      &'(PYBOOK:) x limits in wrong order')
58764       INDX(ID)=IHIST(4)
58765       IHIST(4)=IHIST(4)+28+NX
58766       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
58767      &'(PYBOOK:) out of histogram space')
58768       IS=INDX(ID)
58769  
58770 C...Store histogram size and reset contents.
58771       BIN(IS+1)=NX
58772       BIN(IS+2)=XL
58773       BIN(IS+3)=XU
58774       BIN(IS+4)=(XU-XL)/NX
58775       CALL PYNULL(ID)
58776  
58777 C...Store title by conversion to integer to double precision.
58778       TITFX=TITLE//' '
58779       DO 100 IT=1,20
58780         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
58781      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
58782   100 CONTINUE
58783  
58784       RETURN
58785       END
58786  
58787 C*********************************************************************
58788  
58789 C...PYFILL
58790 C...Fills entry in histogram.
58791  
58792       SUBROUTINE PYFILL(ID,X,W)
58793  
58794 C...Double precision declaration.
58795       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58796       IMPLICIT INTEGER(I-N)
58797 C...Commonblock.
58798       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58799       SAVE /PYBINS/
58800  
58801 C...Find initial address in memory. Increase number of entries.
58802       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58803      &'(PYFILL:) not allowed histogram number')
58804       IS=INDX(ID)
58805       IF(IS.EQ.0) CALL PYERRM(28,
58806      &'(PYFILL:) filling unbooked histogram')
58807       BIN(IS+5)=BIN(IS+5)+1D0
58808  
58809 C...Find bin in x, including under/overflow, and fill.
58810       IF(X.LT.BIN(IS+2)) THEN
58811         BIN(IS+6)=BIN(IS+6)+W
58812       ELSEIF(X.GE.BIN(IS+3)) THEN
58813         BIN(IS+8)=BIN(IS+8)+W
58814       ELSE
58815         BIN(IS+7)=BIN(IS+7)+W
58816         IX=(X-BIN(IS+2))/BIN(IS+4)
58817         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
58818         BIN(IS+9+IX)=BIN(IS+9+IX)+W
58819       ENDIF
58820  
58821       RETURN
58822       END
58823  
58824 C*********************************************************************
58825  
58826 C...PYFACT
58827 C...Multiplies histogram contents by factor.
58828  
58829       SUBROUTINE PYFACT(ID,F)
58830  
58831 C...Double precision declaration.
58832       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58833       IMPLICIT INTEGER(I-N)
58834 C...Commonblock.
58835       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58836       SAVE /PYBINS/
58837  
58838 C...Find initial address in memory. Multiply all contents bins.
58839       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58840      &'(PYFACT:) not allowed histogram number')
58841       IS=INDX(ID)
58842       IF(IS.EQ.0) CALL PYERRM(28,
58843      &'(PYFACT:) scaling unbooked histogram')
58844       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
58845         BIN(IX)=F*BIN(IX)
58846   100 CONTINUE
58847  
58848       RETURN
58849       END
58850  
58851 C*********************************************************************
58852  
58853 C...PYOPER
58854 C...Performs operations between histograms.
58855  
58856       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
58857  
58858 C...Double precision declaration.
58859       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58860       IMPLICIT INTEGER(I-N)
58861 C...Commonblock.
58862       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58863       SAVE /PYBINS/
58864 C...Character variable.
58865       CHARACTER OPER*(*)
58866  
58867 C...Find initial addresses in memory, and histogram size.
58868       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
58869      &'(PYFACT:) not allowed histogram number')
58870       IS1=INDX(ID1)
58871       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
58872       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
58873       NX=NINT(BIN(IS3+1))
58874       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
58875  
58876 C...Update info on number of histogram entries.
58877       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
58878         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
58879       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
58880         BIN(IS3+5)=BIN(IS1+5)
58881       ENDIF
58882  
58883 C...Operations on pair of histograms: addition, subtraction,
58884 C...multiplication, division.
58885       IF(OPER.EQ.'+') THEN
58886         DO 100 IX=6,8+NX
58887           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
58888   100   CONTINUE
58889       ELSEIF(OPER.EQ.'-') THEN
58890         DO 110 IX=6,8+NX
58891           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
58892   110   CONTINUE
58893       ELSEIF(OPER.EQ.'*') THEN
58894         DO 120 IX=6,8+NX
58895           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
58896   120   CONTINUE
58897       ELSEIF(OPER.EQ.'/') THEN
58898         DO 130 IX=6,8+NX
58899           FA2=F2*BIN(IS2+IX)
58900           IF(ABS(FA2).LE.1D-20) THEN
58901             BIN(IS3+IX)=0D0
58902           ELSE
58903             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
58904           ENDIF
58905   130   CONTINUE
58906  
58907 C...Operations on single histogram: multiplication+addition,
58908 C...square root+addition, logarithm+addition.
58909       ELSEIF(OPER.EQ.'A') THEN
58910         DO 140 IX=6,8+NX
58911           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
58912   140   CONTINUE
58913       ELSEIF(OPER.EQ.'S') THEN
58914         DO 150 IX=6,8+NX
58915           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
58916   150   CONTINUE
58917       ELSEIF(OPER.EQ.'L') THEN
58918         ZMIN=1D20
58919         DO 160 IX=9,8+NX
58920           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
58921      &    ZMIN=0.8D0*BIN(IS1+IX)
58922   160   CONTINUE
58923         DO 170 IX=6,8+NX
58924           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
58925   170   CONTINUE
58926  
58927 C...Operation on two or three histograms: average and
58928 C...standard deviation.
58929       ELSEIF(OPER.EQ.'M') THEN
58930         DO 180 IX=6,8+NX
58931           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
58932             BIN(IS2+IX)=0D0
58933           ELSE
58934             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
58935           ENDIF
58936           IF(ID3.NE.0) THEN
58937             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
58938               BIN(IS3+IX)=0D0
58939             ELSE
58940               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
58941      &        BIN(IS2+IX)**2))
58942             ENDIF
58943           ENDIF
58944           BIN(IS1+IX)=F1*BIN(IS1+IX)
58945   180   CONTINUE
58946       ENDIF
58947  
58948       RETURN
58949       END
58950  
58951 C*********************************************************************
58952  
58953 C...PYHIST
58954 C...Prints and resets all histograms.
58955  
58956       SUBROUTINE PYHIST
58957  
58958 C...Double precision declaration.
58959       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58960       IMPLICIT INTEGER(I-N)
58961 C...Commonblock.
58962       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58963       SAVE /PYBINS/
58964  
58965 C...Loop over histograms, print and reset used ones.
58966       DO 100 ID=1,IHIST(1)
58967         IS=INDX(ID)
58968         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
58969           CALL PYPLOT(ID)
58970           CALL PYNULL(ID)
58971         ENDIF
58972   100 CONTINUE
58973  
58974       RETURN
58975       END
58976  
58977 C*********************************************************************
58978  
58979 C...PYPLOT
58980 C...Prints a histogram (but does not reset it).
58981  
58982       SUBROUTINE PYPLOT(ID)
58983  
58984 C...Double precision declaration.
58985       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58986       IMPLICIT INTEGER(I-N)
58987 C...Commonblocks.
58988       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58989       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58990       SAVE /PYDAT1/,/PYBINS/
58991 C...Local arrays and character variables.
58992       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
58993       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
58994  
58995 C...Steps in histogram scale. Character sequence.
58996       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
58997       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
58998  
58999 C...Find initial address in memory; skip if empty histogram.
59000       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
59001       IS=INDX(ID)
59002       IF(IS.EQ.0) RETURN
59003       IF(NINT(BIN(IS+5)).LE.0) THEN
59004         WRITE(MSTU(11),5000) ID
59005         RETURN
59006       ENDIF
59007  
59008 C...Number of histogram lines and x bins.
59009       LIN=IHIST(3)-18
59010       NX=NINT(BIN(IS+1))
59011  
59012 C...Extract title by conversion from double precision via integer.
59013       DO 100 IT=1,20
59014         IEQ=NINT(BIN(IS+8+NX+IT))
59015         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
59016      &  //CHAR(MOD(IEQ,256))
59017   100 CONTINUE
59018  
59019 C...Find time; print title.
59020       CALL PYTIME(IDATI)
59021       IF(IDATI(1).GT.0) THEN
59022         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
59023       ELSE
59024         WRITE(MSTU(11),5200) ID, TITLE
59025       ENDIF
59026  
59027 C...Find minimum and maximum bin content.
59028       YMIN=BIN(IS+9)
59029       YMAX=BIN(IS+9)
59030       DO 110 IX=IS+10,IS+8+NX
59031         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
59032         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
59033   110 CONTINUE
59034  
59035 C...Determine scale and step size for y axis.
59036       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
59037         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
59038         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
59039         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
59040         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
59041         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
59042         DELY=DYAC(1)
59043         DO 120 IDEL=1,9
59044           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
59045   120   CONTINUE
59046         DY=DELY*10D0**IPOT
59047  
59048 C...Convert bin contents to integer form; fractional fill in top row.
59049         DO 130 IX=1,NX
59050           CTA=ABS(BIN(IS+8+IX))/DY
59051           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
59052           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
59053   130   CONTINUE
59054         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
59055         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
59056  
59057 C...Print histogram row by row.
59058         DO 150 IR=IRMA,IRMI,-1
59059           IF(IR.EQ.0) GOTO 150
59060           OUT=' '
59061           DO 140 IX=1,NX
59062             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
59063             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
59064   140     CONTINUE
59065           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
59066   150   CONTINUE
59067  
59068 C...Print sign and value of bin contents.
59069         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
59070         OUT=' '
59071         DO 160 IX=1,NX
59072           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
59073           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
59074   160   CONTINUE
59075         WRITE(MSTU(11),5400) OUT
59076         DO 180 IR=4,1,-1
59077           DO 170 IX=1,NX
59078             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
59079   170     CONTINUE
59080           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
59081   180   CONTINUE
59082  
59083 C...Print sign and value of lower bin edge.
59084         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
59085      &  10.0001D0)-10
59086         OUT=' '
59087         DO 190 IX=1,NX
59088           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
59089      &    OUT(IX:IX)=CHA(11)
59090           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
59091   190   CONTINUE
59092         WRITE(MSTU(11),5600) OUT
59093         DO 210 IR=3,1,-1
59094           DO 200 IX=1,NX
59095             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
59096   200     CONTINUE
59097           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
59098   210   CONTINUE
59099       ENDIF
59100  
59101 C...Calculate and print statistics.
59102       CSUM=0D0
59103       CXSUM=0D0
59104       CXXSUM=0D0
59105       DO 220 IX=1,NX
59106         CTA=ABS(BIN(IS+8+IX))
59107         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
59108         CSUM=CSUM+CTA
59109         CXSUM=CXSUM+CTA*X
59110         CXXSUM=CXXSUM+CTA*X**2
59111   220 CONTINUE
59112       XMEAN=CXSUM/MAX(CSUM,1D-20)
59113       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
59114       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
59115      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
59116  
59117 C...Formats for output.
59118  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
59119  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
59120      &I2,':',I2/)
59121  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
59122  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
59123  5400 FORMAT(/8X,'Contents',3X,A100)
59124  5500 FORMAT(9X,'*10**',I2,3X,A100)
59125  5600 FORMAT(/8X,'Low edge',3X,A100)
59126  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
59127      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
59128      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
59129  
59130       RETURN
59131       END
59132  
59133 C*********************************************************************
59134  
59135 C...PYNULL
59136 C...Resets bin contents of a histogram.
59137  
59138       SUBROUTINE PYNULL(ID)
59139  
59140 C...Double precision declaration.
59141       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59142       IMPLICIT INTEGER(I-N)
59143 C...Commonblock.
59144       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
59145       SAVE /PYBINS/
59146  
59147       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
59148       IS=INDX(ID)
59149       IF(IS.EQ.0) RETURN
59150       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
59151         BIN(IX)=0D0
59152   100 CONTINUE
59153  
59154       RETURN
59155       END
59156  
59157 C*********************************************************************
59158  
59159 C...PYDUMP
59160 C...Dumps histogram contents on file for reading by other program.
59161 C...Can also read back own dump.
59162  
59163       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
59164  
59165 C...Double precision declaration.
59166       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59167       IMPLICIT INTEGER(I-N)
59168 C...Commonblock.
59169       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
59170       SAVE /PYBINS/
59171 C...Local arrays and character variables.
59172       DIMENSION IHI(*),ISS(100),VAL(5)
59173       CHARACTER TITLE*60,FORMAT*13
59174  
59175 C...Dump all histograms that have been booked,
59176 C...including titles and ranges, one after the other.
59177       IF(MDUMP.EQ.1) THEN
59178  
59179 C...Loop over histograms and find which are wanted and booked.
59180         IF(NHI.LE.0) THEN
59181           NW=IHIST(1)
59182         ELSE
59183           NW=NHI
59184         ENDIF
59185         DO 130 IW=1,NW
59186           IF(NHI.EQ.0) THEN
59187             ID=IW
59188           ELSE
59189             ID=IHI(IW)
59190           ENDIF
59191           IS=INDX(ID)
59192           IF(IS.NE.0) THEN
59193  
59194 C...Write title, histogram size, filling statistics.
59195             NX=NINT(BIN(IS+1))
59196             DO 100 IT=1,20
59197               IEQ=NINT(BIN(IS+8+NX+IT))
59198               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
59199      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
59200   100       CONTINUE
59201             WRITE(LFN,5100) ID,TITLE
59202             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
59203             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
59204      &      BIN(IS+8)
59205  
59206  
59207 C...Write histogram contents, in groups of five.
59208             DO 120 IXG=1,(NX+4)/5
59209               DO 110 IXV=1,5
59210                 IX=5*IXG+IXV-5
59211                 IF(IX.LE.NX) THEN
59212                   VAL(IXV)=BIN(IS+8+IX)
59213                 ELSE
59214                   VAL(IXV)=0D0
59215                 ENDIF
59216   110         CONTINUE
59217               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
59218   120       CONTINUE
59219  
59220 C...Go to next histogram; finish.
59221           ELSEIF(NHI.GT.0) THEN
59222             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
59223           ENDIF
59224   130   CONTINUE
59225  
59226 C...Read back in histograms dumped MDUMP=1.
59227       ELSEIF(MDUMP.EQ.2) THEN
59228  
59229 C...Read histogram number, title and range, and book.
59230   140   READ(LFN,5100,END=170) ID,TITLE
59231         READ(LFN,5200) NX,XL,XU
59232         CALL PYBOOK(ID,TITLE,NX,XL,XU)
59233         IS=INDX(ID)
59234  
59235 C...Read filling statistics.
59236         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
59237         BIN(IS+5)=DBLE(NENTRY)
59238  
59239 C...Read histogram contents, in groups of five.
59240         DO 160 IXG=1,(NX+4)/5
59241           READ(LFN,5400) (VAL(IXV),IXV=1,5)
59242           DO 150 IXV=1,5
59243             IX=5*IXG+IXV-5
59244             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
59245   150     CONTINUE
59246   160   CONTINUE
59247  
59248 C...Go to next histogram; finish.
59249         GOTO 140
59250   170   CONTINUE
59251  
59252 C...Write histogram contents in column format,
59253 C...convenient e.g. for GNUPLOT input.
59254       ELSEIF(MDUMP.EQ.3) THEN
59255  
59256 C...Find addresses to wanted histograms.
59257         NSS=0
59258         IF(NHI.LE.0) THEN
59259           NW=IHIST(1)
59260         ELSE
59261           NW=NHI
59262         ENDIF
59263         DO 180 IW=1,NW
59264           IF(NHI.EQ.0) THEN
59265             ID=IW
59266           ELSE
59267             ID=IHI(IW)
59268           ENDIF
59269           IS=INDX(ID)
59270           IF(IS.NE.0.AND.NSS.LT.100) THEN
59271             NSS=NSS+1
59272             ISS(NSS)=IS
59273           ELSEIF(NSS.GE.100) THEN
59274             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
59275           ELSEIF(NHI.GT.0) THEN
59276             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
59277           ENDIF
59278   180   CONTINUE
59279  
59280 C...Check that they have common number of x bins. Fix format.
59281         NX=NINT(BIN(ISS(1)+1))
59282         DO 190 IW=2,NSS
59283           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
59284             CALL PYERRM(8,'(PYDUMP:) different number of bins')
59285             RETURN
59286           ENDIF
59287   190   CONTINUE
59288         FORMAT='(1P,000E12.4)'
59289         WRITE(FORMAT(5:7),'(I3)') NSS+1
59290  
59291 C...Write histogram contents; first column x values.
59292         DO 200 IX=1,NX
59293           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
59294           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
59295   200   CONTINUE
59296  
59297       ENDIF
59298  
59299 C...Formats for output.
59300  5100 FORMAT(I5,5X,A60)
59301  5200 FORMAT(I5,1P,2D12.4)
59302  5300 FORMAT(I12,1P,3D12.4)
59303  5400 FORMAT(1P,5D12.4)
59304  
59305       RETURN
59306       END
59307  
59308 C*********************************************************************
59309  
59310 C...PYKCUT
59311 C...Dummy routine, which the user can replace in order to make cuts on
59312 C...the kinematics on the parton level before the matrix elements are
59313 C...evaluated and the event is generated. The cross-section estimates
59314 C...will automatically take these cuts into account, so the given
59315 C...values are for the allowed phase space region only. MCUT=0 means
59316 C...that the event has passed the cuts, MCUT=1 that it has failed.
59317  
59318       SUBROUTINE PYKCUT(MCUT)
59319  
59320 C...Double precision and integer declarations.
59321       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59322       IMPLICIT INTEGER(I-N)
59323       INTEGER PYK,PYCHGE,PYCOMP
59324 C...Commonblocks.
59325       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59326       COMMON/PYINT1/MINT(400),VINT(400)
59327       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
59328       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
59329  
59330 C...Set default value (accepting event) for MCUT.
59331       MCUT=0
59332  
59333 C...Read out subprocess number.
59334       ISUB=MINT(1)
59335       ISTSB=ISET(ISUB)
59336  
59337 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
59338       TAU=VINT(21)
59339       YST=VINT(22)
59340       CTH=0D0
59341       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
59342       TAUP=0D0
59343       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
59344  
59345 C...Calculate x_1, x_2, x_F.
59346       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
59347         X1=SQRT(TAU)*EXP(YST)
59348         X2=SQRT(TAU)*EXP(-YST)
59349       ELSE
59350         X1=SQRT(TAUP)*EXP(YST)
59351         X2=SQRT(TAUP)*EXP(-YST)
59352       ENDIF
59353       XF=X1-X2
59354  
59355 C...Calculate shat, that, uhat, p_T^2.
59356       SHAT=TAU*VINT(2)
59357       SQM3=VINT(63)
59358       SQM4=VINT(64)
59359       RM3=SQM3/SHAT
59360       RM4=SQM4/SHAT
59361       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
59362       RPTS=4D0*VINT(71)**2/SHAT
59363       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
59364       RM34=2D0*RM3*RM4
59365       RSQM=1D0+RM34
59366       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
59367       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
59368       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
59369       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
59370  
59371 C...Decisions by user to be put here.
59372  
59373 C...Stop program if this routine is ever called.
59374 C...You should not copy these lines to your own routine.
59375       WRITE(MSTU(11),5000)
59376       IF(PYR(0).LT.10D0) STOP
59377  
59378 C...Format for error printout.
59379  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
59380      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59381      &1X,'Execution stopped!')
59382  
59383       RETURN
59384       END
59385  
59386 C*********************************************************************
59387  
59388 C...PYEVWT
59389 C...Dummy routine, which the user can replace in order to multiply the
59390 C...standard PYTHIA differential cross-section by a process- and
59391 C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
59392 C...to generation of weighted events, with weight 1/WTXS, while for
59393 C...MSTP(142)=2 it corresponds to a modification of the underlying
59394 C...physics.
59395  
59396       SUBROUTINE PYEVWT(WTXS)
59397  
59398 C...Double precision and integer declarations.
59399       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59400       IMPLICIT INTEGER(I-N)
59401       INTEGER PYK,PYCHGE,PYCOMP
59402 C...Commonblocks.
59403       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59404       COMMON/PYINT1/MINT(400),VINT(400)
59405       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
59406       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
59407  
59408 C...Set default weight for WTXS.
59409       WTXS=1D0
59410  
59411 C...Read out subprocess number.
59412       ISUB=MINT(1)
59413       ISTSB=ISET(ISUB)
59414  
59415 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
59416       TAU=VINT(21)
59417       YST=VINT(22)
59418       CTH=0D0
59419       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
59420       TAUP=0D0
59421       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
59422  
59423 C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
59424       X1=VINT(41)
59425       X2=VINT(42)
59426       XF=X1-X2
59427       SHAT=VINT(44)
59428       THAT=VINT(45)
59429       UHAT=VINT(46)
59430       PT2=VINT(48)
59431  
59432 C...Modifications by user to be put here.
59433  
59434 C...Stop program if this routine is ever called.
59435 C...You should not copy these lines to your own routine.
59436       WRITE(MSTU(11),5000)
59437       IF(PYR(0).LT.10D0) STOP
59438  
59439 C...Format for error printout.
59440  5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
59441      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59442      &1X,'Execution stopped!')
59443  
59444       RETURN
59445       END
59446  
59447 C*********************************************************************
59448  
59449 C...UPINIT
59450 C...Dummy routine, to be replaced by a user implementing external
59451 C...processes. Is supposed to fill the HEPRUP commonblock with info
59452 C...on incoming beams and allowed processes.
59453  
59454       SUBROUTINE UPINIT
59455  
59456 C...Double precision and integer declarations.
59457       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59458       IMPLICIT INTEGER(I-N)
59459  
59460 C...User process initialization commonblock.
59461       INTEGER MAXPUP
59462       PARAMETER (MAXPUP=100)
59463       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
59464       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
59465       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
59466      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
59467      &LPRUP(MAXPUP)
59468       SAVE /HEPRUP/
59469  
59470       RETURN
59471       END
59472  
59473 C*********************************************************************
59474  
59475 C...UPEVNT
59476 C...Dummy routine, to be replaced by a user implementing external
59477 C...processes. Depending on cross section model chosen, it either has
59478 C...to generate a process of the type IDPRUP requested, or pick a type
59479 C...itself and generate this event. The event is to be stored in the
59480 C...HEPEUP commonblock, including (often) an event weight.
59481  
59482       SUBROUTINE UPEVNT
59483  
59484 C...Double precision and integer declarations.
59485       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59486       IMPLICIT INTEGER(I-N)
59487  
59488 C...User process event common block.
59489       INTEGER MAXNUP
59490       PARAMETER (MAXNUP=500)
59491       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
59492       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
59493       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
59494      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
59495      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
59496       SAVE /HEPEUP/
59497  
59498       RETURN
59499       END
59500  
59501 C*********************************************************************
59502 C...SUGRA
59503 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
59504  
59505       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
59506        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59507       IMPLICIT INTEGER(I-N)
59508       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
59509       INTEGER IMODL
59510 C...Commonblocks.
59511       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59512       SAVE /PYDAT1/
59513  
59514 C...Stop program if this routine is ever called.
59515       WRITE(MSTU(11),5000)
59516       IF(PYR(0).LT.10D0) STOP
59517  
59518 C...Format for error printout.
59519  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
59520      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
59521      &1X,'Execution stopped!')
59522  
59523       RETURN
59524       END
59525  
59526 C*********************************************************************
59527  
59528 C...VISAJE
59529 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
59530  
59531       FUNCTION VISAJE()
59532       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59533       IMPLICIT INTEGER(I-N)
59534       CHARACTER*40 VISAJE
59535  
59536 C...Commonblocks.
59537       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59538       SAVE /PYDAT1/
59539  
59540 C...Assign default value.
59541       VISAJE='Undefined'
59542  
59543 C...Stop program if this routine is ever called.
59544       WRITE(MSTU(11),5000)
59545       IF(PYR(0).LT.10D0) STOP
59546  
59547 C...Format for error printout.
59548  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
59549      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
59550      &1X,'Execution stopped!')
59551  
59552       RETURN
59553       END
59554  
59555 C*********************************************************************
59556  
59557 C...PYTAUD
59558 C...Dummy routine, to be replaced by user, to handle the decay of a
59559 C...polarized tau lepton.
59560 C...Input:
59561 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
59562 C...IORIG is the position where the mother of the tau is stored;
59563 C...     is 0 when the mother is not stored.
59564 C...KFORIG is the flavour of the mother of the tau;
59565 C...     is 0 when the mother is not known.
59566 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
59567 C...     e.g. in B hadron semileptonic decays the W  propagator
59568 C...     is not explicitly stored but the W code is still unambiguous.
59569 C...Output:
59570 C...NDECAY is the number of decay products in the current tau decay.
59571 C...These decay products should be added to the /PYJETS/ common block,
59572 C...in positions N+1 through N+NDECAY. For each product I you must
59573 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
59574 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
59575  
59576       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
59577  
59578 C...Double precision and integer declarations.
59579       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59580       IMPLICIT INTEGER(I-N)
59581       INTEGER PYK,PYCHGE,PYCOMP
59582 C...Commonblocks.
59583       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59584       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59585       SAVE /PYJETS/,/PYDAT1/
59586  
59587 C...Stop program if this routine is ever called.
59588 C...You should not copy these lines to your own routine.
59589       NDECAY=ITAU+IORIG+KFORIG
59590       WRITE(MSTU(11),5000)
59591       IF(PYR(0).LT.10D0) STOP
59592  
59593 C...Format for error printout.
59594  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
59595      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59596      &1X,'Execution stopped!')
59597  
59598       RETURN
59599       END
59600  
59601 C*********************************************************************
59602  
59603 C...PYTIME
59604 C...Finds current date and time.
59605 C...Since this task is not standardized in Fortran 77, the routine
59606 C...is dummy, to be replaced by the user. Examples are given for
59607 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
59608 C...you do not have access to suitable routines.
59609  
59610       SUBROUTINE PYTIME(IDATI)
59611  
59612 C...Double precision and integer declarations.
59613       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59614       IMPLICIT INTEGER(I-N)
59615       INTEGER PYK,PYCHGE,PYCOMP
59616       CHARACTER*8 ATIME
59617 C...Local array.
59618       INTEGER IDATI(6),IDTEMP(3)
59619  
59620 C...Example 0: if you do not have suitable routines.
59621       DO 100 J=1,6
59622       IDATI(J)=0
59623   100 CONTINUE
59624  
59625 C...Example 1: Fortran 90 routine.
59626 C      INTEGER IVAL(8)
59627 C      CALL DATE_AND_TIME(VALUES=IVAL)
59628 C      IDATI(1)=IVAL(1)
59629 C      IDATI(2)=IVAL(2)
59630 C      IDATI(3)=IVAL(3)
59631 C      IDATI(4)=IVAL(5)
59632 C      IDATI(5)=IVAL(6)
59633 C      IDATI(6)=IVAL(7)
59634  
59635 C...Example 2: DEC Fortran 77. AIX.
59636 C      CALL IDATE(IMON,IDAY,IYEAR)
59637 C      IDATI(1)=IYEAR
59638 C      IDATI(2)=IMON
59639 C      IDATI(3)=IDAY
59640 C      CALL ITIME(IHOUR,IMIN,ISEC)
59641 C      IDATI(4)=IHOUR
59642 C      IDATI(5)=IMIN
59643 C      IDATI(6)=ISEC
59644  
59645 C...Example 3: DEC Fortran, IRIX, IRIX64.
59646 C      CALL IDATE(IMON,IDAY,IYEAR)
59647 C      IDATI(1)=IYEAR
59648 C      IDATI(2)=IMON
59649 C      IDATI(3)=IDAY
59650 C      CALL TIME(ATIME)
59651 C      IHOUR=0
59652 C      IMIN=0
59653 C      ISEC=0
59654 C      READ(ATIME(1:2),'(I2)') IHOUR
59655 C      READ(ATIME(4:5),'(I2)') IMIN
59656 C      READ(ATIME(7:8),'(I2)') ISEC
59657 C      IDATI(4)=IHOUR
59658 C      IDATI(5)=IMIN
59659 C      IDATI(6)=ISEC
59660  
59661 C...Example 4: GNU LINUX libU77, SunOS.
59662 c      CALL IDATE(IDTEMP)
59663 c      IDATI(1)=IDTEMP(3)
59664 c      IDATI(2)=IDTEMP(2)
59665 c      IDATI(3)=IDTEMP(1)
59666 c      CALL ITIME(IDTEMP)
59667 c      IDATI(4)=IDTEMP(1)
59668 c      IDATI(5)=IDTEMP(2)
59669 c      IDATI(6)=IDTEMP(3)
59670  
59671 C...Common code to ensure right century.
59672       IDATI(1)=2000+MOD(IDATI(1),100)
59673  
59674       RETURN
59675       END