]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA6/pythia6214.f
Back to previous until problem in init solved.
[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         IF(KCHG(KC,3).EQ.0) THEN
3983           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
3984      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
3985      &    2D0*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
3986           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
3987           WIDS(KC,3)=0D0
3988           WIDS(KC,4)=0D0
3989           WIDS(KC,5)=0D0
3990         ELSE
3991           IF(MWID(KC).EQ.3) MINT(63)=1
3992           CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
3993           MINT(51)=0
3994           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
3995      &    (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
3996      &    (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
3997      &    WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))/WDTP(0)**2
3998           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
3999           WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))/WDTP(0)
4000           WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
4001      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
4002      &    2D0*WDTE(0,4)*WDTE(0,5))/WDTP(0)**2
4003           WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
4004      &    2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
4005      &    2D0*WDTEM(0,4)*WDTEM(0,5))/WDTP(0)**2
4006         ENDIF
4007  
4008 C...Set resonance widths and branching ratios;
4009 C...also on/off switch for decays.
4010         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
4011           PMAS(KC,2)=WDTP(0)
4012           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
4013           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
4014           DO 170 J=1,MDCY(KC,3)
4015             IDC=J+MDCY(KC,2)-1
4016             BRAT(IDC)=0D0
4017             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
4018   170     CONTINUE
4019         ENDIF
4020   180 CONTINUE
4021  
4022 C...Flavours of leptoquark: redefine charge and name.
4023       KFLQQ=KFDP(MDCY(42,2),1)
4024       KFLQL=KFDP(MDCY(42,2),2)
4025       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
4026      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
4027       LL=1
4028       IF(IABS(KFLQL).EQ.13) LL=2
4029       IF(IABS(KFLQL).EQ.15) LL=3
4030       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
4031      &CHAF(IABS(KFLQL),1)(1:LL)//' '
4032       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
4033  
4034 C...Special cases in treatment of gamma*/Z0: redefine process name.
4035       IF(MSTP(43).EQ.1) THEN
4036         PROC(1)='f + fbar -> gamma*'
4037         PROC(15)='f + fbar -> g + gamma*'
4038         PROC(19)='f + fbar -> gamma + gamma*'
4039         PROC(30)='f + g -> f + gamma*'
4040         PROC(35)='f + gamma -> f + gamma*'
4041       ELSEIF(MSTP(43).EQ.2) THEN
4042         PROC(1)='f + fbar -> Z0'
4043         PROC(15)='f + fbar -> g + Z0'
4044         PROC(19)='f + fbar -> gamma + Z0'
4045         PROC(30)='f + g -> f + Z0'
4046         PROC(35)='f + gamma -> f + Z0'
4047       ELSEIF(MSTP(43).EQ.3) THEN
4048         PROC(1)='f + fbar -> gamma*/Z0'
4049         PROC(15)='f + fbar -> g + gamma*/Z0'
4050         PROC(19)='f + fbar -> gamma + gamma*/Z0'
4051         PROC(30)='f + g -> f + gamma*/Z0'
4052         PROC(35)='f + gamma -> f + gamma*/Z0'
4053       ENDIF
4054  
4055 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
4056       IF(MSTP(44).EQ.1) THEN
4057         PROC(141)='f + fbar -> gamma*'
4058       ELSEIF(MSTP(44).EQ.2) THEN
4059         PROC(141)='f + fbar -> Z0'
4060       ELSEIF(MSTP(44).EQ.3) THEN
4061         PROC(141)='f + fbar -> Z''0'
4062       ELSEIF(MSTP(44).EQ.4) THEN
4063         PROC(141)='f + fbar -> gamma*/Z0'
4064       ELSEIF(MSTP(44).EQ.5) THEN
4065         PROC(141)='f + fbar -> gamma*/Z''0'
4066       ELSEIF(MSTP(44).EQ.6) THEN
4067         PROC(141)='f + fbar -> Z0/Z''0'
4068       ELSEIF(MSTP(44).EQ.7) THEN
4069         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
4070       ENDIF
4071  
4072 C...Special cases in treatment of WW -> WW: redefine process name.
4073       IF(MSTP(45).EQ.1) THEN
4074         PROC(77)='W+ + W+ -> W+ + W+'
4075       ELSEIF(MSTP(45).EQ.2) THEN
4076         PROC(77)='W+ + W- -> W+ + W-'
4077       ELSEIF(MSTP(45).EQ.3) THEN
4078         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
4079       ENDIF
4080  
4081 C...Format for error information.
4082  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
4083      &'combination'/1X,'Execution stopped!')
4084  
4085       RETURN
4086       END
4087  
4088 C*********************************************************************
4089  
4090 C...PYINBM
4091 C...Identifies the two incoming particles and the choice of frame.
4092  
4093        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
4094  
4095 C...Double precision and integer declarations.
4096       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4097       IMPLICIT INTEGER(I-N)
4098       INTEGER PYK,PYCHGE,PYCOMP
4099  
4100 C...User process initialization commonblock.
4101       INTEGER MAXPUP
4102       PARAMETER (MAXPUP=100)
4103       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4104       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4105       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4106      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4107      &LPRUP(MAXPUP)
4108       SAVE /HEPRUP/
4109  
4110 C...Commonblocks.
4111       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4112       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4113       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4114       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4115       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4116       COMMON/PYINT1/MINT(400),VINT(400)
4117       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
4118  
4119 C...Local arrays, character variables and data.
4120       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
4121      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
4122       DIMENSION LEN(3),KCDE(39),PM(2)
4123       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
4124      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
4125       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
4126      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
4127      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
4128      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
4129      &'nbar0       ','p+          ','pbar-       ','gamma       ',
4130      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
4131      &'xi-         ','xi0         ','omega-      ','pi0         ',
4132      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
4133      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
4134      &'k+          ','k-          ','ks0         ','kl0         '/
4135       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
4136      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
4137      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
4138  
4139 C...Store initial energy. Default frame.
4140       VINT(290)=WIN
4141       MINT(111)=0
4142  
4143 C...Special user process initialization; convert to normal input.
4144       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
4145         MINT(111)=11
4146         CALL PYNAME(IDBMUP(1),CHNAME)
4147         CHBEAM=CHNAME(1:12)
4148         CALL PYNAME(IDBMUP(2),CHNAME)
4149         CHTARG=CHNAME(1:12)
4150       ENDIF
4151  
4152 C...Convert character variables to lowercase and find their length.
4153       CHCOM(1)=CHFRAM
4154       CHCOM(2)=CHBEAM
4155       CHCOM(3)=CHTARG
4156       DO 130 I=1,3
4157         LEN(I)=12
4158         DO 110 LL=12,1,-1
4159           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
4160           DO 100 LA=1,26
4161             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
4162      &      CHALP(1)(LA:LA)
4163   100     CONTINUE
4164   110   CONTINUE
4165         CHIDNT(I)=CHCOM(I)
4166  
4167 C...Fix up bar, underscore and charge in particle name (if needed).
4168         DO 120 LL=1,10
4169           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
4170             CHTEMP=CHIDNT(I)
4171             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
4172           ENDIF
4173   120   CONTINUE
4174         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
4175           CHTEMP=CHIDNT(I)
4176           CHIDNT(I)='nu_'//CHTEMP(3:7)
4177         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
4178           CHIDNT(I)(1:3)='n0 '
4179         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
4180           CHIDNT(I)(1:5)='nbar0'
4181         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
4182           CHIDNT(I)(1:3)='p+ '
4183         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
4184      &    CHIDNT(I)(1:2).EQ.'p-') THEN
4185           CHIDNT(I)(1:5)='pbar-'
4186         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
4187           CHIDNT(I)(7:7)='0'
4188         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
4189           CHIDNT(I)(1:7)='reggeon'
4190         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
4191           CHIDNT(I)(1:7)='pomeron'
4192         ENDIF
4193   130 CONTINUE
4194  
4195 C...Identify free initialization.
4196       IF(CHCOM(1)(1:2).EQ.'no') THEN
4197         MINT(65)=1
4198         RETURN
4199       ENDIF
4200  
4201 C...Identify incoming beam and target particles.
4202       DO 160 I=1,2
4203         DO 140 J=1,39
4204           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
4205   140   CONTINUE
4206         PM(I)=PYMASS(MINT(10+I))
4207         VINT(2+I)=PM(I)
4208         MINT(140+I)=0
4209         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
4210           CHTEMP=CHIDNT(I+1)(7:12)//' '
4211           DO 150 J=1,12
4212             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
4213   150     CONTINUE
4214           PM(I)=PYMASS(MINT(140+I))
4215           VINT(302+I)=PM(I)
4216         ENDIF
4217   160 CONTINUE
4218       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
4219       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
4220       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) STOP
4221  
4222 C...Identify choice of frame and input energies.
4223       CHINIT=' '
4224  
4225 C...Events defined in the CM frame.
4226       IF(CHCOM(1)(1:2).EQ.'cm') THEN
4227         MINT(111)=1
4228         S=WIN**2
4229         IF(MSTP(122).GE.1) THEN
4230           IF(CHCOM(2)(1:1).NE.'e') THEN
4231             LOFFS=(31-(LEN(2)+LEN(3)))/2
4232             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
4233      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4234      &      ' collider'//' '
4235           ELSE
4236             LOFFS=(30-(LEN(2)+LEN(3)))/2
4237             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
4238      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4239      &      ' collider'//' '
4240           ENDIF
4241           WRITE(MSTU(11),5200) CHINIT
4242           WRITE(MSTU(11),5300) WIN
4243         ENDIF
4244  
4245 C...Events defined in fixed target frame.
4246       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
4247         MINT(111)=2
4248         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
4249         IF(MSTP(122).GE.1) THEN
4250           LOFFS=(29-(LEN(2)+LEN(3)))/2
4251           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4252      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4253      &    ' fixed target'//' '
4254           WRITE(MSTU(11),5200) CHINIT
4255           WRITE(MSTU(11),5400) WIN
4256           WRITE(MSTU(11),5500) SQRT(S)
4257         ENDIF
4258  
4259 C...Frame defined by user three-vectors.
4260       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
4261         MINT(111)=3
4262         P(1,5)=PM(1)
4263         P(2,5)=PM(2)
4264         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
4265         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
4266         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4267      &  (P(1,3)+P(2,3))**2
4268         IF(MSTP(122).GE.1) THEN
4269           LOFFS=(22-(LEN(2)+LEN(3)))/2
4270           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4271      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4272      &    ' user configuration'//' '
4273           WRITE(MSTU(11),5200) CHINIT
4274           WRITE(MSTU(11),5600)
4275           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4276           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4277           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4278         ENDIF
4279  
4280 C...Frame defined by user four-vectors.
4281       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
4282         MINT(111)=4
4283         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
4284         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
4285         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
4286         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
4287         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4288      &  (P(1,3)+P(2,3))**2
4289         IF(MSTP(122).GE.1) THEN
4290           LOFFS=(22-(LEN(2)+LEN(3)))/2
4291           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4292      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4293      &    ' user configuration'//' '
4294           WRITE(MSTU(11),5200) CHINIT
4295           WRITE(MSTU(11),5600)
4296           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4297           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4298           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4299         ENDIF
4300  
4301 C...Frame defined by user five-vectors.
4302       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
4303         MINT(111)=5
4304         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
4305      &  (P(1,3)+P(2,3))**2
4306         IF(MSTP(122).GE.1) THEN
4307           LOFFS=(22-(LEN(2)+LEN(3)))/2
4308           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4309      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4310      &    ' user configuration'//' '
4311           WRITE(MSTU(11),5200) CHINIT
4312           WRITE(MSTU(11),5600)
4313           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
4314           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
4315           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4316         ENDIF
4317  
4318 C...Frame defined by HEPRUP common block.
4319       ELSEIF(MINT(111).EQ.11) THEN
4320         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
4321      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
4322         IF(MSTP(122).GE.1) THEN
4323           LOFFS=(22-(LEN(2)+LEN(3)))/2
4324           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
4325      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
4326      &    ' user configuration'//' '
4327           WRITE(MSTU(11),5200) CHINIT
4328           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
4329           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
4330         ENDIF
4331  
4332 C...Unknown frame. Error for too low CM energy.
4333       ELSE
4334         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
4335         STOP
4336       ENDIF
4337       IF(S.LT.PARP(2)**2) THEN
4338         WRITE(MSTU(11),5900) SQRT(S)
4339         STOP
4340       ENDIF
4341  
4342 C...Formats for initialization and error information.
4343  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
4344      &1X,'Execution stopped!')
4345  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
4346      &1X,'Execution stopped!')
4347  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
4348  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
4349      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
4350  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
4351  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
4352      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
4353  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
4354      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
4355  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
4356  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
4357      &1X,'Execution stopped!')
4358  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
4359      &'generation.'/1X,'Execution stopped!')
4360  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
4361      &'GeV beam energies',13X,'I')
4362  
4363       RETURN
4364       END
4365  
4366 C*********************************************************************
4367  
4368 C...PYINKI
4369 C...Sets up kinematics, including rotations and boosts to/from CM frame.
4370  
4371       SUBROUTINE PYINKI(MODKI)
4372  
4373 C...Double precision and integer declarations.
4374       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4375       IMPLICIT INTEGER(I-N)
4376       INTEGER PYK,PYCHGE,PYCOMP
4377  
4378 C...User process initialization commonblock.
4379       INTEGER MAXPUP
4380       PARAMETER (MAXPUP=100)
4381       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4382       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4383       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4384      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4385      &LPRUP(MAXPUP)
4386       SAVE /HEPRUP/
4387  
4388 C...Commonblocks.
4389       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4390       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4391       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4392       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4393       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4394       COMMON/PYINT1/MINT(400),VINT(400)
4395       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
4396  
4397 C...Set initial flavour state.
4398       N=2
4399       DO 100 I=1,2
4400         K(I,1)=1
4401         K(I,2)=MINT(10+I)
4402         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
4403   100 CONTINUE
4404  
4405 C...Reset boost. Do kinematics for various cases.
4406       DO 110 J=6,10
4407         VINT(J)=0D0
4408   110 CONTINUE
4409  
4410 C...Set up kinematics for events defined in CM frame.
4411       IF(MINT(111).EQ.1) THEN
4412         WIN=VINT(290)
4413         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
4414         S=WIN**2
4415         P(1,5)=VINT(3)
4416         P(2,5)=VINT(4)
4417         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4418         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4419         P(1,1)=0D0
4420         P(1,2)=0D0
4421         P(2,1)=0D0
4422         P(2,2)=0D0
4423         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
4424      &  (4D0*S))
4425         P(2,3)=-P(1,3)
4426         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
4427         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
4428  
4429 C...Set up kinematics for fixed target events.
4430       ELSEIF(MINT(111).EQ.2) THEN
4431         WIN=VINT(290)
4432         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
4433         P(1,5)=VINT(3)
4434         P(2,5)=VINT(4)
4435         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4436         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4437         P(1,1)=0D0
4438         P(1,2)=0D0
4439         P(2,1)=0D0
4440         P(2,2)=0D0
4441         P(1,3)=WIN
4442         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
4443         P(2,3)=0D0
4444         P(2,4)=P(2,5)
4445         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
4446         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
4447         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
4448  
4449 C...Set up kinematics for events in user-defined frame.
4450       ELSEIF(MINT(111).EQ.3) THEN
4451         P(1,5)=VINT(3)
4452         P(2,5)=VINT(4)
4453         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4454         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4455         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
4456         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
4457         DO 120 J=1,3
4458           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4459   120   CONTINUE
4460         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4461         VINT(7)=PYANGL(P(1,1),P(1,2))
4462         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4463         VINT(6)=PYANGL(P(1,3),P(1,1))
4464         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4465         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
4466  
4467 C...Set up kinematics for events with user-defined four-vectors.
4468       ELSEIF(MINT(111).EQ.4) THEN
4469         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
4470         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
4471         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
4472         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
4473         DO 130 J=1,3
4474           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4475   130   CONTINUE
4476         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4477         VINT(7)=PYANGL(P(1,1),P(1,2))
4478         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4479         VINT(6)=PYANGL(P(1,3),P(1,1))
4480         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4481         S=(P(1,4)+P(2,4))**2
4482  
4483 C...Set up kinematics for events with user-defined five-vectors.
4484       ELSEIF(MINT(111).EQ.5) THEN
4485         DO 140 J=1,3
4486           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
4487   140   CONTINUE
4488         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
4489         VINT(7)=PYANGL(P(1,1),P(1,2))
4490         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
4491         VINT(6)=PYANGL(P(1,3),P(1,1))
4492         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
4493         S=(P(1,4)+P(2,4))**2
4494  
4495 C...Set up kinematics for events with external user processes.
4496       ELSEIF(MINT(111).EQ.11) THEN
4497         P(1,5)=VINT(3)
4498         P(2,5)=VINT(4)
4499         IF(MINT(141).NE.0) P(1,5)=VINT(303)
4500         IF(MINT(142).NE.0) P(2,5)=VINT(304)
4501         P(1,1)=0D0
4502         P(1,2)=0D0
4503         P(2,1)=0D0
4504         P(2,2)=0D0
4505         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
4506         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
4507         P(1,4)=EBMUP(1)
4508         P(2,4)=EBMUP(2)
4509         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
4510         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
4511         S=(P(1,4)+P(2,4))**2
4512       ENDIF
4513  
4514 C...Return or error for too low CM energy.
4515       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
4516         IF(MSTP(172).LE.1) THEN
4517           CALL PYERRM(23,
4518      &    '(PYINKI:) too low invariant mass in this event')
4519         ELSE
4520           MSTI(61)=1
4521           RETURN
4522         ENDIF
4523       ENDIF
4524  
4525 C...Save information on incoming particles.
4526       VINT(1)=SQRT(S)
4527       VINT(2)=S
4528       IF(MINT(111).GE.4) THEN
4529         IF(MINT(141).EQ.0) THEN
4530           VINT(3)=P(1,5)
4531           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
4532         ELSE
4533           VINT(303)=P(1,5)
4534         ENDIF
4535         IF(MINT(142).EQ.0) THEN
4536           VINT(4)=P(2,5)
4537           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
4538         ELSE
4539           VINT(304)=P(2,5)
4540         ENDIF
4541       ENDIF
4542       VINT(5)=P(1,3)
4543       IF(MODKI.EQ.0) VINT(289)=S
4544       DO 150 J=1,5
4545         V(1,J)=0D0
4546         V(2,J)=0D0
4547         VINT(290+J)=P(1,J)
4548         VINT(295+J)=P(2,J)
4549   150 CONTINUE
4550  
4551 C...Store pT cut-off and related constants to be used in generation.
4552       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
4553       IF(MSTP(82).LE.1) THEN
4554         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
4555       ELSE
4556         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
4557       ENDIF
4558       VINT(149)=4D0*PTMN**2/S
4559       VINT(154)=PTMN
4560  
4561       RETURN
4562       END
4563  
4564 C*********************************************************************
4565  
4566 C...PYINPR
4567 C...Selects partonic subprocesses to be included in the simulation.
4568  
4569       SUBROUTINE PYINPR
4570  
4571 C...Double precision and integer declarations.
4572       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4573       IMPLICIT INTEGER(I-N)
4574       INTEGER PYK,PYCHGE,PYCOMP
4575  
4576 C...User process initialization commonblock.
4577       INTEGER MAXPUP
4578       PARAMETER (MAXPUP=100)
4579       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4580       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4581       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4582      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4583      &LPRUP(MAXPUP)
4584       SAVE /HEPRUP/
4585  
4586 C...Commonblocks and character variables.
4587       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4588       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4589       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4590       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4591       COMMON/PYINT1/MINT(400),VINT(400)
4592       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4593       COMMON/PYINT6/PROC(0:500)
4594       CHARACTER PROC*28
4595       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
4596      &/PYINT6/
4597       CHARACTER CHIPR*10
4598  
4599 C...Reset processes to be included.
4600       IF(MSEL.NE.0) THEN
4601         DO 100 I=1,500
4602           MSUB(I)=0
4603   100   CONTINUE
4604       ENDIF
4605  
4606 C...Set running pTmin scale.
4607       IF(MSTP(82).LE.1) THEN
4608         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
4609       ELSE
4610         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
4611       ENDIF
4612  
4613 C...Begin by assuming incoming photon to enter subprocess.
4614       IF(MINT(11).EQ.22) MINT(15)=22
4615       IF(MINT(12).EQ.22) MINT(16)=22
4616  
4617 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
4618       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
4619         MSUB(10)=1
4620         MINT(123)=MINT(122)+1
4621  
4622 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
4623 C...allow mixture.
4624 C...Here also set a few parameters otherwise normally not touched.
4625       ELSEIF(MINT(121).GT.1) THEN
4626  
4627 C...Parton distributions dampened at small Q2; go to low energies,
4628 C...alpha_s <1; no minimum pT cut-off a priori.
4629         IF(MSTP(18).EQ.2) THEN
4630           MSTP(57)=3
4631           PARP(2)=2D0
4632           PARU(115)=1D0
4633           CKIN(5)=0.2D0
4634           CKIN(6)=0.2D0
4635         ENDIF
4636  
4637 C...Define pT cut-off parameters and whether run involves low-pT.
4638         PTMVMD=PTMRUN
4639         VINT(154)=PTMVMD
4640         PTMDIR=PTMVMD
4641         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
4642         PTMANO=PTMVMD
4643         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
4644      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
4645         IPTL=1
4646         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
4647         IF(MSEL.EQ.2) IPTL=1
4648  
4649 C...Set up for p/gamma * gamma; real or virtual photons.
4650         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
4651      &  MSTP(14).EQ.30)) THEN
4652  
4653 C...Set up for p/VMD * VMD.
4654         IF(MINT(122).EQ.1) THEN
4655           MINT(123)=2
4656           MSUB(11)=1
4657           MSUB(12)=1
4658           MSUB(13)=1
4659           MSUB(28)=1
4660           MSUB(53)=1
4661           MSUB(68)=1
4662           IF(IPTL.EQ.1) MSUB(95)=1
4663           IF(MSEL.EQ.2) THEN
4664             MSUB(91)=1
4665             MSUB(92)=1
4666             MSUB(93)=1
4667             MSUB(94)=1
4668           ENDIF
4669           IF(IPTL.EQ.1) CKIN(3)=0D0
4670  
4671 C...Set up for p/VMD * direct gamma.
4672         ELSEIF(MINT(122).EQ.2) THEN
4673           MINT(123)=0
4674           IF(MINT(121).EQ.6) MINT(123)=5
4675           MSUB(131)=1
4676           MSUB(132)=1
4677           MSUB(135)=1
4678           MSUB(136)=1
4679           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4680  
4681 C...Set up for p/VMD * anomalous gamma.
4682         ELSEIF(MINT(122).EQ.3) THEN
4683           MINT(123)=3
4684           IF(MINT(121).EQ.6) MINT(123)=7
4685           MSUB(11)=1
4686           MSUB(12)=1
4687           MSUB(13)=1
4688           MSUB(28)=1
4689           MSUB(53)=1
4690           MSUB(68)=1
4691           IF(IPTL.EQ.1) MSUB(95)=1
4692           IF(MSEL.EQ.2) THEN
4693             MSUB(91)=1
4694             MSUB(92)=1
4695             MSUB(93)=1
4696             MSUB(94)=1
4697           ENDIF
4698           IF(IPTL.EQ.1) CKIN(3)=0D0
4699  
4700 C...Set up for DIS * p.
4701         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
4702      &  IABS(MINT(12)).GT.100)) THEN
4703           MINT(123)=8
4704           IF(IPTL.EQ.1) MSUB(99)=1
4705  
4706 C...Set up for direct * direct gamma (switch off leptons).
4707         ELSEIF(MINT(122).EQ.4) THEN
4708           MINT(123)=0
4709           MSUB(137)=1
4710           MSUB(138)=1
4711           MSUB(139)=1
4712           MSUB(140)=1
4713           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4714             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4715   110     CONTINUE
4716           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4717  
4718 C...Set up for direct * anomalous gamma.
4719         ELSEIF(MINT(122).EQ.5) THEN
4720           MINT(123)=6
4721           MSUB(131)=1
4722           MSUB(132)=1
4723           MSUB(135)=1
4724           MSUB(136)=1
4725           IF(IPTL.EQ.1) CKIN(3)=PTMANO
4726  
4727 C...Set up for anomalous * anomalous gamma.
4728         ELSEIF(MINT(122).EQ.6) THEN
4729           MINT(123)=3
4730           MSUB(11)=1
4731           MSUB(12)=1
4732           MSUB(13)=1
4733           MSUB(28)=1
4734           MSUB(53)=1
4735           MSUB(68)=1
4736           IF(IPTL.EQ.1) MSUB(95)=1
4737           IF(MSEL.EQ.2) THEN
4738             MSUB(91)=1
4739             MSUB(92)=1
4740             MSUB(93)=1
4741             MSUB(94)=1
4742           ENDIF
4743           IF(IPTL.EQ.1) CKIN(3)=0D0
4744         ENDIF
4745  
4746 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
4747         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
4748  
4749 C...Set up for direct * direct gamma (switch off leptons).
4750         IF(MINT(122).EQ.1) THEN
4751           MINT(123)=0
4752           MSUB(137)=1
4753           MSUB(138)=1
4754           MSUB(139)=1
4755           MSUB(140)=1
4756           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4757             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4758   120     CONTINUE
4759           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4760  
4761 C...Set up for direct * VMD and VMD * direct gamma.
4762         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
4763           MINT(123)=5
4764           MSUB(131)=1
4765           MSUB(132)=1
4766           MSUB(135)=1
4767           MSUB(136)=1
4768           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4769  
4770 C...Set up for direct * anomalous and anomalous * direct gamma.
4771         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
4772           MINT(123)=6
4773           MSUB(131)=1
4774           MSUB(132)=1
4775           MSUB(135)=1
4776           MSUB(136)=1
4777           IF(IPTL.EQ.1) CKIN(3)=PTMANO
4778  
4779 C...Set up for VMD*VMD.
4780         ELSEIF(MINT(122).EQ.5) THEN
4781           MINT(123)=2
4782           MSUB(11)=1
4783           MSUB(12)=1
4784           MSUB(13)=1
4785           MSUB(28)=1
4786           MSUB(53)=1
4787           MSUB(68)=1
4788           IF(IPTL.EQ.1) MSUB(95)=1
4789           IF(MSEL.EQ.2) THEN
4790             MSUB(91)=1
4791             MSUB(92)=1
4792             MSUB(93)=1
4793             MSUB(94)=1
4794           ENDIF
4795           IF(IPTL.EQ.1) CKIN(3)=0D0
4796  
4797 C...Set up for VMD * anomalous and anomalous * VMD gamma.
4798         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
4799           MINT(123)=7
4800           MSUB(11)=1
4801           MSUB(12)=1
4802           MSUB(13)=1
4803           MSUB(28)=1
4804           MSUB(53)=1
4805           MSUB(68)=1
4806           IF(IPTL.EQ.1) MSUB(95)=1
4807           IF(MSEL.EQ.2) THEN
4808             MSUB(91)=1
4809             MSUB(92)=1
4810             MSUB(93)=1
4811             MSUB(94)=1
4812           ENDIF
4813           IF(IPTL.EQ.1) CKIN(3)=0D0
4814  
4815 C...Set up for anomalous * anomalous gamma.
4816         ELSEIF(MINT(122).EQ.9) THEN
4817           MINT(123)=3
4818           MSUB(11)=1
4819           MSUB(12)=1
4820           MSUB(13)=1
4821           MSUB(28)=1
4822           MSUB(53)=1
4823           MSUB(68)=1
4824           IF(IPTL.EQ.1) MSUB(95)=1
4825           IF(MSEL.EQ.2) THEN
4826             MSUB(91)=1
4827             MSUB(92)=1
4828             MSUB(93)=1
4829             MSUB(94)=1
4830           ENDIF
4831           IF(IPTL.EQ.1) CKIN(3)=0D0
4832  
4833 C...Set up for DIS * VMD and VMD * DIS gamma.
4834         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
4835           MINT(123)=8
4836           IF(IPTL.EQ.1) MSUB(99)=1
4837  
4838 C...Set up for DIS * anomalous and anomalous * DIS gamma.
4839         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
4840           MINT(123)=9
4841           IF(IPTL.EQ.1) MSUB(99)=1
4842         ENDIF
4843  
4844 C...Set up for gamma* * p; virtual photons = dir, res.
4845         ELSEIF(MINT(121).EQ.2) THEN
4846  
4847 C...Set up for direct * p.
4848         IF(MINT(122).EQ.1) THEN
4849           MINT(123)=0
4850           MSUB(131)=1
4851           MSUB(132)=1
4852           MSUB(135)=1
4853           MSUB(136)=1
4854           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4855  
4856 C...Set up for resolved * p.
4857         ELSEIF(MINT(122).EQ.2) THEN
4858           MINT(123)=1
4859           MSUB(11)=1
4860           MSUB(12)=1
4861           MSUB(13)=1
4862           MSUB(28)=1
4863           MSUB(53)=1
4864           MSUB(68)=1
4865           IF(IPTL.EQ.1) MSUB(95)=1
4866           IF(MSEL.EQ.2) THEN
4867             MSUB(91)=1
4868             MSUB(92)=1
4869             MSUB(93)=1
4870             MSUB(94)=1
4871           ENDIF
4872           IF(IPTL.EQ.1) CKIN(3)=0D0
4873         ENDIF
4874  
4875 C...Set up for gamma* * gamma*; virtual photons = dir, res.
4876         ELSEIF(MINT(121).EQ.4) THEN
4877  
4878 C...Set up for direct * direct gamma (switch off leptons).
4879         IF(MINT(122).EQ.1) THEN
4880           MINT(123)=0
4881           MSUB(137)=1
4882           MSUB(138)=1
4883           MSUB(139)=1
4884           MSUB(140)=1
4885           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
4886             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
4887   130     CONTINUE
4888           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4889  
4890 C...Set up for direct * resolved and resolved * direct gamma.
4891         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
4892           MINT(123)=5
4893           MSUB(131)=1
4894           MSUB(132)=1
4895           MSUB(135)=1
4896           MSUB(136)=1
4897           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
4898  
4899 C...Set up for resolved * resolved gamma.
4900         ELSEIF(MINT(122).EQ.4) THEN
4901           MINT(123)=2
4902           MSUB(11)=1
4903           MSUB(12)=1
4904           MSUB(13)=1
4905           MSUB(28)=1
4906           MSUB(53)=1
4907           MSUB(68)=1
4908           IF(IPTL.EQ.1) MSUB(95)=1
4909           IF(MSEL.EQ.2) THEN
4910             MSUB(91)=1
4911             MSUB(92)=1
4912             MSUB(93)=1
4913             MSUB(94)=1
4914           ENDIF
4915           IF(IPTL.EQ.1) CKIN(3)=0D0
4916         ENDIF
4917  
4918 C...End of special set up for gamma-p and gamma-gamma.
4919         ENDIF
4920         CKIN(1)=2D0*CKIN(3)
4921       ENDIF
4922  
4923 C...Flavour information for individual beams.
4924       DO 140 I=1,2
4925         MINT(40+I)=1
4926         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
4927         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
4928         MINT(44+I)=MINT(40+I)
4929         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
4930      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
4931   140 CONTINUE
4932  
4933 C...If two real gammas, whereof one direct, pick the first.
4934 C...For two virtual photons, keep requested order.
4935       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
4936         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
4937           MINT(41)=1
4938           MINT(45)=1
4939         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
4940      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
4941           MINT(41)=1
4942           MINT(45)=1
4943         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
4944      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
4945           MINT(42)=1
4946           MINT(46)=1
4947         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
4948      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
4949           MINT(41)=1
4950           MINT(45)=1
4951         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
4952      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
4953           MINT(42)=1
4954           MINT(46)=1
4955         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
4956           MINT(41)=1
4957           MINT(45)=1
4958         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
4959           MINT(42)=1
4960           MINT(46)=1
4961         ENDIF
4962       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
4963         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
4964           IF(MINT(11).EQ.22) THEN
4965             MINT(41)=1
4966             MINT(45)=1
4967           ELSE
4968             MINT(42)=1
4969             MINT(46)=1
4970           ENDIF
4971         ENDIF
4972         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
4973      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
4974       ENDIF
4975  
4976 C...Flavour information on combination of incoming particles.
4977       MINT(43)=2*MINT(41)+MINT(42)-2
4978       MINT(44)=MINT(43)
4979       IF(MINT(123).LE.0) THEN
4980         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
4981         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
4982       ELSEIF(MINT(123).LE.3) THEN
4983         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
4984         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
4985       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
4986         MINT(43)=4
4987         MINT(44)=1
4988       ENDIF
4989       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
4990       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
4991       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
4992       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
4993       MINT(50)=0
4994       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) MINT(50)=1
4995       MINT(107)=0
4996       MINT(108)=0
4997       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
4998         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
4999      &  MINT(107)=2
5000         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
5001      &  MINT(107)=3
5002         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
5003         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
5004      &  MINT(122).EQ.10) MINT(108)=2
5005         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
5006      &  MINT(122).EQ.11) MINT(108)=3
5007         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
5008       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
5009         IF(MINT(122).GE.3) MINT(107)=1
5010         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
5011       ELSEIF(MINT(121).EQ.2) THEN
5012         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
5013         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
5014       ELSE
5015         IF(MINT(11).EQ.22) THEN
5016           MINT(107)=MINT(123)
5017           IF(MINT(123).GE.4) MINT(107)=0
5018           IF(MINT(123).EQ.7) MINT(107)=2
5019           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
5020           IF(MSTP(14).EQ.28) MINT(107)=2
5021           IF(MSTP(14).EQ.29) MINT(107)=3
5022           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
5023      &    MINT(107)=4
5024         ENDIF
5025         IF(MINT(12).EQ.22) THEN
5026           MINT(108)=MINT(123)
5027           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
5028           IF(MINT(123).EQ.7) MINT(108)=3
5029           IF(MSTP(14).EQ.26) MINT(108)=2
5030           IF(MSTP(14).EQ.27) MINT(108)=3
5031           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
5032           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
5033      &    MINT(108)=4
5034         ENDIF
5035         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
5036      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
5037           MINTTP=MINT(107)
5038           MINT(107)=MINT(108)
5039           MINT(108)=MINTTP
5040         ENDIF
5041       ENDIF
5042       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
5043       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
5044  
5045 C...Select default processes according to incoming beams
5046 C...(already done for gamma-p and gamma-gamma with
5047 C...MSTP(14) = 10, 20, 25 or 30).
5048       IF(MINT(121).GT.1) THEN
5049       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
5050  
5051         IF(MINT(43).EQ.1) THEN
5052 C...Lepton + lepton -> gamma/Z0 or W.
5053           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
5054           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
5055  
5056         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
5057      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
5058 C...Unresolved photon + lepton: Compton scattering.
5059           MSUB(133)=1
5060           MSUB(134)=1
5061  
5062         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
5063      &  .OR.MINT(12).EQ.22)) THEN
5064 C...DIS as pure gamma* + f -> f process.
5065           MSUB(99)=1
5066  
5067         ELSEIF(MINT(43).LE.3) THEN
5068 C...Lepton + hadron: deep inelastic scattering.
5069           MSUB(10)=1
5070  
5071         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
5072      &    MINT(12).EQ.22) THEN
5073 C...Two unresolved photons: fermion pair production,
5074 C...exclude lepton pairs.
5075           DO 150 ISUB=137,140
5076             MSUB(ISUB)=1
5077   150     CONTINUE
5078           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5079             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5080   160     CONTINUE
5081           PTMDIR=PTMRUN
5082           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
5083           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
5084           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
5085  
5086         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
5087      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
5088      &    MINT(12).EQ.22)) THEN
5089 C...Unresolved photon + hadron: photon-parton scattering.
5090           DO 170 ISUB=131,136
5091             MSUB(ISUB)=1
5092   170     CONTINUE
5093  
5094         ELSEIF(MSEL.EQ.1) THEN
5095 C...High-pT QCD processes:
5096           MSUB(11)=1
5097           MSUB(12)=1
5098           MSUB(13)=1
5099           MSUB(28)=1
5100           MSUB(53)=1
5101           MSUB(68)=1
5102           PTMN=PTMRUN
5103           VINT(154)=PTMN
5104           IF(CKIN(3).LT.PTMN) MSUB(95)=1
5105           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
5106  
5107         ELSE
5108 C...All QCD processes:
5109           MSUB(11)=1
5110           MSUB(12)=1
5111           MSUB(13)=1
5112           MSUB(28)=1
5113           MSUB(53)=1
5114           MSUB(68)=1
5115           MSUB(91)=1
5116           MSUB(92)=1
5117           MSUB(93)=1
5118           MSUB(94)=1
5119           MSUB(95)=1
5120         ENDIF
5121  
5122       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
5123 C...Heavy quark production.
5124         MSUB(81)=1
5125         MSUB(82)=1
5126         MSUB(84)=1
5127         DO 180 J=1,MIN(8,MDCY(21,3))
5128           MDME(MDCY(21,2)+J-1,1)=0
5129   180   CONTINUE
5130         MDME(MDCY(21,2)+MSEL-1,1)=1
5131         MSUB(85)=1
5132         DO 190 J=1,MIN(12,MDCY(22,3))
5133           MDME(MDCY(22,2)+J-1,1)=0
5134   190   CONTINUE
5135         MDME(MDCY(22,2)+MSEL-1,1)=1
5136  
5137       ELSEIF(MSEL.EQ.10) THEN
5138 C...Prompt photon production:
5139         MSUB(14)=1
5140         MSUB(18)=1
5141         MSUB(29)=1
5142  
5143       ELSEIF(MSEL.EQ.11) THEN
5144 C...Z0/gamma* production:
5145         MSUB(1)=1
5146  
5147       ELSEIF(MSEL.EQ.12) THEN
5148 C...W+/- production:
5149         MSUB(2)=1
5150  
5151       ELSEIF(MSEL.EQ.13) THEN
5152 C...Z0 + jet:
5153         MSUB(15)=1
5154         MSUB(30)=1
5155  
5156       ELSEIF(MSEL.EQ.14) THEN
5157 C...W+/- + jet:
5158         MSUB(16)=1
5159         MSUB(31)=1
5160  
5161       ELSEIF(MSEL.EQ.15) THEN
5162 C...Z0 & W+/- pair production:
5163         MSUB(19)=1
5164         MSUB(20)=1
5165         MSUB(22)=1
5166         MSUB(23)=1
5167         MSUB(25)=1
5168  
5169       ELSEIF(MSEL.EQ.16) THEN
5170 C...h0 production:
5171         MSUB(3)=1
5172         MSUB(102)=1
5173         MSUB(103)=1
5174         MSUB(123)=1
5175         MSUB(124)=1
5176  
5177       ELSEIF(MSEL.EQ.17) THEN
5178 C...h0 & Z0 or W+/- pair production:
5179         MSUB(24)=1
5180         MSUB(26)=1
5181  
5182       ELSEIF(MSEL.EQ.18) THEN
5183 C...h0 production; interesting processes in e+e-.
5184         MSUB(24)=1
5185         MSUB(103)=1
5186         MSUB(123)=1
5187         MSUB(124)=1
5188  
5189       ELSEIF(MSEL.EQ.19) THEN
5190 C...h0, H0 and A0 production; interesting processes in e+e-.
5191         MSUB(24)=1
5192         MSUB(103)=1
5193         MSUB(123)=1
5194         MSUB(124)=1
5195         MSUB(153)=1
5196         MSUB(171)=1
5197         MSUB(173)=1
5198         MSUB(174)=1
5199         MSUB(158)=1
5200         MSUB(176)=1
5201         MSUB(178)=1
5202         MSUB(179)=1
5203  
5204       ELSEIF(MSEL.EQ.21) THEN
5205 C...Z'0 production:
5206         MSUB(141)=1
5207  
5208       ELSEIF(MSEL.EQ.22) THEN
5209 C...W'+/- production:
5210         MSUB(142)=1
5211  
5212       ELSEIF(MSEL.EQ.23) THEN
5213 C...H+/- production:
5214         MSUB(143)=1
5215  
5216       ELSEIF(MSEL.EQ.24) THEN
5217 C...R production:
5218         MSUB(144)=1
5219  
5220       ELSEIF(MSEL.EQ.25) THEN
5221 C...LQ (leptoquark) production.
5222         MSUB(145)=1
5223         MSUB(162)=1
5224         MSUB(163)=1
5225         MSUB(164)=1
5226  
5227       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
5228 C...Production of one heavy quark (W exchange):
5229         MSUB(83)=1
5230         DO 200 J=1,MIN(8,MDCY(21,3))
5231           MDME(MDCY(21,2)+J-1,1)=0
5232   200   CONTINUE
5233         MDME(MDCY(21,2)+MSEL-31,1)=1
5234  
5235 CMRENNA++Define SUSY alternatives.
5236       ELSEIF(MSEL.EQ.39) THEN
5237 C...Turn on all SUSY processes.
5238         IF(MINT(43).EQ.4) THEN
5239 C...Hadron-hadron processes.
5240           DO 210 I=201,301
5241             IF(ISET(I).GE.0) MSUB(I)=1
5242   210     CONTINUE
5243         ELSEIF(MINT(43).EQ.1) THEN
5244 C...Lepton-lepton processes: QED production of squarks.
5245           DO 220 I=201,214
5246             MSUB(I)=1
5247   220     CONTINUE
5248           MSUB(210)=0
5249           MSUB(211)=0
5250           MSUB(212)=0
5251           DO 230 I=216,228
5252             MSUB(I)=1
5253   230     CONTINUE
5254           DO 240 I=261,263
5255             MSUB(I)=1
5256   240     CONTINUE
5257           MSUB(277)=1
5258           MSUB(278)=1
5259         ENDIF
5260  
5261       ELSEIF(MSEL.EQ.40) THEN
5262 C...Gluinos and squarks.
5263         IF(MINT(43).EQ.4) THEN
5264           MSUB(243)=1
5265           MSUB(244)=1
5266           MSUB(258)=1
5267           MSUB(259)=1
5268           MSUB(261)=1
5269           MSUB(262)=1
5270           MSUB(264)=1
5271           MSUB(265)=1
5272           DO 250 I=271,296
5273             MSUB(I)=1
5274   250     CONTINUE
5275         ELSEIF(MINT(43).EQ.1) THEN
5276           MSUB(277)=1
5277           MSUB(278)=1
5278         ENDIF
5279  
5280       ELSEIF(MSEL.EQ.41) THEN
5281 C...Stop production.
5282         MSUB(261)=1
5283         MSUB(262)=1
5284         MSUB(263)=1
5285         IF(MINT(43).EQ.4) THEN
5286           MSUB(264)=1
5287           MSUB(265)=1
5288         ENDIF
5289  
5290       ELSEIF(MSEL.EQ.42) THEN
5291 C...Slepton production.
5292         DO 260 I=201,214
5293           MSUB(I)=1
5294   260   CONTINUE
5295         IF(MINT(43).NE.4) THEN
5296           MSUB(210)=0
5297           MSUB(211)=0
5298           MSUB(212)=0
5299         ENDIF
5300  
5301       ELSEIF(MSEL.EQ.43) THEN
5302 C...Neutralino/Chargino + Gluino/Squark.
5303         IF(MINT(43).EQ.4) THEN
5304           DO 270 I=237,242
5305             MSUB(I)=1
5306   270     CONTINUE
5307           DO 280 I=246,257
5308             MSUB(I)=1
5309   280     CONTINUE
5310         ENDIF
5311  
5312       ELSEIF(MSEL.EQ.44) THEN
5313 C...Neutralino/Chargino pair production.
5314         IF(MINT(43).EQ.4) THEN
5315           DO 290 I=216,236
5316             MSUB(I)=1
5317   290     CONTINUE
5318         ELSEIF(MINT(43).EQ.1) THEN
5319           DO 300 I=216,228
5320             MSUB(I)=1
5321   300     CONTINUE
5322         ENDIF
5323  
5324       ELSEIF(MSEL.EQ.45) THEN
5325 C...Sbottom production.
5326         MSUB(287)=1
5327         MSUB(288)=1
5328         IF(MINT(43).EQ.4) THEN
5329           DO 310 I=281,296
5330             MSUB(I)=1
5331   310     CONTINUE
5332         ENDIF
5333  
5334       ELSEIF(MSEL.EQ.50) THEN
5335 C...Pair production of technipions and gauge bosons.
5336         DO 320 I=361,368
5337           MSUB(I)=1
5338   320   CONTINUE
5339         IF(MINT(43).EQ.4) THEN
5340           DO 330 I=370,377
5341             MSUB(I)=1
5342   330     CONTINUE
5343         ENDIF
5344  
5345       ELSEIF(MSEL.EQ.51) THEN
5346 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
5347         DO 340 I=381,386
5348           MSUB(I)=1
5349   340   CONTINUE
5350       ENDIF
5351  
5352 C...Find heaviest new quark flavour allowed in processes 81-84.
5353       KFLQM=1
5354       DO 350 I=1,MIN(8,MDCY(21,3))
5355         IDC=I+MDCY(21,2)-1
5356         IF(MDME(IDC,1).LE.0) GOTO 350
5357         KFLQM=I
5358   350 CONTINUE
5359       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
5360      &KFLQM=MSTP(7)
5361       MINT(55)=KFLQM
5362       KFPR(81,1)=KFLQM
5363       KFPR(81,2)=KFLQM
5364       KFPR(82,1)=KFLQM
5365       KFPR(82,2)=KFLQM
5366       KFPR(83,1)=KFLQM
5367       KFPR(84,1)=KFLQM
5368       KFPR(84,2)=KFLQM
5369  
5370 C...Find heaviest new fermion flavour allowed in process 85.
5371       KFLFM=1
5372       DO 360 I=1,MIN(12,MDCY(22,3))
5373         IDC=I+MDCY(22,2)-1
5374         IF(MDME(IDC,1).LE.0) GOTO 360
5375         KFLFM=KFDP(IDC,1)
5376   360 CONTINUE
5377       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
5378      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
5379       MINT(56)=KFLFM
5380       KFPR(85,1)=KFLFM
5381       KFPR(85,2)=KFLFM
5382  
5383 C...Import relevant information on external user processes.
5384       IF(MINT(111).EQ.11) THEN
5385         IPYPR=0
5386         DO 390 IUP=1,NPRUP
5387 C...Find next empty PYTHIA process number slot and enable it.
5388   370     IPYPR=IPYPR+1
5389           IF(IPYPR.GT.500) CALL PYERRM(26,
5390      &    '(PYINPR.) no more empty slots for user processes')
5391           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
5392           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
5393           ISET(IPYPR)=11
5394 C...Overwrite KFPR with references back to process number and ID.
5395           KFPR(IPYPR,1)=IUP
5396           KFPR(IPYPR,2)=LPRUP(IUP)
5397 C...Process title.
5398           WRITE(CHIPR,'(I10)') LPRUP(IUP)
5399           ICHIN=1
5400           DO 380 ICH=1,9
5401             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
5402   380     CONTINUE
5403           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
5404 C...Switch on process.
5405           MSUB(IPYPR)=1
5406   390   CONTINUE
5407       ENDIF
5408  
5409       RETURN
5410       END
5411  
5412 C*********************************************************************
5413  
5414 C...PYXTOT
5415 C...Parametrizes total, elastic and diffractive cross-sections
5416 C...for different energies and beams. Donnachie-Landshoff for
5417 C...total and Schuler-Sjostrand for elastic and diffractive.
5418 C...Process code IPROC:
5419 C...=  1 : p + p;
5420 C...=  2 : pbar + p;
5421 C...=  3 : pi+ + p;
5422 C...=  4 : pi- + p;
5423 C...=  5 : pi0 + p;
5424 C...=  6 : phi + p;
5425 C...=  7 : J/psi + p;
5426 C...= 11 : rho + rho;
5427 C...= 12 : rho + phi;
5428 C...= 13 : rho + J/psi;
5429 C...= 14 : phi + phi;
5430 C...= 15 : phi + J/psi;
5431 C...= 16 : J/psi + J/psi;
5432 C...= 21 : gamma + p (DL);
5433 C...= 22 : gamma + p (VDM).
5434 C...= 23 : gamma + pi (DL);
5435 C...= 24 : gamma + pi (VDM);
5436 C...= 25 : gamma + gamma (DL);
5437 C...= 26 : gamma + gamma (VDM).
5438  
5439       SUBROUTINE PYXTOT
5440  
5441 C...Double precision and integer declarations.
5442       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5443       IMPLICIT INTEGER(I-N)
5444       INTEGER PYK,PYCHGE,PYCOMP
5445 C...Commonblocks.
5446       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5447       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5448       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5449       COMMON/PYINT1/MINT(400),VINT(400)
5450       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
5451       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
5452       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
5453 C...Local arrays.
5454       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
5455      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
5456      &CEFFD(10,9),SIGTMP(6,0:5)
5457  
5458 C...Common constants.
5459       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
5460      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
5461      &FACDD/0.0084D0/
5462  
5463 C...Number of multiple processes to be evaluated (= 0 : undefined).
5464       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
5465 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
5466       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
5467      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
5468      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
5469       DATA YPAR/
5470      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
5471      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
5472      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
5473  
5474 C...Beam and target hadron class:
5475 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
5476       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
5477       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
5478 C...Characteristic class masses, slope parameters, beta = sqrt(X).
5479       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
5480       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
5481       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
5482  
5483 C...Fitting constants used in parametrizations of diffractive results.
5484       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
5485       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
5486       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
5487      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
5488      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
5489      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
5490      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
5491      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
5492      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
5493      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
5494      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
5495      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
5496      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
5497       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
5498      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
5499      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
5500      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
5501      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
5502      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
5503      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
5504      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
5505      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
5506      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
5507      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
5508      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
5509      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
5510      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
5511      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
5512      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
5513  
5514 C...Parameters. Combinations of the energy.
5515       AEM=PARU(101)
5516       PMTH=PARP(102)
5517       S=VINT(2)
5518       SRT=VINT(1)
5519       SEPS=S**EPS
5520       SETA=S**ETA
5521       SLOG=LOG(S)
5522  
5523 C...Ratio of gamma/pi (for rescaling in parton distributions).
5524       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
5525      &(XPAR(5)*SEPS+YPAR(5)*SETA)
5526       VINT(317)=1D0
5527       IF(MINT(50).NE.1) RETURN
5528  
5529 C...Order flavours of incoming particles: KF1 < KF2.
5530       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
5531         KF1=IABS(MINT(11))
5532         KF2=IABS(MINT(12))
5533         IORD=1
5534       ELSE
5535         KF1=IABS(MINT(12))
5536         KF2=IABS(MINT(11))
5537         IORD=2
5538       ENDIF
5539       ISGN12=ISIGN(1,MINT(11)*MINT(12))
5540  
5541 C...Find process number (for lookup tables).
5542       IF(KF1.GT.1000) THEN
5543         IPROC=1
5544         IF(ISGN12.LT.0) IPROC=2
5545       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
5546         IPROC=3
5547         IF(ISGN12.LT.0) IPROC=4
5548         IF(KF1.EQ.111) IPROC=5
5549       ELSEIF(KF1.GT.100) THEN
5550         IPROC=11
5551       ELSEIF(KF2.GT.1000) THEN
5552         IPROC=21
5553         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
5554       ELSEIF(KF2.GT.100) THEN
5555         IPROC=23
5556         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
5557       ELSE
5558         IPROC=25
5559         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
5560       ENDIF
5561  
5562 C... Number of multiple processes to be stored; beam/target side.
5563       NPR=NPROC(IPROC)
5564       MINT(101)=1
5565       MINT(102)=1
5566       IF(NPR.EQ.3) THEN
5567         MINT(100+IORD)=4
5568       ELSEIF(NPR.EQ.6) THEN
5569         MINT(101)=4
5570         MINT(102)=4
5571       ENDIF
5572       N1=0
5573       IF(MINT(101).EQ.4) N1=4
5574       N2=0
5575       IF(MINT(102).EQ.4) N2=4
5576  
5577 C...Do not do any more for user-set or undefined cross-sections.
5578       IF(MSTP(31).LE.0) RETURN
5579       IF(NPR.EQ.0) CALL PYERRM(26,
5580      &'(PYXTOT:) cross section for this process not yet implemented')
5581  
5582 C...Parameters. Combinations of the energy.
5583       AEM=PARU(101)
5584       PMTH=PARP(102)
5585       S=VINT(2)
5586       SRT=VINT(1)
5587       SEPS=S**EPS
5588       SETA=S**ETA
5589       SLOG=LOG(S)
5590  
5591 C...Loop over multiple processes (for VDM).
5592       DO 110 I=1,NPR
5593         IF(NPR.EQ.1) THEN
5594           IPR=IPROC
5595         ELSEIF(NPR.EQ.3) THEN
5596           IPR=I+4
5597           IF(KF2.LT.1000) IPR=I+10
5598         ELSEIF(NPR.EQ.6) THEN
5599           IPR=I+10
5600         ENDIF
5601  
5602 C...Evaluate hadron species, mass, slope contribution and fit number.
5603         IHA=IHADA(IPR)
5604         IHB=IHADB(IPR)
5605         PMA=PMHAD(IHA)
5606         PMB=PMHAD(IHB)
5607         BHA=BHAD(IHA)
5608         BHB=BHAD(IHB)
5609         ISD=IFITSD(IPR)
5610         IDD=IFITDD(IPR)
5611  
5612 C...Skip if energy too low relative to masses.
5613         DO 100 J=0,5
5614           SIGTMP(I,J)=0D0
5615   100   CONTINUE
5616         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
5617  
5618 C...Total cross-section. Elastic slope parameter and cross-section.
5619         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
5620         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
5621         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
5622  
5623 C...Diffractive scattering A + B -> X + B.
5624         BSD=2D0*BHB
5625         SQML=(PMA+PMTH)**2
5626         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
5627         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
5628      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
5629         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
5630         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
5631      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
5632         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
5633  
5634 C...Diffractive scattering A + B -> A + X.
5635         BSD=2D0*BHA
5636         SQML=(PMB+PMTH)**2
5637         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
5638         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
5639      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
5640         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
5641         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
5642      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
5643         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
5644  
5645 C...Order single diffractive correctly.
5646         IF(IORD.EQ.2) THEN
5647           SIGSAV=SIGTMP(I,2)
5648           SIGTMP(I,2)=SIGTMP(I,3)
5649           SIGTMP(I,3)=SIGSAV
5650         ENDIF
5651  
5652 C...Double diffractive scattering A + B -> X1 + X2.
5653         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
5654         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
5655         SUM1=DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0)/(2D0*ALP)
5656         IF(YEFF.LE.0) SUM1=0D0
5657         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
5658         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
5659         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
5660         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
5661      &  (2D0*ALP)
5662         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
5663         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
5664         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
5665      &  (2D0*ALP)
5666         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
5667         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB*PMRC)))
5668         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
5669      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
5670         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
5671  
5672 C...Non-diffractive by unitarity.
5673         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
5674      &  SIGTMP(I,4)
5675   110 CONTINUE
5676  
5677 C...Put temporary results in output array: only one process.
5678       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
5679         DO 120 J=0,5
5680           SIGT(0,0,J)=SIGTMP(1,J)
5681   120   CONTINUE
5682  
5683 C...Beam multiple processes.
5684       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
5685         IF(MINT(107).EQ.2) THEN
5686           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
5687         ELSE
5688           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5689      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
5690         ENDIF
5691         IF(MSTP(20).GT.0) THEN
5692           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
5693         ENDIF
5694         DO 140 I=1,4
5695           IF(MINT(107).EQ.2) THEN
5696             CONV=(AEM/PARP(160+I))*VINT(317)
5697           ELSEIF(VINT(154).GT.PARP(15)) THEN
5698             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
5699      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5700           ELSE
5701             CONV=0D0
5702           ENDIF
5703           I1=MAX(1,I-1)
5704           DO 130 J=0,5
5705             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
5706   130     CONTINUE
5707   140   CONTINUE
5708         DO 150 J=0,5
5709           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
5710   150   CONTINUE
5711  
5712 C...Target multiple processes.
5713       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
5714         IF(MINT(108).EQ.2) THEN
5715           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
5716         ELSE
5717           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5718      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
5719         ENDIF
5720         IF(MSTP(20).GT.0) THEN
5721           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
5722         ENDIF
5723         DO 170 I=1,4
5724           IF(MINT(108).EQ.2) THEN
5725             CONV=(AEM/PARP(160+I))*VINT(317)
5726           ELSEIF(VINT(154).GT.PARP(15)) THEN
5727             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
5728      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5729           ELSE
5730             CONV=0D0
5731           ENDIF
5732           IV=MAX(1,I-1)
5733           DO 160 J=0,5
5734             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
5735   160     CONTINUE
5736   170   CONTINUE
5737         DO 180 J=0,5
5738           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
5739   180   CONTINUE
5740  
5741 C...Both beam and target multiple processes.
5742       ELSE
5743         IF(MINT(107).EQ.2) THEN
5744           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
5745         ELSE
5746           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
5747      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
5748         ENDIF
5749         IF(MINT(108).EQ.2) THEN
5750           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
5751         ELSE
5752           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
5753      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
5754         ENDIF
5755         IF(MSTP(20).GT.0) THEN
5756           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
5757      &    VINT(308)))**MSTP(20)
5758         ENDIF
5759         DO 210 I1=1,4
5760           DO 200 I2=1,4
5761             IF(MINT(107).EQ.2) THEN
5762               CONV=(AEM/PARP(160+I1))*VINT(317)
5763             ELSEIF(VINT(154).GT.PARP(15)) THEN
5764               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
5765      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
5766             ELSE
5767               CONV=0D0
5768             ENDIF
5769             IF(MINT(108).EQ.2) THEN
5770               CONV=CONV*(AEM/PARP(160+I2))
5771             ELSEIF(VINT(154).GT.PARP(15)) THEN
5772               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
5773      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
5774             ELSE
5775               CONV=0D0
5776             ENDIF
5777             IF(I1.LE.2) THEN
5778               IV=MAX(1,I2-1)
5779             ELSEIF(I2.LE.2) THEN
5780               IV=MAX(1,I1-1)
5781             ELSEIF(I1.EQ.I2) THEN
5782               IV=2*I1-2
5783             ELSE
5784               IV=5
5785             ENDIF
5786             DO 190 J=0,5
5787               JV=J
5788               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
5789               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
5790   190       CONTINUE
5791   200     CONTINUE
5792   210   CONTINUE
5793         DO 230 J=0,5
5794           DO 220 I=1,4
5795             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
5796             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
5797   220     CONTINUE
5798           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
5799   230   CONTINUE
5800       ENDIF
5801  
5802 C...Scale up uniformly for Donnachie-Landshoff parametrization.
5803       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
5804         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
5805         DO 260 I1=0,N1
5806           DO 250 I2=0,N2
5807             DO 240 J=0,5
5808               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
5809   240       CONTINUE
5810   250     CONTINUE
5811   260   CONTINUE
5812       ENDIF
5813  
5814       RETURN
5815       END
5816  
5817 C*********************************************************************
5818  
5819 C...PYMAXI
5820 C...Finds optimal set of coefficients for kinematical variable selection
5821 C...and the maximum of the part of the differential cross-section used
5822 C...in the event weighting.
5823  
5824       SUBROUTINE PYMAXI
5825  
5826 C...Double precision and integer declarations.
5827       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5828       IMPLICIT INTEGER(I-N)
5829       INTEGER PYK,PYCHGE,PYCOMP
5830 C...Parameter statement to help give large particle numbers.
5831       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
5832      &KEXCIT=4000000,KDIMEN=5000000)
5833  
5834 C...User process initialization commonblock.
5835       INTEGER MAXPUP
5836       PARAMETER (MAXPUP=100)
5837       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5838       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5839       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5840      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5841      &LPRUP(MAXPUP)
5842       SAVE /HEPRUP/
5843  
5844 C...Commonblocks.
5845       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5846       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5847       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5848       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5849       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5850       COMMON/PYINT1/MINT(400),VINT(400)
5851       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5852       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
5853       COMMON/PYINT4/MWID(500),WIDS(500,5)
5854       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
5855       COMMON/PYINT6/PROC(0:500)
5856       CHARACTER PROC*28
5857       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
5858       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
5859      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/
5860 C...Local arrays, character variables and data.
5861       CHARACTER CVAR(4)*4
5862       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
5863      &NAREL(7),WTREL(7),WTMAT(7,7),WTRELN(7),COEFU(7),COEFO(7),
5864      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2)
5865       DATA CVAR/'tau ','tau''','y*  ','cth '/
5866       DATA SIGSSM/3*0D0/
5867  
5868 C...Initial values and loop over subprocesses.
5869       NPOSI=0
5870       VINT(143)=1D0
5871       VINT(144)=1D0
5872       XSEC(0,1)=0D0
5873       DO 460 ISUB=1,500
5874         MINT(1)=ISUB
5875         MINT(51)=0
5876  
5877 C...Find maximum weight factors for photon flux.
5878         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
5879           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
5880         ENDIF
5881  
5882 C...Select subprocess to study: skip cases not applicable.
5883         IF(ISET(ISUB).EQ.11) THEN
5884           IF(MSUB(ISUB).NE.1) GOTO 460
5885 C...User process intialization: cross section model dependent.
5886           IF(IABS(IDWTUP).EQ.1) THEN
5887             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
5888      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
5889             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
5890           ELSE
5891             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
5892      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
5893      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
5894             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
5895      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
5896             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
5897           ENDIF
5898           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5899      &    WTGAGA*XSEC(ISUB,1)
5900           NPOSI=NPOSI+1
5901           GOTO 450
5902         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
5903           CALL PYSIGH(NCHN,SIGS)
5904           XSEC(ISUB,1)=SIGS
5905           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5906      &    WTGAGA*XSEC(ISUB,1)
5907           IF(MSUB(ISUB).NE.1) GOTO 460
5908           NPOSI=NPOSI+1
5909           GOTO 450
5910         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
5911           CALL PYSIGH(NCHN,SIGS)
5912           XSEC(ISUB,1)=SIGS
5913           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
5914      &    WTGAGA*XSEC(ISUB,1)
5915           IF(XSEC(ISUB,1).EQ.0D0) THEN
5916             MSUB(ISUB)=0
5917           ELSE
5918             NPOSI=NPOSI+1
5919           ENDIF
5920           GOTO 450
5921         ELSEIF(ISUB.EQ.96) THEN
5922           IF(MINT(50).EQ.0) GOTO 460
5923           IF(MSUB(95).NE.1.AND.MSTP(81).LE.0.AND.MSTP(131).LE.0)
5924      &    GOTO 460
5925           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
5926         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
5927      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
5928           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
5929         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
5930           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
5931         ELSE
5932           IF(MSUB(ISUB).NE.1) GOTO 460
5933         ENDIF
5934         ISTSB=ISET(ISUB)
5935         IF(ISUB.EQ.96) ISTSB=2
5936         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
5937         MWTXS=0
5938         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
5939      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
5940  
5941 C...Find resonances (explicit or implicit in cross-section).
5942         MINT(72)=0
5943         KFR1=0
5944         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
5945           KFR1=KFPR(ISUB,1)
5946         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
5947      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
5948           KFR1=23
5949         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
5950      &    .OR.ISUB.EQ.177) THEN
5951           KFR1=24
5952         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
5953           KFR1=25
5954           IF(MSTP(46).EQ.5) THEN
5955             KFR1=89
5956             PMAS(89,1)=PARP(45)
5957             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
5958           ENDIF
5959         ELSEIF(ISUB.EQ.194) THEN
5960           KFR1=KTECHN+113
5961         ELSEIF(ISUB.EQ.195) THEN
5962           KFR1=KTECHN+213
5963         ELSEIF(ISUB.GE.361.AND.ISUB.LE.368) THEN
5964           KFR1=KTECHN+113
5965         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
5966           KFR1=KTECHN+213
5967         ENDIF
5968         CKMX=CKIN(2)
5969         IF(CKMX.LE.0D0) CKMX=VINT(1)
5970         KCR1=PYCOMP(KFR1)
5971         IF(KFR1.NE.0) THEN
5972           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
5973      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
5974         ENDIF
5975         IF(KFR1.NE.0) THEN
5976           TAUR1=PMAS(KCR1,1)**2/VINT(2)
5977           IF(KFR1.EQ.KTECHN+113) THEN
5978             CALL PYTECM(S1,S2)
5979             TAUR1=S1/VINT(2)
5980           ENDIF
5981           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
5982           MINT(72)=1
5983           MINT(73)=KFR1
5984           VINT(73)=TAUR1
5985           VINT(74)=GAMR1
5986         ENDIF
5987         KFR2=0
5988         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.(ISUB.GE.364.AND.ISUB.LE.368))
5989      $  THEN
5990           KFR2=23
5991           IF(ISUB.EQ.194) THEN
5992             KFR2=KTECHN+223
5993           ELSEIF(ISUB.GE.364.AND.ISUB.LE.368) THEN
5994             KFR2=KTECHN+223
5995           ENDIF
5996           KCR2=PYCOMP(KFR2)
5997           TAUR2=PMAS(KCR2,1)**2/VINT(2)
5998           IF(KFR2.EQ.KTECHN+223) THEN
5999             CALL PYTECM(S1,S2)
6000             TAUR2=S2/VINT(2)
6001           ENDIF
6002           GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
6003           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
6004      &    CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) KFR2=0
6005           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
6006             MINT(72)=2
6007             MINT(74)=KFR2
6008             VINT(75)=TAUR2
6009             VINT(76)=GAMR2
6010           ELSEIF(KFR2.NE.0) THEN
6011             KFR1=KFR2
6012             TAUR1=TAUR2
6013             GAMR1=GAMR2
6014             MINT(72)=1
6015             MINT(73)=KFR1
6016             VINT(73)=TAUR1
6017             VINT(74)=GAMR1
6018             KFR2=0
6019           ENDIF
6020         ENDIF
6021  
6022 C...Find product masses and minimum pT of process.
6023         SQM3=0D0
6024         SQM4=0D0
6025         MINT(71)=0
6026         VINT(71)=CKIN(3)
6027         VINT(80)=1D0
6028         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
6029           NBW=0
6030           DO 110 I=1,2
6031             PMMN(I)=0D0
6032             IF(KFPR(ISUB,I).EQ.0) THEN
6033             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
6034      &        PARP(41)) THEN
6035               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
6036               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
6037             ELSE
6038               NBW=NBW+1
6039 C...This prevents SUSY/t particles from becoming too light.
6040               KFLW=KFPR(ISUB,I)
6041               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
6042                 KCW=PYCOMP(KFLW)
6043                 PMMN(I)=PMAS(KCW,1)
6044                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
6045                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
6046                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
6047      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
6048                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
6049      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
6050                     PMMN(I)=MIN(PMMN(I),PMSUM)
6051                   ENDIF
6052   100           CONTINUE
6053               ELSEIF(KFLW.EQ.6) THEN
6054                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
6055               ENDIF
6056             ENDIF
6057   110     CONTINUE
6058           IF(NBW.GE.1) THEN
6059             CKIN41=CKIN(41)
6060             CKIN43=CKIN(43)
6061             CKIN(41)=MAX(PMMN(1),CKIN(41))
6062             CKIN(43)=MAX(PMMN(2),CKIN(43))
6063             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
6064             CKIN(41)=CKIN41
6065             CKIN(43)=CKIN43
6066             IF(MINT(51).EQ.1) THEN
6067               WRITE(MSTU(11),5100) ISUB
6068               MSUB(ISUB)=0
6069               GOTO 460
6070             ENDIF
6071             SQM3=PQM3**2
6072             SQM4=PQM4**2
6073           ENDIF
6074           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
6075           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
6076           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
6077             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
6078           ELSEIF(ISUB.EQ.96) THEN
6079             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
6080           ENDIF
6081         ENDIF
6082         VINT(63)=SQM3
6083         VINT(64)=SQM4
6084  
6085 C...Prepare for additional variable choices in 2 -> 3.
6086         IF(ISTSB.EQ.5) THEN
6087           VINT(201)=0D0
6088           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
6089           VINT(206)=VINT(201)
6090           VINT(204)=PMAS(23,1)
6091           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
6092           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
6093           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
6094      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
6095           VINT(209)=VINT(204)
6096         ENDIF
6097  
6098 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
6099         NPTS(1)=2+2*MINT(72)
6100         IF(MINT(47).EQ.1) THEN
6101           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
6102         ELSEIF(MINT(47).GE.5) THEN
6103           IF(ISTSB.LE.2.OR.ISTSB.GT.5) NPTS(1)=NPTS(1)+1
6104         ENDIF
6105         NPTS(2)=1
6106         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
6107           IF(MINT(47).GE.2) NPTS(2)=2
6108           IF(MINT(47).GE.5) NPTS(2)=3
6109         ENDIF
6110         NPTS(3)=1
6111         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
6112           NPTS(3)=3
6113           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
6114           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
6115         ENDIF
6116         NPTS(4)=1
6117         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
6118         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
6119  
6120 C...Reset coefficients of cross-section weighting.
6121         DO 120 J=1,20
6122           COEF(ISUB,J)=0D0
6123   120   CONTINUE
6124         COEF(ISUB,1)=1D0
6125         COEF(ISUB,8)=0.5D0
6126         COEF(ISUB,9)=0.5D0
6127         COEF(ISUB,13)=1D0
6128         COEF(ISUB,18)=1D0
6129         MCTH=0
6130         MTAUP=0
6131         METAUP=0
6132         VINT(23)=0D0
6133         VINT(26)=0D0
6134         SIGSAM=0D0
6135  
6136 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
6137 C...in grid of phase space points.
6138         CALL PYKLIM(1)
6139         METAU=MINT(51)
6140         NACC=0
6141         DO 150 ITRY=1,NTRY
6142           MINT(51)=0
6143           IF(METAU.EQ.1) GOTO 150
6144           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
6145             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
6146             IF(MTAU.GT.2+2*MINT(72)) MTAU=7
6147             RTAU=0.5D0
6148 C...Special case when both resonances have same mass,
6149 C...as is often the case in process 194.
6150             IF(MINT(72).EQ.2) THEN
6151               IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
6152      &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
6153                 IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
6154                   RTAU=0.4D0
6155                 ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
6156                   RTAU=0.6D0
6157                 ENDIF
6158               ENDIF
6159             ENDIF
6160             CALL PYKMAP(1,MTAU,RTAU)
6161             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
6162             METAUP=MINT(51)
6163           ENDIF
6164           IF(METAUP.EQ.1) GOTO 150
6165           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
6166      &    .EQ.0) THEN
6167             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
6168             CALL PYKMAP(4,MTAUP,0.5D0)
6169           ENDIF
6170           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
6171             CALL PYKLIM(2)
6172             MEYST=MINT(51)
6173           ENDIF
6174           IF(MEYST.EQ.1) GOTO 150
6175           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
6176             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
6177             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
6178             CALL PYKMAP(2,MYST,0.5D0)
6179             CALL PYKLIM(3)
6180             MECTH=MINT(51)
6181           ENDIF
6182           IF(MECTH.EQ.1) GOTO 150
6183           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
6184             MCTH=1+MOD(ITRY-1,NPTS(4))
6185             CALL PYKMAP(3,MCTH,0.5D0)
6186           ENDIF
6187           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
6188  
6189 C...Store position and limits.
6190           MINT(51)=0
6191           CALL PYKLIM(0)
6192           IF(MINT(51).EQ.1) GOTO 150
6193           NACC=NACC+1
6194           MVARPT(NACC,1)=MTAU
6195           MVARPT(NACC,2)=MTAUP
6196           MVARPT(NACC,3)=MYST
6197           MVARPT(NACC,4)=MCTH
6198           DO 130 J=1,30
6199             VINTPT(NACC,J)=VINT(10+J)
6200   130     CONTINUE
6201  
6202 C...Normal case: calculate cross-section.
6203           IF(ISTSB.NE.5) THEN
6204             CALL PYSIGH(NCHN,SIGS)
6205             IF(MWTXS.EQ.1) THEN
6206               CALL PYEVWT(WTXS)
6207               SIGS=WTXS*SIGS
6208             ENDIF
6209  
6210 C..2 -> 3: find highest value out of a number of tries.
6211           ELSE
6212             SIGS=0D0
6213             DO 140 IKIN3=1,MSTP(129)
6214               CALL PYKMAP(5,0,0D0)
6215               IF(MINT(51).EQ.1) GOTO 140
6216               CALL PYSIGH(NCHN,SIGTMP)
6217               IF(MWTXS.EQ.1) THEN
6218                 CALL PYEVWT(WTXS)
6219                 SIGTMP=WTXS*SIGTMP
6220               ENDIF
6221               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6222   140       CONTINUE
6223           ENDIF
6224  
6225 C...Store cross-section.
6226           SIGSPT(NACC)=SIGS
6227           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
6228           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
6229      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
6230   150   CONTINUE
6231         IF(NACC.EQ.0) THEN
6232           WRITE(MSTU(11),5100) ISUB
6233           MSUB(ISUB)=0
6234           GOTO 460
6235         ELSEIF(SIGSAM.EQ.0D0) THEN
6236           WRITE(MSTU(11),5300) ISUB
6237           MSUB(ISUB)=0
6238           GOTO 460
6239         ENDIF
6240         IF(ISUB.NE.96) NPOSI=NPOSI+1
6241  
6242 C...Calculate integrals in tau over maximal phase space limits.
6243         TAUMIN=VINT(11)
6244         TAUMAX=VINT(31)
6245         ATAU1=LOG(TAUMAX/TAUMIN)
6246         IF(NPTS(1).GE.2) THEN
6247           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
6248         ENDIF
6249         IF(NPTS(1).GE.4) THEN
6250           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
6251           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
6252      &    GAMR1
6253         ENDIF
6254         IF(NPTS(1).GE.6) THEN
6255           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
6256           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
6257      &    GAMR2
6258         ENDIF
6259         IF(NPTS(1).GT.2+2*MINT(72)) THEN
6260           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
6261         ENDIF
6262  
6263 C...Reset. Sum up cross-sections in points calculated.
6264         DO 320 IVAR=1,4
6265           IF(NPTS(IVAR).EQ.1) GOTO 320
6266           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
6267           NBIN=NPTS(IVAR)
6268           DO 170 J1=1,NBIN
6269             NAREL(J1)=0
6270             WTREL(J1)=0D0
6271             COEFU(J1)=0D0
6272             DO 160 J2=1,NBIN
6273               WTMAT(J1,J2)=0D0
6274   160       CONTINUE
6275   170     CONTINUE
6276           DO 180 IACC=1,NACC
6277             IBIN=MVARPT(IACC,IVAR)
6278             IF(IVAR.EQ.1.AND.IBIN.EQ.7) IBIN=3+2*MINT(72)
6279             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
6280             NAREL(IBIN)=NAREL(IBIN)+1
6281             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
6282  
6283 C...Sum up tau cross-section pieces in points used.
6284             IF(IVAR.EQ.1) THEN
6285               TAU=VINTPT(IACC,11)
6286               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6287               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
6288               IF(NBIN.GE.4) THEN
6289                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
6290                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
6291      &          ((TAU-TAUR1)**2+GAMR1**2)
6292               ENDIF
6293               IF(NBIN.GE.6) THEN
6294                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
6295                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
6296      &          ((TAU-TAUR2)**2+GAMR2**2)
6297               ENDIF
6298               IF(NBIN.GT.2+2*MINT(72)) THEN
6299                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(ATAU1/ATAU7)*
6300      &          TAU/MAX(2D-10,1D0-TAU)
6301               ENDIF
6302  
6303 C...Sum up tau' cross-section pieces in points used.
6304             ELSEIF(IVAR.EQ.2) THEN
6305               TAU=VINTPT(IACC,11)
6306               TAUP=VINTPT(IACC,16)
6307               TAUPMN=VINTPT(IACC,6)
6308               TAUPMX=VINTPT(IACC,26)
6309               ATAUP1=LOG(TAUPMX/TAUPMN)
6310               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
6311               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6312               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
6313      &        (1D0-TAU/TAUP)**3/TAUP
6314               IF(NBIN.GE.3) THEN
6315                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
6316                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
6317      &          TAUP/MAX(2D-10,1D0-TAUP)
6318               ENDIF
6319  
6320 C...Sum up y* cross-section pieces in points used.
6321             ELSEIF(IVAR.EQ.3) THEN
6322               YST=VINTPT(IACC,12)
6323               YSTMIN=VINTPT(IACC,2)
6324               YSTMAX=VINTPT(IACC,22)
6325               AYST0=YSTMAX-YSTMIN
6326               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
6327               AYST2=AYST1
6328               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
6329               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
6330               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
6331               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
6332               IF(MINT(45).EQ.3) THEN
6333                 TAUE=VINTPT(IACC,11)
6334                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
6335                 YST0=-0.5D0*LOG(TAUE)
6336                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
6337      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
6338                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
6339      &          MAX(1D-10,1D0-EXP(YST-YST0))
6340               ENDIF
6341               IF(MINT(46).EQ.3) THEN
6342                 TAUE=VINTPT(IACC,11)
6343                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
6344                 YST0=-0.5D0*LOG(TAUE)
6345                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
6346      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
6347                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
6348      &          MAX(1D-10,1D0-EXP(-YST-YST0))
6349               ENDIF
6350  
6351 C...Sum up cos(theta-hat) cross-section pieces in points used.
6352             ELSE
6353               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
6354               RSQM=1D0+RM34
6355               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
6356               CTHMIN=-CTHMAX
6357               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
6358      &        (TAUMAX*VINT(2)))
6359               ACTH1=CTHMAX-CTHMIN
6360               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
6361               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
6362               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
6363               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
6364               CTH=VINTPT(IACC,13)
6365               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
6366               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
6367      &        MAX(RM34,RSQM-CTH)
6368               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
6369      &        MAX(RM34,RSQM+CTH)
6370               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
6371      &        MAX(RM34,RSQM-CTH)**2
6372               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
6373      &        MAX(RM34,RSQM+CTH)**2
6374             ENDIF
6375   180     CONTINUE
6376  
6377 C...Check that equation system solvable.
6378           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
6379           MSOLV=1
6380           WTRELS=0D0
6381           DO 190 IBIN=1,NBIN
6382             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
6383      &      IRED=1,NBIN),WTREL(IBIN)
6384             IF(NAREL(IBIN).EQ.0) MSOLV=0
6385             WTRELS=WTRELS+WTREL(IBIN)
6386   190     CONTINUE
6387           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
6388  
6389 C...Solve to find relative importance of cross-section pieces.
6390           IF(MSOLV.EQ.1) THEN
6391             DO 200 IBIN=1,NBIN
6392               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
6393   200       CONTINUE
6394             DO 230 IRED=1,NBIN-1
6395               DO 220 IBIN=IRED+1,NBIN
6396                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
6397                   MSOLV=0
6398                   GOTO 260
6399                 ENDIF
6400                 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
6401                 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
6402                 DO 210 ICOE=IRED,NBIN
6403                   WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
6404   210           CONTINUE
6405   220         CONTINUE
6406   230       CONTINUE
6407             DO 250 IRED=NBIN,1,-1
6408               DO 240 ICOE=IRED+1,NBIN
6409                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
6410   240         CONTINUE
6411               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
6412   250       CONTINUE
6413           ENDIF
6414  
6415 C...Share evenly if failure.
6416   260     IF(MSOLV.EQ.0) THEN
6417             DO 270 IBIN=1,NBIN
6418               COEFU(IBIN)=1D0
6419               WTRELN(IBIN)=0.1D0
6420               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
6421      &        WTREL(IBIN)/WTRELS)
6422   270       CONTINUE
6423           ENDIF
6424  
6425 C...Normalize coefficients, with piece shared democratically.
6426           COEFSU=0D0
6427           WTRELS=0D0
6428           DO 280 IBIN=1,NBIN
6429             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
6430             COEFSU=COEFSU+COEFU(IBIN)
6431             WTRELS=WTRELS+WTRELN(IBIN)
6432   280     CONTINUE
6433           IF(COEFSU.GT.0D0) THEN
6434             DO 290 IBIN=1,NBIN
6435               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
6436      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
6437   290       CONTINUE
6438           ELSE
6439             DO 300 IBIN=1,NBIN
6440               COEFO(IBIN)=1D0/NBIN
6441   300       CONTINUE
6442           ENDIF
6443           IF(IVAR.EQ.1) IOFF=0
6444           IF(IVAR.EQ.2) IOFF=17
6445           IF(IVAR.EQ.3) IOFF=7
6446           IF(IVAR.EQ.4) IOFF=12
6447           DO 310 IBIN=1,NBIN
6448             ICOF=IOFF+IBIN
6449             IF(IVAR.EQ.1.AND.IBIN.GT.2+2*MINT(72)) ICOF=7
6450             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
6451             COEF(ISUB,ICOF)=COEFO(IBIN)
6452   310     CONTINUE
6453           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
6454      &    (COEFO(IBIN),IBIN=1,NBIN)
6455   320   CONTINUE
6456  
6457 C...Find two most promising maxima among points previously determined.
6458         DO 330 J=1,4
6459           IACCMX(J)=0
6460           SIGSMX(J)=0D0
6461   330   CONTINUE
6462         NMAX=0
6463         DO 390 IACC=1,NACC
6464           DO 340 J=1,30
6465             VINT(10+J)=VINTPT(IACC,J)
6466   340     CONTINUE
6467           IF(ISTSB.NE.5) THEN
6468             CALL PYSIGH(NCHN,SIGS)
6469             IF(MWTXS.EQ.1) THEN
6470               CALL PYEVWT(WTXS)
6471               SIGS=WTXS*SIGS
6472             ENDIF
6473           ELSE
6474             SIGS=0D0
6475             DO 350 IKIN3=1,MSTP(129)
6476               CALL PYKMAP(5,0,0D0)
6477               IF(MINT(51).EQ.1) GOTO 350
6478               CALL PYSIGH(NCHN,SIGTMP)
6479               IF(MWTXS.EQ.1) THEN
6480                 CALL PYEVWT(WTXS)
6481                 SIGTMP=WTXS*SIGTMP
6482               ENDIF
6483               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6484   350       CONTINUE
6485           ENDIF
6486           IEQ=0
6487           DO 360 IMV=1,NMAX
6488             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
6489   360     CONTINUE
6490           IF(IEQ.EQ.0) THEN
6491             DO 370 IMV=NMAX,1,-1
6492               IIN=IMV+1
6493               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
6494               IACCMX(IMV+1)=IACCMX(IMV)
6495               SIGSMX(IMV+1)=SIGSMX(IMV)
6496   370       CONTINUE
6497             IIN=1
6498   380       IACCMX(IIN)=IACC
6499             SIGSMX(IIN)=SIGS
6500             IF(NMAX.LE.1) NMAX=NMAX+1
6501           ENDIF
6502   390   CONTINUE
6503  
6504 C...Read out starting position for search.
6505         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
6506         SIGSAM=SIGSMX(1)
6507         DO 440 IMAX=1,NMAX
6508           IACC=IACCMX(IMAX)
6509           MTAU=MVARPT(IACC,1)
6510           MTAUP=MVARPT(IACC,2)
6511           MYST=MVARPT(IACC,3)
6512           MCTH=MVARPT(IACC,4)
6513           VTAU=0.5D0
6514           VYST=0.5D0
6515           VCTH=0.5D0
6516           VTAUP=0.5D0
6517  
6518 C...Starting point and step size in parameter space.
6519           DO 430 IRPT=1,2
6520             DO 420 IVAR=1,4
6521               IF(NPTS(IVAR).EQ.1) GOTO 420
6522               IF(IVAR.EQ.1) VVAR=VTAU
6523               IF(IVAR.EQ.2) VVAR=VTAUP
6524               IF(IVAR.EQ.3) VVAR=VYST
6525               IF(IVAR.EQ.4) VVAR=VCTH
6526               IF(IVAR.EQ.1) MVAR=MTAU
6527               IF(IVAR.EQ.2) MVAR=MTAUP
6528               IF(IVAR.EQ.3) MVAR=MYST
6529               IF(IVAR.EQ.4) MVAR=MCTH
6530               IF(IRPT.EQ.1) VDEL=0.1D0
6531               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
6532      &        0.98D0-VVAR))
6533               IF(IRPT.EQ.1) VMAR=0.02D0
6534               IF(IRPT.EQ.2) VMAR=0.002D0
6535               IMOV0=1
6536               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
6537               DO 410 IMOV=IMOV0,8
6538  
6539 C...Define new point in parameter space.
6540                 IF(IMOV.EQ.0) THEN
6541                   INEW=2
6542                   VNEW=VVAR
6543                 ELSEIF(IMOV.EQ.1) THEN
6544                   INEW=3
6545                   VNEW=VVAR+VDEL
6546                 ELSEIF(IMOV.EQ.2) THEN
6547                   INEW=1
6548                   VNEW=VVAR-VDEL
6549                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
6550      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
6551                   VVAR=VVAR+VDEL
6552                   SIGSSM(1)=SIGSSM(2)
6553                   SIGSSM(2)=SIGSSM(3)
6554                   INEW=3
6555                   VNEW=VVAR+VDEL
6556                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
6557      &            VVAR-2D0*VDEL.GT.VMAR) THEN
6558                   VVAR=VVAR-VDEL
6559                   SIGSSM(3)=SIGSSM(2)
6560                   SIGSSM(2)=SIGSSM(1)
6561                   INEW=1
6562                   VNEW=VVAR-VDEL
6563                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
6564                   VDEL=0.5D0*VDEL
6565                   VVAR=VVAR+VDEL
6566                   SIGSSM(1)=SIGSSM(2)
6567                   INEW=2
6568                   VNEW=VVAR
6569                 ELSE
6570                   VDEL=0.5D0*VDEL
6571                   VVAR=VVAR-VDEL
6572                   SIGSSM(3)=SIGSSM(2)
6573                   INEW=2
6574                   VNEW=VVAR
6575                 ENDIF
6576  
6577 C...Convert to relevant variables and find derived new limits.
6578                 ILERR=0
6579                 IF(IVAR.EQ.1) THEN
6580                   VTAU=VNEW
6581                   CALL PYKMAP(1,MTAU,VTAU)
6582                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
6583                     CALL PYKLIM(4)
6584                     IF(MINT(51).EQ.1) ILERR=1
6585                   ENDIF
6586                 ENDIF
6587                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
6588      &          ILERR.EQ.0) THEN
6589                   IF(IVAR.EQ.2) VTAUP=VNEW
6590                   CALL PYKMAP(4,MTAUP,VTAUP)
6591                 ENDIF
6592                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
6593                   CALL PYKLIM(2)
6594                   IF(MINT(51).EQ.1) ILERR=1
6595                 ENDIF
6596                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
6597                   IF(IVAR.EQ.3) VYST=VNEW
6598                   CALL PYKMAP(2,MYST,VYST)
6599                   CALL PYKLIM(3)
6600                   IF(MINT(51).EQ.1) ILERR=1
6601                 ENDIF
6602                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
6603      &          ILERR.EQ.0) THEN
6604                   IF(IVAR.EQ.4) VCTH=VNEW
6605                   CALL PYKMAP(3,MCTH,VCTH)
6606                 ENDIF
6607                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
6608  
6609 C...Evaluate cross-section. Save new maximum. Final maximum.
6610                 IF(ILERR.NE.0) THEN
6611                    SIGS=0.
6612                 ELSEIF(ISTSB.NE.5) THEN
6613                   CALL PYSIGH(NCHN,SIGS)
6614                   IF(MWTXS.EQ.1) THEN
6615                     CALL PYEVWT(WTXS)
6616                     SIGS=WTXS*SIGS
6617                   ENDIF
6618                 ELSE
6619                   SIGS=0D0
6620                   DO 400 IKIN3=1,MSTP(129)
6621                     CALL PYKMAP(5,0,0D0)
6622                     IF(MINT(51).EQ.1) GOTO 400
6623                     CALL PYSIGH(NCHN,SIGTMP)
6624                     IF(MWTXS.EQ.1) THEN
6625                         CALL PYEVWT(WTXS)
6626                         SIGTMP=WTXS*SIGTMP
6627                     ENDIF
6628                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
6629   400             CONTINUE
6630                 ENDIF
6631                 SIGSSM(INEW)=SIGS
6632                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
6633                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
6634      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
6635   410         CONTINUE
6636   420       CONTINUE
6637   430     CONTINUE
6638   440   CONTINUE
6639         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
6640         XSEC(ISUB,1)=1.05D0*SIGSAM
6641         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
6642      &  WTGAGA*XSEC(ISUB,1)
6643   450   CONTINUE
6644         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
6645      &  PARP(174)*XSEC(ISUB,1)
6646         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
6647   460 CONTINUE
6648       MINT(51)=0
6649  
6650 C...Print summary table.
6651       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
6652         IF(MSTP(127).NE.1) THEN
6653           WRITE(MSTU(11),5900)
6654           STOP
6655         ELSE
6656           WRITE(MSTU(11),6400)
6657           MSTI(53)=1
6658         ENDIF
6659       ENDIF
6660       IF(MSTP(122).GE.1) THEN
6661         WRITE(MSTU(11),6000)
6662         WRITE(MSTU(11),6100)
6663         DO 470 ISUB=1,500
6664           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
6665           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
6666           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MSTP(81).LE.0) GOTO 470
6667           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
6668           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
6669      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
6670           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
6671           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
6672   470   CONTINUE
6673         WRITE(MSTU(11),6300)
6674       ENDIF
6675  
6676 C...Format statements for maximization results.
6677  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
6678      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
6679      &'cth',9X,'tau''',7X,'sigma')
6680  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
6681      &'phase space.'/1X,'Process switched off!')
6682  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
6683  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
6684      &'cross-section.'/1X,'Process switched off!')
6685  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
6686  5500 FORMAT(1X,1P,8D11.3)
6687  5600 FORMAT(1X,'Result for ',A4,':',7F9.4)
6688  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
6689      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
6690  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
6691  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
6692      &'cross-section.'/1X,'Execution stopped!')
6693  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
6694      &'cross-section maximum search',1X,8('*'))
6695  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
6696      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
6697      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
6698  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
6699  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
6700  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
6701      &'cross-section.'/
6702      &1X,'Execution will stop if you try to generate events.')
6703  
6704       RETURN
6705       END
6706  
6707 C*********************************************************************
6708  
6709 C...PYPILE
6710 C...Initializes multiplicity distribution and selects mutliplicity
6711 C...of pileup events, i.e. several events occuring at the same
6712 C...beam crossing.
6713  
6714       SUBROUTINE PYPILE(MPILE)
6715  
6716 C...Double precision and integer declarations.
6717       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6718       IMPLICIT INTEGER(I-N)
6719       INTEGER PYK,PYCHGE,PYCOMP
6720 C...Commonblocks.
6721       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6722       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6723       COMMON/PYINT1/MINT(400),VINT(400)
6724       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6725       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
6726 C...Local arrays and saved variables.
6727       DIMENSION WTI(0:200)
6728       SAVE IMIN,IMAX,WTI,WTS
6729  
6730 C...Sum of allowed cross-sections for pileup events.
6731       IF(MPILE.EQ.1) THEN
6732         VINT(131)=SIGT(0,0,5)
6733         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
6734         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
6735         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
6736         IF(MSTP(133).LE.0) RETURN
6737  
6738 C...Initialize multiplicity distribution at maximum.
6739         XNAVE=VINT(131)*PARP(131)
6740         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
6741         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
6742         WTI(INAVE)=1D0
6743         WTS=WTI(INAVE)
6744         WTN=WTI(INAVE)*INAVE
6745  
6746 C...Find shape of multiplicity distribution below maximum.
6747         IMIN=INAVE
6748         DO 100 I=INAVE-1,1,-1
6749           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
6750           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
6751           IF(WTI(I).LT.1D-6) GOTO 110
6752           WTS=WTS+WTI(I)
6753           WTN=WTN+WTI(I)*I
6754           IMIN=I
6755   100   CONTINUE
6756  
6757 C...Find shape of multiplicity distribution above maximum.
6758   110   IMAX=INAVE
6759         DO 120 I=INAVE+1,200
6760           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
6761           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
6762           IF(WTI(I).LT.1D-6) GOTO 130
6763           WTS=WTS+WTI(I)
6764           WTN=WTN+WTI(I)*I
6765           IMAX=I
6766   120   CONTINUE
6767   130   VINT(132)=XNAVE
6768         VINT(133)=WTN/WTS
6769         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
6770      &  WTS/(WTS+WTI(1)/XNAVE)
6771         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
6772         IF(MSTP(133).GE.2) VINT(134)=XNAVE
6773  
6774 C...Pick multiplicity of pileup events.
6775       ELSE
6776         IF(MSTP(133).LE.0) THEN
6777           MINT(81)=MAX(1,MSTP(134))
6778         ELSE
6779           WTR=WTS*PYR(0)
6780           DO 140 I=IMIN,IMAX
6781             MINT(81)=I
6782             WTR=WTR-WTI(I)
6783             IF(WTR.LE.0D0) GOTO 150
6784   140     CONTINUE
6785   150     CONTINUE
6786         ENDIF
6787       ENDIF
6788  
6789 C...Format statement for error message.
6790  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
6791      &'crossing too large, ',1P,D12.4)
6792  
6793       RETURN
6794       END
6795  
6796 C*********************************************************************
6797  
6798 C...PYSAVE
6799 C...Saves and restores parameter and cross section values for the
6800 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
6801 C...Also makes random choice between alternatives.
6802  
6803       SUBROUTINE PYSAVE(ISAVE,IGA)
6804  
6805 C...Double precision and integer declarations.
6806       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6807       IMPLICIT INTEGER(I-N)
6808       INTEGER PYK,PYCHGE,PYCOMP
6809 C...Commonblocks.
6810       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
6811       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6812       COMMON/PYINT1/MINT(400),VINT(400)
6813       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
6814       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6815       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6816       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
6817 C...Local arrays and saved variables.
6818       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
6819      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
6820      &INTCP(15,20),RECP(15,20)
6821       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
6822  
6823 C...Save list of subprocesses and cross-section information.
6824       IF(ISAVE.EQ.1) THEN
6825         ICP=0
6826         DO 120 I=1,500
6827           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
6828           ICP=ICP+1
6829           NSUBCP(IGA,ICP)=I
6830           MSUBCP(IGA,ICP)=MSUB(I)
6831           DO 100 J=1,20
6832             COEFCP(IGA,ICP,J)=COEF(I,J)
6833   100     CONTINUE
6834           DO 110 J=1,3
6835             NGENCP(IGA,ICP,J)=NGEN(I,J)
6836             XSECCP(IGA,ICP,J)=XSEC(I,J)
6837   110     CONTINUE
6838   120   CONTINUE
6839         NCP(IGA)=ICP
6840         DO 130 J=1,3
6841           NGENCP(IGA,0,J)=NGEN(0,J)
6842           XSECCP(IGA,0,J)=XSEC(0,J)
6843   130   CONTINUE
6844         DO 160 I1=0,6
6845           DO 150 I2=0,6
6846             DO 140 J=0,5
6847               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
6848   140       CONTINUE
6849   150     CONTINUE
6850   160   CONTINUE
6851  
6852 C...Save various common process variables.
6853         DO 170 J=1,10
6854           INTCP(IGA,J)=MINT(40+J)
6855   170   CONTINUE
6856         INTCP(IGA,11)=MINT(101)
6857         INTCP(IGA,12)=MINT(102)
6858         INTCP(IGA,13)=MINT(107)
6859         INTCP(IGA,14)=MINT(108)
6860         INTCP(IGA,15)=MINT(123)
6861         RECP(IGA,1)=CKIN(3)
6862         RECP(IGA,2)=VINT(318)
6863  
6864 C...Save cross-section information only.
6865       ELSEIF(ISAVE.EQ.2) THEN
6866         DO 190 ICP=1,NCP(IGA)
6867           I=NSUBCP(IGA,ICP)
6868           DO 180 J=1,3
6869             NGENCP(IGA,ICP,J)=NGEN(I,J)
6870             XSECCP(IGA,ICP,J)=XSEC(I,J)
6871   180     CONTINUE
6872   190   CONTINUE
6873         DO 200 J=1,3
6874           NGENCP(IGA,0,J)=NGEN(0,J)
6875           XSECCP(IGA,0,J)=XSEC(0,J)
6876   200   CONTINUE
6877  
6878 C...Choose between allowed alternatives.
6879       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
6880         IF(ISAVE.EQ.4) THEN
6881           XSUMCP=0D0
6882           DO 210 IG=1,MINT(121)
6883             XSUMCP=XSUMCP+XSECCP(IG,0,1)
6884   210     CONTINUE
6885           XSUMCP=XSUMCP*PYR(0)
6886           DO 220 IG=1,MINT(121)
6887             IGA=IG
6888             XSUMCP=XSUMCP-XSECCP(IG,0,1)
6889             IF(XSUMCP.LE.0D0) GOTO 230
6890   220     CONTINUE
6891   230     CONTINUE
6892         ENDIF
6893  
6894 C...Restore cross-section information.
6895         DO 240 I=1,500
6896           MSUB(I)=0
6897   240   CONTINUE
6898         DO 270 ICP=1,NCP(IGA)
6899           I=NSUBCP(IGA,ICP)
6900           MSUB(I)=MSUBCP(IGA,ICP)
6901           DO 250 J=1,20
6902             COEF(I,J)=COEFCP(IGA,ICP,J)
6903   250     CONTINUE
6904           DO 260 J=1,3
6905             NGEN(I,J)=NGENCP(IGA,ICP,J)
6906             XSEC(I,J)=XSECCP(IGA,ICP,J)
6907   260     CONTINUE
6908   270   CONTINUE
6909         DO 280 J=1,3
6910           NGEN(0,J)=NGENCP(IGA,0,J)
6911           XSEC(0,J)=XSECCP(IGA,0,J)
6912   280   CONTINUE
6913         DO 310 I1=0,6
6914           DO 300 I2=0,6
6915             DO 290 J=0,5
6916               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
6917   290       CONTINUE
6918   300     CONTINUE
6919   310   CONTINUE
6920  
6921 C...Restore various common process variables.
6922         DO 320 J=1,10
6923           MINT(40+J)=INTCP(IGA,J)
6924   320   CONTINUE
6925         MINT(101)=INTCP(IGA,11)
6926         MINT(102)=INTCP(IGA,12)
6927         MINT(107)=INTCP(IGA,13)
6928         MINT(108)=INTCP(IGA,14)
6929         MINT(123)=INTCP(IGA,15)
6930         CKIN(3)=RECP(IGA,1)
6931         CKIN(1)=2D0*CKIN(3)
6932         VINT(318)=RECP(IGA,2)
6933  
6934 C...Sum up cross-section info (for PYSTAT).
6935       ELSEIF(ISAVE.EQ.5) THEN
6936         DO 330 I=1,500
6937           MSUB(I)=0
6938           NGEN(I,1)=0
6939           NGEN(I,3)=0
6940           XSEC(I,3)=0D0
6941   330   CONTINUE
6942         NGEN(0,1)=0
6943         NGEN(0,2)=0
6944         NGEN(0,3)=0
6945         XSEC(0,3)=0
6946         DO 350 IG=1,MINT(121)
6947           DO 340 ICP=1,NCP(IG)
6948             I=NSUBCP(IG,ICP)
6949             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
6950             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
6951             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
6952             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
6953   340     CONTINUE
6954           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
6955           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
6956           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
6957           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
6958   350   CONTINUE
6959       ENDIF
6960  
6961       RETURN
6962       END
6963  
6964 C*********************************************************************
6965  
6966 C...PYGAGA
6967 C...For lepton beams it gives photon-hadron or photon-photon systems
6968 C...to be treated with the ordinary machinery and combines this with a
6969 C...description of the lepton -> lepton + photon branching.
6970  
6971       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
6972  
6973 C...Double precision and integer declarations.
6974       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6975       IMPLICIT INTEGER(I-N)
6976       INTEGER PYK,PYCHGE,PYCOMP
6977 C...Commonblocks.
6978       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
6979       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6980       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6981       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
6982       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6983       COMMON/PYINT1/MINT(400),VINT(400)
6984       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6985       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
6986      &/PYINT5/
6987 C...Local variables and data statement.
6988       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
6989      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
6990       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
6991       DATA EPS/1D-4/
6992  
6993 C...Initialize generation of photons inside leptons.
6994       IF(IGAGA.EQ.1) THEN
6995  
6996 C...Save quantities on incoming lepton system.
6997         VINT(301)=VINT(1)
6998         VINT(302)=VINT(2)
6999         PMS(1)=VINT(303)**2
7000         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
7001         PMS(2)=VINT(304)**2
7002         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
7003         PMC(3)=VINT(302)-PMS(1)-PMS(2)
7004         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
7005  
7006 C...Calculate range of x and Q2 values allowed in generation.
7007         DO 100 I=1,2
7008           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
7009           IF(MINT(140+I).NE.0) THEN
7010             XMIN(I)=MAX(CKIN(59+2*I),EPS)
7011             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
7012      &      PMC(I),1D0-EPS)
7013             YMIN=MAX(CKIN(71+2*I),EPS)
7014             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
7015             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
7016      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
7017             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
7018             THEMIN=MAX(CKIN(67+2*I),0D0)
7019             THEMAX=MIN(CKIN(68+2*I),PARU(1))
7020             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
7021             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
7022      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
7023      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
7024             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
7025      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
7026      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
7027             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
7028 C...W limits when lepton on one side only.
7029             IF(MINT(143-I).EQ.0) THEN
7030               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
7031               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
7032      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
7033             ENDIF
7034           ENDIF
7035   100   CONTINUE
7036  
7037 C...W limits when lepton on both sides.
7038         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7039           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
7040      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
7041           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
7042      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
7043           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
7044             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
7045      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
7046             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
7047      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
7048           ELSE
7049             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
7050             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
7051           ENDIF
7052         ENDIF
7053  
7054 C...Q2 and W values and photon flux weight factors for initialization.
7055       ELSEIF(IGAGA.EQ.2) THEN
7056         ISUB=MINT(1)
7057         MINT(15)=0
7058         MINT(16)=0
7059  
7060 C...W value for photon on one or both sides, and for processes
7061 C...with gamma-gamma cross section peaked at small shat.
7062         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
7063           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
7064         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
7065           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
7066         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
7067           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
7068           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
7069         ELSE
7070           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
7071           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
7072         ENDIF
7073         VINT(1)=SQRT(MAX(0D0,VINT(2)))
7074  
7075 C...Upper estimate of photon flux weight factor.
7076 C...Initialization Q2 scale. Flag incoming unresolved photon.
7077         WTGAGA=1D0
7078         DO 110 I=1,2
7079           IF(MINT(140+I).NE.0) THEN
7080             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
7081      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
7082             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
7083      &      THEN
7084               Q2INIT=5D0+Q2MIN(3-I)
7085             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
7086               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
7087             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
7088               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
7089             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
7090      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
7091               Q2INIT=VINT(2)/3D0
7092             ELSEIF(ISUB.EQ.140) THEN
7093               Q2INIT=VINT(2)/2D0
7094             ELSE
7095               Q2INIT=Q2MIN(I)
7096             ENDIF
7097             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
7098             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
7099      &      MINT(14+I)=22
7100             VINT(306+I)=VINT(2+I)**2
7101           ENDIF
7102   110   CONTINUE
7103         VINT(320)=WTGAGA
7104  
7105 C...Update pTmin and cross section information.
7106         IF(MSTP(82).LE.1) THEN
7107           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7108         ELSE
7109           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7110         ENDIF
7111         VINT(149)=4D0*PTMN**2/VINT(2)
7112         VINT(154)=PTMN
7113         CALL PYXTOT
7114         VINT(318)=VINT(317)
7115  
7116 C...Generate photons inside leptons and
7117 C...calculate photon flux weight factors.
7118       ELSEIF(IGAGA.EQ.3) THEN
7119         ISUB=MINT(1)
7120         MINT(15)=0
7121         MINT(16)=0
7122  
7123 C...Generate phase space point and check against cuts.
7124         LOOP=0
7125   120   LOOP=LOOP+1
7126         DO 130 I=1,2
7127           IF(MINT(140+I).NE.0) THEN
7128 C...Pick x and Q2
7129             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
7130             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
7131 C...Cuts on internal consistency in x and Q2.
7132             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
7133             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
7134      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
7135 C...Cuts on y and theta.
7136             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
7137             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
7138             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
7139      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
7140             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
7141             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
7142             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
7143      &      GOTO 120
7144  
7145 C...Phi angle isotropic. Reconstruct pT.
7146             PHI(I)=PARU(2)*PYR(0)
7147             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
7148      &      PMS(I))*SIN(THETA(I))
7149  
7150 C...Store info on variables selected, for documentation purposes.
7151             VINT(2+I)=-SQRT(Q2(I))
7152             VINT(304+I)=X(I)
7153             VINT(306+I)=Q2(I)
7154             VINT(308+I)=Y(I)
7155             VINT(310+I)=THETA(I)
7156             VINT(312+I)=PHI(I)
7157           ELSE
7158             VINT(304+I)=1D0
7159             VINT(306+I)=0D0
7160             VINT(308+I)=1D0
7161             VINT(310+I)=0D0
7162             VINT(312+I)=0D0
7163           ENDIF
7164   130   CONTINUE
7165  
7166 C...Cut on W combines info from two sides.
7167         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7168           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
7169      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
7170      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
7171      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
7172           IF(W2.LT.W2MIN) GOTO 120
7173           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
7174           PMS1=-Q2(1)
7175           PMS2=-Q2(2)
7176         ELSEIF(MINT(141).NE.0) THEN
7177           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
7178           PMS1=-Q2(1)
7179           PMS2=PMS(2)
7180         ELSEIF(MINT(142).NE.0) THEN
7181           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
7182           PMS1=PMS(1)
7183           PMS2=-Q2(2)
7184         ENDIF
7185  
7186 C...Store kinematics info for photon(s) in subsystem cm frame.
7187         VINT(2)=W2
7188         VINT(1)=SQRT(W2)
7189         VINT(291)=0D0
7190         VINT(292)=0D0
7191         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
7192         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
7193         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
7194         VINT(296)=0D0
7195         VINT(297)=0D0
7196         VINT(298)=-VINT(293)
7197         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
7198         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
7199  
7200 C...Assign weight for photon flux; different for transverse and
7201 C...longitudinal photons. Flag incoming unresolved photon.
7202         WTGAGA=1D0
7203         DO 140 I=1,2
7204           IF(MINT(140+I).NE.0) THEN
7205             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
7206      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
7207             IF(MSTP(16).EQ.0) THEN
7208               XY=X(I)
7209             ELSE
7210               WTGAGA=WTGAGA*X(I)/Y(I)
7211               XY=Y(I)
7212             ENDIF
7213             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
7214               WTGAGA=WTGAGA*(1D0-XY)
7215             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
7216               WTGAGA=WTGAGA*(1D0-XY)
7217             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
7218               WTGAGA=WTGAGA*(1D0-XY)
7219             ELSE
7220               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
7221      &        PMS(I)*XY**2/Q2(I))
7222             ENDIF
7223             IF(MINT(106+I).EQ.0) MINT(14+I)=22
7224           ENDIF
7225   140   CONTINUE
7226         VINT(319)=WTGAGA
7227         MINT(143)=LOOP
7228  
7229 C...Update pTmin and cross section information.
7230         IF(MSTP(82).LE.1) THEN
7231           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7232         ELSE
7233           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7234         ENDIF
7235         VINT(149)=4D0*PTMN**2/VINT(2)
7236         VINT(154)=PTMN
7237         CALL PYXTOT
7238  
7239 C...Reconstruct kinematics of photons inside leptons.
7240       ELSEIF(IGAGA.EQ.4) THEN
7241  
7242 C...Make place for incoming particles and scattered leptons.
7243         MOVE=3
7244         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
7245         MINT(4)=MINT(4)+MOVE
7246         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
7247           IF(K(I,1).EQ.21) THEN
7248             DO 150 J=1,5
7249               K(I+MOVE,J)=K(I,J)
7250               P(I+MOVE,J)=P(I,J)
7251               V(I+MOVE,J)=V(I,J)
7252   150       CONTINUE
7253             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
7254      &      K(I+MOVE,3)=K(I,3)+MOVE
7255             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
7256      &      K(I+MOVE,4)=K(I,4)+MOVE
7257             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
7258      &      K(I+MOVE,5)=K(I,5)+MOVE
7259           ENDIF
7260   160   CONTINUE
7261         DO 170 I=MINT(84)+1,N
7262           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
7263      &    K(I,3)=K(I,3)+MOVE
7264   170   CONTINUE
7265  
7266 C...Fill in incoming particles.
7267         DO 190 I=MINT(83)+1,MINT(83)+MOVE
7268           DO 180 J=1,5
7269             K(I,J)=0
7270             P(I,J)=0D0
7271             V(I,J)=0D0
7272   180     CONTINUE
7273   190   CONTINUE
7274         DO 200 I=1,2
7275           K(MINT(83)+I,1)=21
7276           IF(MINT(140+I).NE.0) THEN
7277             K(MINT(83)+I,2)=MINT(140+I)
7278             P(MINT(83)+I,5)=VINT(302+I)
7279           ELSE
7280             K(MINT(83)+I,2)=MINT(10+I)
7281             P(MINT(83)+I,5)=VINT(2+I)
7282           ENDIF
7283           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
7284      &    VINT(302))*(-1D0)**(I+1)
7285           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
7286   200   CONTINUE
7287  
7288 C...New mother-daughter relations in documentation section.
7289         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
7290           K(MINT(83)+1,4)=MINT(83)+3
7291           K(MINT(83)+1,5)=MINT(83)+5
7292           K(MINT(83)+2,4)=MINT(83)+4
7293           K(MINT(83)+2,5)=MINT(83)+6
7294           K(MINT(83)+3,3)=MINT(83)+1
7295           K(MINT(83)+5,3)=MINT(83)+1
7296           K(MINT(83)+4,3)=MINT(83)+2
7297           K(MINT(83)+6,3)=MINT(83)+2
7298         ELSEIF(MINT(141).NE.0) THEN
7299           K(MINT(83)+1,4)=MINT(83)+3
7300           K(MINT(83)+1,5)=MINT(83)+4
7301           K(MINT(83)+2,4)=MINT(83)+5
7302           K(MINT(83)+3,3)=MINT(83)+1
7303           K(MINT(83)+4,3)=MINT(83)+1
7304           K(MINT(83)+5,3)=MINT(83)+2
7305         ELSEIF(MINT(142).NE.0) THEN
7306           K(MINT(83)+1,4)=MINT(83)+4
7307           K(MINT(83)+2,4)=MINT(83)+3
7308           K(MINT(83)+2,5)=MINT(83)+5
7309           K(MINT(83)+3,3)=MINT(83)+2
7310           K(MINT(83)+4,3)=MINT(83)+1
7311           K(MINT(83)+5,3)=MINT(83)+2
7312         ENDIF
7313  
7314 C...Fill scattered lepton(s).
7315         DO 210 I=1,2
7316           IF(MINT(140+I).NE.0) THEN
7317             LSC=MINT(83)+MIN(I+2,MOVE)
7318             K(LSC,1)=21
7319             K(LSC,2)=MINT(140+I)
7320             P(LSC,1)=PT(I)*COS(PHI(I))
7321             P(LSC,2)=PT(I)*SIN(PHI(I))
7322             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
7323             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
7324      &      (-1D0)**(I-1)
7325             P(LSC,5)=VINT(302+I)
7326           ENDIF
7327   210   CONTINUE
7328  
7329 C...Find incoming four-vectors to subprocess.
7330         K(N+1,1)=21
7331         IF(MINT(141).NE.0) THEN
7332           DO 220 J=1,4
7333             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
7334   220     CONTINUE
7335         ELSE
7336           DO 230 J=1,4
7337             P(N+1,J)=P(MINT(83)+1,J)
7338   230     CONTINUE
7339         ENDIF
7340         K(N+2,1)=21
7341         IF(MINT(142).NE.0) THEN
7342           DO 240 J=1,4
7343             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
7344   240     CONTINUE
7345         ELSE
7346           DO 250 J=1,4
7347             P(N+2,J)=P(MINT(83)+2,J)
7348   250     CONTINUE
7349         ENDIF
7350  
7351 C...Define boost and rotation between hadronic subsystem and
7352 C...collision rest frame; boost hadronic subsystem to this frame.
7353         DO 260 J=1,3
7354           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
7355   260   CONTINUE
7356         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
7357         BPHI=PYANGL(P(N+1,1),P(N+1,2))
7358         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
7359         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
7360         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
7361      &  BETA(3))
7362  
7363 C...Add on scattered leptons to final state.
7364         DO 280 I=1,2
7365           IF(MINT(140+I).NE.0) THEN
7366             LSC=MINT(83)+MIN(I+2,MOVE)
7367             N=N+1
7368             DO 270 J=1,5
7369               K(N,J)=K(LSC,J)
7370               P(N,J)=P(LSC,J)
7371               V(N,J)=V(LSC,J)
7372   270       CONTINUE
7373             K(N,1)=1
7374             K(N,3)=LSC
7375           ENDIF
7376   280   CONTINUE
7377       ENDIF
7378  
7379       RETURN
7380       END
7381  
7382 C*********************************************************************
7383  
7384 C...PYRAND
7385 C...Generates quantities characterizing the high-pT scattering at the
7386 C...parton level according to the matrix elements. Chooses incoming,
7387 C...reacting partons, their momentum fractions and one of the possible
7388 C...subprocesses.
7389  
7390       SUBROUTINE PYRAND
7391  
7392 C...Double precision and integer declarations.
7393       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
7394       IMPLICIT INTEGER(I-N)
7395       INTEGER PYK,PYCHGE,PYCOMP
7396 C...Parameter statement to help give large particle numbers.
7397       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
7398      &KEXCIT=4000000,KDIMEN=5000000)
7399  
7400 C...User process initialization and event commonblocks.
7401       INTEGER MAXPUP
7402       PARAMETER (MAXPUP=100)
7403       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
7404       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
7405       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
7406      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
7407      &LPRUP(MAXPUP)
7408       INTEGER MAXNUP
7409       PARAMETER (MAXNUP=500)
7410       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
7411       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
7412       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
7413      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
7414      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
7415       SAVE /HEPRUP/,/HEPEUP/
7416  
7417 C...Commonblocks.
7418       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
7419       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
7420       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
7421       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
7422       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
7423       COMMON/PYINT1/MINT(400),VINT(400)
7424       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
7425       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
7426       COMMON/PYINT4/MWID(500),WIDS(500,5)
7427       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
7428       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
7429       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
7430       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
7431      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/
7432 C...Local arrays.
7433       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
7434  
7435 C...Parameters and data used in elastic/diffractive treatment.
7436       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
7437      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
7438  
7439 C...Initial values, specifically for (first) semihard interaction.
7440       MINT(10)=0
7441       MINT(17)=0
7442       MINT(18)=0
7443       VINT(97)=1D0
7444       VINT(143)=1D0
7445       VINT(144)=1D0
7446       VINT(157)=0D0
7447       VINT(158)=0D0
7448       MFAIL=0
7449       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
7450       ISUB=0
7451       ISTSB=0
7452       LOOP=0
7453   100 LOOP=LOOP+1
7454       MINT(51)=0
7455       MINT(143)=1
7456  
7457 C...Start by assuming incoming photon is entering subprocess.
7458       IF(MINT(11).EQ.22) THEN
7459          MINT(15)=22
7460          VINT(307)=VINT(3)**2
7461       ENDIF
7462       IF(MINT(12).EQ.22) THEN
7463          MINT(16)=22
7464          VINT(308)=VINT(4)**2
7465       ENDIF
7466       MINT(103)=MINT(11)
7467       MINT(104)=MINT(12)
7468  
7469 C...Choice of process type - first event of pileup.
7470       INMULT=0
7471       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
7472       ELSEIF(MINT(82).EQ.1) THEN
7473  
7474 C...For gamma-p or gamma-gamma first pick between alternatives.
7475         IGA=0
7476         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
7477         MINT(122)=IGA
7478  
7479 C...For real gamma + gamma with different nature, flip at random.
7480         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
7481      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
7482           MINTSV=MINT(41)
7483           MINT(41)=MINT(42)
7484           MINT(42)=MINTSV
7485           MINTSV=MINT(45)
7486           MINT(45)=MINT(46)
7487           MINT(46)=MINTSV
7488           MINTSV=MINT(107)
7489           MINT(107)=MINT(108)
7490           MINT(108)=MINTSV
7491           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
7492         ENDIF
7493  
7494 C...Pick process type, possibly by user process machinery.
7495 C...(If the latter, also event will be picked here.)
7496         IF(MINT(111).EQ.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
7497           CALL UPEVNT
7498         ELSEIF(MINT(111).EQ.11.AND.IABS(IDWTUP).GE.3) THEN
7499           CALL UPEVNT
7500           ISUB=0
7501   110     ISUB=ISUB+1
7502           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
7503      &    ISUB.LT.500) GOTO 110
7504         ELSE
7505           RSUB=XSEC(0,1)*PYR(0)
7506           DO 120 I=1,500
7507             IF(MSUB(I).NE.1) GOTO 120
7508             ISUB=I
7509             RSUB=RSUB-XSEC(I,1)
7510             IF(RSUB.LE.0D0) GOTO 130
7511   120     CONTINUE
7512   130     IF(ISUB.EQ.95) ISUB=96
7513           IF(ISUB.EQ.96) INMULT=1
7514           IF(ISET(ISUB).EQ.11) THEN
7515             IDPRUP=KFPR(ISUB,2)
7516             CALL UPEVNT
7517           ENDIF
7518         ENDIF
7519  
7520 C...Choice of inclusive process type - pileup events.
7521       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
7522         RSUB=VINT(131)*PYR(0)
7523         ISUB=96
7524         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
7525         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
7526         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
7527         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
7528      &  ISUB=91
7529         IF(ISUB.EQ.96) INMULT=1
7530       ENDIF
7531  
7532 C...Choice of photon energy and flux factor inside lepton.
7533       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
7534         CALL PYGAGA(3,WTGAGA)
7535         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
7536           CKIN(3)=MAX(VINT(285),VINT(154))
7537           CKIN(1)=2D0*CKIN(3)
7538         ENDIF
7539 C...When necessary set direct/resolved photon by hand.
7540       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
7541         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
7542         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
7543       ENDIF
7544  
7545 C...Restrict direct*resolved processes to pTmin >= Q,
7546 C...to avoid doublecounting  with DIS.
7547       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
7548         IF(MINT(15).EQ.22) THEN
7549           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
7550         ELSE
7551           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
7552         ENDIF
7553         CKIN(1)=2D0*CKIN(3)
7554       ENDIF
7555  
7556 C...Set up for multiple interactions.
7557       IF(INMULT.EQ.1) CALL PYMULT(2)
7558  
7559 C...Loopback point for minimum bias in photon physics.
7560       LOOP2=0
7561   140 LOOP2=LOOP2+1
7562       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
7563       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
7564       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
7565      &NGEN(97,1)=NGEN(97,1)+MINT(143)
7566       MINT(1)=ISUB
7567       ISTSB=ISET(ISUB)
7568  
7569 C...Random choice of flavour for some SUSY processes.
7570       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
7571 C...~e_L ~nu_e or ~mu_L ~nu_mu.
7572         IF(ISUB.EQ.210) THEN
7573           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
7574           KFPR(ISUB,2)=KFPR(ISUB,1)+1
7575 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
7576         ELSEIF(ISUB.EQ.213) THEN
7577           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
7578           KFPR(ISUB,2)=KFPR(ISUB,1)
7579 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
7580         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259) THEN
7581           IF(ISUB.GE.258) THEN
7582             RKF=4D0
7583           ELSE
7584             RKF=5D0
7585           ENDIF
7586           IF(MOD(ISUB,2).EQ.0) THEN
7587             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
7588           ELSE
7589             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
7590           ENDIF
7591 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
7592         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
7593           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
7594             KSU1=KSUSY1
7595             KSU2=KSUSY1
7596           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
7597             KSU1=KSUSY2
7598             KSU2=KSUSY2
7599           ELSEIF(PYR(0).LT.0.5D0) THEN
7600             KSU1=KSUSY1
7601             KSU2=KSUSY2
7602           ELSE
7603             KSU1=KSUSY2
7604             KSU2=KSUSY1
7605           ENDIF
7606           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
7607           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
7608 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
7609         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
7610           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
7611           KFPR(ISUB,2)=KFPR(ISUB,1)
7612         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
7613           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
7614           KFPR(ISUB,2)=KFPR(ISUB,1)
7615 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
7616         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
7617           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
7618             KSU1=KSUSY1
7619             KSU2=KSUSY1
7620           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
7621             KSU1=KSUSY2
7622             KSU2=KSUSY2
7623           ELSEIF(PYR(0).LT.0.5D0) THEN
7624             KSU1=KSUSY1
7625             KSU2=KSUSY2
7626           ELSE
7627             KSU1=KSUSY2
7628             KSU2=KSUSY1
7629           ENDIF
7630           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
7631             RKF=5D0
7632           ELSE
7633             RKF=4D0
7634           ENDIF
7635           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
7636         ENDIF
7637       ENDIF
7638  
7639 C...Find resonances (explicit or implicit in cross-section).
7640       MINT(72)=0
7641       KFR1=0
7642       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
7643         KFR1=KFPR(ISUB,1)
7644       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
7645      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
7646         KFR1=23
7647       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
7648      &  ISUB.EQ.177) THEN
7649         KFR1=24
7650       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
7651         KFR1=25
7652         IF(MSTP(46).EQ.5) THEN
7653           KFR1=89
7654           PMAS(89,1)=PARP(45)
7655           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
7656         ENDIF
7657       ELSEIF(ISUB.EQ.194) THEN
7658         KFR1=KTECHN+113
7659       ELSEIF(ISUB.EQ.195) THEN
7660         KFR1=KTECHN+213
7661       ELSEIF(ISUB.GE.361.AND.ISUB.LE.368) THEN
7662         KFR1=KTECHN+113
7663       ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
7664         KFR1=KTECHN+213
7665       ENDIF
7666       CKMX=CKIN(2)
7667       IF(CKMX.LE.0D0) CKMX=VINT(1)
7668       KCR1=PYCOMP(KFR1)
7669       IF(KFR1.NE.0) THEN
7670         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
7671      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
7672       ENDIF
7673       IF(KFR1.NE.0) THEN
7674         TAUR1=PMAS(KCR1,1)**2/VINT(2)
7675         IF(KFR1.EQ.KTECHN+113) THEN
7676           CALL PYTECM(S1,S2)
7677           TAUR1=S1/VINT(2)
7678         ENDIF
7679         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
7680         MINT(72)=1
7681         MINT(73)=KFR1
7682         VINT(73)=TAUR1
7683         VINT(74)=GAMR1
7684       ENDIF
7685       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.(ISUB.GE.364.AND.ISUB.LE.368))
7686      $THEN
7687         KFR2=23
7688         IF(ISUB.EQ.194) THEN
7689           KFR2=KTECHN+223
7690         ELSEIF(ISUB.GE.364.AND.ISUB.LE.368) THEN
7691           KFR2=KTECHN+223
7692         ENDIF
7693         KCR2=PYCOMP(KFR2)
7694         TAUR2=PMAS(KCR2,1)**2/VINT(2)
7695         IF(KFR2.EQ.KTECHN+223) THEN
7696           CALL PYTECM(S1,S2)
7697           TAUR2=S2/VINT(2)
7698         ENDIF
7699         GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
7700         IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
7701      &  CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) KFR2=0
7702         IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
7703           MINT(72)=2
7704           MINT(74)=KFR2
7705           VINT(75)=TAUR2
7706           VINT(76)=GAMR2
7707         ELSEIF(KFR2.NE.0) THEN
7708           KFR1=KFR2
7709           TAUR1=TAUR2
7710           GAMR1=GAMR2
7711           MINT(72)=1
7712           MINT(73)=KFR1
7713           VINT(73)=TAUR1
7714           VINT(74)=GAMR1
7715         ENDIF
7716       ENDIF
7717  
7718 C...Find product masses and minimum pT of process,
7719 C...optionally with broadening according to a truncated Breit-Wigner.
7720       VINT(63)=0D0
7721       VINT(64)=0D0
7722       MINT(71)=0
7723       VINT(71)=CKIN(3)
7724       IF(MINT(82).GE.2) VINT(71)=0D0
7725       VINT(80)=1D0
7726       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7727         NBW=0
7728         DO 160 I=1,2
7729           PMMN(I)=0D0
7730           IF(KFPR(ISUB,I).EQ.0) THEN
7731           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
7732      &      PARP(41)) THEN
7733             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7734           ELSE
7735             NBW=NBW+1
7736 C...This prevents SUSY/t particles from becoming too light.
7737             KFLW=KFPR(ISUB,I)
7738             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
7739               KCW=PYCOMP(KFLW)
7740               PMMN(I)=PMAS(KCW,1)
7741               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
7742                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
7743                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
7744      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
7745                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
7746      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
7747                   PMMN(I)=MIN(PMMN(I),PMSUM)
7748                 ENDIF
7749   150         CONTINUE
7750             ELSEIF(KFLW.EQ.6) THEN
7751               PMMN(I)=PMAS(24,1)+PMAS(5,1)
7752             ENDIF
7753           ENDIF
7754   160   CONTINUE
7755         IF(NBW.GE.1) THEN
7756           CKIN41=CKIN(41)
7757           CKIN43=CKIN(43)
7758           CKIN(41)=MAX(PMMN(1),CKIN(41))
7759           CKIN(43)=MAX(PMMN(2),CKIN(43))
7760           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
7761           CKIN(41)=CKIN41
7762           CKIN(43)=CKIN43
7763           IF(MINT(51).EQ.1) THEN
7764             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
7765             IF(MFAIL.EQ.1) THEN
7766               MSTI(61)=1
7767               RETURN
7768             ENDIF
7769             GOTO 100
7770           ENDIF
7771           VINT(63)=PQM3**2
7772           VINT(64)=PQM4**2
7773         ENDIF
7774         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
7775         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
7776       ENDIF
7777  
7778 C...Prepare for additional variable choices in 2 -> 3.
7779       IF(ISTSB.EQ.5) THEN
7780         VINT(201)=0D0
7781         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
7782         VINT(206)=VINT(201)
7783         VINT(204)=PMAS(23,1)
7784         IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
7785         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
7786         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
7787      &  ISUB.EQ.186.OR.ISUB.EQ.187) VINT(204)=VINT(201)
7788         VINT(209)=VINT(204)
7789       ENDIF
7790  
7791 C...Select incoming VDM particle (rho/omega/phi/J/psi).
7792       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
7793      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
7794         VRN=PYR(0)*SIGT(0,0,5)
7795         IF(MINT(101).LE.1) THEN
7796           I1MN=0
7797           I1MX=0
7798         ELSE
7799           I1MN=1
7800           I1MX=MINT(101)
7801         ENDIF
7802         IF(MINT(102).LE.1) THEN
7803           I2MN=0
7804           I2MX=0
7805         ELSE
7806           I2MN=1
7807           I2MX=MINT(102)
7808         ENDIF
7809         DO 180 I1=I1MN,I1MX
7810           KFV1=110*I1+3
7811           DO 170 I2=I2MN,I2MX
7812             KFV2=110*I2+3
7813             VRN=VRN-SIGT(I1,I2,5)
7814             IF(VRN.LE.0D0) GOTO 190
7815   170     CONTINUE
7816   180   CONTINUE
7817   190   IF(MINT(101).GE.2) MINT(103)=KFV1
7818         IF(MINT(102).GE.2) MINT(104)=KFV2
7819       ENDIF
7820  
7821       IF(ISTSB.EQ.0) THEN
7822 C...Elastic scattering or single or double diffractive scattering.
7823  
7824 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
7825         MINT(103)=MINT(11)
7826         MINT(104)=MINT(12)
7827         PMM(1)=VINT(3)
7828         PMM(2)=VINT(4)
7829         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
7830           JJ=ISUB-90
7831           VRN=PYR(0)*SIGT(0,0,JJ)
7832           IF(MINT(101).LE.1) THEN
7833             I1MN=0
7834             I1MX=0
7835           ELSE
7836             I1MN=1
7837             I1MX=MINT(101)
7838           ENDIF
7839           IF(MINT(102).LE.1) THEN
7840             I2MN=0
7841             I2MX=0
7842           ELSE
7843             I2MN=1
7844             I2MX=MINT(102)
7845           ENDIF
7846           DO 210 I1=I1MN,I1MX
7847             KFV1=110*I1+3
7848             DO 200 I2=I2MN,I2MX
7849               KFV2=110*I2+3
7850               VRN=VRN-SIGT(I1,I2,JJ)
7851               IF(VRN.LE.0D0) GOTO 220
7852   200       CONTINUE
7853   210     CONTINUE
7854   220     IF(MINT(101).GE.2) THEN
7855             MINT(103)=KFV1
7856             PMM(1)=PYMASS(KFV1)
7857           ENDIF
7858           IF(MINT(102).GE.2) THEN
7859             MINT(104)=KFV2
7860             PMM(2)=PYMASS(KFV2)
7861           ENDIF
7862         ENDIF
7863         VINT(67)=PMM(1)
7864         VINT(68)=PMM(2)
7865  
7866 C...Select mass for GVMD states (rejecting previous assignment).
7867         Q0S=4D0*PARP(15)**2
7868         Q1S=4D0*VINT(154)**2
7869         LOOP3=0
7870   230   LOOP3=LOOP3+1
7871         DO 240 JT=1,2
7872           IF(MINT(106+JT).EQ.3) THEN
7873             PS=VINT(2+JT)**2
7874             PMM(JT)=(Q0S+PS)*(Q1S+PS)/
7875      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
7876             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
7877      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
7878           ENDIF
7879   240   CONTINUE
7880         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
7881           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
7882      &    GOTO 230
7883           GOTO 100
7884         ENDIF
7885  
7886 C...Side/sides of diffractive system.
7887         MINT(17)=0
7888         MINT(18)=0
7889         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
7890         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
7891  
7892 C...Find masses of particles and minimal masses of diffractive states.
7893         DO 250 JT=1,2
7894           PDIF(JT)=PMM(JT)
7895           VINT(68+JT)=PDIF(JT)
7896           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
7897   250   CONTINUE
7898         SH=VINT(2)
7899         SQM1=PMM(1)**2
7900         SQM2=PMM(2)**2
7901         SQM3=PDIF(1)**2
7902         SQM4=PDIF(2)**2
7903         SMRES1=(PMM(1)+PMRC)**2
7904         SMRES2=(PMM(2)+PMRC)**2
7905  
7906 C...Find elastic slope and lower limit diffractive slope.
7907         IHA=MAX(2,IABS(MINT(103))/110)
7908         IF(IHA.GE.5) IHA=1
7909         IHB=MAX(2,IABS(MINT(104))/110)
7910         IF(IHB.GE.5) IHB=1
7911         IF(ISUB.EQ.91) THEN
7912           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
7913         ELSEIF(ISUB.EQ.92) THEN
7914           BMN=MAX(2D0,2D0*BHAD(IHB))
7915         ELSEIF(ISUB.EQ.93) THEN
7916           BMN=MAX(2D0,2D0*BHAD(IHA))
7917         ELSEIF(ISUB.EQ.94) THEN
7918           BMN=2D0*ALP*4D0
7919         ENDIF
7920  
7921 C...Determine maximum possible t range and coefficient of generation.
7922         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
7923         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
7924         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
7925         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
7926         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
7927      &  (SQM1*SQM4-SQM2*SQM3)/SH
7928         THL=-0.5D0*(THA+THB)
7929         THU=THC/THL
7930         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
7931  
7932 C...Select diffractive mass/masses according to dm^2/m^2.
7933         LOOP3=0
7934   260   LOOP3=LOOP3+1
7935         DO 270 JT=1,2
7936           IF(MINT(16+JT).EQ.0) THEN
7937             PDIF(2+JT)=PDIF(JT)
7938           ELSE
7939             PMMIN=PDIF(JT)
7940             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
7941             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
7942           ENDIF
7943   270   CONTINUE
7944         SQM3=PDIF(3)**2
7945         SQM4=PDIF(4)**2
7946  
7947 C..Additional mass factors, including resonance enhancement.
7948         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
7949           IF(LOOP3.LT.100) GOTO 260
7950           GOTO 100
7951         ENDIF
7952         IF(ISUB.EQ.92) THEN
7953           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
7954           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
7955         ELSEIF(ISUB.EQ.93) THEN
7956           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
7957           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
7958         ELSEIF(ISUB.EQ.94) THEN
7959           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
7960      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
7961      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
7962           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
7963         ENDIF
7964  
7965 C...Select t according to exp(Bmn*t) and correct to right slope.
7966         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
7967         IF(ISUB.GE.92) THEN
7968           IF(ISUB.EQ.92) THEN
7969             BADD=2D0*ALP*LOG(SH/SQM3)
7970             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
7971           ELSEIF(ISUB.EQ.93) THEN
7972             BADD=2D0*ALP*LOG(SH/SQM4)
7973             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
7974           ELSEIF(ISUB.EQ.94) THEN
7975             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
7976           ENDIF
7977           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
7978         ENDIF
7979  
7980 C...Check whether m^2 and t choices are consistent.
7981         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
7982         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
7983         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
7984         IF(THB.LE.1D-8) GOTO 260
7985         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
7986      &  (SQM1*SQM4-SQM2*SQM3)/SH
7987         THLM=-0.5D0*(THA+THB)
7988         THUM=THC/THLM
7989         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
7990  
7991 C...Information to output.
7992         VINT(21)=1D0
7993         VINT(22)=0D0
7994         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
7995         VINT(45)=TH
7996         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
7997         VINT(63)=PDIF(3)**2
7998         VINT(64)=PDIF(4)**2
7999         VINT(283)=PMM(1)**2/4D0
8000         VINT(284)=PMM(2)**2/4D0
8001  
8002 C...Note: in the following, by In is meant the integral over the
8003 C...quantity multiplying coefficient cn.
8004 C...Choose tau according to h1(tau)/tau, where
8005 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
8006 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
8007 C...I1/I5*c5*1/(tau+tau_R') +
8008 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
8009 C...I1/I7*c7*tau/(1.-tau), and
8010 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
8011       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
8012         CALL PYKLIM(1)
8013         IF(MINT(51).NE.0) THEN
8014           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8015           IF(MFAIL.EQ.1) THEN
8016             MSTI(61)=1
8017             RETURN
8018           ENDIF
8019           GOTO 100
8020         ENDIF
8021         RTAU=PYR(0)
8022         MTAU=1
8023         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
8024         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
8025         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
8026         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
8027      &  MTAU=5
8028         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
8029      &  COEF(ISUB,5)) MTAU=6
8030         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
8031      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
8032         CALL PYKMAP(1,MTAU,PYR(0))
8033  
8034 C...2 -> 3, 4 processes:
8035 C...Choose tau' according to h4(tau,tau')/tau', where
8036 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
8037 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
8038         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
8039           CALL PYKLIM(4)
8040           IF(MINT(51).NE.0) THEN
8041             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8042             IF(MFAIL.EQ.1) THEN
8043               MSTI(61)=1
8044               RETURN
8045             ENDIF
8046             GOTO 100
8047           ENDIF
8048           RTAUP=PYR(0)
8049           MTAUP=1
8050           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
8051           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
8052           CALL PYKMAP(4,MTAUP,PYR(0))
8053         ENDIF
8054  
8055 C...Choose y* according to h2(y*), where
8056 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
8057 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
8058 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
8059 C...and c1 + c2 + c3 + c4 + c5 = 1.
8060         CALL PYKLIM(2)
8061         IF(MINT(51).NE.0) THEN
8062           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8063           IF(MFAIL.EQ.1) THEN
8064             MSTI(61)=1
8065             RETURN
8066           ENDIF
8067           GOTO 100
8068         ENDIF
8069         RYST=PYR(0)
8070         MYST=1
8071         IF(RYST.GT.COEF(ISUB,8)) MYST=2
8072         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
8073         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
8074         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
8075      &  COEF(ISUB,11)) MYST=5
8076         CALL PYKMAP(2,MYST,PYR(0))
8077  
8078 C...2 -> 2 processes:
8079 C...Choose cos(theta-hat) (cth) according to h3(cth), where
8080 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
8081 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
8082 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
8083 C...and c0 + c1 + c2 + c3 + c4 = 1.
8084         CALL PYKLIM(3)
8085         IF(MINT(51).NE.0) THEN
8086           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8087           IF(MFAIL.EQ.1) THEN
8088             MSTI(61)=1
8089             RETURN
8090           ENDIF
8091           GOTO 100
8092         ENDIF
8093         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
8094           RCTH=PYR(0)
8095           MCTH=1
8096           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
8097           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
8098           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
8099           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
8100      &    COEF(ISUB,16)) MCTH=5
8101           CALL PYKMAP(3,MCTH,PYR(0))
8102         ENDIF
8103  
8104 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
8105         IF(ISTSB.EQ.5) THEN
8106           CALL PYKMAP(5,0,0D0)
8107           IF(MINT(51).NE.0) THEN
8108             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8109             IF(MFAIL.EQ.1) THEN
8110               MSTI(61)=1
8111               RETURN
8112             ENDIF
8113             GOTO 100
8114           ENDIF
8115         ENDIF
8116  
8117 C...DIS as f + gamma* -> f process: set dummy values.
8118       ELSEIF(ISTSB.EQ.8) THEN
8119         VINT(21)=0.9D0
8120         VINT(22)=0D0
8121         VINT(23)=0D0
8122         VINT(47)=0D0
8123         VINT(48)=0D0
8124  
8125 C...Low-pT or multiple interactions (first semihard interaction).
8126       ELSEIF(ISTSB.EQ.9) THEN
8127         CALL PYMULT(3)
8128         ISUB=MINT(1)
8129  
8130 C...Study user-defined process: kinematics plus weight.
8131       ELSEIF(ISTSB.EQ.11) THEN
8132         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
8133      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
8134         MSTI(51)=0
8135         IF(NUP.LE.0) THEN
8136           MINT(51)=2
8137           MSTI(51)=1
8138           IF(MINT(82).EQ.1) THEN
8139             NGEN(0,1)=NGEN(0,1)-1
8140             NGEN(ISUB,1)=NGEN(ISUB,1)-1
8141           ENDIF
8142           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8143           RETURN
8144         ENDIF
8145  
8146 C...Extract cross section event weight.
8147         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
8148           SIGS=1D-9*XWGTUP
8149         ELSE
8150           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
8151         ENDIF
8152         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
8153           VINT(97)=SIGN(1D0,XWGTUP)
8154         ELSE
8155           VINT(97)=1D-9*XWGTUP
8156         ENDIF
8157  
8158 C...Construct 'trivial' kinematical variables needed.
8159         KFL1=IDUP(1)
8160         KFL2=IDUP(2)
8161         VINT(41)=PUP(4,1)/EBMUP(1)
8162         VINT(42)=PUP(4,2)/EBMUP(2)
8163         VINT(21)=VINT(41)*VINT(42)
8164         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
8165         VINT(44)=VINT(21)*VINT(2)
8166         VINT(43)=SQRT(MAX(0D0,VINT(44)))
8167         VINT(55)=SCALUP
8168         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
8169         VINT(56)=VINT(55)**2
8170         VINT(57)=AQEDUP
8171         VINT(58)=AQCDUP
8172  
8173 C...Construct other kinematical variables needed (approximately).
8174         VINT(23)=0D0
8175         VINT(26)=VINT(21)
8176         VINT(45)=-0.5D0*VINT(44)
8177         VINT(46)=-0.5D0*VINT(44)
8178         VINT(49)=VINT(43)
8179         VINT(50)=VINT(44)
8180         VINT(51)=VINT(55)
8181         VINT(52)=VINT(56)
8182         VINT(53)=VINT(55)
8183         VINT(54)=VINT(56)
8184         VINT(25)=0D0
8185         VINT(48)=0D0
8186         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
8187      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
8188         DO 280 IUP=3,NUP
8189           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
8190      &    '(PYRAND:) unacceptable ISTUP code for particles')
8191           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
8192      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
8193           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
8194      &    PUP(2,IUP)**2)
8195   280   CONTINUE
8196         VINT(47)=SQRT(VINT(48))
8197       ENDIF
8198  
8199 C...Choose azimuthal angle.
8200       VINT(24)=0D0
8201       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
8202  
8203 C...Check against user cuts on kinematics at parton level.
8204       MINT(51)=0
8205       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
8206       IF(MINT(51).NE.0) THEN
8207         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8208         IF(MFAIL.EQ.1) THEN
8209           MSTI(61)=1
8210           RETURN
8211         ENDIF
8212         GOTO 100
8213       ENDIF
8214       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
8215         MCUT=0
8216         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
8217      &  CALL PYKCUT(MCUT)
8218         IF(MCUT.NE.0) THEN
8219           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8220           IF(MFAIL.EQ.1) THEN
8221             MSTI(61)=1
8222             RETURN
8223           ENDIF
8224           GOTO 100
8225         ENDIF
8226       ENDIF
8227  
8228 C...Calculate differential cross-section for different subprocesses.
8229       IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
8230       SIGSOR=SIGS
8231       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
8232  
8233 C...Multiply cross section by lepton -> photon flux factor.
8234       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
8235         SIGS=WTGAGA*SIGS
8236         DO 290 ICHN=1,NCHN
8237           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
8238   290   CONTINUE
8239         SIGLPT=WTGAGA*SIGLPT
8240       ENDIF
8241  
8242 C...Multiply cross-section by user-defined weights.
8243       IF(MSTP(173).EQ.1) THEN
8244         SIGS=PARP(173)*SIGS
8245         DO 300 ICHN=1,NCHN
8246           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
8247   300   CONTINUE
8248         SIGLPT=PARP(173)*SIGLPT
8249       ENDIF
8250       WTXS=1D0
8251       SIGSWT=SIGS
8252       VINT(99)=1D0
8253       VINT(100)=1D0
8254       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
8255         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
8256      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
8257         SIGSWT=WTXS*SIGS
8258         VINT(99)=WTXS
8259         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
8260       ENDIF
8261  
8262 C...Calculations for Monte Carlo estimate of all cross-sections.
8263       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
8264         IF(MSTP(142).LE.1) THEN
8265           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
8266         ELSE
8267           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
8268         ENDIF
8269       ELSEIF(MINT(82).EQ.1) THEN
8270         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
8271       ENDIF
8272       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
8273      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
8274  
8275 C...Multiple interactions: store results of cross-section calculation.
8276       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
8277         VINT(153)=SIGSOR
8278         CALL PYMULT(4)
8279       ENDIF
8280  
8281 C...Ratio of actual to maximum cross section.
8282       IF(ISTSB.NE.11) THEN
8283         VIOL=SIGSWT/XSEC(ISUB,1)
8284         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
8285       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
8286         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
8287       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
8288         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
8289       ELSE
8290         VIOL=1D0
8291       ENDIF
8292  
8293 C...Check that weight not negative.
8294       IF(MSTP(123).LE.0) THEN
8295         IF(VIOL.LT.-1D-3) THEN
8296           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
8297           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
8298      &    VINT(22),VINT(23),VINT(26)
8299           STOP
8300         ENDIF
8301       ELSE
8302         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
8303           VINT(109)=VIOL
8304           WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
8305           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
8306      &    VINT(22),VINT(23),VINT(26)
8307         ENDIF
8308       ENDIF
8309  
8310 C...Weighting using estimate of maximum of differential cross-section.
8311       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
8312         IF(VIOL.LT.PYR(0)) THEN
8313           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8314           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
8315           GOTO 100
8316         ENDIF
8317       ELSEIF(MFAIL.EQ.0) THEN
8318         RATND=SIGLPT/XSEC(95,1)
8319         VIOL=VIOL/RATND
8320         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
8321           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
8322      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
8323           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8324           ISUB=0
8325           GOTO 100
8326         ENDIF
8327         IF(VIOL.LT.PYR(0)) THEN
8328           GOTO 140
8329         ENDIF
8330       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
8331         IF(VIOL.LT.PYR(0)) THEN
8332           MSTI(61)=1
8333           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8334           RETURN
8335         ENDIF
8336       ELSE
8337         RATND=SIGLPT/XSEC(95,1)
8338         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
8339           MSTI(61)=1
8340           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8341           RETURN
8342         ENDIF
8343         VIOL=VIOL/RATND
8344         IF(VIOL.LT.PYR(0)) THEN
8345           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8346           GOTO 100
8347         ENDIF
8348       ENDIF
8349  
8350 C...Check for possible violation of estimated maximum of differential
8351 C...cross-section used in weighting.
8352       IF(MSTP(123).LE.0) THEN
8353         IF(VIOL.GT.1D0) THEN
8354           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
8355           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8356      &    VINT(22),VINT(23),VINT(26)
8357           STOP
8358         ENDIF
8359       ELSEIF(MSTP(123).EQ.1) THEN
8360         IF(VIOL.GT.VINT(108)) THEN
8361           VINT(108)=VIOL
8362           IF(VIOL.GT.1.0001D0) THEN
8363             MINT(10)=1
8364             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
8365             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8366      &      VINT(22),VINT(23),VINT(26)
8367           ENDIF
8368         ENDIF
8369       ELSEIF(VIOL.GT.VINT(108)) THEN
8370         VINT(108)=VIOL
8371         IF(VIOL.GT.1D0) THEN
8372           MINT(10)=1
8373           WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
8374           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
8375      &    THEN
8376             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
8377             IF(KFPR(ISUB,1).LE.9) THEN
8378               WRITE(MSTU(11),5800) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8379             ELSEIF(KFPR(ISUB,1).LE.99) THEN
8380               WRITE(MSTU(11),5900) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8381             ELSE
8382               WRITE(MSTU(11),6000) KFPR(ISUB,1),XMAXUP(KFPR(ISUB,1))
8383             ENDIF
8384           ENDIF
8385           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
8386             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
8387             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
8388             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
8389      &      XSEC(0,1)=XSEC(0,1)+XDIF
8390             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
8391      &      VINT(22),VINT(23),VINT(26)
8392             IF(ISUB.LE.9) THEN
8393               WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
8394             ELSEIF(ISUB.LE.99) THEN
8395               WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
8396             ELSE
8397               WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
8398             ENDIF
8399           ENDIF
8400           VINT(108)=1D0
8401         ENDIF
8402       ENDIF
8403  
8404 C...Multiple interactions: choose impact parameter.
8405       VINT(148)=1D0
8406       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
8407      &MSTP(82).GE.3) THEN
8408         CALL PYMULT(5)
8409         IF(VINT(150).LT.PYR(0)) THEN
8410           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8411           IF(MFAIL.EQ.1) THEN
8412             MSTI(61)=1
8413             RETURN
8414           ENDIF
8415           GOTO 100
8416         ENDIF
8417       ENDIF
8418       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
8419       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
8420         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
8421         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
8422       ENDIF
8423       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
8424  
8425 C...Choose flavour of reacting partons (and subprocess).
8426       IF(ISTSB.GE.11) GOTO 320
8427       RSIGS=SIGS*PYR(0)
8428       QT2=VINT(48)
8429       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
8430      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
8431       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
8432      &PYR(0).GT.RQQBAR)) THEN
8433         DO 310 ICHN=1,NCHN
8434           KFL1=ISIG(ICHN,1)
8435           KFL2=ISIG(ICHN,2)
8436           MINT(2)=ISIG(ICHN,3)
8437           RSIGS=RSIGS-SIGH(ICHN)
8438           IF(RSIGS.LE.0D0) GOTO 320
8439   310   CONTINUE
8440  
8441 C...Multiple interactions: choose qqbar preferentially at small pT.
8442       ELSEIF(ISUB.EQ.96) THEN
8443         MINT(105)=MINT(103)
8444         MINT(109)=MINT(107)
8445         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
8446         MINT(105)=MINT(104)
8447         MINT(109)=MINT(108)
8448         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
8449         MINT(1)=11
8450         MINT(2)=1
8451         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
8452  
8453 C...Low-pT: choose string drawing configuration.
8454       ELSE
8455         KFL1=21
8456         KFL2=21
8457         RSIGS=6D0*PYR(0)
8458         MINT(2)=1
8459         IF(RSIGS.GT.1D0) MINT(2)=2
8460         IF(RSIGS.GT.2D0) MINT(2)=3
8461       ENDIF
8462  
8463 C...Reassign QCD process. Partons before initial state radiation.
8464   320 IF(MINT(2).GT.10) THEN
8465         MINT(1)=MINT(2)/10
8466         MINT(2)=MOD(MINT(2),10)
8467       ENDIF
8468       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
8469      &NGEN(MINT(1),2)+1
8470       MINT(15)=KFL1
8471       MINT(16)=KFL2
8472       MINT(13)=MINT(15)
8473       MINT(14)=MINT(16)
8474       VINT(141)=VINT(41)
8475       VINT(142)=VINT(42)
8476       VINT(151)=0D0
8477       VINT(152)=0D0
8478  
8479 C...Calculate x value of photon for parton inside photon inside e.
8480       DO 350 JT=1,2
8481         MINT(18+JT)=0
8482         VINT(154+JT)=0D0
8483         MSPLI=0
8484         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
8485         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
8486         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
8487         IF(MSPLI.EQ.2) THEN
8488           KFLH=MINT(14+JT)
8489           XHRD=VINT(140+JT)
8490           Q2HRD=VINT(54)
8491           MINT(105)=MINT(102+JT)
8492           MINT(109)=MINT(106+JT)
8493           VINT(120)=VINT(2+JT)
8494           IF(MSTP(57).LE.1) THEN
8495             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
8496           ELSE
8497             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
8498           ENDIF
8499           WTMX=4D0*XPQ(KFLH)
8500           IF(MSTP(13).EQ.2) THEN
8501             Q2PMS=Q2HRD/PMAS(11,1)**2
8502             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
8503           ENDIF
8504   330     XE=XHRD**PYR(0)
8505           XG=MIN(1D0-1D-10,XHRD/XE)
8506           IF(MSTP(57).LE.1) THEN
8507             CALL PYPDFU(22,XG,Q2HRD,XPQ)
8508           ELSE
8509             CALL PYPDFL(22,XG,Q2HRD,XPQ)
8510           ENDIF
8511           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
8512           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
8513           IF(WT.LT.PYR(0)*WTMX) GOTO 330
8514           MINT(18+JT)=1
8515           VINT(154+JT)=XE
8516           DO 340 KFLS=-25,25
8517             XSFX(JT,KFLS)=XPQ(KFLS)
8518   340     CONTINUE
8519         ENDIF
8520   350 CONTINUE
8521  
8522 C...Pick scale where photon is resolved.
8523       Q0S=PARP(15)**2
8524       Q1S=VINT(154)**2
8525       VINT(283)=0D0
8526       IF(MINT(107).EQ.3) THEN
8527         IF(MSTP(66).EQ.1) THEN
8528           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
8529         ELSEIF(MSTP(66).EQ.2) THEN
8530           PS=VINT(3)**2
8531           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
8532      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
8533           Q2INT=SQRT(Q0S*Q2EFF)
8534           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
8535         ELSEIF(MSTP(66).EQ.3) THEN
8536           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
8537         ELSEIF(MSTP(66).GE.4) THEN
8538           PS=0.25D0*VINT(3)**2
8539           VINT(283)=(Q0S+PS)*(Q1S+PS)/
8540      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
8541         ENDIF
8542       ENDIF
8543       VINT(284)=0D0
8544       IF(MINT(108).EQ.3) THEN
8545         IF(MSTP(66).EQ.1) THEN
8546           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
8547         ELSEIF(MSTP(66).EQ.2) THEN
8548           PS=VINT(4)**2
8549           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
8550      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
8551           Q2INT=SQRT(Q0S*Q2EFF)
8552           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
8553         ELSEIF(MSTP(66).EQ.3) THEN
8554           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
8555         ELSEIF(MSTP(66).GE.4) THEN
8556           PS=0.25D0*VINT(4)**2
8557           VINT(284)=(Q0S+PS)*(Q1S+PS)/
8558      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
8559         ENDIF
8560       ENDIF
8561       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
8562  
8563 C...Format statements for differential cross-section maximum violations.
8564  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
8565      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
8566  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
8567      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
8568  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
8569      &'in event',1X,I7)
8570  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
8571      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
8572  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
8573      &'in event',1X,I7)
8574  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
8575  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
8576  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
8577  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
8578  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
8579  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
8580  
8581       RETURN
8582       END
8583  
8584 C*********************************************************************
8585  
8586 C...PYSCAT
8587 C...Finds outgoing flavours and event type; sets up the kinematics
8588 C...and colour flow of the hard scattering
8589  
8590       SUBROUTINE PYSCAT
8591  
8592 C...Double precision and integer declarations
8593       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8594       IMPLICIT INTEGER(I-N)
8595       INTEGER PYK,PYCHGE,PYCOMP
8596 C...Parameter statement to help give large particle numbers.
8597       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
8598      &KEXCIT=4000000,KDIMEN=5000000)
8599  
8600 C...User process event common block.
8601       INTEGER MAXNUP
8602       PARAMETER (MAXNUP=500)
8603       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
8604       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
8605       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
8606      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
8607      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
8608       SAVE /HEPEUP/
8609  
8610 C...Commonblocks
8611       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
8612       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8613       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8614       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
8615       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8616       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8617       COMMON/PYINT1/MINT(400),VINT(400)
8618       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8619       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
8620       COMMON/PYINT4/MWID(500),WIDS(500,5)
8621       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8622       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
8623      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
8624       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
8625       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
8626      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,/PYTCSM/
8627 C...Local arrays and saved variables
8628       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
8629      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
8630       SAVE VINTSV
8631  
8632 C...Read out process
8633       ISUB=MINT(1)
8634       ISUBSV=ISUB
8635  
8636 C...Restore information for low-pT processes
8637       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
8638         DO 100 J=41,66
8639   100   VINT(J)=VINTSV(J)
8640       ENDIF
8641  
8642 C...Convert H' or A process into equivalent H one
8643       IHIGG=1
8644       KFHIGG=25
8645       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
8646      &ISUB.LE.190)) THEN
8647         IHIGG=2
8648         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
8649         KFHIGG=33+IHIGG
8650         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
8651         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
8652         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
8653         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
8654         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
8655         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
8656         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
8657         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
8658         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
8659         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
8660         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
8661         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
8662       ENDIF
8663  
8664 C...Choice of subprocess, number of documentation lines
8665       IDOC=6+ISET(ISUB)
8666       IF(ISUB.EQ.95) IDOC=8
8667       IF(ISET(ISUB).EQ.5) IDOC=9
8668       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
8669       MINT(3)=IDOC-6
8670       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
8671       MINT(4)=IDOC
8672       IPU1=MINT(84)+1
8673       IPU2=MINT(84)+2
8674       IPU3=MINT(84)+3
8675       IPU4=MINT(84)+4
8676       IPU5=MINT(84)+5
8677       IPU6=MINT(84)+6
8678  
8679 C...Reset K, P and V vectors. Store incoming particles
8680       DO 120 JT=1,MSTP(126)+100
8681         I=MINT(83)+JT
8682         IF(I.GT.MSTU(4)) GOTO 120
8683         DO 110 J=1,5
8684           K(I,J)=0
8685           P(I,J)=0D0
8686           V(I,J)=0D0
8687   110   CONTINUE
8688   120 CONTINUE
8689       DO 140 JT=1,2
8690         I=MINT(83)+JT
8691         K(I,1)=21
8692         K(I,2)=MINT(10+JT)
8693         DO 130 J=1,5
8694           P(I,J)=VINT(285+5*JT+J)
8695   130   CONTINUE
8696   140 CONTINUE
8697       MINT(6)=2
8698       KFRES=0
8699  
8700 C...Store incoming partons in their CM-frame
8701       SH=VINT(44)
8702       SHR=SQRT(SH)
8703       SHP=VINT(26)*VINT(2)
8704       SHPR=SQRT(SHP)
8705       SHUSER=SHR
8706       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
8707       DO 150 JT=1,2
8708         I=MINT(84)+JT
8709         K(I,1)=14
8710         K(I,2)=MINT(14+JT)
8711         K(I,3)=MINT(83)+2+JT
8712         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
8713         P(I,4)=0.5D0*SHUSER
8714   150 CONTINUE
8715  
8716 C...Copy incoming partons to documentation lines
8717       DO 170 JT=1,2
8718         I1=MINT(83)+4+JT
8719         I2=MINT(84)+JT
8720         K(I1,1)=21
8721         K(I1,2)=K(I2,2)
8722         K(I1,3)=I1-2
8723         DO 160 J=1,5
8724           P(I1,J)=P(I2,J)
8725   160   CONTINUE
8726   170 CONTINUE
8727  
8728 C...Choose new quark/lepton flavour for relevant annihilation graphs
8729       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
8730      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
8731         IGLGA=21
8732         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
8733         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
8734   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
8735         DO 190 I=1,MDCY(IGLGA,3)
8736           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
8737           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
8738           IF(RKFL.LE.0D0) GOTO 200
8739   190   CONTINUE
8740   200   CONTINUE
8741         IF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.2) THEN
8742           IF(KFLF.GE.4) GOTO 180
8743         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.4) THEN
8744           KFLF=4
8745           MINT(2)=MINT(2)-2
8746         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385) THEN
8747           KFLF=5
8748           MINT(2)=MINT(2)-4
8749         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
8750      &  .AND.IABS(KFLF).GE.3) THEN
8751           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
8752      &    VINT(44)**2
8753           FACCIB=VINT(46)**2/RTCM(41)**4
8754           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
8755         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
8756           KFLF=5
8757           MINT(2)=1
8758         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
8759           IF(KFLF.EQ.5) GOTO 180
8760         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
8761           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
8762         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
8763           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
8764         ENDIF
8765       ENDIF
8766  
8767 C...Final state flavours and colour flow: default values
8768       JS=1
8769       MINT(21)=MINT(15)
8770       MINT(22)=MINT(16)
8771       MINT(23)=0
8772       MINT(24)=0
8773       KCC=20
8774       KCS=ISIGN(1,MINT(15))
8775  
8776       IF(ISET(ISUB).EQ.11) THEN
8777 C...User-defined processes: find products
8778         MINT(3)=0
8779         DO 210 IUP=3,NUP
8780           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
8781           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
8782             MINT(21+IUP)=IDUP(IUP)
8783           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
8784      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
8785           ELSEIF(IDUP(IUP).EQ.0) THEN
8786           ELSE
8787             MINT(3)=MINT(3)+1
8788             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
8789           ENDIF
8790   210   CONTINUE
8791  
8792       ELSEIF(ISUB.LE.10) THEN
8793         IF(ISUB.EQ.1) THEN
8794 C...f + fbar -> gamma*/Z0
8795           KFRES=23
8796  
8797         ELSEIF(ISUB.EQ.2) THEN
8798 C...f + fbar' -> W+/-
8799           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
8800           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
8801           KFRES=ISIGN(24,KCH1+KCH2)
8802  
8803         ELSEIF(ISUB.EQ.3) THEN
8804 C...f + fbar -> h0 (or H0, or A0)
8805           KFRES=KFHIGG
8806  
8807         ELSEIF(ISUB.EQ.4) THEN
8808 C...gamma + W+/- -> W+/-
8809  
8810         ELSEIF(ISUB.EQ.5) THEN
8811 C...Z0 + Z0 -> h0
8812           XH=SH/SHP
8813           MINT(21)=MINT(15)
8814           MINT(22)=MINT(16)
8815           PMQ(1)=PYMASS(MINT(21))
8816           PMQ(2)=PYMASS(MINT(22))
8817   220     JT=INT(1.5D0+PYR(0))
8818           ZMIN=2D0*PMQ(JT)/SHPR
8819           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
8820      &    (SHPR*(SHPR-PMQ(3-JT)))
8821           ZMAX=MIN(1D0-XH,ZMAX)
8822           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
8823           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
8824      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
8825           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
8826           IF(SQC1.LT.1D-8) GOTO 220
8827           C1=SQRT(SQC1)
8828           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
8829           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8830           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
8831           Z(3-JT)=1D0-XH/(1D0-Z(JT))
8832           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
8833           IF(SQC1.LT.1D-8) GOTO 220
8834           C1=SQRT(SQC1)
8835           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
8836           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8837           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
8838           PHIR=PARU(2)*PYR(0)
8839           CPHI=COS(PHIR)
8840           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
8841      &    SQRT(1D0-CTHE(2)**2)*CPHI
8842           Z1=2D0-Z(JT)
8843           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
8844           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
8845           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
8846      &    PMQ(3-JT)**2/SHP))
8847           ZMIN=2D0*PMQ(3-JT)/SHPR
8848           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
8849           ZMAX=MIN(1D0-XH,ZMAX)
8850           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
8851           KCC=22
8852           KFRES=25
8853  
8854         ELSEIF(ISUB.EQ.6) THEN
8855 C...Z0 + W+/- -> W+/-
8856  
8857         ELSEIF(ISUB.EQ.7) THEN
8858 C...W+ + W- -> Z0
8859  
8860         ELSEIF(ISUB.EQ.8) THEN
8861 C...W+ + W- -> h0
8862           XH=SH/SHP
8863   230     DO 260 JT=1,2
8864             I=MINT(14+JT)
8865             IA=IABS(I)
8866             IF(IA.LE.10) THEN
8867               RVCKM=VINT(180+I)*PYR(0)
8868               DO 240 J=1,MSTP(1)
8869                 IB=2*J-1+MOD(IA,2)
8870                 IPM=(5-ISIGN(1,I))/2
8871                 IDC=J+MDCY(IA,2)+2
8872                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
8873                 MINT(20+JT)=ISIGN(IB,I)
8874                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
8875                 IF(RVCKM.LE.0D0) GOTO 250
8876   240         CONTINUE
8877             ELSE
8878               IB=2*((IA+1)/2)-1+MOD(IA,2)
8879               MINT(20+JT)=ISIGN(IB,I)
8880             ENDIF
8881   250       PMQ(JT)=PYMASS(MINT(20+JT))
8882   260     CONTINUE
8883           JT=INT(1.5D0+PYR(0))
8884           ZMIN=2D0*PMQ(JT)/SHPR
8885           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
8886      &    (SHPR*(SHPR-PMQ(3-JT)))
8887           ZMAX=MIN(1D0-XH,ZMAX)
8888           IF(ZMIN.GE.ZMAX) GOTO 230
8889           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
8890           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
8891      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
8892           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
8893           IF(SQC1.LT.1D-8) GOTO 230
8894           C1=SQRT(SQC1)
8895           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
8896           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8897           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
8898           Z(3-JT)=1D0-XH/(1D0-Z(JT))
8899           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
8900           IF(SQC1.LT.1D-8) GOTO 230
8901           C1=SQRT(SQC1)
8902           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
8903           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
8904           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
8905           PHIR=PARU(2)*PYR(0)
8906           CPHI=COS(PHIR)
8907           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
8908      &    SQRT(1D0-CTHE(2)**2)*CPHI
8909           Z1=2D0-Z(JT)
8910           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
8911           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
8912           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
8913      &    PMQ(3-JT)**2/SHP))
8914           ZMIN=2D0*PMQ(3-JT)/SHPR
8915           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
8916           ZMAX=MIN(1D0-XH,ZMAX)
8917           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
8918           KCC=22
8919           KFRES=25
8920  
8921         ELSEIF(ISUB.EQ.10) THEN
8922 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
8923           IF(MINT(2).EQ.1) THEN
8924             KCC=22
8925           ELSE
8926 C...W exchange: need to mix flavours according to CKM matrix
8927             DO 280 JT=1,2
8928               I=MINT(14+JT)
8929               IA=IABS(I)
8930               IF(IA.LE.10) THEN
8931                 RVCKM=VINT(180+I)*PYR(0)
8932                 DO 270 J=1,MSTP(1)
8933                   IB=2*J-1+MOD(IA,2)
8934                   IPM=(5-ISIGN(1,I))/2
8935                   IDC=J+MDCY(IA,2)+2
8936                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
8937                   MINT(20+JT)=ISIGN(IB,I)
8938                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
8939                   IF(RVCKM.LE.0D0) GOTO 280
8940   270           CONTINUE
8941               ELSE
8942                 IB=2*((IA+1)/2)-1+MOD(IA,2)
8943                 MINT(20+JT)=ISIGN(IB,I)
8944               ENDIF
8945   280       CONTINUE
8946             KCC=22
8947           ENDIF
8948         ENDIF
8949  
8950       ELSEIF(ISUB.LE.20) THEN
8951         IF(ISUB.EQ.11) THEN
8952 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
8953           KCC=MINT(2)
8954           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
8955  
8956         ELSEIF(ISUB.EQ.12) THEN
8957 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
8958           MINT(21)=ISIGN(KFLF,MINT(15))
8959           MINT(22)=-MINT(21)
8960           KCC=4
8961  
8962         ELSEIF(ISUB.EQ.13) THEN
8963 C...f + fbar -> g + g; th arbitrary
8964           MINT(21)=21
8965           MINT(22)=21
8966           KCC=MINT(2)+4
8967  
8968         ELSEIF(ISUB.EQ.14) THEN
8969 C...f + fbar -> g + gamma; th arbitrary
8970           IF(PYR(0).GT.0.5D0) JS=2
8971           MINT(20+JS)=21
8972           MINT(23-JS)=22
8973           KCC=17+JS
8974  
8975         ELSEIF(ISUB.EQ.15) THEN
8976 C...f + fbar -> g + Z0; th arbitrary
8977           IF(PYR(0).GT.0.5D0) JS=2
8978           MINT(20+JS)=21
8979           MINT(23-JS)=23
8980           KCC=17+JS
8981  
8982         ELSEIF(ISUB.EQ.16) THEN
8983 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
8984           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
8985           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
8986           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
8987           MINT(20+JS)=21
8988           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
8989           KCC=17+JS
8990  
8991         ELSEIF(ISUB.EQ.17) THEN
8992 C...f + fbar -> g + h0; th arbitrary
8993           IF(PYR(0).GT.0.5D0) JS=2
8994           MINT(20+JS)=21
8995           MINT(23-JS)=25
8996           KCC=17+JS
8997  
8998         ELSEIF(ISUB.EQ.18) THEN
8999 C...f + fbar -> gamma + gamma; th arbitrary
9000           MINT(21)=22
9001           MINT(22)=22
9002  
9003         ELSEIF(ISUB.EQ.19) THEN
9004 C...f + fbar -> gamma + Z0; th arbitrary
9005           IF(PYR(0).GT.0.5D0) JS=2
9006           MINT(20+JS)=22
9007           MINT(23-JS)=23
9008  
9009         ELSEIF(ISUB.EQ.20) THEN
9010 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
9011 C...(p(fbar')-p(W+))**2
9012           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9013           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9014           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
9015           MINT(20+JS)=22
9016           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
9017         ENDIF
9018  
9019       ELSEIF(ISUB.LE.30) THEN
9020         IF(ISUB.EQ.21) THEN
9021 C...f + fbar -> gamma + h0; th arbitrary
9022           IF(PYR(0).GT.0.5D0) JS=2
9023           MINT(20+JS)=22
9024           MINT(23-JS)=25
9025  
9026         ELSEIF(ISUB.EQ.22) THEN
9027 C...f + fbar -> Z0 + Z0; th arbitrary
9028           MINT(21)=23
9029           MINT(22)=23
9030  
9031         ELSEIF(ISUB.EQ.23) THEN
9032 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
9033           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9034           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9035           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
9036           MINT(20+JS)=23
9037           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
9038  
9039         ELSEIF(ISUB.EQ.24) THEN
9040 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
9041           IF(PYR(0).GT.0.5D0) JS=2
9042           MINT(20+JS)=23
9043           MINT(23-JS)=KFHIGG
9044  
9045         ELSEIF(ISUB.EQ.25) THEN
9046 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
9047           MINT(21)=-ISIGN(24,MINT(15))
9048           MINT(22)=-MINT(21)
9049  
9050         ELSEIF(ISUB.EQ.26) THEN
9051 C...f + fbar' -> W+/- + h0 (or H0, or A0);
9052 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
9053           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9054           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9055           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
9056           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
9057           MINT(23-JS)=KFHIGG
9058  
9059         ELSEIF(ISUB.EQ.27) THEN
9060 C...f + fbar -> h0 + h0
9061  
9062         ELSEIF(ISUB.EQ.28) THEN
9063 C...f + g -> f + g; th = (p(f)-p(f))**2
9064           IF(MINT(15).EQ.21) JS=2
9065           KCC=MINT(2)+6
9066           IF(MINT(15).EQ.21) KCC=KCC+2
9067           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
9068           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
9069  
9070         ELSEIF(ISUB.EQ.29) THEN
9071 C...f + g -> f + gamma; th = (p(f)-p(f))**2
9072           IF(MINT(15).EQ.21) JS=2
9073           MINT(23-JS)=22
9074           KCC=15+JS
9075           KCS=ISIGN(1,MINT(14+JS))
9076  
9077         ELSEIF(ISUB.EQ.30) THEN
9078 C...f + g -> f + Z0; th = (p(f)-p(f))**2
9079           IF(MINT(15).EQ.21) JS=2
9080           MINT(23-JS)=23
9081           KCC=15+JS
9082           KCS=ISIGN(1,MINT(14+JS))
9083         ENDIF
9084  
9085       ELSEIF(ISUB.LE.40) THEN
9086         IF(ISUB.EQ.31) THEN
9087 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
9088           IF(MINT(15).EQ.21) JS=2
9089           I=MINT(14+JS)
9090           IA=IABS(I)
9091           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
9092           RVCKM=VINT(180+I)*PYR(0)
9093           DO 290 J=1,MSTP(1)
9094             IB=2*J-1+MOD(IA,2)
9095             IPM=(5-ISIGN(1,I))/2
9096             IDC=J+MDCY(IA,2)+2
9097             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
9098             MINT(20+JS)=ISIGN(IB,I)
9099             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9100             IF(RVCKM.LE.0D0) GOTO 300
9101   290     CONTINUE
9102   300     KCC=15+JS
9103           KCS=ISIGN(1,MINT(14+JS))
9104  
9105         ELSEIF(ISUB.EQ.32) THEN
9106 C...f + g -> f + h0; th = (p(f)-p(f))**2
9107           IF(MINT(15).EQ.21) JS=2
9108           MINT(23-JS)=25
9109           KCC=15+JS
9110           KCS=ISIGN(1,MINT(14+JS))
9111  
9112         ELSEIF(ISUB.EQ.33) THEN
9113 C...f + gamma -> f + g; th=(p(f)-p(f))**2
9114           IF(MINT(15).EQ.22) JS=2
9115           MINT(23-JS)=21
9116           KCC=24+JS
9117           KCS=ISIGN(1,MINT(14+JS))
9118  
9119         ELSEIF(ISUB.EQ.34) THEN
9120 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
9121           IF(MINT(15).EQ.22) JS=2
9122           KCC=22
9123           KCS=ISIGN(1,MINT(14+JS))
9124  
9125         ELSEIF(ISUB.EQ.35) THEN
9126 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
9127           IF(MINT(15).EQ.22) JS=2
9128           MINT(23-JS)=23
9129           KCC=22
9130  
9131         ELSEIF(ISUB.EQ.36) THEN
9132 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
9133           IF(MINT(15).EQ.22) JS=2
9134           I=MINT(14+JS)
9135           IA=IABS(I)
9136           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
9137           IF(IA.LE.10) THEN
9138             RVCKM=VINT(180+I)*PYR(0)
9139             DO 310 J=1,MSTP(1)
9140               IB=2*J-1+MOD(IA,2)
9141               IPM=(5-ISIGN(1,I))/2
9142               IDC=J+MDCY(IA,2)+2
9143               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
9144               MINT(20+JS)=ISIGN(IB,I)
9145               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9146               IF(RVCKM.LE.0D0) GOTO 320
9147   310       CONTINUE
9148           ELSE
9149             IB=2*((IA+1)/2)-1+MOD(IA,2)
9150             MINT(20+JS)=ISIGN(IB,I)
9151           ENDIF
9152   320     KCC=22
9153  
9154         ELSEIF(ISUB.EQ.37) THEN
9155 C...f + gamma -> f + h0
9156  
9157         ELSEIF(ISUB.EQ.38) THEN
9158 C...f + Z0 -> f + g
9159  
9160         ELSEIF(ISUB.EQ.39) THEN
9161 C...f + Z0 -> f + gamma
9162  
9163         ELSEIF(ISUB.EQ.40) THEN
9164 C...f + Z0 -> f + Z0
9165         ENDIF
9166  
9167       ELSEIF(ISUB.LE.50) THEN
9168         IF(ISUB.EQ.41) THEN
9169 C...f + Z0 -> f' + W+/-
9170  
9171         ELSEIF(ISUB.EQ.42) THEN
9172 C...f + Z0 -> f + h0
9173  
9174         ELSEIF(ISUB.EQ.43) THEN
9175 C...f + W+/- -> f' + g
9176  
9177         ELSEIF(ISUB.EQ.44) THEN
9178 C...f + W+/- -> f' + gamma
9179  
9180         ELSEIF(ISUB.EQ.45) THEN
9181 C...f + W+/- -> f' + Z0
9182  
9183         ELSEIF(ISUB.EQ.46) THEN
9184 C...f + W+/- -> f' + W+/-
9185  
9186         ELSEIF(ISUB.EQ.47) THEN
9187 C...f + W+/- -> f' + h0
9188  
9189         ELSEIF(ISUB.EQ.48) THEN
9190 C...f + h0 -> f + g
9191  
9192         ELSEIF(ISUB.EQ.49) THEN
9193 C...f + h0 -> f + gamma
9194  
9195         ELSEIF(ISUB.EQ.50) THEN
9196 C...f + h0 -> f + Z0
9197         ENDIF
9198  
9199       ELSEIF(ISUB.LE.60) THEN
9200         IF(ISUB.EQ.51) THEN
9201 C...f + h0 -> f' + W+/-
9202  
9203         ELSEIF(ISUB.EQ.52) THEN
9204 C...f + h0 -> f + h0
9205  
9206         ELSEIF(ISUB.EQ.53) THEN
9207 C...g + g -> f + fbar; th arbitrary
9208           KCS=(-1)**INT(1.5D0+PYR(0))
9209           MINT(21)=ISIGN(KFLF,KCS)
9210           MINT(22)=-MINT(21)
9211           KCC=MINT(2)+10
9212  
9213         ELSEIF(ISUB.EQ.54) THEN
9214 C...g + gamma -> f + fbar; th arbitrary
9215           KCS=(-1)**INT(1.5D0+PYR(0))
9216           MINT(21)=ISIGN(KFLF,KCS)
9217           MINT(22)=-MINT(21)
9218           KCC=27
9219           IF(MINT(16).EQ.21) KCC=28
9220  
9221         ELSEIF(ISUB.EQ.55) THEN
9222 C...g + Z0 -> f + fbar
9223  
9224         ELSEIF(ISUB.EQ.56) THEN
9225 C...g + W+/- -> f + fbar'
9226  
9227         ELSEIF(ISUB.EQ.57) THEN
9228 C...g + h0 -> f + fbar
9229  
9230         ELSEIF(ISUB.EQ.58) THEN
9231 C...gamma + gamma -> f + fbar; th arbitrary
9232           KCS=(-1)**INT(1.5D0+PYR(0))
9233           MINT(21)=ISIGN(KFLF,KCS)
9234           MINT(22)=-MINT(21)
9235           KCC=21
9236  
9237         ELSEIF(ISUB.EQ.59) THEN
9238 C...gamma + Z0 -> f + fbar
9239  
9240         ELSEIF(ISUB.EQ.60) THEN
9241 C...gamma + W+/- -> f + fbar'
9242         ENDIF
9243  
9244       ELSEIF(ISUB.LE.70) THEN
9245         IF(ISUB.EQ.61) THEN
9246 C...gamma + h0 -> f + fbar
9247  
9248         ELSEIF(ISUB.EQ.62) THEN
9249 C...Z0 + Z0 -> f + fbar
9250  
9251         ELSEIF(ISUB.EQ.63) THEN
9252 C...Z0 + W+/- -> f + fbar'
9253  
9254         ELSEIF(ISUB.EQ.64) THEN
9255 C...Z0 + h0 -> f + fbar
9256  
9257         ELSEIF(ISUB.EQ.65) THEN
9258 C...W+ + W- -> f + fbar
9259  
9260         ELSEIF(ISUB.EQ.66) THEN
9261 C...W+/- + h0 -> f + fbar'
9262  
9263         ELSEIF(ISUB.EQ.67) THEN
9264 C...h0 + h0 -> f + fbar
9265  
9266         ELSEIF(ISUB.EQ.68) THEN
9267 C...g + g -> g + g; th arbitrary
9268           KCC=MINT(2)+12
9269           KCS=(-1)**INT(1.5D0+PYR(0))
9270  
9271         ELSEIF(ISUB.EQ.69) THEN
9272 C...gamma + gamma -> W+ + W-; th arbitrary
9273           MINT(21)=24
9274           MINT(22)=-24
9275           KCC=21
9276  
9277         ELSEIF(ISUB.EQ.70) THEN
9278 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
9279           IF(MINT(15).EQ.22) MINT(21)=23
9280           IF(MINT(16).EQ.22) MINT(22)=23
9281           KCC=21
9282         ENDIF
9283  
9284       ELSEIF(ISUB.LE.80) THEN
9285         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
9286 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
9287           XH=SH/SHP
9288           MINT(21)=MINT(15)
9289           MINT(22)=MINT(16)
9290           PMQ(1)=PYMASS(MINT(21))
9291           PMQ(2)=PYMASS(MINT(22))
9292   330     JT=INT(1.5D0+PYR(0))
9293           ZMIN=2D0*PMQ(JT)/SHPR
9294           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9295      &    (SHPR*(SHPR-PMQ(3-JT)))
9296           ZMAX=MIN(1D0-XH,ZMAX)
9297           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9298           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9299      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
9300           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9301           IF(SQC1.LT.1D-8) GOTO 330
9302           C1=SQRT(SQC1)
9303           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9304           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9305           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9306           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9307           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9308           IF(SQC1.LT.1D-8) GOTO 330
9309           C1=SQRT(SQC1)
9310           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9311           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9312           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9313           PHIR=PARU(2)*PYR(0)
9314           CPHI=COS(PHIR)
9315           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9316      &    SQRT(1D0-CTHE(2)**2)*CPHI
9317           Z1=2D0-Z(JT)
9318           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9319           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9320           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9321      &    PMQ(3-JT)**2/SHP))
9322           ZMIN=2D0*PMQ(3-JT)/SHPR
9323           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9324           ZMAX=MIN(1D0-XH,ZMAX)
9325           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
9326           KCC=22
9327  
9328         ELSEIF(ISUB.EQ.73) THEN
9329 C...Z0 + W+/- -> Z0 + W+/-
9330           JS=MINT(2)
9331           XH=SH/SHP
9332   340     JT=3-MINT(2)
9333           I=MINT(14+JT)
9334           IA=IABS(I)
9335           IF(IA.LE.10) THEN
9336             RVCKM=VINT(180+I)*PYR(0)
9337             DO 350 J=1,MSTP(1)
9338               IB=2*J-1+MOD(IA,2)
9339               IPM=(5-ISIGN(1,I))/2
9340               IDC=J+MDCY(IA,2)+2
9341               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
9342               MINT(20+JT)=ISIGN(IB,I)
9343               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9344               IF(RVCKM.LE.0D0) GOTO 360
9345   350       CONTINUE
9346           ELSE
9347             IB=2*((IA+1)/2)-1+MOD(IA,2)
9348             MINT(20+JT)=ISIGN(IB,I)
9349           ENDIF
9350   360     PMQ(JT)=PYMASS(MINT(20+JT))
9351           MINT(23-JT)=MINT(17-JT)
9352           PMQ(3-JT)=PYMASS(MINT(23-JT))
9353           JT=INT(1.5D0+PYR(0))
9354           ZMIN=2D0*PMQ(JT)/SHPR
9355           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9356      &    (SHPR*(SHPR-PMQ(3-JT)))
9357           ZMAX=MIN(1D0-XH,ZMAX)
9358           IF(ZMIN.GE.ZMAX) GOTO 340
9359           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9360           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9361      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
9362           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9363           IF(SQC1.LT.1D-8) GOTO 340
9364           C1=SQRT(SQC1)
9365           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9366           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9367           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9368           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9369           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9370           IF(SQC1.LT.1D-8) GOTO 340
9371           C1=SQRT(SQC1)
9372           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9373           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9374           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9375           PHIR=PARU(2)*PYR(0)
9376           CPHI=COS(PHIR)
9377           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9378      &    SQRT(1D0-CTHE(2)**2)*CPHI
9379           Z1=2D0-Z(JT)
9380           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9381           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9382           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9383      &    PMQ(3-JT)**2/SHP))
9384           ZMIN=2D0*PMQ(3-JT)/SHPR
9385           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9386           ZMAX=MIN(1D0-XH,ZMAX)
9387           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
9388           KCC=22
9389  
9390         ELSEIF(ISUB.EQ.74) THEN
9391 C...Z0 + h0 -> Z0 + h0
9392  
9393         ELSEIF(ISUB.EQ.75) THEN
9394 C...W+ + W- -> gamma + gamma
9395  
9396         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
9397 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
9398           XH=SH/SHP
9399   370     DO 400 JT=1,2
9400             I=MINT(14+JT)
9401             IA=IABS(I)
9402             IF(IA.LE.10) THEN
9403               RVCKM=VINT(180+I)*PYR(0)
9404               DO 380 J=1,MSTP(1)
9405                 IB=2*J-1+MOD(IA,2)
9406                 IPM=(5-ISIGN(1,I))/2
9407                 IDC=J+MDCY(IA,2)+2
9408                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
9409                 MINT(20+JT)=ISIGN(IB,I)
9410                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9411                 IF(RVCKM.LE.0D0) GOTO 390
9412   380         CONTINUE
9413             ELSE
9414               IB=2*((IA+1)/2)-1+MOD(IA,2)
9415               MINT(20+JT)=ISIGN(IB,I)
9416             ENDIF
9417   390       PMQ(JT)=PYMASS(MINT(20+JT))
9418   400     CONTINUE
9419           JT=INT(1.5D0+PYR(0))
9420           ZMIN=2D0*PMQ(JT)/SHPR
9421           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
9422      &    (SHPR*(SHPR-PMQ(3-JT)))
9423           ZMAX=MIN(1D0-XH,ZMAX)
9424           IF(ZMIN.GE.ZMAX) GOTO 370
9425           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
9426           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
9427      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
9428           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
9429           IF(SQC1.LT.1D-8) GOTO 370
9430           C1=SQRT(SQC1)
9431           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
9432           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9433           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
9434           Z(3-JT)=1D0-XH/(1D0-Z(JT))
9435           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
9436           IF(SQC1.LT.1D-8) GOTO 370
9437           C1=SQRT(SQC1)
9438           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
9439           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
9440           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
9441           PHIR=PARU(2)*PYR(0)
9442           CPHI=COS(PHIR)
9443           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
9444      &    SQRT(1D0-CTHE(2)**2)*CPHI
9445           Z1=2D0-Z(JT)
9446           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
9447           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
9448           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
9449      &    PMQ(3-JT)**2/SHP))
9450           ZMIN=2D0*PMQ(3-JT)/SHPR
9451           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
9452           ZMAX=MIN(1D0-XH,ZMAX)
9453           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
9454           KCC=22
9455  
9456         ELSEIF(ISUB.EQ.78) THEN
9457 C...W+/- + h0 -> W+/- + h0
9458  
9459         ELSEIF(ISUB.EQ.79) THEN
9460 C...h0 + h0 -> h0 + h0
9461  
9462         ELSEIF(ISUB.EQ.80) THEN
9463 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
9464           IF(MINT(15).EQ.22) JS=2
9465           I=MINT(14+JS)
9466           IA=IABS(I)
9467           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
9468           IB=3-IA
9469           MINT(20+JS)=ISIGN(IB,I)
9470           KCC=22
9471         ENDIF
9472  
9473       ELSEIF(ISUB.LE.90) THEN
9474         IF(ISUB.EQ.81) THEN
9475 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
9476           MINT(21)=ISIGN(MINT(55),MINT(15))
9477           MINT(22)=-MINT(21)
9478           KCC=4
9479  
9480         ELSEIF(ISUB.EQ.82) THEN
9481 C...g + g -> Q + Qbar; th arbitrary
9482           KCS=(-1)**INT(1.5D0+PYR(0))
9483           MINT(21)=ISIGN(MINT(55),KCS)
9484           MINT(22)=-MINT(21)
9485           KCC=MINT(2)+10
9486  
9487         ELSEIF(ISUB.EQ.83) THEN
9488 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
9489           KFOLD=MINT(16)
9490           IF(MINT(2).EQ.2) KFOLD=MINT(15)
9491           KFAOLD=IABS(KFOLD)
9492           IF(KFAOLD.GT.10) THEN
9493             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
9494           ELSE
9495             RCKM=VINT(180+KFOLD)*PYR(0)
9496             IPM=(5-ISIGN(1,KFOLD))/2
9497             KFANEW=-MOD(KFAOLD+1,2)
9498   410       KFANEW=KFANEW+2
9499             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
9500             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
9501               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
9502      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
9503               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
9504      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
9505             ENDIF
9506             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
9507           ENDIF
9508           IF(MINT(2).EQ.1) THEN
9509             MINT(21)=ISIGN(MINT(55),MINT(15))
9510             MINT(22)=ISIGN(KFANEW,MINT(16))
9511           ELSE
9512             MINT(21)=ISIGN(KFANEW,MINT(15))
9513             MINT(22)=ISIGN(MINT(55),MINT(16))
9514             JS=2
9515           ENDIF
9516           KCC=22
9517  
9518         ELSEIF(ISUB.EQ.84) THEN
9519 C...g + gamma -> Q + Qbar; th arbitary
9520           KCS=(-1)**INT(1.5D0+PYR(0))
9521           MINT(21)=ISIGN(MINT(55),KCS)
9522           MINT(22)=-MINT(21)
9523           KCC=27
9524           IF(MINT(16).EQ.21) KCC=28
9525  
9526         ELSEIF(ISUB.EQ.85) THEN
9527 C...gamma + gamma -> F + Fbar; th arbitary
9528           KCS=(-1)**INT(1.5D0+PYR(0))
9529           MINT(21)=ISIGN(MINT(56),KCS)
9530           MINT(22)=-MINT(21)
9531           KCC=21
9532  
9533         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
9534 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
9535           MINT(21)=KFPR(ISUB,1)
9536           MINT(22)=KFPR(ISUB,2)
9537           KCC=24
9538           KCS=(-1)**INT(1.5D0+PYR(0))
9539         ENDIF
9540  
9541       ELSEIF(ISUB.LE.100) THEN
9542         IF(ISUB.EQ.95) THEN
9543 C...Low-pT ( = energyless g + g -> g + g)
9544           KCC=MINT(2)+12
9545           KCS=(-1)**INT(1.5D0+PYR(0))
9546  
9547         ELSEIF(ISUB.EQ.96) THEN
9548 C...Multiple interactions (should be reassigned to QCD process)
9549         ENDIF
9550  
9551       ELSEIF(ISUB.LE.110) THEN
9552         IF(ISUB.EQ.101) THEN
9553 C...g + g -> gamma*/Z0
9554           KCC=21
9555           KFRES=22
9556  
9557         ELSEIF(ISUB.EQ.102) THEN
9558 C...g + g -> h0 (or H0, or A0)
9559           KCC=21
9560           KFRES=KFHIGG
9561  
9562         ELSEIF(ISUB.EQ.103) THEN
9563 C...gamma + gamma -> h0 (or H0, or A0)
9564           KCC=21
9565           KFRES=KFHIGG
9566  
9567         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
9568 C...g + g -> chi_0c or chi_2c.
9569           KCC=21
9570           KFRES=KFPR(ISUB,1)
9571  
9572         ELSEIF(ISUB.EQ.106) THEN
9573 C...g + g -> J/Psi + gamma
9574           MINT(21)=KFPR(ISUB,1)
9575           MINT(22)=KFPR(ISUB,2)
9576           KCC=21
9577  
9578         ELSEIF(ISUB.EQ.107) THEN
9579 C...g + gamma -> J/Psi + g
9580           MINT(21)=KFPR(ISUB,1)
9581           MINT(22)=KFPR(ISUB,2)
9582           KCC=22
9583           IF(MINT(16).EQ.22) KCC=33
9584  
9585         ELSEIF(ISUB.EQ.108) THEN
9586 C...gamma + gamma -> J/Psi + gamma
9587           MINT(21)=KFPR(ISUB,1)
9588           MINT(22)=KFPR(ISUB,2)
9589  
9590         ELSEIF(ISUB.EQ.110) THEN
9591 C...f + fbar -> gamma + h0; th arbitrary
9592           IF(PYR(0).GT.0.5D0) JS=2
9593           MINT(20+JS)=22
9594           MINT(23-JS)=KFHIGG
9595         ENDIF
9596  
9597       ELSEIF(ISUB.LE.120) THEN
9598         IF(ISUB.EQ.111) THEN
9599 C...f + fbar -> g + h0; th arbitrary
9600           IF(PYR(0).GT.0.5D0) JS=2
9601           MINT(20+JS)=21
9602           MINT(23-JS)=KFHIGG
9603           KCC=17+JS
9604  
9605         ELSEIF(ISUB.EQ.112) THEN
9606 C...f + g -> f + h0; th = (p(f) - p(f))**2
9607           IF(MINT(15).EQ.21) JS=2
9608           MINT(23-JS)=KFHIGG
9609           KCC=15+JS
9610           KCS=ISIGN(1,MINT(14+JS))
9611  
9612         ELSEIF(ISUB.EQ.113) THEN
9613 C...g + g -> g + h0; th arbitrary
9614           IF(PYR(0).GT.0.5D0) JS=2
9615           MINT(23-JS)=KFHIGG
9616           KCC=22+JS
9617           KCS=(-1)**INT(1.5D0+PYR(0))
9618  
9619         ELSEIF(ISUB.EQ.114) THEN
9620 C...g + g -> gamma + gamma; th arbitrary
9621           IF(PYR(0).GT.0.5D0) JS=2
9622           MINT(21)=22
9623           MINT(22)=22
9624           KCC=21
9625  
9626         ELSEIF(ISUB.EQ.115) THEN
9627 C...g + g -> g + gamma; th arbitrary
9628           IF(PYR(0).GT.0.5D0) JS=2
9629           MINT(23-JS)=22
9630           KCC=22+JS
9631           KCS=(-1)**INT(1.5D0+PYR(0))
9632  
9633         ELSEIF(ISUB.EQ.116) THEN
9634 C...g + g -> gamma + Z0
9635  
9636         ELSEIF(ISUB.EQ.117) THEN
9637 C...g + g -> Z0 + Z0
9638  
9639         ELSEIF(ISUB.EQ.118) THEN
9640 C...g + g -> W+ + W-
9641         ENDIF
9642  
9643       ELSEIF(ISUB.LE.140) THEN
9644         IF(ISUB.EQ.121) THEN
9645 C...g + g -> Q + Qbar + h0
9646           KCS=(-1)**INT(1.5D0+PYR(0))
9647           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
9648           MINT(22)=-MINT(21)
9649           KCC=11+INT(0.5D0+PYR(0))
9650           KFRES=KFHIGG
9651  
9652         ELSEIF(ISUB.EQ.122) THEN
9653 C...q + qbar -> Q + Qbar + h0
9654           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
9655           MINT(22)=-MINT(21)
9656           KCC=4
9657           KFRES=KFHIGG
9658  
9659         ELSEIF(ISUB.EQ.123) THEN
9660 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
9661 C...inner process)
9662           KCC=22
9663           KFRES=KFHIGG
9664  
9665         ELSEIF(ISUB.EQ.124) THEN
9666 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
9667 C...inner process)
9668           DO 430 JT=1,2
9669             I=MINT(14+JT)
9670             IA=IABS(I)
9671             IF(IA.LE.10) THEN
9672               RVCKM=VINT(180+I)*PYR(0)
9673               DO 420 J=1,MSTP(1)
9674                 IB=2*J-1+MOD(IA,2)
9675                 IPM=(5-ISIGN(1,I))/2
9676                 IDC=J+MDCY(IA,2)+2
9677                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
9678                 MINT(20+JT)=ISIGN(IB,I)
9679                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
9680                 IF(RVCKM.LE.0D0) GOTO 430
9681   420         CONTINUE
9682             ELSE
9683               IB=2*((IA+1)/2)-1+MOD(IA,2)
9684               MINT(20+JT)=ISIGN(IB,I)
9685             ENDIF
9686   430     CONTINUE
9687           KCC=22
9688           KFRES=KFHIGG
9689  
9690         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
9691 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
9692           IF(MINT(15).EQ.22) JS=2
9693           MINT(23-JS)=21
9694           KCC=24+JS
9695           KCS=ISIGN(1,MINT(14+JS))
9696  
9697         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
9698 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
9699           IF(MINT(15).EQ.22) JS=2
9700           KCC=22
9701           KCS=ISIGN(1,MINT(14+JS))
9702  
9703         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
9704 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
9705           KCS=(-1)**INT(1.5D0+PYR(0))
9706           MINT(21)=ISIGN(KFLF,KCS)
9707           MINT(22)=-MINT(21)
9708           KCC=27
9709           IF(MINT(16).EQ.21) KCC=28
9710  
9711         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
9712 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
9713           KCS=(-1)**INT(1.5D0+PYR(0))
9714           MINT(21)=ISIGN(KFLF,KCS)
9715           MINT(22)=-MINT(21)
9716           KCC=21
9717  
9718         ENDIF
9719  
9720       ELSEIF(ISUB.LE.160) THEN
9721         IF(ISUB.EQ.141) THEN
9722 C...f + fbar -> gamma*/Z0/Z'0
9723           KFRES=32
9724  
9725         ELSEIF(ISUB.EQ.142) THEN
9726 C...f + fbar' -> W'+/-
9727           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9728           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9729           KFRES=ISIGN(34,KCH1+KCH2)
9730  
9731         ELSEIF(ISUB.EQ.143) THEN
9732 C...f + fbar' -> H+/-
9733           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9734           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9735           KFRES=ISIGN(37,KCH1+KCH2)
9736  
9737         ELSEIF(ISUB.EQ.144) THEN
9738 C...f + fbar' -> R
9739           KFRES=ISIGN(41,MINT(15)+MINT(16))
9740  
9741         ELSEIF(ISUB.EQ.145) THEN
9742 C...q + l -> LQ (leptoquark)
9743           IF(IABS(MINT(16)).LE.8) JS=2
9744           KFRES=ISIGN(42,MINT(14+JS))
9745           KCC=28+JS
9746           KCS=ISIGN(1,MINT(14+JS))
9747  
9748         ELSEIF(ISUB.EQ.146) THEN
9749 C...e + gamma -> e* (excited lepton)
9750           IF(MINT(15).EQ.22) JS=2
9751           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
9752           KCC=22
9753  
9754         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
9755 C...q + g -> q* (excited quark)
9756           IF(MINT(15).EQ.21) JS=2
9757           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
9758           KCC=30+JS
9759           KCS=ISIGN(1,MINT(14+JS))
9760  
9761         ELSEIF(ISUB.EQ.149) THEN
9762 C...g + g -> eta_tc
9763           KFRES=KTECHN+331
9764           KCC=23
9765           KCS=(-1)**INT(1.5D0+PYR(0))
9766         ENDIF
9767  
9768       ELSEIF(ISUB.LE.200) THEN
9769         IF(ISUB.EQ.161) THEN
9770 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
9771           IF(MINT(15).EQ.21) JS=2
9772           I=MINT(14+JS)
9773           IA=IABS(I)
9774           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
9775           IB=IA+MOD(IA,2)-MOD(IA+1,2)
9776           MINT(20+JS)=ISIGN(IB,I)
9777           KCC=15+JS
9778           KCS=ISIGN(1,MINT(14+JS))
9779  
9780         ELSEIF(ISUB.EQ.162) THEN
9781 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
9782           IF(MINT(15).EQ.21) JS=2
9783           MINT(20+JS)=ISIGN(42,MINT(14+JS))
9784           KFLQL=KFDP(MDCY(42,2),2)
9785           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
9786           KCC=15+JS
9787           KCS=ISIGN(1,MINT(14+JS))
9788  
9789         ELSEIF(ISUB.EQ.163) THEN
9790 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
9791           KCS=(-1)**INT(1.5D0+PYR(0))
9792           MINT(21)=ISIGN(42,KCS)
9793           MINT(22)=-MINT(21)
9794           KCC=MINT(2)+10
9795  
9796         ELSEIF(ISUB.EQ.164) THEN
9797 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
9798           MINT(21)=ISIGN(42,MINT(15))
9799           MINT(22)=-MINT(21)
9800           KCC=4
9801  
9802         ELSEIF(ISUB.EQ.165) THEN
9803 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
9804           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9805           MINT(22)=-MINT(21)
9806  
9807         ELSEIF(ISUB.EQ.166) THEN
9808 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
9809           IF(MOD(MINT(15),2).EQ.0) THEN
9810             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
9811             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
9812           ELSE
9813             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9814             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
9815           ENDIF
9816  
9817         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
9818 C...q + q' -> q" + q* (excited quark)
9819           KFQSTR=KFPR(ISUB,2)
9820           KFQEXC=MOD(KFQSTR,KEXCIT)
9821           JS=MINT(2)
9822           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
9823           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
9824      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
9825           KCC=22
9826           JS=3-JS
9827  
9828         ELSEIF(ISUB.EQ.169) THEN
9829 C...q + qbar -> e + e* (excited lepton)
9830           KFQSTR=KFPR(ISUB,2)
9831           KFQEXC=MOD(KFQSTR,KEXCIT)
9832           JS=MINT(2)
9833           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
9834           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
9835           JS=3-JS
9836  
9837         ELSEIF(ISUB.EQ.191) THEN
9838 C...f + fbar -> rho_tc0.
9839           KFRES=KTECHN+113
9840  
9841         ELSEIF(ISUB.EQ.192) THEN
9842 C...f + fbar' -> rho_tc+/-
9843           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9844           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9845           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
9846  
9847         ELSEIF(ISUB.EQ.193) THEN
9848 C...f + fbar -> omega_tc0.
9849           KFRES=KTECHN+223
9850  
9851         ELSEIF(ISUB.EQ.194) THEN
9852 C...f + fbar -> f' + fbar' via mixture of s-channel
9853 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
9854           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9855           MINT(22)=-MINT(21)
9856  
9857         ELSEIF(ISUB.EQ.195) THEN
9858 C...f + fbar' -> f'' + fbar''' via s-channel
9859 C...rho_tc+ th=(p(f)-p(f'))**2
9860 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
9861           IF(MOD(MINT(15),2).EQ.0) THEN
9862             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
9863             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
9864           ELSE
9865             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
9866             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
9867           ENDIF
9868         ENDIF
9869  
9870 CMRENNA++
9871       ELSEIF(ISUB.LE.215) THEN
9872         IF(ISUB.EQ.201) THEN
9873 C...f + fbar -> ~e_L + ~e_Lbar
9874           MINT(21)=ISIGN(KSUSY1+11,KCS)
9875           MINT(22)=-MINT(21)
9876  
9877         ELSEIF(ISUB.EQ.202) THEN
9878 C...f + fbar -> ~e_R + ~e_Rbar
9879           MINT(21)=ISIGN(KSUSY2+11,KCS)
9880           MINT(22)=-MINT(21)
9881  
9882         ELSEIF(ISUB.EQ.203) THEN
9883 C...f + fbar -> ~e_L + ~e_Rbar
9884           IF(MINT(15).LT.0) JS=2
9885           IF(MINT(2).EQ.1) THEN
9886             MINT(20+JS)=KFPR(ISUB,1)
9887             MINT(23-JS)=-KFPR(ISUB,2)
9888           ELSE
9889             MINT(20+JS)=-KFPR(ISUB,1)
9890             MINT(23-JS)=KFPR(ISUB,2)
9891           ENDIF
9892  
9893         ELSEIF(ISUB.EQ.204) THEN
9894 C...f + fbar -> ~mu_L + ~mu_Lbar
9895           MINT(21)=ISIGN(KSUSY1+13,KCS)
9896           MINT(22)=-MINT(21)
9897  
9898         ELSEIF(ISUB.EQ.205) THEN
9899 C...f + fbar -> ~mu_R + ~mu_Rbar
9900           MINT(21)=ISIGN(KSUSY2+13,KCS)
9901           MINT(22)=-MINT(21)
9902  
9903         ELSEIF(ISUB.EQ.206) THEN
9904 C...f + fbar -> ~mu_L + ~mu_Rbar
9905           IF(MINT(15).LT.0) JS=2
9906           IF(MINT(2).EQ.1) THEN
9907             MINT(20+JS)=KFPR(ISUB,1)
9908             MINT(23-JS)=-KFPR(ISUB,2)
9909           ELSE
9910             MINT(20+JS)=-KFPR(ISUB,1)
9911             MINT(23-JS)=KFPR(ISUB,2)
9912           ENDIF
9913  
9914         ELSEIF(ISUB.EQ.207) THEN
9915 C...f + fbar -> ~tau_1 + ~tau_1bar
9916           MINT(21)=ISIGN(KSUSY1+15,KCS)
9917           MINT(22)=-MINT(21)
9918  
9919         ELSEIF(ISUB.EQ.208) THEN
9920 C...f + fbar -> ~tau_2 + ~tau_2bar
9921           MINT(21)=ISIGN(KSUSY2+15,KCS)
9922           MINT(22)=-MINT(21)
9923  
9924         ELSEIF(ISUB.EQ.209) THEN
9925 C...f + fbar -> ~tau_1 + ~tau_2bar
9926           IF(MINT(15).LT.0) JS=2
9927           IF(MINT(2).EQ.1) THEN
9928             MINT(20+JS)=KFPR(ISUB,1)
9929             MINT(23-JS)=-KFPR(ISUB,2)
9930           ELSE
9931             MINT(20+JS)=-KFPR(ISUB,1)
9932             MINT(23-JS)=KFPR(ISUB,2)
9933           ENDIF
9934  
9935         ELSEIF(ISUB.EQ.210) THEN
9936 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
9937           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9938           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9939           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
9940           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
9941  
9942         ELSEIF(ISUB.EQ.211) THEN
9943 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
9944           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9945           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9946           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
9947           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
9948  
9949         ELSEIF(ISUB.EQ.212) THEN
9950 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
9951           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
9952           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
9953           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
9954           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
9955  
9956         ELSEIF(ISUB.EQ.213) THEN
9957 C...f + fbar -> ~nul + ~nulbar
9958           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
9959           MINT(22)=-MINT(21)
9960  
9961         ELSEIF(ISUB.EQ.214) THEN
9962 C...f + fbar -> ~nutau + ~nutaubar
9963           MINT(21)=ISIGN(KSUSY1+16,KCS)
9964           MINT(22)=-MINT(21)
9965         ENDIF
9966  
9967       ELSEIF(ISUB.LE.225) THEN
9968         IF(ISUB.EQ.216) THEN
9969 C...f + fbar -> ~chi01 + ~chi01
9970           MINT(21)=KSUSY1+22
9971           MINT(22)=KSUSY1+22
9972  
9973         ELSEIF(ISUB.EQ.217) THEN
9974 C...f + fbar -> ~chi02 + ~chi02
9975           MINT(21)=KSUSY1+23
9976           MINT(22)=KSUSY1+23
9977  
9978         ELSEIF(ISUB.EQ.218 ) THEN
9979 C...f + fbar -> ~chi03 + ~chi03
9980           MINT(21)=KSUSY1+25
9981           MINT(22)=KSUSY1+25
9982  
9983         ELSEIF(ISUB.EQ.219 ) THEN
9984 C...f + fbar -> ~chi04 + ~chi04
9985           MINT(21)=KSUSY1+35
9986           MINT(22)=KSUSY1+35
9987  
9988         ELSEIF(ISUB.EQ.220 ) THEN
9989 C...f + fbar -> ~chi01 + ~chi02
9990           IF(MINT(15).LT.0) JS=2
9991 C          IF(PYR(0).GT.0.5D0) JS=2
9992           MINT(20+JS)=KSUSY1+22
9993           MINT(23-JS)=KSUSY1+23
9994  
9995         ELSEIF(ISUB.EQ.221 ) THEN
9996 C...f + fbar -> ~chi01 + ~chi03
9997           IF(MINT(15).LT.0) JS=2
9998 C          IF(PYR(0).GT.0.5D0) JS=2
9999           MINT(20+JS)=KSUSY1+22
10000           MINT(23-JS)=KSUSY1+25
10001  
10002         ELSEIF(ISUB.EQ.222) THEN
10003 C...f + fbar -> ~chi01 + ~chi04
10004           IF(MINT(15).LT.0) JS=2
10005 C          IF(PYR(0).GT.0.5D0) JS=2
10006           MINT(20+JS)=KSUSY1+22
10007           MINT(23-JS)=KSUSY1+35
10008  
10009         ELSEIF(ISUB.EQ.223) THEN
10010 C...f + fbar -> ~chi02 + ~chi03
10011           IF(MINT(15).LT.0) JS=2
10012 C          IF(PYR(0).GT.0.5D0) JS=2
10013           MINT(20+JS)=KSUSY1+23
10014           MINT(23-JS)=KSUSY1+25
10015  
10016         ELSEIF(ISUB.EQ.224) THEN
10017 C...f + fbar -> ~chi02 + ~chi04
10018           IF(MINT(15).LT.0) JS=2
10019 C          IF(PYR(0).GT.0.5D0) JS=2
10020           MINT(20+JS)=KSUSY1+23
10021           MINT(23-JS)=KSUSY1+35
10022  
10023         ELSEIF(ISUB.EQ.225) THEN
10024 C...f + fbar -> ~chi03 + ~chi04
10025           IF(MINT(15).LT.0) JS=2
10026 C          IF(PYR(0).GT.0.5D0) JS=2
10027           MINT(20+JS)=KSUSY1+25
10028           MINT(23-JS)=KSUSY1+35
10029         ENDIF
10030  
10031       ELSEIF(ISUB.LE.236) THEN
10032         IF(ISUB.EQ.226) THEN
10033 C...f + fbar -> ~chi+-1 + ~chi-+1
10034 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
10035           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10036           MINT(21)=ISIGN(KSUSY1+24,KCH1)
10037           MINT(22)=-MINT(21)
10038  
10039         ELSEIF(ISUB.EQ.227) THEN
10040 C...f + fbar -> ~chi+-2 + ~chi-+2
10041           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10042           MINT(21)=ISIGN(KSUSY1+37,KCH1)
10043           MINT(22)=-MINT(21)
10044  
10045         ELSEIF(ISUB.EQ.228) THEN
10046 C...f + fbar -> ~chi+-1 + ~chi-+2
10047 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
10048 C...js=1 if pyr<.5, js=2 if pyr>.5
10049 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
10050 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
10051 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
10052 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
10053           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10054           KCH2=INT(1-KCH1)/2
10055           IF(MINT(2).EQ.1) THEN
10056             MINT(21)= ISIGN(KSUSY1+24,KCH1)
10057             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
10058 c            IF(KCH2.EQ.0) JS=2
10059           ELSE
10060             MINT(21)= ISIGN(KSUSY1+37,KCH1)
10061             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
10062             JS=2
10063 c            IF(KCH2.EQ.1) JS=2
10064           ENDIF
10065  
10066         ELSEIF(ISUB.EQ.229) THEN
10067 C...q + qbar' -> ~chi01 + ~chi+-1
10068 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
10069           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10070           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10071 C...CHECK THIS
10072           IF(MOD(MINT(15),2).EQ.0) JS=2
10073           MINT(20+JS)=KSUSY1+22
10074           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10075  
10076         ELSEIF(ISUB.EQ.230) THEN
10077 C...q + qbar' -> ~chi02 + ~chi+-1
10078           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10079           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10080           IF(MOD(MINT(15),2).EQ.0) JS=2
10081           MINT(20+JS)=KSUSY1+23
10082           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10083  
10084         ELSEIF(ISUB.EQ.231) THEN
10085 C...q + qbar' -> ~chi03 + ~chi+-1
10086           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10087           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10088           IF(MOD(MINT(15),2).EQ.0) JS=2
10089           MINT(20+JS)=KSUSY1+25
10090           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10091  
10092         ELSEIF(ISUB.EQ.232) THEN
10093 C...q + qbar' -> ~chi04 + ~chi+-1
10094           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10095           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10096           IF(MOD(MINT(15),2).EQ.0) JS=2
10097           MINT(20+JS)=KSUSY1+35
10098           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10099  
10100         ELSEIF(ISUB.EQ.233) THEN
10101 C...q + qbar' -> ~chi01 + ~chi+-2
10102           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10103           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10104           IF(MOD(MINT(15),2).EQ.0) JS=2
10105           MINT(20+JS)=KSUSY1+22
10106           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10107  
10108         ELSEIF(ISUB.EQ.234) THEN
10109 C...q + qbar' -> ~chi02 + ~chi+-2
10110           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10111           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10112           IF(MOD(MINT(15),2).EQ.0) JS=2
10113           MINT(20+JS)=KSUSY1+23
10114           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10115  
10116         ELSEIF(ISUB.EQ.235) THEN
10117 C...q + qbar' -> ~chi03 + ~chi+-2
10118           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10119           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10120           IF(MOD(MINT(15),2).EQ.0) JS=2
10121           MINT(20+JS)=KSUSY1+25
10122           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10123  
10124         ELSEIF(ISUB.EQ.236) THEN
10125 C...q + qbar' -> ~chi04 + ~chi+-2
10126           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10127           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10128           IF(MOD(MINT(15),2).EQ.0) JS=2
10129           MINT(20+JS)=KSUSY1+35
10130           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10131         ENDIF
10132  
10133       ELSEIF(ISUB.LE.245) THEN
10134         IF(ISUB.EQ.237) THEN
10135 C...q + qbar -> ~chi01 + ~g
10136 C...th arbitrary
10137           IF(PYR(0).GT.0.5D0) JS=2
10138           MINT(20+JS)=KSUSY1+21
10139           MINT(23-JS)=KSUSY1+22
10140           KCC=17+JS
10141  
10142         ELSEIF(ISUB.EQ.238) THEN
10143 C...q + qbar -> ~chi02 + ~g
10144 C...th arbitrary
10145           IF(PYR(0).GT.0.5D0) JS=2
10146           MINT(20+JS)=KSUSY1+21
10147           MINT(23-JS)=KSUSY1+23
10148           KCC=17+JS
10149  
10150         ELSEIF(ISUB.EQ.239) THEN
10151 C...q + qbar -> ~chi03 + ~g
10152 C...th arbitrary
10153           IF(PYR(0).GT.0.5D0) JS=2
10154           MINT(20+JS)=KSUSY1+21
10155           MINT(23-JS)=KSUSY1+25
10156           KCC=17+JS
10157  
10158         ELSEIF(ISUB.EQ.240) THEN
10159 C...q + qbar -> ~chi04 + ~g
10160 C...th arbitrary
10161           IF(PYR(0).GT.0.5D0) JS=2
10162           MINT(20+JS)=KSUSY1+21
10163           MINT(23-JS)=KSUSY1+35
10164           KCC=17+JS
10165  
10166         ELSEIF(ISUB.EQ.241) THEN
10167 C...q + qbar' -> ~chi+-1 + ~g
10168 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
10169 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
10170 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
10171 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
10172 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
10173           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10174           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10175           JS=1
10176           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10177           MINT(20+JS)=KSUSY1+21
10178           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
10179           KCC=17+JS
10180  
10181         ELSEIF(ISUB.EQ.242) THEN
10182 C...q + qbar' -> ~chi+-2 + ~g
10183 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
10184 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
10185 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
10186 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
10187 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
10188           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10189           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10190           JS=1
10191           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10192           MINT(20+JS)=KSUSY1+21
10193           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
10194           KCC=17+JS
10195  
10196         ELSEIF(ISUB.EQ.243) THEN
10197 C...q + qbar -> ~g + ~g ; th arbitrary
10198           MINT(21)=KSUSY1+21
10199           MINT(22)=KSUSY1+21
10200           KCC=MINT(2)+4
10201  
10202         ELSEIF(ISUB.EQ.244) THEN
10203 C...g + g -> ~g + ~g ; th arbitrary
10204           KCC=MINT(2)+12
10205           KCS=(-1)**INT(1.5D0+PYR(0))
10206           MINT(21)=KSUSY1+21
10207           MINT(22)=KSUSY1+21
10208         ENDIF
10209  
10210       ELSEIF(ISUB.LE.260) THEN
10211         IF(ISUB.EQ.246) THEN
10212 C...qj + g -> ~qj_L + ~chi01
10213           IF(MINT(15).EQ.21) JS=2
10214           I=MINT(14+JS)
10215           IA=IABS(I)
10216           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10217           MINT(23-JS)=KSUSY1+22
10218           KCC=15+JS
10219           KCS=ISIGN(1,MINT(14+JS))
10220  
10221         ELSEIF(ISUB.EQ.247) THEN
10222 C...qj + g -> ~qj_R + ~chi01
10223           IF(MINT(15).EQ.21) JS=2
10224           I=MINT(14+JS)
10225           IA=IABS(I)
10226           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10227           MINT(23-JS)=KSUSY1+22
10228           KCC=15+JS
10229           KCS=ISIGN(1,MINT(14+JS))
10230  
10231         ELSEIF(ISUB.EQ.248) THEN
10232 C...qj + g -> ~qj_L + ~chi02
10233           IF(MINT(15).EQ.21) JS=2
10234           I=MINT(14+JS)
10235           IA=IABS(I)
10236           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10237           MINT(23-JS)=KSUSY1+23
10238           KCC=15+JS
10239           KCS=ISIGN(1,MINT(14+JS))
10240  
10241         ELSEIF(ISUB.EQ.249) THEN
10242 C...qj + g -> ~qj_R + ~chi02
10243           IF(MINT(15).EQ.21) JS=2
10244           I=MINT(14+JS)
10245           IA=IABS(I)
10246           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10247           MINT(23-JS)=KSUSY1+23
10248           KCC=15+JS
10249           KCS=ISIGN(1,MINT(14+JS))
10250  
10251         ELSEIF(ISUB.EQ.250) THEN
10252 C...qj + g -> ~qj_L + ~chi03
10253           IF(MINT(15).EQ.21) JS=2
10254           I=MINT(14+JS)
10255           IA=IABS(I)
10256           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10257           MINT(23-JS)=KSUSY1+25
10258           KCC=15+JS
10259           KCS=ISIGN(1,MINT(14+JS))
10260  
10261         ELSEIF(ISUB.EQ.251) THEN
10262 C...qj + g -> ~qj_R + ~chi03
10263           IF(MINT(15).EQ.21) JS=2
10264           I=MINT(14+JS)
10265           IA=IABS(I)
10266           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10267           MINT(23-JS)=KSUSY1+25
10268           KCC=15+JS
10269           KCS=ISIGN(1,MINT(14+JS))
10270  
10271         ELSEIF(ISUB.EQ.252) THEN
10272 C...qj + g -> ~qj_L + ~chi04
10273           IF(MINT(15).EQ.21) JS=2
10274           I=MINT(14+JS)
10275           IA=IABS(I)
10276           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10277           MINT(23-JS)=KSUSY1+35
10278           KCC=15+JS
10279           KCS=ISIGN(1,MINT(14+JS))
10280  
10281         ELSEIF(ISUB.EQ.253) THEN
10282 C...qj + g -> ~qj_R + ~chi04
10283           IF(MINT(15).EQ.21) JS=2
10284           I=MINT(14+JS)
10285           IA=IABS(I)
10286           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10287           MINT(23-JS)=KSUSY1+35
10288           KCC=15+JS
10289           KCS=ISIGN(1,MINT(14+JS))
10290  
10291         ELSEIF(ISUB.EQ.254) THEN
10292 C...qj + g -> ~qk_L + ~chi+-1
10293           IF(MINT(15).EQ.21) JS=2
10294           I=MINT(14+JS)
10295           IA=IABS(I)
10296           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
10297           IB=-IA+INT((IA+1)/2)*4-1
10298           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
10299           KCC=15+JS
10300           KCS=ISIGN(1,MINT(14+JS))
10301  
10302         ELSEIF(ISUB.EQ.255) THEN
10303 C...qj + g -> ~qk_L + ~chi+-1
10304           IF(MINT(15).EQ.21) JS=2
10305           I=MINT(14+JS)
10306           IA=IABS(I)
10307           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
10308           IB=-IA+INT((IA+1)/2)*4-1
10309           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
10310           KCC=15+JS
10311           KCS=ISIGN(1,MINT(14+JS))
10312  
10313         ELSEIF(ISUB.EQ.256) THEN
10314 C...qj + g -> ~qk_L + ~chi+-2
10315           IF(MINT(15).EQ.21) JS=2
10316           I=MINT(14+JS)
10317           IA=IABS(I)
10318           IB=-IA+INT((IA+1)/2)*4-1
10319           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
10320           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
10321           KCC=15+JS
10322           KCS=ISIGN(1,MINT(14+JS))
10323  
10324         ELSEIF(ISUB.EQ.257) THEN
10325 C...qj + g -> ~qk_R + ~chi+-2
10326           IF(MINT(15).EQ.21) JS=2
10327           I=MINT(14+JS)
10328           IA=IABS(I)
10329           IB=-IA+INT((IA+1)/2)*4-1
10330           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
10331           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
10332           KCC=15+JS
10333           KCS=ISIGN(1,MINT(14+JS))
10334  
10335         ELSEIF(ISUB.EQ.258) THEN
10336 C...qj + g -> ~qj_L + ~g
10337           IF(MINT(15).EQ.21) JS=2
10338           I=MINT(14+JS)
10339           IA=IABS(I)
10340           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10341           MINT(23-JS)=KSUSY1+21
10342           KCC=MINT(2)+6
10343           IF(JS.EQ.2) KCC=KCC+2
10344           KCS=ISIGN(1,I)
10345  
10346         ELSEIF(ISUB.EQ.259) THEN
10347 C...qj + g -> ~qj_R + ~g
10348           IF(MINT(15).EQ.21) JS=2
10349           I=MINT(14+JS)
10350           IA=IABS(I)
10351           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10352           MINT(23-JS)=KSUSY1+21
10353           KCC=MINT(2)+6
10354           IF(JS.EQ.2) KCC=KCC+2
10355           KCS=ISIGN(1,I)
10356         ENDIF
10357  
10358       ELSEIF(ISUB.LE.270) THEN
10359         IF(ISUB.EQ.261) THEN
10360 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
10361           ISGN=1
10362           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10363           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10364           MINT(22)=-MINT(21)
10365 C...Correct color combination
10366           IF(MINT(43).EQ.4) KCC=4
10367  
10368         ELSEIF(ISUB.EQ.262) THEN
10369 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
10370           ISGN=1
10371           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10372           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10373           MINT(22)=-MINT(21)
10374 C...Correct color combination
10375           IF(MINT(43).EQ.4) KCC=4
10376  
10377         ELSEIF(ISUB.EQ.263) THEN
10378 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
10379           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
10380      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
10381             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10382             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
10383           ELSE
10384             JS=2
10385             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
10386             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
10387           ENDIF
10388 C...Correct color combination
10389           IF(MINT(43).EQ.4) KCC=4
10390  
10391         ELSEIF(ISUB.EQ.264) THEN
10392 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
10393           KCS=(-1)**INT(1.5D0+PYR(0))
10394           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10395           MINT(22)=-MINT(21)
10396           KCC=MINT(2)+10
10397  
10398         ELSEIF(ISUB.EQ.265) THEN
10399 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
10400           KCS=(-1)**INT(1.5D0+PYR(0))
10401           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10402           MINT(22)=-MINT(21)
10403           KCC=MINT(2)+10
10404         ENDIF
10405  
10406       ELSEIF(ISUB.LE.296) THEN
10407         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
10408 C...qi + qj -> ~qi_L + ~qj_L
10409           KCC=MINT(2)
10410           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10411           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
10412           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
10413  
10414         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
10415 C...qi + qj -> ~qi_R + ~qj_R
10416           KCC=MINT(2)
10417           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10418           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
10419           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
10420  
10421         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
10422 C...qi + qj -> ~qi_L + ~qj_R
10423           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
10424           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
10425           KCC=MINT(2)
10426           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10427  
10428         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
10429 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
10430           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
10431           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
10432           KCC=MINT(2)
10433           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10434  
10435         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
10436 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
10437           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
10438           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
10439           KCC=MINT(2)
10440           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10441  
10442         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
10443 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
10444           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
10445           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
10446           KCC=MINT(2)
10447           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10448  
10449         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
10450 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
10451           ISGN=1
10452           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10453           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10454           MINT(22)=-MINT(21)
10455           IF(MINT(43).EQ.4) KCC=4
10456  
10457         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
10458 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
10459           ISGN=1
10460           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
10461           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
10462           MINT(22)=-MINT(21)
10463           IF(MINT(43).EQ.4) KCC=4
10464  
10465         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
10466 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
10467 C...pure LL + RR
10468           KCS=(-1)**INT(1.5D0+PYR(0))
10469           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10470           MINT(22)=-MINT(21)
10471           KCC=MINT(2)+10
10472  
10473         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
10474 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
10475           KCS=(-1)**INT(1.5D0+PYR(0))
10476           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10477           MINT(22)=-MINT(21)
10478           KCC=MINT(2)+10
10479  
10480         ELSEIF(ISUB.EQ.294) THEN
10481 C...qj + g -> ~qj_L + ~g
10482           IF(MINT(15).EQ.21) JS=2
10483           I=MINT(14+JS)
10484           IA=IABS(I)
10485           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
10486           MINT(23-JS)=KSUSY1+21
10487           KCC=MINT(2)+6
10488           IF(JS.EQ.2) KCC=KCC+2
10489           KCS=ISIGN(1,I)
10490  
10491         ELSEIF(ISUB.EQ.295) THEN
10492 C...qj + g -> ~qj_R + ~g
10493           IF(MINT(15).EQ.21) JS=2
10494           I=MINT(14+JS)
10495           IA=IABS(I)
10496           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
10497           MINT(23-JS)=KSUSY1+21
10498           KCC=MINT(2)+6
10499           IF(JS.EQ.2) KCC=KCC+2
10500           KCS=ISIGN(1,I)
10501         ENDIF
10502  
10503       ELSEIF(ISUB.LE.340) THEN
10504  
10505         IF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
10506 C...q + qbar' -> H+ + H0
10507           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10508           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10509           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10510           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
10511           MINT(23-JS)=KFPR(ISUB,2)
10512         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
10513 C...f + fbar -> A0 + H0; th arbitrary
10514           IF(PYR(0).GT.0.5D0) JS=2
10515           MINT(20+JS)=KFPR(ISUB,1)
10516           MINT(23-JS)=KFPR(ISUB,2)
10517         ELSEIF(ISUB.EQ.301) THEN
10518 C...f + fbar -> H+ H-
10519           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
10520           MINT(22)=-MINT(21)
10521         ENDIF
10522 CMRENNA--
10523  
10524       ELSEIF(ISUB.LE.360) THEN
10525  
10526         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
10527 C...l + l -> H_L++/--, H_R++/--
10528           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10529           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10530           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
10531  
10532         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
10533 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
10534           IF(MINT(15).EQ.22) JS=2
10535           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
10536           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
10537           KCC=22
10538  
10539         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
10540 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
10541           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
10542           MINT(22)=-MINT(21)
10543  
10544         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
10545 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
10546 C...as inner process).
10547           DO 450 JT=1,2
10548             I=MINT(14+JT)
10549             IA=IABS(I)
10550             IF(IA.LE.10) THEN
10551               RVCKM=VINT(180+I)*PYR(0)
10552               DO 440 J=1,MSTP(1)
10553                 IB=2*J-1+MOD(IA,2)
10554                 IPM=(5-ISIGN(1,I))/2
10555                 IDC=J+MDCY(IA,2)+2
10556                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
10557                 MINT(20+JT)=ISIGN(IB,I)
10558                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10559                 IF(RVCKM.LE.0D0) GOTO 450
10560   440         CONTINUE
10561             ELSE
10562               IB=2*((IA+1)/2)-1+MOD(IA,2)
10563               MINT(20+JT)=ISIGN(IB,I)
10564             ENDIF
10565   450     CONTINUE
10566           KCC=22
10567           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
10568           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
10569  
10570         ELSEIF(ISUB.EQ.353) THEN
10571 C...f + fbar -> Z_R0
10572           KFRES=KFPR(ISUB,1)
10573  
10574         ELSEIF(ISUB.EQ.354) THEN
10575 C...f + fbar' -> W+/-
10576           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10577           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10578           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
10579  
10580         ENDIF
10581  
10582       ELSEIF(ISUB.LE.380) THEN
10583  
10584         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
10585 C...f + fbar -> charged+ charged- technicolor
10586           KSW=(-1)**INT(1.5D0+PYR(0))
10587           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
10588           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
10589  
10590         ELSEIF(ISUB.LE.367) THEN
10591 C...f + fbar -> neutral neutral technicolor
10592           MINT(21)=KFPR(ISUB,1)
10593           MINT(22)=KFPR(ISUB,2)
10594  
10595         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375) THEN
10596 C...f + fbar' -> neutral charged technicolor
10597           IN=1
10598           IC=2
10599           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10600           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10601           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10602           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
10603           MINT(20+JS)=KFPR(ISUB,IN)
10604  
10605         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
10606 C...f + fbar' -> charged neutral technicolor
10607           IN=2
10608           IC=1
10609           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10610           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10611           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10612           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
10613           MINT(23-JS)=KFPR(ISUB,IN)
10614         ENDIF
10615  
10616       ELSEIF(ISUB.LE.400) THEN
10617         IF(ISUB.EQ.381) THEN
10618 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
10619           KCC=MINT(2)
10620           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10621  
10622         ELSEIF(ISUB.EQ.382) THEN
10623 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
10624           MINT(21)=ISIGN(KFLF,MINT(15))
10625           MINT(22)=-MINT(21)
10626           KCC=4
10627  
10628         ELSEIF(ISUB.EQ.383) THEN
10629 C...f + fbar -> g + g; th arbitrary, TC extensions
10630           MINT(21)=21
10631           MINT(22)=21
10632           KCC=MINT(2)+4
10633  
10634         ELSEIF(ISUB.EQ.384) THEN
10635 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
10636           IF(MINT(15).EQ.21) JS=2
10637           KCC=MINT(2)+6
10638           IF(MINT(15).EQ.21) KCC=KCC+2
10639           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
10640           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
10641  
10642         ELSEIF(ISUB.EQ.385) THEN
10643 C...g + g -> f + fbar; th arbitrary, TC extensions
10644           KCS=(-1)**INT(1.5D0+PYR(0))
10645           MINT(21)=ISIGN(KFLF,KCS)
10646           MINT(22)=-MINT(21)
10647           KCC=MINT(2)+10
10648  
10649         ELSEIF(ISUB.EQ.386) THEN
10650 C...g + g -> g + g; th arbitrary, TC extensions
10651           KCC=MINT(2)+12
10652           KCS=(-1)**INT(1.5D0+PYR(0))
10653  
10654         ELSEIF(ISUB.EQ.387) THEN
10655 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
10656           MINT(21)=ISIGN(MINT(55),MINT(15))
10657           MINT(22)=-MINT(21)
10658           KCC=4
10659  
10660         ELSEIF(ISUB.EQ.388) THEN
10661 C...g + g -> Q + Qbar; th arbitrary, TC extensions
10662           KCS=(-1)**INT(1.5D0+PYR(0))
10663           MINT(21)=ISIGN(MINT(55),KCS)
10664           MINT(22)=-MINT(21)
10665           KCC=MINT(2)+10
10666  
10667         ELSEIF(ISUB.EQ.391) THEN
10668 C...f + fbar -> G*.
10669           KFRES=KFPR(ISUB,1)
10670  
10671         ELSEIF(ISUB.EQ.392) THEN
10672 C...g + g -> G*.
10673           KCC=21
10674           KFRES=KFPR(ISUB,1)
10675  
10676         ELSEIF(ISUB.EQ.393) THEN
10677 C...q + qbar -> g + G*;  th arbitrary.
10678           IF(PYR(0).GT.0.5D0) JS=2
10679           MINT(20+JS)=KFPR(ISUB,1)
10680           MINT(23-JS)=KFPR(ISUB,2)
10681           KCC=17+JS
10682  
10683         ELSEIF(ISUB.EQ.394) THEN
10684 C...q + g -> q + G*;  th = (p(f) - p(f))**2
10685           IF(MINT(15).EQ.21) JS=2
10686           MINT(23-JS)=KFPR(ISUB,2)
10687           KCC=15+JS
10688           KCS=ISIGN(1,MINT(14+JS))
10689  
10690         ELSEIF(ISUB.EQ.395) THEN
10691 C...g + g -> G* + g;  th arbitrary.
10692           IF(PYR(0).GT.0.5D0) JS=2
10693           MINT(23-JS)=KFPR(ISUB,2)
10694           KCC=22+JS
10695         ENDIF
10696       ENDIF
10697  
10698       IF(ISET(ISUB).EQ.11) THEN
10699 C...Store documentation for user-defined processes
10700         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
10701         KUPPO(1)=MINT(83)+5
10702         KUPPO(2)=MINT(83)+6
10703         I=MINT(83)+6
10704         DO 470 IUP=3,NUP
10705           KUPPO(IUP)=0
10706           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
10707             IDOC=IDOC-1
10708             MINT(4)=MINT(4)-1
10709             GOTO 470
10710           ENDIF
10711           I=I+1
10712           KUPPO(IUP)=I
10713           K(I,1)=21
10714           K(I,2)=IDUP(IUP)
10715           IF(IDUP(IUP).EQ.0) K(I,2)=90
10716           K(I,3)=0
10717           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
10718           K(I,4)=0
10719           K(I,5)=0
10720           DO 460 J=1,5
10721             P(I,J)=PUP(J,IUP)
10722   460     CONTINUE
10723           V(I,5)=VTIMUP(IUP)
10724   470   CONTINUE
10725         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
10726      &  -BEZUP)
10727  
10728 C...Store final state partons for user-defined processes
10729         N=IPU2
10730         DO 490 IUP=3,NUP
10731           N=N+1
10732           K(N,1)=1
10733           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
10734           K(N,2)=IDUP(IUP)
10735           IF(IDUP(IUP).EQ.0) K(N,2)=90
10736           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
10737             K(N,3)=KUPPO(IUP)
10738           ELSE
10739             K(N,3)=MINT(84)+MOTHUP(1,IUP)
10740           ENDIF
10741           K(N,4)=0
10742           K(N,5)=0
10743           DO 480 J=1,5
10744             P(N,J)=PUP(J,IUP)
10745   480     CONTINUE
10746           V(N,5)=VTIMUP(IUP)
10747   490   CONTINUE
10748         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
10749  
10750 C...Arrange colour flow for user-defined processes
10751         NLBL=0
10752         DO 540 IUP1=1,NUP
10753           I1=MINT(84)+IUP1
10754           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
10755           IF(K(I1,1).EQ.1) K(I1,1)=3
10756           IF(K(I1,1).EQ.11) K(I1,1)=14
10757 C...Find a not yet considered colour/anticolour line.
10758           DO 530 ISDE1=1,2
10759             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
10760             NMAT=0
10761             DO 500 ILBL=1,NLBL
10762               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
10763   500       CONTINUE
10764             IF(NMAT.EQ.0) THEN
10765               NLBL=NLBL+1
10766               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
10767 C...Find all others belonging to same line.
10768               I3=I1
10769               I4=0
10770               DO 520 IUP2=IUP1+1,NUP
10771                 I2=MINT(84)+IUP2
10772                 DO 510 ISDE2=1,2
10773                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
10774                     IF(ISDE2.EQ.ISDE1) THEN
10775                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
10776                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
10777                       I3=I2
10778                     ELSEIF(I4.NE.0) THEN
10779                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
10780                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
10781                       I4=I2
10782                     ELSEIF(IUP2.LE.2) THEN
10783                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
10784                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
10785                       I4=I2
10786                     ELSE
10787                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
10788                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
10789                       I4=I2
10790                     ENDIF
10791                   ENDIF
10792   510           CONTINUE
10793   520         CONTINUE
10794             ENDIF
10795   530     CONTINUE
10796   540   CONTINUE
10797  
10798       ELSEIF(IDOC.EQ.7) THEN
10799 C...Resonance not decaying; store kinematics
10800         I=MINT(83)+7
10801         K(IPU3,1)=1
10802         K(IPU3,2)=KFRES
10803         K(IPU3,3)=I
10804         P(IPU3,4)=SHUSER
10805         P(IPU3,5)=SHUSER
10806         K(I,1)=21
10807         K(I,2)=KFRES
10808         P(I,4)=SHUSER
10809         P(I,5)=SHUSER
10810         N=IPU3
10811         MINT(21)=KFRES
10812         MINT(22)=0
10813  
10814 C...Special cases: colour flow in coloured resonances
10815         KCRES=PYCOMP(KFRES)
10816         IF(KCHG(KCRES,2).NE.0) THEN
10817           K(IPU3,1)=3
10818           DO 550 J=1,2
10819             JC=J
10820             IF(KCS.EQ.-1) JC=3-J
10821             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
10822      &      MINT(84)+ICOL(KCC,1,JC)
10823             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
10824      &      MINT(84)+ICOL(KCC,2,JC)
10825             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
10826      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
10827   550     CONTINUE
10828         ELSE
10829           K(IPU1,4)=IPU2
10830           K(IPU1,5)=IPU2
10831           K(IPU2,4)=IPU1
10832           K(IPU2,5)=IPU1
10833         ENDIF
10834  
10835       ELSEIF(IDOC.EQ.8) THEN
10836 C...2 -> 2 processes: store outgoing partons in their CM-frame
10837         DO 560 JT=1,2
10838           I=MINT(84)+2+JT
10839           KCA=PYCOMP(MINT(20+JT))
10840           K(I,1)=1
10841           IF(KCHG(KCA,2).NE.0) K(I,1)=3
10842           K(I,2)=MINT(20+JT)
10843           K(I,3)=MINT(83)+IDOC+JT-2
10844           KFAA=IABS(K(I,2))
10845           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
10846             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
10847           ELSE
10848             P(I,5)=PYMASS(K(I,2))
10849           ENDIF
10850           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
10851      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
10852   560   CONTINUE
10853         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
10854           KFA1=IABS(MINT(21))
10855           KFA2=IABS(MINT(22))
10856           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
10857      &    THEN
10858             MINT(51)=1
10859             RETURN
10860           ENDIF
10861           P(IPU3,5)=0D0
10862           P(IPU4,5)=0D0
10863         ENDIF
10864         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
10865         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
10866         P(IPU4,4)=SHR-P(IPU3,4)
10867         P(IPU4,3)=-P(IPU3,3)
10868         N=IPU4
10869         MINT(7)=MINT(83)+7
10870         MINT(8)=MINT(83)+8
10871  
10872 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
10873         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
10874  
10875       ELSEIF(IDOC.EQ.9) THEN
10876 C...2 -> 3 processes: store outgoing partons in their CM frame
10877         DO 570 JT=1,2
10878           I=MINT(84)+2+JT
10879           KCA=PYCOMP(MINT(20+JT))
10880           K(I,1)=1
10881           IF(KCHG(KCA,2).NE.0) K(I,1)=3
10882           K(I,2)=MINT(20+JT)
10883           K(I,3)=MINT(83)+IDOC+JT-3
10884           IF(IABS(K(I,2)).LE.22) THEN
10885             P(I,5)=PYMASS(K(I,2))
10886           ELSE
10887             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
10888           ENDIF
10889           PT=SQRT(MAX(0D0,VINT(197+5*JT)-P(I,5)**2+VINT(196+5*JT)**2))
10890           P(I,1)=PT*COS(VINT(198+5*JT))
10891           P(I,2)=PT*SIN(VINT(198+5*JT))
10892   570   CONTINUE
10893         K(IPU5,1)=1
10894         K(IPU5,2)=KFRES
10895         K(IPU5,3)=MINT(83)+IDOC
10896         P(IPU5,5)=SHR
10897         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
10898         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
10899         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
10900         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
10901         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
10902         PMT3=SQRT(PMS3)
10903         P(IPU5,3)=PMT3*SINH(VINT(211))
10904         P(IPU5,4)=PMT3*COSH(VINT(211))
10905         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
10906         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
10907         IF(SQL12.LE.0D0) THEN
10908           MINT(51)=1
10909           RETURN
10910         ENDIF
10911         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
10912      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
10913         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
10914         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
10915         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
10916         MINT(23)=KFRES
10917         N=IPU5
10918         MINT(7)=MINT(83)+7
10919         MINT(8)=MINT(83)+8
10920  
10921       ELSEIF(IDOC.EQ.11) THEN
10922 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
10923         PHI(1)=PARU(2)*PYR(0)
10924         PHI(2)=PHI(1)-PHIR
10925         DO 580 JT=1,2
10926           I=MINT(84)+2+JT
10927           K(I,1)=1
10928           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
10929           K(I,2)=MINT(20+JT)
10930           K(I,3)=MINT(83)+IDOC+JT-2
10931           P(I,5)=PYMASS(K(I,2))
10932           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
10933             MINT(51)=1
10934             RETURN
10935           ENDIF
10936           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
10937           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
10938           P(I,1)=PTABS*COS(PHI(JT))
10939           P(I,2)=PTABS*SIN(PHI(JT))
10940           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
10941           P(I,4)=0.5D0*SHPR*Z(JT)
10942           IZW=MINT(83)+6+JT
10943           K(IZW,1)=21
10944           K(IZW,2)=23
10945           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
10946           K(IZW,3)=IZW-2
10947           P(IZW,1)=-P(I,1)
10948           P(IZW,2)=-P(I,2)
10949           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
10950           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
10951           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
10952   580   CONTINUE
10953         I=MINT(83)+9
10954         K(IPU5,1)=1
10955         K(IPU5,2)=KFRES
10956         K(IPU5,3)=I
10957         P(IPU5,5)=SHR
10958         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
10959         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
10960         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
10961         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
10962         K(I,1)=21
10963         K(I,2)=KFRES
10964         DO 590 J=1,5
10965           P(I,J)=P(IPU5,J)
10966   590   CONTINUE
10967         N=IPU5
10968         MINT(23)=KFRES
10969  
10970       ELSEIF(IDOC.EQ.12) THEN
10971 C...Z0 and W+/- scattering: store bosons and outgoing partons
10972         PHI(1)=PARU(2)*PYR(0)
10973         PHI(2)=PHI(1)-PHIR
10974         JTRAN=INT(1.5D0+PYR(0))
10975         DO 600 JT=1,2
10976           I=MINT(84)+2+JT
10977           K(I,1)=1
10978           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
10979           K(I,2)=MINT(20+JT)
10980           K(I,3)=MINT(83)+IDOC+JT-2
10981           P(I,5)=PYMASS(K(I,2))
10982           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
10983           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
10984           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
10985           P(I,1)=PTABS*COS(PHI(JT))
10986           P(I,2)=PTABS*SIN(PHI(JT))
10987           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
10988           P(I,4)=0.5D0*SHPR*Z(JT)
10989           IZW=MINT(83)+6+JT
10990           K(IZW,1)=21
10991           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
10992             K(IZW,2)=23
10993           ELSE
10994             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
10995           ENDIF
10996           K(IZW,3)=IZW-2
10997           P(IZW,1)=-P(I,1)
10998           P(IZW,2)=-P(I,2)
10999           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
11000           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
11001           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
11002           IPU=MINT(84)+4+JT
11003           K(IPU,1)=3
11004           K(IPU,2)=KFPR(ISUB,JT)
11005           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
11006           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
11007           K(IPU,3)=MINT(83)+8+JT
11008           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
11009             P(IPU,5)=PYMASS(K(IPU,2))
11010           ELSE
11011             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
11012           ENDIF
11013           MINT(22+JT)=K(IPU,2)
11014   600   CONTINUE
11015 C...Find rotation and boost for hard scattering subsystem
11016         I1=MINT(83)+7
11017         I2=MINT(83)+8
11018         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
11019         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
11020         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
11021         GAMCM=(P(I1,4)+P(I2,4))/SHR
11022         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
11023         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
11024         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
11025         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
11026         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
11027         PHICM=PYANGL(PX,PY)
11028 C...Store hard scattering subsystem. Rotate and boost it
11029         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
11030      &  P(IPU6,5)**2
11031         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
11032         CTHWZ=VINT(23)
11033         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
11034         PHIWZ=VINT(24)-PHICM
11035         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
11036         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
11037         P(IPU5,3)=PABS*CTHWZ
11038         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
11039         P(IPU6,1)=-P(IPU5,1)
11040         P(IPU6,2)=-P(IPU5,2)
11041         P(IPU6,3)=-P(IPU5,3)
11042         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
11043         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
11044         DO 620 JT=1,2
11045           I1=MINT(83)+8+JT
11046           I2=MINT(84)+4+JT
11047           K(I1,1)=21
11048           K(I1,2)=K(I2,2)
11049           DO 610 J=1,5
11050             P(I1,J)=P(I2,J)
11051   610     CONTINUE
11052   620   CONTINUE
11053         N=IPU6
11054         MINT(7)=MINT(83)+9
11055         MINT(8)=MINT(83)+10
11056       ENDIF
11057  
11058       IF(ISET(ISUB).EQ.11) THEN
11059       ELSEIF(IDOC.GE.8) THEN
11060 C...Store colour connection indices
11061         DO 630 J=1,2
11062           JC=J
11063           IF(KCS.EQ.-1) JC=3-J
11064           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
11065      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
11066           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
11067      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
11068           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
11069      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
11070           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
11071      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
11072   630   CONTINUE
11073  
11074 C...Copy outgoing partons to documentation lines
11075         IMAX=2
11076         IF(IDOC.EQ.9) IMAX=3
11077         DO 650 I=1,IMAX
11078           I1=MINT(83)+IDOC-IMAX+I
11079           I2=MINT(84)+2+I
11080           K(I1,1)=21
11081           K(I1,2)=K(I2,2)
11082           IF(IDOC.LE.9) K(I1,3)=0
11083           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
11084           DO 640 J=1,5
11085             P(I1,J)=P(I2,J)
11086   640     CONTINUE
11087   650   CONTINUE
11088  
11089       ELSEIF(IDOC.EQ.9) THEN
11090 C...Store colour connection indices
11091         DO 660 J=1,2
11092           JC=J
11093           IF(KCS.EQ.-1) JC=3-J
11094           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
11095      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
11096      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
11097           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
11098      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
11099      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
11100           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
11101      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
11102           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
11103      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
11104   660   CONTINUE
11105  
11106 C...Copy outgoing partons to documentation lines
11107         DO 680 I=1,3
11108           I1=MINT(83)+IDOC-3+I
11109           I2=MINT(84)+2+I
11110           K(I1,1)=21
11111           K(I1,2)=K(I2,2)
11112           K(I1,3)=0
11113           DO 670 J=1,5
11114             P(I1,J)=P(I2,J)
11115   670     CONTINUE
11116   680   CONTINUE
11117       ENDIF
11118  
11119 C...Low-pT events: remove gluons used for string drawing purposes
11120       IF(ISUB.EQ.95) THEN
11121         K(IPU3,1)=K(IPU3,1)+10
11122         K(IPU4,1)=K(IPU4,1)+10
11123         DO 690 J=41,66
11124           VINTSV(J)=VINT(J)
11125           VINT(J)=0D0
11126   690   CONTINUE
11127         DO 710 I=MINT(83)+5,MINT(83)+8
11128           DO 700 J=1,5
11129             P(I,J)=0D0
11130   700     CONTINUE
11131   710   CONTINUE
11132       ENDIF
11133  
11134       RETURN
11135       END
11136  
11137 C*********************************************************************
11138  
11139 C...PYSSPA
11140 C...Generates spacelike parton showers.
11141  
11142       SUBROUTINE PYSSPA(IPU1,IPU2)
11143  
11144 C...Double precision and integer declarations.
11145       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
11146       IMPLICIT INTEGER(I-N)
11147       INTEGER PYK,PYCHGE,PYCOMP
11148 C...Commonblocks.
11149       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
11150       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
11151       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
11152       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
11153       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
11154       COMMON/PYINT1/MINT(400),VINT(400)
11155       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
11156       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
11157       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
11158      &/PYINT2/,/PYINT3/
11159 C...Local arrays and data.
11160       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
11161      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
11162      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
11163      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
11164      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
11165       DATA IS/2*0/
11166  
11167 C...Read out basic information; set global Q^2 scale.
11168       IPUS1=IPU1
11169       IPUS2=IPU2
11170       ISUB=MINT(1)
11171       Q2MX=VINT(56)
11172       IF(ISET(ISUB).EQ.2) Q2MX=MIN(VINT(2),PARP(67)*VINT(56))
11173       FCQ2MX=1D0
11174  
11175 C...Define which processes ME corrections have been implemented for.
11176       MECOR=0
11177       IF(MSTP(68).EQ.1) THEN
11178         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
11179      &  ISUB.EQ.144) MECOR=1
11180         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
11181       ENDIF
11182  
11183 C...Initialize QCD evolution and check phase space.
11184       Q2MNC=PARP(62)**2
11185       Q2MNCS(1)=Q2MNC
11186       Q2MNCS(2)=Q2MNC
11187       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
11188         Q0S=PARP(15)**2
11189         PS=VINT(3)**2
11190         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
11191      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
11192         Q2INT=SQRT(Q0S*Q2EFF)
11193         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
11194       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
11195         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
11196       ENDIF
11197       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
11198         Q0S=PARP(15)**2
11199         PS=VINT(4)**2
11200         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
11201      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
11202         Q2INT=SQRT(Q0S*Q2EFF)
11203         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
11204       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
11205         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
11206       ENDIF
11207       MCEV=0
11208       ALAMS=PARU(112)
11209       PARU(112)=PARP(61)
11210       FQ2C=1D0
11211       TCMX=0D0
11212       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
11213         MCEV=1
11214         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
11215         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
11216         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
11217         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
11218      &  MCEV=0
11219       ENDIF
11220  
11221 C...Initialize QED evolution and check phase space.
11222       MEEV=0
11223       XEE=1D-10
11224       SPME=PMAS(11,1)**2
11225       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
11226      &SPME=PMAS(13,1)**2
11227       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
11228      &SPME=PMAS(15,1)**2
11229       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
11230       TEMX=0D0
11231       FWTE=10D0
11232       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
11233         MEEV=1
11234         TEMX=LOG(Q2MX/SPME)
11235         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
11236       ENDIF
11237       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
11238         MEEV=2
11239         TEMX=TCMX
11240         FWTE=1D0
11241       ENDIF
11242       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
11243  
11244 C...Loopback point in case of failure to reconstruct kinematics.
11245       NS=N
11246       LOOP=0
11247   100 LOOP=LOOP+1
11248       IF(LOOP.GT.100) THEN
11249         MINT(51)=1
11250         RETURN
11251       ENDIF
11252       N=NS
11253  
11254 C...Initial values: flavours, momenta, virtualities.
11255       DO 120 JT=1,2
11256         MORE(JT)=1
11257         KFBEAM(JT)=MINT(10+JT)
11258         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
11259         KFLS(JT)=MINT(14+JT)
11260         KFLS(JT+2)=KFLS(JT)
11261         XS(JT)=VINT(40+JT)
11262         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
11263         ZS(JT)=1D0
11264         Q2S(JT)=FCQ2MX*Q2MX
11265         DQ2(JT)=0D0
11266         TEVCSV(JT)=TCMX
11267         ALAM(JT)=PARP(61)
11268         THE2(JT)=1D0
11269         TEVESV(JT)=TEMX
11270         MCESV(JT)=0
11271 C...Calculate initial parton distribution weights.
11272         MINT(105)=MINT(102+JT)
11273         MINT(109)=MINT(106+JT)
11274         VINT(120)=VINT(2+JT)
11275 C.... ALICE
11276 C.... Store side in MINT(124)
11277         MINT(124) = JT
11278 C....
11279         IF(XS(JT).LT.1D0-XEE) THEN
11280           IF(MSTP(57).LE.1) THEN
11281             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
11282           ELSE
11283             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
11284           ENDIF
11285         ENDIF
11286         DO 110 KFL=-25,25
11287           XFS(JT,KFL)=XFB(KFL)
11288   110   CONTINUE
11289 C...Special kinematics check for c/b quarks (that g -> c cbar or
11290 C...b bbar kinematically possible).
11291       KFLCB=IABS(KFLS(JT))
11292       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
11293         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
11294           MINT(51)=1
11295           RETURN
11296         ENDIF
11297       ENDIF
11298   120 CONTINUE
11299       DSH=VINT(44)
11300       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
11301  
11302 C...Find if interference with final state partons.
11303       MFIS=0
11304       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
11305       IF(MFIS.NE.0) THEN
11306         DO 140 I=1,2
11307           KCFI(I)=0
11308           KCA=PYCOMP(IABS(KFLS(I)))
11309           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
11310           NFIS(I)=0
11311           IF(KCFI(I).NE.0) THEN
11312             IF(I.EQ.1) IPFS=IPUS1
11313             IF(I.EQ.2) IPFS=IPUS2
11314             DO 130 J=1,2
11315               ICSI=MOD(K(IPFS,3+J),MSTU(5))
11316               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
11317      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
11318                 NFIS(I)=NFIS(I)+1
11319                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
11320      &          P(ICSI,2)**2))
11321                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
11322               ENDIF
11323   130       CONTINUE
11324           ENDIF
11325   140   CONTINUE
11326         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
11327       ENDIF
11328  
11329 C...Pick up leg with highest virtuality.
11330       JTOLD=1
11331   150 N=N+1
11332       JT=1
11333       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
11334       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
11335       IF(MORE(JT).EQ.0) JT=3-JT
11336       JTOLD=JT
11337       KFLB=KFLS(JT)
11338       XB=XS(JT)
11339       DO 160 KFL=-25,25
11340         XFB(KFL)=XFS(JT,KFL)
11341   160 CONTINUE
11342       DSHR=2D0*SQRT(DSH)
11343       DSHZ=DSH/ZS(JT)
11344  
11345 C...Check if allowed to branch.
11346       MCEV=0
11347       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
11348         MCEV=1
11349         XEC=MAX(PARP(65)*DSHR/VINT(2),XB*(1D0/(1D0-PARP(66))-1D0))
11350         IF(XB.GE.1D0-2D0*XEC) MCEV=0
11351       ENDIF
11352       MEEV=0
11353       IF(MINT(44+JT).EQ.3) THEN
11354         MEEV=1
11355         IF(XB.GE.1D0-2D0*XEE) MEEV=0
11356         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
11357      &  MEEV=0
11358 C***Currently kill QED shower for resolved photoproduction.
11359         IF(MINT(18+JT).EQ.1) MEEV=0
11360 C***Currently kill shower for W inside electron.
11361         IF(IABS(KFLB).EQ.24) THEN
11362           MCEV=0
11363           MEEV=0
11364         ENDIF
11365       ENDIF
11366       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
11367      &MEEV=2
11368       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
11369         Q2B=0D0
11370         GOTO 260
11371       ENDIF
11372  
11373 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
11374       Q2B=Q2S(JT)
11375       TEVCB=TEVCSV(JT)
11376       TEVEB=TEVESV(JT)
11377       IF(MSTP(62).LE.1) THEN
11378         IF(ZS(JT).GT.0.99999D0) THEN
11379           Q2B=Q2S(JT)
11380         ELSE
11381           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
11382      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
11383      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
11384         ENDIF
11385         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11386         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
11387       ENDIF
11388       IF(MCEV.EQ.1) THEN
11389         ALSDUM=PYALPS(FQ2C*Q2B)
11390         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
11391         ALAM(JT)=PARU(117)
11392         B0=(33D0-2D0*MSTU(118))/6D0
11393       ENDIF
11394       IF(MEEV.EQ.2) TEVEB=TEVCB
11395       TEVCBS=TEVCB
11396       TEVEBS=TEVEB
11397  
11398 C...Select side for interference with final state partons.
11399       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
11400         IFI=N-NS
11401         ISFI(IFI)=0
11402         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
11403           ISFI(IFI)=1
11404         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
11405           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
11406         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
11407           ISFI(IFI)=1
11408           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
11409         ENDIF
11410       ENDIF
11411  
11412 C...Calculate preweighting factor for ME-corrected processes.
11413       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
11414  
11415 C...Calculate Altarelli-Parisi weights.
11416       DO 170 KFL=-25,25
11417         WTAPC(KFL)=0D0
11418         WTAPE(KFL)=0D0
11419         WTSF(KFL)=0D0
11420   170 CONTINUE
11421 C...q -> q (g or gamma emission), g -> q.
11422       IF(IABS(KFLB).LE.10) THEN
11423         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
11424         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
11425         EQ2=1D0/9D0
11426         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
11427         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
11428      &  (XEC*(1D0-XEC)))
11429         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11430           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
11431           WTAPC(21)=WTGF*WTAPC(21)
11432           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
11433         ENDIF
11434 C...f -> f, gamma -> f.
11435       ELSEIF(IABS(KFLB).LE.20) THEN
11436         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
11437         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
11438         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
11439         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
11440         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11441           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
11442           WTAPE(22)=WTGF*WTAPE(22)
11443         ENDIF
11444 C...f -> g, g -> g.
11445       ELSEIF(KFLB.EQ.21) THEN
11446         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
11447         DO 180 KFL=1,MSTP(58)
11448           WTAPC(KFL)=WTAPQ
11449           WTAPC(-KFL)=WTAPQ
11450   180   CONTINUE
11451         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
11452         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11453           DO 190 KFL=1,MSTP(58)
11454             WTAPC(KFL)=WTFG*WTAPC(KFL)
11455             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
11456   190     CONTINUE
11457           WTAPC(21)=WTGG*WTAPC(21)
11458         ENDIF
11459 C...f -> gamma, W+, W-.
11460       ELSEIF(KFLB.EQ.22) THEN
11461         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
11462         WTAPE(11)=WTAPF
11463         WTAPE(-11)=WTAPF
11464         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11465           WTAPE(11)=WTFG*WTAPE(11)
11466           WTAPE(-11)=WTFG*WTAPE(-11)
11467         ENDIF
11468       ELSEIF(KFLB.EQ.24) THEN
11469         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
11470      &  (XEE*(XB+XEE)))/XB
11471       ELSEIF(KFLB.EQ.-24) THEN
11472         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
11473      &  (XEE*(XB+XEE)))/XB
11474       ENDIF
11475  
11476 C...Calculate parton distribution weights and sum.
11477       NTRY=0
11478   200 NTRY=NTRY+1
11479       IF(NTRY.GT.500) THEN
11480         MINT(51)=1
11481         RETURN
11482       ENDIF
11483       WTSUMC=0D0
11484       WTSUME=0D0
11485       XFBO=MAX(1D-10,XFB(KFLB))
11486       DO 210 KFL=-25,25
11487         WTSF(KFL)=XFB(KFL)/XFBO
11488         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
11489         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
11490   210 CONTINUE
11491       WTSUMC=MAX(0.0001D0,WTSUMC)
11492       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
11493  
11494 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
11495       NTRY2=0
11496   220 NTRY2=NTRY2+1
11497       IF(NTRY2.GT.500) THEN
11498         MINT(51)=1
11499         RETURN
11500       ENDIF
11501       IF(MCEV.EQ.1) THEN
11502         IF(MSTP(64).LE.0) THEN
11503           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
11504         ELSEIF(MSTP(64).EQ.1) THEN
11505           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
11506         ELSE
11507           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
11508         ENDIF
11509       ENDIF
11510       IF(MEEV.EQ.1) THEN
11511         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
11512      &  (PARU(101)*FWTE*WTSUME*TEMX)))
11513       ELSEIF(MEEV.EQ.2) THEN
11514         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
11515       ENDIF
11516  
11517 C...Translate t into Q2 scale; choose between QCD and QED evolution.
11518   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
11519       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
11520       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
11521 C...Ensure that Q2 is above threshold for charm/bottom.
11522       KFLCB=IABS(KFLB)
11523       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
11524      &MCEV.EQ.1) THEN
11525         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
11526           Q2CB=1.1D0*PMAS(KFLCB,1)**2
11527           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11528           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
11529         ENDIF
11530       ENDIF
11531       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
11532      &MEEV.EQ.2) THEN
11533         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
11534       ENDIF
11535       MCE=0
11536       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
11537       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
11538         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
11539       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
11540         IF(Q2EB.GT.Q2MNE) MCE=2
11541       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
11542         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
11543       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
11544         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
11545         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
11546       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
11547         MCE=1
11548         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
11549         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
11550       ELSE
11551         MCE=2
11552         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
11553         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
11554       ENDIF
11555  
11556 C...Evolution possibly ended. Update t values.
11557       IF(MCE.EQ.0) THEN
11558         Q2B=0D0
11559         GOTO 260
11560       ELSEIF(MCE.EQ.1) THEN
11561         Q2B=Q2CB
11562         Q2REF=FQ2C*Q2B
11563         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
11564         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11565       ELSE
11566         Q2B=Q2EB
11567         Q2REF=Q2B
11568         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
11569       ENDIF
11570  
11571 C...Select flavour for branching parton.
11572       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
11573       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
11574       KFLA=-25
11575   240 KFLA=KFLA+1
11576       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
11577       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
11578       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
11579       IF(KFLA.EQ.25) THEN
11580         Q2B=0D0
11581         GOTO 260
11582       ENDIF
11583  
11584 C...Choose z value and corrective weight.
11585       WTZ=0D0
11586 C...q -> q + g or q -> q + gamma.
11587       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
11588         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
11589      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
11590         WTZ=0.5D0*(1D0+Z**2)
11591 C...q -> g + q.
11592       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
11593         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
11594         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
11595 C...f -> f + gamma.
11596       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
11597         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
11598           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
11599      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
11600         ELSE
11601           Z=XB+XB*(XEE/(1D0-XEE))*
11602      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
11603         ENDIF
11604         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
11605 C...f -> gamma + f.
11606       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
11607         Z=XB+XB*(XEE/(1D0-XEE))*
11608      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
11609         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
11610 C...f -> W+- + f.
11611       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) 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      &  (Q2B/(Q2B+PMAS(24,1)**2))
11616 C...g -> q + qbar.
11617       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
11618         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
11619         WTZ=1D0-2D0*Z*(1D0-Z)
11620 C...g -> g + g.
11621       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
11622         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
11623         WTZ=(1D0-Z*(1D0-Z))**2
11624 C...gamma -> f + fbar.
11625       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
11626         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
11627         WTZ=1D0-2D0*Z*(1D0-Z)
11628       ENDIF
11629       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
11630  
11631 C...Option with resummation of soft gluon emission as effective z shift.
11632       IF(MCE.EQ.1) THEN
11633         IF(MSTP(65).GE.1) THEN
11634           RSOFT=6D0
11635           IF(KFLB.NE.21) RSOFT=8D0/3D0
11636           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
11637           IF(Z.LE.XB) GOTO 220
11638         ENDIF
11639  
11640 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
11641         IF(MSTP(64).GE.2) THEN
11642           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
11643           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
11644           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
11645           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
11646         ENDIF
11647       ENDIF
11648  
11649 C...Remove kinematically impossible branchings.
11650       UHAT=Q2B-DSH*(1D0-Z)/Z
11651       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
11652  
11653 C...Select phi angle of branching at random.
11654       PHIBR=PARU(2)*PYR(0)
11655  
11656 C...Matrix-element corrections for some processes.
11657       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
11658         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
11659           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
11660           WTZ=WTZ*WTME/WTFF
11661         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
11662           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
11663           WTZ=WTZ*WTME/WTGF
11664         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
11665           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
11666           WTZ=WTZ*WTME/WTFG
11667         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
11668           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
11669           WTZ=WTZ*WTME/WTGG
11670         ENDIF
11671       ENDIF
11672  
11673 C...Impose angular constraint in first branching from interference
11674 C...with final state partons.
11675       IF(MCE.EQ.1) THEN
11676         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
11677           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
11678           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
11679             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
11680           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
11681             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
11682           ENDIF
11683         ENDIF
11684  
11685 C...Option with angular ordering requirement.
11686         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
11687           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT(2))
11688           IF(THE2T.GT.THE2(JT)) GOTO 220
11689         ENDIF
11690       ENDIF
11691  
11692 C...Weighting with new parton distributions.
11693       MINT(105)=MINT(102+JT)
11694       MINT(109)=MINT(106+JT)
11695       VINT(120)=VINT(2+JT)
11696 C.... ALICE
11697 C.... Store side in MINT(124)
11698       MINT(124)=JT
11699 C....
11700       IF(MSTP(57).LE.1) THEN
11701         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
11702       ELSE
11703         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
11704       ENDIF
11705       XFBN=XFN(KFLB)
11706       IF(XFBN.LT.1D-20) THEN
11707         IF(KFLA.EQ.KFLB) THEN
11708           TEVCB=TEVCBS
11709           TEVEB=TEVEBS
11710           WTAPC(KFLB)=0D0
11711           WTAPE(KFLB)=0D0
11712           GOTO 200
11713         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
11714           TEVCB=0.5D0*(TEVCBS+TEVCB)
11715           GOTO 230
11716         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
11717           TEVEB=0.5D0*(TEVEBS+TEVEB)
11718           GOTO 230
11719         ELSE
11720           XFBN=1D-10
11721           XFN(KFLB)=XFBN
11722         ENDIF
11723       ENDIF
11724       DO 250 KFL=-25,25
11725         XFB(KFL)=XFN(KFL)
11726   250 CONTINUE
11727       XA=XB/Z
11728 C.... ALICE
11729 C.... Store side in MINT(124)
11730       MINT(124) = JT
11731 C....
11732       IF(MSTP(57).LE.1) THEN
11733         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
11734       ELSE
11735         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
11736       ENDIF
11737       XFAN=XFA(KFLA)
11738       IF(XFAN.LT.1D-20) GOTO 200
11739       WTSFA=WTSF(KFLA)
11740       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
11741  
11742 C...Define two hard scatterers in their CM-frame.
11743   260 IF(N.EQ.NS+2) THEN
11744         DQ2(JT)=Q2B
11745         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
11746         DO 280 JR=1,2
11747           I=NS+JR
11748           IF(JR.EQ.1) IPO=IPUS1
11749           IF(JR.EQ.2) IPO=IPUS2
11750           DO 270 J=1,5
11751             K(I,J)=0
11752             P(I,J)=0D0
11753             V(I,J)=0D0
11754   270     CONTINUE
11755           K(I,1)=14
11756           K(I,2)=KFLS(JR+2)
11757           K(I,4)=IPO
11758           K(I,5)=IPO
11759           P(I,3)=DPLCM*(-1)**(JR+1)
11760           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
11761           P(I,5)=-SQRT(DQ2(JR))
11762           K(IPO,1)=14
11763           K(IPO,3)=I
11764           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
11765           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
11766   280   CONTINUE
11767  
11768 C...Find maximum allowed mass of timelike parton.
11769       ELSEIF(N.GT.NS+2) THEN
11770         JR=3-JT
11771         DQ2(3)=Q2B
11772         DPC(1)=P(IS(1),4)
11773         DPC(2)=P(IS(2),4)
11774         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
11775         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
11776         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
11777         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
11778         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
11779         IKIN=0
11780         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
11781      &  1D-10*DPD(1)) IKIN=1
11782         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
11783      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
11784         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
11785      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
11786  
11787 C...Generate timelike parton shower (if required).
11788         IT=N
11789         DO 290 J=1,5
11790           K(IT,J)=0
11791           P(IT,J)=0D0
11792           V(IT,J)=0D0
11793   290   CONTINUE
11794 C...f -> f + g (gamma).
11795         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
11796           K(IT,2)=21
11797           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
11798 C...f -> g (gamma, W+-) + f.
11799         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
11800           K(IT,2)=KFLB
11801           IF(KFLS(JT+2).EQ.24) THEN
11802             K(IT,2)=-12
11803           ELSEIF(KFLS(JT+2).EQ.-24) THEN
11804             K(IT,2)=12
11805           ENDIF
11806 C...g (gamma) -> f + fbar, g + g.
11807         ELSE
11808           K(IT,2)=-KFLS(JT+2)
11809           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
11810         ENDIF
11811         K(IT,1)=3
11812         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
11813      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
11814         P(IT,5)=PYMASS(K(IT,2))
11815         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
11816         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
11817           MSTJ48=MSTJ(48)
11818           PARJ85=PARJ(85)
11819           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
11820           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
11821           IF(MSTP(63).EQ.1) THEN
11822             Q2TIM=DMSMA
11823           ELSEIF(MSTP(63).EQ.2) THEN
11824             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
11825           ELSE
11826             Q2TIM=DMSMA
11827             MSTJ(48)=1
11828             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
11829             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
11830      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
11831             PARJ(85)=SQRT(MAX(0D0,DPT2))*
11832      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
11833           ENDIF
11834           CALL PYSHOW(IT,0,SQRT(Q2TIM))
11835           MSTJ(48)=MSTJ48
11836           PARJ(85)=PARJ85
11837           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
11838         ENDIF
11839  
11840 C...Reconstruct kinematics of branching: timelike parton shower.
11841         DMS=P(IT,5)**2
11842         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
11843         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
11844      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
11845      &  (4D0*DSH*DPC(3)**2)
11846         IF(DPT2.LT.0D0) GOTO 100
11847         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
11848      &  DSHR)/DPC(3)-DPC(3)
11849         P(IT,1)=SQRT(DPT2)
11850         P(IT,3)=DPB(1)*(-1)**(JT+1)
11851         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
11852         IF(N.GE.IT+1) THEN
11853           DPB(1)=SQRT(DPB(1)**2+DPT2)
11854           DPB(2)=SQRT(DPB(1)**2+DMS)
11855           DPB(3)=P(IT+1,3)
11856           DPB(4)=SQRT(DPB(3)**2+DMS)
11857           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
11858      &    DPB(1))
11859           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
11860           THE=PYANGL(P(IT,3),P(IT,1))
11861           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
11862         ENDIF
11863  
11864 C...Reconstruct kinematics of branching: spacelike parton.
11865         DO 300 J=1,5
11866           K(N+1,J)=0
11867           P(N+1,J)=0D0
11868           V(N+1,J)=0D0
11869   300   CONTINUE
11870         K(N+1,1)=14
11871         K(N+1,2)=KFLB
11872         P(N+1,1)=P(IT,1)
11873         P(N+1,3)=P(IT,3)+P(IS(JT),3)
11874         P(N+1,4)=P(IT,4)+P(IS(JT),4)
11875         P(N+1,5)=-SQRT(DQ2(3))
11876  
11877 C...Define colour flow of branching.
11878         K(IS(JT),3)=N+1
11879         K(IT,3)=N+1
11880         IM1=N+1
11881         IM2=N+1
11882 C...f -> f + gamma (Z, W).
11883         IF(IABS(K(IT,2)).GE.22) THEN
11884           K(IT,1)=1
11885           ID1=IS(JT)
11886           ID2=IS(JT)
11887 C...f -> gamma (Z, W) + f.
11888         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
11889           ID1=IT
11890           ID2=IT
11891 C...gamma -> q + qbar, g + g.
11892         ELSEIF(K(N+1,2).EQ.22) THEN
11893           ID1=IS(JT)
11894           ID2=IT
11895           IM1=ID2
11896           IM2=ID1
11897 C...q -> q + g.
11898         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
11899           ID1=IT
11900           ID2=IS(JT)
11901 C...q -> g + q.
11902         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
11903           ID1=IS(JT)
11904           ID2=IT
11905 C...qbar -> qbar + g.
11906         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
11907           ID1=IS(JT)
11908           ID2=IT
11909 C...qbar -> g + qbar.
11910         ELSEIF(K(N+1,2).LT.0) THEN
11911           ID1=IT
11912           ID2=IS(JT)
11913 C...g -> g + g; g -> q + qbar.
11914         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
11915           ID1=IS(JT)
11916           ID2=IT
11917         ELSE
11918           ID1=IT
11919           ID2=IS(JT)
11920         ENDIF
11921         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
11922         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
11923         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
11924         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
11925         IF(ID1.NE.ID2) THEN
11926           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
11927           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
11928         ENDIF
11929         N=N+1
11930         IF(K(IT,1).EQ.1) THEN
11931           K(IT,4)=0
11932           K(IT,5)=0
11933         ENDIF
11934  
11935 C...Boost to new CM-frame.
11936         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
11937         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
11938         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
11939         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
11940         IR=N+(JT-1)*(IS(1)-N)
11941         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
11942      &  0D0,0D0,0D0)
11943       ENDIF
11944  
11945 C...Update kinematics variables.
11946       IS(JT)=N
11947       DQ2(JT)=Q2B
11948       IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THE2(JT)=THE2T
11949       DSH=DSHZ
11950  
11951 C...Save quantities; loop back.
11952       Q2S(JT)=Q2B
11953       DPHI(JT)=PHIBR
11954       MCESV(JT)=MCE
11955       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
11956      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
11957         KFLS(JT+2)=KFLS(JT)
11958         KFLS(JT)=KFLA
11959         XS(JT)=XA
11960         ZS(JT)=Z
11961         DO 310 KFL=-25,25
11962           XFS(JT,KFL)=XFA(KFL)
11963   310   CONTINUE
11964         TEVCSV(JT)=TEVCB
11965         TEVESV(JT)=TEVEB
11966       ELSE
11967         MORE(JT)=0
11968         IF(JT.EQ.1) IPU1=N
11969         IF(JT.EQ.2) IPU2=N
11970       ENDIF
11971       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
11972         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
11973         IF(MSTU(21).GE.1) N=NS
11974         IF(MSTU(21).GE.1) RETURN
11975       ENDIF
11976       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
11977  
11978 C...Boost hard scattering partons to frame of shower initiators.
11979       DO 320 J=1,3
11980         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
11981   320 CONTINUE
11982       K(N+2,1)=1
11983       DO 330 J=1,5
11984         P(N+2,J)=P(NS+1,J)
11985   330 CONTINUE
11986       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
11987       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
11988       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
11989       CALL PYROBO(MINT(83)+5,NS,0D0,-ROBO(2),0D0,0D0,0D0)
11990       CALL PYROBO(MINT(83)+5,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),
11991      &ROBO(5))
11992  
11993 C...Store user information. Reset Lambda value.
11994       K(IPU1,3)=MINT(83)+3
11995       K(IPU2,3)=MINT(83)+4
11996       DO 340 JT=1,2
11997         MINT(12+JT)=KFLS(JT)
11998         VINT(140+JT)=XS(JT)
11999         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
12000   340 CONTINUE
12001       PARU(112)=ALAMS
12002  
12003       RETURN
12004       END
12005  
12006 C*********************************************************************
12007  
12008 C...PYMEMX
12009 C...Generates maximum ME weight in some initial-state showers.
12010 C...Inparameter MECOR: kind of hard scattering process
12011 C...Outparameter WTFF: maximum weight for fermion -> fermion
12012 C...             WTGF: maximum weight for gluon/photon -> fermion
12013 C...             WTFG: maximum weight for fermion -> gluon/photon
12014 C...             WTGG: maximum weight for gluon -> gluon
12015  
12016       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
12017  
12018 C...Double precision and integer declarations.
12019       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12020       IMPLICIT INTEGER(I-N)
12021       INTEGER PYK,PYCHGE,PYCOMP
12022 C...Commonblocks.
12023       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12024       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12025       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12026       COMMON/PYINT1/MINT(400),VINT(400)
12027       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12028       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
12029  
12030 C...Default maximum weight.
12031       WTFF=1D0
12032       WTGF=1D0
12033       WTFG=1D0
12034       WTGG=1D0
12035  
12036 C...Select maximum weight by process.
12037       IF(MECOR.EQ.1) THEN
12038         WTFF=1D0
12039         WTGF=3D0
12040       ELSEIF(MECOR.EQ.2) THEN
12041         WTFG=1D0
12042         WTGG=1D0
12043       ENDIF
12044  
12045       RETURN
12046       END
12047  
12048 C*********************************************************************
12049  
12050 C...PYMEWT
12051 C...Calculates actual ME weight in some initial-state showers.
12052 C...Inparameter MECOR: kind of hard scattering process
12053 C...            IFLCB: flavour combination of branching,
12054 C...                   1 for fermion -> fermion,
12055 C...                   2 for gluon/photon -> fermion
12056 C...                   3 for fermion -> gluon/photon,
12057 C...                   4 for gluon -> gluon
12058 C...            Q2:    Q2 value of shower branching
12059 C...            Z:     Z value of branching
12060 C...In+outparameter PHIBR: azimuthal angle of branching
12061 C...Outparameter WTME: actual ME weight
12062  
12063       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
12064  
12065 C...Double precision and integer declarations.
12066       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12067       IMPLICIT INTEGER(I-N)
12068       INTEGER PYK,PYCHGE,PYCOMP
12069 C...Commonblocks.
12070       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12071       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12072       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12073       COMMON/PYINT1/MINT(400),VINT(400)
12074       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12075       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
12076  
12077 C...Default output.
12078       WTME=1D0
12079  
12080 C...Define kinematics of shower branching in Mandelstam variables.
12081       SQM=VINT(44)
12082       SH=SQM/Z
12083       TH=-Q2
12084       UH=Q2-SQM*(1D0-Z)/Z
12085  
12086 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
12087       IF(MECOR.EQ.1) THEN
12088         IF(IFLCB.EQ.1) THEN
12089           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
12090         ELSEIF(IFLCB.EQ.2) THEN
12091           WTME=(SH**2+UH**2+2D0*SQM*TH)/((SH-SQM)**2+SQM**2)
12092         ENDIF
12093  
12094 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
12095       ELSEIF(MECOR.EQ.2) THEN
12096         IF(IFLCB.EQ.3) THEN
12097           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
12098         ELSEIF(IFLCB.EQ.4) THEN
12099           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
12100         ENDIF
12101       ENDIF
12102  
12103       RETURN
12104       END
12105  
12106 C*********************************************************************
12107  
12108 C...PYADSH
12109 C...Administers the generation of successive final-state showers
12110 C...in external processes.
12111  
12112       SUBROUTINE PYADSH(NFIN)
12113  
12114 C...Double precision and integer declarations.
12115       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12116       IMPLICIT INTEGER(I-N)
12117       INTEGER PYK,PYCHGE,PYCOMP
12118 C...Commonblocks.
12119       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12120       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12121       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12122       COMMON/PYINT1/MINT(400),VINT(400)
12123       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
12124 C...Local array.
12125       DIMENSION IBEG(100),KSAV(10,5),IORD(10),PSUM(4),BETA(3)
12126  
12127 C...Set primary vertex.
12128       DO 100 J=1,5
12129         V(MINT(83)+5,J)=0D0
12130         V(MINT(83)+6,J)=0D0
12131         V(MINT(84)+1,J)=0D0
12132         V(MINT(84)+2,J)=0D0
12133   100 CONTINUE
12134  
12135 C...Isolate systems of particles with the same mother.
12136       NSYS=0
12137       IMS=-1
12138       DO 140 I=MINT(84)+3,NFIN
12139         IM=K(I,3)
12140         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
12141         IF(IM.NE.IMS) THEN
12142           NSYS=NSYS+1
12143           IBEG(NSYS)=I
12144           IMS=IM
12145         ENDIF
12146  
12147 C...Set production vertices.
12148         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
12149      &  THEN
12150           DO 110 J=1,4
12151             V(I,J)=0D0
12152   110     CONTINUE
12153         ELSE
12154           DO 120 J=1,4
12155             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
12156   120     CONTINUE
12157         ENDIF
12158         IF(MSTP(125).GE.1) THEN
12159           IDOC=I-MSTP(126)+4
12160           DO 130 J=1,5
12161             V(IDOC,J)=V(I,J)
12162   130     CONTINUE
12163         ENDIF
12164   140 CONTINUE
12165  
12166 C...End loop over systems. Return if no showers to be performed.
12167       IBEG(NSYS+1)=NFIN+1
12168       IF(MSTP(71).LE.0) RETURN
12169  
12170 C...Loop through systems of particles; check that sensible size.
12171       DO 260 ISYS=1,NSYS
12172         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
12173         IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
12174         ELSEIF(NSIZ.LE.1) THEN
12175           CALL PYERRM(2,'(PYADSH:) only one particle in system')
12176         ELSEIF(NSIZ.GT.7) THEN
12177           CALL PYERRM(2,'(PYADSH:) more than seven particles in system')
12178         ELSE
12179  
12180 C...Save status codes and daughters of showering pair; reset them.
12181           DO 150 J=1,4
12182             PSUM(J)=0D0
12183   150     CONTINUE
12184           DO 170 II=1,NSIZ
12185             I=IBEG(ISYS)-1+II
12186             KSAV(II,1)=K(I,1)
12187             IF(K(I,1).GT.10) THEN
12188               K(I,1)=1
12189               IF(KSAV(II,1).EQ.14) K(I,1)=3
12190             ENDIF
12191             IF(KSAV(II,1).LE.10) THEN
12192             ELSEIF(K(I,1).EQ.1) THEN
12193               KSAV(II,4)=K(I,4)
12194               KSAV(II,5)=K(I,5)
12195               K(I,4)=0
12196               K(I,5)=0
12197             ELSE
12198               KSAV(II,4)=MOD(K(I,4),MSTU(5))
12199               KSAV(II,5)=MOD(K(I,5),MSTU(5))
12200               K(I,4)=K(I,4)-KSAV(II,4)
12201               K(I,5)=K(I,5)-KSAV(II,5)
12202             ENDIF
12203             DO 160 J=1,4
12204               PSUM(J)=PSUM(J)+P(I,J)
12205   160       CONTINUE
12206   170     CONTINUE
12207  
12208 C...Perform shower.
12209           QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
12210      &    PSUM(3)**2))
12211           IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
12212           NSAV=N
12213           IF(NSIZ.EQ.2) THEN
12214             CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
12215           ELSE
12216             CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
12217           ENDIF
12218  
12219 C...Look up showered copies of original showering particles.
12220           DO 250 II=1,NSIZ
12221             I=IBEG(ISYS)-1+II
12222             IMV=I
12223             IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
12224             ELSEIF(K(I,1).EQ.11) THEN
12225   180         IMV=MOD(K(IMV,4),MSTU(5))
12226               IF(K(IMV,1).EQ.11) GOTO 180
12227             ELSE
12228               KDA1=MOD(K(I,4),MSTU(5))
12229               KDA2=MOD(K(I,5),MSTU(5))
12230               DO 190 I3=I+1,N
12231                 IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
12232      &          THEN
12233                   IMV=I3
12234                   KDA1=MOD(K(I3,4),MSTU(5))
12235                   KDA2=MOD(K(I3,5),MSTU(5))
12236                 ENDIF
12237   190         CONTINUE
12238             ENDIF
12239  
12240 C...Restore daughter info of original partons to showered copies.
12241             IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
12242             IF(KSAV(II,1).LE.10) THEN
12243             ELSEIF(K(I,1).EQ.1) THEN
12244               K(IMV,4)=KSAV(II,4)
12245               K(IMV,5)=KSAV(II,5)
12246             ELSE
12247               K(IMV,4)=K(IMV,4)+KSAV(II,4)
12248               K(IMV,5)=K(IMV,5)+KSAV(II,5)
12249             ENDIF
12250  
12251 C...Reset mother info of existing daughters to showered copies.
12252             DO 200 I3=IBEG(ISYS+1),NFIN
12253               IF(K(I3,3).EQ.I) K(I3,3)=IMV
12254               IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
12255                 IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
12256                 IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
12257               ENDIF
12258   200       CONTINUE
12259  
12260 C...Boost all original daughters to new frame of showered copy.
12261             IF(IMV.NE.I) THEN
12262               DO 210 J=1,3
12263                 BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
12264   210         CONTINUE
12265               FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
12266               DO 220 J=1,3
12267                 BETA(J)=FAC*BETA(J)
12268   220         CONTINUE
12269               DO 240 I3=IBEG(ISYS+1),NFIN
12270                 IMO=I3
12271   230           IMO=K(IMO,3)
12272                 IF(MSTP(128).LE.0) THEN
12273                   IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 230
12274                   IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3))) 
12275      &            CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
12276                 ELSE
12277                   IF(IMO.EQ.IMV) THEN
12278                     CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
12279                   ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
12280                     GOTO 230
12281                   ENDIF
12282                 ENDIF 
12283   240         CONTINUE
12284             ENDIF
12285   250     CONTINUE
12286  
12287 C...End of loop over showering systems
12288         ENDIF
12289   260 CONTINUE
12290  
12291       RETURN
12292       END
12293  
12294 C*********************************************************************
12295  
12296 C...PYRESD
12297 C...Allows resonances to decay (including parton showers for hadronic
12298 C...channels).
12299  
12300       SUBROUTINE PYRESD(IRES)
12301  
12302 C...Double precision and integer declarations.
12303       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12304       IMPLICIT INTEGER(I-N)
12305       INTEGER PYK,PYCHGE,PYCOMP
12306 C...Parameter statement to help give large particle numbers.
12307       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
12308      &KEXCIT=4000000,KDIMEN=5000000)
12309 C...Commonblocks.
12310       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12311       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12312       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
12313       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
12314       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
12315       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12316       COMMON/PYINT1/MINT(400),VINT(400)
12317       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12318       COMMON/PYINT4/MWID(500),WIDS(500,5)
12319       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
12320      &/PYINT1/,/PYINT2/,/PYINT4/
12321 C...Local arrays and complex and character variables.
12322       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
12323      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(3),ILIN(6),
12324      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
12325      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),XM(5),VDCY(4),
12326      &ITJUNC(3),CTM2(3)
12327       COMPLEX FGK,HA(6,6),HC(6,6)
12328       REAL TIR,UIR
12329       CHARACTER CODE*9,MASS*9
12330  
12331 C...The F, Xi and Xj functions of Gunion and Kunszt
12332 C...(Phys. Rev. D33, 665, plus errata from the authors).
12333       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
12334      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
12335       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
12336      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
12337       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
12338      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
12339      &2D0*(D34/D56+D56/D34))
12340  
12341 C...Some general constants.
12342       XW=PARU(102)
12343       XWV=XW
12344       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
12345       XW1=1D0-XW
12346       SQMZ=PMAS(23,1)**2
12347  
12348       GMMZ=PMAS(23,1)*PMAS(23,2)
12349       SQMW=PMAS(24,1)**2
12350       GMMW=PMAS(24,1)*PMAS(24,2)
12351       SH=VINT(44)
12352  
12353 C...Boost and rotate to rest frame of incoming partons,
12354 C...to get proper amount of smearing of decay angles.
12355       IBST=0
12356       IF(IRES.EQ.0) THEN
12357         IBST=1
12358         ETOTIN=P(MINT(84)+1,4)+P(MINT(84)+2,4)
12359         BEXIN=(P(MINT(84)+1,1)+P(MINT(84)+2,1))/ETOTIN
12360         BEYIN=(P(MINT(84)+1,2)+P(MINT(84)+2,2))/ETOTIN
12361         BEZIN=(P(MINT(84)+1,3)+P(MINT(84)+2,3))/ETOTIN
12362         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
12363         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
12364         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
12365         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
12366         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
12367       ENDIF
12368  
12369 C...Reset original resonance configuration.
12370       DO 100 JT=1,8
12371         IREF(1,JT)=0
12372   100 CONTINUE
12373  
12374 C...Define initial one, two or three objects for subprocess.
12375       IHDEC=0
12376       IF(IRES.EQ.0) THEN
12377         ISUB=MINT(1)
12378         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
12379           IREF(1,1)=MINT(84)+2+ISET(ISUB)
12380           IREF(1,4)=MINT(83)+6+ISET(ISUB)
12381           JTMAX=1
12382         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
12383           IREF(1,1)=MINT(84)+1+ISET(ISUB)
12384           IREF(1,2)=MINT(84)+2+ISET(ISUB)
12385           IREF(1,4)=MINT(83)+5+ISET(ISUB)
12386           IREF(1,5)=MINT(83)+6+ISET(ISUB)
12387           JTMAX=2
12388         ELSEIF(ISET(ISUB).EQ.5) THEN
12389           IREF(1,1)=MINT(84)+3
12390           IREF(1,2)=MINT(84)+4
12391           IREF(1,3)=MINT(84)+5
12392           IREF(1,4)=MINT(83)+7
12393           IREF(1,5)=MINT(83)+8
12394           IREF(1,6)=MINT(83)+9
12395           JTMAX=3
12396         ENDIF
12397  
12398 C...Define original resonance for odd cases.
12399       ELSE
12400         ISUB=0
12401         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
12402      &  IHDEC=1
12403         IF(IHDEC.EQ.1) ISUB=3
12404         IREF(1,1)=IRES
12405         IREF(1,4)=K(IRES,3)
12406         JTMAX=1
12407       ENDIF
12408  
12409 C...Check if initial resonance has been moved (in resonance + jet).
12410       DO 120 JT=1,3
12411         IF(IREF(1,JT).GT.0) THEN
12412           IF(K(IREF(1,JT),1).GT.10) THEN
12413             KFA=IABS(K(IREF(1,JT),2))
12414             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
12415               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
12416               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
12417               DO 110 I=IREF(1,JT)+1,N
12418                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
12419      &          I.EQ.KDA2)) THEN
12420                   IREF(1,JT)=I
12421                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
12422                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
12423                 ENDIF
12424   110         CONTINUE
12425             ELSE
12426               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
12427               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
12428             ENDIF
12429           ENDIF
12430         ENDIF
12431   120 CONTINUE
12432  
12433 C.....Set decay vertex for initial resonances
12434       DO 140 JT=1,JTMAX
12435         DO 130 I=1,4
12436           V(IREF(1,JT),I)=0D0
12437   130   CONTINUE
12438   140 CONTINUE
12439  
12440 C...Loop over decay history.
12441       NP=1
12442       IP=0
12443   150 IP=IP+1
12444       NINH=0
12445       JTMAX=2
12446       IF(IREF(IP,2).EQ.0) JTMAX=1
12447       IF(IREF(IP,3).NE.0) JTMAX=3
12448       IT4=0
12449       NSAV=N
12450
12451 C...Check for Higgs which appears as decay product of user-process.
12452       IF(ISUB.EQ.0) THEN
12453         IHDEC=0
12454         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
12455      &  .EQ.36) IHDEC=1
12456         IF(IHDEC.EQ.1) ISUB=3
12457       ENDIF
12458
12459 C...Start treatment of one, two or three resonances in parallel.
12460   160 N=NSAV
12461       DO 320 JT=1,JTMAX
12462         ID=IREF(IP,JT)
12463         KDCY(JT)=0
12464         KFL1(JT)=0
12465         KFL2(JT)=0
12466         KFL3(JT)=0
12467         KEQL(JT)=0
12468         NSD(JT)=ID
12469         ITJUNC(JT)=0
12470  
12471 C...Check whether particle can/is allowed to decay.
12472         IF(ID.EQ.0) GOTO 310
12473         KFA=IABS(K(ID,2))
12474         KCA=PYCOMP(KFA)
12475         IF(MWID(KCA).EQ.0) GOTO 310
12476         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 310
12477         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
12478      &  KFA.EQ.18) IT4=IT4+1
12479         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
12480         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
12481  
12482 C...Choose lifetime and determine decay vertex.
12483         IF(K(ID,1).EQ.5) THEN
12484           V(ID,5)=0D0
12485         ELSEIF(K(ID,1).NE.4) THEN
12486           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
12487         ENDIF
12488         DO 170 J=1,4
12489           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
12490   170   CONTINUE
12491  
12492 C...Determine whether decay allowed or not.
12493         MOUT=0
12494         IF(MSTJ(22).EQ.2) THEN
12495           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
12496         ELSEIF(MSTJ(22).EQ.3) THEN
12497           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
12498         ELSEIF(MSTJ(22).EQ.4) THEN
12499           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
12500           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
12501         ENDIF
12502         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
12503           K(ID,1)=4
12504           GOTO 310
12505         ENDIF
12506  
12507 C...Info for selection of decay channel: sign, pairings.
12508         IF(KCHG(KCA,3).EQ.0) THEN
12509           IPM=2
12510         ELSE
12511           IPM=(5-ISIGN(1,K(ID,2)))/2
12512         ENDIF
12513         KFB=0
12514         IF(JTMAX.EQ.2) THEN
12515           KFB=IABS(K(IREF(IP,3-JT),2))
12516         ELSEIF(JTMAX.EQ.3) THEN
12517           JT2=JT+1-3*(JT/3)
12518           KFB=IABS(K(IREF(IP,JT2),2))
12519           IF(KFB.NE.KFA) THEN
12520             JT2=JT+2-3*((JT+1)/3)
12521             KFB=IABS(K(IREF(IP,JT2),2))
12522           ENDIF
12523         ENDIF
12524  
12525 C...Select decay channel.
12526         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
12527      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
12528         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
12529         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
12530         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
12531         IF(WDTE0S.LE.0D0) GOTO 310
12532         RKFL=WDTE0S*PYR(0)
12533         IDL=0
12534   180   IDL=IDL+1
12535         IDC=IDL+MDCY(KCA,2)-1
12536         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
12537         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
12538         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 180
12539  
12540 C...Read out flavours and colour charges of decay channel chosen.
12541         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
12542         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
12543         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
12544         KFC1A=PYCOMP(IABS(KFL1(JT)))
12545         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
12546         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
12547         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
12548         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
12549         KFC2A=PYCOMP(IABS(KFL2(JT)))
12550         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
12551         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
12552         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
12553         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
12554         KCQ3(JT)=0
12555         IF(KFL3(JT).NE.0) THEN
12556           KFC3A=PYCOMP(IABS(KFL3(JT)))
12557           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
12558           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
12559           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
12560         ENDIF
12561  
12562 C...Set/save further info on channel.
12563         KDCY(JT)=1
12564         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
12565         NSD(JT)=N
12566         HGZ(JT,1)=VINT(111)
12567         HGZ(JT,2)=VINT(112)
12568         HGZ(JT,3)=VINT(114)
12569         JTZ=JT
12570  
12571 C...Select masses; to begin with assume resonances narrow.
12572         DO 200 I=1,3
12573           P(N+I,5)=0D0
12574           PMMN(I)=0D0
12575           IF(I.EQ.1) THEN
12576             KFLW=IABS(KFL1(JT))
12577             KCW=KFC1A
12578           ELSEIF(I.EQ.2) THEN
12579             KFLW=IABS(KFL2(JT))
12580             KCW=KFC2A
12581           ELSEIF(I.EQ.3) THEN
12582             IF(KFL3(JT).EQ.0) GOTO 200
12583             KFLW=IABS(KFL3(JT))
12584             KCW=KFC3A
12585           ENDIF
12586           P(N+I,5)=PMAS(KCW,1)
12587 CMRENNA++
12588 C...This prevents SUSY/t particles from becoming too light.
12589           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
12590             PMMN(I)=PMAS(KCW,1)
12591             DO 190 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
12592               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
12593                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
12594      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
12595                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
12596      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
12597                 PMMN(I)=MIN(PMMN(I),PMSUM)
12598               ENDIF
12599   190       CONTINUE
12600 CMRENNA--
12601           ELSEIF(KFLW.EQ.6) THEN
12602             PMMN(I)=PMAS(24,1)+PMAS(5,1)
12603           ENDIF
12604   200   CONTINUE
12605  
12606 C...Check which two out of three are widest.
12607         IWID1=1
12608         IWID2=2
12609         PWID1=PMAS(KFC1A,2)
12610         PWID2=PMAS(KFC2A,2)
12611         KFLW1=IABS(KFL1(JT))
12612         KFLW2=IABS(KFL2(JT))
12613         IF(KFL3(JT).NE.0) THEN
12614           PWID3=PMAS(KFC3A,2)
12615           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
12616             IWID1=3
12617             PWID1=PWID3
12618             KFLW1=IABS(KFL3(JT))
12619           ELSEIF(PWID3.GT.PWID2) THEN
12620             IWID2=3
12621             PWID2=PWID3
12622             KFLW2=IABS(KFL3(JT))
12623           ENDIF
12624         ENDIF
12625  
12626 C...If all narrow then only check that masses consistent.
12627         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
12628      &  PWID2.LT.PARP(41))) THEN
12629 CMRENNA++
12630 C....Handle near degeneracy cases.
12631           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
12632             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
12633               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
12634               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
12635             ENDIF
12636           ENDIF
12637 CMRENNA--
12638           IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
12639             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
12640             MINT(51)=1
12641             GOTO 700
12642           ELSEIF(P(N+1,5)+P(N+2,5)+P(N+3,5)+PARJ(64).GT.P(ID,5)) THEN
12643             CALL PYERRM(3,'(PYRESD:) daughter masses too large')
12644             MINT(51)=1
12645             GOTO 700
12646           ENDIF
12647  
12648 C...For three wide resonances select narrower of three
12649 C...according to BW decoupled from rest.
12650         ELSE
12651           PMTOT=P(ID,5)
12652           IF(KFL3(JT).NE.0) THEN
12653             IWID3=6-IWID1-IWID2
12654             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
12655      &      KFLW1-KFLW2
12656             LOOP=0
12657   210       LOOP=LOOP+1
12658             P(N+IWID3,5)=PYMASS(KFLW3)
12659             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 210
12660             PMTOT=PMTOT-P(N+IWID3,5)
12661           ENDIF
12662 C...Select other two correlated within remaining phase space.
12663           IF(IP.EQ.1) THEN
12664             CKIN45=CKIN(45)
12665             CKIN47=CKIN(47)
12666             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
12667             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
12668             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
12669      &      P(N+IWID2,5))
12670             CKIN(45)=CKIN45
12671             CKIN(47)=CKIN47
12672           ELSE
12673             CKIN(49)=PMMN(IWID1)
12674             CKIN(50)=PMMN(IWID2)
12675             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
12676      &      P(N+IWID2,5))
12677             CKIN(49)=0D0
12678             CKIN(50)=0D0
12679           ENDIF
12680           IF(MINT(51).EQ.1) GOTO 700
12681         ENDIF
12682  
12683 C...Begin fill decay products, with colour flow for coloured objects.
12684         MSTU10=MSTU(10)
12685         MSTU(10)=1
12686         MSTU(19)=1
12687  
12688 CMRENNA++
12689 C...1) Three-body decays of SUSY particles (plus special case top).
12690         IF(KFL3(JT).NE.0) THEN
12691           DO 230 I=N+1,N+3
12692             DO 220 J=1,5
12693               K(I,J)=0
12694               V(I,J)=0D0
12695   220       CONTINUE
12696   230     CONTINUE
12697           K(N+1,1)=1
12698           K(N+1,2)=KFL1(JT)
12699           K(N+2,1)=1
12700           K(N+2,2)=KFL2(JT)
12701           K(N+3,1)=1
12702           K(N+3,2)=KFL3(JT)
12703           IDIN=ID
12704           CALL PYTBDY(IDIN)
12705  
12706 C...Set colour flow for t -> W + b + Z.
12707           IF(KFA.EQ.6) THEN
12708             K(N+2,1)=3
12709             ISID=4
12710             IF(KCQM(JT).EQ.-1) ISID=5
12711             IDAU=N+2
12712             K(ID,ISID)=K(ID,ISID)+IDAU
12713             K(IDAU,ISID)=MSTU(5)*ID
12714  
12715 C...Set colour flow in three-body decays - programmed as special cases.
12716           ELSEIF(KFC2A.LE.6) THEN
12717             K(N+2,1)=3
12718             K(N+3,1)=3
12719             ISID=4
12720             IF(KFL2(JT).LT.0) ISID=5
12721             K(N+2,ISID)=MSTU(5)*(N+3)
12722             K(N+3,9-ISID)=MSTU(5)*(N+2)
12723           ENDIF
12724           IF(KFL1(JT).EQ.KSUSY1+21) THEN
12725             K(N+1,1)=3
12726             K(N+2,1)=3
12727             K(N+3,1)=3
12728             ISID=4
12729             IF(KFL2(JT).LT.0) ISID=5
12730             K(N+1,ISID)=MSTU(5)*(N+2)
12731             K(N+1,9-ISID)=MSTU(5)*(N+3)
12732             K(N+2,ISID)=MSTU(5)*(N+1)
12733             K(N+3,9-ISID)=MSTU(5)*(N+1)
12734           ENDIF
12735           IF(KFA.EQ.KSUSY1+21) THEN
12736             K(N+2,1)=3
12737             K(N+3,1)=3
12738             ISID=4
12739             IF(KFL2(JT).LT.0) ISID=5
12740             K(ID,ISID)=K(ID,ISID)+(N+2)
12741             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
12742             K(N+2,ISID)=MSTU(5)*ID
12743             K(N+3,9-ISID)=MSTU(5)*ID
12744           ENDIF
12745 CMRENNA--
12746  
12747           IF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
12748      &    IABS(KCQ2(JT)).EQ.1) THEN
12749             K(N+2,1)=3
12750             K(N+3,1)=3
12751             ISID=4
12752             IF(KFL2(JT).LT.0) ISID=5
12753             K(N+2,ISID)=MSTU(5)*(N+3)
12754             K(N+3,9-ISID)=MSTU(5)*(N+2)
12755           ENDIF
12756  
12757 C...Set colour flow in three-body decays with baryon number violation.
12758 C...Neutralino and chargino decays first.
12759           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
12760           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
12761             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
12762             K(N+4,4)=ITJUNC(JT)*MSTU(5)
12763 C...Insert junction to keep track of colours.
12764             IF(KCQ1(JT).NE.0) K(N+1,1)=3
12765             IF(KCQ2(JT).NE.0) K(N+2,1)=3
12766             IF(KCQ3(JT).NE.0) K(N+3,1)=3
12767 C...Set special junction codes:
12768             K(N+4,1)=42
12769             K(N+4,2)=88
12770  
12771 C...Order decay products by invariant mass. (will be used in PYSTRF).
12772             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)-
12773      &      P(N+1,3)*P(N+2,3)
12774             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)-
12775      &      P(N+1,3)*P(N+3,3)
12776             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)-
12777      &      P(N+2,3)*P(N+3,3)
12778             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
12779               K(N+4,4)=N+3+K(N+4,4)
12780               K(N+4,5)=N+1+MSTU(5)*(N+2)
12781             ELSEIF(PM13.LT.PM23) THEN
12782               K(N+4,4)=N+2+K(N+4,4)
12783               K(N+4,5)=N+1+MSTU(5)*(N+3)
12784             ELSE
12785               K(N+4,4)=N+1+K(N+4,4)
12786               K(N+4,5)=N+2+MSTU(5)*(N+3)
12787             ENDIF
12788             DO 240 J=1,5
12789               P(N+4,J)=0D0
12790               V(N+4,J)=0D0
12791   240       CONTINUE
12792 C...Connect daughters to junction.
12793             DO 250 II=N+1,N+3
12794               K(II,4)=0
12795               K(II,5)=0
12796               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
12797   250       CONTINUE
12798 C...Particle counter should be stepped up one extra for junction.
12799             N=N+1
12800  
12801 C...Gluino decays.
12802           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
12803             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
12804             K(N+4,4)=ITJUNC(JT)*MSTU(5)
12805 C...Insert junction to keep track of colours.
12806             IF(KCQ1(JT).NE.0) K(N+1,1)=3
12807             IF(KCQ2(JT).NE.0) K(N+2,1)=3
12808             IF(KCQ3(JT).NE.0) K(N+3,1)=3
12809             K(N+4,1)=42
12810             K(N+4,2)=88
12811             DO 260 J=1,5
12812               P(N+4,J)=0D0
12813               V(N+4,J)=0D0
12814   260       CONTINUE
12815             CTMSUM=0D0
12816             DO 270 II=N+1,N+3
12817               K(II,4)=0
12818               K(II,5)=0
12819 C...Start by connecting all daughters to junction.
12820               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
12821 C...Only consider colour topologies with off shell resonances.
12822               RMQ1=PMAS(PYCOMP(K(II,2)),1)
12823               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
12824               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
12825               IF (RMGLU-RMQ1.LT.RMRES) THEN
12826 C...Calculate propagators for each colour topology.
12827                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
12828      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
12829                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
12830               ELSE
12831                 CTM2(II-N)=0D0
12832               ENDIF
12833               CTMSUM=CTMSUM+CTM2(II-N)
12834   270       CONTINUE
12835             CTMSUM=PYR(0)*CTMSUM
12836 C...Select colour topology J, with most off shell least likely.
12837             J=0
12838   280       J=J+1
12839             CTMSUM=CTMSUM-CTM2(J)
12840             IF (CTMSUM.GT.0D0) GOTO 280
12841 C...The lucky winner gets its colour (anti-colour) directly from gluino.
12842             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
12843             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
12844 C...The other gluino colour is connected to junction
12845             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
12846      &      MSTU(5)
12847             K(N+4,4)=K(N+4,4)+ID
12848 C...Lastly, connect junction to remaining daughters.
12849             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
12850 C...Particle counter should be stepped up one extra for junction.
12851             N=N+1
12852          ENDIF
12853  
12854 C...Update particle counter.
12855           N=N+3
12856  
12857 C...2) Everything else two-body decay.
12858         ELSE
12859           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
12860 C...First set colour flow as if mother colour singlet.
12861           IF(KCQ1(JT).NE.0) THEN
12862             K(N-1,1)=3
12863             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
12864             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
12865           ENDIF
12866           IF(KCQ2(JT).NE.0) THEN
12867             K(N,1)=3
12868             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
12869             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
12870           ENDIF
12871 C...Then redirect colour flow if mother (anti)triplet.
12872           IF(KCQM(JT).EQ.0) THEN
12873           ELSEIF(KCQM(JT).NE.2) THEN
12874             ISID=4
12875             IF(KCQM(JT).EQ.-1) ISID=5
12876             IDAU=N-1
12877             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
12878             K(ID,ISID)=K(ID,ISID)+IDAU
12879             K(IDAU,ISID)=MSTU(5)*ID
12880 C...Then redirect colour flow if mother octet.
12881           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
12882             IDAU=N-1
12883             IF(KCQ1(JT).EQ.0) IDAU=N
12884             K(ID,4)=K(ID,4)+IDAU
12885             K(ID,5)=K(ID,5)+IDAU
12886             K(IDAU,4)=MSTU(5)*ID
12887             K(IDAU,5)=MSTU(5)*ID
12888           ELSE
12889             ISID=4
12890             IF(KCQ1(JT).EQ.-1) ISID=5
12891             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
12892             K(ID,ISID)=K(ID,ISID)+(N-1)
12893             K(ID,9-ISID)=K(ID,9-ISID)+N
12894             K(N-1,ISID)=MSTU(5)*ID
12895             K(N,9-ISID)=MSTU(5)*ID
12896           ENDIF
12897  
12898 C...Insert junction
12899           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
12900             N=N+1
12901 C...~q* mother: type 3 junction. ~q mother: type 4.
12902             ITJUNC(JT)=(7+KCQM(JT))/2
12903 C...Specify junction KF and set colour flow from junction
12904             K(N,1)=42
12905             K(N,2)=88
12906             K(N,3)=ID
12907 C...Junction type encoded together with mother:
12908             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
12909             K(N,5)=N-1+MSTU(5)*(N-2)
12910 C...Zero P and V for junction (V filled later)
12911             DO 290 J=1,5
12912               P(N,J)=0D0
12913               V(N,J)=0D0
12914   290       CONTINUE
12915 C...Set colour flow from mother to junction
12916             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
12917 C...Set colour flow from daughters to junction
12918             DO 300 II=N-2,N-1
12919               K(II,4) = 0
12920               K(II,5) = 0
12921 C...(Anti-)colour mother is junction.
12922               K(II,1+ITJUNC(JT)) = MSTU(5)*(N)
12923   300       CONTINUE
12924           ENDIF
12925         ENDIF
12926  
12927 C...End loop over resonances for daughter flavour and mass selection.
12928         MSTU(10)=MSTU10
12929   310   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
12930      &  NINH=NINH+1
12931         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
12932      &  KFL1(JT).EQ.0) THEN
12933           WRITE(CODE,'(I9)') K(ID,2)
12934           WRITE(MASS,'(F9.3)') P(ID,5)
12935           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
12936      &    CODE//' with mass'//MASS)
12937           MINT(51)=1
12938           GOTO 700
12939         ENDIF
12940   320 CONTINUE
12941  
12942 C...Check for allowed combinations. Skip if no decays.
12943       IF(JTMAX.EQ.1) THEN
12944         IF(KDCY(1).EQ.0) GOTO 690
12945       ELSEIF(JTMAX.EQ.2) THEN
12946         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 690
12947         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 160
12948         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 160
12949       ELSEIF(JTMAX.EQ.3) THEN
12950         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 690
12951         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 160
12952         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 160
12953         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 160
12954         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 160
12955         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 160
12956         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 160
12957       ENDIF
12958  
12959 C...Special case: matrix element option for Z0 decay to quarks.
12960       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
12961      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
12962  
12963 C...Check consistency of MSTJ options set.
12964         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
12965           CALL PYERRM(6,
12966      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
12967           MSTJ(110)=1
12968         ENDIF
12969         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
12970           CALL PYERRM(6,
12971      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
12972  
12973           MSTJ(111)=0
12974         ENDIF
12975  
12976 C...Select alpha_strong behaviour.
12977         MST111=MSTU(111)
12978         PAR112=PARU(112)
12979         MSTU(111)=MSTJ(108)
12980         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
12981      &  MSTU(111)=1
12982         PARU(112)=PARJ(121)
12983         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
12984  
12985 C...Find axial fraction in total cross section for scalar gluon model.
12986         PARJ(171)=0D0
12987         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
12988      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
12989           POLL=1D0-PARJ(131)*PARJ(132)
12990           SFF=1D0/(16D0*XW*XW1)
12991           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
12992      &    (PARJ(123)*PARJ(124))**2)
12993           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
12994           VE=4D0*XW-1D0
12995           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
12996           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
12997      &    (PARJ(132)-PARJ(131)))
12998           KFLC=IABS(KFL1(1))
12999           PMQ=PYMASS(KFLC)
13000           QF=KCHG(KFLC,1)/3D0
13001           VQ=1D0
13002           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
13003      &    1D0-(2D0*PMQ/P(ID,5))**2))
13004           VF=SIGN(1D0,QF)-4D0*QF*XW
13005           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
13006      &    VF**2*HF1W)+VQ**3*HF1W
13007           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
13008         ENDIF
13009  
13010 C...Choice of jet configuration.
13011         CALL PYXJET(P(ID,5),NJET,CUT)
13012         KFLC=IABS(KFL1(1))
13013         KFLN=21
13014  
13015         IF(NJET.EQ.4) THEN
13016           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
13017         ELSEIF(NJET.EQ.3) THEN
13018           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
13019         ELSE
13020           MSTJ(120)=1
13021         ENDIF
13022  
13023 C...Fill jet configuration; return if incorrect kinematics.
13024         NC=N-2
13025         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
13026           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
13027         ELSEIF(NJET.EQ.2) THEN
13028           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
13029         ELSEIF(NJET.EQ.3) THEN
13030           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
13031         ELSEIF(KFLN.EQ.21) THEN
13032           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
13033      &    X12,X14)
13034         ELSE
13035           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
13036      &    X12,X14)
13037         ENDIF
13038         IF(MSTU(24).NE.0) THEN
13039           MINT(51)=1
13040           MSTU(111)=MST111
13041           PARU(112)=PAR112
13042           GOTO 700
13043         ENDIF
13044  
13045 C...Angular orientation according to matrix element.
13046         IF(MSTJ(106).EQ.1) THEN
13047           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
13048           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
13049           CTHE(1)=COS(THEZ)
13050           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
13051           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
13052         ENDIF
13053  
13054 C...Boost partons to Z0 rest frame.
13055         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
13056      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
13057  
13058 C...Mark decayed resonance and add documentation lines,
13059         K(ID,1)=K(ID,1)+10
13060         IDOC=MINT(83)+MINT(4)
13061         DO 340 I=NC+1,N
13062           I1=MINT(83)+MINT(4)+1
13063           K(I,3)=I1
13064           IF(MSTP(128).GE.1) K(I,3)=ID
13065           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
13066             MINT(4)=MINT(4)+1
13067             K(I1,1)=21
13068             K(I1,2)=K(I,2)
13069             K(I1,3)=IREF(IP,4)
13070             DO 330 J=1,5
13071               P(I1,J)=P(I,J)
13072   330       CONTINUE
13073           ENDIF
13074   340   CONTINUE
13075  
13076 C...Generate parton shower.
13077         IF(MSTJ(101).EQ.5) CALL PYSHOW(N-1,N,P(ID,5))
13078  
13079 C... End special case for Z0: skip ahead.
13080         MSTU(111)=MST111
13081         PARU(112)=PAR112
13082         GOTO 680
13083       ENDIF
13084  
13085 C...Order incoming partons and outgoing resonances.
13086       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
13087      &NINH.EQ.0) THEN
13088         ILIN(1)=MINT(84)+1
13089         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
13090         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
13091      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
13092         ILIN(2)=2*MINT(84)+3-ILIN(1)
13093         IMIN=1
13094         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
13095      &  .EQ.36) IMIN=3
13096         IMAX=2
13097         IORD=1
13098         IF(K(IREF(IP,1),2).EQ.23) IORD=2
13099         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
13100         IAKIPD=IABS(K(IREF(IP,IORD),2))
13101         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
13102         IF(KDCY(IORD).EQ.0) IORD=3-IORD
13103  
13104 C...Order decay products of resonances.
13105         DO 350 JT=IORD,3-IORD,3-2*IORD
13106           IF(KDCY(JT).EQ.0) THEN
13107             ILIN(IMAX+1)=NSD(JT)
13108             IMAX=IMAX+1
13109           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
13110             ILIN(IMAX+1)=N+2*JT-1
13111             ILIN(IMAX+2)=N+2*JT
13112             IMAX=IMAX+2
13113             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
13114             K(N+2*JT,2)=K(NSD(JT)+2,2)
13115           ELSE
13116             ILIN(IMAX+1)=N+2*JT
13117  
13118             ILIN(IMAX+2)=N+2*JT-1
13119             IMAX=IMAX+2
13120             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
13121             K(N+2*JT,2)=K(NSD(JT)+2,2)
13122           ENDIF
13123   350   CONTINUE
13124  
13125 C...Find charge, isospin, left- and righthanded couplings.
13126         DO 370 I=IMIN,IMAX
13127           DO 360 J=1,4
13128             COUP(I,J)=0D0
13129   360     CONTINUE
13130           KFA=IABS(K(ILIN(I),2))
13131           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 370
13132           COUP(I,1)=KCHG(KFA,1)/3D0
13133           COUP(I,2)=(-1)**MOD(KFA,2)
13134           COUP(I,4)=-2D0*COUP(I,1)*XWV
13135           COUP(I,3)=COUP(I,2)+COUP(I,4)
13136   370   CONTINUE
13137  
13138 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
13139         IF(ISUB.EQ.22) THEN
13140           DO 400 I=3,5,2
13141             I1=IORD
13142             IF(I.EQ.5) I1=3-IORD
13143             DO 390 J1=1,2
13144               DO 380 J2=1,2
13145                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
13146      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
13147      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
13148      &          COUP(I,J2+2)**2
13149   380         CONTINUE
13150   390       CONTINUE
13151   400     CONTINUE
13152           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
13153      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
13154           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
13155      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
13156  
13157           IF(COWT12.LT.PYR(0)*COMX12) GOTO 160
13158         ENDIF
13159       ENDIF
13160  
13161 C...Select angular orientation type - Z'/W' only.
13162       MZPWP=0
13163       IF(ISUB.EQ.141) THEN
13164         IF(PYR(0).LT.PARU(130)) MZPWP=1
13165         IF(IP.EQ.2) THEN
13166           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
13167           IAKIR=IABS(K(IREF(2,2),2))
13168           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
13169           IF(IAKIR.LE.20) MZPWP=2
13170         ENDIF
13171         IF(IP.GE.3) MZPWP=2
13172       ELSEIF(ISUB.EQ.142) THEN
13173         IF(PYR(0).LT.PARU(136)) MZPWP=1
13174         IF(IP.EQ.2) THEN
13175           IAKIR=IABS(K(IREF(2,2),2))
13176           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
13177           IF(IAKIR.LE.20) MZPWP=2
13178         ENDIF
13179         IF(IP.GE.3) MZPWP=2
13180       ENDIF
13181  
13182 C...Select random angles (begin of weighting procedure).
13183   410 DO 420 JT=1,JTMAX
13184         IF(KDCY(JT).EQ.0) GOTO 420
13185         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
13186           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
13187           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
13188           PHI(JT)=VINT(24)
13189         ELSE
13190           CTHE(JT)=2D0*PYR(0)-1D0
13191           PHI(JT)=PARU(2)*PYR(0)
13192         ENDIF
13193   420 CONTINUE
13194  
13195       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
13196 C...Construct massless four-vectors.
13197         DO 440 I=N+1,N+4
13198           K(I,1)=1
13199           DO 430 J=1,5
13200             P(I,J)=0D0
13201             V(I,J)=0D0
13202   430     CONTINUE
13203   440   CONTINUE
13204         DO 450 JT=1,JTMAX
13205           IF(KDCY(JT).EQ.0) GOTO 450
13206           ID=IREF(IP,JT)
13207           P(N+2*JT-1,3)=0.5D0*P(ID,5)
13208           P(N+2*JT-1,4)=0.5D0*P(ID,5)
13209           P(N+2*JT,3)=-0.5D0*P(ID,5)
13210           P(N+2*JT,4)=0.5D0*P(ID,5)
13211           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
13212      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
13213   450   CONTINUE
13214  
13215 C...Store incoming and outgoing momenta, with random rotation to
13216 C...avoid accidental zeroes in HA expressions.
13217         IF(ISUB.NE.0) THEN
13218           DO 470 I=IMIN,IMAX
13219             K(N+4+I,1)=1
13220             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
13221      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
13222             P(N+4+I,5)=P(ILIN(I),5)
13223             DO 460 J=1,3
13224               P(N+4+I,J)=P(ILIN(I),J)
13225   460       CONTINUE
13226   470     CONTINUE
13227   480     THERR=ACOS(2D0*PYR(0)-1D0)
13228           PHIRR=PARU(2)*PYR(0)
13229           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
13230           DO 500 I=IMIN,IMAX
13231             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*P(N+4+I,4)**2)
13232      &      GOTO 480
13233             DO 490 J=1,4
13234               PK(I,J)=P(N+4+I,J)
13235   490       CONTINUE
13236   500     CONTINUE
13237         ENDIF
13238  
13239 C...Calculate internal products.
13240         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
13241      &  ISUB.EQ.142) THEN
13242           DO 520 I1=IMIN,IMAX-1
13243             DO 510 I2=I1+1,IMAX
13244               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
13245      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
13246      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
13247      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
13248      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
13249      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
13250               HC(I1,I2)=CONJG(HA(I1,I2))
13251               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
13252               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
13253               HA(I2,I1)=-HA(I1,I2)
13254               HC(I2,I1)=-HC(I1,I2)
13255   510       CONTINUE
13256   520     CONTINUE
13257         ENDIF
13258  
13259 C...Calculate four-products.
13260         IF(ISUB.NE.0) THEN
13261           DO 540 I=1,2
13262             DO 530 J=1,4
13263               PK(I,J)=-PK(I,J)
13264   530       CONTINUE
13265   540     CONTINUE
13266           DO 560 I1=IMIN,IMAX-1
13267             DO 550 I2=I1+1,IMAX
13268               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
13269      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
13270               PKK(I2,I1)=PKK(I1,I2)
13271   550       CONTINUE
13272   560     CONTINUE
13273         ENDIF
13274       ENDIF
13275  
13276       KFAGM=IABS(IREF(IP,7))
13277       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
13278 C...Isotropic decay selected by user.
13279         WT=1D0
13280         WTMAX=1D0
13281  
13282       ELSEIF(JTMAX.EQ.3) THEN
13283 C...Isotropic decay when three mother particles.
13284         WT=1D0
13285         WTMAX=1D0
13286  
13287       ELSEIF(IT4.GE.1) THEN
13288 C... Isotropic decay t -> b + W etc for 4th generation q and l.
13289         WT=1D0
13290         WTMAX=1D0
13291  
13292       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
13293      &  IREF(IP,7).EQ.36) THEN
13294 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
13295 C...CP-odd case added by Kari Ertresvag Myklevoll.
13296         IF(IP.EQ.1) WTMAX=SH**2
13297         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
13298         KFA=IABS(K(IREF(IP,1),2))
13299         IF(KFA.EQ.23) THEN
13300           KFLF1A=IABS(KFL1(1))
13301           EF1=KCHG(KFLF1A,1)/3D0
13302           AF1=SIGN(1D0,EF1+0.1D0)
13303           VF1=AF1-4D0*EF1*XWV
13304           KFLF2A=IABS(KFL1(2))
13305           EF2=KCHG(KFLF2A,1)/3D0
13306           AF2=SIGN(1D0,EF2+0.1D0)
13307           VF2=AF2-4D0*EF2*XWV
13308           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)
13309      &      *(VF2**2+AF2**2))
13310           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
13311      &      THEN
13312 C...CP-even decay
13313             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
13314      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
13315           ELSE
13316 C...CP-odd decay
13317             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
13318      &        -2*PKK(3,4)*PKK(5,6)
13319      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
13320      &        (PKK(3,4)*PKK(5,6))
13321      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
13322      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
13323           ENDIF
13324         ELSEIF(KFA.EQ.24) THEN
13325           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
13326      &      THEN
13327 C...CP-even decay
13328             WT=16D0*PKK(3,5)*PKK(4,6)
13329           ELSE
13330 C...CP-odd decay
13331             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
13332      &        -2*PKK(3,4)*PKK(5,6)
13333      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
13334      &        (PKK(3,4)*PKK(5,6))
13335      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
13336      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
13337           ENDIF
13338         ELSE
13339             WT=WTMAX
13340         ENDIF
13341  
13342       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
13343      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
13344      &  THEN
13345 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
13346         I1=IREF(IP,8)
13347         IF(MOD(KFAGM,2).EQ.0) THEN
13348           I2=N+1
13349           I3=N+2
13350         ELSE
13351           I2=N+2
13352           I3=N+1
13353         ENDIF
13354         I4=IREF(IP,2)
13355         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
13356      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
13357      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
13358         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
13359  
13360       ELSEIF(ISUB.EQ.1) THEN
13361 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
13362         EI=KCHG(IABS(MINT(15)),1)/3D0
13363         AI=SIGN(1D0,EI+0.1D0)
13364         VI=AI-4D0*EI*XWV
13365         EF=KCHG(IABS(KFL1(1)),1)/3D0
13366         AF=SIGN(1D0,EF+0.1D0)
13367  
13368         VF=AF-4D0*EF*XWV
13369         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
13370         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13371      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
13372         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13373      &  (VI**2+AI**2)*VINT(114)*VF**2)
13374         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
13375      &  4D0*VI*AI*VINT(114)*VF*AF)
13376         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
13377      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
13378         WTMAX=2D0*(WT1+ABS(WT3))
13379  
13380       ELSEIF(ISUB.EQ.2) THEN
13381 C...Angular weight for W+/- -> 2 quarks/leptons.
13382         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
13383         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
13384         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
13385         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
13386         WTMAX=4D0
13387  
13388       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
13389 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
13390 C...-> gluon/gamma + 2 quarks/leptons.
13391         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13392      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13393      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
13394         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13395      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13396      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
13397         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13398      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13399      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
13400         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13401      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13402      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
13403         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
13404      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
13405         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
13406      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
13407  
13408       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
13409 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
13410 C...-> gluon/gamma + 2 quarks/leptons.
13411         WT=PKK(1,3)**2+PKK(2,4)**2
13412         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
13413  
13414       ELSEIF(ISUB.EQ.22) THEN
13415 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
13416         S34=P(IREF(IP,IORD),5)**2
13417         S56=P(IREF(IP,3-IORD),5)**2
13418         TI=PKK(1,3)+PKK(1,4)+S34
13419         UI=PKK(1,5)+PKK(1,6)+S56
13420         TIR=REAL(TI)
13421         UIR=REAL(UI)
13422         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
13423         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
13424         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
13425         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
13426         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
13427         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
13428         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
13429         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
13430  
13431         WT=
13432      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
13433      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
13434      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
13435      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
13436         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
13437      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
13438      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
13439      &  1D0/UI**2))
13440  
13441       ELSEIF(ISUB.EQ.23) THEN
13442 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
13443         D34=P(IREF(IP,IORD),5)**2
13444         D56=P(IREF(IP,3-IORD),5)**2
13445         DT=PKK(1,3)+PKK(1,4)+D34
13446         DU=PKK(1,5)+PKK(1,6)+D56
13447         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
13448         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
13449         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
13450         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
13451  
13452      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
13453         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
13454      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
13455         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
13456         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
13457      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
13458  
13459       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
13460 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
13461 C...(or H0, or A0).
13462         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
13463      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
13464      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
13465         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
13466      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
13467  
13468       ELSEIF(ISUB.EQ.25) THEN
13469 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
13470         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
13471         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
13472         D34=P(IREF(IP,IORD),5)**2
13473         D56=P(IREF(IP,3-IORD),5)**2
13474         DT=PKK(1,3)+PKK(1,4)+D34
13475         DU=PKK(1,5)+PKK(1,6)+D56
13476         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
13477         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
13478         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
13479         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
13480         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
13481         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
13482      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
13483         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
13484         IF(MSTP(50).LE.0) THEN
13485           WT=FGK135**2+(CCWW*FGK253)**2
13486           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
13487      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
13488      &    DJGK(DT,DU)))
13489         ELSE
13490           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
13491           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
13492      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
13493      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
13494         ENDIF
13495  
13496       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
13497 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
13498 C...(or H0, or A0).
13499         WT=PKK(1,3)*PKK(2,4)
13500         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
13501  
13502       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
13503 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
13504 C...-> f + 2 quarks/leptons.
13505         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13506      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13507      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
13508         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13509      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13510      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
13511         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13512      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
13513      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
13514         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
13515      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
13516      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
13517         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
13518      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
13519         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
13520      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
13521         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
13522      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
13523  
13524       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
13525 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
13526         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
13527         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
13528         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
13529  
13530       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
13531      &  ISUB.EQ.77) THEN
13532 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
13533         WT=16D0*PKK(3,5)*PKK(4,6)
13534         WTMAX=SH**2
13535  
13536       ELSEIF(ISUB.EQ.110) THEN
13537 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
13538         WT=1D0
13539         WTMAX=1D0
13540  
13541       ELSEIF(ISUB.EQ.141) THEN
13542         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
13543 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
13544 C...Couplings of incoming flavour.
13545           KFAI=IABS(MINT(15))
13546           EI=KCHG(KFAI,1)/3D0
13547           AI=SIGN(1D0,EI+0.1D0)
13548           VI=AI-4D0*EI*XWV
13549           KFAIC=1
13550           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
13551           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
13552           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
13553           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
13554             VPI=PARU(119+2*KFAIC)
13555             API=PARU(120+2*KFAIC)
13556           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
13557             VPI=PARJ(178+2*KFAIC)
13558             API=PARJ(179+2*KFAIC)
13559           ELSE
13560             VPI=PARJ(186+2*KFAIC)
13561             API=PARJ(187+2*KFAIC)
13562           ENDIF
13563 C...Couplings of final flavour.
13564           KFAF=IABS(KFL1(1))
13565           EF=KCHG(KFAF,1)/3D0
13566           AF=SIGN(1D0,EF+0.1D0)
13567           VF=AF-4D0*EF*XWV
13568           KFAFC=1
13569           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
13570           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
13571           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
13572           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
13573             VPF=PARU(119+2*KFAFC)
13574             APF=PARU(120+2*KFAFC)
13575           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
13576             VPF=PARJ(178+2*KFAFC)
13577             APF=PARJ(179+2*KFAFC)
13578           ELSE
13579             VPF=PARJ(186+2*KFAFC)
13580             APF=PARJ(187+2*KFAFC)
13581           ENDIF
13582 C...Asymmetry and weight.
13583           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
13584      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
13585      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
13586      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
13587      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
13588      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
13589      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
13590           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
13591           WTMAX=2D0+ABS(ASYM)
13592         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
13593 C...Angular weight for f + fbar -> Z' -> W+ + W-.
13594           RM1=P(NSD(1)+1,5)**2/SH
13595           RM2=P(NSD(1)+2,5)**2/SH
13596           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
13597      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
13598           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
13599      &    (RM2-RM1)**2)
13600           WT=CFLAT+CCOS2*CTHE(1)**2
13601           WTMAX=CFLAT+MAX(0D0,CCOS2)
13602         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
13603      &    IABS(KFL1(1)).EQ.37)) THEN
13604 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
13605           WT=1D0-CTHE(1)**2
13606           WTMAX=1D0
13607         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
13608 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
13609           RM1=P(NSD(1)+1,5)**2/SH
13610           RM2=P(NSD(1)+2,5)**2/SH
13611           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
13612           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
13613           WTMAX=1D0+FLAM2/(8D0*RM1)
13614         ELSEIF(MZPWP.EQ.0) THEN
13615 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
13616 C...(W:s like if intermediate Z).
13617           D34=P(IREF(IP,IORD),5)**2
13618           D56=P(IREF(IP,3-IORD),5)**2
13619           DT=PKK(1,3)+PKK(1,4)+D34
13620           DU=PKK(1,5)+PKK(1,6)+D56
13621           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
13622           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
13623           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
13624           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
13625      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
13626         ELSEIF(MZPWP.EQ.1) THEN
13627 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
13628 C...(W:s approximately longitudinal, like if intermediate H).
13629           WT=16D0*PKK(3,5)*PKK(4,6)
13630           WTMAX=SH**2
13631         ELSE
13632 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
13633 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
13634           WT=1D0
13635           WTMAX=1D0
13636         ENDIF
13637  
13638       ELSEIF(ISUB.EQ.142) THEN
13639         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
13640 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
13641           KFAI=IABS(MINT(15))
13642           KFAIC=1
13643           IF(KFAI.GT.10) KFAIC=2
13644           VI=PARU(129+2*KFAIC)
13645           AI=PARU(130+2*KFAIC)
13646           KFAF=IABS(KFL1(1))
13647           KFAFC=1
13648           IF(KFAF.GT.10) KFAFC=2
13649           VF=PARU(129+2*KFAFC)
13650           AF=PARU(130+2*KFAFC)
13651           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
13652           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
13653           WTMAX=2D0+ABS(ASYM)
13654         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
13655 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
13656           RM1=P(NSD(1)+1,5)**2/SH
13657           RM2=P(NSD(1)+2,5)**2/SH
13658           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
13659      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
13660           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
13661      &    (RM2-RM1)**2)
13662           WT=CFLAT+CCOS2*CTHE(1)**2
13663           WTMAX=CFLAT+MAX(0D0,CCOS2)
13664         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
13665 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
13666           RM1=P(NSD(1)+1,5)**2/SH
13667           RM2=P(NSD(1)+2,5)**2/SH
13668           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
13669           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
13670           WTMAX=1D0+FLAM2/(8D0*RM1)
13671         ELSEIF(MZPWP.EQ.0) THEN
13672 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
13673 C...(W/Z like if intermediate W).
13674           D34=P(IREF(IP,IORD),5)**2
13675           D56=P(IREF(IP,3-IORD),5)**2
13676           DT=PKK(1,3)+PKK(1,4)+D34
13677           DU=PKK(1,5)+PKK(1,6)+D56
13678           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
13679           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
13680           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
13681           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
13682      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
13683         ELSEIF(MZPWP.EQ.1) THEN
13684 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
13685 C...(W/Z approximately longitudinal, like if intermediate H).
13686           WT=16D0*PKK(3,5)*PKK(4,6)
13687           WTMAX=SH**2
13688         ELSE
13689 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
13690 C...t + bbar -> t + W + bbar.
13691           WT=1D0
13692           WTMAX=1D0
13693         ENDIF
13694  
13695       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
13696      &  THEN
13697 C...Isotropic decay of leptoquarks (assumed spin 0).
13698         WT=1D0
13699         WTMAX=1D0
13700  
13701       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
13702 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
13703         SIDE=1D0
13704         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
13705         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
13706           WT=1D0+SIDE*CTHE(1)
13707           WTMAX=2D0
13708         ELSEIF(IP.EQ.1) THEN
13709  
13710           RM1=P(NSD(1)+1,5)**2/SH
13711           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
13712           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
13713         ELSE
13714 C...W/Z decay assumed isotropic, since not known.
13715           WT=1D0
13716           WTMAX=1D0
13717         ENDIF
13718  
13719       ELSEIF(ISUB.EQ.149) THEN
13720 C...Isotropic decay of techni-eta.
13721         WT=1D0
13722         WTMAX=1D0
13723  
13724       ELSEIF(ISUB.EQ.191) THEN
13725         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13726 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
13727 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
13728           WT=1D0-CTHE(1)**2
13729           WTMAX=1D0
13730         ELSEIF(IP.EQ.1) THEN
13731 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
13732           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13733           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
13734           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
13735           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
13736           KFAI=IABS(MINT(15))
13737           EI=KCHG(KFAI,1)/3D0
13738           AI=SIGN(1D0,EI+0.1D0)
13739           VI=AI-4D0*EI*XWV
13740           VALI=0.5D0*(VI+AI)
13741           VARI=0.5D0*(VI-AI)
13742           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
13743           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
13744           KFAF=IABS(KFL1(1))
13745           EF=KCHG(KFAF,1)/3D0
13746           AF=SIGN(1D0,EF+0.1D0)
13747           VF=AF-4D0*EF*XWV
13748           VALF=0.5D0*(VF+AF)
13749           VARF=0.5D0*(VF-AF)
13750           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
13751           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
13752           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
13753           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
13754           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
13755           WTMAX=4D0*MAX(ASAME,AFLIP)
13756         ELSE
13757 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
13758           WT=1D0
13759           WTMAX=1D0
13760         ENDIF
13761  
13762       ELSEIF(ISUB.EQ.192) THEN
13763         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13764 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
13765 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
13766           WT=1D0-CTHE(1)**2
13767           WTMAX=1D0
13768         ELSEIF(IP.EQ.1) THEN
13769 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
13770           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13771           WT=(1D0+CTHESG)**2
13772           WTMAX=4D0
13773         ELSE
13774 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
13775           WT=1D0
13776           WTMAX=1D0
13777         ENDIF
13778  
13779       ELSEIF(ISUB.EQ.193) THEN
13780         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
13781 C...Angular weight for f + fbar -> omega_tc0 ->
13782 C...gamma pi_tc0 or Z0 pi_tc0.
13783           WT=1D0+CTHE(1)**2
13784           WTMAX=2D0
13785         ELSEIF(IP.EQ.1) THEN
13786 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
13787           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
13788           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
13789           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
13790           KFAI=IABS(MINT(15))
13791           EI=KCHG(KFAI,1)/3D0
13792           AI=SIGN(1D0,EI+0.1D0)
13793           VI=AI-4D0*EI*XWV
13794           VALI=0.5D0*(VI+AI)
13795           VARI=0.5D0*(VI-AI)
13796           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
13797           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
13798           KFAF=IABS(KFL1(1))
13799           EF=KCHG(KFAF,1)/3D0
13800           AF=SIGN(1D0,EF+0.1D0)
13801           VF=AF-4D0*EF*XWV
13802           VALF=0.5D0*(VF+AF)
13803           VARF=0.5D0*(VF-AF)
13804           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
13805           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
13806           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
13807           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
13808           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
13809           WTMAX=4D0*MAX(BSAME,BFLIP)
13810         ELSE
13811 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
13812           WT=1D0
13813           WTMAX=1D0
13814         ENDIF
13815  
13816       ELSEIF(ISUB.EQ.353) THEN
13817 C...Angular weight for Z_R0 -> 2 quarks/leptons.
13818         EI=KCHG(IABS(MINT(15)),1)/3D0
13819         AI=SIGN(1D0,EI+0.1D0)
13820         VI=AI-4D0*EI*XWV
13821         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
13822         AF=SIGN(1D0,EF+0.1D0)
13823         VF=AF-4D0*EF*XWV
13824         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
13825         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
13826         WT2=RMF*(VI**2+AI**2)*VF**2
13827         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
13828         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
13829      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
13830         WTMAX=2D0*(WT1+ABS(WT3))
13831  
13832       ELSEIF(ISUB.EQ.354) THEN
13833 C...Angular weight for W_R+/- -> 2 quarks/leptons.
13834         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
13835         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
13836         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
13837         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
13838         WTMAX=4D0
13839  
13840       ELSEIF(ISUB.EQ.391) THEN
13841 C...Angular weight for f + fbar -> G* -> f + fbar
13842         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
13843           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
13844           WTMAX=2D0
13845 C...Other G* decays not yet implemented angular distributions.
13846         ELSE
13847           WT=1D0
13848           WTMAX=1D0
13849         ENDIF
13850  
13851       ELSEIF(ISUB.EQ.392) THEN
13852 C...Angular weight for g + g -> G* -> f + fbar
13853         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
13854           WT=1D0-CTHE(1)**4
13855           WTMAX=1D0
13856 C...Other G* decays not yet implemented angular distributions.
13857         ELSE
13858           WT=1D0
13859           WTMAX=1D0
13860         ENDIF
13861  
13862 C...Obtain correct angular distribution by rejection techniques.
13863       ELSE
13864         WT=1D0
13865         WTMAX=1D0
13866       ENDIF
13867       IF(WT.LT.PYR(0)*WTMAX) GOTO 410
13868  
13869 C...Construct massive four-vectors using angles chosen.
13870   570 DO 670 JT=1,JTMAX
13871         IF(KDCY(JT).EQ.0) GOTO 670
13872         ID=IREF(IP,JT)
13873         DO 580 J=1,5
13874           DPMO(J)=P(ID,J)
13875   580   CONTINUE
13876         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
13877 CMRENNA++
13878         IF(KFL3(JT).EQ.0) THEN
13879           CALL PYROBO(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
13880      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
13881           N0=NSD(JT)+2
13882         ELSE
13883           CALL PYROBO(NSD(JT)+1,NSD(JT)+3,ACOS(CTHE(JT)),PHI(JT),
13884      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
13885           N0=NSD(JT)+3
13886         ENDIF
13887  
13888         DO 590 J=1,4
13889           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
13890   590   CONTINUE
13891 C...Fill in position of decay vertex.
13892         DO 610 I=NSD(JT)+1,N0
13893           DO 600 J=1,4
13894             V(I,J)=VDCY(J)
13895   600     CONTINUE
13896           V(I,5)=0D0
13897  
13898   610   CONTINUE
13899 CMRENNA--
13900  
13901 C...Mark decayed resonances; trace history.
13902         K(ID,1)=K(ID,1)+10
13903         KFA=IABS(K(ID,2))
13904         KCA=PYCOMP(KFA)
13905         IF(KCQM(JT).NE.0) THEN
13906 C...Do not kill colour flow through coloured resonance!
13907         ELSE
13908           K(ID,4)=NSD(JT)+1
13909           K(ID,5)=NSD(JT)+2
13910 C...If 3-body or 2-body with junction:
13911           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
13912 C...If 3-body with junction:
13913           IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
13914         ENDIF
13915  
13916 C...Add documentation lines.
13917         ISUBRG=MAX(1,MIN(500,MINT(1)))
13918         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
13919           IDOC=MINT(83)+MINT(4)
13920 CMRENNA+++
13921           IHI=NSD(JT)+2
13922           IF(KFL3(JT).NE.0) IHI=IHI+1
13923           DO 630 I=NSD(JT)+1,IHI
13924 CMRENNA---
13925             I1=MINT(83)+MINT(4)+1
13926             K(I,3)=I1
13927             IF(MSTP(128).GE.1) K(I,3)=ID
13928             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
13929               MINT(4)=MINT(4)+1
13930               K(I1,1)=21
13931               K(I1,2)=K(I,2)
13932               K(I1,3)=IREF(IP,JT+3)
13933               DO 620 J=1,5
13934                 P(I1,J)=P(I,J)
13935   620         CONTINUE
13936             ENDIF
13937   630     CONTINUE
13938         ELSE
13939           K(NSD(JT)+1,3)=ID
13940           K(NSD(JT)+2,3)=ID
13941 C...If 3-body or 2-body with junction:
13942           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
13943 C...If 3-body with junction:
13944           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
13945         ENDIF
13946  
13947 C...Do showering of two or three objects.
13948         NSHBEF=N
13949         IF(MSTP(71).GE.1) THEN
13950           IF(KFL3(JT).EQ.0) THEN
13951             CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
13952           ELSE
13953             CALL PYSHOW(NSD(JT)+1,-3,P(ID,5))
13954           ENDIF
13955         ENDIF
13956         NSHAFT=N
13957         IF(JT.EQ.1) NAFT1=N
13958  
13959 C...Check if decay products moved by shower.
13960         NSD1=NSD(JT)+1
13961         NSD2=NSD(JT)+2
13962         NSD3=NSD(JT)+3
13963         IF(NSHAFT.GT.NSHBEF) THEN
13964           IF(K(NSD1,1).GT.10) THEN
13965             DO 640 I=NSHBEF+1,NSHAFT
13966               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
13967   640       CONTINUE
13968           ENDIF
13969           IF(K(NSD2,1).GT.10) THEN
13970             DO 650 I=NSHBEF+1,NSHAFT
13971               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
13972      &        I.NE.NSD1) NSD2=I
13973   650       CONTINUE
13974           ENDIF
13975           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
13976             DO 660 I=NSHBEF+1,NSHAFT
13977               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
13978      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
13979   660       CONTINUE
13980           ENDIF
13981         ENDIF
13982  
13983 C...Store decay products for further treatment.
13984         NP=NP+1
13985         IREF(NP,1)=NSD1
13986         IREF(NP,2)=NSD2
13987         IREF(NP,3)=0
13988         IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
13989         IREF(NP,4)=IDOC+1
13990         IREF(NP,5)=IDOC+2
13991         IREF(NP,6)=0
13992         IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
13993         IREF(NP,7)=K(IREF(IP,JT),2)
13994         IREF(NP,8)=IREF(IP,JT)
13995   670 CONTINUE
13996  
13997 C...Fill information for 2 -> 1 -> 2.
13998   680 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
13999         MINT(7)=MINT(83)+6+2*ISET(ISUB)
14000         MINT(8)=MINT(83)+7+2*ISET(ISUB)
14001         MINT(25)=KFL1(1)
14002         MINT(26)=KFL2(1)
14003         VINT(23)=CTHE(1)
14004         RM3=P(N-1,5)**2/SH
14005         RM4=P(N,5)**2/SH
14006         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
14007         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
14008         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
14009         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
14010         VINT(47)=SQRT(VINT(48))
14011       ENDIF
14012  
14013 C...Possibility of colour rearrangement in W+W- events.
14014       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
14015         IAKF1=IABS(KFL1(1))
14016         IAKF2=IABS(KFL1(2))
14017         IAKF3=IABS(KFL2(1))
14018         IAKF4=IABS(KFL2(2))
14019         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
14020      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
14021      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
14022       ENDIF
14023  
14024 C...Loop back if needed.
14025   690 IF(IP.LT.NP) GOTO 150
14026  
14027 C...Boost back to standard frame.
14028   700 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
14029      &BEZIN)
14030  
14031       RETURN
14032       END
14033  
14034 C*********************************************************************
14035  
14036 C...PYMULT
14037 C...Initializes treatment of multiple interactions, selects kinematics
14038 C...of hardest interaction if low-pT physics included in run, and
14039 C...generates all non-hardest interactions.
14040  
14041       SUBROUTINE PYMULT(MMUL)
14042  
14043 C...Double precision and integer declarations.
14044       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14045       IMPLICIT INTEGER(I-N)
14046       INTEGER PYK,PYCHGE,PYCOMP
14047 C...Commonblocks.
14048       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14049       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14050       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14051       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
14052       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14053       COMMON/PYINT1/MINT(400),VINT(400)
14054       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14055       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
14056       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
14057       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
14058       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
14059      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
14060 C...Local arrays and saved variables.
14061       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
14062       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM
14063  
14064 C...Initialization of multiple interaction treatment.
14065       IF(MMUL.EQ.1) THEN
14066         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
14067         ISUB=96
14068         MINT(1)=96
14069         VINT(63)=0D0
14070         VINT(64)=0D0
14071         VINT(143)=1D0
14072         VINT(144)=1D0
14073  
14074 C...Loop over phase space points: xT2 choice in 20 bins.
14075   100   SIGSUM=0D0
14076         DO 120 IXT2=1,20
14077           NMUL(IXT2)=MSTP(83)
14078           SIGM(IXT2)=0D0
14079           DO 110 ITRY=1,MSTP(83)
14080             RSCA=0.05D0*((21-IXT2)-PYR(0))
14081             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
14082             XT2=MAX(0.01D0*VINT(149),XT2)
14083             VINT(25)=XT2
14084  
14085 C...Choose tau and y*. Calculate cos(theta-hat).
14086             IF(PYR(0).LE.COEF(ISUB,1)) THEN
14087               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14088               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14089             ELSE
14090               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14091             ENDIF
14092             VINT(21)=TAU
14093             CALL PYKLIM(2)
14094             RYST=PYR(0)
14095             MYST=1
14096             IF(RYST.GT.COEF(ISUB,8)) MYST=2
14097             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14098             CALL PYKMAP(2,MYST,PYR(0))
14099             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14100  
14101 C...Calculate differential cross-section.
14102             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
14103             CALL PYSIGH(NCHN,SIGS)
14104             SIGM(IXT2)=SIGM(IXT2)+SIGS
14105   110     CONTINUE
14106           SIGSUM=SIGSUM+SIGM(IXT2)
14107   120   CONTINUE
14108         SIGSUM=SIGSUM/(20D0*MSTP(83))
14109  
14110 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
14111         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
14112           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
14113      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
14114           PARP(82)=0.9D0*PARP(82)
14115           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
14116      &    VINT(2)
14117           GOTO 100
14118         ENDIF
14119         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
14120      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
14121  
14122 C...Start iteration to find k factor.
14123         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
14124         SO=0.5D0
14125         XI=0D0
14126         YI=0D0
14127         XF=0D0
14128         YF=0D0
14129         XK=0.5D0
14130         IIT=0
14131   130   IF(IIT.EQ.0) THEN
14132           XK=2D0*XK
14133         ELSEIF(IIT.EQ.1) THEN
14134           XK=0.5D0*XK
14135         ELSE
14136           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
14137         ENDIF
14138  
14139 C...Evaluate overlap integrals.
14140         IF(MSTP(82).EQ.2) THEN
14141           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
14142           SOP=SP/PARU(1)
14143         ELSE
14144           IF(MSTP(82).EQ.3) DELTAB=0.02D0
14145           IF(MSTP(82).EQ.4) DELTAB=MIN(0.01D0,0.05D0*PARP(84))
14146           SP=0D0
14147           SOP=0D0
14148           B=-0.5D0*DELTAB
14149   140     B=B+DELTAB
14150           IF(MSTP(82).EQ.3) THEN
14151             OV=EXP(-B**2)/PARU(2)
14152           ELSE
14153             CQ2=PARP(84)**2
14154             OV=((1D0-PARP(83))**2*EXP(-MIN(50D0,B**2))+
14155      &      2D0*PARP(83)*(1D0-PARP(83))*2D0/(1D0+CQ2)*
14156      &      EXP(-MIN(50D0,B**2*2D0/(1D0+CQ2)))+
14157      &      PARP(83)**2/CQ2*EXP(-MIN(50D0,B**2/CQ2)))/PARU(2)
14158           ENDIF
14159           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
14160           SP=SP+PARU(2)*B*DELTAB*PACC
14161           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
14162           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
14163         ENDIF
14164         YK=PARU(1)*XK*SO/SP
14165  
14166 C...Continue iteration until convergence.
14167         IF(YK.LT.YKE) THEN
14168           XI=XK
14169           YI=YK
14170           IF(IIT.EQ.1) IIT=2
14171         ELSE
14172           XF=XK
14173           YF=YK
14174           IF(IIT.EQ.0) IIT=1
14175         ENDIF
14176         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
14177  
14178 C...Store some results for subsequent use.
14179         VINT(145)=SIGSUM
14180         VINT(146)=SOP/SO
14181         VINT(147)=SOP/SP
14182  
14183 C...Initialize iteration in xT2 for hardest interaction.
14184       ELSEIF(MMUL.EQ.2) THEN
14185         IF(MSTP(82).LE.0) THEN
14186         ELSEIF(MSTP(82).EQ.1) THEN
14187           XT2=1D0
14188           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
14189           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
14190      &    VINT(317)/(VINT(318)*VINT(320))
14191           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
14192         ELSEIF(MSTP(82).EQ.2) THEN
14193           XT2=1D0
14194           XT2FAC=VINT(146)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
14195      &    VINT(149)*(1D0+VINT(149))
14196         ELSE
14197           XC2=4D0*CKIN(3)**2/VINT(2)
14198           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
14199         ENDIF
14200  
14201       ELSEIF(MMUL.EQ.3) THEN
14202 C...Low-pT or multiple interactions (first semihard interaction):
14203 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
14204 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
14205         ISUB=MINT(1)
14206         IF(MSTP(82).LE.0) THEN
14207           XT2=0D0
14208         ELSEIF(MSTP(82).EQ.1) THEN
14209           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
14210         ELSEIF(MSTP(82).EQ.2) THEN
14211           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
14212      &    VINT(149)))).GT.PYR(0)) XT2=1D0
14213           IF(XT2.GE.1D0) THEN
14214             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
14215      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
14216      &      VINT(149)
14217           ELSE
14218             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
14219      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
14220      &      VINT(149)
14221           ENDIF
14222           XT2=MAX(0.01D0*VINT(149),XT2)
14223         ELSE
14224           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
14225      &    PYR(0)*(1D0-XC2))-VINT(149)
14226           XT2=MAX(0.01D0*VINT(149),XT2)
14227         ENDIF
14228         VINT(25)=XT2
14229  
14230 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
14231         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
14232           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
14233           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
14234           ISUB=95
14235           MINT(1)=ISUB
14236           VINT(21)=0.01D0*VINT(149)
14237           VINT(22)=0D0
14238           VINT(23)=0D0
14239           VINT(25)=0.01D0*VINT(149)
14240  
14241         ELSE
14242 C...Multiple interactions (first semihard interaction).
14243 C...Choose tau and y*. Calculate cos(theta-hat).
14244           IF(PYR(0).LE.COEF(ISUB,1)) THEN
14245             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14246             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14247           ELSE
14248             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14249           ENDIF
14250           VINT(21)=TAU
14251           CALL PYKLIM(2)
14252           RYST=PYR(0)
14253           MYST=1
14254           IF(RYST.GT.COEF(ISUB,8)) MYST=2
14255           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14256           CALL PYKMAP(2,MYST,PYR(0))
14257           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14258         ENDIF
14259         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
14260  
14261 C...Store results of cross-section calculation.
14262       ELSEIF(MMUL.EQ.4) THEN
14263         ISUB=MINT(1)
14264         XTS=VINT(25)
14265         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
14266         IF(ISET(ISUB).EQ.2)
14267      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
14268         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
14269         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
14270      &  (XTS+VINT(149))))
14271         IRBIN=INT(1D0+20D0*RBIN)
14272         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
14273           NMUL(IRBIN)=NMUL(IRBIN)+1
14274           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
14275         ENDIF
14276  
14277 C...Choose impact parameter.
14278       ELSEIF(MMUL.EQ.5) THEN
14279         ISUB=MINT(1)
14280   150   IF(MSTP(82).EQ.3) THEN
14281           VINT(148)=PYR(0)/(PARU(2)*VINT(147))
14282         ELSE
14283           RTYPE=PYR(0)
14284           CQ2=PARP(84)**2
14285           IF(RTYPE.LT.(1D0-PARP(83))**2) THEN
14286             B2=-LOG(PYR(0))
14287           ELSEIF(RTYPE.LT.1D0-PARP(83)**2) THEN
14288             B2=-0.5D0*(1D0+CQ2)*LOG(PYR(0))
14289           ELSE
14290             B2=-CQ2*LOG(PYR(0))
14291           ENDIF
14292           VINT(148)=((1D0-PARP(83))**2*EXP(-MIN(50D0,B2))+2D0*PARP(83)*
14293      &    (1D0-PARP(83))*2D0/(1D0+CQ2)*EXP(-MIN(50D0,B2*2D0/(1D0+CQ2)))+
14294      &    PARP(83)**2/CQ2*EXP(-MIN(50D0,B2/CQ2)))/(PARU(2)*VINT(147))
14295         ENDIF
14296  
14297 C...Multiple interactions (variable impact parameter) : reject with
14298 C...probability exp(-overlap*cross-section above pT/normalization).
14299         RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
14300         SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
14301         DO 160 IBIN=IRBIN+1,20
14302           RNCOR=RNCOR+NMUL(IBIN)
14303           SIGCOR=SIGCOR+SIGM(IBIN)
14304   160   CONTINUE
14305         SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
14306         IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
14307         VINT(150)=EXP(-MIN(50D0,VINT(146)*VINT(148)*
14308      &  SIGABV/MAX(1D-10,SIGT(0,0,5))))
14309         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
14310      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
14311      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
14312           IF(VINT(150).LT.PYR(0)) GOTO 150
14313           VINT(150)=1D0
14314         ENDIF
14315  
14316 C...Generate additional multiple semihard interactions.
14317       ELSEIF(MMUL.EQ.6) THEN
14318         ISUBSV=MINT(1)
14319         DO 170 J=11,80
14320           VINTSV(J)=VINT(J)
14321   170   CONTINUE
14322         ISUB=96
14323         MINT(1)=96
14324         VINT(151)=0D0
14325         VINT(152)=0D0
14326  
14327 C...Reconstruct strings in hard scattering.
14328         NMAX=MINT(84)+4
14329         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
14330         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
14331         NSTR=0
14332         DO 190 I=MINT(84)+1,NMAX
14333           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
14334           IF(KCS.EQ.0) GOTO 190
14335           DO 180 J=1,4
14336             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 180
14337             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 180
14338             IF(J.LE.2) THEN
14339               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
14340             ELSE
14341               IST=MOD(K(I,J+1),MSTU(5))
14342             ENDIF
14343             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 180
14344             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 180
14345             NSTR=NSTR+1
14346             IF(J.EQ.1.OR.J.EQ.4) THEN
14347               KSTR(NSTR,1)=I
14348               KSTR(NSTR,2)=IST
14349             ELSE
14350               KSTR(NSTR,1)=IST
14351               KSTR(NSTR,2)=I
14352             ENDIF
14353   180     CONTINUE
14354   190   CONTINUE
14355  
14356 C...Set up starting values for iteration in xT2.
14357         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
14358      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
14359      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
14360      &  ISUBSV.NE.96)) THEN
14361           XT2=(1D0-VINT(141))*(1D0-VINT(142))
14362         ELSE
14363           XT2=VINT(25)
14364           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
14365           IF(ISET(ISUBSV).EQ.2)
14366      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
14367           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
14368         ENDIF
14369         IF(MSTP(82).LE.1) THEN
14370           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
14371           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
14372      &    VINT(317)/(VINT(318)*VINT(320))
14373           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
14374         ELSE
14375           XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
14376      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
14377         ENDIF
14378         VINT(63)=0D0
14379         VINT(64)=0D0
14380         VINT(143)=1D0-VINT(141)
14381         VINT(144)=1D0-VINT(142)
14382  
14383 C...Iterate downwards in xT2.
14384   200   IF(MSTP(82).LE.1) THEN
14385           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
14386           IF(XT2.LT.VINT(149)) GOTO 250
14387         ELSE
14388           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 250
14389           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
14390      &    LOG(PYR(0)))-VINT(149)
14391           IF(XT2.LE.0D0) GOTO 250
14392           XT2=MAX(0.01D0*VINT(149),XT2)
14393         ENDIF
14394         VINT(25)=XT2
14395  
14396 C...Choose tau and y*. Calculate cos(theta-hat).
14397         IF(PYR(0).LE.COEF(ISUB,1)) THEN
14398           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
14399           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
14400         ELSE
14401           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
14402         ENDIF
14403         VINT(21)=TAU
14404         CALL PYKLIM(2)
14405         RYST=PYR(0)
14406         MYST=1
14407         IF(RYST.GT.COEF(ISUB,8)) MYST=2
14408         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
14409         CALL PYKMAP(2,MYST,PYR(0))
14410         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
14411  
14412 C...Check that x not used up. Accept or reject kinematical variables.
14413         X1M=SQRT(TAU)*EXP(VINT(22))
14414         X2M=SQRT(TAU)*EXP(-VINT(22))
14415         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 200
14416         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
14417         CALL PYSIGH(NCHN,SIGS)
14418         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
14419         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 200
14420  
14421 C...Reset K, P and V vectors. Select some variables.
14422         DO 220 I=N+1,N+2
14423           DO 210 J=1,5
14424             K(I,J)=0
14425             P(I,J)=0D0
14426             V(I,J)=0D0
14427   210     CONTINUE
14428   220   CONTINUE
14429         RFLAV=PYR(0)
14430         PT=0.5D0*VINT(1)*SQRT(XT2)
14431         PHI=PARU(2)*PYR(0)
14432         CTH=VINT(23)
14433  
14434 C...Add first parton to event record.
14435         K(N+1,1)=3
14436         K(N+1,2)=21
14437         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
14438      &  1+INT((2D0+PARJ(2))*PYR(0))
14439         P(N+1,1)=PT*COS(PHI)
14440         P(N+1,2)=PT*SIN(PHI)
14441         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
14442         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
14443         P(N+1,5)=0D0
14444  
14445 C...Add second parton to event record.
14446         K(N+2,1)=3
14447         K(N+2,2)=21
14448         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
14449         P(N+2,1)=-P(N+1,1)
14450         P(N+2,2)=-P(N+1,2)
14451         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
14452         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
14453         P(N+2,5)=0D0
14454  
14455         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
14456 C....Choose relevant string pieces to place gluons on.
14457           DO 240 I=N+1,N+2
14458             DMIN=1D8
14459             DO 230 ISTR=1,NSTR
14460               I1=KSTR(ISTR,1)
14461               I2=KSTR(ISTR,2)
14462               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
14463      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
14464      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
14465      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
14466               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
14467                 DMIN=DIST
14468                 IST1=I1
14469                 IST2=I2
14470                 ISTM=ISTR
14471               ENDIF
14472   230       CONTINUE
14473  
14474 C....Colour flow adjustments, new string pieces.
14475             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
14476      &      MOD(K(IST1,4),MSTU(5))
14477             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
14478      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
14479             K(I,5)=MSTU(5)*IST1
14480             K(I,4)=MSTU(5)*IST2
14481             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
14482      &      MOD(K(IST2,5),MSTU(5))
14483             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
14484      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
14485             KSTR(ISTM,2)=I
14486             KSTR(NSTR+1,1)=I
14487             KSTR(NSTR+1,2)=IST2
14488             NSTR=NSTR+1
14489   240     CONTINUE
14490  
14491 C...String drawing and colour flow for gluon loop.
14492         ELSEIF(K(N+1,2).EQ.21) THEN
14493           K(N+1,4)=MSTU(5)*(N+2)
14494           K(N+1,5)=MSTU(5)*(N+2)
14495           K(N+2,4)=MSTU(5)*(N+1)
14496           K(N+2,5)=MSTU(5)*(N+1)
14497           KSTR(NSTR+1,1)=N+1
14498           KSTR(NSTR+1,2)=N+2
14499           KSTR(NSTR+2,1)=N+2
14500           KSTR(NSTR+2,2)=N+1
14501           NSTR=NSTR+2
14502  
14503 C...String drawing and colour flow for qqbar pair.
14504         ELSE
14505           K(N+1,4)=MSTU(5)*(N+2)
14506           K(N+2,5)=MSTU(5)*(N+1)
14507           KSTR(NSTR+1,1)=N+1
14508           KSTR(NSTR+1,2)=N+2
14509           NSTR=NSTR+1
14510         ENDIF
14511  
14512 C...Update remaining energy; iterate.
14513         N=N+2
14514         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
14515           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
14516           IF(MSTU(21).GE.1) RETURN
14517         ENDIF
14518         MINT(31)=MINT(31)+1
14519         VINT(151)=VINT(151)+VINT(41)
14520         VINT(152)=VINT(152)+VINT(42)
14521         VINT(143)=VINT(143)-VINT(41)
14522         VINT(144)=VINT(144)-VINT(42)
14523         IF(MINT(31).LT.240) GOTO 200
14524   250   CONTINUE
14525         MINT(1)=ISUBSV
14526         DO 260 J=11,80
14527           VINT(J)=VINTSV(J)
14528   260   CONTINUE
14529       ENDIF
14530  
14531 C...Format statements for printout.
14532  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
14533      &'actions for MSTP(82) =',I2,' ******')
14534  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
14535      &D9.2,' mb: rejected')
14536  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
14537      &D9.2,' mb: accepted')
14538  
14539       RETURN
14540       END
14541  
14542 C*********************************************************************
14543  
14544 C...PYREMN
14545 C...Adds on target remnants (one or two from each side) and
14546 C...includes primordial kT for hadron beams.
14547  
14548       SUBROUTINE PYREMN(IPU1,IPU2)
14549  
14550 C...Double precision and integer declarations.
14551       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14552       IMPLICIT INTEGER(I-N)
14553       INTEGER PYK,PYCHGE,PYCOMP
14554 C...Commonblocks.
14555       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14556       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14557       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14558       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14559       COMMON/PYINT1/MINT(400),VINT(400)
14560       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
14561 C...Local arrays.
14562       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
14563      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
14564  
14565 C...Find event type and remaining energy.
14566       ISUB=MINT(1)
14567       NS=N
14568       IF(MINT(50).EQ.0.OR.MSTP(81).LE.0) THEN
14569         VINT(143)=1D0-VINT(141)
14570         VINT(144)=1D0-VINT(142)
14571       ENDIF
14572  
14573 C...Define initial partons.
14574       NTRY=0
14575   100 NTRY=NTRY+1
14576       DO 130 JT=1,2
14577         I=MINT(83)+JT+2
14578         IF(JT.EQ.1) IPU=IPU1
14579         IF(JT.EQ.2) IPU=IPU2
14580         K(I,1)=21
14581         K(I,2)=K(IPU,2)
14582         K(I,3)=I-2
14583         PMS(JT)=0D0
14584         VINT(156+JT)=0D0
14585         VINT(158+JT)=0D0
14586         IF(MINT(47).EQ.1) THEN
14587           DO 110 J=1,5
14588             P(I,J)=P(I-2,J)
14589   110     CONTINUE
14590         ELSEIF(ISUB.EQ.95) THEN
14591           K(I,2)=21
14592         ELSE
14593           P(I,5)=P(IPU,5)
14594  
14595 C...No primordial kT, or chosen according to truncated Gaussian or
14596 C...exponential, or (for photon) predetermined or power law.
14597   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
14598             IF(MSTP(91).LE.0) THEN
14599               PT=0D0
14600             ELSEIF(MSTP(91).EQ.1) THEN
14601               PT=PARP(91)*SQRT(-LOG(PYR(0)))
14602             ELSE
14603               RPT1=PYR(0)
14604               RPT2=PYR(0)
14605               PT=-PARP(92)*LOG(RPT1*RPT2)
14606             ENDIF
14607             IF(PT.GT.PARP(93)) GOTO 120
14608           ELSEIF(MINT(106+JT).EQ.3) THEN
14609             PTA=SQRT(VINT(282+JT))
14610             PTB=0D0
14611             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
14612               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
14613             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
14614               RPT1=PYR(0)
14615               RPT2=PYR(0)
14616               PTB=-PARP(99)*LOG(RPT1*RPT2)
14617             ENDIF
14618             IF(PTB.GT.PARP(100)) GOTO 120
14619             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
14620             PT=PT*0.8D0**MINT(57)
14621             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
14622           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
14623             IF(MSTP(93).LE.0) THEN
14624               PT=0D0
14625             ELSEIF(MSTP(93).EQ.1) THEN
14626               PT=PARP(99)*SQRT(-LOG(PYR(0)))
14627             ELSEIF(MSTP(93).EQ.2) THEN
14628               RPT1=PYR(0)
14629               RPT2=PYR(0)
14630               PT=-PARP(99)*LOG(RPT1*RPT2)
14631             ELSEIF(MSTP(93).EQ.3) THEN
14632               HA=PARP(99)**2
14633               HB=PARP(100)**2
14634               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
14635             ELSE
14636               HA=PARP(99)**2
14637               HB=PARP(100)**2
14638               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
14639               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
14640             ENDIF
14641             IF(PT.GT.PARP(100)) GOTO 120
14642           ELSE
14643             PT=0D0
14644           ENDIF
14645           VINT(156+JT)=PT
14646           PHI=PARU(2)*PYR(0)
14647           P(I,1)=PT*COS(PHI)
14648           P(I,2)=PT*SIN(PHI)
14649           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14650         ENDIF
14651   130 CONTINUE
14652       IF(MINT(47).EQ.1) RETURN
14653  
14654 C...Kinematics construction for initial partons.
14655       I1=MINT(83)+3
14656       I2=MINT(83)+4
14657       IF(ISUB.EQ.95) THEN
14658         SHS=0D0
14659         SHR=0D0
14660       ELSE
14661         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
14662      &  (P(I1,2)+P(I2,2))**2
14663         SHR=SQRT(MAX(0D0,SHS))
14664         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
14665         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
14666         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
14667         P(I2,4)=SHR-P(I1,4)
14668         P(I2,3)=-P(I1,3)
14669  
14670 C...Transform partons to overall CM-frame.
14671         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
14672         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
14673         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
14674         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
14675         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
14676         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
14677         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
14678         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
14679         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
14680         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
14681         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
14682       ENDIF
14683  
14684 C...Optionally fix up x and Q2 definitions for leptoproduction.
14685       IDISXQ=0
14686       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
14687      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
14688       IF(IDISXQ.EQ.1) THEN
14689  
14690 C...Find where incoming and outgoing leptons/partons are sitting.
14691         LESD=1
14692         IF(MINT(42).EQ.1) LESD=2
14693         LPIN=MINT(83)+3-LESD
14694         LEIN=MINT(84)+LESD
14695         LQIN=MINT(84)+3-LESD
14696         LEOUT=MINT(84)+2+LESD
14697         LQOUT=MINT(84)+5-LESD
14698         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
14699         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
14700         LSCMS=0
14701         DO 140 I=MINT(84)+5,N
14702           IF(K(I,2).EQ.94) THEN
14703             LSCMS=I
14704             LEOUT=I+LESD
14705             LQOUT=I+3-LESD
14706           ENDIF
14707   140   CONTINUE
14708         LQBG=IPU1
14709         IF(LESD.EQ.1) LQBG=IPU2
14710  
14711 C...Calculate actual and wanted momentum transfer.
14712         XNOM=VINT(43-LESD)
14713         Q2NOM=-VINT(45)
14714         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
14715      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
14716      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
14717         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
14718         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
14719         P(N+1,1)=FAC*P(LEOUT,1)
14720         P(N+1,2)=FAC*P(LEOUT,2)
14721         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
14722      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
14723         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
14724      &  P(N+1,3)**2)
14725         DO 150 J=1,4
14726           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
14727           QNEW(J)=P(LEIN,J)-P(N+1,J)
14728   150   CONTINUE
14729  
14730 C...Boost outgoing electron and daughters.
14731         IF(LSCMS.EQ.0) THEN
14732           DO 160 J=1,4
14733             P(LEOUT,J)=P(N+1,J)
14734   160     CONTINUE
14735         ELSE
14736           DO 170 J=1,3
14737             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
14738   170     CONTINUE
14739           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
14740           DO 180 J=1,3
14741             DBE(J)=PINV*P(N+2,J)
14742   180     CONTINUE
14743           DO 200 I=LSCMS+1,N
14744             IORIG=I
14745   190       IORIG=K(IORIG,3)
14746             IF(IORIG.GT.LEOUT) GOTO 190
14747             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
14748      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
14749   200     CONTINUE
14750         ENDIF
14751  
14752 C...Copy shower initiator and all outgoing partons.
14753         NCOP=N+1
14754         K(NCOP,3)=LQBG
14755         DO 210 J=1,5
14756           P(NCOP,J)=P(LQBG,J)
14757   210   CONTINUE
14758         DO 240 I=MINT(84)+1,N
14759           ICOP=0
14760           IF(K(I,1).GT.10) GOTO 240
14761           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
14762             ICOP=I
14763           ELSE
14764             IORIG=I
14765   220       IORIG=K(IORIG,3)
14766             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
14767               ICOP=IORIG
14768             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
14769               GOTO 220
14770             ENDIF
14771           ENDIF
14772           IF(ICOP.NE.0) THEN
14773             NCOP=NCOP+1
14774             K(NCOP,3)=I
14775             DO 230 J=1,5
14776               P(NCOP,J)=P(I,J)
14777   230       CONTINUE
14778           ENDIF
14779   240   CONTINUE
14780  
14781 C...Calculate relative rescaling factors.
14782         SLC=3-2*LESD
14783         PLCSUM=0D0
14784         DO 250 I=N+2,NCOP
14785           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
14786   250   CONTINUE
14787         DO 260 I=N+2,NCOP
14788           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
14789   260   CONTINUE
14790  
14791 C...Transfer extra three-momentum of current.
14792         DO 280 I=N+2,NCOP
14793           DO 270 J=1,3
14794             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
14795   270     CONTINUE
14796           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
14797   280   CONTINUE
14798  
14799 C...Iterate change of initiator momentum to get energy right.
14800         ITER=0
14801   290   ITER=ITER+1
14802         PEEX=-P(N+1,4)-QNEW(4)
14803         PEMV=-P(N+1,3)/P(N+1,4)
14804         DO 300 I=N+2,NCOP
14805           PEEX=PEEX+P(I,4)
14806           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
14807   300   CONTINUE
14808         IF(ABS(PEMV).LT.1D-10) THEN
14809           MINT(51)=1
14810           MINT(57)=MINT(57)+1
14811           RETURN
14812         ENDIF
14813         PZCH=-PEEX/PEMV
14814         P(N+1,3)=P(N+1,3)+PZCH
14815         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)
14816         DO 310 I=N+2,NCOP
14817           P(I,3)=P(I,3)+V(I,1)*PZCH
14818           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
14819   310   CONTINUE
14820         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
14821  
14822 C...Modify momenta in event record.
14823         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
14824      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
14825         IF(ABS(HBE).GE.1D0) THEN
14826           MINT(51)=1
14827           MINT(57)=MINT(57)+1
14828           RETURN
14829         ENDIF
14830         I=MINT(83)+5-LESD
14831         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
14832         DO 330 I=N+1,NCOP
14833           ICOP=K(I,3)
14834           DO 320 J=1,4
14835             P(ICOP,J)=P(I,J)
14836   320     CONTINUE
14837   330   CONTINUE
14838       ENDIF
14839  
14840 C...Check minimum invariant mass of remnant system(s).
14841       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
14842       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
14843       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
14844       PMIN(0)=SQRT(PMS(0))
14845       DO 340 JT=1,2
14846         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
14847         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
14848         PMIN(JT)=0D0
14849         IF(MINT(44+JT).EQ.1) GOTO 340
14850         MINT(105)=MINT(102+JT)
14851         MINT(109)=MINT(106+JT)
14852         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
14853         IF(MINT(51).NE.0) THEN
14854           MINT(57)=MINT(57)+1
14855           RETURN
14856         ENDIF
14857         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
14858         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
14859         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
14860         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
14861      &  P(MINT(83)+JT+2,2)**2)
14862   340 CONTINUE
14863       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
14864      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
14865      &PSYS(2,4))) THEN
14866         MINT(51)=1
14867         MINT(57)=MINT(57)+1
14868         RETURN
14869       ENDIF
14870  
14871 C...Loop over two remnants; skip if none there.
14872       I=NS
14873       DO 410 JT=1,2
14874         ISN(JT)=0
14875         IF(MINT(44+JT).EQ.1) GOTO 410
14876         IF(JT.EQ.1) IPU=IPU1
14877         IF(JT.EQ.2) IPU=IPU2
14878  
14879 C...Store first remnant parton.
14880         I=I+1
14881         IS(JT)=I
14882         ISN(JT)=1
14883         DO 350 J=1,5
14884           K(I,J)=0
14885           P(I,J)=0D0
14886           V(I,J)=0D0
14887   350   CONTINUE
14888         K(I,1)=1
14889         K(I,2)=KFLSP(JT)
14890         K(I,3)=MINT(83)+JT
14891         P(I,5)=PYMASS(K(I,2))
14892  
14893 C...First parton colour connections and kinematics.
14894         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
14895         IF(KCOL.EQ.2) THEN
14896           K(I,1)=3
14897           K(I,4)=MSTU(5)*IPU+IPU
14898           K(I,5)=MSTU(5)*IPU+IPU
14899           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
14900           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
14901         ELSEIF(KCOL.NE.0) THEN
14902           K(I,1)=3
14903           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
14904           K(I,KFLS+3)=IPU
14905           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
14906         ENDIF
14907         IF(KFLCH(JT).EQ.0) THEN
14908           P(I,1)=-P(MINT(83)+JT+2,1)
14909           P(I,2)=-P(MINT(83)+JT+2,2)
14910           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14911           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
14912           P(I,3)=PSYS(JT,3)
14913           P(I,4)=PSYS(JT,4)
14914  
14915 C...When extra remnant parton or hadron: store extra remnant.
14916         ELSE
14917           I=I+1
14918           ISN(JT)=2
14919           DO 360 J=1,5
14920             K(I,J)=0
14921             P(I,J)=0D0
14922             V(I,J)=0D0
14923   360     CONTINUE
14924           K(I,1)=1
14925           K(I,2)=KFLCH(JT)
14926           K(I,3)=MINT(83)+JT
14927           P(I,5)=PYMASS(K(I,2))
14928  
14929 C...Find parton colour connections of extra remnant.
14930           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
14931           IF(KCOL.EQ.2) THEN
14932             K(I,1)=3
14933             K(I,4)=MSTU(5)*IPU+IPU
14934             K(I,5)=MSTU(5)*IPU+IPU
14935             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
14936             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
14937           ELSEIF(KCOL.NE.0) THEN
14938             K(I,1)=3
14939             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
14940             K(I,KFLS+3)=IPU
14941             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
14942           ENDIF
14943  
14944 C...Relative transverse momentum when two remnants.
14945           LOOP=0
14946   370     LOOP=LOOP+1
14947           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
14948           IF(IABS(MINT(10+JT)).LT.20) THEN
14949             P(I-1,1)=0D0
14950             P(I-1,2)=0D0
14951           ELSE
14952             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
14953             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
14954           ENDIF
14955           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
14956           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
14957           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
14958           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
14959  
14960 C...Meson or baryon; photon as meson. For splitup below.
14961           IMB=1
14962           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
14963  
14964 C***Relative distribution for electron into two electrons. Temporary!
14965           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
14966      &    THEN
14967             CHI(JT)=PYR(0)
14968  
14969 C...Relative distribution of electron energy into electron plus parton.
14970           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
14971             XHRD=VINT(140+JT)
14972             XE=VINT(154+JT)
14973             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
14974  
14975 C...Relative distribution of energy for particle into two jets.
14976           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
14977             CHIK=PARP(92+2*IMB)
14978             IF(MSTP(92).LE.1) THEN
14979               IF(IMB.EQ.1) CHI(JT)=PYR(0)
14980               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
14981             ELSEIF(MSTP(92).EQ.2) THEN
14982               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
14983             ELSEIF(MSTP(92).EQ.3) THEN
14984               CUT=2D0*0.3D0/VINT(1)
14985   380         CHI(JT)=PYR(0)**2
14986               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
14987      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
14988             ELSEIF(MSTP(92).EQ.4) THEN
14989               CUT=2D0*0.3D0/VINT(1)
14990               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
14991   390         CHIR=CUT*CUTR**PYR(0)
14992               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
14993               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
14994             ELSE
14995               CUT=2D0*0.3D0/VINT(1)
14996               CUTA=CUT**(1D0-PARP(98))
14997               CUTB=(1D0+CUT)**(1D0-PARP(98))
14998   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
14999               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
15000      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
15001             ENDIF
15002  
15003 C...Relative distribution of energy for particle into jet plus particle.
15004           ELSE
15005             IF(MSTP(94).LE.1) THEN
15006               IF(IMB.EQ.1) CHI(JT)=PYR(0)
15007               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
15008               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
15009             ELSEIF(MSTP(94).EQ.2) THEN
15010               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
15011               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
15012             ELSEIF(MSTP(94).EQ.3) THEN
15013               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
15014               CHI(JT)=ZZ
15015             ELSE
15016               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
15017               CHI(JT)=ZZ
15018             ENDIF
15019           ENDIF
15020  
15021 C...Construct total transverse mass; reject if too large.
15022           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
15023           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
15024           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
15025             IF(LOOP.LT.100) THEN
15026               GOTO 370
15027             ELSE
15028               MINT(51)=1
15029               MINT(57)=MINT(57)+1
15030               RETURN
15031             ENDIF
15032           ENDIF
15033           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
15034           VINT(158+JT)=CHI(JT)
15035  
15036 C...Subdivide longitudinal momentum according to value selected above.
15037           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
15038           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
15039           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
15040           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
15041           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
15042         ENDIF
15043   410 CONTINUE
15044       N=I
15045  
15046 C...Check if longitudinal boosts needed - if so pick two systems.
15047       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
15048      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
15049       IF(PDEV.LE.1D-6*VINT(1)) RETURN
15050       IF(ISN(1).EQ.0) THEN
15051         IR=0
15052         IL=2
15053       ELSEIF(ISN(2).EQ.0) THEN
15054         IR=1
15055         IL=0
15056       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
15057         IR=1
15058         IL=2
15059       ELSEIF(VINT(143).GT.0.2D0) THEN
15060         IR=1
15061         IL=0
15062       ELSEIF(VINT(144).GT.0.2D0) THEN
15063         IR=0
15064         IL=2
15065       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
15066         IR=1
15067         IL=0
15068       ELSE
15069         IR=0
15070         IL=2
15071       ENDIF
15072       IG=3-IR-IL
15073  
15074 C...E+-pL wanted for system to be modified.
15075       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
15076         PPB=VINT(1)
15077         PNB=VINT(1)
15078       ELSE
15079         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
15080         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
15081       ENDIF
15082  
15083 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
15084       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
15085         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
15086         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
15087         DO 420 J=1,4
15088           PSYS(0,J)=0D0
15089   420   CONTINUE
15090         DO 450 I=MINT(84)+1,NS
15091           IF(K(I,1).GT.10) GOTO 450
15092           INCL=0
15093           IORIG=I
15094   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15095           IORIG=K(IORIG,3)
15096           IF(IORIG.GT.LPIN) GOTO 430
15097           IF(INCL.EQ.0) GOTO 450
15098           DO 440 J=1,4
15099             PSYS(0,J)=PSYS(0,J)+P(I,J)
15100   440     CONTINUE
15101   450   CONTINUE
15102         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
15103         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
15104         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
15105       ENDIF
15106  
15107 C...Construct longitudinal boosts.
15108       DPMTB=PPB*PNB
15109       DPMTR=PMS(IR)
15110       DPMTL=PMS(IL)
15111       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
15112       IF(DSQLAM.LE.1D-6*DPMTB) THEN
15113         MINT(51)=1
15114         MINT(57)=MINT(57)+1
15115         RETURN
15116       ENDIF
15117       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
15118       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
15119      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
15120       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
15121      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
15122       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
15123       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
15124  
15125 C...Perform longitudinal boosts.
15126       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
15127         P(IS(1),3)=0D0
15128         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
15129       ELSEIF(IR.EQ.1) THEN
15130         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
15131       ELSEIF(IDISXQ.EQ.1) THEN
15132         DO 470 I=I1,NS
15133           INCL=0
15134           IORIG=I
15135   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15136           IORIG=K(IORIG,3)
15137           IF(IORIG.GT.LPIN) GOTO 460
15138           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
15139   470   CONTINUE
15140       ELSE
15141         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
15142       ENDIF
15143       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
15144         P(IS(2),3)=0D0
15145         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
15146       ELSEIF(IL.EQ.2) THEN
15147         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
15148       ELSEIF(IDISXQ.EQ.1) THEN
15149         DO 490 I=I1,NS
15150           INCL=0
15151           IORIG=I
15152   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
15153           IORIG=K(IORIG,3)
15154           IF(IORIG.GT.LPIN) GOTO 480
15155           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
15156   490   CONTINUE
15157       ELSE
15158         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
15159       ENDIF
15160  
15161 C...Final check that energy-momentum conservation worked.
15162       PESUM=0D0
15163       PZSUM=0D0
15164       DO 500 I=MINT(84)+1,N
15165         IF(K(I,1).GT.10) GOTO 500
15166         PESUM=PESUM+P(I,4)
15167         PZSUM=PZSUM+P(I,3)
15168   500 CONTINUE
15169       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
15170       IF(PDEV.GT.1D-4*VINT(1)) THEN
15171         MINT(51)=1
15172         MINT(57)=MINT(57)+1
15173         RETURN
15174       ENDIF
15175  
15176 C...Calculate rotation and boost from overall CM frame to
15177 C...hadronic CM frame in leptoproduction.
15178       MINT(91)=0
15179       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
15180         MINT(91)=1
15181         LESD=1
15182         IF(MINT(42).EQ.1) LESD=2
15183         LPIN=MINT(83)+3-LESD
15184  
15185 C...Sum upp momenta of everything not lepton or photon to define boost.
15186         DO 510 J=1,4
15187           PSUM(J)=0D0
15188   510   CONTINUE
15189         DO 530 I=1,N
15190           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
15191           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
15192           IF(K(I,2).EQ.22) GOTO 530
15193           DO 520 J=1,4
15194             PSUM(J)=PSUM(J)+P(I,J)
15195   520     CONTINUE
15196   530   CONTINUE
15197         VINT(223)=-PSUM(1)/PSUM(4)
15198         VINT(224)=-PSUM(2)/PSUM(4)
15199         VINT(225)=-PSUM(3)/PSUM(4)
15200  
15201 C...Boost incoming hadron to hadronic CM frame to determine rotations.
15202         K(N+1,1)=1
15203         DO 540 J=1,5
15204           P(N+1,J)=P(LPIN,J)
15205           V(N+1,J)=V(LPIN,J)
15206   540   CONTINUE
15207         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
15208         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
15209         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
15210         IF(LESD.EQ.2) THEN
15211           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
15212         ELSE
15213           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
15214         ENDIF
15215       ENDIF
15216  
15217       RETURN
15218       END
15219  
15220 C*********************************************************************
15221  
15222 C...PYDIFF
15223 C...Handles diffractive and elastic scattering.
15224  
15225       SUBROUTINE PYDIFF
15226  
15227 C...Double precision and integer declarations.
15228       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15229       IMPLICIT INTEGER(I-N)
15230       INTEGER PYK,PYCHGE,PYCOMP
15231 C...Commonblocks.
15232       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15233       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15234       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15235       COMMON/PYINT1/MINT(400),VINT(400)
15236       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
15237  
15238 C...Reset K, P and V vectors. Store incoming particles.
15239       DO 110 JT=1,MSTP(126)+10
15240         I=MINT(83)+JT
15241         DO 100 J=1,5
15242           K(I,J)=0
15243           P(I,J)=0D0
15244           V(I,J)=0D0
15245   100   CONTINUE
15246   110 CONTINUE
15247       N=MINT(84)
15248       MINT(3)=0
15249       MINT(21)=0
15250       MINT(22)=0
15251       MINT(23)=0
15252       MINT(24)=0
15253       MINT(4)=4
15254       DO 130 JT=1,2
15255         I=MINT(83)+JT
15256         K(I,1)=21
15257         K(I,2)=MINT(10+JT)
15258         DO 120 J=1,5
15259           P(I,J)=VINT(285+5*JT+J)
15260   120   CONTINUE
15261   130 CONTINUE
15262       MINT(6)=2
15263  
15264 C...Subprocess; kinematics.
15265       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
15266       PZ=SQRT(SQLAM)/(2D0*VINT(1))
15267       DO 200 JT=1,2
15268         I=MINT(83)+JT
15269         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
15270         KFH=MINT(102+JT)
15271  
15272 C...Elastically scattered particle. (Except elastic GVMD states.)
15273         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
15274      &  MINT(106+JT).NE.3)) THEN
15275           N=N+1
15276           K(N,1)=1
15277           K(N,2)=KFH
15278           K(N,3)=I+2
15279           P(N,3)=PZ*(-1)**(JT+1)
15280           P(N,4)=PE
15281           P(N,5)=SQRT(VINT(62+JT))
15282  
15283 C...Decay rho from elastic scattering of gamma with sin**2(theta)
15284 C...distribution of decay products (in rho rest frame).
15285           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
15286             NSAV=N
15287             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
15288             P(N,3)=0D0
15289             P(N,4)=P(N,5)
15290             CALL PYDECY(NSAV)
15291             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
15292               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
15293               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
15294               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
15295               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
15296   140         CTHE=2D0*PYR(0)-1D0
15297               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
15298               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
15299             ENDIF
15300             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
15301           ENDIF
15302  
15303 C...Diffracted particle: low-mass system to two particles.
15304         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
15305           N=N+2
15306           K(N-1,1)=1
15307           K(N,1)=1
15308           K(N-1,3)=I+2
15309           K(N,3)=I+2
15310           PMMAS=SQRT(VINT(62+JT))
15311           NTRY=0
15312   150     NTRY=NTRY+1
15313           IF(NTRY.LT.20) THEN
15314             MINT(105)=MINT(102+JT)
15315             MINT(109)=MINT(106+JT)
15316             CALL PYSPLI(KFH,21,KFL1,KFL2)
15317             CALL PYKFDI(KFL1,0,KFL3,KF1)
15318             IF(KF1.EQ.0) GOTO 150
15319             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
15320             IF(KF2.EQ.0) GOTO 150
15321           ELSE
15322             KF1=KFH
15323             KF2=111
15324           ENDIF
15325           PM1=PYMASS(KF1)
15326           PM2=PYMASS(KF2)
15327           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
15328           K(N-1,2)=KF1
15329           K(N,2)=KF2
15330           P(N-1,5)=PM1
15331           P(N,5)=PM2
15332           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
15333      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
15334           P(N-1,3)=PZP
15335           P(N,3)=-PZP
15336           P(N-1,4)=SQRT(PM1**2+PZP**2)
15337           P(N,4)=SQRT(PM2**2+PZP**2)
15338           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
15339      &    0D0,0D0,0D0)
15340           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
15341           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
15342  
15343 C...Diffracted particle: valence quark kicked out.
15344         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
15345      &    PARP(101))) THEN
15346           N=N+2
15347           K(N-1,1)=2
15348           K(N,1)=1
15349           K(N-1,3)=I+2
15350           K(N,3)=I+2
15351           MINT(105)=MINT(102+JT)
15352           MINT(109)=MINT(106+JT)
15353           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
15354           P(N-1,5)=PYMASS(K(N-1,2))
15355           P(N,5)=PYMASS(K(N,2))
15356           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
15357      &    4D0*P(N-1,5)**2*P(N,5)**2
15358           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
15359      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
15360           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
15361           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
15362           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
15363  
15364 C...Diffracted particle: gluon kicked out.
15365         ELSE
15366           N=N+3
15367           K(N-2,1)=2
15368           K(N-1,1)=2
15369           K(N,1)=1
15370           K(N-2,3)=I+2
15371           K(N-1,3)=I+2
15372           K(N,3)=I+2
15373           MINT(105)=MINT(102+JT)
15374           MINT(109)=MINT(106+JT)
15375           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
15376           K(N-1,2)=21
15377           P(N-2,5)=PYMASS(K(N-2,2))
15378           P(N-1,5)=0D0
15379           P(N,5)=PYMASS(K(N,2))
15380 C...Energy distribution for particle into two jets.
15381   160     IMB=1
15382           IF(MOD(KFH/1000,10).NE.0) IMB=2
15383           CHIK=PARP(92+2*IMB)
15384           IF(MSTP(92).LE.1) THEN
15385             IF(IMB.EQ.1) CHI=PYR(0)
15386             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
15387           ELSEIF(MSTP(92).EQ.2) THEN
15388             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
15389           ELSEIF(MSTP(92).EQ.3) THEN
15390             CUT=2D0*0.3D0/VINT(1)
15391   170       CHI=PYR(0)**2
15392             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
15393      &      PYR(0)) GOTO 170
15394           ELSEIF(MSTP(92).EQ.4) THEN
15395             CUT=2D0*0.3D0/VINT(1)
15396             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
15397   180       CHIR=CUT*CUTR**PYR(0)
15398             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
15399             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
15400           ELSE
15401             CUT=2D0*0.3D0/VINT(1)
15402             CUTA=CUT**(1D0-PARP(98))
15403             CUTB=(1D0+CUT)**(1D0-PARP(98))
15404   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
15405             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
15406      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
15407           ENDIF
15408           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
15409      &    VINT(62+JT)) GOTO 160
15410           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
15411           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
15412      &    (2D0*VINT(62+JT))
15413           PEI=SQRT(PZI**2+SQM)
15414           PQQP=(1D0-CHI)*(PEI+PZI)
15415           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
15416           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
15417           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
15418           P(N-1,3)=P(N-1,4)*(-1)**JT
15419           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
15420           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
15421         ENDIF
15422  
15423 C...Documentation lines.
15424         K(I+2,1)=21
15425         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
15426         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
15427      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
15428         K(I+2,3)=I
15429         P(I+2,3)=PZ*(-1)**(JT+1)
15430         P(I+2,4)=PE
15431         P(I+2,5)=SQRT(VINT(62+JT))
15432   200 CONTINUE
15433  
15434 C...Rotate outgoing partons/particles using cos(theta).
15435       IF(VINT(23).LT.0.9D0) THEN
15436         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
15437       ELSE
15438         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
15439       ENDIF
15440  
15441       RETURN
15442       END
15443  
15444 C*********************************************************************
15445  
15446 C...PYDISG
15447 C...Set up a DIS process as gamma* + f -> f, with beam remnant
15448 C...and showering added consecutively. Photon flux by the PYGAGA
15449 C...routine (if at all).
15450  
15451       SUBROUTINE PYDISG
15452  
15453 C...Double precision and integer declarations.
15454       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15455       IMPLICIT INTEGER(I-N)
15456       INTEGER PYK,PYCHGE,PYCOMP
15457 C...Parameter statement to help give large particle numbers.
15458       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
15459      &KEXCIT=4000000,KDIMEN=5000000)
15460 C...Commonblocks.
15461       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15462       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15463       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
15464       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
15465       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15466       COMMON/PYINT1/MINT(400),VINT(400)
15467       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
15468 C...Local arrays.
15469       DIMENSION PMS(4)
15470  
15471 C...Choice of subprocess, number of documentation lines
15472       IDOC=7
15473       MINT(3)=IDOC-6
15474       MINT(4)=IDOC
15475       IPU1=MINT(84)+1
15476       IPU2=MINT(84)+2
15477       IPU3=MINT(84)+3
15478       ISIDE=1
15479       IF(MINT(107).EQ.4) ISIDE=2
15480  
15481 C...Reset K, P and V vectors. Store incoming particles
15482       DO 110 JT=1,MSTP(126)+20
15483         I=MINT(83)+JT
15484         DO 100 J=1,5
15485           K(I,J)=0
15486           P(I,J)=0D0
15487           V(I,J)=0D0
15488   100   CONTINUE
15489   110 CONTINUE
15490       DO 130 JT=1,2
15491         I=MINT(83)+JT
15492         K(I,1)=21
15493         K(I,2)=MINT(10+JT)
15494         DO 120 J=1,5
15495           P(I,J)=VINT(285+5*JT+J)
15496   120   CONTINUE
15497   130 CONTINUE
15498       MINT(6)=2
15499  
15500 C...Store incoming partons in hadronic CM-frame
15501       DO 140 JT=1,2
15502         I=MINT(84)+JT
15503         K(I,1)=14
15504         K(I,2)=MINT(14+JT)
15505         K(I,3)=MINT(83)+2+JT
15506   140 CONTINUE
15507       IF(MINT(15).EQ.22) THEN
15508         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
15509         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
15510         P(MINT(84)+1,5)=-SQRT(VINT(307))
15511         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
15512         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
15513         KFRES=MINT(16)
15514         ISIDE=2
15515       ELSE
15516         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
15517         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
15518         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
15519         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
15520         P(MINT(84)+1,5)=-SQRT(VINT(308))
15521         KFRES=MINT(15)
15522         ISIDE=1
15523       ENDIF
15524       SIDESG=(-1D0)**(ISIDE-1)
15525  
15526 C...Copy incoming partons to documentation lines.
15527       DO 170 JT=1,2
15528         I1=MINT(83)+4+JT
15529         I2=MINT(84)+JT
15530         K(I1,1)=21
15531         K(I1,2)=K(I2,2)
15532         K(I1,3)=I1-2
15533         DO 150 J=1,5
15534           P(I1,J)=P(I2,J)
15535   150   CONTINUE
15536  
15537 C...Second copy for partons before ISR shower, since no such.
15538         I1=MINT(83)+2+JT
15539         K(I1,1)=21
15540         K(I1,2)=K(I2,2)
15541         K(I1,3)=I1-2
15542         DO 160 J=1,5
15543           P(I1,J)=P(I2,J)
15544   160   CONTINUE
15545   170 CONTINUE
15546  
15547 C...Define initial partons.
15548       NTRY=0
15549   180 NTRY=NTRY+1
15550       IF(NTRY.GT.100) THEN
15551         MINT(51)=1
15552         RETURN
15553       ENDIF
15554  
15555 C...Scattered quark in hadronic CM frame.
15556       I=MINT(83)+7
15557       K(IPU3,1)=3
15558       K(IPU3,2)=KFRES
15559       K(IPU3,3)=I
15560       P(IPU3,5)=PYMASS(KFRES)
15561       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
15562       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
15563       P(IPU3,5)=0D0
15564       K(I,1)=21
15565       K(I,2)=KFRES
15566       K(I,3)=MINT(83)+4+ISIDE
15567       P(I,3)=P(IPU3,3)
15568       P(I,4)=P(IPU3,4)
15569       P(I,5)=P(IPU3,5)
15570       N=IPU3
15571       MINT(21)=KFRES
15572       MINT(22)=0
15573  
15574 C...No primordial kT, or chosen according to truncated Gaussian or
15575 C...exponential, or (for photon) predetermined or power law.
15576   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
15577         IF(MSTP(91).LE.0) THEN
15578           PT=0D0
15579         ELSEIF(MSTP(91).EQ.1) THEN
15580           PT=PARP(91)*SQRT(-LOG(PYR(0)))
15581         ELSE
15582           RPT1=PYR(0)
15583           RPT2=PYR(0)
15584           PT=-PARP(92)*LOG(RPT1*RPT2)
15585         ENDIF
15586         IF(PT.GT.PARP(93)) GOTO 190
15587       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
15588         PTA=SQRT(VINT(282+ISIDE))
15589         PTB=0D0
15590         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
15591           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
15592         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
15593           RPT1=PYR(0)
15594           RPT2=PYR(0)
15595           PTB=-PARP(99)*LOG(RPT1*RPT2)
15596         ENDIF
15597         IF(PTB.GT.PARP(100)) GOTO 190
15598         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
15599         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
15600       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
15601         IF(MSTP(93).LE.0) THEN
15602           PT=0D0
15603         ELSEIF(MSTP(93).EQ.1) THEN
15604           PT=PARP(99)*SQRT(-LOG(PYR(0)))
15605         ELSEIF(MSTP(93).EQ.2) THEN
15606           RPT1=PYR(0)
15607           RPT2=PYR(0)
15608           PT=-PARP(99)*LOG(RPT1*RPT2)
15609         ELSEIF(MSTP(93).EQ.3) THEN
15610           HA=PARP(99)**2
15611           HB=PARP(100)**2
15612           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
15613         ELSE
15614           HA=PARP(99)**2
15615           HB=PARP(100)**2
15616           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
15617           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
15618         ENDIF
15619         IF(PT.GT.PARP(100)) GOTO 190
15620       ELSE
15621         PT=0D0
15622       ENDIF
15623       VINT(156+ISIDE)=PT
15624       PHI=PARU(2)*PYR(0)
15625       P(IPU3,1)=PT*COS(PHI)
15626       P(IPU3,2)=PT*SIN(PHI)
15627       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
15628       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
15629       PCP=P(IPU3,4)+ABS(P(IPU3,3))
15630  
15631 C...Find one or two beam remnants.
15632       MINT(105)=MINT(102+ISIDE)
15633       MINT(109)=MINT(106+ISIDE)
15634       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
15635       IF(MINT(51).NE.0) THEN
15636         MINT(51)=0
15637         GOTO 180
15638       ENDIF
15639  
15640 C...Store first remnant parton, with colour info and kinematics.
15641       I=N+1
15642       K(I,1)=1
15643       K(I,2)=KFLSP
15644       K(I,3)=MINT(83)+ISIDE
15645       P(I,5)=PYMASS(K(I,2))
15646       KCOL=KCHG(PYCOMP(KFLSP),2)
15647       IF(KCOL.NE.0) THEN
15648         K(I,1)=3
15649         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
15650         K(I,KFLS+3)=MSTU(5)*IPU3
15651         K(IPU3,6-KFLS)=MSTU(5)*I
15652         ICOLR=I
15653       ENDIF
15654       IF(KFLCH.EQ.0) THEN
15655         P(I,1)=-P(IPU3,1)
15656         P(I,2)=-P(IPU3,2)
15657         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
15658         P(I,3)=-P(IPU3,3)
15659         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
15660         PRP=P(I,4)+ABS(P(I,3))
15661  
15662 C...When extra remnant parton or hadron: store extra remnant.
15663       ELSE
15664         I=I+1
15665         K(I,1)=1
15666         K(I,2)=KFLCH
15667         K(I,3)=MINT(83)+ISIDE
15668         P(I,5)=PYMASS(K(I,2))
15669         KCOL=KCHG(PYCOMP(KFLCH),2)
15670         IF(KCOL.NE.0) THEN
15671           K(I,1)=3
15672           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
15673           K(I,KFLS+3)=MSTU(5)*IPU3
15674           K(IPU3,6-KFLS)=MSTU(5)*I
15675           ICOLR=I
15676         ENDIF
15677  
15678 C...Relative transverse momentum when two remnants.
15679         LOOP=0
15680   200   LOOP=LOOP+1
15681         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
15682         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
15683         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
15684         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
15685         P(I,1)=-P(IPU3,1)-P(I-1,1)
15686         P(I,2)=-P(IPU3,2)-P(I-1,2)
15687         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
15688  
15689 C...Relative distribution of energy for particle into jet plus particle.
15690         IMB=1
15691         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
15692         IF(MSTP(94).LE.1) THEN
15693           IF(IMB.EQ.1) CHI=PYR(0)
15694           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
15695           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
15696         ELSEIF(MSTP(94).EQ.2) THEN
15697           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
15698           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
15699         ELSEIF(MSTP(94).EQ.3) THEN
15700           CALL PYZDIS(1,0,PMS(4),ZZ)
15701           CHI=ZZ
15702         ELSE
15703           CALL PYZDIS(1000,0,PMS(4),ZZ)
15704           CHI=ZZ
15705         ENDIF
15706  
15707 C...Construct total transverse mass; reject if too large.
15708         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
15709         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
15710         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
15711           IF(LOOP.LT.10) GOTO 200
15712           GOTO 180
15713         ENDIF
15714         VINT(158+ISIDE)=CHI
15715  
15716 C...Subdivide longitudinal momentum according to value selected above.
15717         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
15718         PW1=(1D0-CHI)*PRP
15719         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
15720         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
15721         PW2=CHI*PRP
15722         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
15723         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
15724       ENDIF
15725       N=I
15726  
15727 C...Boost current and remnant systems to correct frame.
15728       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
15729       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
15730       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
15731      &(2D0*VINT(1)*PCP)
15732       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
15733      &(2D0*VINT(1)*PRP)
15734       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
15735       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
15736       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
15737       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
15738  
15739 C...Let current quark shower; recoil but no showering by colour partner.
15740       QMAX=2D0*SQRT(VINT(309-ISIDE))
15741       MSTJ48=MSTJ(48)
15742       MSTJ(48)=1
15743       PARJ86=PARJ(86)
15744       PARJ(86)=0D0
15745       IF(MSTP(71).EQ.1) CALL PYSHOW(IPU3,ICOLR,QMAX)
15746       MSTJ(48)=MSTJ48
15747       PARJ(86)=PARJ86
15748  
15749       RETURN
15750       END
15751  
15752 C*********************************************************************
15753  
15754 C...PYDOCU
15755 C...Handles the documentation of the process in MSTI and PARI,
15756 C...and also computes cross-sections based on accumulated statistics.
15757  
15758       SUBROUTINE PYDOCU
15759  
15760 C...Double precision and integer declarations.
15761       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15762       IMPLICIT INTEGER(I-N)
15763       INTEGER PYK,PYCHGE,PYCOMP
15764 C...Commonblocks.
15765       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15766       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15767       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15768       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
15769       COMMON/PYINT1/MINT(400),VINT(400)
15770       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15771       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
15772       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
15773      &/PYINT5/
15774  
15775 C...Calculate Monte Carlo estimates of cross-sections.
15776       ISUB=MINT(1)
15777       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
15778       NGEN(0,3)=NGEN(0,3)+1
15779       XSEC(0,3)=0D0
15780       DO 100 I=1,500
15781         IF(I.EQ.96.OR.I.EQ.97) THEN
15782           XSEC(I,3)=0D0
15783         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
15784      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
15785           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
15786      &    DBLE(NGEN(96,2)))
15787         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
15788           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
15789      &    DBLE(NGEN(96,2)))
15790         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
15791           XSEC(I,3)=0D0
15792         ELSEIF(NGEN(I,2).EQ.0) THEN
15793           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
15794      &    DBLE(NGEN(0,2)))
15795         ELSE
15796           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
15797      &    DBLE(NGEN(I,2)))
15798         ENDIF
15799         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
15800   100 CONTINUE
15801  
15802 C...Rescale to known low-pT cross-section for standard QCD processes.
15803       IF(MSUB(95).EQ.1) THEN
15804         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
15805      &  XSEC(68,3)+XSEC(95,3)
15806         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
15807         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
15808           FAC=XSECW/XSECH
15809           XSEC(11,3)=FAC*XSEC(11,3)
15810           XSEC(12,3)=FAC*XSEC(12,3)
15811           XSEC(13,3)=FAC*XSEC(13,3)
15812           XSEC(28,3)=FAC*XSEC(28,3)
15813           XSEC(53,3)=FAC*XSEC(53,3)
15814           XSEC(68,3)=FAC*XSEC(68,3)
15815           XSEC(95,3)=FAC*XSEC(95,3)
15816           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
15817         ENDIF
15818       ENDIF
15819  
15820 C...Save information for gamma-p and gamma-gamma.
15821       IF(MINT(121).GT.1) THEN
15822         IGA=MINT(122)
15823         CALL PYSAVE(2,IGA)
15824         CALL PYSAVE(5,0)
15825       ENDIF
15826  
15827 C...Reset information on hard interaction.
15828       DO 110 J=1,200
15829         MSTI(J)=0
15830         PARI(J)=0D0
15831   110 CONTINUE
15832  
15833 C...Copy integer valued information from MINT into MSTI.
15834       DO 120 J=1,32
15835         MSTI(J)=MINT(J)
15836   120 CONTINUE
15837       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
15838  
15839 C...Store cross-section variables in PARI.
15840       PARI(1)=XSEC(0,3)
15841       PARI(2)=XSEC(0,3)/MINT(5)
15842       PARI(7)=VINT(97)
15843       PARI(9)=VINT(99)
15844       PARI(10)=VINT(100)
15845       VINT(98)=VINT(98)+VINT(100)
15846       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
15847  
15848 C...Store kinematics variables in PARI.
15849       PARI(11)=VINT(1)
15850       PARI(12)=VINT(2)
15851       IF(ISUB.NE.95) THEN
15852         DO 130 J=13,26
15853           PARI(J)=VINT(30+J)
15854   130   CONTINUE
15855         PARI(31)=VINT(141)
15856         PARI(32)=VINT(142)
15857         PARI(33)=VINT(41)
15858         PARI(34)=VINT(42)
15859         PARI(35)=PARI(33)-PARI(34)
15860         PARI(36)=VINT(21)
15861         PARI(37)=VINT(22)
15862         PARI(38)=VINT(26)
15863         PARI(39)=VINT(157)
15864         PARI(40)=VINT(158)
15865         PARI(41)=VINT(23)
15866         PARI(42)=2D0*VINT(47)/VINT(1)
15867       ENDIF
15868  
15869 C...Store information on scattered partons in PARI.
15870       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
15871         DO 140 IS=7,8
15872           I=MINT(IS)
15873           PARI(36+IS)=P(I,3)/VINT(1)
15874           PARI(38+IS)=P(I,4)/VINT(1)
15875           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
15876           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
15877      &    SQRT(PR),1D20)),P(I,3))
15878           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
15879           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
15880      &    SQRT(PR),1D20)),P(I,3))
15881           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
15882           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
15883           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
15884   140   CONTINUE
15885       ENDIF
15886  
15887 C...Store sum up transverse and longitudinal momenta.
15888       PARI(65)=2D0*PARI(17)
15889       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
15890         DO 150 I=MSTP(126)+1,N
15891           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
15892           PT=SQRT(P(I,1)**2+P(I,2)**2)
15893           PARI(69)=PARI(69)+PT
15894           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
15895           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
15896   150   CONTINUE
15897         PARI(67)=PARI(68)
15898         PARI(71)=VINT(151)
15899         PARI(72)=VINT(152)
15900         PARI(73)=VINT(151)
15901         PARI(74)=VINT(152)
15902       ELSE
15903         PARI(66)=PARI(65)
15904         PARI(69)=PARI(65)
15905       ENDIF
15906  
15907 C...Store various other pieces of information into PARI.
15908       PARI(61)=VINT(148)
15909       PARI(75)=VINT(155)
15910       PARI(76)=VINT(156)
15911       PARI(77)=VINT(159)
15912       PARI(78)=VINT(160)
15913       PARI(81)=VINT(138)
15914  
15915 C...Store information on lepton -> lepton + gamma in PYGAGA.
15916       MSTI(71)=MINT(141)
15917       MSTI(72)=MINT(142)
15918       PARI(101)=VINT(301)
15919       PARI(102)=VINT(302)
15920       DO 160 I=103,114
15921         PARI(I)=VINT(I+202)
15922   160 CONTINUE
15923  
15924 C...Set information for PYTABU.
15925       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
15926         MSTU(161)=MINT(21)
15927         MSTU(162)=0
15928       ELSEIF(ISET(ISUB).EQ.5) THEN
15929         MSTU(161)=MINT(23)
15930         MSTU(162)=0
15931       ELSE
15932         MSTU(161)=MINT(21)
15933         MSTU(162)=MINT(22)
15934       ENDIF
15935  
15936       RETURN
15937       END
15938  
15939 C*********************************************************************
15940  
15941 C...PYFRAM
15942 C...Performs transformations between different coordinate frames.
15943  
15944       SUBROUTINE PYFRAM(IFRAME)
15945  
15946 C...Double precision and integer declarations.
15947       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15948       IMPLICIT INTEGER(I-N)
15949       INTEGER PYK,PYCHGE,PYCOMP
15950 C...Commonblocks.
15951       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15952       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15953       COMMON/PYINT1/MINT(400),VINT(400)
15954       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
15955  
15956 C...Check that transformation can and should be done.
15957       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
15958      &MINT(91).EQ.1)) THEN
15959         IF(IFRAME.EQ.MINT(6)) RETURN
15960       ELSE
15961         WRITE(MSTU(11),5000) IFRAME,MINT(6)
15962         RETURN
15963       ENDIF
15964  
15965       IF(MINT(6).EQ.1) THEN
15966 C...Transform from fixed target or user specified frame to
15967 C...overall CM frame.
15968         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
15969         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
15970         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
15971       ELSEIF(MINT(6).EQ.3) THEN
15972 C...Transform from hadronic CM frame in DIS to overall CM frame.
15973         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
15974      &  -VINT(225))
15975       ENDIF
15976  
15977       IF(IFRAME.EQ.1) THEN
15978 C...Transform from overall CM frame to fixed target or user specified
15979 C...frame.
15980         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
15981       ELSEIF(IFRAME.EQ.3) THEN
15982 C...Transform from overall CM frame to hadronic CM frame in DIS.
15983         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
15984         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
15985         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
15986       ENDIF
15987  
15988 C...Set information about new frame.
15989       MINT(6)=IFRAME
15990       MSTI(6)=IFRAME
15991  
15992  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
15993      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
15994      &1X,I5)
15995  
15996       RETURN
15997       END
15998  
15999 C*********************************************************************
16000  
16001 C...PYWIDT
16002 C...Calculates full and partial widths of resonances.
16003  
16004       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
16005  
16006 C...Double precision and integer declarations.
16007       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16008       IMPLICIT INTEGER(I-N)
16009       INTEGER PYK,PYCHGE,PYCOMP
16010 C...Parameter statement to help give large particle numbers.
16011       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
16012      &KEXCIT=4000000,KDIMEN=5000000)
16013 C...Commonblocks.
16014       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16015       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16016       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16017       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
16018       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16019       COMMON/PYINT1/MINT(400),VINT(400)
16020       COMMON/PYINT4/MWID(500),WIDS(500,5)
16021       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
16022       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
16023      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
16024       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
16025       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
16026      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/
16027 C...Local arrays and saved variables.
16028       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
16029       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
16030      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
16031       SAVE MOFSV,WIDWSV,WID2SV
16032       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
16033  
16034 C...Compressed code and sign; mass.
16035       KFLA=IABS(KFLR)
16036       KFLS=ISIGN(1,KFLR)
16037       KC=PYCOMP(KFLA)
16038       SHR=SQRT(SH)
16039       PMR=PMAS(KC,1)
16040  
16041 C...Reset width information.
16042       DO 110 I=0,MDCY(KC,3)
16043         WDTP(I)=0D0
16044         DO 100 J=0,5
16045           WDTE(I,J)=0D0
16046   100   CONTINUE
16047   110 CONTINUE
16048  
16049 C...Allow for fudge factor to rescale resonance width.
16050       FUDGE=1D0
16051       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
16052      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
16053         IF(MSTP(110).EQ.KFLA) THEN
16054           FUDGE=PARP(110)
16055         ELSEIF(MSTP(110).EQ.-1) THEN
16056           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
16057         ELSEIF(MSTP(110).EQ.-2) THEN
16058           FUDGE=PARP(110)
16059         ENDIF
16060       ENDIF
16061  
16062 C...Not to be treated as a resonance: return.
16063       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
16064      &KFLA.NE.22) THEN
16065         WDTP(0)=1D0
16066         WDTE(0,0)=1D0
16067         MINT(61)=0
16068         MINT(62)=0
16069         MINT(63)=0
16070         RETURN
16071  
16072 C...Treatment as a resonance based on tabulated branching ratios.
16073       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
16074 C...Loop over possible decay channels; skip irrelevant ones.
16075         DO 120 I=1,MDCY(KC,3)
16076           IDC=I+MDCY(KC,2)-1
16077           IF(MDME(IDC,1).LT.0) GOTO 120
16078  
16079 C...Read out decay products and nominal masses.
16080           KFD1=KFDP(IDC,1)
16081           KFC1=PYCOMP(KFD1)
16082           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
16083           PM1=PMAS(KFC1,1)
16084           KFD2=KFDP(IDC,2)
16085           KFC2=PYCOMP(KFD2)
16086           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
16087           PM2=PMAS(KFC2,1)
16088           KFD3=KFDP(IDC,3)
16089           PM3=0D0
16090           IF(KFD3.NE.0) THEN
16091             KFC3=PYCOMP(KFD3)
16092             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
16093             PM3=PMAS(KFC3,1)
16094           ENDIF
16095  
16096 C...Naive partial width and alternative threshold factors.
16097           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
16098           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
16099      &    PM1+PM2+PM3.GE.SHR) THEN
16100              WDTP(I)=0D0
16101           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
16102             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
16103      &      4D0*PM1**2*PM2**2))/SH
16104           ELSEIF(MDME(IDC,2).EQ.52) THEN
16105             PMA=MAX(PM1,PM2,PM3)
16106             PMC=MIN(PM1,PM2,PM3)
16107             PMB=PM1+PM2+PM3-PMA-PMC
16108             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
16109             PMAN=PMA**2/SH
16110             PMBN=PMB**2/SH
16111             PMCN=PMC**2/SH
16112             PMBCN=PMBC**2/SH
16113             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
16114      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16115      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16116      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
16117      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
16118      &      ((1D0-PMBCN)*PMBCN*SH)
16119           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
16120             WDTP(I)=WDTP(I)*SQRT(
16121      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
16122      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
16123           ELSEIF(MDME(IDC,2).EQ.53) THEN
16124             PMA=MAX(PM1,PM2,PM3)
16125             PMC=MIN(PM1,PM2,PM3)
16126             PMB=PM1+PM2+PM3-PMA-PMC
16127             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
16128             PMAN=PMA**2/SH
16129             PMBN=PMB**2/SH
16130             PMCN=PMC**2/SH
16131             PMBCN=PMBC**2/SH
16132             FACACT=SQRT(MAX(0D0,
16133      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16134      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16135      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
16136      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
16137      &      ((1D0-PMBCN)*PMBCN*SH)
16138             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
16139             PMAN=PMA**2/PMR**2
16140             PMBN=PMB**2/PMR**2
16141             PMCN=PMC**2/PMR**2
16142             PMBCN=PMBC**2/PMR**2
16143             FACNOM=SQRT(MAX(0D0,
16144      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
16145      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
16146      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
16147      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
16148      &      ((1D0-PMBCN)*PMBCN*PMR**2)
16149             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
16150           ENDIF
16151           WDTP(I)=FUDGE*WDTP(I)
16152           WDTP(0)=WDTP(0)+WDTP(I)
16153  
16154 C...Calculate secondary width (at most two identical/opposite).
16155           WID2=1D0
16156           IF(MDME(IDC,1).GT.0) THEN
16157             IF(KFD2.EQ.KFD1) THEN
16158               IF(KCHG(KFC1,3).EQ.0) THEN
16159                 WID2=WIDS(KFC1,1)
16160               ELSEIF(KFD1.GT.0) THEN
16161                 WID2=WIDS(KFC1,4)
16162               ELSE
16163                 WID2=WIDS(KFC1,5)
16164               ENDIF
16165               IF(KFD3.GT.0) THEN
16166                 WID2=WID2*WIDS(KFC3,2)
16167               ELSEIF(KFD3.LT.0) THEN
16168                 WID2=WID2*WIDS(KFC3,3)
16169               ENDIF
16170             ELSEIF(KFD2.EQ.-KFD1) THEN
16171               WID2=WIDS(KFC1,1)
16172               IF(KFD3.GT.0) THEN
16173                 WID2=WID2*WIDS(KFC3,2)
16174               ELSEIF(KFD3.LT.0) THEN
16175                 WID2=WID2*WIDS(KFC3,3)
16176               ENDIF
16177             ELSEIF(KFD3.EQ.KFD1) THEN
16178               IF(KCHG(KFC1,3).EQ.0) THEN
16179                 WID2=WIDS(KFC1,1)
16180               ELSEIF(KFD1.GT.0) THEN
16181                 WID2=WIDS(KFC1,4)
16182               ELSE
16183                 WID2=WIDS(KFC1,5)
16184               ENDIF
16185               IF(KFD2.GT.0) THEN
16186                 WID2=WID2*WIDS(KFC2,2)
16187               ELSEIF(KFD2.LT.0) THEN
16188                 WID2=WID2*WIDS(KFC2,3)
16189               ENDIF
16190             ELSEIF(KFD3.EQ.-KFD1) THEN
16191               WID2=WIDS(KFC1,1)
16192               IF(KFD2.GT.0) THEN
16193                 WID2=WID2*WIDS(KFC2,2)
16194               ELSEIF(KFD2.LT.0) THEN
16195                 WID2=WID2*WIDS(KFC2,3)
16196               ENDIF
16197             ELSEIF(KFD3.EQ.KFD2) THEN
16198               IF(KCHG(KFC2,3).EQ.0) THEN
16199                 WID2=WIDS(KFC2,1)
16200               ELSEIF(KFD2.GT.0) THEN
16201                 WID2=WIDS(KFC2,4)
16202               ELSE
16203                 WID2=WIDS(KFC2,5)
16204               ENDIF
16205               IF(KFD1.GT.0) THEN
16206                 WID2=WID2*WIDS(KFC1,2)
16207               ELSEIF(KFD1.LT.0) THEN
16208                 WID2=WID2*WIDS(KFC1,3)
16209               ENDIF
16210             ELSEIF(KFD3.EQ.-KFD2) THEN
16211               WID2=WIDS(KFC2,1)
16212               IF(KFD1.GT.0) THEN
16213                 WID2=WID2*WIDS(KFC1,2)
16214               ELSEIF(KFD1.LT.0) THEN
16215                 WID2=WID2*WIDS(KFC1,3)
16216               ENDIF
16217             ELSE
16218               IF(KFD1.GT.0) THEN
16219                 WID2=WIDS(KFC1,2)
16220               ELSE
16221                 WID2=WIDS(KFC1,3)
16222               ENDIF
16223               IF(KFD2.GT.0) THEN
16224                 WID2=WID2*WIDS(KFC2,2)
16225               ELSE
16226                 WID2=WID2*WIDS(KFC2,3)
16227               ENDIF
16228               IF(KFD3.GT.0) THEN
16229                 WID2=WID2*WIDS(KFC3,2)
16230               ELSEIF(KFD3.LT.0) THEN
16231                 WID2=WID2*WIDS(KFC3,3)
16232               ENDIF
16233             ENDIF
16234  
16235 C...Store effective widths according to case.
16236             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16237             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16238             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16239             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16240           ENDIF
16241   120   CONTINUE
16242 C...Return.
16243         MINT(61)=0
16244         MINT(62)=0
16245         MINT(63)=0
16246         RETURN
16247       ENDIF
16248  
16249 C...Here begins detailed dynamical calculation of resonance widths.
16250 C...Shared treatment of Higgs states.
16251       KFHIGG=25
16252       IHIGG=1
16253       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
16254         KFHIGG=KFLA
16255         IHIGG=KFLA-33
16256       ENDIF
16257  
16258 C...Common electroweak and strong constants.
16259       XW=PARU(102)
16260       XWV=XW
16261       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
16262       XW1=1D0-XW
16263       AEM=PYALEM(SH)
16264       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
16265       AS=PYALPS(SH)
16266       RADC=1D0+AS/PARU(1)
16267  
16268       IF(KFLA.EQ.6) THEN
16269 C...t quark.
16270         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16271         RADCT=1D0-2.5D0*AS/PARU(1)
16272         DO 140 I=1,MDCY(KC,3)
16273           IDC=I+MDCY(KC,2)-1
16274           IF(MDME(IDC,1).LT.0) GOTO 140
16275           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16276           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16277           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
16278           WID2=1D0
16279           IF(I.GE.4.AND.I.LE.7) THEN
16280 C...t -> W + q; including approximate QCD correction factor.
16281             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
16282      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16283      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16284             IF(KFLR.GT.0) THEN
16285               WID2=WIDS(24,2)
16286               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
16287             ELSE
16288               WID2=WIDS(24,3)
16289               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
16290             ENDIF
16291           ELSEIF(I.EQ.9) THEN
16292 C...t -> H + b.
16293             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16294      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16295             WID2=WIDS(37,2)
16296             IF(KFLR.LT.0) WID2=WIDS(37,3)
16297 CMRENNA++
16298           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
16299 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
16300             BETA=ATAN(RMSS(5))
16301             SINB=SIN(BETA)
16302             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
16303             ET=KCHG(6,1)/3D0
16304             T3L=SIGN(0.5D0,ET)
16305             KFC1=PYCOMP(KFDP(IDC,1))
16306             KFC2=PYCOMP(KFDP(IDC,2))
16307             PMNCHI=PMAS(KFC1,1)
16308             PMSTOP=PMAS(KFC2,1)
16309             IF(SHR.GT.PMNCHI+PMSTOP) THEN
16310               IZ=I-9
16311               DO 130 IK=1,4
16312                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
16313   130         CONTINUE
16314               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
16315               AR=-ET*ZMIXC(IZ,1)*TANW
16316               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
16317               BR=AL
16318               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
16319               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
16320               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
16321      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
16322               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
16323      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
16324      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
16325               IF(KFLR.GT.0) THEN
16326                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
16327               ELSE
16328                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
16329               ENDIF
16330             ENDIF
16331           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
16332 C...t -> ~g + ~t
16333             KFC1=PYCOMP(KFDP(IDC,1))
16334             KFC2=PYCOMP(KFDP(IDC,2))
16335             PMNCHI=PMAS(KFC1,1)
16336             PMSTOP=PMAS(KFC2,1)
16337             IF(SHR.GT.PMNCHI+PMSTOP) THEN
16338               RL=SFMIX(6,1)
16339               RR=-SFMIX(6,2)
16340               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
16341      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
16342               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
16343      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
16344               IF(KFLR.GT.0) THEN
16345                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
16346               ELSE
16347                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
16348               ENDIF
16349             ENDIF
16350           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
16351 C...t -> ~gravitino + ~t
16352             XMP2=RMSS(29)**2
16353             KFC1=PYCOMP(KFDP(IDC,1))
16354             XMGR2=PMAS(KFC1,1)**2
16355             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
16356             KFC2=PYCOMP(KFDP(IDC,2))
16357             WID2=WIDS(KFC2,2)
16358             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
16359 CMRENNA--
16360           ENDIF
16361           WDTP(I)=FUDGE*WDTP(I)
16362           WDTP(0)=WDTP(0)+WDTP(I)
16363           IF(MDME(IDC,1).GT.0) THEN
16364             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16365             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16366             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16367             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16368           ENDIF
16369   140   CONTINUE
16370  
16371       ELSEIF(KFLA.EQ.7) THEN
16372 C...b' quark.
16373         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16374         DO 150 I=1,MDCY(KC,3)
16375           IDC=I+MDCY(KC,2)-1
16376           IF(MDME(IDC,1).LT.0) GOTO 150
16377           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16378           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16379           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
16380           WID2=1D0
16381           IF(I.GE.4.AND.I.LE.7) THEN
16382 C...b' -> W + q.
16383             WDTP(I)=FAC*VCKM(I-3,4)*
16384      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16385      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16386             IF(KFLR.GT.0) THEN
16387               WID2=WIDS(24,3)
16388               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
16389               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
16390             ELSE
16391               WID2=WIDS(24,2)
16392               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
16393               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
16394             ENDIF
16395             WID2=WIDS(24,3)
16396             IF(KFLR.LT.0) WID2=WIDS(24,2)
16397           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
16398 C...b' -> H + q.
16399             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16400      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
16401             IF(KFLR.GT.0) THEN
16402               WID2=WIDS(37,3)
16403               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
16404             ELSE
16405               WID2=WIDS(37,2)
16406               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
16407             ENDIF
16408           ENDIF
16409           WDTP(I)=FUDGE*WDTP(I)
16410           WDTP(0)=WDTP(0)+WDTP(I)
16411           IF(MDME(IDC,1).GT.0) THEN
16412             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16413             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16414             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16415             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16416           ENDIF
16417   150   CONTINUE
16418  
16419       ELSEIF(KFLA.EQ.8) THEN
16420 C...t' quark.
16421         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16422         DO 160 I=1,MDCY(KC,3)
16423           IDC=I+MDCY(KC,2)-1
16424           IF(MDME(IDC,1).LT.0) GOTO 160
16425           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16426           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16427           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
16428           WID2=1D0
16429           IF(I.GE.4.AND.I.LE.7) THEN
16430 C...t' -> W + q.
16431             WDTP(I)=FAC*VCKM(4,I-3)*
16432      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16433      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16434             IF(KFLR.GT.0) THEN
16435               WID2=WIDS(24,2)
16436               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
16437             ELSE
16438               WID2=WIDS(24,3)
16439               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
16440             ENDIF
16441           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
16442 C...t' -> H + q.
16443             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16444      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16445             IF(KFLR.GT.0) THEN
16446               WID2=WIDS(37,2)
16447               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
16448             ELSE
16449               WID2=WIDS(37,3)
16450               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
16451             ENDIF
16452           ENDIF
16453           WDTP(I)=FUDGE*WDTP(I)
16454           WDTP(0)=WDTP(0)+WDTP(I)
16455           IF(MDME(IDC,1).GT.0) THEN
16456             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16457             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16458             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16459             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16460           ENDIF
16461   160   CONTINUE
16462  
16463       ELSEIF(KFLA.EQ.17) THEN
16464 C...tau' lepton.
16465         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16466         DO 170 I=1,MDCY(KC,3)
16467           IDC=I+MDCY(KC,2)-1
16468           IF(MDME(IDC,1).LT.0) GOTO 170
16469           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16470           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16471           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
16472           WID2=1D0
16473           IF(I.EQ.3) THEN
16474 C...tau' -> W + nu'_tau.
16475             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16476      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16477             IF(KFLR.GT.0) THEN
16478               WID2=WIDS(24,3)
16479               WID2=WID2*WIDS(18,2)
16480             ELSE
16481               WID2=WIDS(24,2)
16482               WID2=WID2*WIDS(18,3)
16483             ENDIF
16484           ELSEIF(I.EQ.5) THEN
16485 C...tau' -> H + nu'_tau.
16486             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16487      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
16488             IF(KFLR.GT.0) THEN
16489               WID2=WIDS(37,3)
16490               WID2=WID2*WIDS(18,2)
16491             ELSE
16492               WID2=WIDS(37,2)
16493               WID2=WID2*WIDS(18,3)
16494             ENDIF
16495           ENDIF
16496           WDTP(I)=FUDGE*WDTP(I)
16497           WDTP(0)=WDTP(0)+WDTP(I)
16498           IF(MDME(IDC,1).GT.0) THEN
16499             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16500             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16501             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16502             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16503           ENDIF
16504   170   CONTINUE
16505  
16506       ELSEIF(KFLA.EQ.18) THEN
16507 C...nu'_tau neutrino.
16508         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
16509         DO 180 I=1,MDCY(KC,3)
16510           IDC=I+MDCY(KC,2)-1
16511           IF(MDME(IDC,1).LT.0) GOTO 180
16512           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
16513           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
16514           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
16515           WID2=1D0
16516           IF(I.EQ.2) THEN
16517 C...nu'_tau -> W + tau'.
16518             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16519      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
16520             IF(KFLR.GT.0) THEN
16521               WID2=WIDS(24,2)
16522               WID2=WID2*WIDS(17,2)
16523             ELSE
16524               WID2=WIDS(24,3)
16525               WID2=WID2*WIDS(17,3)
16526             ENDIF
16527           ELSEIF(I.EQ.3) THEN
16528 C...nu'_tau -> H + tau'.
16529             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
16530      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
16531             IF(KFLR.GT.0) THEN
16532               WID2=WIDS(37,2)
16533               WID2=WID2*WIDS(17,2)
16534             ELSE
16535               WID2=WIDS(37,3)
16536               WID2=WID2*WIDS(17,3)
16537             ENDIF
16538           ENDIF
16539           WDTP(I)=FUDGE*WDTP(I)
16540           WDTP(0)=WDTP(0)+WDTP(I)
16541           IF(MDME(IDC,1).GT.0) THEN
16542             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16543             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16544             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16545             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16546           ENDIF
16547   180   CONTINUE
16548  
16549       ELSEIF(KFLA.EQ.21) THEN
16550 C...QCD:
16551 C***Note that widths are not given in dimensional quantities here.
16552         DO 190 I=1,MDCY(KC,3)
16553           IDC=I+MDCY(KC,2)-1
16554           IF(MDME(IDC,1).LT.0) GOTO 190
16555           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16556           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16557           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
16558           WID2=1D0
16559           IF(I.LE.8) THEN
16560 C...QCD -> q + qbar
16561             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16562             IF(I.EQ.6) WID2=WIDS(6,1)
16563             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16564           ENDIF
16565           WDTP(I)=FUDGE*WDTP(I)
16566           WDTP(0)=WDTP(0)+WDTP(I)
16567           IF(MDME(IDC,1).GT.0) THEN
16568             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16569             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16570             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16571             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16572           ENDIF
16573   190   CONTINUE
16574  
16575       ELSEIF(KFLA.EQ.22) THEN
16576 C...QED photon.
16577 C***Note that widths are not given in dimensional quantities here.
16578         DO 200 I=1,MDCY(KC,3)
16579           IDC=I+MDCY(KC,2)-1
16580           IF(MDME(IDC,1).LT.0) GOTO 200
16581           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16582           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16583           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
16584           WID2=1D0
16585           IF(I.LE.8) THEN
16586 C...QED -> q + qbar.
16587             EF=KCHG(I,1)/3D0
16588             FCOF=3D0*RADC
16589             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
16590             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16591             IF(I.EQ.6) WID2=WIDS(6,1)
16592             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16593           ELSEIF(I.LE.12) THEN
16594 C...QED -> l+ + l-.
16595             EF=KCHG(9+2*(I-8),1)/3D0
16596             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
16597             IF(I.EQ.12) WID2=WIDS(17,1)
16598           ENDIF
16599           WDTP(I)=FUDGE*WDTP(I)
16600           WDTP(0)=WDTP(0)+WDTP(I)
16601           IF(MDME(IDC,1).GT.0) THEN
16602             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16603             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16604             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16605             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16606           ENDIF
16607   200   CONTINUE
16608  
16609       ELSEIF(KFLA.EQ.23) THEN
16610 C...Z0:
16611         ICASE=1
16612         XWC=1D0/(16D0*XW*XW1)
16613         FAC=(AEM*XWC/3D0)*SHR
16614   210   CONTINUE
16615         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
16616           VINT(111)=0D0
16617           VINT(112)=0D0
16618           VINT(114)=0D0
16619         ENDIF
16620         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
16621           KFI=IABS(MINT(15))
16622           IF(KFI.GT.20) KFI=IABS(MINT(16))
16623           EI=KCHG(KFI,1)/3D0
16624           AI=SIGN(1D0,EI)
16625           VI=AI-4D0*EI*XWV
16626           SQMZ=PMAS(23,1)**2
16627           HZ=SHR*WDTP(0)
16628           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
16629           IF(MSTP(43).EQ.3) VINT(112)=
16630      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
16631           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
16632      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
16633         ENDIF
16634         DO 220 I=1,MDCY(KC,3)
16635           IDC=I+MDCY(KC,2)-1
16636           IF(MDME(IDC,1).LT.0) GOTO 220
16637           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16638           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16639           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
16640           WID2=1D0
16641           IF(I.LE.8) THEN
16642 C...Z0 -> q + qbar
16643             EF=KCHG(I,1)/3D0
16644             AF=SIGN(1D0,EF+0.1D0)
16645             VF=AF-4D0*EF*XWV
16646             FCOF=3D0*RADC
16647             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
16648             IF(I.EQ.6) WID2=WIDS(6,1)
16649             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16650           ELSEIF(I.LE.16) THEN
16651 C...Z0 -> l+ + l-, nu + nubar
16652             EF=KCHG(I+2,1)/3D0
16653             AF=SIGN(1D0,EF+0.1D0)
16654             VF=AF-4D0*EF*XWV
16655             FCOF=1D0
16656             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
16657           ENDIF
16658           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
16659           IF(ICASE.EQ.1) THEN
16660             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
16661      &      BE34
16662           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
16663             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
16664      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
16665      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
16666           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
16667             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
16668             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
16669             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
16670           ENDIF
16671           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
16672           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
16673           IF(MDME(IDC,1).GT.0) THEN
16674             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
16675      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
16676               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16677               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
16678      &        WDTE(I,MDME(IDC,1))
16679               WDTE(I,0)=WDTE(I,MDME(IDC,1))
16680               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16681             ENDIF
16682             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
16683               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
16684      &        VINT(111)+FGGF*WID2
16685               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
16686               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
16687      &        VINT(114)+FZZF*WID2
16688             ENDIF
16689           ENDIF
16690   220   CONTINUE
16691         IF(MINT(61).GE.1) ICASE=3-ICASE
16692         IF(ICASE.EQ.2) GOTO 210
16693  
16694       ELSEIF(KFLA.EQ.24) THEN
16695 C...W+/-:
16696         FAC=(AEM/(24D0*XW))*SHR
16697         DO 230 I=1,MDCY(KC,3)
16698           IDC=I+MDCY(KC,2)-1
16699           IF(MDME(IDC,1).LT.0) GOTO 230
16700           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
16701           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
16702           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
16703           WID2=1D0
16704           IF(I.LE.16) THEN
16705 C...W+/- -> q + qbar'
16706             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
16707             IF(KFLR.GT.0) THEN
16708               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
16709               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
16710               IF(I.GE.13) WID2=WID2*WIDS(7,3)
16711             ELSE
16712               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
16713               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
16714               IF(I.GE.13) WID2=WID2*WIDS(7,2)
16715             ENDIF
16716           ELSEIF(I.LE.20) THEN
16717 C...W+/- -> l+/- + nu
16718             FCOF=1D0
16719             IF(KFLR.GT.0) THEN
16720               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
16721             ELSE
16722               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
16723             ENDIF
16724           ENDIF
16725           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
16726      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
16727           WDTP(I)=FUDGE*WDTP(I)
16728           WDTP(0)=WDTP(0)+WDTP(I)
16729           IF(MDME(IDC,1).GT.0) THEN
16730             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
16731             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
16732             WDTE(I,0)=WDTE(I,MDME(IDC,1))
16733             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
16734           ENDIF
16735   230   CONTINUE
16736  
16737       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
16738 C...h0 (or H0, or A0):
16739         SHFS=SH
16740         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
16741         DO 270 I=1,MDCY(KFHIGG,3)
16742           IDC=I+MDCY(KFHIGG,2)-1
16743           IF(MDME(IDC,1).LT.0) GOTO 270
16744           KFC1=PYCOMP(KFDP(IDC,1))
16745           KFC2=PYCOMP(KFDP(IDC,2))
16746           RM1=PMAS(KFC1,1)**2/SH
16747           RM2=PMAS(KFC2,1)**2/SH
16748           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
16749      &    GOTO 270
16750           WID2=1D0
16751  
16752           IF(I.LE.8) THEN
16753 C...h0 -> q + qbar
16754             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
16755      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
16756 C...A0 behaves like beta, ho and H0 like beta**3.
16757             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
16758             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16759               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
16760               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
16761               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
16762                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
16763                 IF(IHIGG.NE.3) THEN
16764                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
16765      &            PARU(151+10*IHIGG))**2
16766                 ENDIF
16767               ENDIF
16768             ENDIF
16769             IF(I.EQ.6) WID2=WIDS(6,1)
16770             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
16771           ELSEIF(I.LE.12) THEN
16772 C...h0 -> l+ + l-
16773             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
16774 C...A0 behaves like beta, ho and H0 like beta**3.
16775             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
16776             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
16777      &      PARU(153+10*IHIGG)**2
16778             IF(I.EQ.12) WID2=WIDS(17,1)
16779  
16780           ELSEIF(I.EQ.13) THEN
16781 C...h0 -> g + g; quark loop contribution only
16782             ETARE=0D0
16783             ETAIM=0D0
16784             DO 240 J=1,2*MSTP(1)
16785               EPS=(2D0*PMAS(J,1))**2/SH
16786 C...Loop integral; function of eps=4m^2/shat; different for A0.
16787               IF(EPS.LE.1D0) THEN
16788                 IF(EPS.GT.1D-4) THEN
16789                   ROOT=SQRT(1D0-EPS)
16790                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16791                 ELSE
16792                   RLN=LOG(4D0/EPS-2D0)
16793                 ENDIF
16794                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16795                 PHIIM=0.5D0*PARU(1)*RLN
16796               ELSE
16797                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16798                 PHIIM=0D0
16799               ENDIF
16800               IF(IHIGG.LE.2) THEN
16801                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
16802                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
16803               ELSE
16804                 ETAREJ=-0.5D0*EPS*PHIRE
16805                 ETAIMJ=-0.5D0*EPS*PHIIM
16806               ENDIF
16807 C...Couplings (=1 for standard model Higgs).
16808               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16809                 IF(MOD(J,2).EQ.1) THEN
16810                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
16811                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
16812                 ELSE
16813                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
16814                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
16815                 ENDIF
16816               ENDIF
16817               ETARE=ETARE+ETAREJ
16818               ETAIM=ETAIM+ETAIMJ
16819   240       CONTINUE
16820             ETA2=ETARE**2+ETAIM**2
16821             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
16822  
16823           ELSEIF(I.EQ.14) THEN
16824 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
16825             ETARE=0D0
16826             ETAIM=0D0
16827             JMAX=3*MSTP(1)+1
16828             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
16829             DO 250 J=1,JMAX
16830               IF(J.LE.2*MSTP(1)) THEN
16831                 EJ=KCHG(J,1)/3D0
16832                 EPS=(2D0*PMAS(J,1))**2/SH
16833               ELSEIF(J.LE.3*MSTP(1)) THEN
16834                 JL=2*(J-2*MSTP(1))-1
16835                 EJ=KCHG(10+JL,1)/3D0
16836                 EPS=(2D0*PMAS(10+JL,1))**2/SH
16837               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16838                 EPS=(2D0*PMAS(24,1))**2/SH
16839               ELSE
16840                 EPS=(2D0*PMAS(37,1))**2/SH
16841               ENDIF
16842 C...Loop integral; function of eps=4m^2/shat.
16843               IF(EPS.LE.1D0) THEN
16844                 IF(EPS.GT.1D-4) THEN
16845                   ROOT=SQRT(1D0-EPS)
16846                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16847                 ELSE
16848                   RLN=LOG(4D0/EPS-2D0)
16849                 ENDIF
16850                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16851                 PHIIM=0.5D0*PARU(1)*RLN
16852               ELSE
16853                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16854                 PHIIM=0D0
16855               ENDIF
16856               IF(J.LE.3*MSTP(1)) THEN
16857 C...Fermion loops: loop integral different for A0; charges.
16858                 IF(IHIGG.LE.2) THEN
16859                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
16860                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
16861                 ELSE
16862                   PHIPRE=-0.5D0*EPS*PHIRE
16863                   PHIPIM=-0.5D0*EPS*PHIIM
16864                 ENDIF
16865                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
16866                   EJC=3D0*EJ**2
16867                   EJH=PARU(151+10*IHIGG)
16868                 ELSEIF(J.LE.2*MSTP(1)) THEN
16869                   EJC=3D0*EJ**2
16870                   EJH=PARU(152+10*IHIGG)
16871                 ELSE
16872                   EJC=EJ**2
16873                   EJH=PARU(153+10*IHIGG)
16874                 ENDIF
16875                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
16876                 ETAREJ=EJC*EJH*PHIPRE
16877                 ETAIMJ=EJC*EJH*PHIPIM
16878               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16879 C...W loops: loop integral and charges.
16880                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
16881                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
16882                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16883                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
16884                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
16885                 ENDIF
16886               ELSE
16887 C...Charged H loops: loop integral and charges.
16888                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
16889      &          PARU(158+10*IHIGG+2*(IHIGG/3))
16890                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
16891                 ETAIMJ=-EPS**2*PHIIM*FACHHH
16892               ENDIF
16893               ETARE=ETARE+ETAREJ
16894               ETAIM=ETAIM+ETAIMJ
16895   250       CONTINUE
16896             ETA2=ETARE**2+ETAIM**2
16897             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
16898  
16899           ELSEIF(I.EQ.15) THEN
16900 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
16901             ETARE=0D0
16902             ETAIM=0D0
16903             JMAX=3*MSTP(1)+1
16904             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
16905             DO 260 J=1,JMAX
16906               IF(J.LE.2*MSTP(1)) THEN
16907                 EJ=KCHG(J,1)/3D0
16908                 AJ=SIGN(1D0,EJ+0.1D0)
16909                 VJ=AJ-4D0*EJ*XWV
16910                 EPS=(2D0*PMAS(J,1))**2/SH
16911                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
16912               ELSEIF(J.LE.3*MSTP(1)) THEN
16913                 JL=2*(J-2*MSTP(1))-1
16914                 EJ=KCHG(10+JL,1)/3D0
16915                 AJ=SIGN(1D0,EJ+0.1D0)
16916                 VJ=AJ-4D0*EJ*XWV
16917                 EPS=(2D0*PMAS(10+JL,1))**2/SH
16918                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
16919               ELSE
16920                 EPS=(2D0*PMAS(24,1))**2/SH
16921                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
16922               ENDIF
16923 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
16924               IF(EPS.LE.1D0) THEN
16925                 ROOT=SQRT(1D0-EPS)
16926                 IF(EPS.GT.1D-4) THEN
16927                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16928                 ELSE
16929                   RLN=LOG(4D0/EPS-2D0)
16930                 ENDIF
16931                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
16932                 PHIIM=0.5D0*PARU(1)*RLN
16933                 PSIRE=0.5D0*ROOT*RLN
16934                 PSIIM=-0.5D0*ROOT*PARU(1)
16935               ELSE
16936                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
16937                 PHIIM=0D0
16938                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
16939                 PSIIM=0D0
16940               ENDIF
16941               IF(EPSP.LE.1D0) THEN
16942                 ROOT=SQRT(1D0-EPSP)
16943                 IF(EPSP.GT.1D-4) THEN
16944                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
16945                 ELSE
16946                   RLN=LOG(4D0/EPSP-2D0)
16947                 ENDIF
16948                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
16949                 PHIIMP=0.5D0*PARU(1)*RLN
16950                 PSIREP=0.5D0*ROOT*RLN
16951                 PSIIMP=-0.5D0*ROOT*PARU(1)
16952               ELSE
16953                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
16954                 PHIIMP=0D0
16955                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
16956                 PSIIMP=0D0
16957               ENDIF
16958               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
16959      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
16960               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
16961      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
16962               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
16963               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
16964               IF(J.LE.3*MSTP(1)) THEN
16965 C...Fermion loops: loop integral different for A0; charges.
16966                 IF(IHIGG.EQ.3) FXYRE=0D0
16967                 IF(IHIGG.EQ.3) FXYIM=0D0
16968                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
16969                   EJC=-3D0*EJ*VJ
16970                   EJH=PARU(151+10*IHIGG)
16971                 ELSEIF(J.LE.2*MSTP(1)) THEN
16972                   EJC=-3D0*EJ*VJ
16973                   EJH=PARU(152+10*IHIGG)
16974                 ELSE
16975                   EJC=-EJ*VJ
16976                   EJH=PARU(153+10*IHIGG)
16977                 ENDIF
16978                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
16979                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
16980                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
16981               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
16982 C...W loops: loop integral and charges.
16983                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
16984                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
16985                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
16986                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
16987                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
16988                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
16989                 ENDIF
16990               ELSE
16991 C...Charged H loops: loop integral and charges.
16992                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
16993      &          PARU(158+10*IHIGG+2*(IHIGG/3))
16994                 ETAREJ=FACHHH*FXYRE
16995                 ETAIMJ=FACHHH*FXYIM
16996               ENDIF
16997               ETARE=ETARE+ETAREJ
16998               ETAIM=ETAIM+ETAIMJ
16999   260       CONTINUE
17000             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
17001             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
17002             WID2=WIDS(23,2)
17003  
17004           ELSEIF(I.LE.17) THEN
17005 C...h0 -> Z0 + Z0, W+ + W-
17006             PM1=PMAS(IABS(KFDP(IDC,1)),1)
17007             PG1=PMAS(IABS(KFDP(IDC,1)),2)
17008             IF(MINT(62).GE.1) THEN
17009               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
17010      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
17011      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
17012                 MOFSV(IHIGG,I-15)=0
17013                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
17014      &          1D0-4D0*RM1))
17015                 WID2=1D0
17016               ELSE
17017                 MOFSV(IHIGG,I-15)=1
17018                 RMAS=SQRT(MAX(0D0,SH))
17019                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
17020      &          WID2)
17021                 WIDWSV(IHIGG,I-15)=WIDW
17022                 WID2SV(IHIGG,I-15)=WID2
17023               ENDIF
17024             ELSE
17025               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
17026                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
17027      &          1D0-4D0*RM1))
17028                 WID2=1D0
17029               ELSE
17030                 WIDW=WIDWSV(IHIGG,I-15)
17031                 WID2=WID2SV(IHIGG,I-15)
17032               ENDIF
17033             ENDIF
17034             WDTP(I)=FAC*WIDW/(2D0*(18-I))
17035             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
17036             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
17037      &      PARU(138+I+10*IHIGG)**2
17038             WID2=WID2*WIDS(7+I,1)
17039  
17040           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
17041 C...H0 -> Z0 + h0, A0-> Z0 + h0
17042             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
17043      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17044             IF(IHIGG.EQ.2) THEN
17045              WDTP(I)=WDTP(I)*PARU(179)**2
17046             ELSEIF(IHIGG.EQ.3) THEN
17047              WDTP(I)=WDTP(I)*PARU(186)**2
17048             ENDIF
17049             WID2=WIDS(23,2)*WIDS(25,2)
17050  
17051           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
17052 C...H0 -> h0 + h0, A0-> h0 + h0
17053             WDTP(I)=FAC*0.25D0*
17054      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17055             IF(IHIGG.EQ.2) THEN
17056              WDTP(I)=WDTP(I)*PARU(176)**2
17057             ELSEIF(IHIGG.EQ.3) THEN
17058              WDTP(I)=WDTP(I)*PARU(169)**2
17059             ENDIF
17060             WID2=WIDS(25,1)
17061           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
17062 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
17063             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
17064      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17065      &      *PARU(195+IHIGG)**2
17066             IF(I.EQ.20) THEN
17067               WID2=WIDS(24,2)*WIDS(37,3)
17068             ELSEIF(I.EQ.21) THEN
17069               WID2=WIDS(24,3)*WIDS(37,2)
17070             ENDIF
17071  
17072           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
17073 C...H0 -> Z0 + A0.
17074             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
17075      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*0.0D0
17076             WID2=WIDS(36,2)*WIDS(23,2)
17077  
17078           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
17079 C...H0 -> h0 + A0.
17080             WDTP(I)=FAC*0.5D0*PARU(180)**2*
17081      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17082             WID2=WIDS(25,2)*WIDS(36,2)
17083  
17084           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
17085 C...H0 -> A0 + A0
17086             WDTP(I)=FAC*0.25D0*PARU(177)**2*
17087      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
17088             WID2=WIDS(36,1)
17089  
17090 CMRENNA++
17091           ELSE
17092 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
17093             RM10=RM1*SH/PMR**2
17094             RM20=RM2*SH/PMR**2
17095             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
17096             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
17097             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
17098               WFAC=0D0
17099             ELSE
17100               WFAC=WFAC/WFAC0
17101             ENDIF
17102             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
17103 CMRENNA--
17104             IF(KFC2.EQ.KFC1) THEN
17105               WID2=WIDS(KFC1,1)
17106             ELSE
17107               KSGN1=2
17108               IF(KFDP(IDC,1).LT.0) KSGN1=3
17109               KSGN2=2
17110               IF(KFDP(IDC,2).LT.0) KSGN2=3
17111               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
17112             ENDIF
17113           ENDIF
17114           WDTP(I)=FUDGE*WDTP(I)
17115           WDTP(0)=WDTP(0)+WDTP(I)
17116           IF(MDME(IDC,1).GT.0) THEN
17117             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17118             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17119             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17120             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17121           ENDIF
17122   270   CONTINUE
17123  
17124       ELSEIF(KFLA.EQ.32) THEN
17125 C...Z'0:
17126         ICASE=1
17127         XWC=1D0/(16D0*XW*XW1)
17128         FAC=(AEM*XWC/3D0)*SHR
17129         VINT(117)=0D0
17130   280   CONTINUE
17131         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
17132           VINT(111)=0D0
17133           VINT(112)=0D0
17134           VINT(113)=0D0
17135           VINT(114)=0D0
17136           VINT(115)=0D0
17137           VINT(116)=0D0
17138         ENDIF
17139         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17140           KFAI=IABS(MINT(15))
17141           EI=KCHG(KFAI,1)/3D0
17142           AI=SIGN(1D0,EI+0.1D0)
17143           VI=AI-4D0*EI*XWV
17144           KFAIC=1
17145           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
17146           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
17147           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
17148           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
17149             VPI=PARU(119+2*KFAIC)
17150             API=PARU(120+2*KFAIC)
17151           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
17152             VPI=PARJ(178+2*KFAIC)
17153             API=PARJ(179+2*KFAIC)
17154           ELSE
17155             VPI=PARJ(186+2*KFAIC)
17156             API=PARJ(187+2*KFAIC)
17157           ENDIF
17158           SQMZ=PMAS(23,1)**2
17159           HZ=SHR*VINT(117)
17160           SQMZP=PMAS(32,1)**2
17161           HZP=SHR*WDTP(0)
17162           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
17163      &    MSTP(44).EQ.7) VINT(111)=1D0
17164           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
17165      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
17166           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
17167      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
17168           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
17169      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
17170           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
17171      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
17172      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
17173           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
17174      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
17175         ENDIF
17176         DO 290 I=1,MDCY(KC,3)
17177           IDC=I+MDCY(KC,2)-1
17178           IF(MDME(IDC,1).LT.0) GOTO 290
17179           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17180           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17181           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
17182           WID2=1D0
17183           IF(I.LE.16) THEN
17184             IF(I.LE.8) THEN
17185 C...Z'0 -> q + qbar
17186               EF=KCHG(I,1)/3D0
17187               AF=SIGN(1D0,EF+0.1D0)
17188               VF=AF-4D0*EF*XWV
17189               IF(I.LE.2) THEN
17190                 VPF=PARU(123-2*MOD(I,2))
17191                 APF=PARU(124-2*MOD(I,2))
17192               ELSEIF(I.LE.4) THEN
17193                 VPF=PARJ(182-2*MOD(I,2))
17194                 APF=PARJ(183-2*MOD(I,2))
17195               ELSE
17196                 VPF=PARJ(190-2*MOD(I,2))
17197                 APF=PARJ(191-2*MOD(I,2))
17198               ENDIF
17199               FCOF=3D0*RADC
17200               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
17201      &        PYHFTH(SH,SH*RM1,1D0)
17202               IF(I.EQ.6) WID2=WIDS(6,1)
17203               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
17204             ELSEIF(I.LE.16) THEN
17205 C...Z'0 -> l+ + l-, nu + nubar
17206               EF=KCHG(I+2,1)/3D0
17207               AF=SIGN(1D0,EF+0.1D0)
17208               VF=AF-4D0*EF*XWV
17209               IF(I.LE.10) THEN
17210                 VPF=PARU(127-2*MOD(I,2))
17211                 APF=PARU(128-2*MOD(I,2))
17212               ELSEIF(I.LE.12) THEN
17213                 VPF=PARJ(186-2*MOD(I,2))
17214                 APF=PARJ(187-2*MOD(I,2))
17215               ELSE
17216                 VPF=PARJ(194-2*MOD(I,2))
17217                 APF=PARJ(195-2*MOD(I,2))
17218               ENDIF
17219               FCOF=1D0
17220               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
17221             ENDIF
17222             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
17223             IF(ICASE.EQ.1) THEN
17224               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
17225               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
17226      &        APF**2*(1D0-4D0*RM1))*BE34
17227             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17228               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
17229      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
17230      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
17231      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
17232      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
17233      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
17234             ELSEIF(MINT(61).EQ.2) THEN
17235               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
17236               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
17237               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
17238               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
17239               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
17240      &        BE34
17241               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
17242      &        BE34
17243             ENDIF
17244           ELSEIF(I.EQ.17) THEN
17245 C...Z'0 -> W+ + W-
17246             WDTPZP=PARU(129)**2*XW1**2*
17247      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17248      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17249             IF(ICASE.EQ.1) THEN
17250               WDTPZ=0D0
17251               WDTP(I)=FAC*WDTPZP
17252             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17253               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
17254             ELSEIF(MINT(61).EQ.2) THEN
17255               FGGF=0D0
17256               FGZF=0D0
17257               FGZPF=0D0
17258               FZZF=0D0
17259               FZZPF=0D0
17260               FZPZPF=WDTPZP
17261             ENDIF
17262             WID2=WIDS(24,1)
17263           ELSEIF(I.EQ.18) THEN
17264 C...Z'0 -> H+ + H-
17265             CZC=2D0*(1D0-2D0*XW)
17266             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
17267             IF(ICASE.EQ.1) THEN
17268               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
17269               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
17270             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17271               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
17272      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
17273      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
17274      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
17275      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
17276             ELSEIF(MINT(61).EQ.2) THEN
17277               FGGF=0.25D0*BE34C
17278               FGZF=0.25D0*PARU(142)*CZC*BE34C
17279               FGZPF=0.25D0*PARU(143)*CZC*BE34C
17280               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
17281               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
17282               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
17283             ENDIF
17284             WID2=WIDS(37,1)
17285           ELSEIF(I.EQ.19) THEN
17286 C...Z'0 -> Z0 + gamma.
17287           ELSEIF(I.EQ.20) THEN
17288 C...Z'0 -> Z0 + h0
17289             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17290             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
17291      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
17292             IF(ICASE.EQ.1) THEN
17293               WDTPZ=0D0
17294               WDTP(I)=FAC*WDTPZP
17295             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17296               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
17297             ELSEIF(MINT(61).EQ.2) THEN
17298               FGGF=0D0
17299               FGZF=0D0
17300               FGZPF=0D0
17301               FZZF=0D0
17302               FZZPF=0D0
17303               FZPZPF=WDTPZP
17304             ENDIF
17305             WID2=WIDS(23,2)*WIDS(25,2)
17306           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
17307 C...Z' -> h0 + A0 or H0 + A0.
17308             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17309             IF(I.EQ.21) THEN
17310               CZAH=PARU(186)
17311               CZPAH=PARU(188)
17312             ELSE
17313               CZAH=PARU(187)
17314               CZPAH=PARU(189)
17315             ENDIF
17316             IF(ICASE.EQ.1) THEN
17317               WDTPZ=CZAH**2*BE34C
17318               WDTP(I)=FAC*CZPAH**2*BE34C
17319             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
17320               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
17321      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
17322      &        VINT(116))*BE34C
17323             ELSEIF(MINT(61).EQ.2) THEN
17324               FGGF=0D0
17325               FGZF=0D0
17326               FGZPF=0D0
17327               FZZF=CZAH**2*BE34C
17328               FZZPF=CZAH*CZPAH*BE34C
17329               FZPZPF=CZPAH**2*BE34C
17330             ENDIF
17331             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
17332             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
17333           ENDIF
17334           IF(ICASE.EQ.1) THEN
17335             VINT(117)=VINT(117)+FAC*WDTPZ
17336             WDTP(I)=FUDGE*WDTP(I)
17337             WDTP(0)=WDTP(0)+WDTP(I)
17338           ENDIF
17339           IF(MDME(IDC,1).GT.0) THEN
17340             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
17341      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
17342               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17343               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
17344      &        WDTE(I,MDME(IDC,1))
17345               WDTE(I,0)=WDTE(I,MDME(IDC,1))
17346               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17347             ENDIF
17348             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
17349               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
17350      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
17351               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
17352      &        FGZF*WID2
17353               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
17354      &        FGZPF*WID2
17355               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
17356      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
17357               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
17358      &        FZZPF*WID2
17359               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
17360      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
17361             ENDIF
17362           ENDIF
17363   290   CONTINUE
17364         IF(MINT(61).GE.1) ICASE=3-ICASE
17365         IF(ICASE.EQ.2) GOTO 280
17366  
17367       ELSEIF(KFLA.EQ.34) THEN
17368 C...W'+/-:
17369         FAC=(AEM/(24D0*XW))*SHR
17370         DO 300 I=1,MDCY(KC,3)
17371           IDC=I+MDCY(KC,2)-1
17372           IF(MDME(IDC,1).LT.0) GOTO 300
17373           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17374           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17375           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
17376           WID2=1D0
17377           IF(I.LE.20) THEN
17378             IF(I.LE.16) THEN
17379 C...W'+/- -> q + qbar'
17380               FCOF=3D0*RADC*(PARU(131)**2+PARU(132)**2)*
17381      &        VCKM((I-1)/4+1,MOD(I-1,4)+1)
17382               IF(KFLR.GT.0) THEN
17383                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
17384                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
17385                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
17386               ELSE
17387                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
17388                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
17389                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
17390               ENDIF
17391             ELSEIF(I.LE.20) THEN
17392 C...W'+/- -> l+/- + nu
17393               FCOF=PARU(133)**2+PARU(134)**2
17394               IF(KFLR.GT.0) THEN
17395                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
17396               ELSE
17397                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
17398               ENDIF
17399             ENDIF
17400             WDTP(I)=FAC*FCOF*0.5D0*(2D0-RM1-RM2-(RM1-RM2)**2)*
17401      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17402           ELSEIF(I.EQ.21) THEN
17403 C...W'+/- -> W+/- + Z0
17404             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
17405      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17406      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17407             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
17408             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
17409           ELSEIF(I.EQ.23) THEN
17410 C...W'+/- -> W+/- + h0
17411             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17412             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
17413             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
17414             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
17415           ENDIF
17416           WDTP(I)=FUDGE*WDTP(I)
17417           WDTP(0)=WDTP(0)+WDTP(I)
17418           IF(MDME(IDC,1).GT.0) THEN
17419             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17420             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17421             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17422             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17423           ENDIF
17424   300   CONTINUE
17425  
17426       ELSEIF(KFLA.EQ.37) THEN
17427 C...H+/-:
17428 C        IF(MSTP(49).EQ.0) THEN
17429         SHFS=SH
17430 C        ELSE
17431 C          SHFS=PMAS(37,1)**2
17432 C        ENDIF
17433         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
17434         DO 310 I=1,MDCY(KC,3)
17435           IDC=I+MDCY(KC,2)-1
17436           IF(MDME(IDC,1).LT.0) GOTO 310
17437           KFC1=PYCOMP(KFDP(IDC,1))
17438           KFC2=PYCOMP(KFDP(IDC,2))
17439           RM1=PMAS(KFC1,1)**2/SH
17440           RM2=PMAS(KFC2,1)**2/SH
17441           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
17442           WID2=1D0
17443           IF(I.LE.4) THEN
17444 C...H+/- -> q + qbar'
17445             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
17446             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
17447             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
17448      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
17449      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
17450             IF(KFLR.GT.0) THEN
17451               IF(I.EQ.3) WID2=WIDS(6,2)
17452               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
17453             ELSE
17454               IF(I.EQ.3) WID2=WIDS(6,3)
17455               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
17456             ENDIF
17457           ELSEIF(I.LE.8) THEN
17458 C...H+/- -> l+/- + nu
17459             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
17460      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
17461      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
17462             IF(KFLR.GT.0) THEN
17463               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
17464             ELSE
17465               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
17466             ENDIF
17467           ELSEIF(I.EQ.9) THEN
17468 C...H+/- -> W+/- + h0.
17469             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
17470      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17471             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
17472             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
17473  
17474 CMRENNA++
17475           ELSE
17476 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
17477             RM10=RM1*SH/PMR**2
17478             RM20=RM2*SH/PMR**2
17479             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
17480             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
17481             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
17482               WFAC=0D0
17483             ELSE
17484               WFAC=WFAC/WFAC0
17485             ENDIF
17486             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
17487 CMRENNA--
17488             KSGN1=2
17489             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
17490             KSGN2=2
17491             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
17492             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
17493           ENDIF
17494           WDTP(I)=FUDGE*WDTP(I)
17495           WDTP(0)=WDTP(0)+WDTP(I)
17496           IF(MDME(IDC,1).GT.0) THEN
17497             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17498             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17499             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17500             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17501           ENDIF
17502   310   CONTINUE
17503  
17504       ELSEIF(KFLA.EQ.41) THEN
17505 C...R:
17506         FAC=(AEM/(12D0*XW))*SHR
17507         DO 320 I=1,MDCY(KC,3)
17508           IDC=I+MDCY(KC,2)-1
17509           IF(MDME(IDC,1).LT.0) GOTO 320
17510           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17511           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17512           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
17513           WID2=1D0
17514           IF(I.LE.6) THEN
17515 C...R -> q + qbar'
17516             FCOF=3D0*RADC
17517           ELSEIF(I.LE.9) THEN
17518 C...R -> l+ + l'-
17519             FCOF=1D0
17520           ENDIF
17521           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
17522      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17523           IF(KFLR.GT.0) THEN
17524             IF(I.EQ.4) WID2=WIDS(6,3)
17525             IF(I.EQ.5) WID2=WIDS(7,3)
17526             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
17527             IF(I.EQ.9) WID2=WIDS(17,3)
17528           ELSE
17529             IF(I.EQ.4) WID2=WIDS(6,2)
17530             IF(I.EQ.5) WID2=WIDS(7,2)
17531             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
17532             IF(I.EQ.9) WID2=WIDS(17,2)
17533           ENDIF
17534           WDTP(I)=FUDGE*WDTP(I)
17535           WDTP(0)=WDTP(0)+WDTP(I)
17536           IF(MDME(IDC,1).GT.0) THEN
17537             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17538             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17539             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17540             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17541           ENDIF
17542   320   CONTINUE
17543  
17544       ELSEIF(KFLA.EQ.42) THEN
17545 C...LQ (leptoquark).
17546         FAC=(AEM/4D0)*PARU(151)*SHR
17547         DO 330 I=1,MDCY(KC,3)
17548           IDC=I+MDCY(KC,2)-1
17549           IF(MDME(IDC,1).LT.0) GOTO 330
17550           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17551           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17552           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
17553           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17554           WID2=1D0
17555           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
17556           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
17557           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
17558           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
17559           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
17560           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
17561           WDTP(I)=FUDGE*WDTP(I)
17562           WDTP(0)=WDTP(0)+WDTP(I)
17563           IF(MDME(IDC,1).GT.0) THEN
17564             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17565             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17566             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17567             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17568           ENDIF
17569   330   CONTINUE
17570  
17571       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
17572 C...Techni-pi0 and techni-pi0':
17573         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
17574         DO 340 I=1,MDCY(KC,3)
17575           IDC=I+MDCY(KC,2)-1
17576           IF(MDME(IDC,1).LT.0) GOTO 340
17577           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
17578           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
17579           RM1=PM1**2/SH
17580           RM2=PM2**2/SH
17581           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
17582           WID2=1D0
17583 C...pi_tc -> g + g
17584           IF(I.EQ.8) THEN
17585             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
17586      &      /(8D0*PARU(1))*SH*SHR
17587             IF(KFLA.EQ.KTECHN+111) THEN
17588               FACP=FACP*RTCM(9)
17589             ELSE
17590               FACP=FACP*RTCM(10)
17591             ENDIF
17592             WDTP(I)=FACP
17593           ELSE
17594 C...pi_tc -> f + fbar.
17595             FCOF=1D0
17596             IKA=IABS(KFDP(IDC,1))
17597             IF(IKA.LT.10) FCOF=3D0*RADC
17598             HM1=PM1
17599             HM2=PM2
17600             IF(IKA.GE.4.AND.IKA.LE.6) THEN
17601                FCOF=FCOF*RTCM(1+IKA)**2
17602                HM1=PYMRUN(KFDP(IDC,1),SH)
17603                HM2=PYMRUN(KFDP(IDC,2),SH)
17604             ELSEIF(IKA.EQ.15) THEN
17605                FCOF=FCOF*RTCM(8)**2
17606             ENDIF
17607             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
17608      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17609           ENDIF
17610           WDTP(I)=FUDGE*WDTP(I)
17611           WDTP(0)=WDTP(0)+WDTP(I)
17612           IF(MDME(IDC,1).GT.0) THEN
17613             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17614             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17615             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17616             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17617           ENDIF
17618   340   CONTINUE
17619  
17620       ELSEIF(KFLA.EQ.KTECHN+211) THEN
17621 C...pi+_tc
17622         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
17623         DO 350 I=1,MDCY(KC,3)
17624           IDC=I+MDCY(KC,2)-1
17625           IF(MDME(IDC,1).LT.0) GOTO 350
17626           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
17627           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
17628           PM3=0D0
17629           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
17630           RM1=PM1**2/SH
17631           RM2=PM2**2/SH
17632           RM3=PM3**2/SH
17633           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
17634           WID2=1D0
17635 C...pi_tc -> f + f'.
17636           FCOF=1D0
17637           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
17638 C...pi_tc+ -> W b b~
17639           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
17640             FCOF=3D0*RADC
17641             XMT2=PMAS(6,1)**2/SH
17642             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
17643             KFC3=PYCOMP(KFDP(IDC,3))
17644             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
17645             CHECK = SQRT(RM1)
17646             T0 = (1D0-CHECK**2)*
17647      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
17648      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
17649             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
17650      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
17651             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
17652             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
17653      &      +T3*LOG(CHECK))
17654             IF(KFLR.GT.0) THEN
17655                WID2=WIDS(24,2)
17656             ELSE
17657                WID2=WIDS(24,3)
17658             ENDIF
17659           ELSE
17660             FCOF=1D0
17661             IKA=IABS(KFDP(IDC,1))
17662             IF(IKA.LT.10) FCOF=3D0*RADC
17663             HM1=PM1
17664             HM2=PM2
17665             IF(I.GE.1.AND.I.LE.5) THEN
17666               IF(I.LE.2) THEN
17667                 FCOF=FCOF*RTCM(5)**2
17668               ELSEIF(I.LE.4) THEN
17669                 FCOF=FCOF*RTCM(6)**2
17670               ELSEIF(I.EQ.5) THEN
17671                 FCOF=FCOF*RTCM(7)**2
17672               ENDIF
17673               HM1=PYMRUN(KFDP(IDC,1),SH)
17674               HM2=PYMRUN(KFDP(IDC,2),SH)
17675             ELSEIF(I.EQ.8) THEN
17676               FCOF=FCOF*RTCM(8)**2
17677             ENDIF
17678             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
17679      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17680           ENDIF
17681           WDTP(I)=FUDGE*WDTP(I)
17682           WDTP(0)=WDTP(0)+WDTP(I)
17683           IF(MDME(IDC,1).GT.0) THEN
17684             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17685             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17686             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17687             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17688           ENDIF
17689   350     CONTINUE
17690  
17691       ELSEIF(KFLA.EQ.KTECHN+331) THEN
17692 C...Techni-eta.
17693         FAC=(SH/PARP(46)**2)*SHR
17694         DO 360 I=1,MDCY(KC,3)
17695           IDC=I+MDCY(KC,2)-1
17696           IF(MDME(IDC,1).LT.0) GOTO 360
17697           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17698           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17699           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
17700           WID2=1D0
17701           IF(I.LE.2) THEN
17702             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
17703             IF(I.EQ.2) WID2=WIDS(6,1)
17704           ELSE
17705             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
17706           ENDIF
17707           WDTP(I)=FUDGE*WDTP(I)
17708           WDTP(0)=WDTP(0)+WDTP(I)
17709           IF(MDME(IDC,1).GT.0) THEN
17710             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17711             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17712             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17713             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17714           ENDIF
17715   360   CONTINUE
17716  
17717       ELSEIF(KFLA.EQ.KTECHN+113) THEN
17718 C...Techni-rho0:
17719         ALPRHT=2.91D0*(3D0/ITCM(1))
17720         FAC=(ALPRHT/12D0)*SHR
17721         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
17722         SQMZ=PMAS(23,1)**2
17723         SQMW=PMAS(24,1)**2
17724         SHP=SH
17725         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
17726         GMMZ=SHR*WDTPP(0)
17727         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
17728         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
17729         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
17730         DO 370 I=1,MDCY(KC,3)
17731           IDC=I+MDCY(KC,2)-1
17732           IF(MDME(IDC,1).LT.0) GOTO 370
17733           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17734           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17735           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
17736           WID2=1D0
17737           IF(I.EQ.1) THEN
17738 C...rho_tc0 -> W+ + W-.
17739             WDTP(I)=FAC*RTCM(3)**4*
17740      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17741             WID2=WIDS(24,1)
17742           ELSEIF(I.EQ.2) THEN
17743 C...rho_tc0 -> W+ + pi_tc-.
17744             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17745      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17746      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17747      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17748      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17749             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
17750           ELSEIF(I.EQ.3) THEN
17751 C...rho_tc0 -> pi_tc+ + W-.
17752             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17753      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17754      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17755      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17756      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17757             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
17758           ELSEIF(I.EQ.4) THEN
17759 C...rho_tc0 -> pi_tc+ + pi_tc-.
17760             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
17761      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17762             WID2=WIDS(PYCOMP(KTECHN+211),1)
17763           ELSEIF(I.EQ.5) THEN
17764 C...rho_tc0 -> gamma + pi_tc0
17765             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17766      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17767      &      SHR**3
17768             WID2=WIDS(PYCOMP(KTECHN+111),2)
17769           ELSEIF(I.EQ.6) THEN
17770 C...rho_tc0 -> gamma + pi_tc0'
17771             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17772      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
17773             WID2=WIDS(PYCOMP(KTECHN+221),2)
17774           ELSEIF(I.EQ.7) THEN
17775 C...rho_tc0 -> Z0 + pi_tc0
17776             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17777      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17778      &      XW/XW1*SHR**3
17779             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
17780           ELSEIF(I.EQ.8) THEN
17781 C...rho_tc0 -> Z0 + pi_tc0'
17782             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17783      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
17784      &      XW/XW1*SHR**3
17785             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
17786           ELSE
17787 C...rho_tc0 -> f + fbar.
17788             WID2=1D0
17789             IF(I.LE.16) THEN
17790               IA=I-8
17791               FCOF=3D0*RADC
17792               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
17793             ELSE
17794               IA=I-6
17795               FCOF=1D0
17796               IF(IA.GE.17) WID2=WIDS(IA,1)
17797             ENDIF
17798             EI=KCHG(IA,1)/3D0
17799             AI=SIGN(1D0,EI+0.1D0)
17800             VI=AI-4D0*EI*XWV
17801             VALI=0.5D0*(VI+AI)
17802             VARI=0.5D0*(VI-AI)
17803             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
17804      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
17805      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
17806      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
17807           ENDIF
17808           WDTP(I)=FUDGE*WDTP(I)
17809           WDTP(0)=WDTP(0)+WDTP(I)
17810           IF(MDME(IDC,1).GT.0) THEN
17811             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17812             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17813             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17814             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17815           ENDIF
17816   370   CONTINUE
17817  
17818       ELSEIF(KFLA.EQ.KTECHN+213) THEN
17819 C...Techni-rho+/-:
17820         ALPRHT=2.91D0*(3D0/ITCM(1))
17821         FAC=(ALPRHT/12D0)*SHR
17822         SQMZ=PMAS(23,1)**2
17823         SQMW=PMAS(24,1)**2
17824         SHP=SH
17825         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
17826         GMMW=SHR*WDTPP(0)
17827         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
17828      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
17829         DO 380 I=1,MDCY(KC,3)
17830           IDC=I+MDCY(KC,2)-1
17831           IF(MDME(IDC,1).LT.0) GOTO 380
17832           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17833           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17834           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
17835           WID2=1D0
17836           IF(I.EQ.1) THEN
17837 C...rho_tc+ -> W+ + Z0.
17838             WDTP(I)=FAC*RTCM(3)**4*
17839      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17840             IF(KFLR.GT.0) THEN
17841               WID2=WIDS(24,2)*WIDS(23,2)
17842             ELSE
17843               WID2=WIDS(24,3)*WIDS(23,2)
17844             ENDIF
17845           ELSEIF(I.EQ.2) THEN
17846 C...rho_tc+ -> W+ + pi_tc0.
17847             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17848      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17849      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17850      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
17851      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
17852             IF(KFLR.GT.0) THEN
17853               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
17854             ELSE
17855               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
17856             ENDIF
17857           ELSEIF(I.EQ.3) THEN
17858 C...rho_tc+ -> pi_tc+ + Z0.
17859             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
17860      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
17861      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
17862      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
17863      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
17864      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17865      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17866      &      SHR**3*XW/XW1
17867             IF(KFLR.GT.0) THEN
17868               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
17869             ELSE
17870               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
17871             ENDIF
17872           ELSEIF(I.EQ.4) THEN
17873 C...rho_tc+ -> pi_tc+ + pi_tc0.
17874             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
17875      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17876             IF(KFLR.GT.0) THEN
17877               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
17878             ELSE
17879               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
17880             ENDIF
17881           ELSEIF(I.EQ.5) THEN
17882 C...rho_tc+ -> pi_tc+ + gamma
17883             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17884      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
17885      &      SHR**3
17886             IF(KFLR.GT.0) THEN
17887               WID2=WIDS(PYCOMP(KTECHN+211),2)
17888             ELSE
17889               WID2=WIDS(PYCOMP(KTECHN+211),3)
17890             ENDIF
17891           ELSEIF(I.EQ.6) THEN
17892 C...rho_tc+ -> W+ + pi_tc0'
17893             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17894      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
17895             IF(KFLR.GT.0) THEN
17896               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
17897             ELSE
17898               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
17899             ENDIF
17900           ELSE
17901 C...rho_tc+ -> f + fbar'.
17902             IA=I-6
17903             WID2=1D0
17904             IF(IA.LE.16) THEN
17905               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
17906               IF(KFLR.GT.0) THEN
17907                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
17908                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
17909                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
17910               ELSE
17911                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
17912                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
17913                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
17914               ENDIF
17915             ELSE
17916               FCOF=1D0
17917               IF(KFLR.GT.0) THEN
17918                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
17919               ELSE
17920                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
17921               ENDIF
17922             ENDIF
17923             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
17924      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
17925           ENDIF
17926           WDTP(I)=FUDGE*WDTP(I)
17927           WDTP(0)=WDTP(0)+WDTP(I)
17928           IF(MDME(IDC,1).GT.0) THEN
17929             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
17930             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
17931             WDTE(I,0)=WDTE(I,MDME(IDC,1))
17932             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
17933           ENDIF
17934   380   CONTINUE
17935  
17936       ELSEIF(KFLA.EQ.KTECHN+223) THEN
17937 C...Techni-omega:
17938         ALPRHT=2.91D0*(3D0/ITCM(1))
17939         FAC=(ALPRHT/12D0)*SHR
17940         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
17941         SQMZ=PMAS(23,1)**2
17942         SHP=SH
17943         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
17944         GMMZ=SHR*WDTPP(0)
17945         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
17946         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
17947         DO 390 I=1,MDCY(KC,3)
17948           IDC=I+MDCY(KC,2)-1
17949           IF(MDME(IDC,1).LT.0) GOTO 390
17950           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
17951           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
17952           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
17953           WID2=1D0
17954           IF(I.EQ.1) THEN
17955 C...omega_tc0 -> gamma + pi_tc0.
17956             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
17957      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
17958             WID2=WIDS(PYCOMP(KTECHN+111),2)
17959           ELSEIF(I.EQ.2) THEN
17960 C...omega_tc0 -> Z0 + pi_tc0
17961             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17962      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
17963      &      XW/XW1*SHR**3
17964             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
17965           ELSEIF(I.EQ.3) THEN
17966 C...omega_tc0 -> gamma + pi_tc0'
17967             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17968      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
17969      &      SHR**3
17970             WID2=WIDS(PYCOMP(KTECHN+221),2)
17971           ELSEIF(I.EQ.4) THEN
17972 C...omega_tc0 -> Z0 + pi_tc0'
17973             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17974      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
17975      &      XW/XW1*SHR**3
17976             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
17977           ELSEIF(I.EQ.5) THEN
17978 C...omega_tc0 -> W+ + pi_tc-
17979             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17980      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
17981      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
17982      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17983             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
17984           ELSEIF(I.EQ.6) THEN
17985 C...omega_tc0 -> pi_tc+ + W-
17986             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
17987      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
17988      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
17989      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17990             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
17991           ELSEIF(I.EQ.7) THEN
17992 C...omega_tc0 -> W+ + W-.
17993             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
17994      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
17995             WID2=WIDS(24,1)
17996           ELSEIF(I.EQ.8) THEN
17997 C...omega_tc0 -> pi_tc+ + pi_tc-.
17998             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
17999      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
18000             WID2=WIDS(PYCOMP(KTECHN+211),1)
18001           ELSE
18002 C...omega_tc0 -> f + fbar.
18003             WID2=1D0
18004             IF(I.LE.14) THEN
18005               IA=I-8
18006               FCOF=3D0*RADC
18007               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
18008             ELSE
18009               IA=I-6
18010               FCOF=1D0
18011               IF(IA.GE.17) WID2=WIDS(IA,1)
18012             ENDIF
18013             EI=KCHG(IA,1)/3D0
18014             AI=SIGN(1D0,EI+0.1D0)
18015             VI=AI-4D0*EI*XWV
18016             VALI=-0.5D0*(VI+AI)
18017             VARI=-0.5D0*(VI-AI)
18018             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
18019      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
18020      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
18021      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
18022           ENDIF
18023           WDTP(I)=FUDGE*WDTP(I)
18024           WDTP(0)=WDTP(0)+WDTP(I)
18025           IF(MDME(IDC,1).GT.0) THEN
18026             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18027             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18028             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18029             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18030           ENDIF
18031   390   CONTINUE
18032  
18033 C.....V8 -> quark anti-quark
18034       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
18035         FAC=AS/6D0*SHR
18036         TANT3=RTCM(21)
18037         IF(ITCM(2).EQ.0) THEN
18038           IMDL=1
18039         ELSEIF(ITCM(2).EQ.1) THEN
18040           IMDL=2
18041         ENDIF
18042         DO 400 I=1,MDCY(KC,3)
18043           IDC=I+MDCY(KC,2)-1
18044           IF(MDME(IDC,1).LT.0) GOTO 400
18045           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
18046           RM1=PM1**2/SH
18047           IF(RM1.GT.0.25D0) GOTO 400
18048           WID2=1D0
18049           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
18050             FMIX=1D0/TANT3**2
18051           ELSE
18052             FMIX=TANT3**2
18053           ENDIF
18054           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
18055           IF(I.EQ.6) WID2=WIDS(6,1)
18056           WDTP(I)=FUDGE*WDTP(I)
18057           WDTP(0)=WDTP(0)+WDTP(I)
18058           IF(MDME(IDC,1).GT.0) THEN
18059             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18060             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18061             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18062             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18063           ENDIF
18064   400   CONTINUE
18065  
18066       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
18067         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
18068         CLEBF=0D0
18069         DO 410 I=1,MDCY(KC,3)
18070           IDC=I+MDCY(KC,2)-1
18071           IF(MDME(IDC,1).LT.0) GOTO 410
18072           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18073           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18074           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
18075           WID2=1D0
18076 C...pi_tc -> g + g
18077           IF(I.EQ.7) THEN
18078             IF(KFLA.EQ.KTECHN+100111) THEN
18079               CLEBG=4D0/3D0
18080             ELSE
18081               CLEBG=5D0/3D0
18082             ENDIF
18083             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
18084      &      /(2D0*PARU(1))*SH*SHR*CLEBG
18085             WDTP(I)=FACP
18086           ELSE
18087 C...pi_tc -> f + fbar.
18088             IF(I.EQ.6) WID2=WIDS(6,1)
18089             FCOF=1D0
18090             IKA=IABS(KFDP(IDC,1))
18091             IF(IKA.LT.10) FCOF=3D0*RADC
18092             HM1=PYMRUN(KFDP(IDC,1),SH)
18093             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
18094      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18095           ENDIF
18096           WDTP(I)=FUDGE*WDTP(I)
18097           WDTP(0)=WDTP(0)+WDTP(I)
18098           IF(MDME(IDC,1).GT.0) THEN
18099             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18100             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18101             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18102             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18103           ENDIF
18104   410   CONTINUE
18105  
18106       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
18107         FAC=AS/6D0*SHR
18108         ALPRHT=2.91D0*(3D0/ITCM(1))
18109         TANT3=RTCM(21)
18110         SIN2T=2D0*TANT3/(TANT3**2+1D0)
18111         SINT3=TANT3/SQRT(TANT3**2+1D0)
18112         CSXPP=RTCM(22)
18113         RM82=RTCM(27)**2
18114         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
18115      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
18116         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
18117      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
18118         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
18119      &  SINT3**2)*2D0
18120         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
18121      &  SINT3**2)*2D0
18122         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
18123  
18124         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
18125         GMV8=SHR*WDTPP(0)
18126         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
18127         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
18128         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
18129         IF(ITCM(2).EQ.0) THEN
18130           IMDL=1
18131         ELSE
18132           IMDL=2
18133         ENDIF
18134         DO 420 I=1,MDCY(KC,3)
18135           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
18136      &    KFLA.EQ.KTECHN+300113)) GOTO 420
18137           IDC=I+MDCY(KC,2)-1
18138           IF(MDME(IDC,1).LT.0) GOTO 420
18139           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18140           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18141           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
18142           WID2=1D0
18143           IF(I.LE.6) THEN
18144             IF(I.EQ.6) WID2=WIDS(6,1)
18145             XIG=1D0
18146             IF(KFLA.EQ.KTECHN+200113) THEN
18147               XIG=0D0
18148               XIJ=X12
18149             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
18150               XIG=0D0
18151               XIJ=X21
18152             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
18153               XIJ=X11
18154             ELSE
18155               XIJ=X22
18156             ENDIF
18157             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
18158               FMIX=1D0/TANT3/SIN2T
18159             ELSE
18160               FMIX=-TANT3/SIN2T
18161             ENDIF
18162             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
18163             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
18164           ELSEIF(I.EQ.7) THEN
18165             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
18166           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
18167             PSH=SHR*(1D0-RM1)/2D0
18168             WDTP(I)=AS/9D0*PSH**3/RM82
18169             IF(I.EQ.8) THEN
18170               WDTP(I)=2D0*WDTP(I)*CSXPP**2
18171               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
18172             ELSE
18173               WDTP(I)=5D0*WDTP(I)
18174               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
18175             ENDIF
18176           ENDIF
18177           WDTP(I)=FUDGE*WDTP(I)
18178           WDTP(0)=WDTP(0)+WDTP(I)
18179           IF(MDME(IDC,1).GT.0) THEN
18180             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18181             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18182             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18183             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18184           ENDIF
18185   420   CONTINUE
18186  
18187       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
18188 C...d* excited quark.
18189         FAC=(SH/RTCM(41)**2)*SHR
18190         DO 430 I=1,MDCY(KC,3)
18191           IDC=I+MDCY(KC,2)-1
18192           IF(MDME(IDC,1).LT.0) GOTO 430
18193           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18194           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18195           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
18196           WID2=1D0
18197           IF(I.EQ.1) THEN
18198 C...d* -> g + d.
18199             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
18200             WID2=1D0
18201           ELSEIF(I.EQ.2) THEN
18202 C...d* -> gamma + d.
18203             QF=-RTCM(43)/2D0+RTCM(44)/6D0
18204             WDTP(I)=FAC*AEM*QF**2/4D0
18205             WID2=1D0
18206           ELSEIF(I.EQ.3) THEN
18207 C...d* -> Z0 + d.
18208             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
18209             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18210      &      (1D0-RM1)**2*(2D0+RM1)
18211             WID2=WIDS(23,2)
18212           ELSEIF(I.EQ.4) THEN
18213 C...d* -> W- + u.
18214             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18215      &      (1D0-RM1)**2*(2D0+RM1)
18216             IF(KFLR.GT.0) WID2=WIDS(24,3)
18217             IF(KFLR.LT.0) WID2=WIDS(24,2)
18218           ENDIF
18219           WDTP(I)=FUDGE*WDTP(I)
18220           WDTP(0)=WDTP(0)+WDTP(I)
18221           IF(MDME(IDC,1).GT.0) THEN
18222             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18223             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18224             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18225             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18226           ENDIF
18227   430   CONTINUE
18228  
18229       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
18230 C...u* excited quark.
18231         FAC=(SH/RTCM(41)**2)*SHR
18232         DO 440 I=1,MDCY(KC,3)
18233           IDC=I+MDCY(KC,2)-1
18234           IF(MDME(IDC,1).LT.0) GOTO 440
18235           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18236           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18237           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
18238           WID2=1D0
18239           IF(I.EQ.1) THEN
18240 C...u* -> g + u.
18241             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
18242             WID2=1D0
18243           ELSEIF(I.EQ.2) THEN
18244 C...u* -> gamma + u.
18245             QF=RTCM(43)/2D0+RTCM(44)/6D0
18246             WDTP(I)=FAC*AEM*QF**2/4D0
18247             WID2=1D0
18248           ELSEIF(I.EQ.3) THEN
18249 C...u* -> Z0 + u.
18250             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
18251             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18252      &      (1D0-RM1)**2*(2D0+RM1)
18253             WID2=WIDS(23,2)
18254           ELSEIF(I.EQ.4) THEN
18255 C...u* -> W+ + d.
18256             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18257      &      (1D0-RM1)**2*(2D0+RM1)
18258             IF(KFLR.GT.0) WID2=WIDS(24,2)
18259             IF(KFLR.LT.0) WID2=WIDS(24,3)
18260           ENDIF
18261           WDTP(I)=FUDGE*WDTP(I)
18262           WDTP(0)=WDTP(0)+WDTP(I)
18263           IF(MDME(IDC,1).GT.0) THEN
18264             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18265             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18266             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18267             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18268           ENDIF
18269   440   CONTINUE
18270  
18271       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
18272 C...e* excited lepton.
18273         FAC=(SH/RTCM(41)**2)*SHR
18274         DO 450 I=1,MDCY(KC,3)
18275           IDC=I+MDCY(KC,2)-1
18276           IF(MDME(IDC,1).LT.0) GOTO 450
18277           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18278           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18279           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
18280           WID2=1D0
18281           IF(I.EQ.1) THEN
18282 C...e* -> gamma + e.
18283             QF=-RTCM(43)/2D0-RTCM(44)/2D0
18284             WDTP(I)=FAC*AEM*QF**2/4D0
18285             WID2=1D0
18286           ELSEIF(I.EQ.2) THEN
18287 C...e* -> Z0 + e.
18288             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
18289             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18290      &      (1D0-RM1)**2*(2D0+RM1)
18291             WID2=WIDS(23,2)
18292           ELSEIF(I.EQ.3) THEN
18293 C...e* -> W- + nu.
18294             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18295      &      (1D0-RM1)**2*(2D0+RM1)
18296             IF(KFLR.GT.0) WID2=WIDS(24,3)
18297             IF(KFLR.LT.0) WID2=WIDS(24,2)
18298           ENDIF
18299           WDTP(I)=FUDGE*WDTP(I)
18300           WDTP(0)=WDTP(0)+WDTP(I)
18301           IF(MDME(IDC,1).GT.0) THEN
18302             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18303             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18304             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18305             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18306           ENDIF
18307   450   CONTINUE
18308  
18309       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
18310 C...nu*_e excited neutrino.
18311         FAC=(SH/RTCM(41)**2)*SHR
18312         DO 460 I=1,MDCY(KC,3)
18313           IDC=I+MDCY(KC,2)-1
18314           IF(MDME(IDC,1).LT.0) GOTO 460
18315           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18316           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18317           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
18318           WID2=1D0
18319           IF(I.EQ.1) THEN
18320 C...nu*_e -> Z0 + nu*_e.
18321             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
18322             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
18323      &      (1D0-RM1)**2*(2D0+RM1)
18324             WID2=WIDS(23,2)
18325           ELSEIF(I.EQ.2) THEN
18326 C...nu*_e -> W+ + e.
18327             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
18328      &      (1D0-RM1)**2*(2D0+RM1)
18329             IF(KFLR.GT.0) WID2=WIDS(24,2)
18330             IF(KFLR.LT.0) WID2=WIDS(24,3)
18331           ENDIF
18332           WDTP(I)=FUDGE*WDTP(I)
18333           WDTP(0)=WDTP(0)+WDTP(I)
18334           IF(MDME(IDC,1).GT.0) THEN
18335             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18336             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18337             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18338             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18339           ENDIF
18340   460   CONTINUE
18341  
18342       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
18343 C...G* (graviton resonance):
18344         FAC=(PARP(50)**2/PARU(1))*SHR
18345         DO 470 I=1,MDCY(KC,3)
18346           IDC=I+MDCY(KC,2)-1
18347           IF(MDME(IDC,1).LT.0) GOTO 470
18348           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18349           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18350           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
18351           WID2=1D0
18352           IF(I.LE.8) THEN
18353 C...G* -> q + qbar
18354             FCOF=3D0*RADC
18355             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
18356      &      PYHFTH(SH,SH*RM1,1D0)
18357             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
18358      &      (1D0+8D0*RM1/3D0)/320D0
18359             IF(I.EQ.6) WID2=WIDS(6,1)
18360             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
18361           ELSEIF(I.LE.16) THEN
18362 C...G* -> l+ + l-, nu + nubar
18363             FCOF=1D0
18364             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
18365      &      (1D0+8D0*RM1/3D0)/320D0
18366             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
18367           ELSEIF(I.EQ.17) THEN
18368 C...G* -> g + g.
18369             WDTP(I)=FAC/20D0
18370           ELSEIF(I.EQ.18) THEN
18371 C...G* -> gamma + gamma.
18372             WDTP(I)=FAC/160D0
18373           ELSEIF(I.EQ.19) THEN
18374 C...G* -> Z0 + Z0.
18375             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
18376      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
18377             WID2=WIDS(23,1)
18378           ELSEIF(I.EQ.20) THEN
18379 C...G* -> W+ + W-.
18380             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
18381      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
18382             WID2=WIDS(24,1)
18383           ENDIF
18384           WDTP(I)=FUDGE*WDTP(I)
18385           WDTP(0)=WDTP(0)+WDTP(I)
18386           IF(MDME(IDC,1).GT.0) THEN
18387             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18388             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18389             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18390             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18391           ENDIF
18392   470   CONTINUE
18393  
18394       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
18395 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
18396         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
18397         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
18398         DO 480 I=1,MDCY(KC,3)
18399           IDC=I+MDCY(KC,2)-1
18400           IF(MDME(IDC,1).LT.0) GOTO 480
18401           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
18402           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
18403           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
18404           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
18405           WID2=1D0
18406           IF(I.LE.9) THEN
18407 C...nu_lR -> l- qbar q'
18408             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
18409             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
18410           ELSEIF(I.LE.18) THEN
18411 C...nu_lR -> l+ q qbar'
18412             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
18413             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
18414           ELSE
18415 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
18416             FCOF=1D0
18417             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
18418           ENDIF
18419           X=(PM1+PM2+PM3)/SHR
18420           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
18421           Y=(SHR/PMWR)**2
18422           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
18423           WDTP(I)=FAC*FCOF*FX*FY
18424           WDTP(I)=FUDGE*WDTP(I)
18425           WDTP(0)=WDTP(0)+WDTP(I)
18426           IF(MDME(IDC,1).GT.0) THEN
18427             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18428             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18429             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18430             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18431           ENDIF
18432   480   CONTINUE
18433  
18434       ELSEIF(KFLA.EQ.9900023) THEN
18435 C...Z_R0:
18436         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
18437         DO 490 I=1,MDCY(KC,3)
18438           IDC=I+MDCY(KC,2)-1
18439           IF(MDME(IDC,1).LT.0) GOTO 490
18440           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18441           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18442           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
18443           WID2=1D0
18444           SYMMET=1D0
18445           IF(I.LE.6) THEN
18446 C...Z_R0 -> q + qbar
18447             EF=KCHG(I,1)/3D0
18448             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
18449             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
18450             FCOF=3D0*RADC
18451             IF(I.EQ.6) WID2=WIDS(6,1)
18452           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
18453 C...Z_R0 -> l+ + l-
18454             AF=-(1D0-2D0*XW)
18455             VF=-1D0+4D0*XW
18456             FCOF=1D0
18457           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
18458 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
18459             AF=-2D0*XW
18460             VF=0D0
18461             FCOF=1D0
18462             SYMMET=0.5D0
18463           ELSEIF(I.LE.15) THEN
18464 C...Z0 -> nu_R + nu_R, assumed Majorana.
18465             AF=2D0*XW1
18466             VF=0D0
18467             FCOF=1D0
18468             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
18469             SYMMET=0.5D0
18470           ENDIF
18471           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
18472      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
18473           WDTP(I)=FUDGE*WDTP(I)
18474           WDTP(0)=WDTP(0)+WDTP(I)
18475           IF(MDME(IDC,1).GT.0) THEN
18476             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18477             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18478             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18479             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18480           ENDIF
18481   490   CONTINUE
18482  
18483       ELSEIF(KFLA.EQ.9900024) THEN
18484 C...W_R+/-:
18485         FAC=(AEM/(24D0*XW))*SHR
18486         DO 500 I=1,MDCY(KC,3)
18487           IDC=I+MDCY(KC,2)-1
18488           IF(MDME(IDC,1).LT.0) GOTO 500
18489           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18490           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18491           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
18492           WID2=1D0
18493           IF(I.LE.9) THEN
18494 C...W_R+/- -> q + qbar'
18495             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
18496             IF(KFLR.GT.0) THEN
18497               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
18498             ELSE
18499               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
18500             ENDIF
18501           ELSEIF(I.LE.12) THEN
18502 C...W_R+/- -> l+/- + nu_R
18503             FCOF=1D0
18504           ENDIF
18505           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
18506      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18507           WDTP(I)=FUDGE*WDTP(I)
18508           WDTP(0)=WDTP(0)+WDTP(I)
18509           IF(MDME(IDC,1).GT.0) THEN
18510             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18511             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18512             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18513             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18514           ENDIF
18515   500  CONTINUE
18516  
18517       ELSEIF(KFLA.EQ.9900041) THEN
18518 C...H_L++/--:
18519         FAC=(1D0/(8D0*PARU(1)))*SHR
18520         DO 510 I=1,MDCY(KC,3)
18521           IDC=I+MDCY(KC,2)-1
18522           IF(MDME(IDC,1).LT.0) GOTO 510
18523           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18524           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18525           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
18526           WID2=1D0
18527           IF(I.LE.6) THEN
18528 C...H_L++/-- -> l+/- + l'+/-
18529             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
18530      &      (IABS(KFDP(IDC,2))-9)/2)**2
18531             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
18532           ELSEIF(I.EQ.7) THEN
18533 C...H_L++/-- -> W_L+/- + W_L+/-
18534             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
18535      &      (3D0*RM1+0.25D0/RM1-1D0)
18536             WID2=WIDS(24,4+(1-KFLS)/2)
18537           ENDIF
18538           WDTP(I)=FAC*FCOF*
18539      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18540           WDTP(I)=FUDGE*WDTP(I)
18541           WDTP(0)=WDTP(0)+WDTP(I)
18542           IF(MDME(IDC,1).GT.0) THEN
18543             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18544             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18545             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18546             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18547           ENDIF
18548   510   CONTINUE
18549  
18550       ELSEIF(KFLA.EQ.9900042) THEN
18551 C...H_R++/--:
18552         FAC=(1D0/(8D0*PARU(1)))*SHR
18553         DO 520 I=1,MDCY(KC,3)
18554           IDC=I+MDCY(KC,2)-1
18555           IF(MDME(IDC,1).LT.0) GOTO 520
18556           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
18557           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
18558           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
18559           WID2=1D0
18560           IF(I.LE.6) THEN
18561 C...H_R++/-- -> l+/- + l'+/-
18562             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
18563      &      (IABS(KFDP(IDC,2))-9)/2)**2
18564             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
18565           ELSEIF(I.EQ.7) THEN
18566 C...H_R++/-- -> W_R+/- + W_R+/-
18567             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
18568             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
18569           ENDIF
18570           WDTP(I)=FAC*FCOF*
18571      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18572           WDTP(I)=FUDGE*WDTP(I)
18573           WDTP(0)=WDTP(0)+WDTP(I)
18574           IF(MDME(IDC,1).GT.0) THEN
18575             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
18576             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
18577             WDTE(I,0)=WDTE(I,MDME(IDC,1))
18578             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
18579           ENDIF
18580   520  CONTINUE
18581  
18582       ENDIF
18583       MINT(61)=0
18584       MINT(62)=0
18585       MINT(63)=0
18586       RETURN
18587       END
18588  
18589 C***********************************************************************
18590  
18591 C...PYOFSH
18592 C...Calculates partial width and differential cross-section maxima
18593 C...of channels/processes not allowed on mass-shell, and selects
18594 C...masses in such channels/processes.
18595  
18596       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
18597  
18598 C...Double precision and integer declarations.
18599       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
18600       IMPLICIT INTEGER(I-N)
18601       INTEGER PYK,PYCHGE,PYCOMP
18602 C...Commonblocks.
18603       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
18604       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
18605       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
18606       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
18607       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
18608       COMMON/PYINT1/MINT(400),VINT(400)
18609       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
18610       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
18611       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
18612      &/PYINT2/,/PYINT5/
18613 C...Local arrays.
18614       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
18615      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
18616      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
18617      &WDTE(0:400,0:5)
18618  
18619 C...Find if particles equal, maximum mass, matrix elements, etc.
18620       MINT(51)=0
18621       ISUB=MINT(1)
18622       KFD(1)=IABS(KFD1)
18623       KFD(2)=IABS(KFD2)
18624       MEQL=0
18625       IF(KFD(1).EQ.KFD(2)) MEQL=1
18626       MLM=0
18627       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
18628       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
18629         NOFF=44
18630         PMMX=PMMO
18631       ELSE
18632         NOFF=40
18633         PMMX=VINT(1)
18634         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
18635       ENDIF
18636       MMED=0
18637       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
18638      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
18639       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
18640      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
18641       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
18642      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
18643       LOOP=1
18644  
18645 C...Find where Breit-Wigners are required, else select discrete masses.
18646   100 DO 110 I=1,2
18647         KFCA=PYCOMP(KFD(I))
18648         IF(KFCA.GT.0) THEN
18649           PMD(I)=PMAS(KFCA,1)
18650           PGD(I)=PMAS(KFCA,2)
18651         ELSE
18652           PMD(I)=0D0
18653           PGD(I)=0D0
18654         ENDIF
18655         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
18656           MBW(I)=0
18657           PMG(I)=PMD(I)
18658           RMG(I)=(PMG(I)/PMMX)**2
18659         ELSE
18660           MBW(I)=1
18661         ENDIF
18662   110 CONTINUE
18663  
18664 C...Find allowed mass range and Breit-Wigner parameters.
18665       DO 120 I=1,2
18666         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
18667           PML(I)=PARP(42)
18668           PMU(I)=PMMX-PARP(42)
18669           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
18670           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18671         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
18672           ILM=I
18673           IF(MLM.EQ.2) ILM=3-I
18674           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
18675           IF(MBW(3-I).EQ.0) THEN
18676             PMU(I)=PMMX-PMD(3-I)
18677           ELSE
18678             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
18679           ENDIF
18680           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
18681      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
18682           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
18683           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
18684           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18685           IF(MBW(I).EQ.1) THEN
18686             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18687             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18688             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
18689      &      PGD(I)))
18690           ENDIF
18691         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
18692           ILM=I
18693           IF(MLM.EQ.2) ILM=3-I
18694           PML(I)=MAX(CKIN(48+I),PARP(42))
18695           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
18696           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
18697           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
18698           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
18699           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
18700           IF(MBW(I).EQ.1) THEN
18701             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18702             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
18703             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
18704      &      PGD(I)))
18705           ENDIF
18706         ENDIF
18707   120 CONTINUE
18708       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
18709      &THEN
18710         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
18711         MINT(51)=1
18712         RETURN
18713       ENDIF
18714  
18715 C...Calculation of partial width of resonance.
18716       IF(MOFSH.EQ.1) THEN
18717  
18718 C..If only one integration, pick that to be the inner.
18719         IF(MBW(1).EQ.0) THEN
18720           PM2=PMD(1)
18721           PMD(1)=PMD(2)
18722           PGD(1)=PGD(2)
18723           PML(1)=PML(2)
18724           PMU(1)=PMU(2)
18725         ELSEIF(MBW(2).EQ.0) THEN
18726           PM2=PMD(2)
18727         ENDIF
18728  
18729 C...Start outer loop of integration.
18730         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18731           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
18732           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
18733           NPT2=1
18734           XPT2(1)=1D0
18735           INX2(1)=0
18736           FMAX2=0D0
18737         ENDIF
18738   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18739           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
18740           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
18741         ENDIF
18742         RM2=(PM2/PMMX)**2
18743  
18744 C...Start inner loop of integration.
18745         PML1=PML(1)
18746         PMU1=MIN(PMU(1),PMMX-PM2)
18747         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
18748         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
18749         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
18750         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
18751           FUNC2=0D0
18752           GOTO 180
18753         ENDIF
18754         NPT1=1
18755         XPT1(1)=1D0
18756         INX1(1)=0
18757         FMAX1=0D0
18758   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
18759         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
18760         RM1=(PM1/PMMX)**2
18761  
18762 C...Evaluate function value - inner loop.
18763         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
18764         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
18765         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
18766      &  RM2**2+10D0*RM1*RM2)
18767         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
18768         FPT1(NPT1)=FUNC1
18769  
18770 C...Go to next position in inner loop.
18771         IF(NPT1.EQ.1) THEN
18772           NPT1=NPT1+1
18773           XPT1(NPT1)=0D0
18774           INX1(NPT1)=1
18775           GOTO 140
18776         ELSEIF(NPT1.LE.8) THEN
18777           NPT1=NPT1+1
18778           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
18779           ISH1=ISH1+1
18780           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
18781           INX1(NPT1)=INX1(ISH1)
18782           INX1(ISH1)=NPT1
18783           GOTO 140
18784         ELSEIF(NPT1.LT.100) THEN
18785           ISN1=ISH1
18786   150     ISH1=ISH1+1
18787           IF(ISH1.GT.NPT1) ISH1=2
18788           IF(ISH1.EQ.ISN1) GOTO 160
18789           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
18790           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
18791           NPT1=NPT1+1
18792           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
18793           INX1(NPT1)=INX1(ISH1)
18794           INX1(ISH1)=NPT1
18795           GOTO 140
18796         ENDIF
18797  
18798 C...Calculate integral over inner loop.
18799   160   FSUM1=0D0
18800         DO 170 IPT1=2,NPT1
18801           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
18802      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
18803   170   CONTINUE
18804         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
18805   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
18806           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
18807           FPT2(NPT2)=FUNC2
18808  
18809 C...Go to next position in outer loop.
18810           IF(NPT2.EQ.1) THEN
18811             NPT2=NPT2+1
18812             XPT2(NPT2)=0D0
18813             INX2(NPT2)=1
18814             GOTO 130
18815           ELSEIF(NPT2.LE.8) THEN
18816             NPT2=NPT2+1
18817             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
18818             ISH2=ISH2+1
18819             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
18820             INX2(NPT2)=INX2(ISH2)
18821             INX2(ISH2)=NPT2
18822             GOTO 130
18823           ELSEIF(NPT2.LT.100) THEN
18824             ISN2=ISH2
18825   190       ISH2=ISH2+1
18826             IF(ISH2.GT.NPT2) ISH2=2
18827             IF(ISH2.EQ.ISN2) GOTO 200
18828             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
18829             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
18830             NPT2=NPT2+1
18831             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
18832             INX2(NPT2)=INX2(ISH2)
18833             INX2(ISH2)=NPT2
18834             GOTO 130
18835           ENDIF
18836  
18837 C...Calculate integral over outer loop.
18838   200     FSUM2=0D0
18839           DO 210 IPT2=2,NPT2
18840             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
18841      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
18842   210     CONTINUE
18843           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
18844           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
18845         ELSE
18846           FSUM2=FUNC2
18847         ENDIF
18848  
18849 C...Save result; second integration for user-selected mass range.
18850         IF(LOOP.EQ.1) WIDW=FSUM2
18851         WID2=FSUM2
18852         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
18853      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
18854           LOOP=2
18855           GOTO 100
18856         ENDIF
18857         RET1=WIDW
18858         RET2=WID2/WIDW
18859  
18860 C...Select two decay product masses of a resonance.
18861       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
18862   220   DO 230 I=1,2
18863           IF(MBW(I).EQ.0) GOTO 230
18864           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
18865      &    (ATU(I)-ATL(I)))
18866           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
18867           RMG(I)=(PMG(I)/PMMX)**2
18868   230   CONTINUE
18869         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
18870      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
18871  
18872 C...Weight with matrix element (if none known, use beta factor).
18873         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
18874         IF(MMED.EQ.1) THEN
18875           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
18876         ELSEIF(MMED.EQ.2) THEN
18877           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
18878      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
18879         ELSEIF(MMED.EQ.3) THEN
18880           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
18881         ELSE
18882           WTBE=FLAM
18883         ENDIF
18884         IF(WTBE.LT.PYR(0)) GOTO 220
18885         RET1=PMG(1)
18886         RET2=PMG(2)
18887  
18888 C...Find suitable set of masses for initialization of 2 -> 2 processes.
18889       ELSEIF(MOFSH.EQ.3) THEN
18890         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
18891           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
18892           PMG(2)=PMD(2)
18893         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
18894           PMG(1)=PMD(1)
18895           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
18896         ELSE
18897           IDIV=-1
18898   240     IDIV=IDIV+1
18899           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
18900           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
18901           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
18902         ENDIF
18903         RET1=PMG(1)
18904         RET2=PMG(2)
18905  
18906 C...Evaluate importance of excluded tails of Breit-Wigners.
18907         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
18908      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
18909         IF(MEQL.LE.1) THEN
18910           VINT(80)=1D0
18911           DO 250 I=1,2
18912             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
18913      &      PARU(1)
18914   250     CONTINUE
18915         ELSE
18916           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
18917      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
18918         ENDIF
18919         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
18920      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
18921         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
18922         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
18923  
18924 C...Pick one particle to be the lighter (if improves efficiency).
18925       ELSEIF(MOFSH.EQ.4) THEN
18926         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
18927      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
18928   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
18929  
18930 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
18931         DO 270 I=1,2
18932           IF(MBW(I).EQ.0) GOTO 270
18933           PMV=PMU(I)
18934           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
18935           ATV=ATU(I)
18936           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
18937           RBR=PYR(0)
18938           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
18939      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
18940           IF(RBR.LT.0.8D0) THEN
18941             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
18942             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
18943           ELSEIF(RBR.LT.0.9D0) THEN
18944             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
18945           ELSEIF(RBR.LT.1.5D0) THEN
18946             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
18947           ELSE
18948             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
18949      &      (PMV**2-PML(I)**2))))
18950           ENDIF
18951   270   CONTINUE
18952         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
18953      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
18954           IF(MINT(48).EQ.1) THEN
18955             NGEN(0,1)=NGEN(0,1)+1
18956             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
18957             GOTO 260
18958           ELSE
18959             MINT(51)=1
18960             RETURN
18961           ENDIF
18962         ENDIF
18963         RET1=PMG(1)
18964         RET2=PMG(2)
18965  
18966 C...Give weight for selected mass distribution.
18967         VINT(80)=1D0
18968         DO 280 I=1,2
18969           IF(MBW(I).EQ.0) GOTO 280
18970           PMV=PMU(I)
18971           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
18972           ATV=ATU(I)
18973           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
18974           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
18975      &    (PMD(I)*PGD(I))**2)/PARU(1)
18976           F1=1D0
18977           F2=1D0/PMG(I)**2
18978           F3=1D0/PMG(I)**4
18979           FI0=(ATV-ATL(I))/PARU(1)
18980           FI1=PMV**2-PML(I)**2
18981           FI2=2D0*LOG(PMV/PML(I))
18982           FI3=1D0/PML(I)**2-1D0/PMV**2
18983           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
18984      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
18985             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
18986      &      5D0*F3/FI3))
18987           ELSE
18988             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
18989           ENDIF
18990           VINT(80)=VINT(80)*FI0
18991   280   CONTINUE
18992         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
18993       ENDIF
18994  
18995       RETURN
18996       END
18997  
18998 C***********************************************************************
18999  
19000 C...PYRECO
19001 C...Handles the possibility of colour reconnection in W+W- events,
19002 C...Based on the main scenarios of the Sjostrand and Khoze study:
19003 C...I, II, II', intermediate and instantaneous; plus one model
19004 C...along the lines of the Gustafson and Hakkinen: GH.
19005 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
19006 C...is as if first resonance is W+ and second W-.
19007  
19008       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
19009  
19010 C...Double precision and integer declarations.
19011       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19012       IMPLICIT INTEGER(I-N)
19013       INTEGER PYK,PYCHGE,PYCOMP
19014 C...Parameter value; number of points in MC integration.
19015       PARAMETER (NPT=100)
19016 C...Commonblocks.
19017       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19018       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19019       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19020       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19021       COMMON/PYINT1/MINT(400),VINT(400)
19022       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
19023 C...Local arrays.
19024       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
19025      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
19026      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
19027      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
19028      &TMC(20),IJOIN(100)
19029  
19030 C...Functions to give four-product and to do determinants.
19031       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)
19032       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
19033      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
19034      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
19035  
19036 C...Only allow fraction of recoupling for GH, intermediate and
19037 C...instantaneous.
19038       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
19039         IF(PYR(0).GT.PARP(120)) RETURN
19040       ENDIF
19041       ISUB=MINT(1)
19042  
19043 C...Common part for scenarios I, II, II', and GH.
19044       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
19045      &MSTP(115).EQ.5) THEN
19046  
19047 C...Read out frequently-used parameters.
19048         PI=PARU(1)
19049         HBAR=PARU(3)
19050         PMW=PMAS(24,1)
19051         IF(ISUB.EQ.22) PMW=PMAS(23,1)
19052         PGW=PMAS(24,2)
19053         IF(ISUB.EQ.22) PGW=PMAS(23,2)
19054         TFRAG=PARP(115)
19055         RHAD=PARP(116)
19056         FACT=PARP(117)
19057         BLOWR=PARP(118)
19058         BLOWT=PARP(119)
19059  
19060 C...Find range of decay products of the W's.
19061 C...Background: the W's are stored in IW1 and IW2.
19062 C...Their direct decay products in NSD1+1 through NSD1+4.
19063 C...Products after shower (if any) in NSD1+5 through NAFT1
19064 C...for first W and in NAFT1+1 through N for the second.
19065         IF(NAFT1.GT.NSD1+4) THEN
19066           NBEG(1)=NSD1+5
19067           NEND(1)=NAFT1
19068         ELSE
19069           NBEG(1)=NSD1+1
19070           NEND(1)=NSD1+2
19071         ENDIF
19072         IF(N.GT.NAFT1) THEN
19073           NBEG(2)=NAFT1+1
19074           NEND(2)=N
19075         ELSE
19076           NBEG(2)=NSD1+3
19077           NEND(2)=NSD1+4
19078         ENDIF
19079  
19080 C...Rearrange parton shower products along strings.
19081         NOLD=N
19082         CALL PYPREP(NSD1+1)
19083  
19084 C...Find partons pointing back to W+ and W-; store them with quark
19085 C...end of string first.
19086         NNP=0
19087         NNM=0
19088         ISGP=0
19089         ISGM=0
19090         DO 120 I=NOLD+1,N
19091           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
19092           IF(IABS(K(I,2)).GE.22) GOTO 120
19093           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
19094             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
19095             NNP=NNP+1
19096             IF(ISGP.EQ.1) THEN
19097               INP(NNP)=I
19098             ELSE
19099               DO 100 I1=NNP,2,-1
19100                 INP(I1)=INP(I1-1)
19101   100         CONTINUE
19102               INP(1)=I
19103             ENDIF
19104             IF(K(I,1).EQ.1) ISGP=0
19105           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
19106             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
19107             NNM=NNM+1
19108             IF(ISGM.EQ.1) THEN
19109               INM(NNM)=I
19110             ELSE
19111               DO 110 I1=NNM,2,-1
19112                 INM(I1)=INM(I1-1)
19113   110         CONTINUE
19114               INM(1)=I
19115             ENDIF
19116             IF(K(I,1).EQ.1) ISGM=0
19117           ENDIF
19118   120   CONTINUE
19119  
19120 C...Boost to W+W- rest frame (not strictly needed).
19121         DO 130 J=1,3
19122           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
19123   130   CONTINUE
19124         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19125         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19126         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
19127  
19128 C...Select decay vertices of W+ and W-.
19129         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
19130      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
19131         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
19132      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
19133         GTMAX=MAX(TP,TM)
19134         DO 140 J=1,3
19135           XP(J)=TP*P(IW1,J)/P(IW1,4)
19136           XM(J)=TM*P(IW2,J)/P(IW2,4)
19137   140   CONTINUE
19138  
19139 C...Begin scenario I specifics.
19140         IF(MSTP(115).EQ.1) THEN
19141  
19142 C...Reconstruct velocity and direction of W+ string pieces.
19143           DO 170 IIP=1,NNP-1
19144             IF(K(INP(IIP),2).LT.0) GOTO 170
19145             I1=INP(IIP)
19146             I2=INP(IIP+1)
19147             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
19148             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
19149             DO 150 J=1,3
19150               V1(J)=P(I1,J)/P1A
19151               V2(J)=P(I2,J)/P2A
19152               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
19153               DIRP(IIP,J)=V1(J)-V2(J)
19154   150       CONTINUE
19155             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
19156      &      BETP(IIP,3)**2)
19157             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
19158             DO 160 J=1,3
19159               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
19160   160       CONTINUE
19161   170     CONTINUE
19162  
19163 C...Reconstruct velocity and direction of W- string pieces.
19164           DO 200 IIM=1,NNM-1
19165             IF(K(INM(IIM),2).LT.0) GOTO 200
19166             I1=INM(IIM)
19167             I2=INM(IIM+1)
19168             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
19169             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
19170             DO 180 J=1,3
19171               V1(J)=P(I1,J)/P1A
19172               V2(J)=P(I2,J)/P2A
19173               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
19174               DIRM(IIM,J)=V1(J)-V2(J)
19175   180       CONTINUE
19176             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
19177      &      BETM(IIM,3)**2)
19178             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
19179             DO 190 J=1,3
19180               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
19181   190       CONTINUE
19182   200     CONTINUE
19183  
19184 C...Loop over number of space-time points.
19185           NACC=0
19186           SUM=0D0
19187           DO 250 IPT=1,NPT
19188  
19189 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
19190             R=SQRT(-LOG(PYR(0)))
19191             PHI=2D0*PI*PYR(0)
19192             X=BLOWR*RHAD*R*COS(PHI)
19193             Y=BLOWR*RHAD*R*SIN(PHI)
19194             R=SQRT(-LOG(PYR(0)))
19195             PHI=2D0*PI*PYR(0)
19196             Z=BLOWR*RHAD*R*COS(PHI)
19197             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
19198  
19199 C...Reject impossible points. Weight for sample distribution.
19200             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
19201             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
19202      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
19203  
19204 C...Loop over W+ string pieces and find one with largest weight.
19205             IMAXP=0
19206             WTMAXP=1D-10
19207             XD(1)=X-XP(1)
19208             XD(2)=Y-XP(2)
19209             XD(3)=Z-XP(3)
19210             XD(4)=T-TP
19211             DO 220 IIP=1,NNP-1
19212               IF(K(INP(IIP),2).LT.0) GOTO 220
19213               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
19214               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
19215               DO 210 J=1,3
19216                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
19217   210         CONTINUE
19218               XB(4)=BETP(IIP,4)*(XD(4)-BED)
19219               SR2=XB(1)**2+XB(2)**2+XB(3)**2
19220               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
19221      &        DIRP(IIP,3)*XB(3))**2
19222               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
19223      &        TFRAG**2)
19224               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
19225               IF(WTP.GT.WTMAXP) THEN
19226                 IMAXP=IIP
19227                 WTMAXP=WTP
19228               ENDIF
19229   220       CONTINUE
19230  
19231 C...Loop over W- string pieces and find one with largest weight.
19232             IMAXM=0
19233             WTMAXM=1D-10
19234             XD(1)=X-XM(1)
19235             XD(2)=Y-XM(2)
19236             XD(3)=Z-XM(3)
19237             XD(4)=T-TM
19238             DO 240 IIM=1,NNM-1
19239               IF(K(INM(IIM),2).LT.0) GOTO 240
19240               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
19241               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
19242               DO 230 J=1,3
19243                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
19244   230         CONTINUE
19245               XB(4)=BETM(IIM,4)*(XD(4)-BED)
19246               SR2=XB(1)**2+XB(2)**2+XB(3)**2
19247               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
19248      &        DIRM(IIM,3)*XB(3))**2
19249               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
19250      &        TFRAG**2)
19251               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
19252               IF(WTM.GT.WTMAXM) THEN
19253                 IMAXM=IIM
19254                 WTMAXM=WTM
19255               ENDIF
19256   240       CONTINUE
19257  
19258 C...Result of integration.
19259             WT=0D0
19260             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
19261               WT=WTMAXP*WTMAXM/WTSMP
19262               SUM=SUM+WT
19263               NACC=NACC+1
19264               IAP(NACC)=IMAXP
19265               IAM(NACC)=IMAXM
19266               WTA(NACC)=WT
19267             ENDIF
19268   250     CONTINUE
19269           RES=BLOWR**3*BLOWT*SUM/NPT
19270  
19271 C...Decide whether to reconnect and, if so, where.
19272           IACC=0
19273           PREC=1D0-EXP(-FACT*RES)
19274           IF(PREC.GT.PYR(0)) THEN
19275             RSUM=PYR(0)*SUM
19276             DO 260 IA=1,NACC
19277               IACC=IA
19278               RSUM=RSUM-WTA(IA)
19279               IF(RSUM.LE.0D0) GOTO 270
19280   260       CONTINUE
19281   270       IIP=IAP(IACC)
19282             IIM=IAM(IACC)
19283           ENDIF
19284  
19285 C...Begin scenario II and II' specifics.
19286         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
19287  
19288 C...Loop through all string pieces, one from W+ and one from W-.
19289           NCROSS=0
19290           TC(0)=0D0
19291           DO 340 IIP=1,NNP-1
19292             IF(K(INP(IIP),2).LT.0) GOTO 340
19293             I1P=INP(IIP)
19294             I2P=INP(IIP+1)
19295             DO 330 IIM=1,NNM-1
19296               IF(K(INM(IIM),2).LT.0) GOTO 330
19297               I1M=INM(IIM)
19298               I2M=INM(IIM+1)
19299  
19300 C...Find endpoint velocity vectors.
19301               DO 280 J=1,3
19302                 V1P(J)=P(I1P,J)/P(I1P,4)
19303                 V2P(J)=P(I2P,J)/P(I2P,4)
19304                 V1M(J)=P(I1M,J)/P(I1M,4)
19305                 V2M(J)=P(I2M,J)/P(I2M,4)
19306   280         CONTINUE
19307  
19308 C...Define q matrix and find t.
19309               DO 290 J=1,3
19310                 Q(1,J)=V2P(J)-V1P(J)
19311                 Q(2,J)=-(V2M(J)-V1M(J))
19312                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
19313                 Q(4,J)=V1P(J)-V1M(J)
19314   290         CONTINUE
19315               T=-DETER(1,2,3)/DETER(1,2,4)
19316  
19317 C...Find alpha and beta; i.e. coordinates of crossing point.
19318               S11=Q(1,1)*(T-TP)
19319               S12=Q(2,1)*(T-TM)
19320               S13=Q(3,1)+Q(4,1)*T
19321               S21=Q(1,2)*(T-TP)
19322               S22=Q(2,2)*(T-TM)
19323               S23=Q(3,2)+Q(4,2)*T
19324               DEN=S11*S22-S12*S21
19325               ALP=(S12*S23-S22*S13)/DEN
19326               BET=(S21*S13-S11*S23)/DEN
19327  
19328 C...Check if solution acceptable.
19329               IANSW=1
19330               IF(T.LT.GTMAX) IANSW=0
19331               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
19332               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
19333  
19334 C...Find point of crossing and check that not inconsistent.
19335               DO 300 J=1,3
19336                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
19337                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
19338   300         CONTINUE
19339               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
19340      &        (XPP(3)-XMM(3))**2
19341               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
19342               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
19343               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
19344  
19345 C...Find string eigentimes at crossing.
19346               IF(IANSW.EQ.1) THEN
19347                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
19348      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
19349                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
19350      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
19351               ELSE
19352                 TAUP=0D0
19353                 TAUM=0D0
19354               ENDIF
19355  
19356 C...Order crossings by time. End loop over crossings.
19357               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
19358                 NCROSS=NCROSS+1
19359                 DO 310 I1=NCROSS,1,-1
19360                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
19361                     IPC(I1)=IIP
19362                     IMC(I1)=IIM
19363                     TC(I1)=T
19364                     TPC(I1)=TAUP
19365                     TMC(I1)=TAUM
19366                     GOTO 320
19367                   ELSE
19368                     IPC(I1)=IPC(I1-1)
19369                     IMC(I1)=IMC(I1-1)
19370                     TC(I1)=TC(I1-1)
19371                     TPC(I1)=TPC(I1-1)
19372                     TMC(I1)=TMC(I1-1)
19373                   ENDIF
19374   310           CONTINUE
19375   320           CONTINUE
19376               ENDIF
19377   330       CONTINUE
19378   340     CONTINUE
19379  
19380 C...Loop over crossings; find first (if any) acceptable one.
19381           IACC=0
19382           IF(NCROSS.GE.1) THEN
19383             DO 350 IC=1,NCROSS
19384               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
19385               IF(PNFRAG.GT.PYR(0)) THEN
19386 C...Scenario II: only compare with fragmentation time.
19387                 IF(MSTP(115).EQ.2) THEN
19388                   IACC=IC
19389                   IIP=IPC(IACC)
19390                   IIM=IMC(IACC)
19391                   GOTO 360
19392 C...Scenario II': also require that string length decreases.
19393                 ELSE
19394                   IIP=IPC(IC)
19395                   IIM=IMC(IC)
19396                   I1P=INP(IIP)
19397                   I2P=INP(IIP+1)
19398                   I1M=INM(IIM)
19399                   I2M=INM(IIM+1)
19400                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
19401                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
19402                   IF(ELNEW.LT.ELOLD) THEN
19403                     IACC=IC
19404                     IIP=IPC(IACC)
19405                     IIM=IMC(IACC)
19406                     GOTO 360
19407                   ENDIF
19408                 ENDIF
19409               ENDIF
19410   350       CONTINUE
19411   360       CONTINUE
19412           ENDIF
19413  
19414 C...Begin scenario GH specifics.
19415         ELSEIF(MSTP(115).EQ.5) THEN
19416  
19417 C...Loop through all string pieces, one from W+ and one from W-.
19418           IACC=0
19419           ELMIN=1D0
19420           DO 380 IIP=1,NNP-1
19421             IF(K(INP(IIP),2).LT.0) GOTO 380
19422             I1P=INP(IIP)
19423             I2P=INP(IIP+1)
19424             DO 370 IIM=1,NNM-1
19425               IF(K(INM(IIM),2).LT.0) GOTO 370
19426               I1M=INM(IIM)
19427               I2M=INM(IIM+1)
19428  
19429 C...Look for largest decrease of (exponent of) Lambda measure.
19430               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
19431               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
19432               ELDIF=ELNEW/MAX(1D-10,ELOLD)
19433               IF(ELDIF.LT.ELMIN) THEN
19434                 IACC=IIP+IIM
19435                 ELMIN=ELDIF
19436                 IPC(1)=IIP
19437                 IMC(1)=IIM
19438               ENDIF
19439   370       CONTINUE
19440   380     CONTINUE
19441           IIP=IPC(1)
19442           IIM=IMC(1)
19443         ENDIF
19444  
19445 C...Common for scenarios I, II, II' and GH: reconnect strings.
19446         IF(IACC.NE.0) THEN
19447           MINT(32)=1
19448           NJOIN=0
19449           DO 390 IS=1,NNP+NNM
19450             NJOIN=NJOIN+1
19451             IF(IS.LE.IIP) THEN
19452               I=INP(IS)
19453             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
19454               I=INM(IS-IIP+IIM)
19455             ELSEIF(IS.LE.IIP+NNM) THEN
19456               I=INM(IS-IIP-NNM+IIM)
19457             ELSE
19458               I=INP(IS-NNM)
19459             ENDIF
19460             IJOIN(NJOIN)=I
19461             IF(K(I,2).LT.0) THEN
19462               CALL PYJOIN(NJOIN,IJOIN)
19463               NJOIN=0
19464             ENDIF
19465   390     CONTINUE
19466  
19467 C...Restore original event record if no reconnection.
19468         ELSE
19469           DO 400 I=NSD1+1,NOLD
19470             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
19471               K(I,4)=MOD(K(I,4),MSTU(5)**2)
19472               K(I,5)=MOD(K(I,5),MSTU(5)**2)
19473             ENDIF
19474   400     CONTINUE
19475           DO 410 I=NOLD+1,N
19476             K(K(I,3),1)=3
19477   410     CONTINUE
19478           N=NOLD
19479         ENDIF
19480  
19481 C...Boost back system.
19482         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
19483         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
19484         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
19485      &  BEWW(1),BEWW(2),BEWW(3))
19486  
19487 C...Common part for intermediate and instantaneous scenarios.
19488       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
19489         MINT(32)=1
19490  
19491 C...Remove old shower products and reset showering ones.
19492         N=NSD1+4
19493         DO 420 I=NSD1+1,NSD1+4
19494           K(I,1)=3
19495           K(I,4)=MOD(K(I,4),MSTU(5)**2)
19496           K(I,5)=MOD(K(I,5),MSTU(5)**2)
19497   420   CONTINUE
19498  
19499 C...Identify quark-antiquark pairs.
19500         IQ1=NSD1+1
19501         IQ2=NSD1+2
19502         IQ3=NSD1+3
19503         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
19504         IQ4=2*NSD1+7-IQ3
19505  
19506 C...Reconnect strings.
19507         IJOIN(1)=IQ1
19508         IJOIN(2)=IQ4
19509         CALL PYJOIN(2,IJOIN)
19510         IJOIN(1)=IQ3
19511         IJOIN(2)=IQ2
19512         CALL PYJOIN(2,IJOIN)
19513  
19514 C...Do new parton showers in intermediate scenario.
19515         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
19516           MSTJ50=MSTJ(50)
19517           MSTJ(50)=0
19518           CALL PYSHOW(IQ1,IQ2,P(IW1,5))
19519           CALL PYSHOW(IQ3,IQ4,P(IW2,5))
19520           MSTJ(50)=MSTJ50
19521  
19522 C...Do new parton showers in instantaneous scenario.
19523         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
19524           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
19525      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
19526           PPM=SQRT(MAX(0D0,PPM2))
19527           CALL PYSHOW(IQ1,IQ4,PPM)
19528           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
19529      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
19530           PPM=SQRT(MAX(0D0,PPM2))
19531           CALL PYSHOW(IQ3,IQ2,PPM)
19532         ENDIF
19533       ENDIF
19534  
19535       RETURN
19536       END
19537  
19538 C***********************************************************************
19539  
19540 C...PYKLIM
19541 C...Checks generated variables against pre-set kinematical limits;
19542 C...also calculates limits on variables used in generation.
19543  
19544       SUBROUTINE PYKLIM(ILIM)
19545  
19546 C...Double precision and integer declarations.
19547       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19548       IMPLICIT INTEGER(I-N)
19549       INTEGER PYK,PYCHGE,PYCOMP
19550 C...Commonblocks.
19551       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19552       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19553       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19554       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
19555       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19556       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19557       COMMON/PYINT1/MINT(400),VINT(400)
19558       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19559       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
19560      &/PYINT1/,/PYINT2/
19561  
19562 C...Common kinematical expressions.
19563       MINT(51)=0
19564       ISUB=MINT(1)
19565       ISTSB=ISET(ISUB)
19566       IF(ISUB.EQ.96) GOTO 100
19567       SQM3=VINT(63)
19568       SQM4=VINT(64)
19569       IF(ILIM.NE.0) THEN
19570         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
19571           CKIN09=MAX(CKIN(9),CKIN(13))
19572           CKIN10=MIN(CKIN(10),CKIN(14))
19573           CKIN11=MAX(CKIN(11),CKIN(15))
19574           CKIN12=MIN(CKIN(12),CKIN(16))
19575         ELSE
19576           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
19577           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
19578           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
19579           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
19580         ENDIF
19581       ENDIF
19582       IF(ILIM.NE.1) THEN
19583         TAU=VINT(21)
19584         RM3=SQM3/(TAU*VINT(2))
19585         RM4=SQM4/(TAU*VINT(2))
19586         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
19587       ENDIF
19588       PTHMIN=CKIN(3)
19589       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
19590      &PTHMIN=MAX(CKIN(3),CKIN(5))
19591  
19592       IF(ILIM.EQ.0) THEN
19593 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
19594 C...pre-set kinematical limits.
19595         YST=VINT(22)
19596         CTH=VINT(23)
19597         TAUP=VINT(26)
19598         TAUE=TAU
19599         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
19600         X1=SQRT(TAUE)*EXP(YST)
19601         X2=SQRT(TAUE)*EXP(-YST)
19602         XF=X1-X2
19603         IF(MINT(47).NE.1) THEN
19604           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
19605           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
19606           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
19607           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
19608         ENDIF
19609         IF(MINT(45).NE.1) THEN
19610           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
19611         ENDIF
19612         IF(MINT(46).NE.1) THEN
19613           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
19614         ENDIF
19615         IF(MINT(45).EQ.2) THEN
19616           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
19617         ENDIF
19618         IF(MINT(46).EQ.2) THEN
19619           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
19620         ENDIF
19621         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
19622           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
19623           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
19624      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
19625           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
19626      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
19627           Y3=YST+0.5D0*LOG(EXPY3)
19628           Y4=YST+0.5D0*LOG(EXPY4)
19629           YLARGE=MAX(Y3,Y4)
19630           YSMALL=MIN(Y3,Y4)
19631           ETALAR=20D0
19632           ETASMA=-20D0
19633           STH=SQRT(MAX(0D0,1D0-CTH**2))
19634           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
19635      &    CTH)**2-4D0*RM3))
19636           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
19637      &    CTH)**2-4D0*RM4))
19638           IF(STH.GE.1D-10) THEN
19639             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
19640      &      (BE34*STH)
19641             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
19642      &      (BE34*STH)
19643             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
19644             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
19645             ETALAR=MAX(ETA3,ETA4)
19646             ETASMA=MIN(ETA3,ETA4)
19647           ENDIF
19648           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
19649           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
19650           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
19651           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
19652           SH=TAU*VINT(2)
19653           RPTS=4D0*VINT(71)**2/SH
19654           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
19655           RM34=MAX(1D-20,2D0*RM3*RM4)
19656           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
19657      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
19658           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
19659           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
19660           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
19661           IF(PTH.LT.PTHMIN) MINT(51)=1
19662           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
19663           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
19664           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
19665           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
19666           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
19667           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
19668           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
19669           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
19670           IF(THA.LT.CKIN(35)) MINT(51)=1
19671           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
19672           IF(UHA.LT.CKIN(37)) MINT(51)=1
19673           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
19674         ENDIF
19675         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
19676           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
19677           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
19678         ENDIF
19679  
19680 C...Additional cuts on W2 (approximately) in DIS.
19681         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
19682           XBJ=X2
19683           IF(IABS(MINT(12)).LT.20) XBJ=X1
19684           Q2BJ=THA
19685           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
19686           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
19687           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
19688         ENDIF
19689  
19690       ELSEIF(ILIM.EQ.1) THEN
19691 C...Calculate limits on tau
19692 C...0) due to definition
19693         TAUMN0=0D0
19694         TAUMX0=1D0
19695 C...1) due to limits on subsystem mass
19696         TAUMN1=CKIN(1)**2/VINT(2)
19697         TAUMX1=1D0
19698         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
19699 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
19700         TM3=SQRT(SQM3+PTHMIN**2)
19701         TM4=SQRT(SQM4+PTHMIN**2)
19702         YDCOSH=1D0
19703         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
19704         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
19705         TAUMX2=1D0
19706 C...3) due to limits on pT-hat and cos(theta-hat)
19707         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
19708         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
19709         TAUMN3=0D0
19710         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
19711      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
19712      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
19713         TAUMX3=1D0
19714         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
19715      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
19716      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
19717 C...4) due to limits on x1 and x2
19718         TAUMN4=CKIN(21)*CKIN(23)
19719         TAUMX4=CKIN(22)*CKIN(24)
19720 C...5) due to limits on xF
19721         TAUMN5=0D0
19722         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
19723 C...6) due to limits on that and uhat
19724         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
19725         TAUMX6=1D0
19726         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
19727      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
19728  
19729 C...Net effect of all separate limits.
19730         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
19731         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
19732         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
19733           VINT(11)=1D0-1D-9
19734           VINT(31)=1D0+1D-9
19735         ELSEIF(MINT(47).EQ.5) THEN
19736           VINT(31)=MIN(VINT(31),1D0-2D-10)
19737         ELSEIF(MINT(47).GE.6) THEN
19738           VINT(31)=MIN(VINT(31),1D0-1D-10)
19739         ENDIF
19740         IF(VINT(31).LE.VINT(11)) MINT(51)=1
19741  
19742       ELSEIF(ILIM.EQ.2) THEN
19743 C...Calculate limits on y*
19744         TAUE=TAU
19745         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
19746         TAURT=SQRT(TAUE)
19747 C...0) due to kinematics
19748         YSTMN0=LOG(TAURT)
19749         YSTMX0=-YSTMN0
19750 C...1) due to explicit limits
19751         YSTMN1=CKIN(7)
19752         YSTMX1=CKIN(8)
19753 C...2) due to limits on x1
19754         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
19755         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
19756 C...3) due to limits on x2
19757         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
19758         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
19759 C...4) due to limits on xF
19760         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
19761         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
19762         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
19763         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
19764 C...5) due to simultaneous limits on y-large and y-small
19765         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
19766         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
19767         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
19768         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
19769         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
19770         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
19771 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
19772 C...   y-small
19773         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
19774         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
19775         RZMX=BE34*MIN(CKIN(28),CTHLIM)
19776         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
19777         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
19778         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
19779         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
19780         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
19781         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
19782  
19783 C...Net effect of all separate limits.
19784         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
19785         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
19786         IF(MINT(47).EQ.1) THEN
19787           VINT(12)=-1D-9
19788           VINT(32)=1D-9
19789         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
19790           VINT(12)=(1D0-1D-9)*YSTMX0
19791           VINT(32)=(1D0+1D-9)*YSTMX0
19792         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
19793           VINT(12)=-(1D0+1D-9)*YSTMX0
19794           VINT(32)=-(1D0-1D-9)*YSTMX0
19795         ELSEIF(MINT(47).EQ.5) THEN
19796           YSTEE=LOG((1D0-1D-10)/TAURT)
19797           VINT(12)=MAX(VINT(12),-YSTEE)
19798           VINT(32)=MIN(VINT(32),YSTEE)
19799         ENDIF
19800         IF(VINT(32).LE.VINT(12)) MINT(51)=1
19801  
19802       ELSEIF(ILIM.EQ.3) THEN
19803 C...Calculate limits on cos(theta-hat)
19804         YST=VINT(22)
19805 C...0) due to definition
19806         CTNMN0=-1D0
19807         CTNMX0=0D0
19808         CTPMN0=0D0
19809         CTPMX0=1D0
19810 C...1) due to explicit limits
19811         CTNMN1=MIN(0D0,CKIN(27))
19812         CTNMX1=MIN(0D0,CKIN(28))
19813         CTPMN1=MAX(0D0,CKIN(27))
19814         CTPMX1=MAX(0D0,CKIN(28))
19815 C...2) due to limits on pT-hat
19816         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
19817         CTPMX2=-CTNMN2
19818         CTNMX2=0D0
19819         CTPMN2=0D0
19820         IF(CKIN(4).GE.0D0) THEN
19821           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
19822      &    (BE34**2*TAU*VINT(2))))
19823           CTPMN2=-CTNMX2
19824         ENDIF
19825 C...3) due to limits on y-large and y-small
19826         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
19827      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
19828         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
19829      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
19830         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
19831      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
19832         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
19833      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
19834 C...4) due to limits on that
19835         CTNMN4=-1D0
19836         CTNMX4=0D0
19837         CTPMN4=0D0
19838         CTPMX4=1D0
19839         SH=TAU*VINT(2)
19840         IF(CKIN(35).GT.0D0) THEN
19841           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
19842           IF(CTLIM.GT.0D0) THEN
19843             CTPMX4=CTLIM
19844           ELSE
19845             CTPMX4=0D0
19846             CTNMX4=CTLIM
19847           ENDIF
19848         ENDIF
19849         IF(CKIN(36).GT.0D0) THEN
19850           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
19851           IF(CTLIM.LT.0D0) THEN
19852             CTNMN4=CTLIM
19853           ELSE
19854             CTNMN4=0D0
19855             CTPMN4=CTLIM
19856           ENDIF
19857         ENDIF
19858 C...5) due to limits on uhat
19859         CTNMN5=-1D0
19860         CTNMX5=0D0
19861         CTPMN5=0D0
19862         CTPMX5=1D0
19863         IF(CKIN(37).GT.0D0) THEN
19864           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
19865           IF(CTLIM.LT.0D0) THEN
19866             CTNMN5=CTLIM
19867           ELSE
19868             CTNMN5=0D0
19869             CTPMN5=CTLIM
19870           ENDIF
19871         ENDIF
19872         IF(CKIN(38).GT.0D0) THEN
19873           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
19874           IF(CTLIM.GT.0D0) THEN
19875             CTPMX5=CTLIM
19876           ELSE
19877             CTPMX5=0D0
19878             CTNMX5=CTLIM
19879           ENDIF
19880         ENDIF
19881  
19882 C...Net effect of all separate limits.
19883         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
19884         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
19885         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
19886         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
19887         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
19888  
19889       ELSEIF(ILIM.EQ.4) THEN
19890 C...Calculate limits on tau'
19891 C...0) due to kinematics
19892         TAPMN0=TAU
19893         IF(ISTSB.EQ.5.AND.KFPR(ISUB,2).GT.0) THEN
19894           PQRAT=2D0*PMAS(PYCOMP(KFPR(ISUB,2)),1)/VINT(1)
19895           TAPMN0=(SQRT(TAU)+PQRAT)**2
19896         ENDIF
19897         TAPMX0=1D0
19898 C...1) due to explicit limits
19899         TAPMN1=CKIN(31)**2/VINT(2)
19900         TAPMX1=1D0
19901         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
19902  
19903 C...Net effect of all separate limits.
19904         VINT(16)=MAX(TAPMN0,TAPMN1)
19905         VINT(36)=MIN(TAPMX0,TAPMX1)
19906         IF(MINT(47).EQ.1) THEN
19907           VINT(16)=1D0-1D-9
19908           VINT(36)=1D0+1D-9
19909         ELSEIF(MINT(47).EQ.5) THEN
19910           VINT(36)=MIN(VINT(36),1D0-2D-10)
19911         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
19912           VINT(36)=MIN(VINT(36),1D0-1D-10)
19913         ENDIF
19914         IF(VINT(36).LE.VINT(16)) MINT(51)=1
19915  
19916       ENDIF
19917       RETURN
19918  
19919 C...Special case for low-pT and multiple interactions:
19920 C...effective kinematical limits for tau, y*, cos(theta-hat).
19921   100 IF(ILIM.EQ.0) THEN
19922       ELSEIF(ILIM.EQ.1) THEN
19923         IF(MSTP(82).LE.1) THEN
19924           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
19925      &    VINT(2)
19926         ELSE
19927           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
19928         ENDIF
19929         VINT(31)=1D0
19930       ELSEIF(ILIM.EQ.2) THEN
19931         VINT(12)=0.5D0*LOG(VINT(21))
19932         VINT(32)=-VINT(12)
19933       ELSEIF(ILIM.EQ.3) THEN
19934         IF(MSTP(82).LE.1) THEN
19935           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
19936      &    (VINT(21)*VINT(2))
19937         ELSE
19938           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19939      &    (VINT(21)*VINT(2))
19940         ENDIF
19941         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
19942         VINT(33)=0D0
19943         VINT(14)=0D0
19944         VINT(34)=-VINT(13)
19945       ENDIF
19946  
19947       RETURN
19948       END
19949  
19950 C*********************************************************************
19951  
19952 C...PYKMAP
19953 C...Maps a uniform distribution into a distribution of a kinematical
19954 C...variable according to one of the possibilities allowed. It is
19955 C...assumed that kinematical limits have been set by a PYKLIM call.
19956  
19957       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
19958  
19959 C...Double precision and integer declarations.
19960       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19961       IMPLICIT INTEGER(I-N)
19962       INTEGER PYK,PYCHGE,PYCOMP
19963 C...Commonblocks.
19964       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19965       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19966       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19967       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19968       COMMON/PYINT1/MINT(400),VINT(400)
19969       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19970       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
19971  
19972 C...Convert VVAR to tau variable.
19973       ISUB=MINT(1)
19974       ISTSB=ISET(ISUB)
19975       IF(IVAR.EQ.1) THEN
19976         TAUMIN=VINT(11)
19977         TAUMAX=VINT(31)
19978         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
19979           TAURE=VINT(73)
19980           GAMRE=VINT(74)
19981         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
19982           TAURE=VINT(75)
19983           GAMRE=VINT(76)
19984         ENDIF
19985         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
19986           TAU=1D0
19987         ELSEIF(MVAR.EQ.1) THEN
19988           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
19989         ELSEIF(MVAR.EQ.2) THEN
19990           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
19991         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5) THEN
19992           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
19993           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
19994         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6) THEN
19995           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
19996           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
19997           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
19998         ELSEIF(MINT(47).EQ.5) THEN
19999           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
20000           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
20001           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20002         ELSE
20003           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
20004           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
20005           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20006         ENDIF
20007         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
20008  
20009 C...Convert VVAR to y* variable.
20010       ELSEIF(IVAR.EQ.2) THEN
20011         YSTMIN=VINT(12)
20012         YSTMAX=VINT(32)
20013         TAUE=VINT(21)
20014         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
20015         IF(MINT(47).EQ.1) THEN
20016           YST=0D0
20017         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
20018           YST=-0.5D0*LOG(TAUE)
20019         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
20020           YST=0.5D0*LOG(TAUE)
20021         ELSEIF(MVAR.EQ.1) THEN
20022           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
20023         ELSEIF(MVAR.EQ.2) THEN
20024           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
20025         ELSEIF(MVAR.EQ.3) THEN
20026           AUPP=ATAN(EXP(YSTMAX))
20027           ALOW=ATAN(EXP(YSTMIN))
20028           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
20029         ELSEIF(MVAR.EQ.4) THEN
20030           YST0=-0.5D0*LOG(TAUE)
20031           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
20032           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
20033           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
20034         ELSE
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=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
20039         ENDIF
20040         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
20041  
20042 C...Convert VVAR to cos(theta-hat) variable.
20043       ELSEIF(IVAR.EQ.3) THEN
20044         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
20045         RSQM=1D0+RM34
20046         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
20047      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
20048         CTNMIN=VINT(13)
20049         CTNMAX=VINT(33)
20050         CTPMIN=VINT(14)
20051         CTPMAX=VINT(34)
20052         IF(MVAR.EQ.1) THEN
20053           ANEG=CTNMAX-CTNMIN
20054           APOS=CTPMAX-CTPMIN
20055           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20056             VCTN=VVAR*(ANEG+APOS)/ANEG
20057             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
20058           ELSE
20059             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20060             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
20061           ENDIF
20062         ELSEIF(MVAR.EQ.2) THEN
20063           RMNMIN=MAX(RM34,RSQM-CTNMIN)
20064           RMNMAX=MAX(RM34,RSQM-CTNMAX)
20065           RMPMIN=MAX(RM34,RSQM-CTPMIN)
20066           RMPMAX=MAX(RM34,RSQM-CTPMAX)
20067           ANEG=LOG(RMNMIN/RMNMAX)
20068           APOS=LOG(RMPMIN/RMPMAX)
20069           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20070             VCTN=VVAR*(ANEG+APOS)/ANEG
20071             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
20072           ELSE
20073             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20074             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
20075           ENDIF
20076         ELSEIF(MVAR.EQ.3) THEN
20077           RMNMIN=MAX(RM34,RSQM+CTNMIN)
20078           RMNMAX=MAX(RM34,RSQM+CTNMAX)
20079           RMPMIN=MAX(RM34,RSQM+CTPMIN)
20080           RMPMAX=MAX(RM34,RSQM+CTPMAX)
20081           ANEG=LOG(RMNMAX/RMNMIN)
20082           APOS=LOG(RMPMAX/RMPMIN)
20083           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20084             VCTN=VVAR*(ANEG+APOS)/ANEG
20085             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
20086           ELSE
20087             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20088             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
20089           ENDIF
20090         ELSEIF(MVAR.EQ.4) THEN
20091           RMNMIN=MAX(RM34,RSQM-CTNMIN)
20092           RMNMAX=MAX(RM34,RSQM-CTNMAX)
20093           RMPMIN=MAX(RM34,RSQM-CTPMIN)
20094           RMPMAX=MAX(RM34,RSQM-CTPMAX)
20095           ANEG=1D0/RMNMAX-1D0/RMNMIN
20096           APOS=1D0/RMPMAX-1D0/RMPMIN
20097           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20098             VCTN=VVAR*(ANEG+APOS)/ANEG
20099             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
20100           ELSE
20101             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20102             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
20103           ENDIF
20104         ELSEIF(MVAR.EQ.5) THEN
20105           RMNMIN=MAX(RM34,RSQM+CTNMIN)
20106           RMNMAX=MAX(RM34,RSQM+CTNMAX)
20107           RMPMIN=MAX(RM34,RSQM+CTPMIN)
20108           RMPMAX=MAX(RM34,RSQM+CTPMAX)
20109           ANEG=1D0/RMNMIN-1D0/RMNMAX
20110           APOS=1D0/RMPMIN-1D0/RMPMAX
20111           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
20112             VCTN=VVAR*(ANEG+APOS)/ANEG
20113             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
20114           ELSE
20115             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
20116             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
20117           ENDIF
20118         ENDIF
20119         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
20120         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
20121         VINT(23)=CTH
20122  
20123 C...Convert VVAR to tau' variable.
20124       ELSEIF(IVAR.EQ.4) THEN
20125         TAU=VINT(21)
20126         TAUPMN=VINT(16)
20127         TAUPMX=VINT(36)
20128         IF(MINT(47).EQ.1) THEN
20129           TAUP=1D0
20130         ELSEIF(MVAR.EQ.1) THEN
20131           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
20132         ELSEIF(MVAR.EQ.2) THEN
20133           AUPP=(1D0-TAU/TAUPMX)**4
20134           ALOW=(1D0-TAU/TAUPMN)**4
20135           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
20136         ELSEIF(MINT(47).EQ.5) THEN
20137           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
20138           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
20139           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20140         ELSE
20141           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
20142           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
20143           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
20144         ENDIF
20145         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
20146  
20147 C...Selection of extra variables needed in 2 -> 3 process:
20148 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
20149 C...Since no options are available, the functions of PYKLIM
20150 C...and PYKMAP are joint for these choices.
20151       ELSEIF(IVAR.EQ.5) THEN
20152  
20153 C...Read out total energy and particle masses.
20154         MINT(51)=0
20155         MPTPK=1
20156         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
20157      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
20158      &  MPTPK=2
20159         SHP=VINT(26)*VINT(2)
20160         SHPR=SQRT(SHP)
20161         PM1=VINT(201)
20162         PM2=VINT(206)
20163         PM3=SQRT(VINT(21))*VINT(1)
20164         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
20165           MINT(51)=1
20166           RETURN
20167         ENDIF
20168         PMRS1=VINT(204)**2
20169         PMRS2=VINT(209)**2
20170  
20171 C...Specify coefficients of pT choice; upper and lower limits.
20172         IF(MPTPK.EQ.1) THEN
20173           HWT1=0.4D0
20174           HWT2=0.4D0
20175         ELSE
20176           HWT1=0.05D0
20177           HWT2=0.05D0
20178         ENDIF
20179         HWT3=1D0-HWT1-HWT2
20180         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
20181      &  (4D0*SHP)
20182         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
20183         PTSMN1=CKIN(51)**2
20184         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
20185      &  (4D0*SHP)
20186         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
20187         PTSMN2=CKIN(53)**2
20188  
20189 C...Select transverse momenta according to
20190 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
20191         HMX=PMRS1+PTSMX1
20192         HMN=PMRS1+PTSMN1
20193         IF(HMX.LT.1.0001D0*HMN) THEN
20194           MINT(51)=1
20195           RETURN
20196         ENDIF
20197         HDE=PTSMX1-PTSMN1
20198         RPT=PYR(0)
20199         IF(RPT.LT.HWT1) THEN
20200           PTS1=PTSMN1+PYR(0)*HDE
20201         ELSEIF(RPT.LT.HWT1+HWT2) THEN
20202           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
20203         ELSE
20204           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
20205         ENDIF
20206         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
20207      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
20208         HMX=PMRS2+PTSMX2
20209         HMN=PMRS2+PTSMN2
20210         IF(HMX.LT.1.0001D0*HMN) THEN
20211           MINT(51)=1
20212           RETURN
20213         ENDIF
20214         HDE=PTSMX2-PTSMN2
20215         RPT=PYR(0)
20216         IF(RPT.LT.HWT1) THEN
20217           PTS2=PTSMN2+PYR(0)*HDE
20218         ELSEIF(RPT.LT.HWT1+HWT2) THEN
20219           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
20220         ELSE
20221           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
20222         ENDIF
20223         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
20224      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
20225  
20226 C...Select azimuthal angles and check pT choice.
20227         PHI1=PARU(2)*PYR(0)
20228         PHI2=PARU(2)*PYR(0)
20229         PHIR=PHI2-PHI1
20230         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
20231         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
20232      &  CKIN(56)**2)) THEN
20233           MINT(51)=1
20234           RETURN
20235         ENDIF
20236  
20237 C...Calculate transverse masses and check phase space not closed.
20238         PMS1=PM1**2+PTS1
20239         PMS2=PM2**2+PTS2
20240         PMS3=PM3**2+PTS3
20241         PMT1=SQRT(PMS1)
20242         PMT2=SQRT(PMS2)
20243         PMT3=SQRT(PMS3)
20244         PM12=(PMT1+PMT2)**2
20245         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
20246           MINT(51)=1
20247           RETURN
20248         ENDIF
20249  
20250 C...Select rapidity for particle 3 and check phase space not closed.
20251         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
20252      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
20253         IF(Y3MAX.LT.1D-6) THEN
20254           MINT(51)=1
20255           RETURN
20256         ENDIF
20257         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
20258         PZ3=PMT3*SINH(Y3)
20259         PE3=PMT3*COSH(Y3)
20260  
20261 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
20262         PZ12=-PZ3
20263         PE12=SHPR-PE3
20264         PMS12=PE12**2-PZ12**2
20265         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
20266         IF(SQL12.LT.1D-6*SHP) THEN
20267           MINT(51)=1
20268           RETURN
20269         ENDIF
20270         PMM1=PMS12+PMS1-PMS2
20271         PMM2=PMS12+PMS2-PMS1
20272         TFAC=-SHPR/(2D0*PMS12)
20273         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
20274         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
20275         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
20276         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
20277  
20278 C...Construct relative mirror weights and make choice.
20279         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
20280           WTPU=1D0
20281           WTNU=1D0
20282         ELSE
20283           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
20284           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
20285         ENDIF
20286         WTP=WTPU/(WTPU+WTNU)
20287         WTN=WTNU/(WTPU+WTNU)
20288         EPS=1D0
20289         IF(WTN.GT.PYR(0)) EPS=-1D0
20290  
20291 C...Store result of variable choice and associated weights.
20292         VINT(202)=PTS1
20293         VINT(207)=PTS2
20294         VINT(203)=PHI1
20295         VINT(208)=PHI2
20296         VINT(205)=WTPTS1
20297         VINT(210)=WTPTS2
20298         VINT(211)=Y3
20299         VINT(212)=Y3MAX
20300         VINT(213)=EPS
20301         IF(EPS.GT.0D0) THEN
20302           VINT(214)=1D0/WTP
20303           VINT(215)=T1P
20304           VINT(216)=T2P
20305         ELSE
20306           VINT(214)=1D0/WTN
20307           VINT(215)=T1N
20308           VINT(216)=T2N
20309         ENDIF
20310         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
20311         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
20312         VINT(219)=0.5D0*(PMS12-PTS3)
20313         VINT(220)=SQL12
20314       ENDIF
20315  
20316       RETURN
20317       END
20318  
20319 C***********************************************************************
20320  
20321 C...PYSIGH
20322 C...Differential matrix elements for all included subprocesses
20323 C...Note that what is coded is (disregarding the COMFAC factor)
20324 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
20325 C...when d(sigma-hat) is given in the zero-width limit, the delta
20326 C...function in tau is replaced by a (modified) Breit-Wigner:
20327 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
20328 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
20329 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
20330 C...i.e., dimensionless quantities
20331 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
20332 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
20333 C...(2pi)^4 delta^4(P - sum p_i)
20334 C...COMFAC contains the factor pi/s (or equivalent) and
20335 C...the conversion factor from GeV^-2 to mb
20336  
20337       SUBROUTINE PYSIGH(NCHN,SIGS)
20338  
20339 C...Double precision and integer declarations
20340       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20341       IMPLICIT INTEGER(I-N)
20342       INTEGER PYK,PYCHGE,PYCOMP
20343 C...Parameter statement to help give large particle numbers.
20344       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
20345      &KEXCIT=4000000,KDIMEN=5000000)
20346 C...Commonblocks
20347       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
20348       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20349       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20350       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
20351       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
20352       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20353       COMMON/PYINT1/MINT(400),VINT(400)
20354       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
20355       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
20356       COMMON/PYINT4/MWID(500),WIDS(500,5)
20357       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
20358       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
20359       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
20360       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
20361      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
20362       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
20363       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
20364      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
20365      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
20366      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
20367       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
20368      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
20369      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYSGCM/
20370 C...Local arrays and complex variables
20371       DIMENSION X(2),XPQ(-25:25)
20372  
20373 C...Map of processes onto which routine to call
20374 C...in order to evaluate cross section:
20375 C...0 = not implemented;
20376 C...1 = standard QCD (including photons);
20377 C...2 = heavy flavours;
20378 C...3 = W/Z;
20379 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
20380 C...5 = SUSY;
20381 C...6 = Technicolor;
20382 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
20383       DIMENSION MAPPR(500)
20384       DATA (MAPPR(I),I=1,180)/
20385      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
20386      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
20387      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
20388      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
20389      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
20390      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
20391      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
20392      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
20393      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
20394      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
20395      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
20396      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
20397      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
20398      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
20399      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
20400      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
20401      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
20402      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
20403       DATA (MAPPR(I),I=181,500)/
20404      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
20405      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
20406      &    100*5,
20407      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
20408      1     30*0,
20409      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
20410      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
20411      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
20412      7    6,  6,  6,  6,  6,  6,  6,  0,  0,  0,
20413      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
20414      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
20415      &    100*0/
20416  
20417 C...Reset number of channels and cross-section
20418       NCHN=0
20419       SIGS=0D0
20420  
20421 C...Read process to consider.
20422       ISUB=MINT(1)
20423       ISUBSV=ISUB
20424       MAP=MAPPR(ISUB)
20425  
20426 C...Read kinematical variables and limits
20427       ISTSB=ISET(ISUBSV)
20428       TAUMIN=VINT(11)
20429       YSTMIN=VINT(12)
20430       CTNMIN=VINT(13)
20431       CTPMIN=VINT(14)
20432       TAUPMN=VINT(16)
20433       TAU=VINT(21)
20434       YST=VINT(22)
20435       CTH=VINT(23)
20436       XT2=VINT(25)
20437       TAUP=VINT(26)
20438       TAUMAX=VINT(31)
20439       YSTMAX=VINT(32)
20440       CTNMAX=VINT(33)
20441       CTPMAX=VINT(34)
20442       TAUPMX=VINT(36)
20443  
20444 C...Derive kinematical quantities
20445       TAUE=TAU
20446       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
20447       X(1)=SQRT(TAUE)*EXP(YST)
20448       X(2)=SQRT(TAUE)*EXP(-YST)
20449       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
20450         IF(X(1).GT.1D0-1D-7) RETURN
20451       ELSEIF(MINT(45).EQ.3) THEN
20452         X(1)=MIN(1D0-1.1D-10,X(1))
20453       ENDIF
20454       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
20455         IF(X(2).GT.1D0-1D-7) RETURN
20456       ELSEIF(MINT(46).EQ.3) THEN
20457         X(2)=MIN(1D0-1.1D-10,X(2))
20458       ENDIF
20459       SH=MAX(1D0,TAU*VINT(2))
20460       SQM3=VINT(63)
20461       SQM4=VINT(64)
20462       RM3=SQM3/SH
20463       RM4=SQM4/SH
20464       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
20465       RPTS=4D0*VINT(71)**2/SH
20466       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
20467       RM34=MAX(1D-20,2D0*RM3*RM4)
20468       RSQM=1D0+RM34
20469       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
20470      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
20471       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
20472       IF(ISTSB.EQ.0) THEN
20473         TH=VINT(45)
20474         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
20475         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
20476       ELSE
20477 C...Kinematics with incoming masses tricky: now depends on how
20478 C...subprocess has been set up w.r.t. order of incoming partons.
20479         RM1=0D0
20480         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
20481         RM2=0D0
20482         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
20483         IF(ISUB.EQ.35) THEN
20484           RM2=MIN(RM1,RM2)
20485           RM1=0D0
20486         ENDIF
20487         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
20488         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
20489         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
20490      &  BE12*BE34*CTH)
20491         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
20492      &  BE12*BE34*CTH)
20493         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
20494       ENDIF
20495       SHR=SQRT(SH)
20496       SH2=SH**2
20497       TH2=TH**2
20498       UH2=UH**2
20499  
20500 C...Choice of Q2 scale: hard, parton distributions, parton showers
20501       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
20502         Q2=SH
20503       ELSEIF(ISTSB.EQ.8) THEN
20504         IF(MINT(107).EQ.4) Q2=VINT(307)
20505         IF(MINT(108).EQ.4) Q2=VINT(308)
20506       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
20507         Q2IN1=0D0
20508         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
20509         Q2IN2=0D0
20510         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
20511         IF(MSTP(32).EQ.1) THEN
20512           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
20513         ELSEIF(MSTP(32).EQ.2) THEN
20514           Q2=SQPTH+0.5D0*(SQM3+SQM4)
20515         ELSEIF(MSTP(32).EQ.3) THEN
20516           Q2=MIN(-TH,-UH)
20517         ELSEIF(MSTP(32).EQ.4) THEN
20518           Q2=SH
20519         ELSEIF(MSTP(32).EQ.5) THEN
20520           Q2=-TH
20521         ELSEIF(MSTP(32).EQ.6) THEN
20522           XSF1=X(1)
20523           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
20524           XSF2=X(2)
20525           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
20526           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
20527      &    (SQPTH+0.5D0*(SQM3+SQM4))
20528         ELSEIF(MSTP(32).EQ.7) THEN
20529           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
20530         ELSEIF(MSTP(32).EQ.8) THEN
20531           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
20532         ELSEIF(MSTP(32).EQ.9) THEN
20533           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
20534         ELSEIF(MSTP(32).EQ.10) THEN
20535           Q2=VINT(2)
20536         ENDIF
20537         IF(ISTSB.EQ.9) Q2=SQPTH
20538         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
20539      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
20540       ENDIF
20541       Q2SF=Q2
20542       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
20543         Q2SF=PMAS(23,1)**2
20544         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
20545      &  ISUB.EQ.351) Q2SF=PMAS(24,1)**2
20546         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
20547         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
20548      &  ISUB.EQ.186.OR.ISUB.EQ.187) THEN
20549           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
20550           IF(MSTP(39).EQ.2) Q2SF=Q2SF+MAX(VINT(202),VINT(207))
20551           IF(MSTP(39).EQ.3) Q2SF=SH
20552           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
20553           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
20554         ENDIF
20555       ENDIF
20556       Q2PS=Q2SF
20557       Q2SF=Q2SF*PARP(34)
20558       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
20559       IF(MSTP(69).GE.2) Q2SF=VINT(2)
20560       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
20561      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
20562         XBJ=X(2)
20563         IF(MINT(43).EQ.3) XBJ=X(1)
20564         IF(MSTP(22).EQ.1) THEN
20565           Q2PS=-TH
20566         ELSEIF(MSTP(22).EQ.2) THEN
20567           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
20568         ELSEIF(MSTP(22).EQ.3) THEN
20569           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
20570         ELSE
20571           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
20572         ENDIF
20573       ENDIF
20574       IF(MSTP(68).EQ.1.AND.(ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.
20575      &ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
20576      &ISUBSV.EQ.144.OR.ISUBSV.EQ.152.OR.ISUBSV.EQ.157)) THEN
20577         Q2PS=VINT(2)
20578       ELSEIF(MSTP(68).GE.2.AND.(ISUBSV.NE.11.AND.ISUBSV.NE.12.AND.
20579      &ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.ISUBSV.NE.53.AND.
20580      &ISUBSV.NE.68)) THEN
20581         Q2PS=VINT(2)
20582       ENDIF
20583  
20584 C...Store derived kinematical quantities
20585       VINT(41)=X(1)
20586       VINT(42)=X(2)
20587       VINT(44)=SH
20588       VINT(43)=SQRT(SH)
20589       VINT(45)=TH
20590       VINT(46)=UH
20591       IF(ISTSB.NE.8) VINT(48)=SQPTH
20592       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
20593       VINT(50)=TAUP*VINT(2)
20594       VINT(49)=SQRT(MAX(0D0,VINT(50)))
20595       VINT(52)=Q2
20596       VINT(51)=SQRT(Q2)
20597       VINT(54)=Q2SF
20598       VINT(53)=SQRT(Q2SF)
20599       VINT(56)=Q2PS
20600       VINT(55)=SQRT(Q2PS)
20601  
20602 C...Calculate parton distributions
20603       IF(ISTSB.LE.0) GOTO 160
20604       IF(MINT(47).GE.2) THEN
20605         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
20606           XSF=X(I)
20607           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
20608           IF(ISUB.EQ.99) THEN
20609             IF(MINT(140+I).EQ.0) THEN
20610               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
20611             ELSE
20612               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
20613             ENDIF
20614             VINT(40+I)=XSF
20615             Q2SF=VINT(309-I)
20616           ENDIF
20617           MINT(105)=MINT(102+I)
20618           MINT(109)=MINT(106+I)
20619           VINT(120)=VINT(2+I)
20620 C.... ALICE
20621 C.... Store side in MINT(124)
20622           MINT(124)=I
20623 C....
20624           IF(MSTP(57).LE.1) THEN
20625             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
20626           ELSE
20627             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
20628           ENDIF
20629           DO 100 KFL=-25,25
20630             XSFX(I,KFL)=XPQ(KFL)
20631   100     CONTINUE
20632   110   CONTINUE
20633       ENDIF
20634  
20635 C...Calculate alpha_em, alpha_strong and K-factor
20636       XW=PARU(102)
20637       XWV=XW
20638       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
20639      &1D0-(PMAS(24,1)/PMAS(23,1))**2
20640       XW1=1D0-XW
20641       XWC=1D0/(16D0*XW*XW1)
20642       AEM=PYALEM(Q2)
20643       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
20644       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
20645       FACK=1D0
20646       FACA=1D0
20647       IF(MSTP(33).EQ.1) THEN
20648         FACK=PARP(31)
20649       ELSEIF(MSTP(33).EQ.2) THEN
20650         FACK=PARP(31)
20651         FACA=PARP(32)/PARP(31)
20652       ELSEIF(MSTP(33).EQ.3) THEN
20653         Q2AS=PARP(33)*Q2
20654         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
20655      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
20656         AS=PYALPS(Q2AS)
20657       ENDIF
20658       VINT(138)=1D0
20659       VINT(57)=AEM
20660       VINT(58)=AS
20661  
20662 C...Set flags for allowed reacting partons/leptons
20663       DO 140 I=1,2
20664         DO 120 J=-25,25
20665           KFAC(I,J)=0
20666   120   CONTINUE
20667         IF(MINT(44+I).EQ.1) THEN
20668           KFAC(I,MINT(10+I))=1
20669         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
20670           KFAC(I,MINT(10+I))=1
20671           KFAC(I,22)=1
20672           KFAC(I,24)=1
20673           KFAC(I,-24)=1
20674         ELSE
20675           DO 130 J=-25,25
20676             KFAC(I,J)=KFIN(I,J)
20677             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
20678             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
20679   130     CONTINUE
20680         ENDIF
20681   140 CONTINUE
20682  
20683 C...Lower and upper limit for fermion flavour loops
20684       MMIN1=0
20685       MMAX1=0
20686       MMIN2=0
20687       MMAX2=0
20688       DO 150 J=-20,20
20689         IF(KFAC(1,-J).EQ.1) MMIN1=-J
20690         IF(KFAC(1,J).EQ.1) MMAX1=J
20691         IF(KFAC(2,-J).EQ.1) MMIN2=-J
20692         IF(KFAC(2,J).EQ.1) MMAX2=J
20693   150 CONTINUE
20694       MMINA=MIN(MMIN1,MMIN2)
20695       MMAXA=MAX(MMAX1,MMAX2)
20696  
20697 C...Common resonance mass and width combinations
20698       SQMZ=PMAS(23,1)**2
20699       SQMW=PMAS(24,1)**2
20700       GMMZ=PMAS(23,1)*PMAS(23,2)
20701       GMMW=PMAS(24,1)*PMAS(24,2)
20702  
20703 C...Polarization factors...implemented so far for W+W-(25)
20704       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
20705       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
20706       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
20707       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
20708  
20709 C...Phase space integral in tau
20710       COMFAC=PARU(1)*PARU(5)/VINT(2)
20711       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
20712       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
20713      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
20714         ATAU1=LOG(TAUMAX/TAUMIN)
20715         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
20716         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
20717         IF(MINT(72).GE.1) THEN
20718           TAUR1=VINT(73)
20719           GAMR1=VINT(74)
20720           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
20721           ATAU3=ATAUD/TAUR1
20722           IF(ATAUD.GT.1D-10) H1=H1+
20723      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
20724           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
20725           ATAU4=ATAUD/GAMR1
20726           IF(ATAUD.GT.1D-10) H1=H1+
20727      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
20728         ENDIF
20729         IF(MINT(72).EQ.2) THEN
20730           TAUR2=VINT(75)
20731           GAMR2=VINT(76)
20732           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
20733           ATAU5=ATAUD/TAUR2
20734           IF(ATAUD.GT.1D-10) H1=H1+
20735      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
20736           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
20737           ATAU6=ATAUD/GAMR2
20738           IF(ATAUD.GT.1D-10) H1=H1+
20739      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
20740         ENDIF
20741         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
20742           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
20743           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
20744      &    MAX(2D-10,1D0-TAU)
20745         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
20746           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
20747           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
20748      &    MAX(1D-10,1D0-TAU)
20749         ENDIF
20750         COMFAC=COMFAC*ATAU1/(TAU*H1)
20751       ENDIF
20752  
20753 C...Phase space integral in y*
20754       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
20755      &THEN
20756         AYST0=YSTMAX-YSTMIN
20757         IF(AYST0.LT.1D-10) THEN
20758           COMFAC=0D0
20759         ELSE
20760           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
20761           AYST2=AYST1
20762           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
20763           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
20764      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
20765      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
20766           IF(MINT(45).EQ.3) THEN
20767             YST0=-0.5D0*LOG(TAUE)
20768             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
20769      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
20770             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
20771      &      MAX(1D-10,1D0-EXP(YST-YST0))
20772           ENDIF
20773           IF(MINT(46).EQ.3) THEN
20774             YST0=-0.5D0*LOG(TAUE)
20775             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
20776      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
20777             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
20778      &      MAX(1D-10,1D0-EXP(-YST-YST0))
20779           ENDIF
20780           COMFAC=COMFAC*AYST0/H2
20781         ENDIF
20782       ENDIF
20783  
20784 C...2 -> 1 processes: reduction in angular part of phase space integral
20785 C...for case of decaying resonance
20786       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
20787       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
20788         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
20789           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
20790      &    KFPR(ISUB,1).EQ.39) THEN
20791             COMFAC=COMFAC*0.5D0*ACTH0
20792           ELSE
20793             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
20794      &      CTPMAX**3-CTPMIN**3)
20795           ENDIF
20796         ENDIF
20797  
20798 C...2 -> 2 processes: angular part of phase space integral
20799       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
20800         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
20801      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
20802         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
20803      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
20804         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
20805      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
20806         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
20807      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
20808         H3=COEF(ISUBSV,13)+
20809      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
20810      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
20811      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
20812      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
20813         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
20814  
20815 C...2 -> 2 processes: take into account final state Breit-Wigners
20816         COMFAC=COMFAC*VINT(80)
20817       ENDIF
20818  
20819 C...2 -> 3, 4 processes: phace space integral in tau'
20820       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
20821         ATAUP1=LOG(TAUPMX/TAUPMN)
20822         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
20823         H4=COEF(ISUBSV,18)+
20824      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
20825         IF(MINT(47).EQ.5) THEN
20826           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
20827           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
20828         ELSEIF(MINT(47).GE.6) THEN
20829           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
20830           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
20831         ENDIF
20832         COMFAC=COMFAC*ATAUP1/H4
20833       ENDIF
20834  
20835 C...2 -> 3, 4 processes: effective W/Z parton distributions
20836       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
20837         IF(1D0-TAU/TAUP.GT.1D-4) THEN
20838           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
20839         ELSE
20840           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
20841         ENDIF
20842         COMFAC=COMFAC*FZW
20843       ENDIF
20844  
20845 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
20846       IF(ISTSB.EQ.5) THEN
20847         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
20848      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
20849       ENDIF
20850  
20851 C...Phase space integral for low-pT and multiple interactions
20852       IF(ISTSB.EQ.9) THEN
20853         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
20854         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
20855         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
20856         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
20857         COMFAC=COMFAC*ATAU1/H1
20858         AYST0=YSTMAX-YSTMIN
20859         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
20860         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
20861         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
20862      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
20863      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
20864         COMFAC=COMFAC*AYST0/H2
20865         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
20866 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
20867 C...introduced to make cross-section finite for xT2 -> 0
20868         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
20869      &  (1D0+VINT(149)))
20870       ENDIF
20871  
20872 C...Real gamma + gamma: include factor 2 when different nature
20873   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
20874      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
20875  
20876 C...Extra factors to include the effects of
20877 C...longitudinal resolved photons (but not direct or DIS ones).
20878       DO 170 ISDE=1,2
20879         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
20880      &  MINT(106+ISDE).LE.3) THEN
20881           VINT(314+ISDE)=1D0
20882           XY=PARP(166+ISDE)
20883           IF(MSTP(16).EQ.0) THEN
20884             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
20885      &      XY=VINT(304+ISDE)
20886           ELSE
20887             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
20888      &      XY=VINT(308+ISDE)
20889           ENDIF
20890           Q2GA=VINT(306+ISDE)
20891           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
20892      &    Q2GA.GT.0D0) THEN
20893             REDUCE=0D0
20894             IF(MSTP(17).EQ.1) THEN
20895               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
20896             ELSEIF(MSTP(17).EQ.2) THEN
20897               REDUCE=4D0*Q2GA/(Q2+Q2GA)
20898             ELSEIF(MSTP(17).EQ.3) THEN
20899               PMVIRT=PMAS(PYCOMP(113),1)
20900               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20901             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
20902               PMVIRT=PMAS(PYCOMP(113),1)
20903               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
20904             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
20905               PMVIRT=PMAS(PYCOMP(113),1)
20906               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
20907             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
20908               PMVSMN=4D0*PARP(15)**2
20909               PMVSMX=4D0*VINT(154)**2
20910               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
20911               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
20912      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
20913               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
20914             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
20915               PMVIRT=PMAS(PYCOMP(113),1)
20916               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20917             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
20918               PMVIRT=PMAS(PYCOMP(113),1)
20919               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
20920             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
20921               PMVSMN=4D0*PARP(15)**2
20922               PMVSMX=4D0*VINT(154)**2
20923               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
20924               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
20925               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
20926             ENDIF
20927             BEAMAS=PYMASS(11)
20928             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
20929             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
20930      &      (1D0-2D0*BEAMAS**2/Q2GA))
20931             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
20932           ENDIF
20933         ELSE
20934           VINT(314+ISDE)=1D0
20935         ENDIF
20936         COMFAC=COMFAC*VINT(314+ISDE)
20937   170 CONTINUE
20938  
20939 C...Evaluate cross sections - done in separate routines by kind
20940 C...of physics, to keep PYSIGH of sensible size.
20941       IF(MAP.EQ.1) THEN
20942 C...Standard QCD (including photons).
20943         CALL PYSGQC(NCHN,SIGS)
20944       ELSEIF(MAP.EQ.2) THEN
20945 C...Heavy flavours.
20946         CALL PYSGHF(NCHN,SIGS)
20947       ELSEIF(MAP.EQ.3) THEN
20948 C...W/Z.
20949         CALL PYSGWZ(NCHN,SIGS)
20950       ELSEIF(MAP.EQ.4) THEN
20951 C...Higgs (2 doublets; including longitudinal W/Z scattering).
20952         CALL PYSGHG(NCHN,SIGS)
20953       ELSEIF(MAP.EQ.5) THEN
20954 C...SUSY.
20955         CALL PYSGSU(NCHN,SIGS)
20956       ELSEIF(MAP.EQ.6) THEN
20957 C...Technicolor.
20958         CALL PYSGTC(NCHN,SIGS)
20959       ELSEIF(MAP.EQ.7) THEN
20960 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
20961         CALL PYSGEX(NCHN,SIGS)
20962       ENDIF
20963  
20964 C...Multiply with parton distributions
20965       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
20966         DO 180 ICHN=1,NCHN
20967           IF(MINT(45).GE.2) THEN
20968             KFL1=ISIG(ICHN,1)
20969             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
20970           ENDIF
20971           IF(MINT(46).GE.2) THEN
20972             KFL2=ISIG(ICHN,2)
20973             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
20974           ENDIF
20975           SIGS=SIGS+SIGH(ICHN)
20976   180   CONTINUE
20977       ENDIF
20978  
20979       RETURN
20980       END
20981  
20982 C*********************************************************************
20983  
20984 C...PYSGQC
20985 C...Subprocess cross sections for QCD processes,
20986 C...including photons.
20987 C...Auxiliary to PYSIGH.
20988  
20989       SUBROUTINE PYSGQC(NCHN,SIGS)
20990  
20991 C...Double precision and integer declarations
20992       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20993       IMPLICIT INTEGER(I-N)
20994       INTEGER PYK,PYCHGE,PYCOMP
20995 C...Parameter statement to help give large particle numbers.
20996       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
20997      &KEXCIT=4000000,KDIMEN=5000000)
20998 C...Commonblocks
20999       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21000       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21001       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
21002       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21003       COMMON/PYINT1/MINT(400),VINT(400)
21004       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
21005       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
21006       COMMON/PYINT4/MWID(500),WIDS(500,5)
21007       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
21008       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
21009      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
21010      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
21011      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
21012       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
21013      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
21014 C...Local arrays
21015       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
21016  
21017 C...Differential cross section expressions.
21018  
21019       IF(ISUB.LE.20) THEN
21020         IF(ISUB.EQ.10) THEN
21021 C...f + f' -> f + f' (gamma/Z/W exchange)
21022           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
21023           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
21024           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
21025           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
21026           DO 110 I=MMIN1,MMAX1
21027             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
21028             IA=IABS(I)
21029             DO 100 J=MMIN2,MMAX2
21030               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
21031               JA=IABS(J)
21032 C...Electroweak couplings
21033               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
21034               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
21035               VI=AI-4D0*EI*XWV
21036               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
21037               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
21038               VJ=AJ-4D0*EJ*XWV
21039               EPSIJ=ISIGN(1,I*J)
21040 C...gamma/Z exchange, only gamma exchange, or only Z exchange
21041               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
21042                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
21043                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
21044      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
21045      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
21046      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
21047                 ELSEIF(MSTP(21).EQ.2) THEN
21048                   FACNCF=FACGGF*EI**2*EJ**2
21049                 ELSE
21050                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
21051      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
21052                 ENDIF
21053 C...Extrafactor 2 for only one incoming neutrino spin state.
21054                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
21055                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
21056                 NCHN=NCHN+1
21057                 ISIG(NCHN,1)=I
21058                 ISIG(NCHN,2)=J
21059                 ISIG(NCHN,3)=1
21060                 SIGH(NCHN)=FACNCF
21061               ENDIF
21062 C...W exchange
21063               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
21064                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
21065                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
21066                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
21067                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
21068                 NCHN=NCHN+1
21069                 ISIG(NCHN,1)=I
21070                 ISIG(NCHN,2)=J
21071                 ISIG(NCHN,3)=2
21072                 SIGH(NCHN)=FACCCF
21073               ENDIF
21074   100       CONTINUE
21075   110     CONTINUE
21076  
21077         ELSEIF(ISUB.EQ.11) THEN
21078 C...f + f' -> f + f' (g exchange)
21079           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
21080           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
21081      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
21082           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
21083      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
21084           DO 130 I=MMIN1,MMAX1
21085             IA=IABS(I)
21086             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
21087             DO 120 J=MMIN2,MMAX2
21088               JA=IABS(J)
21089               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
21090               NCHN=NCHN+1
21091               ISIG(NCHN,1)=I
21092               ISIG(NCHN,2)=J
21093               ISIG(NCHN,3)=1
21094               SIGH(NCHN)=FACQQ1
21095               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
21096               IF(I.EQ.J) THEN
21097                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
21098                 NCHN=NCHN+1
21099                 ISIG(NCHN,1)=I
21100                 ISIG(NCHN,2)=J
21101                 ISIG(NCHN,3)=2
21102                 SIGH(NCHN)=0.5D0*FACQQ2
21103               ENDIF
21104   120       CONTINUE
21105   130     CONTINUE
21106  
21107         ELSEIF(ISUB.EQ.12) THEN
21108 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
21109           CALL PYWIDT(21,SH,WDTP,WDTE)
21110           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
21111      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
21112           DO 140 I=MMINA,MMAXA
21113             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21114      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
21115             NCHN=NCHN+1
21116             ISIG(NCHN,1)=I
21117             ISIG(NCHN,2)=-I
21118             ISIG(NCHN,3)=1
21119             SIGH(NCHN)=FACQQB
21120   140     CONTINUE
21121  
21122         ELSEIF(ISUB.EQ.13) THEN
21123 C...f + fbar -> g + g (q + qbar -> g + g only)
21124           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21125      &    UH2/SH2)
21126           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21127      &    TH2/SH2)
21128           DO 150 I=MMINA,MMAXA
21129             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21130      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
21131             NCHN=NCHN+1
21132             ISIG(NCHN,1)=I
21133             ISIG(NCHN,2)=-I
21134             ISIG(NCHN,3)=1
21135             SIGH(NCHN)=0.5D0*FACGG1
21136             NCHN=NCHN+1
21137             ISIG(NCHN,1)=I
21138             ISIG(NCHN,2)=-I
21139             ISIG(NCHN,3)=2
21140             SIGH(NCHN)=0.5D0*FACGG2
21141   150     CONTINUE
21142  
21143         ELSEIF(ISUB.EQ.14) THEN
21144 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
21145           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
21146           DO 160 I=MMINA,MMAXA
21147             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21148      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
21149             EI=KCHG(IABS(I),1)/3D0
21150             NCHN=NCHN+1
21151             ISIG(NCHN,1)=I
21152             ISIG(NCHN,2)=-I
21153             ISIG(NCHN,3)=1
21154             SIGH(NCHN)=FACGG*EI**2
21155   160     CONTINUE
21156  
21157         ELSEIF(ISUB.EQ.18) THEN
21158 C...f + fbar -> gamma + gamma
21159           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
21160           DO 170 I=MMINA,MMAXA
21161             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
21162             EI=KCHG(IABS(I),1)/3D0
21163             FCOI=1D0
21164             IF(IABS(I).LE.10) FCOI=FACA/3D0
21165             NCHN=NCHN+1
21166             ISIG(NCHN,1)=I
21167             ISIG(NCHN,2)=-I
21168             ISIG(NCHN,3)=1
21169             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
21170   170     CONTINUE
21171         ENDIF
21172  
21173       ELSEIF(ISUB.LE.40) THEN
21174         IF(ISUB.EQ.28) THEN
21175 C...f + g -> f + g (q + g -> q + g only)
21176           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
21177      &    UH/SH)*FACA
21178           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
21179      &    SH/UH)
21180           DO 190 I=MMINA,MMAXA
21181             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
21182             DO 180 ISDE=1,2
21183               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
21184               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
21185               NCHN=NCHN+1
21186               ISIG(NCHN,ISDE)=I
21187               ISIG(NCHN,3-ISDE)=21
21188               ISIG(NCHN,3)=1
21189               SIGH(NCHN)=FACQG1
21190               NCHN=NCHN+1
21191               ISIG(NCHN,ISDE)=I
21192               ISIG(NCHN,3-ISDE)=21
21193               ISIG(NCHN,3)=2
21194               SIGH(NCHN)=FACQG2
21195   180       CONTINUE
21196   190     CONTINUE
21197  
21198         ELSEIF(ISUB.EQ.29) THEN
21199 C...f + g -> f + gamma (q + g -> q + gamma only)
21200           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
21201           DO 210 I=MMINA,MMAXA
21202             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
21203             EI=KCHG(IABS(I),1)/3D0
21204             FACGQ=FGQ*EI**2
21205             DO 200 ISDE=1,2
21206               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
21207               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
21208               NCHN=NCHN+1
21209               ISIG(NCHN,ISDE)=I
21210               ISIG(NCHN,3-ISDE)=21
21211               ISIG(NCHN,3)=1
21212               SIGH(NCHN)=FACGQ
21213   200       CONTINUE
21214   210     CONTINUE
21215  
21216         ELSEIF(ISUB.EQ.33) THEN
21217 C...f + gamma -> f + g (q + gamma -> q + g only)
21218           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
21219           DO 230 I=MMINA,MMAXA
21220             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
21221             EI=KCHG(IABS(I),1)/3D0
21222             FACGQ=FGQ*EI**2
21223             DO 220 ISDE=1,2
21224               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
21225               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
21226               NCHN=NCHN+1
21227               ISIG(NCHN,ISDE)=I
21228               ISIG(NCHN,3-ISDE)=22
21229               ISIG(NCHN,3)=1
21230               SIGH(NCHN)=FACGQ
21231   220       CONTINUE
21232   230     CONTINUE
21233  
21234         ELSEIF(ISUB.EQ.34) THEN
21235 C...f + gamma -> f + gamma
21236           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
21237           DO 250 I=MMINA,MMAXA
21238             IF(I.EQ.0) GOTO 250
21239             EI=KCHG(IABS(I),1)/3D0
21240             FACGQ=FGQ*EI**4
21241             DO 240 ISDE=1,2
21242               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
21243               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
21244               NCHN=NCHN+1
21245               ISIG(NCHN,ISDE)=I
21246               ISIG(NCHN,3-ISDE)=22
21247               ISIG(NCHN,3)=1
21248               SIGH(NCHN)=FACGQ
21249   240       CONTINUE
21250   250     CONTINUE
21251         ENDIF
21252  
21253       ELSEIF(ISUB.LE.80) THEN
21254         IF(ISUB.EQ.53) THEN
21255 C...g + g -> f + fbar (g + g -> q + qbar only)
21256           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
21257           IDC0=MDCY(21,2)-1
21258 C...Begin by d, u, s flavours.
21259           FLAVWT=0D0
21260           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
21261      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
21262           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
21263      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
21264           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
21265      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
21266           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21267      &    UH2/SH2)*FLAVWT*FACA
21268           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21269      &    TH2/SH2)*FLAVWT*FACA
21270           NCHN=NCHN+1
21271           ISIG(NCHN,1)=21
21272           ISIG(NCHN,2)=21
21273           ISIG(NCHN,3)=1
21274           SIGH(NCHN)=FACQQ1
21275           NCHN=NCHN+1
21276           ISIG(NCHN,1)=21
21277           ISIG(NCHN,2)=21
21278           ISIG(NCHN,3)=2
21279           SIGH(NCHN)=FACQQ2
21280 C...Next c and b flavours: modified that and uhat for fixed
21281 C...cos(theta-hat).
21282           DO 260 IFL=4,5
21283           SQMAVG=PMAS(IFL,1)**2
21284           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
21285             BE34=SQRT(1D0-4D0*SQMAVG/SH)
21286             THQ=-0.5D0*SH*(1D0-BE34*CTH)
21287             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21288             THUHQ=THQ*UHQ-SQMAVG*SH
21289             IF(MSTP(34).EQ.0) THEN
21290               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21291               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21292             ELSE
21293               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21294      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21295               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21296      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21297             ENDIF
21298             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
21299             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
21300             NCHN=NCHN+1
21301             ISIG(NCHN,1)=21
21302             ISIG(NCHN,2)=21
21303             ISIG(NCHN,3)=1+2*(IFL-3)
21304             SIGH(NCHN)=FACQQ1
21305             NCHN=NCHN+1
21306             ISIG(NCHN,1)=21
21307             ISIG(NCHN,2)=21
21308             ISIG(NCHN,3)=2+2*(IFL-3)
21309             SIGH(NCHN)=FACQQ2
21310           ENDIF
21311   260     CONTINUE
21312   270     CONTINUE
21313  
21314         ELSEIF(ISUB.EQ.54) THEN
21315 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
21316           CALL PYWIDT(21,SH,WDTP,WDTE)
21317           WDTESU=0D0
21318           DO 280 I=1,MIN(8,MDCY(21,3))
21319             EF=KCHG(I,1)/3D0
21320             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21321      &      WDTE(I,4))
21322   280     CONTINUE
21323           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
21324           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
21325             NCHN=NCHN+1
21326             ISIG(NCHN,1)=21
21327             ISIG(NCHN,2)=22
21328             ISIG(NCHN,3)=1
21329             SIGH(NCHN)=FACQQ
21330           ENDIF
21331           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
21332             NCHN=NCHN+1
21333             ISIG(NCHN,1)=22
21334             ISIG(NCHN,2)=21
21335             ISIG(NCHN,3)=1
21336             SIGH(NCHN)=FACQQ
21337           ENDIF
21338  
21339         ELSEIF(ISUB.EQ.58) THEN
21340 C...gamma + gamma -> f + fbar
21341           CALL PYWIDT(22,SH,WDTP,WDTE)
21342           WDTESU=0D0
21343           DO 290 I=1,MIN(12,MDCY(22,3))
21344             IF(I.LE.8) EF= KCHG(I,1)/3D0
21345             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
21346             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21347      &      WDTE(I,4))
21348   290     CONTINUE
21349           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
21350           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
21351             NCHN=NCHN+1
21352             ISIG(NCHN,1)=22
21353             ISIG(NCHN,2)=22
21354             ISIG(NCHN,3)=1
21355             SIGH(NCHN)=FACFF
21356           ENDIF
21357  
21358         ELSEIF(ISUB.EQ.68) THEN
21359 C...g + g -> g + g
21360           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
21361           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
21362      &    TH2/SH2)*FACA
21363           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
21364      &    SH2/UH2)*FACA
21365           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
21366      &    UH2/TH2)
21367           NCHN=NCHN+1
21368           ISIG(NCHN,1)=21
21369           ISIG(NCHN,2)=21
21370           ISIG(NCHN,3)=1
21371           SIGH(NCHN)=0.5D0*FACGG1
21372           NCHN=NCHN+1
21373           ISIG(NCHN,1)=21
21374           ISIG(NCHN,2)=21
21375           ISIG(NCHN,3)=2
21376           SIGH(NCHN)=0.5D0*FACGG2
21377           NCHN=NCHN+1
21378           ISIG(NCHN,1)=21
21379           ISIG(NCHN,2)=21
21380           ISIG(NCHN,3)=3
21381           SIGH(NCHN)=0.5D0*FACGG3
21382   300     CONTINUE
21383  
21384         ELSEIF(ISUB.EQ.80) THEN
21385 C...q + gamma -> q' + pi+/-
21386           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
21387           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
21388           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
21389           DELSH=UH*SQRT(ASSH*Q2FPSH)
21390           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
21391           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
21392           DELUH=SH*SQRT(ASUH*Q2FPUH)
21393           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
21394             IF(I.EQ.0) GOTO 320
21395             EI=KCHG(IABS(I),1)/3D0
21396             EJ=SIGN(1D0-ABS(EI),EI)
21397             DO 310 ISDE=1,2
21398               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
21399               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
21400               NCHN=NCHN+1
21401               ISIG(NCHN,ISDE)=I
21402               ISIG(NCHN,3-ISDE)=22
21403               ISIG(NCHN,3)=1
21404               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
21405   310       CONTINUE
21406   320     CONTINUE
21407         ENDIF
21408  
21409       ELSEIF(ISUB.LE.100) THEN
21410         IF(ISUB.EQ.91) THEN
21411 C...Elastic scattering
21412           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
21413  
21414         ELSEIF(ISUB.EQ.92) THEN
21415 C...Single diffractive scattering (first side, i.e. XB)
21416           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
21417  
21418         ELSEIF(ISUB.EQ.93) THEN
21419 C...Single diffractive scattering (second side, i.e. AX)
21420           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
21421  
21422         ELSEIF(ISUB.EQ.94) THEN
21423 C...Double diffractive scattering
21424           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
21425  
21426         ELSEIF(ISUB.EQ.95) THEN
21427 C...Low-pT scattering
21428           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
21429  
21430         ELSEIF(ISUB.EQ.96) THEN
21431 C...Multiple interactions: sum of QCD processes
21432           CALL PYWIDT(21,SH,WDTP,WDTE)
21433  
21434 C...q + q' -> q + q'
21435           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
21436           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
21437      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
21438           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
21439           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
21440           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
21441           DO 340 I=-5,5
21442             IF(I.EQ.0) GOTO 340
21443             DO 330 J=-5,5
21444               IF(J.EQ.0) GOTO 330
21445               NCHN=NCHN+1
21446               ISIG(NCHN,1)=I
21447               ISIG(NCHN,2)=J
21448               ISIG(NCHN,3)=111
21449               SIGH(NCHN)=FACQQ1
21450               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
21451               IF(I.EQ.J) THEN
21452                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
21453                 NCHN=NCHN+1
21454                 ISIG(NCHN,1)=I
21455                 ISIG(NCHN,2)=J
21456                 ISIG(NCHN,3)=112
21457                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
21458               ENDIF
21459   330       CONTINUE
21460   340     CONTINUE
21461  
21462 C...q + qbar -> q' + qbar' or g + g
21463           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
21464      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
21465           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21466      &    UH2/SH2)
21467           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21468      &    TH2/SH2)
21469           DO 350 I=-5,5
21470             IF(I.EQ.0) GOTO 350
21471             NCHN=NCHN+1
21472             ISIG(NCHN,1)=I
21473             ISIG(NCHN,2)=-I
21474             ISIG(NCHN,3)=121
21475             SIGH(NCHN)=FACQQB
21476             NCHN=NCHN+1
21477             ISIG(NCHN,1)=I
21478             ISIG(NCHN,2)=-I
21479             ISIG(NCHN,3)=131
21480             SIGH(NCHN)=0.5D0*FACGG1
21481             NCHN=NCHN+1
21482             ISIG(NCHN,1)=I
21483             ISIG(NCHN,2)=-I
21484             ISIG(NCHN,3)=132
21485             SIGH(NCHN)=0.5D0*FACGG2
21486   350     CONTINUE
21487  
21488 C...q + g -> q + g
21489           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
21490      &    UH/SH)*FACA
21491           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
21492      &    SH/UH)
21493           DO 370 I=-5,5
21494             IF(I.EQ.0) GOTO 370
21495             DO 360 ISDE=1,2
21496               NCHN=NCHN+1
21497               ISIG(NCHN,ISDE)=I
21498               ISIG(NCHN,3-ISDE)=21
21499               ISIG(NCHN,3)=281
21500               SIGH(NCHN)=FACQG1
21501               NCHN=NCHN+1
21502               ISIG(NCHN,ISDE)=I
21503               ISIG(NCHN,3-ISDE)=21
21504               ISIG(NCHN,3)=282
21505               SIGH(NCHN)=FACQG2
21506   360       CONTINUE
21507   370     CONTINUE
21508  
21509 C...g + g -> q + qbar (only d, u, s)
21510           IDC0=MDCY(21,2)-1
21511           FLAVWT=0D0
21512           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
21513      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
21514           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
21515      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
21516           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
21517      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
21518           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
21519      &    UH2/SH2)*FLAVWT*FACA
21520           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
21521      &    TH2/SH2)*FLAVWT*FACA
21522           NCHN=NCHN+1
21523           ISIG(NCHN,1)=21
21524           ISIG(NCHN,2)=21
21525           ISIG(NCHN,3)=531
21526           SIGH(NCHN)=FACQQ1
21527           NCHN=NCHN+1
21528           ISIG(NCHN,1)=21
21529           ISIG(NCHN,2)=21
21530           ISIG(NCHN,3)=532
21531           SIGH(NCHN)=FACQQ2
21532  
21533 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
21534 C...cos(theta-hat)
21535           DO 380 IFL=4,5
21536           SQMAVG=PMAS(IFL,1)**2
21537           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
21538             BE34=SQRT(1D0-4D0*SQMAVG/SH)
21539             THQ=-0.5D0*SH*(1D0-BE34*CTH)
21540             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21541             THUHQ=THQ*UHQ-SQMAVG*SH
21542             IF(MSTP(34).EQ.0) THEN
21543               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21544               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21545             ELSE
21546               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21547      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21548               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21549      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21550             ENDIF
21551             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
21552             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
21553             NCHN=NCHN+1
21554             ISIG(NCHN,1)=21
21555             ISIG(NCHN,2)=21
21556             ISIG(NCHN,3)=531+2*(IFL-3)
21557             SIGH(NCHN)=FACQQ1
21558             NCHN=NCHN+1
21559             ISIG(NCHN,1)=21
21560             ISIG(NCHN,2)=21
21561             ISIG(NCHN,3)=532+2*(IFL-3)
21562             SIGH(NCHN)=FACQQ2
21563           ENDIF
21564   380     CONTINUE
21565  
21566 C...g + g -> g + g
21567           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
21568      &    2D0*TH/SH+TH2/SH2)*FACA
21569           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
21570      &    2D0*SH/UH+SH2/UH2)*FACA
21571           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
21572      &    2D0*UH/TH+UH2/TH2)
21573           NCHN=NCHN+1
21574           ISIG(NCHN,1)=21
21575           ISIG(NCHN,2)=21
21576           ISIG(NCHN,3)=681
21577           SIGH(NCHN)=0.5D0*FACGG1
21578           NCHN=NCHN+1
21579           ISIG(NCHN,1)=21
21580           ISIG(NCHN,2)=21
21581           ISIG(NCHN,3)=682
21582           SIGH(NCHN)=0.5D0*FACGG2
21583           NCHN=NCHN+1
21584           ISIG(NCHN,1)=21
21585           ISIG(NCHN,2)=21
21586           ISIG(NCHN,3)=683
21587           SIGH(NCHN)=0.5D0*FACGG3
21588  
21589         ELSEIF(ISUB.EQ.99) THEN
21590 C...f + gamma* -> f.
21591           IF(MINT(107).EQ.4) THEN
21592             Q2GA=VINT(307)
21593             P2GA=VINT(308)
21594             ISDE=2
21595           ELSE
21596             Q2GA=VINT(308)
21597             P2GA=VINT(307)
21598             ISDE=1
21599           ENDIF
21600           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
21601           PM2RHO=PMAS(PYCOMP(113),1)**2
21602           IF(MSTP(19).EQ.0) THEN
21603             COMFAC=COMFAC/Q2GA
21604           ELSEIF(MSTP(19).EQ.1) THEN
21605             COMFAC=COMFAC/(Q2GA+PM2RHO)
21606           ELSEIF(MSTP(19).EQ.2) THEN
21607             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
21608           ELSE
21609             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
21610             W2GA=VINT(2)
21611             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
21612               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
21613      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
21614               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
21615             ELSE
21616               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
21617      &        Q2GA**0.57D0)
21618               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
21619             ENDIF
21620             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
21621             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
21622           ENDIF
21623           DO 390 I=MMINA,MMAXA
21624             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
21625             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
21626             EI=KCHG(IABS(I),1)/3D0
21627             NCHN=NCHN+1
21628             ISIG(NCHN,ISDE)=I
21629             ISIG(NCHN,3-ISDE)=22
21630             ISIG(NCHN,3)=1
21631             SIGH(NCHN)=COMFAC*EI**2
21632   390     CONTINUE
21633         ENDIF
21634  
21635       ELSE
21636         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
21637 C...g + g -> gamma + gamma or g + g -> g + gamma
21638           A0STUR=0D0
21639           A0STUI=0D0
21640           A0TSUR=0D0
21641           A0TSUI=0D0
21642           A0UTSR=0D0
21643           A0UTSI=0D0
21644           A1STUR=0D0
21645           A1STUI=0D0
21646           A2STUR=0D0
21647           A2STUI=0D0
21648           ALST=LOG(-SH/TH)
21649           ALSU=LOG(-SH/UH)
21650           ALTU=LOG(TH/UH)
21651           IMAX=2*MSTP(1)
21652           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
21653           DO 400 I=1,IMAX
21654             EI=KCHG(IABS(I),1)/3D0
21655             EIWT=EI**2
21656             IF(ISUB.EQ.115) EIWT=EI
21657             SQMQ=PMAS(I,1)**2
21658             EPSS=4D0*SQMQ/SH
21659             EPST=4D0*SQMQ/TH
21660             EPSU=4D0*SQMQ/UH
21661             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
21662               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
21663      &        PARU(1)**2)
21664               B0STUI=0D0
21665               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
21666               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
21667               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
21668               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
21669               B1STUR=-1D0
21670               B1STUI=0D0
21671               B2STUR=-1D0
21672               B2STUI=0D0
21673             ELSE
21674               CALL PYWAUX(1,EPSS,W1SR,W1SI)
21675               CALL PYWAUX(1,EPST,W1TR,W1TI)
21676               CALL PYWAUX(1,EPSU,W1UR,W1UI)
21677               CALL PYWAUX(2,EPSS,W2SR,W2SI)
21678               CALL PYWAUX(2,EPST,W2TR,W2TI)
21679               CALL PYWAUX(2,EPSU,W2UR,W2UI)
21680               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
21681               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
21682               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
21683               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
21684               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
21685               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
21686               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
21687      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
21688      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
21689      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
21690      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
21691      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
21692               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
21693      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
21694      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
21695      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
21696      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
21697      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
21698               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
21699      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
21700      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
21701      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
21702      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
21703      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
21704               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
21705      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
21706      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
21707      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
21708      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
21709      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
21710               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
21711      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
21712      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
21713      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
21714      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
21715      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
21716               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
21717      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
21718      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
21719      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
21720      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
21721      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
21722               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
21723      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
21724      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
21725      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
21726               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
21727      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
21728      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
21729      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
21730               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
21731      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
21732      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
21733               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
21734      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
21735      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
21736             ENDIF
21737             A0STUR=A0STUR+EIWT*B0STUR
21738             A0STUI=A0STUI+EIWT*B0STUI
21739             A0TSUR=A0TSUR+EIWT*B0TSUR
21740             A0TSUI=A0TSUI+EIWT*B0TSUI
21741             A0UTSR=A0UTSR+EIWT*B0UTSR
21742             A0UTSI=A0UTSI+EIWT*B0UTSI
21743             A1STUR=A1STUR+EIWT*B1STUR
21744             A1STUI=A1STUI+EIWT*B1STUI
21745             A2STUR=A2STUR+EIWT*B2STUR
21746             A2STUI=A2STUI+EIWT*B2STUI
21747   400     CONTINUE
21748           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
21749      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
21750           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
21751           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
21752           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
21753           NCHN=NCHN+1
21754           ISIG(NCHN,1)=21
21755           ISIG(NCHN,2)=21
21756           ISIG(NCHN,3)=1
21757           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
21758           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
21759   410     CONTINUE
21760  
21761         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
21762 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
21763           PH=0D0
21764           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21765      &    PH=VINT(3)**2
21766           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21767      &    PH=VINT(4)**2
21768           IF(ISUB.EQ.131) THEN
21769             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
21770      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
21771           ELSE
21772             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
21773           ENDIF
21774           DO 430 I=MMINA,MMAXA
21775             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
21776             EI=KCHG(IABS(I),1)/3D0
21777             FACGQ=FGQ*EI**2
21778             DO 420 ISDE=1,2
21779               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
21780               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
21781               NCHN=NCHN+1
21782               ISIG(NCHN,ISDE)=I
21783               ISIG(NCHN,3-ISDE)=22
21784               ISIG(NCHN,3)=1
21785               SIGH(NCHN)=FACGQ
21786   420       CONTINUE
21787   430     CONTINUE
21788  
21789         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
21790 C...f + gamma*_(T,L) -> f + gamma
21791           PH=0D0
21792           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21793      &    PH=VINT(3)**2
21794           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21795      &    PH=VINT(4)**2
21796           IF(ISUB.EQ.133) THEN
21797             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
21798      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
21799           ELSE
21800             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
21801           ENDIF
21802           DO 450 I=MMINA,MMAXA
21803             IF(I.EQ.0) GOTO 450
21804             EI=KCHG(IABS(I),1)/3D0
21805             FACGQ=FGQ*EI**4
21806             DO 440 ISDE=1,2
21807               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
21808               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
21809               NCHN=NCHN+1
21810               ISIG(NCHN,ISDE)=I
21811               ISIG(NCHN,3-ISDE)=22
21812               ISIG(NCHN,3)=1
21813               SIGH(NCHN)=FACGQ
21814   440       CONTINUE
21815   450     CONTINUE
21816  
21817         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
21818 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
21819           PH=0D0
21820           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
21821      &    PH=VINT(3)**2
21822           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
21823      &    PH=VINT(4)**2
21824           CALL PYWIDT(21,SH,WDTP,WDTE)
21825           WDTESU=0D0
21826           DO 460 I=1,MIN(8,MDCY(21,3))
21827             EF=KCHG(I,1)/3D0
21828             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21829      &      WDTE(I,4))
21830   460     CONTINUE
21831           IF(ISUB.EQ.135) THEN
21832             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
21833      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
21834           ELSE
21835             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
21836           ENDIF
21837           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
21838             NCHN=NCHN+1
21839             ISIG(NCHN,1)=21
21840             ISIG(NCHN,2)=22
21841             ISIG(NCHN,3)=1
21842             SIGH(NCHN)=FACQQ
21843           ENDIF
21844           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
21845             NCHN=NCHN+1
21846             ISIG(NCHN,1)=22
21847             ISIG(NCHN,2)=21
21848             ISIG(NCHN,3)=1
21849             SIGH(NCHN)=FACQQ
21850           ENDIF
21851  
21852         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
21853 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
21854           PH1=0D0
21855           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
21856           PH2=0D0
21857           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
21858           CALL PYWIDT(22,SH,WDTP,WDTE)
21859           WDTESU=0D0
21860           DO 470 I=1,MIN(12,MDCY(22,3))
21861             IF(I.LE.8) EF= KCHG(I,1)/3D0
21862             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
21863             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
21864      &      WDTE(I,4))
21865   470     CONTINUE
21866           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
21867           IF(ISUB.EQ.137) THEN
21868             FPARAM=-SH*(TH+UH)/DLAMB2
21869             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
21870      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
21871      &      2D0*PH1*PH2*FPARAM**2)
21872           ELSEIF(ISUB.EQ.138) THEN
21873             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
21874      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
21875      &      2D0*PH1**2*(TH-UH)**2)
21876           ELSEIF(ISUB.EQ.139) THEN
21877             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
21878      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
21879      &      2D0*PH2**2*(TH-UH)**2)
21880           ELSE
21881             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
21882      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
21883           ENDIF
21884           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
21885             NCHN=NCHN+1
21886             ISIG(NCHN,1)=22
21887             ISIG(NCHN,2)=22
21888             ISIG(NCHN,3)=1
21889             SIGH(NCHN)=FACFF
21890           ENDIF
21891  
21892         ENDIF
21893       ENDIF
21894  
21895       RETURN
21896       END
21897  
21898 C*********************************************************************
21899  
21900 C...PYSGHF
21901 C...Subprocess cross sections for heavy flavour production,
21902 C...open and closed.
21903 C...Auxiliary to PYSIGH.
21904  
21905       SUBROUTINE PYSGHF(NCHN,SIGS)
21906  
21907 C...Double precision and integer declarations
21908       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21909       IMPLICIT INTEGER(I-N)
21910       INTEGER PYK,PYCHGE,PYCOMP
21911 C...Parameter statement to help give large particle numbers.
21912       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
21913      &KEXCIT=4000000,KDIMEN=5000000)
21914 C...Commonblocks
21915       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21916       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21917       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21918       COMMON/PYINT1/MINT(400),VINT(400)
21919       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
21920       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
21921       COMMON/PYINT4/MWID(500),WIDS(500,5)
21922       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
21923      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
21924      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
21925      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
21926       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
21927      &/PYINT4/,/PYSGCM/
21928 C...Local arrays
21929       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
21930  
21931 C...Differential cross section expressions.
21932  
21933       IF(ISUB.LE.100) THEN
21934         IF(ISUB.EQ.81) THEN
21935 C...q + qbar -> Q + Qbar
21936           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
21937           THQ=-0.5D0*SH*(1D0-BE34*CTH)
21938           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21939           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
21940      &    2D0*SQMAVG/SH)
21941           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
21942           WID2=1D0
21943           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
21944           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
21945           FACQQB=FACQQB*WID2
21946           DO 100 I=MMINA,MMAXA
21947             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
21948      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
21949             NCHN=NCHN+1
21950             ISIG(NCHN,1)=I
21951             ISIG(NCHN,2)=-I
21952             ISIG(NCHN,3)=1
21953             SIGH(NCHN)=FACQQB
21954   100     CONTINUE
21955  
21956         ELSEIF(ISUB.EQ.82) THEN
21957 C...g + g -> Q + Qbar
21958           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
21959           THQ=-0.5D0*SH*(1D0-BE34*CTH)
21960           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
21961           THUHQ=THQ*UHQ-SQMAVG*SH
21962           IF(MSTP(34).EQ.0) THEN
21963             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
21964             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
21965           ELSE
21966             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21967      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
21968             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
21969      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
21970           ENDIF
21971           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
21972           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
21973           IF(MSTP(35).GE.1) THEN
21974             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
21975             FACQQ1=FACQQ1*FATRE
21976             FACQQ2=FACQQ2*FATRE
21977           ENDIF
21978           WID2=1D0
21979           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
21980           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
21981           FACQQ1=FACQQ1*WID2
21982           FACQQ2=FACQQ2*WID2
21983           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
21984           NCHN=NCHN+1
21985           ISIG(NCHN,1)=21
21986           ISIG(NCHN,2)=21
21987           ISIG(NCHN,3)=1
21988           SIGH(NCHN)=FACQQ1
21989           NCHN=NCHN+1
21990           ISIG(NCHN,1)=21
21991           ISIG(NCHN,2)=21
21992           ISIG(NCHN,3)=2
21993           SIGH(NCHN)=FACQQ2
21994   110     CONTINUE
21995  
21996         ELSEIF(ISUB.EQ.83) THEN
21997 C...f + q -> f' + Q
21998           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
21999           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
22000           DO 130 I=MMIN1,MMAX1
22001             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
22002             DO 120 J=MMIN2,MMAX2
22003               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
22004               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
22005               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
22006               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
22007      &        THEN
22008                 NCHN=NCHN+1
22009                 ISIG(NCHN,1)=I
22010                 ISIG(NCHN,2)=J
22011                 ISIG(NCHN,3)=1
22012                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
22013      &          (IABS(I)+1)/2)*VINT(180+J)
22014                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
22015      &          (MINT(55)+1)/2)*VINT(180+J)
22016                 WID2=1D0
22017                 IF(I.GT.0) THEN
22018                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
22019                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22020      &            WIDS(MINT(55),2)
22021                 ELSE
22022                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
22023                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22024      &            WIDS(MINT(55),3)
22025                 ENDIF
22026                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
22027                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
22028               ENDIF
22029               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
22030      &        THEN
22031                 NCHN=NCHN+1
22032                 ISIG(NCHN,1)=I
22033                 ISIG(NCHN,2)=J
22034                 ISIG(NCHN,3)=2
22035                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
22036      &          (IABS(J)+1)/2)*VINT(180+I)
22037                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
22038      &          (MINT(55)+1)/2)*VINT(180+I)
22039                 IF(J.GT.0) THEN
22040                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
22041                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22042      &            WIDS(MINT(55),2)
22043                 ELSE
22044                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
22045                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
22046      &            WIDS(MINT(55),3)
22047                 ENDIF
22048                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
22049                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
22050               ENDIF
22051   120       CONTINUE
22052   130     CONTINUE
22053  
22054         ELSEIF(ISUB.EQ.84) THEN
22055 C...g + gamma -> Q + Qbar
22056           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22057           THQ=-0.5D0*SH*(1D0-BE34*CTH)
22058           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
22059           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
22060      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
22061      &    (THQ*UHQ)
22062           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
22063           WID2=1D0
22064           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
22065           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
22066           FACQQ=FACQQ*WID2
22067           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
22068             NCHN=NCHN+1
22069             ISIG(NCHN,1)=21
22070             ISIG(NCHN,2)=22
22071             ISIG(NCHN,3)=1
22072             SIGH(NCHN)=FACQQ
22073           ENDIF
22074           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
22075             NCHN=NCHN+1
22076             ISIG(NCHN,1)=22
22077             ISIG(NCHN,2)=21
22078             ISIG(NCHN,3)=1
22079             SIGH(NCHN)=FACQQ
22080           ENDIF
22081  
22082         ELSEIF(ISUB.EQ.85) THEN
22083 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
22084           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22085           THQ=-0.5D0*SH*(1D0-BE34*CTH)
22086           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
22087           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
22088      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
22089      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
22090      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
22091           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
22092           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
22093      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
22094           WID2=1D0
22095           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
22096           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
22097           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
22098           FACFF=FACFF*WID2
22099           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
22100             NCHN=NCHN+1
22101             ISIG(NCHN,1)=22
22102             ISIG(NCHN,2)=22
22103             ISIG(NCHN,3)=1
22104             SIGH(NCHN)=FACFF
22105           ENDIF
22106  
22107         ELSEIF(ISUB.EQ.86) THEN
22108 C...g + g -> J/Psi + g
22109           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
22110      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22111      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22112           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22113             NCHN=NCHN+1
22114             ISIG(NCHN,1)=21
22115             ISIG(NCHN,2)=21
22116             ISIG(NCHN,3)=1
22117             SIGH(NCHN)=FACQQG
22118           ENDIF
22119  
22120         ELSEIF(ISUB.EQ.87) THEN
22121 C...g + g -> chi_0c + g
22122           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22123           QGTW=(SH*TH*UH)/SH**3
22124           RGTW=SQM3/SH
22125           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22126      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
22127      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
22128      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
22129      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
22130      &    (QGTW*(QGTW-RGTW*PGTW)**4)
22131           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22132             NCHN=NCHN+1
22133             ISIG(NCHN,1)=21
22134             ISIG(NCHN,2)=21
22135             ISIG(NCHN,3)=1
22136             SIGH(NCHN)=FACQQG
22137           ENDIF
22138  
22139         ELSEIF(ISUB.EQ.88) THEN
22140 C...g + g -> chi_1c + g
22141           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22142           QGTW=(SH*TH*UH)/SH**3
22143           RGTW=SQM3/SH
22144           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22145      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
22146      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
22147      &    (QGTW-RGTW*PGTW)**4
22148           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22149             NCHN=NCHN+1
22150             ISIG(NCHN,1)=21
22151             ISIG(NCHN,2)=21
22152             ISIG(NCHN,3)=1
22153             SIGH(NCHN)=FACQQG
22154           ENDIF
22155  
22156         ELSEIF(ISUB.EQ.89) THEN
22157 C...g + g -> chi_2c + g
22158           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
22159           QGTW=(SH*TH*UH)/SH**3
22160           RGTW=SQM3/SH
22161           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
22162      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
22163      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
22164      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
22165      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
22166      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
22167           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22168             NCHN=NCHN+1
22169             ISIG(NCHN,1)=21
22170             ISIG(NCHN,2)=21
22171             ISIG(NCHN,3)=1
22172             SIGH(NCHN)=FACQQG
22173           ENDIF
22174         ENDIF
22175  
22176       ELSEIF(ISUB.LE.200) THEN
22177         IF(ISUB.EQ.104) THEN
22178 C...g + g -> chi_c0.
22179           KC=PYCOMP(10441)
22180           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
22181      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
22182           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
22183           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22184             NCHN=NCHN+1
22185             ISIG(NCHN,1)=21
22186             ISIG(NCHN,2)=21
22187             ISIG(NCHN,3)=1
22188             SIGH(NCHN)=FACBW
22189           ENDIF
22190  
22191         ELSEIF(ISUB.EQ.105) THEN
22192 C...g + g -> chi_c2.
22193           KC=PYCOMP(445)
22194           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
22195      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
22196           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
22197           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22198             NCHN=NCHN+1
22199             ISIG(NCHN,1)=21
22200             ISIG(NCHN,2)=21
22201             ISIG(NCHN,3)=1
22202             SIGH(NCHN)=FACBW
22203           ENDIF
22204  
22205         ELSEIF(ISUB.EQ.106) THEN
22206 C...g + g -> J/Psi + gamma.
22207           EQ=2D0/3D0
22208           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
22209      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22210      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22211           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
22212             NCHN=NCHN+1
22213             ISIG(NCHN,1)=21
22214             ISIG(NCHN,2)=21
22215             ISIG(NCHN,3)=1
22216             SIGH(NCHN)=FACQQG
22217           ENDIF
22218  
22219         ELSEIF(ISUB.EQ.107) THEN
22220 C...g + gamma -> J/Psi + g.
22221           EQ=2D0/3D0
22222           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
22223      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22224      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22225           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
22226             NCHN=NCHN+1
22227             ISIG(NCHN,1)=21
22228             ISIG(NCHN,2)=22
22229             ISIG(NCHN,3)=1
22230             SIGH(NCHN)=FACQQG
22231           ENDIF
22232           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
22233             NCHN=NCHN+1
22234             ISIG(NCHN,1)=22
22235             ISIG(NCHN,2)=21
22236             ISIG(NCHN,3)=1
22237             SIGH(NCHN)=FACQQG
22238           ENDIF
22239  
22240         ELSEIF(ISUB.EQ.108) THEN
22241 C...gamma + gamma -> J/Psi + gamma.
22242           EQ=2D0/3D0
22243           FACQQG=COMFAC*AEM**3*EQ**6*384D0*PARP(38)*SQRT(SQM3)*
22244      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
22245      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
22246           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
22247             NCHN=NCHN+1
22248             ISIG(NCHN,1)=22
22249             ISIG(NCHN,2)=22
22250             ISIG(NCHN,3)=1
22251             SIGH(NCHN)=FACQQG
22252           ENDIF
22253         ENDIF
22254       ENDIF
22255  
22256       RETURN
22257       END
22258  
22259 C*********************************************************************
22260  
22261 C...PYSGWZ
22262 C...Subprocess cross sections for W/Z processes,
22263 C...except that longitudinal WW scattering is in Higgs sector.
22264 C...Auxiliary to PYSIGH.
22265  
22266       SUBROUTINE PYSGWZ(NCHN,SIGS)
22267  
22268 C...Double precision and integer declarations
22269       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22270       IMPLICIT INTEGER(I-N)
22271       INTEGER PYK,PYCHGE,PYCOMP
22272 C...Parameter statement to help give large particle numbers.
22273       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
22274      &KEXCIT=4000000,KDIMEN=5000000)
22275 C...Commonblocks
22276       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22277       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22278       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
22279       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
22280       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22281       COMMON/PYINT1/MINT(400),VINT(400)
22282       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
22283       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
22284       COMMON/PYINT4/MWID(500),WIDS(500,5)
22285       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
22286       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
22287      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
22288      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
22289      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
22290       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
22291      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
22292 C...Local arrays and complex numbers
22293       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
22294      &HL4(3),HR4(3)
22295       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
22296  
22297 C...Differential cross section expressions.
22298  
22299       IF(ISUB.LE.20) THEN
22300         IF(ISUB.EQ.1) THEN
22301 C...f + fbar -> gamma*/Z0
22302           MINT(61)=2
22303           CALL PYWIDT(23,SH,WDTP,WDTE)
22304           HS=SHR*WDTP(0)
22305           FACZ=4D0*COMFAC*3D0
22306           HP0=AEM/3D0*SH
22307           HP1=AEM/3D0*XWC*SH
22308           DO 100 I=MMINA,MMAXA
22309             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
22310             EI=KCHG(IABS(I),1)/3D0
22311             AI=SIGN(1D0,EI)
22312             VI=AI-4D0*EI*XWV
22313             HI0=HP0
22314             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
22315             HI1=HP1
22316             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
22317             NCHN=NCHN+1
22318             ISIG(NCHN,1)=I
22319             ISIG(NCHN,2)=-I
22320             ISIG(NCHN,3)=1
22321             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
22322      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
22323      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
22324      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
22325   100     CONTINUE
22326  
22327         ELSEIF(ISUB.EQ.2) THEN
22328 C...f + fbar' -> W+/-
22329           CALL PYWIDT(24,SH,WDTP,WDTE)
22330           HS=SHR*WDTP(0)
22331           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
22332           HP=AEM/(24D0*XW)*SH
22333           DO 120 I=MMIN1,MMAX1
22334             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
22335             IA=IABS(I)
22336             DO 110 J=MMIN2,MMAX2
22337               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
22338               JA=IABS(J)
22339               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
22340               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22341      &        GOTO 110
22342               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22343               HI=HP*2D0
22344               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
22345               NCHN=NCHN+1
22346               ISIG(NCHN,1)=I
22347               ISIG(NCHN,2)=J
22348               ISIG(NCHN,3)=1
22349               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
22350               SIGH(NCHN)=HI*FACBW*HF
22351   110       CONTINUE
22352   120     CONTINUE
22353  
22354         ELSEIF(ISUB.EQ.15) THEN
22355 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
22356           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22357 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22358           HFGG=0D0
22359           HFGZ=0D0
22360           HFZZ=0D0
22361           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22362           DO 130 I=1,MIN(16,MDCY(23,3))
22363             IDC=I+MDCY(23,2)-1
22364             IF(MDME(IDC,1).LT.0) GOTO 130
22365             IMDM=0
22366             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22367      &      IMDM=1
22368             IF(I.LE.8) THEN
22369               EF=KCHG(I,1)/3D0
22370               AF=SIGN(1D0,EF+0.1D0)
22371               VF=AF-4D0*EF*XWV
22372             ELSEIF(I.LE.16) THEN
22373               EF=KCHG(I+2,1)/3D0
22374               AF=SIGN(1D0,EF+0.1D0)
22375               VF=AF-4D0*EF*XWV
22376             ENDIF
22377             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22378             IF(4D0*RM1.LT.1D0) THEN
22379               FCOF=1D0
22380               IF(I.LE.8) FCOF=3D0*RADC4
22381               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22382               IF(IMDM.EQ.1) THEN
22383                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22384                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22385                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22386      &          AF**2*(1D0-4D0*RM1))*BE34
22387               ENDIF
22388             ENDIF
22389   130     CONTINUE
22390 C...Propagators: as simulated in PYOFSH and as desired
22391           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22392           MINT15=MINT(15)
22393           MINT(15)=1
22394           MINT(61)=1
22395           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22396           MINT(15)=MINT15
22397           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22398           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22399           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22400           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22401 C...Loop over flavours; consider full gamma/Z structure
22402           DO 140 I=MMINA,MMAXA
22403             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
22404      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
22405             EI=KCHG(IABS(I),1)/3D0
22406             AI=SIGN(1D0,EI)
22407             VI=AI-4D0*EI*XWV
22408             NCHN=NCHN+1
22409             ISIG(NCHN,1)=I
22410             ISIG(NCHN,2)=-I
22411             ISIG(NCHN,3)=1
22412             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
22413      &      (VI**2+AI**2)*HFZZ)/HBW4
22414   140     CONTINUE
22415  
22416         ELSEIF(ISUB.EQ.16) THEN
22417 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
22418           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22419 C...Propagators: as simulated in PYOFSH and as desired
22420           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22421           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22422           GMMWC=SQRT(SQM4)*WDTP(0)
22423           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22424           FACWG=FACWG*HBW4C/HBW4
22425           DO 160 I=MMIN1,MMAX1
22426             IA=IABS(I)
22427             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
22428             DO 150 J=MMIN2,MMAX2
22429               JA=IABS(J)
22430               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
22431               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
22432               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22433               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22434               FCKM=VCKM((IA+1)/2,(JA+1)/2)
22435               NCHN=NCHN+1
22436               ISIG(NCHN,1)=I
22437               ISIG(NCHN,2)=J
22438               ISIG(NCHN,3)=1
22439               SIGH(NCHN)=FACWG*FCKM*WIDSC
22440   150       CONTINUE
22441   160     CONTINUE
22442  
22443         ELSEIF(ISUB.EQ.19) THEN
22444 C...f + fbar -> gamma + (gamma*/Z0)
22445           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22446 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22447           HFGG=0D0
22448           HFGZ=0D0
22449           HFZZ=0D0
22450           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22451           DO 170 I=1,MIN(16,MDCY(23,3))
22452             IDC=I+MDCY(23,2)-1
22453             IF(MDME(IDC,1).LT.0) GOTO 170
22454             IMDM=0
22455             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22456      &      IMDM=1
22457             IF(I.LE.8) THEN
22458               EF=KCHG(I,1)/3D0
22459               AF=SIGN(1D0,EF+0.1D0)
22460               VF=AF-4D0*EF*XWV
22461             ELSEIF(I.LE.16) THEN
22462               EF=KCHG(I+2,1)/3D0
22463               AF=SIGN(1D0,EF+0.1D0)
22464               VF=AF-4D0*EF*XWV
22465             ENDIF
22466             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22467             IF(4D0*RM1.LT.1D0) THEN
22468               FCOF=1D0
22469               IF(I.LE.8) FCOF=3D0*RADC4
22470               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22471               IF(IMDM.EQ.1) THEN
22472                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22473                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22474                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22475      &          AF**2*(1D0-4D0*RM1))*BE34
22476               ENDIF
22477             ENDIF
22478   170     CONTINUE
22479 C...Propagators: as simulated in PYOFSH and as desired
22480           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22481           MINT15=MINT(15)
22482           MINT(15)=1
22483           MINT(61)=1
22484           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22485           MINT(15)=MINT15
22486           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22487           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22488           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22489           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22490 C...Loop over flavours; consider full gamma/Z structure
22491           DO 180 I=MMINA,MMAXA
22492             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
22493             EI=KCHG(IABS(I),1)/3D0
22494             AI=SIGN(1D0,EI)
22495             VI=AI-4D0*EI*XWV
22496             FCOI=1D0
22497             IF(IABS(I).LE.10) FCOI=FACA/3D0
22498             NCHN=NCHN+1
22499             ISIG(NCHN,1)=I
22500             ISIG(NCHN,2)=-I
22501             ISIG(NCHN,3)=1
22502             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
22503      &      (VI**2+AI**2)*HFZZ)/HBW4
22504   180     CONTINUE
22505  
22506         ELSEIF(ISUB.EQ.20) THEN
22507 C...f + fbar' -> gamma + W+/-
22508           FACGW=COMFAC*0.5D0*AEM**2/XW
22509 C...Propagators: as simulated in PYOFSH and as desired
22510           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22511           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22512           GMMWC=SQRT(SQM4)*WDTP(0)
22513           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22514           FACGW=FACGW*HBW4C/HBW4
22515 C...Anomalous couplings
22516           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
22517           TERM2=0D0
22518           TERM3=0D0
22519           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
22520             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
22521             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
22522      &      (4D0*SQMW))/(TH+UH)**2
22523           ENDIF
22524           DO 200 I=MMIN1,MMAX1
22525             IA=IABS(I)
22526             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
22527             DO 190 J=MMIN2,MMAX2
22528               JA=IABS(J)
22529               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
22530               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
22531               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22532      &        GOTO 190
22533               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22534               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22535               IF(IA.LE.10) THEN
22536                 FACWR=UH/(TH+UH)-1D0/3D0
22537                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
22538                 FCOI=FACA/3D0
22539               ELSE
22540                 FACWR=-TH/(TH+UH)
22541                 FCKM=1D0
22542                 FCOI=1D0
22543               ENDIF
22544               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
22545               NCHN=NCHN+1
22546               ISIG(NCHN,1)=I
22547               ISIG(NCHN,2)=J
22548               ISIG(NCHN,3)=1
22549               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
22550   190       CONTINUE
22551   200     CONTINUE
22552         ENDIF
22553  
22554       ELSEIF(ISUB.LE.40) THEN
22555         IF(ISUB.EQ.22) THEN
22556 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
22557 C...Kinematics dependence
22558           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
22559      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
22560 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22561           DO 220 I=1,6
22562             DO 210 J=1,3
22563               HGZ(I,J)=0D0
22564   210       CONTINUE
22565   220     CONTINUE
22566           RADC3=1D0+PYALPS(SQM3)/PARU(1)
22567           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22568           DO 230 I=1,MIN(16,MDCY(23,3))
22569             IDC=I+MDCY(23,2)-1
22570             IF(MDME(IDC,1).LT.0) GOTO 230
22571             IMDM=0
22572             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
22573             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
22574             IF(I.LE.8) THEN
22575               EF=KCHG(I,1)/3D0
22576               AF=SIGN(1D0,EF+0.1D0)
22577               VF=AF-4D0*EF*XWV
22578             ELSEIF(I.LE.16) THEN
22579               EF=KCHG(I+2,1)/3D0
22580               AF=SIGN(1D0,EF+0.1D0)
22581               VF=AF-4D0*EF*XWV
22582             ENDIF
22583             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
22584             IF(4D0*RM1.LT.1D0) THEN
22585               FCOF=1D0
22586               IF(I.LE.8) FCOF=3D0*RADC3
22587               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22588               IF(IMDM.GE.1) THEN
22589                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22590                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22591                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
22592      &          AF**2*(1D0-4D0*RM1))*BE34
22593               ENDIF
22594             ENDIF
22595             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22596             IF(4D0*RM1.LT.1D0) THEN
22597               FCOF=1D0
22598               IF(I.LE.8) FCOF=3D0*RADC4
22599               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22600               IF(IMDM.GE.1) THEN
22601                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22602                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22603                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
22604      &          AF**2*(1D0-4D0*RM1))*BE34
22605               ENDIF
22606             ENDIF
22607   230     CONTINUE
22608 C...Propagators: as simulated in PYOFSH and as desired
22609           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
22610           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22611           MINT15=MINT(15)
22612           MINT(15)=1
22613           MINT(61)=1
22614           CALL PYWIDT(23,SQM3,WDTP,WDTE)
22615           MINT(15)=MINT15
22616           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22617           DO 240 J=1,3
22618             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
22619             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
22620             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
22621   240     CONTINUE
22622           MINT15=MINT(15)
22623           MINT(15)=1
22624           MINT(61)=1
22625           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22626           MINT(15)=MINT15
22627           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22628           DO 250 J=1,3
22629             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
22630             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
22631             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
22632   250     CONTINUE
22633 C...Loop over flavours; separate left- and right-handed couplings
22634           DO 270 I=MMINA,MMAXA
22635             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
22636             EI=KCHG(IABS(I),1)/3D0
22637             AI=SIGN(1D0,EI)
22638             VI=AI-4D0*EI*XWV
22639             VALI=VI-AI
22640             VARI=VI+AI
22641             FCOI=1D0
22642             IF(IABS(I).LE.10) FCOI=FACA/3D0
22643             DO 260 J=1,3
22644               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
22645               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
22646               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
22647               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
22648   260       CONTINUE
22649             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
22650      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
22651      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
22652      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
22653             NCHN=NCHN+1
22654             ISIG(NCHN,1)=I
22655             ISIG(NCHN,2)=-I
22656             ISIG(NCHN,3)=1
22657             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
22658   270     CONTINUE
22659  
22660         ELSEIF(ISUB.EQ.23) THEN
22661 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
22662           FACZW=COMFAC*0.5D0*(AEM/XW)**2
22663           FACZW=FACZW*WIDS(23,2)
22664           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
22665           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
22666           DO 290 I=MMIN1,MMAX1
22667             IA=IABS(I)
22668             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
22669             DO 280 J=MMIN2,MMAX2
22670               JA=IABS(J)
22671               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
22672               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
22673               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
22674      &        GOTO 280
22675               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
22676               EI=KCHG(IA,1)/3D0
22677               AI=SIGN(1D0,EI+0.1D0)
22678               VI=AI-4D0*EI*XWV
22679               EJ=KCHG(JA,1)/3D0
22680               AJ=SIGN(1D0,EJ+0.1D0)
22681               VJ=AJ-4D0*EJ*XWV
22682               IF(VI+AI.GT.0) THEN
22683                 VISAV=VI
22684                 AISAV=AI
22685                 VI=VJ
22686                 AI=AJ
22687                 VJ=VISAV
22688                 AJ=AISAV
22689               ENDIF
22690               FCKM=1D0
22691               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
22692               FCOI=1D0
22693               IF(IA.LE.10) FCOI=FACA/3D0
22694               NCHN=NCHN+1
22695               ISIG(NCHN,1)=I
22696               ISIG(NCHN,2)=J
22697               ISIG(NCHN,3)=1
22698               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
22699      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
22700      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
22701      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
22702      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
22703      &        WIDS(24,(5-KCHW)/2)
22704 C***Protect against slightly negative cross sections. (Reason yet to be
22705 C***sorted out. One possibility: addition of width to the W propagator.)
22706               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
22707   280       CONTINUE
22708   290     CONTINUE
22709  
22710         ELSEIF(ISUB.EQ.25) THEN
22711 C...f + fbar -> W+ + W-
22712 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
22713           GMMZC=GMMZ
22714           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
22715           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
22716           CALL PYWIDT(24,SQM3,WDTP,WDTE)
22717           GMMW3=SQRT(SQM3)*WDTP(0)
22718           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
22719           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22720           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22721           GMMW4=SQRT(SQM4)*WDTP(0)
22722           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
22723 C...Kinematical functions
22724           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
22725           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
22726           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
22727           GT=THUH34+4D0*THUH/TH2
22728           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
22729           GU=THUH34+4D0*THUH/UH2
22730           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
22731 C...Common factors and couplings
22732           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
22733           FACWW=FACWW*WIDS(24,1)
22734           CGG=AEM**2/2D0
22735           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
22736           CZZ=AEM**2/(32D0*XW**2)*HBWZC
22737           CNG=AEM**2/(4D0*XW)
22738           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
22739           CNN=AEM**2/(16D0*XW**2)
22740 C...Coulomb factor for W+W- pair
22741           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
22742             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
22743             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
22744             IF(COULE.LT.100D0*PMAS(24,2)) THEN
22745               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
22746      &        PMAS(24,2)**2)-COULE))
22747             ELSE
22748               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
22749             ENDIF
22750             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
22751               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
22752      &        PMAS(24,2)**2)+COULE))
22753             ELSE
22754               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
22755      &        ABS(COULE)))
22756             ENDIF
22757             IF(MSTP(40).EQ.1) THEN
22758               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
22759      &        MAX(1D-10,2D0*COULP*COULP1))
22760               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
22761             ELSEIF(MSTP(40).EQ.2) THEN
22762               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
22763               COULCP=DCMPLX(0D0,DBLE(COULP))
22764               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
22765               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
22766      &        (4D0*COULCP)*LOG(COULCD)
22767               COULCS=DCMPLX(0D0,0D0)
22768               NSTP=100
22769               DO 300 ISTP=1,NSTP
22770                 COULXX=(ISTP-0.5)/NSTP
22771                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
22772      &          (1D0+COULXX/COULCD))
22773   300         CONTINUE
22774               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
22775      &        (COULCS/NSTP)
22776               FACCOU=ABS(COULCR)**2
22777             ELSEIF(MSTP(40).EQ.3) THEN
22778               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
22779      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
22780               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
22781             ENDIF
22782           ELSEIF(MSTP(40).EQ.4) THEN
22783             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
22784           ELSE
22785             FACCOU=1D0
22786           ENDIF
22787           VINT(95)=FACCOU
22788           FACWW=FACWW*FACCOU
22789 C...Loop over allowed flavours
22790           DO 310 I=MMINA,MMAXA
22791             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
22792             EI=KCHG(IABS(I),1)/3D0
22793             AI=SIGN(1D0,EI+0.1D0)
22794             VI=AI-4D0*EI*XWV
22795             FCOI=1D0
22796             IF(IABS(I).LE.10) FCOI=FACA/3D0
22797             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
22798               IF(AI.LT.0D0) THEN
22799                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
22800      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
22801               ELSE
22802                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
22803      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
22804               ENDIF
22805             ELSE
22806               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
22807               BET=SQRT(1D0-4D0*XMW02/SH)
22808               GAT=1D0/SQRT(1D0-BET**2)
22809               STHE2=1D0-CTH**2
22810               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
22811               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
22812      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
22813               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
22814      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
22815      &        (1D0-2D0*BET*CTH+BET**2))
22816               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
22817               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
22818               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
22819               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
22820               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
22821               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
22822               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
22823               DSIGWW=ATOT
22824             ENDIF
22825             NCHN=NCHN+1
22826             ISIG(NCHN,1)=I
22827             ISIG(NCHN,2)=-I
22828             ISIG(NCHN,3)=1
22829             SIGH(NCHN)=FACWW*FCOI*DSIGWW
22830   310     CONTINUE
22831  
22832         ELSEIF(ISUB.EQ.30) THEN
22833 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
22834           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
22835      &    (-SH*UH)
22836 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22837           HFGG=0D0
22838           HFGZ=0D0
22839           HFZZ=0D0
22840           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22841           DO 320 I=1,MIN(16,MDCY(23,3))
22842             IDC=I+MDCY(23,2)-1
22843             IF(MDME(IDC,1).LT.0) GOTO 320
22844             IMDM=0
22845             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22846      &      IMDM=1
22847             IF(I.LE.8) THEN
22848               EF=KCHG(I,1)/3D0
22849               AF=SIGN(1D0,EF+0.1D0)
22850               VF=AF-4D0*EF*XWV
22851             ELSEIF(I.LE.16) THEN
22852               EF=KCHG(I+2,1)/3D0
22853               AF=SIGN(1D0,EF+0.1D0)
22854               VF=AF-4D0*EF*XWV
22855             ENDIF
22856             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22857             IF(4D0*RM1.LT.1D0) THEN
22858               FCOF=1D0
22859               IF(I.LE.8) FCOF=3D0*RADC4
22860               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22861               IF(IMDM.EQ.1) THEN
22862                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22863                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22864                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22865      &          AF**2*(1D0-4D0*RM1))*BE34
22866               ENDIF
22867             ENDIF
22868   320     CONTINUE
22869 C...Propagators: as simulated in PYOFSH and as desired
22870           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22871           MINT15=MINT(15)
22872           MINT(15)=1
22873           MINT(61)=1
22874           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22875           MINT(15)=MINT15
22876           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22877           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22878           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22879           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22880 C...Loop over flavours; consider full gamma/Z structure
22881           DO 340 I=MMINA,MMAXA
22882             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
22883             EI=KCHG(IABS(I),1)/3D0
22884             AI=SIGN(1D0,EI)
22885             VI=AI-4D0*EI*XWV
22886             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
22887      &      (VI**2+AI**2)*HFZZ)/HBW4
22888             DO 330 ISDE=1,2
22889               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
22890               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
22891               NCHN=NCHN+1
22892               ISIG(NCHN,ISDE)=I
22893               ISIG(NCHN,3-ISDE)=21
22894               ISIG(NCHN,3)=1
22895               SIGH(NCHN)=FACZQ
22896   330       CONTINUE
22897   340     CONTINUE
22898  
22899         ELSEIF(ISUB.EQ.31) THEN
22900 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
22901           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
22902      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
22903 C...Propagators: as simulated in PYOFSH and as desired
22904           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
22905           CALL PYWIDT(24,SQM4,WDTP,WDTE)
22906           GMMWC=SQRT(SQM4)*WDTP(0)
22907           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
22908           FACWQ=FACWQ*HBW4C/HBW4
22909           DO 360 I=MMINA,MMAXA
22910             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
22911             IA=IABS(I)
22912             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
22913             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
22914             DO 350 ISDE=1,2
22915               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
22916               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
22917               NCHN=NCHN+1
22918               ISIG(NCHN,ISDE)=I
22919               ISIG(NCHN,3-ISDE)=21
22920               ISIG(NCHN,3)=1
22921               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
22922   350       CONTINUE
22923   360     CONTINUE
22924  
22925         ELSEIF(ISUB.EQ.35) THEN
22926 C...f + gamma -> f + (gamma*/Z0)
22927           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
22928             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
22929             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
22930           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
22931             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
22932             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
22933           ELSE
22934             FZQN=SH2+UH2+2D0*SQM4*TH
22935             FZQDTM=-SH*UH
22936           ENDIF
22937           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
22938 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
22939           HFGG=0D0
22940           HFGZ=0D0
22941           HFZZ=0D0
22942           RADC4=1D0+PYALPS(SQM4)/PARU(1)
22943           DO 370 I=1,MIN(16,MDCY(23,3))
22944             IDC=I+MDCY(23,2)-1
22945             IF(MDME(IDC,1).LT.0) GOTO 370
22946             IMDM=0
22947             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
22948      &      IMDM=1
22949             IF(I.LE.8) THEN
22950               EF=KCHG(I,1)/3D0
22951               AF=SIGN(1D0,EF+0.1D0)
22952               VF=AF-4D0*EF*XWV
22953             ELSEIF(I.LE.16) THEN
22954               EF=KCHG(I+2,1)/3D0
22955               AF=SIGN(1D0,EF+0.1D0)
22956               VF=AF-4D0*EF*XWV
22957             ENDIF
22958             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
22959             IF(4D0*RM1.LT.1D0) THEN
22960               FCOF=1D0
22961               IF(I.LE.8) FCOF=3D0*RADC4
22962               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
22963               IF(IMDM.EQ.1) THEN
22964                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
22965                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
22966                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
22967      &          AF**2*(1D0-4D0*RM1))*BE34
22968               ENDIF
22969             ENDIF
22970   370     CONTINUE
22971 C...Propagators: as simulated in PYOFSH and as desired
22972           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
22973           MINT15=MINT(15)
22974           MINT(15)=1
22975           MINT(61)=1
22976           CALL PYWIDT(23,SQM4,WDTP,WDTE)
22977           MINT(15)=MINT15
22978           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
22979           HFGG=HFGG*HFAEM*VINT(111)/SQM4
22980           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
22981           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
22982 C...Loop over flavours; consider full gamma/Z structure
22983           DO 390 I=MMINA,MMAXA
22984             IF(I.EQ.0) GOTO 390
22985             EI=KCHG(IABS(I),1)/3D0
22986             AI=SIGN(1D0,EI)
22987             VI=AI-4D0*EI*XWV
22988             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
22989      &      (VI**2+AI**2)*HFZZ)/HBW4
22990             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
22991             DO 380 ISDE=1,2
22992               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
22993               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
22994               NCHN=NCHN+1
22995               ISIG(NCHN,ISDE)=I
22996               ISIG(NCHN,3-ISDE)=22
22997               ISIG(NCHN,3)=1
22998               SIGH(NCHN)=FACZQ*FZQN/FZQD
22999   380       CONTINUE
23000   390     CONTINUE
23001  
23002         ELSEIF(ISUB.EQ.36) THEN
23003 C...f + gamma -> f' + W+/-
23004           FWQ=COMFAC*AEM**2/(2D0*XW)*
23005      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
23006 C...Propagators: as simulated in PYOFSH and as desired
23007           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
23008           CALL PYWIDT(24,SQM4,WDTP,WDTE)
23009           GMMWC=SQRT(SQM4)*WDTP(0)
23010           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
23011           FWQ=FWQ*HBW4C/HBW4
23012           DO 410 I=MMINA,MMAXA
23013             IF(I.EQ.0) GOTO 410
23014             IA=IABS(I)
23015             EIA=ABS(KCHG(IABS(I),1)/3D0)
23016             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
23017             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
23018             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
23019             DO 400 ISDE=1,2
23020               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
23021               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
23022               NCHN=NCHN+1
23023               ISIG(NCHN,ISDE)=I
23024               ISIG(NCHN,3-ISDE)=22
23025               ISIG(NCHN,3)=1
23026               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
23027   400       CONTINUE
23028   410     CONTINUE
23029         ENDIF
23030  
23031       ELSEIF(ISUB.LE.100) THEN
23032         IF(ISUB.EQ.69) THEN
23033 C...gamma + gamma -> W+ + W-
23034           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
23035           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
23036           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
23037      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
23038           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
23039           NCHN=NCHN+1
23040           ISIG(NCHN,1)=22
23041           ISIG(NCHN,2)=22
23042           ISIG(NCHN,3)=1
23043           SIGH(NCHN)=FACWW
23044   420     CONTINUE
23045  
23046         ELSEIF(ISUB.EQ.70) THEN
23047 C...gamma + W+/- -> Z0 + W+/-
23048           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
23049           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
23050           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
23051      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
23052      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
23053           DO 440 KCHW=1,-1,-2
23054             DO 430 ISDE=1,2
23055               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
23056               NCHN=NCHN+1
23057               ISIG(NCHN,ISDE)=22
23058               ISIG(NCHN,3-ISDE)=24*KCHW
23059               ISIG(NCHN,3)=1
23060               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
23061   430       CONTINUE
23062   440     CONTINUE
23063         ENDIF
23064       ENDIF
23065  
23066       RETURN
23067       END
23068  
23069 C*********************************************************************
23070  
23071 C...PYSGHG
23072 C...Subprocess cross sections for Higgs processes,
23073 C...except Higgs pairs in PYSGSU, but including WW scattering.
23074 C...Auxiliary to PYSIGH.
23075  
23076       SUBROUTINE PYSGHG(NCHN,SIGS)
23077  
23078 C...Double precision and integer declarations
23079       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23080       IMPLICIT INTEGER(I-N)
23081       INTEGER PYK,PYCHGE,PYCOMP
23082 C...Parameter statement to help give large particle numbers.
23083       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23084      &KEXCIT=4000000,KDIMEN=5000000)
23085 C...Commonblocks
23086       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23087       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23088       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23089       COMMON/PYINT1/MINT(400),VINT(400)
23090       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
23091       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
23092       COMMON/PYINT4/MWID(500),WIDS(500,5)
23093       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23094       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
23095       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
23096      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
23097      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
23098      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
23099       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
23100      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
23101 C...Local arrays and complex variables
23102       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
23103       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
23104       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
23105  
23106 C...Convert H or A process into equivalent h one
23107       IHIGG=1
23108       KFHIGG=25
23109       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
23110      &ISUB.LE.190)) THEN
23111         IHIGG=2
23112         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
23113         KFHIGG=33+IHIGG
23114         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
23115         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
23116         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
23117         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
23118         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
23119         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
23120         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
23121         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
23122         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
23123         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
23124         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
23125         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
23126       ENDIF
23127       SQMH=PMAS(KFHIGG,1)**2
23128       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
23129  
23130 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23131       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
23132      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
23133 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
23134         IF(MSTP(46).LE.4) THEN
23135           HDTLH=LOG(PMAS(25,1)/PARP(44))
23136           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
23137           HDTNR=-1D0/18D0+HDTLH/6D0
23138         ELSE
23139           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
23140           HDTLQ=LOG(PARP(45)/PARP(44))
23141           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
23142           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
23143         ENDIF
23144  
23145 C...Calculate lowest and next-to-lowest order partial wave amplitudes
23146         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
23147         A00L=DBLE(HDTV*SH)
23148         A20L=-0.5D0*A00L
23149         A11L=A00L/6D0
23150         HDTLS=LOG(SH/PARP(44)**2)
23151         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
23152      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
23153      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
23154         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
23155      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
23156      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
23157         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
23158      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
23159  
23160 C...Unitarize partial wave amplitudes with Pade or K-matrix method
23161         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
23162           A00U=A00L/(1D0-A004/A00L)
23163           A20U=A20L/(1D0-A204/A20L)
23164           A11U=A11L/(1D0-A114/A11L)
23165         ELSE
23166           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
23167           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
23168           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
23169         ENDIF
23170       ENDIF
23171  
23172 C...Differential cross section expressions.
23173  
23174       IF(ISUB.LE.60) THEN
23175         IF(ISUB.EQ.3) THEN
23176 C...f + fbar -> h0 (or H0, or A0)
23177           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23178           HS=SHR*WDTP(0)
23179           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23180           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23181      &    FACBW=0D0
23182           HP=AEM/(8D0*XW)*SH/SQMW*SH
23183           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23184           DO 100 I=MMINA,MMAXA
23185             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
23186             IA=IABS(I)
23187             RMQ=PYMRUN(IA,SH)**2/SH
23188             HI=HP*RMQ
23189             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
23190             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
23191               IKFI=1
23192               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
23193               IF(IA.GT.10) IKFI=3
23194               HI=HI*PARU(150+10*IHIGG+IKFI)**2
23195               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
23196                 HI=HI/(1D0+RMSS(41))**2
23197                 IF(IHIGG.NE.3) THEN
23198                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
23199      &            PARU(151+10*IHIGG))**2
23200                 ENDIF
23201               ENDIF
23202             ENDIF
23203             NCHN=NCHN+1
23204             ISIG(NCHN,1)=I
23205             ISIG(NCHN,2)=-I
23206             ISIG(NCHN,3)=1
23207             SIGH(NCHN)=HI*FACBW*HF
23208   100     CONTINUE
23209  
23210         ELSEIF(ISUB.EQ.5) THEN
23211 C...Z0 + Z0 -> h0
23212           CALL PYWIDT(25,SH,WDTP,WDTE)
23213           HS=SHR*WDTP(0)
23214           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23215           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
23216           HP=AEM/(8D0*XW)*SH/SQMW*SH
23217           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23218           HI=HP/4D0
23219           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
23220           DO 120 I=MMIN1,MMAX1
23221             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
23222             DO 110 J=MMIN2,MMAX2
23223               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
23224               EI=KCHG(IABS(I),1)/3D0
23225               AI=SIGN(1D0,EI)
23226               VI=AI-4D0*EI*XWV
23227               EJ=KCHG(IABS(J),1)/3D0
23228               AJ=SIGN(1D0,EJ)
23229               VJ=AJ-4D0*EJ*XWV
23230               NCHN=NCHN+1
23231               ISIG(NCHN,1)=I
23232               ISIG(NCHN,2)=J
23233               ISIG(NCHN,3)=1
23234               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
23235   110       CONTINUE
23236   120     CONTINUE
23237  
23238         ELSEIF(ISUB.EQ.8) THEN
23239 C...W+ + W- -> h0
23240           CALL PYWIDT(25,SH,WDTP,WDTE)
23241           HS=SHR*WDTP(0)
23242           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23243           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
23244           HP=AEM/(8D0*XW)*SH/SQMW*SH
23245           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23246           HI=HP/2D0
23247           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
23248           DO 140 I=MMIN1,MMAX1
23249             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
23250             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23251             DO 130 J=MMIN2,MMAX2
23252               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
23253               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23254               IF(EI*EJ.GT.0D0) GOTO 130
23255               NCHN=NCHN+1
23256               ISIG(NCHN,1)=I
23257               ISIG(NCHN,2)=J
23258               ISIG(NCHN,3)=1
23259               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
23260   130       CONTINUE
23261   140     CONTINUE
23262  
23263         ELSEIF(ISUB.EQ.24) THEN
23264 C...f + fbar -> Z0 + h0 (or H0, or A0)
23265 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
23266           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
23267           CALL PYWIDT(23,SQM3,WDTP,WDTE)
23268           GMMZ3=SQRT(SQM3)*WDTP(0)
23269           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
23270           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23271           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23272           GMMH4=SQRT(SQM4)*WDTP(0)
23273           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
23274           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
23275           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
23276      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
23277           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
23278           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
23279      &    PARU(154+10*IHIGG)**2
23280           DO 150 I=MMINA,MMAXA
23281             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
23282             EI=KCHG(IABS(I),1)/3D0
23283             AI=SIGN(1D0,EI)
23284             VI=AI-4D0*EI*XWV
23285             FCOI=1D0
23286             IF(IABS(I).LE.10) FCOI=FACA/3D0
23287             NCHN=NCHN+1
23288             ISIG(NCHN,1)=I
23289             ISIG(NCHN,2)=-I
23290             ISIG(NCHN,3)=1
23291             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
23292   150     CONTINUE
23293  
23294         ELSEIF(ISUB.EQ.26) THEN
23295 C...f + fbar' -> W+/- + h0 (or H0, or A0)
23296 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
23297           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
23298           CALL PYWIDT(24,SQM3,WDTP,WDTE)
23299           GMMW3=SQRT(SQM3)*WDTP(0)
23300           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
23301           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23302           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23303           GMMH4=SQRT(SQM4)*WDTP(0)
23304           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
23305           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
23306           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
23307      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
23308           FACHW=FACHW*WIDS(KFHIGG,2)
23309           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
23310      &    PARU(155+10*IHIGG)**2
23311           DO 170 I=MMIN1,MMAX1
23312             IA=IABS(I)
23313             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
23314             DO 160 J=MMIN2,MMAX2
23315               JA=IABS(J)
23316               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
23317               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
23318               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
23319      &        GOTO 160
23320               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
23321               FCKM=1D0
23322               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
23323               FCOI=1D0
23324               IF(IA.LE.10) FCOI=FACA/3D0
23325               NCHN=NCHN+1
23326               ISIG(NCHN,1)=I
23327               ISIG(NCHN,2)=J
23328               ISIG(NCHN,3)=1
23329               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
23330   160       CONTINUE
23331   170     CONTINUE
23332  
23333         ELSEIF(ISUB.EQ.32) THEN
23334 C...f + g -> f + h0 (q + g -> q + h0 only)
23335           SQMHC=PMAS(25,1)**2
23336           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
23337           DO 190 I=MMINA,MMAXA
23338             IA=IABS(I)
23339             IF(IA.NE.5) GOTO 190
23340             SQML=PMAS(IA,1)**2
23341             IF(IA.LE.10.AND.MSTP(37).EQ.1.AND.MSTP(2).GE.1) SQML=SQML*
23342      &      (LOG(MAX(4D0,PARP(37)**2*SQML/PARU(117)**2))/
23343      &      LOG(MAX(4D0,SH/PARU(117)**2)))**(24D0/(33D0-2D0*MSTU(118)))
23344             IUA=IA+MOD(IA,2)
23345             SQMQ=SQML
23346             FACHCQ=FHCQ*SQML/SQMW*
23347      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH+
23348      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
23349      &      (SQMHC-SQMQ-SH)/SH)
23350             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
23351             DO 180 ISDE=1,2
23352               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
23353               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,1).EQ.0) GOTO 180
23354               NCHN=NCHN+1
23355               ISIG(NCHN,ISDE)=I
23356               ISIG(NCHN,3-ISDE)=21
23357               ISIG(NCHN,3)=1
23358               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
23359   180       CONTINUE
23360   190     CONTINUE
23361         ENDIF
23362  
23363       ELSEIF(ISUB.LE.80) THEN
23364         IF(ISUB.EQ.71) THEN
23365 C...Z0 + Z0 -> Z0 + Z0
23366           IF(SH.LE.4.01D0*SQMZ) GOTO 220
23367  
23368           IF(MSTP(46).LE.2) THEN
23369 C...Exact scattering ME:s for on-mass-shell gauge bosons
23370             BE2=1D0-4D0*SQMZ/SH
23371             TH=-0.5D0*SH*BE2*(1D0-CTH)
23372             UH=-0.5D0*SH*BE2*(1D0+CTH)
23373             IF(MAX(TH,UH).GT.-1D0) GOTO 220
23374             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
23375             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23376             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23377             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
23378             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23379             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23380             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
23381             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
23382             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
23383             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
23384      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
23385             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
23386             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
23387      &      (ASHIM+ATHIM+AUHIM)**2)
23388             IF(MSTP(46).EQ.2) FACZZ=0D0
23389  
23390           ELSE
23391 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23392             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
23393      &      ABS(A00U+2D0*A20U)**2
23394           ENDIF
23395           FACZZ=FACZZ*WIDS(23,1)
23396  
23397           DO 210 I=MMIN1,MMAX1
23398             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
23399             EI=KCHG(IABS(I),1)/3D0
23400             AI=SIGN(1D0,EI)
23401             VI=AI-4D0*EI*XWV
23402             AVI=AI**2+VI**2
23403             DO 200 J=MMIN2,MMAX2
23404               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
23405               EJ=KCHG(IABS(J),1)/3D0
23406               AJ=SIGN(1D0,EJ)
23407               VJ=AJ-4D0*EJ*XWV
23408               AVJ=AJ**2+VJ**2
23409               NCHN=NCHN+1
23410               ISIG(NCHN,1)=I
23411               ISIG(NCHN,2)=J
23412               ISIG(NCHN,3)=1
23413               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
23414   200       CONTINUE
23415   210     CONTINUE
23416   220     CONTINUE
23417  
23418         ELSEIF(ISUB.EQ.72) THEN
23419 C...Z0 + Z0 -> W+ + W-
23420           IF(SH.LE.4.01D0*SQMZ) GOTO 250
23421  
23422           IF(MSTP(46).LE.2) THEN
23423 C...Exact scattering ME:s for on-mass-shell gauge bosons
23424             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
23425             CTH2=CTH**2
23426             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
23427             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
23428             IF(MAX(TH,UH).GT.-1D0) GOTO 250
23429             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
23430      &      (1D0-2D0*SQMZ/SH)
23431             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23432             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23433             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
23434      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23435      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23436      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
23437      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23438             ATWIM=0D0
23439             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
23440      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23441      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23442      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
23443      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23444             AUWIM=0D0
23445             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
23446             A4IM=0D0
23447             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
23448      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
23449             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
23450             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
23451      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
23452             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
23453      &      (ATWIM+AUWIM+A4IM)**2)
23454  
23455           ELSE
23456 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23457             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
23458      &      ABS(A00U-A20U)**2
23459           ENDIF
23460           FACWW=FACWW*WIDS(24,1)
23461  
23462           DO 240 I=MMIN1,MMAX1
23463             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
23464             EI=KCHG(IABS(I),1)/3D0
23465             AI=SIGN(1D0,EI)
23466             VI=AI-4D0*EI*XWV
23467             AVI=AI**2+VI**2
23468             DO 230 J=MMIN2,MMAX2
23469               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
23470               EJ=KCHG(IABS(J),1)/3D0
23471               AJ=SIGN(1D0,EJ)
23472               VJ=AJ-4D0*EJ*XWV
23473               AVJ=AJ**2+VJ**2
23474               NCHN=NCHN+1
23475               ISIG(NCHN,1)=I
23476               ISIG(NCHN,2)=J
23477               ISIG(NCHN,3)=1
23478               SIGH(NCHN)=FACWW*AVI*AVJ
23479   230       CONTINUE
23480   240     CONTINUE
23481   250     CONTINUE
23482  
23483         ELSEIF(ISUB.EQ.73) THEN
23484 C...Z0 + W+/- -> Z0 + W+/-
23485           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
23486  
23487           IF(MSTP(46).LE.2) THEN
23488 C...Exact scattering ME:s for on-mass-shell gauge bosons
23489             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
23490             EP1=1D0-(SQMZ-SQMW)/SH
23491             EP2=1D0+(SQMZ-SQMW)/SH
23492             TH=-0.5D0*SH*BE2*(1D0-CTH)
23493             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
23494             IF(MAX(TH,UH).GT.-1D0) GOTO 280
23495             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
23496             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23497             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23498             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
23499      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
23500      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
23501      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
23502             ASWIM=0D0
23503             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
23504      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
23505      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
23506      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
23507      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
23508      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
23509      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
23510      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
23511      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
23512      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
23513      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
23514      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
23515             AUWIM=0D0
23516             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
23517      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
23518             A4IM=0D0
23519             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
23520      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
23521             IF(MSTP(46).LE.0) FACZW=0D0
23522             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
23523      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
23524             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
23525      &      (ASWIM+AUWIM+A4IM)**2)
23526  
23527           ELSE
23528 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23529             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
23530      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
23531           ENDIF
23532           FACZW=FACZW*WIDS(23,2)
23533  
23534           DO 270 I=MMIN1,MMAX1
23535             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
23536             EI=KCHG(IABS(I),1)/3D0
23537             AI=SIGN(1D0,EI)
23538             VI=AI-4D0*EI*XWV
23539             AVI=AI**2+VI**2
23540             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
23541             DO 260 J=MMIN2,MMAX2
23542               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
23543               EJ=KCHG(IABS(J),1)/3D0
23544               AJ=SIGN(1D0,EJ)
23545               VJ=AI-4D0*EJ*XWV
23546               AVJ=AJ**2+VJ**2
23547               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
23548               NCHN=NCHN+1
23549               ISIG(NCHN,1)=I
23550               ISIG(NCHN,2)=J
23551               ISIG(NCHN,3)=1
23552               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
23553               NCHN=NCHN+1
23554               ISIG(NCHN,1)=I
23555               ISIG(NCHN,2)=J
23556               ISIG(NCHN,3)=2
23557               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
23558   260       CONTINUE
23559   270     CONTINUE
23560   280     CONTINUE
23561  
23562         ELSEIF(ISUB.EQ.75) THEN
23563 C...W+ + W- -> gamma + gamma
23564  
23565         ELSEIF(ISUB.EQ.76) THEN
23566 C...W+ + W- -> Z0 + Z0
23567           IF(SH.LE.4.01D0*SQMZ) GOTO 310
23568  
23569           IF(MSTP(46).LE.2) THEN
23570 C...Exact scattering ME:s for on-mass-shell gauge bosons
23571             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
23572             CTH2=CTH**2
23573             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
23574             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
23575             IF(MAX(TH,UH).GT.-1D0) GOTO 310
23576             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
23577      &      (1D0-2D0*SQMZ/SH)
23578             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23579             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23580             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
23581      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23582      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23583      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
23584      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23585             ATWIM=0D0
23586             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
23587      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
23588      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
23589      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
23590      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
23591             AUWIM=0D0
23592             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
23593             A4IM=0D0
23594             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
23595      &      (SH/SQMW)**2*SH2
23596             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
23597             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
23598      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
23599             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
23600      &      (ATWIM+AUWIM+A4IM)**2)
23601  
23602           ELSE
23603 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23604             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
23605      &      ABS(A00U-A20U)**2
23606           ENDIF
23607           FACZZ=FACZZ*WIDS(23,1)
23608  
23609           DO 300 I=MMIN1,MMAX1
23610             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
23611             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23612             DO 290 J=MMIN2,MMAX2
23613               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
23614               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23615               IF(EI*EJ.GT.0D0) GOTO 290
23616               NCHN=NCHN+1
23617               ISIG(NCHN,1)=I
23618               ISIG(NCHN,2)=J
23619               ISIG(NCHN,3)=1
23620               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
23621   290       CONTINUE
23622   300     CONTINUE
23623   310     CONTINUE
23624  
23625         ELSEIF(ISUB.EQ.77) THEN
23626 C...W+/- + W+/- -> W+/- + W+/-
23627           IF(SH.LE.4.01D0*SQMW) GOTO 340
23628  
23629           IF(MSTP(46).LE.2) THEN
23630 C...Exact scattering ME:s for on-mass-shell gauge bosons
23631             BE2=1D0-4D0*SQMW/SH
23632             BE4=BE2**2
23633             CTH2=CTH**2
23634             CTH3=CTH**3
23635             TH=-0.5D0*SH*BE2*(1D0-CTH)
23636             UH=-0.5D0*SH*BE2*(1D0+CTH)
23637             IF(MAX(TH,UH).GT.-1D0) GOTO 340
23638             SHANG=(1D0+BE2)**2
23639             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
23640             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
23641             THANG=(BE2-CTH)**2
23642             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
23643             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
23644             UHANG=(BE2+CTH)**2
23645             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
23646             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
23647             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
23648             ASGRE=XW*SGZANG
23649             ASGIM=0D0
23650             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
23651             ASZIM=0D0
23652             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
23653      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
23654             ATGRE=0.5D0*XW*SH/TH*TGZANG
23655             ATGIM=0D0
23656             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
23657             ATZIM=0D0
23658             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
23659      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
23660             AUGRE=0.5D0*XW*SH/UH*UGZANG
23661             AUGIM=0D0
23662             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
23663             AUZIM=0D0
23664             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
23665             A4AIM=0D0
23666             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
23667             A4SIM=0D0
23668             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
23669      &      (SH/SQMW)**2*SH2
23670             IF(MSTP(46).LE.0) THEN
23671               AWWARE=ASHRE
23672               AWWAIM=ASHIM
23673               AWWSRE=0D0
23674               AWWSIM=0D0
23675             ELSEIF(MSTP(46).EQ.1) THEN
23676               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
23677               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
23678               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
23679               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
23680             ELSE
23681               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
23682               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
23683               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
23684               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
23685             ENDIF
23686             AWWA2=AWWARE**2+AWWAIM**2
23687             AWWS2=AWWSRE**2+AWWSIM**2
23688  
23689           ELSE
23690 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
23691             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
23692      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
23693             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
23694           ENDIF
23695  
23696           DO 330 I=MMIN1,MMAX1
23697             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
23698             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
23699             DO 320 J=MMIN2,MMAX2
23700               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
23701               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
23702               IF(EI*EJ.LT.0D0) THEN
23703 C...W+W-
23704                 IF(MSTP(45).EQ.1) GOTO 320
23705                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
23706                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
23707               ELSE
23708 C...W+W+/W-W-
23709                 IF(MSTP(45).EQ.2) GOTO 320
23710                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
23711                 IF(MSTP(46).GE.3) FACWW=FWWS
23712                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
23713                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
23714               ENDIF
23715               NCHN=NCHN+1
23716               ISIG(NCHN,1)=I
23717               ISIG(NCHN,2)=J
23718               ISIG(NCHN,3)=1
23719               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
23720               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
23721   320       CONTINUE
23722   330     CONTINUE
23723   340     CONTINUE
23724         ENDIF
23725  
23726       ELSEIF(ISUB.LE.120) THEN
23727         IF(ISUB.EQ.102) THEN
23728 C...g + g -> h0 (or H0, or A0)
23729           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23730           HS=SHR*WDTP(0)
23731           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23732           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23733           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23734      &    FACBW=0D0
23735           HI=SHR*WDTP(13)/32D0
23736           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
23737           NCHN=NCHN+1
23738           ISIG(NCHN,1)=21
23739           ISIG(NCHN,2)=21
23740           ISIG(NCHN,3)=1
23741           SIGH(NCHN)=HI*FACBW*HF
23742   350     CONTINUE
23743  
23744         ELSEIF(ISUB.EQ.103) THEN
23745 C...gamma + gamma -> h0 (or H0, or A0)
23746           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
23747           HS=SHR*WDTP(0)
23748           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
23749           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
23750           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
23751      &    FACBW=0D0
23752           HI=SHR*WDTP(14)*2D0
23753           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
23754           NCHN=NCHN+1
23755           ISIG(NCHN,1)=22
23756           ISIG(NCHN,2)=22
23757           ISIG(NCHN,3)=1
23758           SIGH(NCHN)=HI*FACBW*HF
23759   360     CONTINUE
23760  
23761         ELSEIF(ISUB.EQ.110) THEN
23762 C...f + fbar -> gamma + h0
23763           THUH=MAX(TH*UH,SH*CKIN(3)**2)
23764           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
23765           FACHG=FACHG*WIDS(KFHIGG,2)
23766 C...Calculate loop contributions for intermediate gamma* and Z0
23767           CIGTOT=DCMPLX(0D0,0D0)
23768           CIZTOT=DCMPLX(0D0,0D0)
23769           JMAX=3*MSTP(1)+1
23770           DO 370 J=1,JMAX
23771             IF(J.LE.2*MSTP(1)) THEN
23772               FNC=1D0
23773               EJ=KCHG(J,1)/3D0
23774               AJ=SIGN(1D0,EJ+0.1D0)
23775               VJ=AJ-4D0*EJ*XWV
23776               BALP=SQM4/(2D0*PMAS(J,1))**2
23777               BBET=SH/(2D0*PMAS(J,1))**2
23778             ELSEIF(J.LE.3*MSTP(1)) THEN
23779               FNC=3D0
23780               JL=2*(J-2*MSTP(1))-1
23781               EJ=KCHG(10+JL,1)/3D0
23782               AJ=SIGN(1D0,EJ+0.1D0)
23783               VJ=AJ-4D0*EJ*XWV
23784               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
23785               BBET=SH/(2D0*PMAS(10+JL,1))**2
23786             ELSE
23787               BALP=SQM4/(2D0*PMAS(24,1))**2
23788               BBET=SH/(2D0*PMAS(24,1))**2
23789             ENDIF
23790             BABI=1D0/(BALP-BBET)
23791             IF(BALP.LT.1D0) THEN
23792               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
23793               F1ALP=F0ALP**2
23794             ELSE
23795               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
23796      &        -DBLE(0.5D0*PARU(1)))
23797               F1ALP=-F0ALP**2
23798             ENDIF
23799             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
23800             IF(BBET.LT.1D0) THEN
23801               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
23802               F1BET=F0BET**2
23803             ELSE
23804               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
23805      &        -DBLE(0.5D0*PARU(1)))
23806               F1BET=-F0BET**2
23807             ENDIF
23808             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
23809             IF(J.LE.3*MSTP(1)) THEN
23810               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
23811      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
23812               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
23813               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
23814             ELSE
23815               TXW=XW/XW1
23816               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
23817      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
23818      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
23819               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
23820      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
23821      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
23822      &        (F1BET-F1ALP))
23823             ENDIF
23824   370     CONTINUE
23825           CIGTOT=CIGTOT/DBLE(SH)
23826           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
23827 C...Loop over initial flavours
23828           DO 380 I=MMINA,MMAXA
23829             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
23830             EI=KCHG(IABS(I),1)/3D0
23831             AI=SIGN(1D0,EI)
23832             VI=AI-4D0*EI*XWV
23833             FCOI=1D0
23834             IF(IABS(I).LE.10) FCOI=FACA/3D0
23835             NCHN=NCHN+1
23836             ISIG(NCHN,1)=I
23837             ISIG(NCHN,2)=-I
23838             ISIG(NCHN,3)=1
23839             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
23840      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
23841   380     CONTINUE
23842  
23843         ELSEIF(ISUB.EQ.111) THEN
23844 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
23845           IF(MSTP(38).NE.0) THEN
23846 C...Simple case: only do gg <-> h exactly.
23847           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23848           FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP(13)/SQRT(SQM4))*
23849      &    (TH**2+UH**2)/(SH*SQM4)
23850 C...Propagators: as simulated in PYOFSH and as desired
23851           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23852           GMMHC=SQRT(SQM4)*WDTP(0)
23853           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23854      &    ((SQM4-SQMH)**2+GMMHC**2)
23855           FACGH=FACGH*HBW4C/HBW4
23856           ELSE
23857 C...Messy case: do full loop integrals
23858           A5STUR=0D0
23859           A5STUI=0D0
23860           DO 390 I=1,2*MSTP(1)
23861             SQMQ=PMAS(I,1)**2
23862             EPSS=4D0*SQMQ/SH
23863             EPSH=4D0*SQMQ/SQMH
23864             CALL PYWAUX(1,EPSS,W1SR,W1SI)
23865             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23866             CALL PYWAUX(2,EPSS,W2SR,W2SI)
23867             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23868             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
23869      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
23870             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
23871      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
23872   390     CONTINUE
23873           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
23874      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
23875           FACGH=FACGH*WIDS(25,2)
23876           ENDIF
23877           DO 400 I=MMINA,MMAXA
23878             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
23879      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
23880             NCHN=NCHN+1
23881             ISIG(NCHN,1)=I
23882             ISIG(NCHN,2)=-I
23883             ISIG(NCHN,3)=1
23884             SIGH(NCHN)=FACGH
23885   400     CONTINUE
23886  
23887         ELSEIF(ISUB.EQ.112) THEN
23888 C...f + g -> f + h0 (q + g -> q + h0 only)
23889           IF(MSTP(38).NE.0) THEN
23890 C...Simple case: only do gg <-> h exactly.
23891           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23892           FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP(13)/SQRT(SQM4))*
23893      &    (SH**2+UH**2)/(-TH*SQM4)
23894 C...Propagators: as simulated in PYOFSH and as desired
23895           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23896           GMMHC=SQRT(SQM4)*WDTP(0)
23897           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23898      &    ((SQM4-SQMH)**2+GMMHC**2)
23899           FACQH=FACQH*HBW4C/HBW4
23900           ELSE
23901 C...Messy case: do full loop integrals
23902           A5TSUR=0D0
23903           A5TSUI=0D0
23904           DO 410 I=1,2*MSTP(1)
23905             SQMQ=PMAS(I,1)**2
23906             EPST=4D0*SQMQ/TH
23907             EPSH=4D0*SQMQ/SQMH
23908             CALL PYWAUX(1,EPST,W1TR,W1TI)
23909             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23910             CALL PYWAUX(2,EPST,W2TR,W2TI)
23911             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23912             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
23913      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
23914             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
23915      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
23916   410     CONTINUE
23917           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
23918      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
23919           FACQH=FACQH*WIDS(25,2)
23920           ENDIF
23921           DO 430 I=MMINA,MMAXA
23922             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
23923             DO 420 ISDE=1,2
23924               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
23925               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
23926               NCHN=NCHN+1
23927               ISIG(NCHN,ISDE)=I
23928               ISIG(NCHN,3-ISDE)=21
23929               ISIG(NCHN,3)=1
23930               SIGH(NCHN)=FACQH
23931   420       CONTINUE
23932   430     CONTINUE
23933  
23934         ELSEIF(ISUB.EQ.113) THEN
23935 C...g + g -> g + h0
23936           IF(MSTP(38).NE.0) THEN
23937 C...Simple case: only do gg <-> h exactly.
23938           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
23939           FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP(13)/SQRT(SQM4))*
23940      &    (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
23941 C...Propagators: as simulated in PYOFSH and as desired
23942           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
23943           GMMHC=SQRT(SQM4)*WDTP(0)
23944           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
23945      &    ((SQM4-SQMH)**2+GMMHC**2)
23946           FACGH=FACGH*HBW4C/HBW4
23947           ELSE
23948 C...Messy case: do full loop integrals
23949           A2STUR=0D0
23950           A2STUI=0D0
23951           A2USTR=0D0
23952           A2USTI=0D0
23953           A2TUSR=0D0
23954           A2TUSI=0D0
23955           A4STUR=0D0
23956           A4STUI=0D0
23957           DO 440 I=1,2*MSTP(1)
23958             SQMQ=PMAS(I,1)**2
23959             EPSS=4D0*SQMQ/SH
23960             EPST=4D0*SQMQ/TH
23961             EPSU=4D0*SQMQ/UH
23962             EPSH=4D0*SQMQ/SQMH
23963             IF(EPSH.LT.1D-6) GOTO 440
23964             CALL PYWAUX(1,EPSS,W1SR,W1SI)
23965             CALL PYWAUX(1,EPST,W1TR,W1TI)
23966             CALL PYWAUX(1,EPSU,W1UR,W1UI)
23967             CALL PYWAUX(1,EPSH,W1HR,W1HI)
23968             CALL PYWAUX(2,EPSS,W2SR,W2SI)
23969             CALL PYWAUX(2,EPST,W2TR,W2TI)
23970             CALL PYWAUX(2,EPSU,W2UR,W2UI)
23971             CALL PYWAUX(2,EPSH,W2HR,W2HI)
23972             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
23973             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
23974             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
23975             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
23976             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
23977             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
23978             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
23979             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
23980             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
23981             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
23982             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
23983             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
23984             W3STUR=YHSTUR-Y3STUR-Y3UTSR
23985             W3STUI=YHSTUI-Y3STUI-Y3UTSI
23986             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
23987             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
23988             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
23989             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
23990             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
23991             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
23992             W3USTR=YHUSTR-Y3USTR-Y3TSUR
23993             W3USTI=YHUSTI-Y3USTI-Y3TSUI
23994             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
23995             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
23996             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
23997      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
23998      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
23999      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
24000      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
24001             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
24002      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
24003      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
24004      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
24005      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
24006             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
24007      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
24008      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
24009      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
24010      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
24011             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
24012      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
24013      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
24014      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
24015      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
24016             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
24017      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
24018      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
24019      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
24020      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
24021             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
24022      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
24023      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
24024      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
24025      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
24026             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
24027      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
24028      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
24029      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
24030      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
24031             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
24032      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
24033      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
24034      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
24035      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
24036             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
24037      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
24038      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
24039      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
24040      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
24041             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
24042      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
24043      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
24044      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
24045      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
24046             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
24047      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
24048      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
24049      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
24050      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
24051             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
24052      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
24053      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
24054      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
24055      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
24056             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24057      &      (W2SR-W2HR+W3STUR))
24058             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
24059             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24060      &      (W2TR-W2HR+W3TUSR))
24061             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
24062             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
24063      &      (W2UR-W2HR+W3USTR))
24064             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
24065             A2STUR=A2STUR+B2STUR+B2SUTR
24066             A2STUI=A2STUI+B2STUI+B2SUTI
24067             A2USTR=A2USTR+B2USTR+B2UTSR
24068             A2USTI=A2USTI+B2USTI+B2UTSI
24069             A2TUSR=A2TUSR+B2TUSR+B2TSUR
24070             A2TUSI=A2TUSI+B2TUSI+B2TSUI
24071             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
24072             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
24073   440     CONTINUE
24074           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
24075      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
24076      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
24077           FACGH=FACGH*WIDS(25,2)
24078           ENDIF
24079           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
24080           NCHN=NCHN+1
24081           ISIG(NCHN,1)=21
24082           ISIG(NCHN,2)=21
24083           ISIG(NCHN,3)=1
24084           SIGH(NCHN)=FACGH
24085   450     CONTINUE
24086         ENDIF
24087  
24088       ELSEIF(ISUB.LE.170) THEN
24089         IF(ISUB.EQ.121) THEN
24090 C...g + g -> Q + Qbar + h0
24091           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
24092           IA=KFPR(ISUBSV,2)
24093           PMF=PYMRUN(IA,SH)
24094           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
24095      &    (0.5D0*PMF/PMAS(24,1))**2
24096           WID2=1D0
24097           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
24098           FACQQH=FACQQH*WID2
24099           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24100             IKFI=1
24101             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
24102             IF(IA.GT.10) IKFI=3
24103             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
24104             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
24105               FACQQH=FACQQH/(1D0+RMSS(41))**2
24106               IF(IHIGG.NE.3) THEN
24107                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24108      &          PARU(151+10*IHIGG))**2
24109               ENDIF
24110             ENDIF
24111           ENDIF
24112           CALL PYQQBH(WTQQBH)
24113           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24114           HS=SHR*WDTP(0)
24115           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24116           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24117           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24118      &    FACBW=0D0
24119           NCHN=NCHN+1
24120           ISIG(NCHN,1)=21
24121           ISIG(NCHN,2)=21
24122           ISIG(NCHN,3)=1
24123           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
24124   460     CONTINUE
24125  
24126         ELSEIF(ISUB.EQ.122) THEN
24127 C...q + qbar -> Q + Qbar + h0
24128           IA=KFPR(ISUBSV,2)
24129           PMF=PYMRUN(IA,SH)
24130           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
24131      &    (0.5D0*PMF/PMAS(24,1))**2
24132           WID2=1D0
24133           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
24134           FACQQH=FACQQH*WID2
24135           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24136             IKFI=1
24137             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
24138             IF(IA.GT.10) IKFI=3
24139             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
24140             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
24141               FACQQH=FACQQH/(1D0+RMSS(41))**2
24142               IF(IHIGG.NE.3) THEN
24143                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24144      &          PARU(151+10*IHIGG))**2
24145               ENDIF
24146             ENDIF
24147           ENDIF
24148           CALL PYQQBH(WTQQBH)
24149           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24150           HS=SHR*WDTP(0)
24151           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24152           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24153           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24154      &    FACBW=0D0
24155           DO 470 I=MMINA,MMAXA
24156             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
24157      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
24158             NCHN=NCHN+1
24159             ISIG(NCHN,1)=I
24160             ISIG(NCHN,2)=-I
24161             ISIG(NCHN,3)=1
24162             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
24163   470     CONTINUE
24164  
24165         ELSEIF(ISUB.EQ.123) THEN
24166 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
24167 C...inner process)
24168           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
24169           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
24170      &    PARU(154+10*IHIGG)**2
24171           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
24172      &    (VINT(216)-VINT(209)**2))**2
24173           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
24174           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
24175           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24176           HS=SHR*WDTP(0)
24177           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24178           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24179           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24180      &    FACBW=0D0
24181           DO 490 I=MMIN1,MMAX1
24182             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
24183             IA=IABS(I)
24184             DO 480 J=MMIN2,MMAX2
24185               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
24186               JA=IABS(J)
24187               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
24188               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
24189               VI=AI-4D0*EI*XWV
24190               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
24191               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
24192               VJ=AJ-4D0*EJ*XWV
24193               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
24194               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
24195               NCHN=NCHN+1
24196               ISIG(NCHN,1)=I
24197               ISIG(NCHN,2)=J
24198               ISIG(NCHN,3)=1
24199               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
24200   480       CONTINUE
24201   490     CONTINUE
24202  
24203         ELSEIF(ISUB.EQ.124) THEN
24204 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
24205 C...inner process)
24206           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
24207           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
24208      &    PARU(155+10*IHIGG)**2
24209           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
24210      &    (VINT(216)-VINT(209)**2))**2
24211           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
24212           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
24213           HS=SHR*WDTP(0)
24214           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
24215           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
24216           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
24217      &    FACBW=0D0
24218           DO 510 I=MMIN1,MMAX1
24219             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
24220             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
24221             DO 500 J=MMIN2,MMAX2
24222               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
24223               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
24224               IF(EI*EJ.GT.0D0) GOTO 500
24225               FACLR=VINT(180+I)*VINT(180+J)
24226               NCHN=NCHN+1
24227               ISIG(NCHN,1)=I
24228               ISIG(NCHN,2)=J
24229               ISIG(NCHN,3)=1
24230               SIGH(NCHN)=FACLR*FACWW*FACBW
24231   500       CONTINUE
24232   510     CONTINUE
24233  
24234         ELSEIF(ISUB.EQ.143) THEN
24235 C...f + fbar' -> H+/-
24236           SQMHC=PMAS(37,1)**2
24237           CALL PYWIDT(37,SH,WDTP,WDTE)
24238           HS=SHR*WDTP(0)
24239           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
24240           HP=AEM/(8D0*XW)*SH/SQMW*SH
24241           DO 530 I=MMIN1,MMAX1
24242             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
24243             IA=IABS(I)
24244             IM=(MOD(IA,10)+1)/2
24245             DO 520 J=MMIN2,MMAX2
24246               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
24247               JA=IABS(J)
24248               JM=(MOD(JA,10)+1)/2
24249               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
24250               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
24251      &        GOTO 520
24252               IF(MOD(IA,2).EQ.0) THEN
24253                 IU=IA
24254                 IL=JA
24255               ELSE
24256                 IU=JA
24257                 IL=IA
24258               ENDIF
24259               RML=PYMRUN(IL,SH)**2/SH
24260               RMU=PYMRUN(IU,SH)**2/SH
24261               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
24262               IF(IA.LE.10) HI=HI*FACA/3D0
24263               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
24264               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
24265               NCHN=NCHN+1
24266               ISIG(NCHN,1)=I
24267               ISIG(NCHN,2)=J
24268               ISIG(NCHN,3)=1
24269               SIGH(NCHN)=HI*FACBW*HF
24270   520       CONTINUE
24271   530     CONTINUE
24272  
24273         ELSEIF(ISUB.EQ.161) THEN
24274 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
24275 C...(choice of only b and t to avoid kinematics problems)
24276           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
24277 C...H propagator: as simulated in PYOFSH and as desired
24278           SQMHC=PMAS(37,1)**2
24279           GMMHC=PMAS(37,1)*PMAS(37,2)
24280           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
24281           CALL PYWIDT(37,SQM4,WDTP,WDTE)
24282           GMMHCC=SQRT(SQM4)*WDTP(0)
24283           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
24284           FHCQ=FHCQ*HBW4C/HBW4
24285           DO 550 I=MMINA,MMAXA
24286             IA=IABS(I)
24287             IF(IA.NE.5) GOTO 550
24288             SQML=PYMRUN(IA,SH)**2
24289             IUA=IA+MOD(IA,2)
24290             SQMQ=PYMRUN(IUA,SH)**2
24291             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
24292      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH+
24293      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
24294      &      (SQMHC-SQMQ-SH)/SH)
24295             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
24296             DO 540 ISDE=1,2
24297               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
24298               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,1).EQ.0) GOTO 540
24299               NCHN=NCHN+1
24300               ISIG(NCHN,ISDE)=I
24301               ISIG(NCHN,3-ISDE)=21
24302               ISIG(NCHN,3)=1
24303               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
24304   540       CONTINUE
24305   550     CONTINUE
24306         ENDIF
24307       ENDIF
24308  
24309       RETURN
24310       END
24311  
24312 C*********************************************************************
24313  
24314 C...PYSGSU
24315 C...Subprocess cross sections for SUSY processes,
24316 C...including Higgs pair production.
24317 C...Auxiliary to PYSIGH.
24318  
24319       SUBROUTINE PYSGSU(NCHN,SIGS)
24320  
24321 C...Double precision and integer declarations
24322       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24323       IMPLICIT INTEGER(I-N)
24324       INTEGER PYK,PYCHGE,PYCOMP
24325 C...Parameter statement to help give large particle numbers.
24326       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
24327      &KEXCIT=4000000,KDIMEN=5000000)
24328 C...Commonblocks
24329       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24330       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
24331       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24332       COMMON/PYINT1/MINT(400),VINT(400)
24333       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
24334       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
24335       COMMON/PYINT4/MWID(500),WIDS(500,5)
24336       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
24337       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
24338      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
24339       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
24340      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
24341      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
24342      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
24343       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
24344      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
24345 C...Local arrays and complex variables
24346       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
24347       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
24348       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
24349       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
24350  
24351 CMRENNA++
24352 C...Z and W width, combinations of weak mixing angle
24353       ZWID=PMAS(23,2)
24354       WWID=PMAS(24,2)
24355       TANW=SQRT(XW/XW1)
24356       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
24357  
24358 C...Convert almost equivalent SUSY processes into each other
24359 C...Extract differences in flavours and couplings
24360  
24361 C...Sleptons and sneutrinos
24362       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
24363         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24364         ISUB=201
24365         ILR=0
24366       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
24367         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24368         ISUB=201
24369         ILR=1
24370       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
24371         KFID=MOD(KFPR(ISUB,1),KSUSY1)
24372         ISUB=203
24373       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
24374         IF(ISUB.EQ.210) THEN
24375           RKF=2.0D0
24376         ELSEIF(ISUB.EQ.211) THEN
24377           RKF=SFMIX(15,1)**2
24378         ELSEIF(ISUB.EQ.212) THEN
24379           RKF=SFMIX(15,2)**2
24380         ENDIF
24381           ISUB=210
24382       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
24383         IF(ISUB.EQ.213) THEN
24384           KFID=MOD(KFPR(ISUB,1),KSUSY1)
24385           RKF=2.0D0
24386         ELSEIF(ISUB.EQ.214) THEN
24387           KFID=16
24388           RKF=1.0D0
24389         ENDIF
24390         ISUB=213
24391  
24392 C...Neutralinos
24393       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
24394         IF(ISUB.EQ.216) THEN
24395           IZID1=1
24396           IZID2=1
24397         ELSEIF(ISUB.EQ.217) THEN
24398           IZID1=2
24399           IZID2=2
24400         ELSEIF(ISUB.EQ.218) THEN
24401           IZID1=3
24402           IZID2=3
24403         ELSEIF(ISUB.EQ.219) THEN
24404           IZID1=4
24405           IZID2=4
24406         ELSEIF(ISUB.EQ.220) THEN
24407           IZID1=1
24408           IZID2=2
24409         ELSEIF(ISUB.EQ.221) THEN
24410           IZID1=1
24411           IZID2=3
24412         ELSEIF(ISUB.EQ.222) THEN
24413           IZID1=1
24414           IZID2=4
24415         ELSEIF(ISUB.EQ.223) THEN
24416           IZID1=2
24417           IZID2=3
24418         ELSEIF(ISUB.EQ.224) THEN
24419           IZID1=2
24420           IZID2=4
24421         ELSEIF(ISUB.EQ.225) THEN
24422           IZID1=3
24423           IZID2=4
24424         ENDIF
24425         ISUB=216
24426  
24427 C...Charginos
24428       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
24429         IF(ISUB.EQ.226) THEN
24430           IZID1=1
24431           IZID2=1
24432         ELSEIF(ISUB.EQ.227) THEN
24433           IZID1=2
24434           IZID2=2
24435         ELSEIF(ISUB.EQ.228) THEN
24436           IZID1=1
24437           IZID2=2
24438         ENDIF
24439         ISUB=226
24440  
24441 C...Neutralino + chargino
24442       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
24443         IF(ISUB.EQ.229) THEN
24444           IZID1=1
24445           IZID2=1
24446         ELSEIF(ISUB.EQ.230) THEN
24447           IZID1=1
24448           IZID2=2
24449         ELSEIF(ISUB.EQ.231) THEN
24450           IZID1=1
24451           IZID2=3
24452         ELSEIF(ISUB.EQ.232) THEN
24453           IZID1=1
24454           IZID2=4
24455         ELSEIF(ISUB.EQ.233) THEN
24456           IZID1=2
24457           IZID2=1
24458         ELSEIF(ISUB.EQ.234) THEN
24459           IZID1=2
24460           IZID2=2
24461         ELSEIF(ISUB.EQ.235) THEN
24462           IZID1=2
24463           IZID2=3
24464         ELSEIF(ISUB.EQ.236) THEN
24465           IZID1=2
24466           IZID2=4
24467         ENDIF
24468         ISUB=229
24469  
24470 C...Gluino + neutralino
24471       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
24472         IF(ISUB.EQ.237) THEN
24473           IZID=1
24474         ELSEIF(ISUB.EQ.238) THEN
24475           IZID=2
24476         ELSEIF(ISUB.EQ.239) THEN
24477           IZID=3
24478         ELSEIF(ISUB.EQ.240) THEN
24479           IZID=4
24480         ENDIF
24481         ISUB=237
24482  
24483 C...Gluino + chargino
24484       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
24485         IF(ISUB.EQ.241) THEN
24486           IZID=1
24487         ELSEIF(ISUB.EQ.242) THEN
24488           IZID=2
24489         ENDIF
24490         ISUB=241
24491  
24492 C...Squark + neutralino
24493       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
24494         ILR=0
24495         IF(MOD(ISUB,2).NE.0) ILR=1
24496         IF(ISUB.LE.247) THEN
24497           IZID=1
24498         ELSEIF(ISUB.LE.249) THEN
24499           IZID=2
24500         ELSEIF(ISUB.LE.251) THEN
24501           IZID=3
24502         ELSEIF(ISUB.LE.253) THEN
24503           IZID=4
24504         ENDIF
24505         ISUB=246
24506         RKF=5D0
24507  
24508 C...Squark + chargino
24509       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
24510         IF(ISUB.LE.255) THEN
24511           IZID=1
24512         ELSEIF(ISUB.LE.257) THEN
24513           IZID=2
24514         ENDIF
24515         IF(MOD(ISUB,2).EQ.0) THEN
24516           ILR=0
24517         ELSE
24518           ILR=1
24519         ENDIF
24520         ISUB=254
24521         RKF=5D0
24522  
24523 C...Squark + gluino
24524       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
24525         ISUB=258
24526         RKF=4D0
24527  
24528 C...Stops
24529       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
24530         ILR=0
24531         IF(ISUB.EQ.262) ILR=1
24532         ISUB=261
24533       ELSEIF(ISUB.EQ.265) THEN
24534         ISUB=264
24535  
24536 C...Squarks
24537       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
24538         ILR=0
24539         IF(ISUB.LE.273) THEN
24540           IF(ISUB.EQ.273) ILR=1
24541           ISUB=271
24542           RKF=16D0
24543         ELSEIF(ISUB.LE.276) THEN
24544           IF(ISUB.EQ.276) ILR=1
24545           ISUB=274
24546           RKF=16D0
24547         ELSEIF(ISUB.LE.278) THEN
24548           IF(ISUB.EQ.278) ILR=1
24549           ISUB=277
24550           RKF=4D0
24551         ELSE
24552           IF(ISUB.EQ.280) ILR=1
24553           ISUB=279
24554           RKF=4D0
24555         ENDIF
24556 C...Sbottoms
24557       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
24558         ILR=0
24559         IF(ISUB.LE.283) THEN
24560           IF(ISUB.EQ.283) ILR=1
24561           ISUB=271
24562           RKF=4D0
24563         ELSEIF(ISUB.LE.286) THEN
24564           IF(ISUB.EQ.286) ILR=1
24565           ISUB=274
24566           RKF=4D0
24567         ELSEIF(ISUB.LE.288) THEN
24568           IF(ISUB.EQ.288) ILR=1
24569           ISUB=277
24570           RKF=1D0
24571         ELSEIF(ISUB.LE.290) THEN
24572           IF(ISUB.EQ.290) ILR=1
24573           ISUB=279
24574           RKF=1D0
24575         ELSEIF(ISUB.LE.293) THEN
24576           IF(ISUB.EQ.293) ILR=1
24577           ISUB=271
24578           RKF=1D0
24579         ELSEIF(ISUB.EQ.296) THEN
24580           ILR=1
24581           ISUB=274
24582           RKF=1D0
24583 C...Squark + gluino
24584         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
24585           ISUB=258
24586           RKF=1D0
24587         ENDIF
24588 C...H+/- + H0
24589       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
24590         IF(ISUB.EQ.297) THEN
24591           RKF=.5D0*PARU(195)**2
24592         ELSEIF(ISUB.EQ.298) THEN
24593           RKF=.5D0*(1D0-PARU(195)**2)
24594         ENDIF
24595         ISUB=210
24596 C...A0 + H0
24597       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
24598         IF(ISUB.EQ.299) THEN
24599           RKF=PARU(186)**2
24600           KFID=25
24601         ELSEIF(ISUB.EQ.300) THEN
24602           RKF=PARU(187)**2
24603           KFID=35
24604         ENDIF
24605         ISUB=213
24606 C...H+ + H-
24607       ELSEIF(ISUB.EQ.301) THEN
24608         KFID=37
24609         RKF=1D0
24610         ISUB=201
24611       ENDIF
24612  
24613 C...Supersymmetric processes - all of type 2 -> 2 :
24614 C...correct final-state Breit-Wigners from fixed to running width.
24615       IF(MSTP(42).GT.0) THEN
24616         DO 100 I=1,2
24617         KFLW=KFPR(ISUBSV,I)
24618         KCW=PYCOMP(KFLW)
24619         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
24620         IF(I.EQ.1) SQMI=SQM3
24621         IF(I.EQ.2) SQMI=SQM4
24622         SQMS=PMAS(KCW,1)**2
24623         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
24624         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
24625         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
24626         GMMI=SQRT(SQMI)*WDTP(0)
24627         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
24628         COMFAC=COMFAC*(HBWI/HBWS)
24629   100   CONTINUE
24630       ENDIF
24631  
24632 C...Differential cross section expressions.
24633  
24634       IF(ISUB.LE.210) THEN
24635         IF(ISUB.EQ.201) THEN
24636 C...f + fbar -> e_L + e_Lbar
24637           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24638           DO 130 I=MMIN1,MMAX1
24639             IA=IABS(I)
24640             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
24641             EI=KCHG(IA,1)/3D0
24642             TT3I=SIGN(1D0,EI+1D-6)/2D0
24643             EJ=-1D0
24644             TT3J=-1D0/2D0
24645             FCOL=1D0
24646 C...Color factor for e+ e-
24647             IF(IA.GE.11) FCOL=3D0
24648             IF(ISUBSV.EQ.301) THEN
24649               A1=1D0
24650               A2=0D0
24651             ELSEIF(ILR.EQ.1) THEN
24652               A1=SFMIX(KFID,3)**2
24653               A2=SFMIX(KFID,4)**2
24654             ELSEIF(ILR.EQ.0) THEN
24655               A1=SFMIX(KFID,1)**2
24656               A2=SFMIX(KFID,2)**2
24657             ENDIF
24658             XLQ=(TT3J-EJ*XW)*A1
24659             XRQ=(-EJ*XW)*A2
24660             XLF=(TT3I-EI*XW)
24661             XRF=(-EI*XW)
24662             TAA=(EI*EJ)**2*(POLL+POLR)
24663             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
24664             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
24665             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
24666             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
24667             TNN=0.0D0
24668             TAN=0.0D0
24669             TZN=0.0D0
24670             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
24671               FAC2=SQRT(2D0)
24672               TNN1=0D0
24673               TNN2=0D0
24674               TNN3=0D0
24675               DO 120 II=1,4
24676                 DK=1D0/(TH-SMZ(II)**2)
24677                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
24678      &          ZMIX(II,1))
24679                 FREK=FAC2*TANW*EI*ZMIX(II,1)
24680                 TNN1=TNN1+FLEK**2*DK
24681                 TNN2=TNN2+FREK**2*DK
24682                 DO 110 JJ=1,4
24683                   DL=1D0/(TH-SMZ(JJ)**2)
24684                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
24685      &            ZMIX(JJ,1))
24686                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
24687                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
24688   110           CONTINUE
24689   120         CONTINUE
24690               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
24691      &        A2**2*TNN2**2*POLR)
24692               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
24693      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
24694               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
24695      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
24696               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
24697      &        (1D0-SQMZ/SH)/SH
24698               TZN=TZN/XW**2/XW1
24699               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
24700      &        A2*TNN2*POLR)/XW
24701             ENDIF
24702             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
24703             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
24704             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
24705             NCHN=NCHN+1
24706             ISIG(NCHN,1)=I
24707             ISIG(NCHN,2)=-I
24708             ISIG(NCHN,3)=1
24709             SIGH(NCHN)=FACQQ1+FACQQ2
24710   130     CONTINUE
24711  
24712         ELSEIF(ISUB.EQ.203) THEN
24713 C...f + fbar -> e_L + e_Rbar
24714           DO 160 I=MMIN1,MMAX1
24715             IA=IABS(I)
24716             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
24717             EI=KCHG(IABS(I),1)/3D0
24718             TT3I=SIGN(1D0,EI)/2D0
24719             EJ=-1
24720             TT3J=-1D0/2D0
24721             FCOL=1D0
24722 C...Color factor for e+ e-
24723             IF(IA.GE.11) FCOL=3D0
24724             A1=SFMIX(KFID,1)**2
24725             A2=SFMIX(KFID,2)**2
24726             XLQ=(TT3J-EJ*XW)
24727             XRQ=(-EJ*XW)
24728             XLF=(TT3I-EI*XW)
24729             XRF=(-EI*XW)
24730             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
24731      &      /XW**2/XW1**2*A1*A2
24732             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
24733             TNN=0.0D0
24734             TZN=0.0D0
24735             TNNA=0D0
24736             TNNB=0D0
24737             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
24738               FAC2=SQRT(2D0)
24739               TNN1=0D0
24740               TNN2=0D0
24741               TNN3=0D0
24742               DO 150 II=1,4
24743                 DK=1D0/(TH-SMZ(II)**2)
24744                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
24745      &          ZMIX(II,1))
24746                 FREK=FAC2*TANW*EI*ZMIX(II,1)
24747                 TNN1=TNN1+FLEK**2*DK
24748                 TNN2=TNN2+FREK**2*DK
24749                 DO 140 JJ=1,4
24750                   DL=1D0/(TH-SMZ(JJ)**2)
24751                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
24752      &            ZMIX(JJ,1))
24753                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
24754                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
24755   140           CONTINUE
24756   150         CONTINUE
24757               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
24758               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
24759               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
24760               TZN=(UH*TH-SQM3*SQM4)*A1*A2
24761               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
24762               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
24763      &        (1D0-SQMZ/SH)/SH
24764             ENDIF
24765             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
24766             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
24767             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
24768 C%%%%%%%%%%%
24769             NCHN=NCHN+1
24770             ISIG(NCHN,1)=I
24771             ISIG(NCHN,2)=-I
24772             ISIG(NCHN,3)=1
24773             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24774      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
24775             NCHN=NCHN+1
24776             ISIG(NCHN,1)=I
24777             ISIG(NCHN,2)=-I
24778             ISIG(NCHN,3)=2
24779             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
24780      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24781   160     CONTINUE
24782  
24783         ELSEIF(ISUB.EQ.210) THEN
24784 C...q + qbar' -> W*- > ~l_L + ~nu_L
24785           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
24786           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
24787           DO 180 I=MMIN1,MMAX1
24788             IA=IABS(I)
24789             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
24790             DO 170 J=MMIN2,MMAX2
24791               JA=IABS(J)
24792               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
24793               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
24794               FCKM=3D0
24795               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
24796               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
24797               KCHW=2
24798               IF(KCHSUM.LT.0) KCHW=3
24799               NCHN=NCHN+1
24800               ISIG(NCHN,1)=I
24801               ISIG(NCHN,2)=J
24802               ISIG(NCHN,3)=1
24803               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
24804                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
24805      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24806               ELSE
24807                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
24808      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
24809               ENDIF
24810               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
24811   170       CONTINUE
24812   180     CONTINUE
24813         ENDIF
24814  
24815       ELSEIF(ISUB.LE.220) THEN
24816         IF(ISUB.EQ.213) THEN
24817 C...f + fbar -> ~nu_L + ~nu_Lbar
24818           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
24819             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24820      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24821           ELSE
24822             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24823           ENDIF
24824           COMFAC=COMFAC*FACR
24825           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
24826           XLL=0.5D0
24827           XLR=0.0D0
24828           DO 190 I=MMIN1,MMAX1
24829             IA=IABS(I)
24830             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
24831             EI=KCHG(IA,1)/3D0
24832             FCOL=1D0
24833 C...Color factor for e+ e-
24834             IF(IA.GE.11) FCOL=3D0
24835             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
24836             XRQ=-EI*XW
24837             TZC=0.0D0
24838             TCC=0.0D0
24839             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
24840               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
24841      &        (TH-SMW(2)**2)
24842               TCC=TZC**2
24843               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
24844             ENDIF
24845             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
24846             FACQQ2=TZC+TCC/4D0
24847             NCHN=NCHN+1
24848             ISIG(NCHN,1)=I
24849             ISIG(NCHN,2)=-I
24850             ISIG(NCHN,3)=1
24851             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
24852      &      *AEM**2*FCOL/3D0/XW**2
24853   190     CONTINUE
24854  
24855         ELSEIF(ISUB.EQ.216) THEN
24856 C...q + qbar -> ~chi0_1 + ~chi0_1
24857           IF(IZID1.EQ.IZID2) THEN
24858             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24859           ELSE
24860             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24861      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24862           ENDIF
24863           FACXX=COMFAC*AEM**2/3D0/XW**2
24864           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
24865           ZM12=SQM3
24866           ZM22=SQM4
24867           WU2 = (UH-ZM12)*(UH-ZM22)
24868           WT2 = (TH-ZM12)*(TH-ZM22)
24869           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
24870           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
24871           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
24872           DO 200 I=1,4
24873             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
24874             IF(IZID2.NE.IZID1) THEN
24875               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
24876             ENDIF
24877   200     CONTINUE
24878           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
24879      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
24880           ORPP=DCONJG(OLPP)
24881           DO 210 I=MMINA,MMAXA
24882             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
24883             EI=KCHG(IABS(I),1)/3D0
24884             T3I=SIGN(1D0,EI+1D-6)/2D0
24885             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
24886             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
24887             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
24888      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
24889             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
24890             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
24891             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
24892      &      /DCMPLX(TH-XML2)
24893             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
24894             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
24895      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
24896             FCOL=1D0
24897             IF(IABS(I).GE.11) FCOL=3D0
24898             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
24899      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
24900      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
24901      &      QRL*DCONJG(QRR)*POLR)*WS2
24902             NCHN=NCHN+1
24903             ISIG(NCHN,1)=I
24904             ISIG(NCHN,2)=-I
24905             ISIG(NCHN,3)=1
24906             SIGH(NCHN)=FACXX*FACGG1*FCOL
24907   210     CONTINUE
24908         ENDIF
24909  
24910       ELSEIF(ISUB.LE.230) THEN
24911         IF(ISUB.EQ.226) THEN
24912 C...f + fbar -> ~chi+_1 + ~chi-_1
24913           FACXX=COMFAC*AEM**2/3D0
24914           ZM12=SQM3
24915           ZM22=SQM4
24916           WU2 = (UH-ZM12)*(UH-ZM22)
24917           WT2 = (TH-ZM12)*(TH-ZM22)
24918           WS2 = SMW(IZID1)*SMW(IZID2)*SH
24919           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
24920           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
24921           DIFF=0D0
24922           IF(IZID1.EQ.IZID2) DIFF=1D0
24923           DO 220 I=1,2
24924             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
24925             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
24926             IF(IZID2.NE.IZID1) THEN
24927               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
24928               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
24929             ENDIF
24930   220     CONTINUE
24931           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
24932      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
24933           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
24934      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
24935           DO 230 I=MMINA,MMAXA
24936             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
24937             EI=KCHG(IABS(I),1)/3D0
24938             T3I=SIGN(1D0,EI+1D-6)/2D0
24939             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
24940             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
24941             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
24942             IF(MOD(I,2).EQ.0) THEN
24943               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
24944               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
24945      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
24946      &        DCMPLX(T3I/XW/(TH-XML2))
24947             ELSE
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-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
24951      &        DCMPLX(T3I/XW/(TH-XML2))
24952             ENDIF
24953             FCOL=1D0
24954             IF(IABS(I).GE.11) FCOL=3D0
24955             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
24956      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
24957      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
24958      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
24959             NCHN=NCHN+1
24960             ISIG(NCHN,1)=I
24961             ISIG(NCHN,2)=-I
24962             ISIG(NCHN,3)=1
24963             IF(IZID1.EQ.IZID2) THEN
24964               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
24965             ELSE
24966               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
24967      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
24968               NCHN=NCHN+1
24969               ISIG(NCHN,1)=I
24970               ISIG(NCHN,2)=-I
24971               ISIG(NCHN,3)=2
24972               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
24973      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
24974             ENDIF
24975   230     CONTINUE
24976  
24977         ELSEIF(ISUB.EQ.229) THEN
24978 C...q + qbar' -> ~chi0_1 + ~chi+-_1
24979           FACXX=COMFAC*AEM**2/6D0/XW**2
24980           ZM12=SQM3
24981           ZM22=SQM4
24982           WU2 = (UH-ZM12)*(UH-ZM22)
24983           WT2 = (TH-ZM12)*(TH-ZM22)
24984           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
24985           RT2I = 1D0/SQRT(2D0)
24986           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
24987      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
24988           DO 240 I=1,2
24989             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
24990             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
24991   240     CONTINUE
24992           DO 250 I=1,4
24993             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
24994   250     CONTINUE
24995           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
24996      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
24997           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
24998      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
24999  
25000           DO 270 I=MMIN1,MMAX1
25001             IA=IABS(I)
25002             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
25003             EI=KCHG(IA,1)/3D0
25004             T3I=SIGN(1D0,EI+1D-6)/2D0
25005             DO 260 J=MMIN2,MMAX2
25006               JA=IABS(J)
25007               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
25008               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
25009               EJ=KCHG(JA,1)/3D0
25010               T3J=SIGN(1D0,EJ+1D-6)/2D0
25011               FCKM=3D0
25012               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
25013               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
25014               KCHW=2
25015               IF(KCHSUM.LT.0) KCHW=3
25016               IF(MOD(IA,2).EQ.0) THEN
25017                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
25018                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
25019                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
25020      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
25021                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
25022      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
25023      &          /DCMPLX(TH-ZMJ2)
25024               ELSE
25025                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
25026                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
25027                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
25028      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
25029                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
25030      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
25031      &          /DCMPLX(TH-ZMI2)
25032               ENDIF
25033               ZINTR=DBLE(QLR*DCONJG(QLL))
25034               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
25035      &        2D0*ZINTR*WS2)
25036               NCHN=NCHN+1
25037               ISIG(NCHN,1)=I
25038               ISIG(NCHN,2)=J
25039               ISIG(NCHN,3)=1
25040               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25041      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
25042   260       CONTINUE
25043   270     CONTINUE
25044         ENDIF
25045  
25046       ELSEIF(ISUB.LE.240) THEN
25047         IF(ISUB.EQ.237) THEN
25048 C...q + qbar -> gluino + ~chi0_1
25049           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25050      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25051           FAC0=COMFAC*AS*AEM*4D0/9D0/XW
25052           GM2=SQM3
25053           ZM2=SQM4
25054           DO 280 I=MMINA,MMAXA
25055             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 280
25056             EI=KCHG(IABS(I),1)/3D0
25057             IA=IABS(I)
25058             XLQC = -TANW*EI*ZMIX(IZID,1)
25059             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
25060      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
25061             XLQ2=XLQC**2
25062             XRQ2=XRQC**2
25063             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
25064             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
25065             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
25066             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
25067             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
25068             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
25069             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
25070             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
25071             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
25072             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
25073             NCHN=NCHN+1
25074             ISIG(NCHN,1)=I
25075             ISIG(NCHN,2)=-I
25076             ISIG(NCHN,3)=1
25077             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
25078   280     CONTINUE
25079         ENDIF
25080  
25081       ELSEIF(ISUB.LE.250) THEN
25082         IF(ISUB.EQ.241) THEN
25083 C...q + qbar' -> ~chi+-_1 + gluino
25084           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
25085           GM2=SQM3
25086           ZM2=SQM4
25087           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
25088           FAC0=UMIX(IZID,1)**2
25089           FAC1=VMIX(IZID,1)**2
25090           DO 300 I=MMIN1,MMAX1
25091             IA=IABS(I)
25092             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
25093             DO 290 J=MMIN2,MMAX2
25094               JA=IABS(J)
25095               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
25096               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
25097               FCKM=1D0
25098               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
25099               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
25100               KCHW=2
25101               IF(KCHSUM.LT.0) KCHW=3
25102               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
25103               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
25104               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
25105               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
25106               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
25107               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
25108               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
25109               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
25110               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
25111               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
25112      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
25113               NCHN=NCHN+1
25114               ISIG(NCHN,1)=I
25115               ISIG(NCHN,2)=J
25116               ISIG(NCHN,3)=1
25117               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
25118      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25119      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
25120   290       CONTINUE
25121   300     CONTINUE
25122  
25123         ELSEIF(ISUB.EQ.243) THEN
25124 C...q + qbar -> gluino + gluino
25125           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25126           XMT=SQM3-TH
25127           XMU=SQM3-UH
25128           DO 310 I=MMINA,MMAXA
25129             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
25130      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
25131             NCHN=NCHN+1
25132             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
25133             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
25134             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
25135      &      2D0*SQM3*SH)/SH2 +4D0/9D0*(XMT**2/XST**2+
25136      &      XMU**2/XSU**2) - (XMT**2+SH*SQM3)/SH/XST +
25137      &      SQM3*SH/XST/XSU/9D0- (XMU**2+SH*SQM3)/SH/XSU )
25138             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
25139             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
25140             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
25141      &      2D0*SQM3*SH)/SH2 +4D0/9D0*(XMT**2/XST**2+
25142      &      XMU**2/XSU**2) - (XMT**2+SH*SQM3)/SH/XST +
25143      &      SQM3*SH/XST/XSU/9D0- (XMU**2+SH*SQM3)/SH/XSU )
25144             ISIG(NCHN,1)=I
25145             ISIG(NCHN,2)=-I
25146             ISIG(NCHN,3)=1
25147 C...1/2 for identical particles
25148             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
25149   310     CONTINUE
25150  
25151         ELSEIF(ISUB.EQ.244) THEN
25152 C...g + g -> gluino + gluino
25153           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25154           XMT=SQM3-TH
25155           XMU=SQM3-UH
25156           FACQQ1=COMFAC*AS**2*9D0/4D0*(
25157      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
25158      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
25159           FACQQ2=COMFAC*AS**2*9D0/4D0*(
25160      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
25161      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
25162           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
25163      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
25164           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
25165           NCHN=NCHN+1
25166           ISIG(NCHN,1)=21
25167           ISIG(NCHN,2)=21
25168           ISIG(NCHN,3)=1
25169           SIGH(NCHN)=FACQQ1/2D0
25170           NCHN=NCHN+1
25171           ISIG(NCHN,1)=21
25172           ISIG(NCHN,2)=21
25173           ISIG(NCHN,3)=2
25174           SIGH(NCHN)=FACQQ2/2D0
25175           NCHN=NCHN+1
25176           ISIG(NCHN,1)=21
25177           ISIG(NCHN,2)=21
25178           ISIG(NCHN,3)=3
25179           SIGH(NCHN)=FACQQ3/2D0
25180   320     CONTINUE
25181  
25182         ELSEIF(ISUB.EQ.246) THEN
25183 C...g + q_j -> ~chi0_1 + ~q_j
25184           FAC0=COMFAC*AS*AEM/6D0/XW
25185           ZM2=SQM4
25186           QM2=SQM3
25187           FACZQ0=FAC0*( (ZM2-TH)/SH +
25188      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
25189      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
25190           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25191           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
25192             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
25193             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
25194             EI=KCHG(IABS(I),1)/3D0
25195             IA=IABS(I)
25196             XRQZ = -TANW*EI*ZMIX(IZID,1)
25197             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
25198      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
25199             IF(ILR.EQ.0) THEN
25200               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
25201             ELSE
25202               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
25203             ENDIF
25204             FACZQ=FACZQ0*BS
25205             KCHQ=2
25206             IF(I.LT.0) KCHQ=3
25207             DO 330 ISDE=1,2
25208               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
25209               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
25210               NCHN=NCHN+1
25211               ISIG(NCHN,ISDE)=I
25212               ISIG(NCHN,3-ISDE)=21
25213               ISIG(NCHN,3)=1
25214               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25215      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25216   330       CONTINUE
25217   340     CONTINUE
25218         ENDIF
25219  
25220       ELSEIF(ISUB.LE.260) THEN
25221         IF(ISUB.EQ.254) THEN
25222 C...g + q_j -> ~chi1_1 + ~q_i
25223           FAC0=COMFAC*AS*AEM/12D0/XW
25224           ZM2=SQM4
25225           QM2=SQM3
25226           AU=UMIX(IZID,1)**2
25227           AD=VMIX(IZID,1)**2
25228           FACZQ0=FAC0*( (ZM2-TH)/SH +
25229      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
25230      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
25231           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
25232           IF(MOD(KFNSQ1,2).EQ.0) THEN
25233             KFNSQ=KFNSQ1-1
25234             KCHW=2
25235           ELSE
25236             KFNSQ=KFNSQ1+1
25237             KCHW=3
25238           ENDIF
25239           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
25240             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
25241             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
25242             IA=IABS(I)
25243             IF(MOD(IA,2).EQ.0) THEN
25244               FACZQ=FACZQ0*AU
25245             ELSE
25246               FACZQ=FACZQ0*AD
25247             ENDIF
25248             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
25249             KCHQ=2
25250             IF(I.LT.0) KCHQ=3
25251             KCHWQ=KCHW
25252             IF(I.LT.0) KCHWQ=5-KCHW
25253             DO 350 ISDE=1,2
25254               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
25255               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
25256               NCHN=NCHN+1
25257               ISIG(NCHN,ISDE)=I
25258               ISIG(NCHN,3-ISDE)=21
25259               ISIG(NCHN,3)=1
25260               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25261      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
25262   350       CONTINUE
25263   360     CONTINUE
25264  
25265         ELSEIF(ISUB.EQ.258) THEN
25266 C...g + q_j -> gluino + ~q_i
25267           XG2=SQM4
25268           XQ2=SQM3
25269           XMT=XG2-TH
25270           XMU=XG2-UH
25271           XST=XQ2-TH
25272           XSU=XQ2-UH
25273           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
25274      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
25275      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
25276      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
25277           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
25278      &    (SH*(UH+XG2)
25279      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
25280      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
25281      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
25282           FACQG1=COMFAC*AS**2*FACQG1/2D0
25283           FACQG2=COMFAC*AS**2*FACQG2/2D0
25284           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25285           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
25286             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
25287             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
25288             KCHQ=2
25289             IF(I.LT.0) KCHQ=3
25290             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25291      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25292             DO 370 ISDE=1,2
25293               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
25294               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
25295               NCHN=NCHN+1
25296               ISIG(NCHN,ISDE)=I
25297               ISIG(NCHN,3-ISDE)=21
25298               ISIG(NCHN,3)=1
25299               SIGH(NCHN)=FACQG1*FACSEL
25300               NCHN=NCHN+1
25301               ISIG(NCHN,ISDE)=I
25302               ISIG(NCHN,3-ISDE)=21
25303               ISIG(NCHN,3)=2
25304               SIGH(NCHN)=FACQG2*FACSEL
25305   370       CONTINUE
25306   380     CONTINUE
25307         ENDIF
25308  
25309       ELSEIF(ISUB.LE.270) THEN
25310         IF(ISUB.EQ.261) THEN
25311 C...q_i + q_ibar -> ~t_1 + ~t_1bar
25312           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
25313      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25314           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25315           FAC0=AS**2*4D0/9D0
25316           DO 390 I=MMIN1,MMAX1
25317             IA=IABS(I)
25318             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
25319             IF(IA.GE.11.AND.IA.LE.18) THEN
25320               EI=KCHG(IA,1)/3D0
25321               EJ=KCHG(KFNSQ,1)/3D0
25322               T3I=SIGN(1D0,EI)/2D0
25323               T3J=SIGN(1D0,EJ)/2D0
25324               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
25325               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
25326               XLF=2D0*(T3I-EI*XW)
25327               XRF=2D0*(-EI*XW)
25328               TAA=0.5D0*(EI*EJ)**2
25329               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
25330               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25331               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
25332               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
25333               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
25334             ENDIF
25335             NCHN=NCHN+1
25336             ISIG(NCHN,1)=I
25337             ISIG(NCHN,2)=-I
25338             ISIG(NCHN,3)=1
25339             SIGH(NCHN)=FACQQ1*FAC0
25340   390     CONTINUE
25341  
25342         ELSEIF(ISUB.EQ.263) THEN
25343 C...f + fbar -> ~t1 + ~t2bar
25344           DO 400 I=MMIN1,MMAX1
25345             IA=IABS(I)
25346             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
25347             EI=KCHG(IABS(I),1)/3D0
25348             TT3I=SIGN(1D0,EI)/2D0
25349             EJ=2D0/3D0
25350             TT3J=1D0/2D0
25351             FCOL=1D0
25352 C...Color factor for e+ e-
25353             IF(IA.GE.11) FCOL=3D0
25354             XLQ=2D0*(TT3J-EJ*XW)
25355             XRQ=2D0*(-EJ*XW)
25356             XLF=2D0*(TT3I-EI*XW)
25357             XRF=2D0*(-EI*XW)
25358             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
25359             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
25360             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25361 C...Factor of 2 for t1 t2bar + t2 t1bar
25362             FACQQ1=2D0*COMFAC*AEM**2*TZZ*FCOL*4D0
25363             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
25364             NCHN=NCHN+1
25365             ISIG(NCHN,1)=I
25366             ISIG(NCHN,2)=-I
25367             ISIG(NCHN,3)=1
25368             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
25369      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
25370             NCHN=NCHN+1
25371             ISIG(NCHN,1)=I
25372             ISIG(NCHN,2)=-I
25373             ISIG(NCHN,3)=2
25374             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
25375      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
25376   400     CONTINUE
25377  
25378         ELSEIF(ISUB.EQ.264) THEN
25379 C...g + g -> ~t_1 + ~t_1bar
25380           XSU=SQM3-UH
25381           XST=SQM3-TH
25382           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
25383      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25384           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
25385           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
25386           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
25387           NCHN=NCHN+1
25388           ISIG(NCHN,1)=21
25389           ISIG(NCHN,2)=21
25390           ISIG(NCHN,3)=1
25391           SIGH(NCHN)=FACQQ1
25392           NCHN=NCHN+1
25393           ISIG(NCHN,1)=21
25394           ISIG(NCHN,2)=21
25395           ISIG(NCHN,3)=2
25396           SIGH(NCHN)=FACQQ2
25397   410     CONTINUE
25398         ENDIF
25399  
25400       ELSEIF(ISUB.LE.280) THEN
25401         IF(ISUB.EQ.271) THEN
25402 C...q + q' -> ~q + ~q' (~g exchange)
25403           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
25404           XMT=XMG2-TH
25405           XMU=XMG2-UH
25406           XSU1=SQM3-UH
25407           XSU2=SQM4-UH
25408           XST1=SQM3-TH
25409           XST2=SQM4-TH
25410           IF(ILR.EQ.1) THEN
25411             FACQQ1=COMFAC*AS**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
25412             FACQQ2=COMFAC*AS**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
25413             FACQQB=0.0D0
25414           ELSE
25415             FACQQ1=0.5D0*COMFAC*AS**2*4D0/9D0*( SH*XMG2/XMT**2 )
25416             FACQQ2=0.5D0*COMFAC*AS**2*4D0/9D0*( SH*XMG2/XMU**2 )
25417             FACQQB=0.5D0*COMFAC*AS**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
25418      &      XMT/XMU )
25419           ENDIF
25420           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
25421           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
25422           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
25423             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
25424             IA=IABS(I)
25425             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
25426             KCHQ=2
25427             IF(I.LT.0) KCHQ=3
25428             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
25429               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
25430               JA=IABS(J)
25431               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
25432               IF(I*J.LT.0) GOTO 420
25433               NCHN=NCHN+1
25434               ISIG(NCHN,1)=I
25435               ISIG(NCHN,2)=J
25436               ISIG(NCHN,3)=1
25437               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25438      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25439               IF(I.EQ.J) THEN
25440                 IF(ILR.EQ.0) THEN
25441                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
25442      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
25443                 ELSE
25444                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
25445      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25446      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25447                 ENDIF
25448                 NCHN=NCHN+1
25449                 ISIG(NCHN,1)=I
25450                 ISIG(NCHN,2)=J
25451                 ISIG(NCHN,3)=2
25452                 IF(ILR.EQ.0) THEN
25453                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
25454      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
25455                 ELSE
25456                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
25457      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25458      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
25459                 ENDIF
25460               ENDIF
25461   420       CONTINUE
25462   430     CONTINUE
25463  
25464         ELSEIF(ISUB.EQ.274) THEN
25465 C...q + qbar' -> ~q + ~qbar'
25466           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
25467           XMT=XMG2-TH
25468           XMU=XMG2-UH
25469           IF(ILR.EQ.0) THEN
25470 C...Mrenna...Normalization.and.1/XMT
25471             FACQQ1=COMFAC*AS**2*2D0/9D0*(
25472      &      (UH*TH-SQM3*SQM4)/XMT**2 )
25473             FACQQB=COMFAC*AS**2*2D0/9D0*(
25474      &      (UH*TH-SQM3*SQM4)/SH2*(2D0-2D0/3D0*SH/XMT))
25475             FACQQB=FACQQB+FACQQ1
25476           ELSE
25477             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )
25478             FACQQB=FACQQ1
25479           ENDIF
25480           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
25481           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
25482           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
25483             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
25484             IA=IABS(I)
25485             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
25486             KCHQ=2
25487             IF(I.LT.0) KCHQ=3
25488             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
25489               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
25490               JA=IABS(J)
25491               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
25492               IF(I*J.GT.0) GOTO 440
25493               NCHN=NCHN+1
25494               ISIG(NCHN,1)=I
25495               ISIG(NCHN,2)=J
25496               ISIG(NCHN,3)=1
25497               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
25498      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
25499               IF(I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
25500      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25501   440       CONTINUE
25502   450     CONTINUE
25503  
25504         ELSEIF(ISUB.EQ.277) THEN
25505 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
25506 C...if i .eq. j covered in 274
25507           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
25508           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
25509           FAC0=0D0
25510           DO 460 I=MMIN1,MMAX1
25511             IA=IABS(I)
25512             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.
25513      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
25514             IF(IA.EQ.KFNSQ) GOTO 460
25515             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
25516               EI=KCHG(IA,1)/3D0
25517               EJ=KCHG(KFNSQ,1)/3D0
25518               T3J=SIGN(0.5D0,EJ)
25519               T3I=SIGN(1D0,EI)/2D0
25520               IF(ILR.EQ.0) THEN
25521                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
25522                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
25523               ELSE
25524                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
25525                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
25526               ENDIF
25527               XLF=2D0*(T3I-EI*XW)
25528               XRF=2D0*(-EI*XW)
25529               IF(ILR.EQ.0) THEN
25530                 XRQ=0D0
25531               ELSE
25532                 XLQ=0D0
25533               ENDIF
25534               TAA=0.5D0*(EI*EJ)**2
25535               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
25536               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
25537               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
25538               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
25539               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
25540             ELSEIF(IA.LE.6) THEN
25541               FAC0=AS**2*8D0/9D0/2D0
25542             ENDIF
25543             NCHN=NCHN+1
25544             ISIG(NCHN,1)=I
25545             ISIG(NCHN,2)=-I
25546             ISIG(NCHN,3)=1
25547             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25548   460     CONTINUE
25549  
25550         ELSEIF(ISUB.EQ.279) THEN
25551 C...g + g -> ~q_j + ~q_jbar
25552           XSU=SQM3-UH
25553           XST=SQM3-TH
25554 C...5=RKF because ~t ~tbar treated separately
25555           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
25556           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
25557           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
25558           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
25559           NCHN=NCHN+1
25560           ISIG(NCHN,1)=21
25561           ISIG(NCHN,2)=21
25562           ISIG(NCHN,3)=1
25563           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25564           NCHN=NCHN+1
25565           ISIG(NCHN,1)=21
25566           ISIG(NCHN,2)=21
25567           ISIG(NCHN,3)=2
25568           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
25569   470     CONTINUE
25570  
25571         ENDIF
25572       ENDIF
25573 CMRENNA--
25574  
25575       RETURN
25576       END
25577  
25578 C*********************************************************************
25579  
25580 C...PYSGTC
25581 C...Subprocess cross sections for Technicolor processes.
25582 C...Auxiliary to PYSIGH.
25583  
25584       SUBROUTINE PYSGTC(NCHN,SIGS)
25585  
25586 C...Double precision and integer declarations
25587       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
25588       IMPLICIT INTEGER(I-N)
25589       INTEGER PYK,PYCHGE,PYCOMP
25590 C...Parameter statement to help give large particle numbers.
25591       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
25592      &KEXCIT=4000000,KDIMEN=5000000)
25593 C...Commonblocks
25594       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
25595       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
25596       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
25597       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
25598       COMMON/PYINT1/MINT(400),VINT(400)
25599       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
25600       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
25601       COMMON/PYINT4/MWID(500),WIDS(500,5)
25602       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
25603       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
25604      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
25605      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
25606      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
25607       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
25608      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
25609 C...Local arrays and complex variables
25610       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
25611       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
25612       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
25613       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
25614       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
25615       COMPLEX*16 DVVS,DVVT,DVVU
25616       INTEGER INDX(6)
25617  
25618 C...Combinations of weak mixing angle.
25619       TANW=SQRT(XW/XW1)
25620       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
25621  
25622 C...Convert almost equivalent technicolor processes into
25623 C...a few basic processes, and set distinguishing parameters.
25624       IF(ISUB.GE.361.AND.ISUB.LE.379) THEN
25625         SQTV=RTCM(12)**2
25626         SQTA=RTCM(13)**2
25627         SN2W=2D0*SQRT(PARU(102)*(1D0-PARU(102)))
25628         CS2W=1D0-2D0*PARU(102)
25629         TANW=SQRT(PARU(102)/(1D0-PARU(102)))
25630         CT2W=CS2W/SN2W
25631         CSXI=COS(ASIN(RTCM(3)))
25632         CSXIP=COS(ASIN(RTCM(4)))
25633         QUPD=2D0*RTCM(2)-1D0
25634         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
25635 C... rho_tc0 -> W_L W_L
25636         IF(ISUB.EQ.361) THEN
25637            KFA=24
25638            KFB=24
25639            CAB2=RTCM(3)**4
25640 C... rho_tc0 -> W_L pi_tc-
25641         ELSEIF(ISUB.EQ.362) THEN
25642            KFA=24
25643            KFB=KTECHN+211
25644            ISUB=361
25645            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25646 C... pi_tc pi_tc
25647         ELSEIF(ISUB.EQ.363) THEN
25648            KFA=KTECHN+211
25649            KFB=KTECHN+211
25650            ISUB=361
25651            CAB2=(1D0-RTCM(3)**2)**2
25652 C... rho_tc0/omega_tc -> gamma pi_tc
25653         ELSEIF(ISUB.EQ.364) THEN
25654            KFA=22
25655            KFB=KTECHN+111
25656            VOGP=CSXI/RTCM(12)
25657 C..........!!!
25658            VRGP=VOGP*QUPD
25659            AOGP=0D0
25660            ARGP=0D0
25661            VAGP=2D0*QUPD*CSXI
25662            VZGP=QUPD*CSXI*(1D0-4D0*PARU(102))/SN2W
25663 C... gamma pi_tc'
25664         ELSEIF(ISUB.EQ.365) THEN
25665            KFA=22
25666            KFB=KTECHN+221
25667            ISUB=364
25668            VRGP=CSXIP/RTCM(12)
25669 C..........!!!!
25670            VOGP=VRGP*QUPD
25671            AOGP=0D0
25672            ARGP=0D0
25673            VAGP=2D0*Q2UD*CSXIP
25674            VZGP=CSXIP/SN2W*(1D0-4D0*PARU(102)*Q2UD)
25675 C... Z pi_tc
25676         ELSEIF(ISUB.EQ.366) THEN
25677            KFA=23
25678            KFB=KTECHN+111
25679            ISUB=364
25680            VOGP=CSXI*CT2W/RTCM(12)
25681            VRGP=-QUPD*CSXI*TANW/RTCM(12)
25682            AOGP=0D0
25683            ARGP=0D0
25684            VAGP=QUPD*CSXI*(1D0-4D0*PARU(102))/SN2W
25685            VZGP=-QUPD*CSXI*CS2W/(1D0-PARU(102))
25686 C... Z pi_tc'
25687         ELSEIF(ISUB.EQ.367) THEN
25688            KFA=23
25689            KFB=KTECHN+221
25690            ISUB=364
25691            VRGP=CSXIP*CT2W/RTCM(12)
25692            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
25693            AOGP=0D0
25694            ARGP=0D0
25695            VAGP=CSXIP*(1D0-4D0*Q2UD*PARU(102))/SN2W
25696            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*PARU(102)**2)/SN2W**2
25697 C... W_T pi_tc
25698         ELSEIF(ISUB.EQ.368) THEN
25699            KFA=24
25700            KFB=KTECHN+211
25701            ISUB=364
25702            VOGP=CSXI/(2D0*SQRT(PARU(102)))/RTCM(12)
25703            VRGP=0D0
25704            AOGP=0D0
25705 C..........!!!!
25706            ARGP=-CSXI/(2D0*SQRT(PARU(102)))/RTCM(13)
25707            VAGP=QUPD*CSXI/(2D0*SQRT(PARU(102)))
25708            VZGP=-QUPD*CSXI/(2D0*SQRT(1D0-PARU(102)))
25709 C... rho_tc+ -> W_L Z_L
25710         ELSEIF(ISUB.EQ.370) THEN
25711            KFA=24
25712            KFB=23
25713            CAB2=RTCM(3)**4
25714 C... W_L pi_tc0
25715         ELSEIF(ISUB.EQ.371) THEN
25716            KFA=24
25717            KFB=KTECHN+111
25718            ISUB=370
25719            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25720 C... Z_L pi_tc+
25721         ELSEIF(ISUB.EQ.372) THEN
25722            KFA=KTECHN+211
25723            KFB=23
25724            ISUB=370
25725            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
25726 C... pi_tc+ pi_tc0
25727         ELSEIF(ISUB.EQ.373) THEN
25728            KFA=KTECHN+211
25729            KFB=KTECHN+111
25730            ISUB=370
25731            CAB2=(1D0-RTCM(3)**2)**2
25732 C... gamma pi_tc+
25733         ELSEIF(ISUB.EQ.374) THEN
25734            KFA=KTECHN+211
25735            KFB=22
25736            VRGP=QUPD*CSXI
25737            ARGP=0D0
25738            VWGP=QUPD*CSXI/(2D0*SQRT(PARU(102)))
25739 C... Z_T pi_tc+
25740         ELSEIF(ISUB.EQ.375) THEN
25741            KFA=KTECHN+211
25742            KFB=23
25743            ISUB=374
25744            VRGP=-QUPD*CSXI*TANW
25745            ARGP=CSXI/(2D0*SQRT(PARU(102)*(1D0-PARU(102))))
25746            VWGP=-QUPD*CSXI/(2D0*SQRT(1D0-PARU(102)))
25747 C... W_T pi_tc0
25748         ELSEIF(ISUB.EQ.376) THEN
25749            KFA=24
25750            KFB=KTECHN+111
25751            ISUB=374
25752            VRGP=0D0
25753            ARGP=-CSXI/(2D0*SQRT(PARU(102)))
25754            VWGP=0D0
25755 C... W_T pi_tc0'
25756         ELSEIF(ISUB.EQ.377) THEN
25757            KFA=24
25758            KFB=KTECHN+221
25759            ISUB=374
25760            ARGP=0D0
25761            VRGP=CSXIP/(2D0*SQRT(PARU(102)))
25762            VWGP=CSXIP/(2D0*PARU(102))
25763         ENDIF
25764       ENDIF
25765  
25766 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
25767       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
25768         IF(ITCM(5).LE.4) THEN
25769           SQDQQS=1D0/SH2
25770           SQDQQT=1D0/TH2
25771           SQDQQU=1D0/UH2
25772           SQDGGS=SQDQQS
25773           SQDGGT=SQDQQT
25774           SQDGGU=SQDQQU
25775           REDGGS=1D0/SH
25776           REDGGT=1D0/TH
25777           REDGGU=1D0/UH
25778           REDGTU=1D0/UH/TH
25779           REDGSU=1D0/SH/UH
25780           REDGST=1D0/SH/TH
25781           REDQST=1D0/SH/TH
25782           REDQTU=1D0/UH/TH
25783           SQDLGS=0D0
25784           SQDLGT=0D0
25785           SQDQTS=SQDQQS
25786         ELSEIF(ITCM(5).EQ.5) THEN
25787           TANT3=RTCM(21)
25788           IF(ITCM(2).EQ.0) THEN
25789             IMDL=1
25790           ELSE
25791             IMDL=2
25792           ENDIF
25793           ALPRHT=2.91D0*(3D0/ITCM(1))
25794           SIN2T=2D0*TANT3/(TANT3**2+1D0)
25795           SINT3=TANT3/SQRT(TANT3**2+1D0)
25796           XIG=SQRT(PYALPS(SH)/ALPRHT)
25797           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
25798      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
25799           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
25800      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
25801           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
25802      &    SINT3**2)*2D0/SIN2T
25803           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
25804      &    SINT3**2)*2D0/SIN2T
25805  
25806           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
25807           SM1112=X12*RTCM(28)**2*SIN2T
25808           SM1121=-X21*RTCM(28)**2*SIN2T
25809           SM2212=-SM1112
25810           SM2221=-SM1121
25811           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
25812      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
25813  
25814 C.........SH LOOP
25815           ZTC(1,1)=DCMPLX(SH,0D0)
25816           CALL PYWIDT(3100021,SH,WDTP,WDTE)
25817           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
25818           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
25819           CALL PYWIDT(3100113,SH,WDTP,WDTE)
25820           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
25821           CALL PYWIDT(3400113,SH,WDTP,WDTE)
25822           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
25823           CALL PYWIDT(3200113,SH,WDTP,WDTE)
25824           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
25825           CALL PYWIDT(3300113,SH,WDTP,WDTE)
25826           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
25827           ZTC(1,2)=(0D0,0D0)
25828           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
25829           ZTC(1,4)=ZTC(1,3)
25830           ZTC(1,5)=ZTC(1,2)
25831           ZTC(1,6)=ZTC(1,2)
25832           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
25833           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
25834           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
25835           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
25836           ZTC(3,4)=-SM1122
25837           ZTC(3,5)=-SM1112
25838           ZTC(3,6)=-SM1121
25839           ZTC(4,5)=-SM2212
25840           ZTC(4,6)=-SM2221
25841           ZTC(5,6)=-SM1221
25842  
25843           DO 110 I=1,5
25844             DO 100 J=I+1,6
25845                ZTC(J,I)=ZTC(I,J)
25846   100       CONTINUE
25847   110     CONTINUE
25848           CALL PYLDCM(ZTC,6,6,INDX,D)
25849           DO 130 I=1,6
25850             DO 120 J=1,6
25851              YTC(I,J)=(0D0,0D0)
25852               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25853   120       CONTINUE
25854   130     CONTINUE
25855  
25856           DO 140 I=1,6
25857             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25858   140     CONTINUE
25859           DGGS=YTC(1,1)
25860           DVVS=YTC(2,2)
25861           DGVS=YTC(1,2)
25862  
25863           XIG=SQRT(PYALPS(-TH)/ALPRHT)
25864 C.........TH LOOP
25865           ZTC(1,1)=DCMPLX(TH)
25866           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
25867           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
25868           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
25869           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
25870           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
25871           ZTC(1,2)=(0D0,0D0)
25872           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
25873           ZTC(1,4)=ZTC(1,3)
25874           ZTC(1,5)=ZTC(1,2)
25875           ZTC(1,6)=ZTC(1,2)
25876           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
25877           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
25878           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
25879           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
25880           ZTC(3,4)=-SM1122
25881           ZTC(3,5)=-SM1112
25882           ZTC(3,6)=-SM1121
25883           ZTC(4,5)=-SM2212
25884           ZTC(4,6)=-SM2221
25885           ZTC(5,6)=-SM1221
25886           DO 160 I=1,5
25887             DO 150 J=I+1,6
25888                ZTC(J,I)=ZTC(I,J)
25889   150       CONTINUE
25890   160     CONTINUE
25891           CALL PYLDCM(ZTC,6,6,INDX,D)
25892           DO 180 I=1,6
25893             DO 170 J=1,6
25894               YTC(I,J)=(0D0,0D0)
25895               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25896   170       CONTINUE
25897   180     CONTINUE
25898           DO 190 I=1,6
25899             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25900   190     CONTINUE
25901           DGGT=YTC(1,1)
25902           DVVT=YTC(2,2)
25903           DGVT=YTC(1,2)
25904  
25905           XIG=SQRT(PYALPS(-UH)/ALPRHT)
25906 C.........UH LOOP
25907           ZTC(1,1)=DCMPLX(UH,0D0)
25908           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
25909           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
25910           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
25911           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
25912           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
25913           ZTC(1,2)=(0D0,0D0)
25914           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
25915           ZTC(1,4)=ZTC(1,3)
25916           ZTC(1,5)=ZTC(1,2)
25917           ZTC(1,6)=ZTC(1,2)
25918           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
25919           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
25920           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
25921           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
25922           ZTC(3,4)=-SM1122
25923           ZTC(3,5)=-SM1112
25924           ZTC(3,6)=-SM1121
25925           ZTC(4,5)=-SM2212
25926           ZTC(4,6)=-SM2221
25927           ZTC(5,6)=-SM1221
25928           DO 210 I=1,5
25929             DO 200 J=I+1,6
25930                ZTC(J,I)=ZTC(I,J)
25931   200       CONTINUE
25932   210     CONTINUE
25933           CALL PYLDCM(ZTC,6,6,INDX,D)
25934           DO 230 I=1,6
25935             DO 220 J=1,6
25936               YTC(I,J)=(0D0,0D0)
25937               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
25938   220       CONTINUE
25939   230     CONTINUE
25940           DO 240 I=1,6
25941             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
25942   240     CONTINUE
25943           DGGU=YTC(1,1)
25944           DVVU=YTC(2,2)
25945           DGVU=YTC(1,2)
25946  
25947           IF(IMDL.EQ.1) THEN
25948             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
25949             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
25950             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
25951             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
25952             DQGS=DGGS-DGVS*DCMPLX(TANT3)
25953             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25954           ELSE
25955             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
25956             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
25957             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
25958             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
25959             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25960             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
25961           ENDIF
25962  
25963           SQDQTS=ABS(DQTS)**2
25964           SQDQQS=ABS(DQQS)**2
25965           SQDQQT=ABS(DQQT)**2
25966           SQDQQU=ABS(DQQU)**2
25967           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
25968           REDLGS=DBLE(DQGS)
25969           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
25970           REDHGS=DBLE(DTGS)
25971           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
25972  
25973           SQDGGS=ABS(DGGS)**2
25974           SQDGGT=ABS(DGGT)**2
25975           SQDGGU=ABS(DGGU)**2
25976           REDGGS=DBLE(DGGS)
25977           REDGGT=DBLE(DGGT)
25978           REDGGU=DBLE(DGGU)
25979           REDGTU=DBLE(DGGU*DCONJG(DGGT))
25980           REDGSU=DBLE(DGGU*DCONJG(DGGS))
25981           REDGST=DBLE(DGGS*DCONJG(DGGT))
25982           REDQST=DBLE(DQQS*DCONJG(DQQT))
25983           REDQTU=DBLE(DQQT*DCONJG(DQQU))
25984         ENDIF
25985       ENDIF
25986  
25987  
25988 C...Differential cross section expressions.
25989  
25990       IF(ISUB.LE.190) THEN
25991         IF(ISUB.EQ.149) THEN
25992 C...g + g -> eta_tc
25993           KCTC=PYCOMP(KTECHN+331)
25994           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
25995           HS=SHR*WDTP(0)
25996           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
25997           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
25998           HP=SH
25999           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
26000           HI=HP*WDTP(3)
26001           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26002           NCHN=NCHN+1
26003           ISIG(NCHN,1)=21
26004           ISIG(NCHN,2)=21
26005           ISIG(NCHN,3)=1
26006           SIGH(NCHN)=HI*FACBW*HF
26007   250     CONTINUE
26008  
26009         ELSEIF(ISUB.EQ.165) THEN
26010 C...q + qbar -> l+ + l- (including contact term for compositeness)
26011           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26012           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26013           KFF=IABS(KFPR(ISUB,1))
26014           EF=KCHG(KFF,1)/3D0
26015           AF=SIGN(1D0,EF+0.1D0)
26016           VF=AF-4D0*EF*XWV
26017           VALF=VF+AF
26018           VARF=VF-AF
26019           FCOF=1D0
26020           IF(KFF.LE.10) FCOF=3D0
26021           WID2=1D0
26022           IF(KFF.EQ.6) WID2=WIDS(6,1)
26023           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
26024           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
26025           DO 260 I=MMINA,MMAXA
26026             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
26027             EI=KCHG(IABS(I),1)/3D0
26028             AI=SIGN(1D0,EI+0.1D0)
26029             VI=AI-4D0*EI*XWV
26030             VALI=VI+AI
26031             VARI=VI-AI
26032             FCOI=1D0
26033             IF(IABS(I).LE.10) FCOI=FACA/3D0
26034             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
26035               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
26036      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
26037      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
26038             ELSE
26039               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
26040      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
26041             ENDIF
26042             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
26043      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
26044             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
26045             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
26046      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
26047             NCHN=NCHN+1
26048             ISIG(NCHN,1)=I
26049             ISIG(NCHN,2)=-I
26050             ISIG(NCHN,3)=1
26051             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
26052   260     CONTINUE
26053  
26054         ELSEIF(ISUB.EQ.166) THEN
26055 C...q + q'bar -> l + nu_l (including contact term for compositeness)
26056           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
26057           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
26058           KFF=IABS(KFPR(ISUB,1))
26059           FCOF=1D0
26060           IF(KFF.LE.10) FCOF=3D0
26061           DO 280 I=MMIN1,MMAX1
26062             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
26063             IA=IABS(I)
26064             DO 270 J=MMIN2,MMAX2
26065               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
26066               JA=IABS(J)
26067               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
26068               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26069      &        GOTO 270
26070               FCOI=1D0
26071               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
26072               WID2=1D0
26073               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
26074      &        MOD(J,2).EQ.0)) THEN
26075                 IF(KFF.EQ.5) WID2=WIDS(6,2)
26076                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
26077                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
26078               ELSE
26079                 IF(KFF.EQ.5) WID2=WIDS(6,3)
26080                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
26081                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
26082               ENDIF
26083               NCHN=NCHN+1
26084               ISIG(NCHN,1)=I
26085               ISIG(NCHN,2)=J
26086               ISIG(NCHN,3)=1
26087               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
26088               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
26089      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
26090   270       CONTINUE
26091   280     CONTINUE
26092         ENDIF
26093  
26094       ELSEIF(ISUB.LE.200) THEN
26095         IF(ISUB.EQ.191) THEN
26096 C...q + qbar -> rho_tc0.
26097           KCTC=PYCOMP(KTECHN+113)
26098           SQMRHT=PMAS(KCTC,1)**2
26099           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26100           HS=SHR*WDTP(0)
26101           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
26102           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26103           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26104           ALPRHT=2.91D0*(3D0/ITCM(1))
26105           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
26106           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
26107           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26108           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26109           DO 290 I=MMINA,MMAXA
26110             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
26111             IA=IABS(I)
26112             EI=KCHG(IABS(I),1)/3D0
26113             AI=SIGN(1D0,EI+0.1D0)
26114             VI=AI-4D0*EI*XWV
26115             VALI=0.5D0*(VI+AI)
26116             VARI=0.5D0*(VI-AI)
26117             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
26118      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
26119             IF(IA.LE.10) HI=HI*FACA/3D0
26120             NCHN=NCHN+1
26121             ISIG(NCHN,1)=I
26122             ISIG(NCHN,2)=-I
26123             ISIG(NCHN,3)=1
26124             SIGH(NCHN)=HI*FACBW*HF
26125   290     CONTINUE
26126  
26127         ELSEIF(ISUB.EQ.192) THEN
26128 C...q + qbar' -> rho_tc+/-.
26129           KCTC=PYCOMP(KTECHN+213)
26130           SQMRHT=PMAS(KCTC,1)**2
26131           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26132           HS=SHR*WDTP(0)
26133           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
26134           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26135           ALPRHT=2.91D0*(3D0/ITCM(1))
26136           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
26137      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
26138           DO 310 I=MMIN1,MMAX1
26139             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
26140             IA=IABS(I)
26141             DO 300 J=MMIN2,MMAX2
26142               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
26143               JA=IABS(J)
26144               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
26145               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26146      &        GOTO 300
26147               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26148               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
26149               HI=HP
26150               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
26151               NCHN=NCHN+1
26152               ISIG(NCHN,1)=I
26153               ISIG(NCHN,2)=J
26154               ISIG(NCHN,3)=1
26155               SIGH(NCHN)=HI*FACBW*HF
26156   300       CONTINUE
26157   310     CONTINUE
26158  
26159         ELSEIF(ISUB.EQ.193) THEN
26160 C...q + qbar -> omega_tc0.
26161           KCTC=PYCOMP(KTECHN+223)
26162           SQMOMT=PMAS(KCTC,1)**2
26163           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26164           HS=SHR*WDTP(0)
26165           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
26166           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
26167           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26168           ALPRHT=2.91D0*(3D0/ITCM(1))
26169           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
26170      &    (2D0*RTCM(2)-1D0)**2
26171           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26172           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26173           DO 320 I=MMINA,MMAXA
26174             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
26175             IA=IABS(I)
26176             EI=KCHG(IABS(I),1)/3D0
26177             AI=SIGN(1D0,EI+0.1D0)
26178             VI=AI-4D0*EI*XWV
26179             VALI=0.5D0*(VI+AI)
26180             VARI=0.5D0*(VI-AI)
26181             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
26182      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
26183             IF(IA.LE.10) HI=HI*FACA/3D0
26184             NCHN=NCHN+1
26185             ISIG(NCHN,1)=I
26186             ISIG(NCHN,2)=-I
26187             ISIG(NCHN,3)=1
26188             SIGH(NCHN)=HI*FACBW*HF
26189   320     CONTINUE
26190  
26191         ELSEIF(ISUB.EQ.194) THEN
26192 C...f + fbar -> f' + fbar' via s-channel rho_tc and omega_tc.
26193           KFA=KFPR(ISUBSV,1)
26194           ALPRHT=2.91D0*(3D0/ITCM(1))
26195           HP=AEM**2*COMFAC
26196           TANW=SQRT(PARU(102)/(1D0-PARU(102)))
26197           CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
26198  
26199           QUPD=2D0*RTCM(2)-1D0
26200           FAR=SQRT(AEM/ALPRHT)
26201           FAO=FAR*QUPD
26202           FZR=FAR*CT2W
26203           FZO=-FAO*TANW
26204           SFAR=FAR**2
26205           SFAO=FAO**2
26206           SFZR=FZR**2
26207           SFZO=FZO**2
26208           CALL PYWIDT(23,SH,WDTP,WDTE)
26209           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26210           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26211           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26212           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26213           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26214           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26215      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26216           DAA=(-Sfzr*SSMO - Sfzo*SSMR + SSMO*SSMR*SSMZ)/DETD/SH
26217           DZZ=(-Sfar*SSMO - Sfao*SSMR + SSMO*SSMR)/DETD/SH
26218           DAZ=(far*fzr*SSMO + fao*fzo*SSMR)/DETD/SH
26219  
26220           XWRHT=1D0/(4D0*XW*(1D0-XW))
26221           KFF=IABS(KFPR(ISUB,1))
26222           EF=KCHG(KFF,1)/3D0
26223           AF=SIGN(1D0,EF+0.1D0)
26224           VF=AF-4D0*EF*XWV
26225           VALF=0.5D0*(VF+AF)
26226           VARF=0.5D0*(VF-AF)
26227           FCOF=1D0
26228           IF(KFF.LE.10) FCOF=3D0
26229  
26230           WID2=1D0
26231           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
26232           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
26233           DZZ=DZZ*DCMPLX(XWRHT,0D0)
26234           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
26235  
26236           DO 330 I=MMINA,MMAXA
26237             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
26238             EI=KCHG(IABS(I),1)/3D0
26239             AI=SIGN(1D0,EI+0.1D0)
26240             VI=AI-4D0*EI*XWV
26241             VALI=0.5D0*(VI+AI)
26242             VARI=0.5D0*(VI-AI)
26243             FCOI=FCOF
26244             IF(IABS(I).LE.10) FCOI=FCOI/3D0
26245             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
26246             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
26247             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
26248             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
26249             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
26250      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
26251             NCHN=NCHN+1
26252             ISIG(NCHN,1)=I
26253             ISIG(NCHN,2)=-I
26254             ISIG(NCHN,3)=1
26255             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
26256   330     CONTINUE
26257  
26258         ELSEIF(ISUB.EQ.195) THEN
26259 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+
26260           KFA=KFPR(ISUBSV,1)
26261           KFB=KFA+1
26262           ALPRHT=2.91D0*(3D0/ITCM(1))
26263           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
26264  
26265           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26266           CALL PYWIDT(24,SH,WDTP,WDTE)
26267           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26268           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26269           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26270  
26271           FCOF=1D0
26272           IF(KFA.LE.8) FCOF=3D0
26273           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26274           HP=FACTC*ABS(SSMR/DETD)**2/SH**2*FCOF
26275  
26276           DO 350 I=MMIN1,MMAX1
26277             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
26278             IA=IABS(I)
26279             DO 340 J=MMIN2,MMAX2
26280               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
26281               JA=IABS(J)
26282               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
26283               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26284      &        GOTO 340
26285               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26286               HI=HP
26287               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26288               NCHN=NCHN+1
26289               ISIG(NCHN,1)=I
26290               ISIG(NCHN,2)=J
26291               ISIG(NCHN,3)=1
26292               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
26293   340       CONTINUE
26294   350     CONTINUE
26295         ENDIF
26296  
26297       ELSEIF(ISUB.LE.380) THEN
26298         IF(ISUB.EQ.361) THEN
26299 C...f + fbar -> W_L W_L, W_L pi_tc, pi_tc pi_tc
26300           FACA=(SH**2*BE34**2-(TH-UH)**2)
26301           ALPRHT=2.91D0*(3D0/ITCM(1))
26302           HP=(1D0/12D0)*AEM**2*CAB2*COMFAC*FACA*3D0
26303           FAR=SQRT(AEM/ALPRHT)
26304           FAO=FAR*QUPD
26305           FZR=FAR*CT2W
26306           FZO=-FAO*TANW
26307           SFAR=FAR**2
26308           SFAO=FAO**2
26309           SFZR=FZR**2
26310           SFZO=FZO**2
26311           CALL PYWIDT(23,SH,WDTP,WDTE)
26312           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26313           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26314           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26315           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26316           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26317           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26318      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26319           DARHO=-(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)/DETD/SH
26320           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH
26321           DAA=-(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)/DETD/SH
26322           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH
26323           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH
26324  
26325           DO 360 I=MMINA,MMAXA
26326             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 360
26327             IA=IABS(I)
26328             EI=KCHG(IABS(I),1)/3D0
26329             AI=SIGN(1D0,EI+0.1D0)
26330             VI=AI-4D0*EI*XWV
26331             VALI=0.25D0*(VI+AI)
26332             VARI=0.25D0*(VI-AI)
26333             F2L=EI*(DARHO/FAR+DAA+CT2W*DAZ)+
26334      $      VALI*(CT2W*DZRHO/FZR+CT2W*DZZ+DAZ)/SQRT(XW*XW1)
26335             F2R=EI*(DARHO/FAR+DAA+CT2W*DAZ)+
26336      $      VARI*(CT2W*DZRHO/FZR+CT2W*DZZ+DAZ)/SQRT(XW*XW1)
26337             HI=ABS(F2L)**2+ABS(F2R)**2
26338             IF(IA.LE.10) HI=HI/3D0
26339             NCHN=NCHN+1
26340             ISIG(NCHN,1)=I
26341             ISIG(NCHN,2)=-I
26342             ISIG(NCHN,3)=1
26343             IF(KFA.EQ.KFB) THEN
26344                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
26345             ELSE
26346                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
26347                NCHN=NCHN+1
26348                ISIG(NCHN,1)=I
26349                ISIG(NCHN,2)=-I
26350                ISIG(NCHN,3)=2
26351                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
26352             ENDIF
26353   360     CONTINUE
26354  
26355         ELSEIF(ISUB.EQ.364) THEN
26356 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
26357 C...W pi_tc
26358           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
26359           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
26360           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
26361  
26362           ALPRHT=2.91D0*(3D0/ITCM(1))
26363           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH
26364           FAR=SQRT(AEM/ALPRHT)
26365           FAO=FAR*QUPD
26366           FZR=FAR*CT2W
26367           FZO=-FAO*TANW
26368           SFAR=FAR**2
26369           SFAO=FAO**2
26370           SFZR=FZR**2
26371           SFZO=FZO**2
26372           CALL PYWIDT(23,SH,WDTP,WDTE)
26373           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
26374           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
26375           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
26376           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
26377           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
26378           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
26379      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
26380           DARHO=(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)/DETD/SH
26381           DZRHO=(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH
26382           DAOME=(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)/DETD/SH
26383           DZOME=(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH
26384           DAA=(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)/DETD/SH
26385           DZZ=(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH
26386           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH
26387  
26388           DO 370 I=MMINA,MMAXA
26389             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
26390             IA=IABS(I)
26391             EI=KCHG(IABS(I),1)/3D0
26392             AI=SIGN(1D0,EI+0.1D0)
26393             VI=AI-4D0*EI*XWV
26394             VALI=0.25D0*(VI+AI)
26395             VARI=0.25D0*(VI-AI)
26396 C...........Add in anomaly contribution
26397             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
26398             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
26399             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
26400      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
26401             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
26402             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
26403             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
26404      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
26405             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
26406             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
26407             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
26408             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
26409             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
26410             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
26411             HI=HI+HJ
26412             IF(IA.LE.10) HI=HI/3D0
26413             NCHN=NCHN+1
26414             ISIG(NCHN,1)=I
26415             ISIG(NCHN,2)=-I
26416             ISIG(NCHN,3)=1
26417             IF(ISUBSV.NE.368) THEN
26418                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
26419             ELSE
26420                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
26421                NCHN=NCHN+1
26422                ISIG(NCHN,1)=I
26423                ISIG(NCHN,2)=-I
26424                ISIG(NCHN,3)=2
26425                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
26426             ENDIF
26427   370     CONTINUE
26428  
26429         ELSEIF(ISUB.EQ.370) THEN
26430 C...f + fbar' -> W_L Z_L, W_L pi_tc, Z_L pi_tc, pi_tc pi_tc
26431  
26432           FACA=(SH**2*BE34**2-(TH-UH)**2)
26433           ALPRHT=2.91D0*(3D0/ITCM(1))
26434           HP=(1D0/96D0)*AEM**2*CAB2*COMFAC*FACA*3D0/XW**2
26435           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26436           CALL PYWIDT(24,SH,WDTP,WDTE)
26437           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26438           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26439           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26440           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26441           DWW=SSMR/DETD/SH
26442           DWRHO=-1D0/DETD/SH
26443           HP=HP*ABS(DWW+DWRHO)**2
26444           DO 390 I=MMIN1,MMAX1
26445             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 390
26446             IA=IABS(I)
26447             DO 380 J=MMIN2,MMAX2
26448               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 380
26449               JA=IABS(J)
26450               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 380
26451               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26452      &        GOTO 380
26453               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26454               HI=HP
26455               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26456               NCHN=NCHN+1
26457               ISIG(NCHN,1)=I
26458               ISIG(NCHN,2)=J
26459               ISIG(NCHN,3)=1
26460               SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
26461      &        WIDS(PYCOMP(KFB),2)
26462   380       CONTINUE
26463   390     CONTINUE
26464  
26465         ELSEIF(ISUB.EQ.374) THEN
26466 C...f + fbar' -> gamma pi_tc
26467           FANOM=SQRT(AEM)*ITCM(1)/2D0/PARU(2)/RTCM(1)
26468           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
26469           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)/SQTA*ARGP**2
26470           ALPRHT=2.91D0*(3D0/ITCM(1))
26471           HP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
26472           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
26473           CALL PYWIDT(24,SH,WDTP,WDTE)
26474           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
26475           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
26476           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
26477           DETD=SSMZ*SSMR-DCMPLX(FWR**2,0D0)
26478           DWW=SSMR/DETD/SH
26479           DWRHO=-DCMPLX(FWR,0D0)/DETD/SH
26480           HP=HP*(AFAC*ABS(DWRHO)**2+
26481      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP/SQRT(SQTV))**2)
26482           DO 410 I=MMIN1,MMAX1
26483             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
26484             IA=IABS(I)
26485             DO 400 J=MMIN2,MMAX2
26486               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
26487               JA=IABS(J)
26488               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
26489               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26490      &        GOTO 400
26491               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
26492               HI=HP
26493               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
26494               NCHN=NCHN+1
26495               ISIG(NCHN,1)=I
26496               ISIG(NCHN,2)=J
26497               ISIG(NCHN,3)=1
26498               SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
26499      &        WIDS(PYCOMP(KFB),2)
26500   400       CONTINUE
26501   410     CONTINUE
26502         ENDIF
26503  
26504       ELSEIF(ISUB.LE.390) THEN
26505         IF(ISUB.EQ.381) THEN
26506 C...f + f' -> f + f' (g exchange)
26507           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
26508           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
26509      &    MSTP(34)*2D0/3D0*UH2*REDQST)
26510           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
26511           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
26512           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
26513           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
26514 C...Modifications from contact interactions (compositeness)
26515             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
26516             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
26517      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
26518             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
26519      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
26520             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
26521             RATCII=(FACCI1*FACCI2+FACQQI)/(FACCI1+FACCI2)
26522           ELSEIF(ITCM(5).EQ.5) THEN
26523             FACCI1=FACQQ1
26524             FACCIB=FACQQB
26525             FACCI2=FACQQ2
26526             FACCI3=FACQQ1
26527 CSM.......Check this change from
26528 CSM            RATCII=1D0
26529             RATCII=RATQQI
26530           ENDIF
26531           DO 430 I=MMIN1,MMAX1
26532             IA=IABS(I)
26533             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
26534             DO 420 J=MMIN2,MMAX2
26535               JA=IABS(J)
26536               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
26537               NCHN=NCHN+1
26538               ISIG(NCHN,1)=I
26539               ISIG(NCHN,2)=J
26540               ISIG(NCHN,3)=1
26541               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
26542      &        JA.GE.3))) THEN
26543                 SIGH(NCHN)=FACQQ1
26544                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
26545               ELSE
26546                 SIGH(NCHN)=FACCI1
26547                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
26548                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
26549               ENDIF
26550               IF(I.EQ.J) THEN
26551                 NCHN=NCHN+1
26552                 ISIG(NCHN,1)=I
26553                 ISIG(NCHN,2)=J
26554                 ISIG(NCHN,3)=2
26555                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
26556                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
26557                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
26558                 ELSE
26559                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
26560                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
26561                 ENDIF
26562               ENDIF
26563   420       CONTINUE
26564   430     CONTINUE
26565  
26566         ELSEIF(ISUB.EQ.382) THEN
26567 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
26568           CALL PYWIDT(21,SH,WDTP,WDTE)
26569           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
26570           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26571           IF(ITCM(5).EQ.1) THEN
26572 C...Modifications from contact interactions (compositeness)
26573             FACCIB=FACQQB
26574             DO 440 I=1,2
26575               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
26576      &        WDTE(I,2)+WDTE(I,4))
26577   440       CONTINUE
26578           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
26579             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
26580      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
26581           ELSEIF(ITCM(5).EQ.5) THEN
26582             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
26583      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
26584             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
26585           ENDIF
26586           DO 450 I=MMINA,MMAXA
26587             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26588      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
26589             NCHN=NCHN+1
26590             ISIG(NCHN,1)=I
26591             ISIG(NCHN,2)=-I
26592             ISIG(NCHN,3)=1
26593             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
26594               SIGH(NCHN)=FACQQB
26595             ELSEIF(ITCM(5).EQ.5) THEN
26596               SIGH(NCHN)=FACQQB
26597               NCHN=NCHN+1
26598               ISIG(NCHN,1)=I
26599               ISIG(NCHN,2)=-I
26600               ISIG(NCHN,3)=2
26601               SIGH(NCHN)=FACCIB
26602             ELSE
26603               SIGH(NCHN)=FACCIB
26604             ENDIF
26605   450     CONTINUE
26606  
26607         ELSEIF(ISUB.EQ.383) THEN
26608 C...f + fbar -> g + g (q + qbar -> g + g only)
26609           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26610      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
26611           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26612      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
26613           IF(ITCM(5).EQ.5) THEN
26614             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26615      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
26616             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26617      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
26618           ENDIF
26619           DO 460 I=MMINA,MMAXA
26620             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26621      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
26622             NCHN=NCHN+1
26623             ISIG(NCHN,1)=I
26624             ISIG(NCHN,2)=-I
26625             ISIG(NCHN,3)=1
26626             SIGH(NCHN)=0.5D0*FACGG1
26627             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
26628             NCHN=NCHN+1
26629             ISIG(NCHN,1)=I
26630             ISIG(NCHN,2)=-I
26631             ISIG(NCHN,3)=2
26632             SIGH(NCHN)=0.5D0*FACGG2
26633             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
26634   460     CONTINUE
26635  
26636         ELSEIF(ISUB.EQ.384) THEN
26637 C...f + g -> f + g (q + g -> q + g only)
26638           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
26639      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
26640           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
26641      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
26642           DO 480 I=MMINA,MMAXA
26643             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
26644             DO 470 ISDE=1,2
26645               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
26646               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
26647               NCHN=NCHN+1
26648               ISIG(NCHN,ISDE)=I
26649               ISIG(NCHN,3-ISDE)=21
26650               ISIG(NCHN,3)=1
26651               SIGH(NCHN)=FACQG1
26652               NCHN=NCHN+1
26653               ISIG(NCHN,ISDE)=I
26654               ISIG(NCHN,3-ISDE)=21
26655               ISIG(NCHN,3)=2
26656               SIGH(NCHN)=FACQG2
26657   470       CONTINUE
26658   480     CONTINUE
26659  
26660         ELSEIF(ISUB.EQ.385) THEN
26661 C...g + g -> f + fbar (g + g -> q + qbar only)
26662           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
26663           IDC0=MDCY(21,2)-1
26664 C...Begin by d, u, s flavours.
26665           FLAVWT=0D0
26666           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
26667      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
26668           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
26669      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
26670           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
26671      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
26672           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
26673      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
26674           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
26675      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
26676           NCHN=NCHN+1
26677           ISIG(NCHN,1)=21
26678           ISIG(NCHN,2)=21
26679           ISIG(NCHN,3)=1
26680           SIGH(NCHN)=FACQQ1
26681           NCHN=NCHN+1
26682           ISIG(NCHN,1)=21
26683           ISIG(NCHN,2)=21
26684           ISIG(NCHN,3)=2
26685           SIGH(NCHN)=FACQQ2
26686 C...Next c and b flavours: modified that and uhat for fixed
26687 C...cos(theta-hat).
26688           DO 490 IFL=4,5
26689           SQMAVG=PMAS(IFL,1)**2
26690           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
26691             BE34=SQRT(1D0-4D0*SQMAVG/SH)
26692             THQ=-0.5D0*SH*(1D0-BE34*CTH)
26693             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26694             THUHQ=THQ*UHQ-SQMAVG*SH
26695             IF(MSTP(34).EQ.0) THEN
26696               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
26697               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
26698             ELSE
26699               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26700      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
26701               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26702      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
26703             ENDIF
26704             IF(ITCM(5).GE.5) THEN
26705               IF(IFL.EQ.4) THEN
26706                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
26707      &          2.25D0*THQ*UHQ/SH2*SQDLGS
26708                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
26709      &          2.25D0*THQ*UHQ/SH2*SQDLGS
26710               ELSE
26711                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
26712      &          2.25D0*THQ*UHQ/SH2*SQDHGS
26713                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
26714      &          2.25D0*THQ*UHQ/SH2*SQDHGS
26715               ENDIF
26716             ENDIF
26717             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
26718             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
26719             NCHN=NCHN+1
26720             ISIG(NCHN,1)=21
26721             ISIG(NCHN,2)=21
26722             ISIG(NCHN,3)=1+2*(IFL-3)
26723             SIGH(NCHN)=FACQQ1
26724             NCHN=NCHN+1
26725             ISIG(NCHN,1)=21
26726             ISIG(NCHN,2)=21
26727             ISIG(NCHN,3)=2+2*(IFL-3)
26728             SIGH(NCHN)=FACQQ2
26729           ENDIF
26730   490     CONTINUE
26731   500     CONTINUE
26732  
26733         ELSEIF(ISUB.EQ.386) THEN
26734 C...g + g -> g + g
26735           IF(ITCM(5).LE.4) THEN
26736             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
26737      &      2D0*TH/SH+TH2/SH2)*FACA
26738             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
26739      &      2D0*SH/UH+SH2/UH2)*FACA
26740             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
26741      &      2D0*UH/TH+UH2/TH2)
26742           ELSE
26743             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
26744      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
26745      &      4D0*REDGST*(SH + 2D0*TH)*
26746      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
26747      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
26748      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
26749      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
26750      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
26751      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
26752             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
26753      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
26754      &      4D0*REDGSU*(SH + 2D0*UH)*
26755      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
26756      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
26757      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
26758      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
26759      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
26760      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
26761             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
26762      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
26763      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
26764      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
26765      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
26766      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
26767      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
26768      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
26769      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
26770      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
26771      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
26772      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
26773      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
26774             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
26775             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
26776             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
26777           ENDIF
26778           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
26779           NCHN=NCHN+1
26780           ISIG(NCHN,1)=21
26781           ISIG(NCHN,2)=21
26782           ISIG(NCHN,3)=1
26783           SIGH(NCHN)=0.5D0*FACGG1
26784           NCHN=NCHN+1
26785           ISIG(NCHN,1)=21
26786           ISIG(NCHN,2)=21
26787           ISIG(NCHN,3)=2
26788           SIGH(NCHN)=0.5D0*FACGG2
26789           NCHN=NCHN+1
26790           ISIG(NCHN,1)=21
26791           ISIG(NCHN,2)=21
26792           ISIG(NCHN,3)=3
26793           SIGH(NCHN)=0.5D0*FACGG3
26794   510     CONTINUE
26795  
26796         ELSEIF(ISUB.EQ.387) THEN
26797 C...q + qbar -> Q + Qbar
26798           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
26799           THQ=-0.5D0*SH*(1D0-BE34*CTH)
26800           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26801           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
26802      &    2D0*SQMAVG/SH)
26803           IF(ITCM(5).GE.5) THEN
26804             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
26805               FACQQB=FACQQB*SH2*SQDQTS
26806             ELSE
26807               FACQQB=FACQQB*SH2*SQDQQS
26808             ENDIF
26809           ENDIF
26810           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
26811           WID2=1D0
26812           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
26813           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
26814           FACQQB=FACQQB*WID2
26815           DO 520 I=MMINA,MMAXA
26816             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
26817      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
26818             NCHN=NCHN+1
26819             ISIG(NCHN,1)=I
26820             ISIG(NCHN,2)=-I
26821             ISIG(NCHN,3)=1
26822             SIGH(NCHN)=FACQQB
26823   520     CONTINUE
26824  
26825         ELSEIF(ISUB.EQ.388) THEN
26826 C...g + g -> Q + Qbar
26827           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
26828           THQ=-0.5D0*SH*(1D0-BE34*CTH)
26829           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
26830           THUHQ=THQ*UHQ-SQMAVG*SH
26831           IF(MSTP(34).EQ.0) THEN
26832             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
26833             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
26834           ELSE
26835             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26836      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
26837             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
26838      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
26839           ENDIF
26840           IF(ITCM(5).GE.5) THEN
26841             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
26842               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
26843      &        2.25D0*THQ*UHQ/SH2*SQDHGS
26844               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
26845      &        2.25D0*THQ*UHQ/SH2*SQDHGS
26846             ELSE
26847               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
26848      &        2.25D0*THQ*UHQ/SH2*SQDLGS
26849               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
26850      &        2.25D0*THQ*UHQ/SH2*SQDLGS
26851             ENDIF
26852           ENDIF
26853           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
26854           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
26855           IF(MSTP(35).GE.1) THEN
26856             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
26857             FACQQ1=FACQQ1*FATRE
26858             FACQQ2=FACQQ2*FATRE
26859           ENDIF
26860           WID2=1D0
26861           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
26862           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
26863           FACQQ1=FACQQ1*WID2
26864           FACQQ2=FACQQ2*WID2
26865           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
26866           NCHN=NCHN+1
26867           ISIG(NCHN,1)=21
26868           ISIG(NCHN,2)=21
26869           ISIG(NCHN,3)=1
26870           SIGH(NCHN)=FACQQ1
26871           NCHN=NCHN+1
26872           ISIG(NCHN,1)=21
26873           ISIG(NCHN,2)=21
26874           ISIG(NCHN,3)=2
26875           SIGH(NCHN)=FACQQ2
26876   530     CONTINUE
26877         ENDIF
26878       ENDIF
26879  
26880 CMRENNA--
26881  
26882       RETURN
26883       END
26884  
26885 C*********************************************************************
26886  
26887 C...PYSGEX
26888 C...Subprocess cross sections for assorted exotic processes,
26889 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
26890 C...Auxiliary to PYSIGH.
26891  
26892       SUBROUTINE PYSGEX(NCHN,SIGS)
26893  
26894 C...Double precision and integer declarations
26895       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
26896       IMPLICIT INTEGER(I-N)
26897       INTEGER PYK,PYCHGE,PYCOMP
26898 C...Parameter statement to help give large particle numbers.
26899       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
26900      &KEXCIT=4000000,KDIMEN=5000000)
26901 C...Commonblocks
26902       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
26903       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
26904       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
26905       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
26906       COMMON/PYINT1/MINT(400),VINT(400)
26907       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
26908       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
26909       COMMON/PYINT4/MWID(500),WIDS(500,5)
26910       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
26911       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
26912      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
26913      &SHR,SQPTH,TAUP,BE34,CTH,SQMZ,SQMW,GMMZ,GMMW,
26914      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
26915       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
26916      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
26917 C...Local arrays
26918       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
26919  
26920 C...Differential cross section expressions.
26921  
26922       IF(ISUB.LE.160) THEN
26923         IF(ISUB.EQ.141) THEN
26924 C...f + fbar -> gamma*/Z0/Z'0
26925           SQMZP=PMAS(32,1)**2
26926           MINT(61)=2
26927           CALL PYWIDT(32,SH,WDTP,WDTE)
26928           HP0=AEM/3D0*SH
26929           HP1=AEM/3D0*XWC*SH
26930           HP2=HP1
26931           HS=SHR*VINT(117)
26932           HSP=SHR*WDTP(0)
26933           FACZP=4D0*COMFAC*3D0
26934           DO 100 I=MMINA,MMAXA
26935             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
26936             EI=KCHG(IABS(I),1)/3D0
26937             AI=SIGN(1D0,EI)
26938             VI=AI-4D0*EI*XWV
26939             IA=IABS(I)
26940             IF(IA.LT.10) THEN
26941               IF(IA.LE.2) THEN
26942                 VPI=PARU(123-2*MOD(IABS(I),2))
26943                 API=PARU(124-2*MOD(IABS(I),2))
26944               ELSEIF(IA.LE.4) THEN
26945                 VPI=PARJ(182-2*MOD(IABS(I),2))
26946                 API=PARJ(183-2*MOD(IABS(I),2))
26947               ELSE
26948                 VPI=PARJ(190-2*MOD(IABS(I),2))
26949                 API=PARJ(191-2*MOD(IABS(I),2))
26950               ENDIF
26951             ELSE
26952               IF(IA.LE.12) THEN
26953                 VPI=PARU(127-2*MOD(IABS(I),2))
26954                 API=PARU(128-2*MOD(IABS(I),2))
26955               ELSEIF(IA.LE.14) THEN
26956                 VPI=PARJ(186-2*MOD(IABS(I),2))
26957                 API=PARJ(187-2*MOD(IABS(I),2))
26958               ELSE
26959                 VPI=PARJ(194-2*MOD(IABS(I),2))
26960                 API=PARJ(195-2*MOD(IABS(I),2))
26961               ENDIF
26962             ENDIF
26963             HI0=HP0
26964             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
26965             HI1=HP1
26966             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
26967             HI2=HP2
26968             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
26969             NCHN=NCHN+1
26970             ISIG(NCHN,1)=I
26971             ISIG(NCHN,2)=-I
26972             ISIG(NCHN,3)=1
26973             SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
26974      &      (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
26975      &      VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
26976      &      (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
26977      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
26978      &      ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
26979      &      ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
26980      &      (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
26981   100     CONTINUE
26982  
26983         ELSEIF(ISUB.EQ.142) THEN
26984 C...f + fbar' -> W'+/-
26985           SQMWP=PMAS(34,1)**2
26986           CALL PYWIDT(34,SH,WDTP,WDTE)
26987           HS=SHR*WDTP(0)
26988           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
26989           HP=AEM/(24D0*XW)*SH
26990           DO 120 I=MMIN1,MMAX1
26991             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
26992             IA=IABS(I)
26993             DO 110 J=MMIN2,MMAX2
26994               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
26995               JA=IABS(J)
26996               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
26997               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
26998      &        GOTO 110
26999               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27000               HI=HP*(PARU(133)**2+PARU(134)**2)
27001               IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
27002      &        VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
27003               NCHN=NCHN+1
27004               ISIG(NCHN,1)=I
27005               ISIG(NCHN,2)=J
27006               ISIG(NCHN,3)=1
27007               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
27008               SIGH(NCHN)=HI*FACBW*HF
27009   110       CONTINUE
27010   120     CONTINUE
27011  
27012         ELSEIF(ISUB.EQ.144) THEN
27013 C...f + fbar' -> R
27014           SQMR=PMAS(41,1)**2
27015           CALL PYWIDT(41,SH,WDTP,WDTE)
27016           HS=SHR*WDTP(0)
27017           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
27018           HP=AEM/(12D0*XW)*SH
27019           DO 140 I=MMIN1,MMAX1
27020             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
27021             IA=IABS(I)
27022             DO 130 J=MMIN2,MMAX2
27023               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
27024               JA=IABS(J)
27025               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
27026               HI=HP
27027               IF(IA.LE.10) HI=HI*FACA/3D0
27028               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
27029               NCHN=NCHN+1
27030               ISIG(NCHN,1)=I
27031               ISIG(NCHN,2)=J
27032               ISIG(NCHN,3)=1
27033               SIGH(NCHN)=HI*FACBW*HF
27034   130       CONTINUE
27035   140     CONTINUE
27036  
27037         ELSEIF(ISUB.EQ.145) THEN
27038 C...q + l -> LQ (leptoquark)
27039           SQMLQ=PMAS(42,1)**2
27040           CALL PYWIDT(42,SH,WDTP,WDTE)
27041           HS=SHR*WDTP(0)
27042           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
27043           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
27044           HP=AEM/4D0*SH
27045           KFLQQ=KFDP(MDCY(42,2),1)
27046           KFLQL=KFDP(MDCY(42,2),2)
27047           DO 160 I=MMIN1,MMAX1
27048             IF(KFAC(1,I).EQ.0) GOTO 160
27049             IA=IABS(I)
27050             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
27051             DO 150 J=MMIN2,MMAX2
27052               IF(KFAC(2,J).EQ.0) GOTO 150
27053               JA=IABS(J)
27054               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
27055               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
27056               IF(JA.EQ.IA) GOTO 150
27057               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
27058               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
27059               HI=HP*PARU(151)
27060               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
27061               NCHN=NCHN+1
27062               ISIG(NCHN,1)=I
27063               ISIG(NCHN,2)=J
27064               ISIG(NCHN,3)=1
27065               SIGH(NCHN)=HI*FACBW*HF
27066   150       CONTINUE
27067   160     CONTINUE
27068  
27069         ELSEIF(ISUB.EQ.146) THEN
27070 C...e + gamma* -> e* (excited lepton)
27071           KFQSTR=KFPR(ISUB,1)
27072           KCQSTR=PYCOMP(KFQSTR)
27073           KFQEXC=MOD(KFQSTR,KEXCIT)
27074           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
27075           HS=SHR*WDTP(0)
27076           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
27077           QF=-RTCM(43)/2D0-RTCM(44)/2D0
27078           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
27079           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
27080      &    FACBW=0D0
27081           HP=SH
27082           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
27083             DO 170 ISDE=1,2
27084               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
27085               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
27086               HI=HP
27087               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27088               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
27089               NCHN=NCHN+1
27090               ISIG(NCHN,ISDE)=I
27091               ISIG(NCHN,3-ISDE)=22
27092               ISIG(NCHN,3)=1
27093               SIGH(NCHN)=HI*FACBW*HF
27094   170       CONTINUE
27095   180     CONTINUE
27096  
27097         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
27098 C...d + g -> d* and u + g -> u* (excited quarks)
27099           KFQSTR=KFPR(ISUB,1)
27100           KCQSTR=PYCOMP(KFQSTR)
27101           KFQEXC=MOD(KFQSTR,KEXCIT)
27102           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
27103           HS=SHR*WDTP(0)
27104           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
27105           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
27106           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
27107      &    FACBW=0D0
27108           HP=SH
27109           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
27110             DO 190 ISDE=1,2
27111               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
27112               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
27113               HI=HP
27114               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27115               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
27116               NCHN=NCHN+1
27117               ISIG(NCHN,ISDE)=I
27118               ISIG(NCHN,3-ISDE)=21
27119               ISIG(NCHN,3)=1
27120               SIGH(NCHN)=HI*FACBW*HF
27121   190       CONTINUE
27122   200     CONTINUE
27123         ENDIF
27124  
27125       ELSEIF(ISUB.LE.190) THEN
27126         IF(ISUB.EQ.162) THEN
27127 C...q + g -> LQ + lbar; LQ=leptoquark
27128           SQMLQ=PMAS(42,1)**2
27129           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
27130      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
27131           KFLQQ=KFDP(MDCY(42,2),1)
27132           DO 220 I=MMINA,MMAXA
27133             IF(IABS(I).NE.KFLQQ) GOTO 220
27134             KCHLQ=ISIGN(1,I)
27135             DO 210 ISDE=1,2
27136               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
27137               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
27138               NCHN=NCHN+1
27139               ISIG(NCHN,ISDE)=I
27140               ISIG(NCHN,3-ISDE)=21
27141               ISIG(NCHN,3)=1
27142               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
27143   210       CONTINUE
27144   220     CONTINUE
27145  
27146         ELSEIF(ISUB.EQ.163) THEN
27147 C...g + g -> LQ + LQbar; LQ=leptoquark
27148           SQMLQ=PMAS(42,1)**2
27149           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
27150      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
27151      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
27152      &    ((TH-SQMLQ)*(UH-SQMLQ)))
27153           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
27154           NCHN=NCHN+1
27155           ISIG(NCHN,1)=21
27156           ISIG(NCHN,2)=21
27157 C...Since don't know proper colour flow, randomize between alternatives
27158           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
27159           SIGH(NCHN)=FACLQ
27160   230     CONTINUE
27161  
27162         ELSEIF(ISUB.EQ.164) THEN
27163 C...q + qbar -> LQ + LQbar; LQ=leptoquark
27164           DELTA=0.25D0*(SQM3-SQM4)**2/SH
27165           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
27166           TH=TH-DELTA
27167           UH=UH-DELTA
27168 C          SQMLQ=PMAS(42,1)**2
27169           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
27170      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
27171           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
27172      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
27173      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
27174           KFLQQ=KFDP(MDCY(42,2),1)
27175           DO 240 I=MMINA,MMAXA
27176             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
27177      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
27178             NCHN=NCHN+1
27179             ISIG(NCHN,1)=I
27180             ISIG(NCHN,2)=-I
27181             ISIG(NCHN,3)=1
27182             SIGH(NCHN)=FACLQA
27183             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
27184   240     CONTINUE
27185  
27186         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
27187 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
27188           KFQSTR=KFPR(ISUB,2)
27189           KCQSTR=PYCOMP(KFQSTR)
27190           KFQEXC=MOD(KFQSTR,KEXCIT)
27191           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
27192           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
27193      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
27194 C...Propagators: as simulated in PYOFSH and as desired
27195           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
27196           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
27197           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
27198           GMMQC=SQRT(SQM4)*WDTP(0)
27199           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
27200           FACQSA=FACQSA*HBW4C/HBW4
27201           FACQSB=FACQSB*HBW4C/HBW4
27202 C...Branching ratios.
27203           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
27204           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
27205           DO 260 I=MMIN1,MMAX1
27206             IA=IABS(I)
27207             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
27208             DO 250 J=MMIN2,MMAX2
27209               JA=IABS(J)
27210               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
27211               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
27212                 NCHN=NCHN+1
27213                 ISIG(NCHN,1)=I
27214                 ISIG(NCHN,2)=J
27215                 ISIG(NCHN,3)=1
27216                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
27217                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
27218                 NCHN=NCHN+1
27219                 ISIG(NCHN,1)=I
27220                 ISIG(NCHN,2)=J
27221                 ISIG(NCHN,3)=2
27222                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
27223                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
27224               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
27225                 NCHN=NCHN+1
27226                 ISIG(NCHN,1)=I
27227                 ISIG(NCHN,2)=J
27228                 ISIG(NCHN,3)=1
27229                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
27230                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
27231                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
27232               ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
27233                 NCHN=NCHN+1
27234                 ISIG(NCHN,1)=I
27235                 ISIG(NCHN,2)=J
27236                 ISIG(NCHN,3)=1
27237                 IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
27238                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
27239                 NCHN=NCHN+1
27240                 ISIG(NCHN,1)=I
27241                 ISIG(NCHN,2)=J
27242                 ISIG(NCHN,3)=2
27243                 IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
27244                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
27245               ELSEIF(I.EQ.-J) THEN
27246                 NCHN=NCHN+1
27247                 ISIG(NCHN,1)=I
27248                 ISIG(NCHN,2)=J
27249                 ISIG(NCHN,3)=1
27250                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27251                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27252                 NCHN=NCHN+1
27253                 ISIG(NCHN,1)=I
27254                 ISIG(NCHN,2)=J
27255                 ISIG(NCHN,3)=2
27256                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27257                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27258               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
27259                 NCHN=NCHN+1
27260                 ISIG(NCHN,1)=I
27261                 ISIG(NCHN,2)=J
27262                 ISIG(NCHN,3)=1
27263                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
27264                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
27265                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
27266               ENDIF
27267   250       CONTINUE
27268   260     CONTINUE
27269  
27270         ELSEIF(ISUB.EQ.169) THEN
27271 C...q + qbar -> e + e* (excited lepton)
27272           KFQSTR=KFPR(ISUB,2)
27273           KCQSTR=PYCOMP(KFQSTR)
27274           KFQEXC=MOD(KFQSTR,KEXCIT)
27275           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
27276      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
27277 C...Propagators: as simulated in PYOFSH and as desired
27278           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
27279           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
27280           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
27281           GMMQC=SQRT(SQM4)*WDTP(0)
27282           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
27283           FACQSB=FACQSB*HBW4C/HBW4
27284 C...Branching ratios.
27285           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
27286           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
27287           DO 270 I=MMIN1,MMAX1
27288             IA=IABS(I)
27289             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
27290             J=-I
27291             JA=IABS(J)
27292             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
27293             NCHN=NCHN+1
27294             ISIG(NCHN,1)=I
27295             ISIG(NCHN,2)=J
27296             ISIG(NCHN,3)=1
27297             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27298             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27299             NCHN=NCHN+1
27300             ISIG(NCHN,1)=I
27301             ISIG(NCHN,2)=J
27302             ISIG(NCHN,3)=2
27303             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
27304             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
27305   270     CONTINUE
27306         ENDIF
27307  
27308       ELSEIF(ISUB.LE.360) THEN
27309         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
27310 C...l + l -> H_L++/-- or H_R++/--.
27311           KFRES=KFPR(ISUB,1)
27312           KFREC=PYCOMP(KFRES)
27313           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
27314           HS=SHR*WDTP(0)
27315           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
27316           DO 290 I=MMIN1,MMAX1
27317             IA=IABS(I)
27318             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
27319      &      GOTO 290
27320             DO 280 J=MMIN2,MMAX2
27321               JA=IABS(J)
27322               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
27323      &        GOTO 280
27324               IF(I*J.LT.0) GOTO 280
27325               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27326               NCHN=NCHN+1
27327               ISIG(NCHN,1)=I
27328               ISIG(NCHN,2)=J
27329               ISIG(NCHN,3)=1
27330               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
27331               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
27332               SIGH(NCHN)=HI*FACBW*HF
27333   280       CONTINUE
27334   290     CONTINUE
27335  
27336         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
27337 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
27338           KFRES=KFPR(ISUB,1)
27339           KFREC=PYCOMP(KFRES)
27340 C...Propagators: as simulated in PYOFSH and as desired
27341           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
27342      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
27343           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
27344           GMMC=SQRT(SQM3)*WDTP(0)
27345           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
27346           FHCC=COMFAC*AEM*HBW3C/HBW3
27347           DO 310 I=MMINA,MMAXA
27348             IA=IABS(I)
27349             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
27350             SQML=PMAS(IA,1)**2
27351             J=ISIGN(KFPR(ISUB,2),-I)
27352             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
27353             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
27354             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
27355      &      (UH-SQM3)**2
27356             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
27357      &      (TH-SQM4)*SH)/(TH-SQM4)**2
27358             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
27359      &      SH)/(SH-SQML)**2
27360             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
27361      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
27362      &      ((UH-SQM3)*(TH-SQM4))
27363             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
27364      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
27365      &      ((UH-SQM3)*(SH-SQML))
27366             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
27367      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
27368      &      ((SH-SQML)*(TH-SQM4))
27369             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
27370      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
27371             DO 300 ISDE=1,2
27372               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
27373               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
27374               NCHN=NCHN+1
27375               ISIG(NCHN,ISDE)=I
27376               ISIG(NCHN,3-ISDE)=22
27377               ISIG(NCHN,3)=0
27378               SIGH(NCHN)=FHCC*SMM*WIDSC
27379   300       CONTINUE
27380   310     CONTINUE
27381  
27382         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
27383 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
27384           KFRES=KFPR(ISUB,1)
27385           KFREC=PYCOMP(KFRES)
27386           SQMH=PMAS(KFREC,1)**2
27387           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
27388 C...Propagators: H++/-- as simulated in PYOFSH and as desired
27389           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
27390           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
27391           GMMH3=SQRT(SQM3)*WDTP(0)
27392           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
27393           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
27394           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
27395           GMMH4=SQRT(SQM4)*WDTP(0)
27396           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
27397 C...Kinematical and coupling functions
27398           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
27399           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
27400 C...Loop over allowed flavours
27401           DO 320 I=MMINA,MMAXA
27402             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
27403             EI=KCHG(IABS(I),1)/3D0
27404             AI=SIGN(1D0,EI+0.1D0)
27405             VI=AI-4D0*EI*XWV
27406             FCOI=1D0
27407             IF(IABS(I).LE.10) FCOI=FACA/3D0
27408             IF(ISUB.EQ.349) THEN
27409               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
27410               IF(IABS(I).LT.10) THEN
27411                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
27412      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
27413      &          (VI**2+AI**2)*XWHH**2*HBWZ)
27414               ELSE
27415                 IAOFF=181+3*((IABS(I)-11)/2)
27416                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
27417      &          (4D0*PARU(1))
27418                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
27419      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
27420      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
27421      &          8D0*AEM*(EI*HSUM/(SH*TH)+
27422      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
27423      &          4D0*HSUM**2/TH2
27424               ENDIF
27425             ELSE
27426               IF(IABS(I).LT.10) THEN
27427                 DSIGHH=8D0*AEM**2*EI**2/SH2
27428               ELSE
27429                 IAOFF=181+3*((IABS(I)-11)/2)
27430                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
27431      &          (4D0*PARU(1))
27432                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
27433      &          4D0*HSUM**2/TH2
27434               ENDIF
27435             ENDIF
27436             NCHN=NCHN+1
27437             ISIG(NCHN,1)=I
27438             ISIG(NCHN,2)=-I
27439             ISIG(NCHN,3)=1
27440             SIGH(NCHN)=FACHH*FCOI*DSIGHH
27441   320     CONTINUE
27442  
27443         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
27444 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
27445           KFRES=KFPR(ISUB,1)
27446           KFREC=PYCOMP(KFRES)
27447           SQMH=PMAS(KFREC,1)**2
27448           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
27449           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
27450      &    PMAS(PYCOMP(9900024),1)**2
27451           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
27452           FACPRT=1D0/((VINT(204)**2-VINT(215))*
27453      &    (VINT(209)**2-VINT(216)))
27454           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
27455      &    (VINT(209)**2+2D0*VINT(218)))
27456           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
27457           HS=SHR*WDTP(0)
27458           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
27459           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
27460      &    FACBW=0D0
27461           DO 340 I=MMIN1,MMAX1
27462             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
27463             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
27464             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
27465             DO 330 J=MMIN2,MMAX2
27466               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
27467               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
27468               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
27469               KCHH=KCHWI+KCHWJ
27470               IF(IABS(KCHH).NE.2) GOTO 330
27471               FACLR=VINT(180+I)*VINT(180+J)
27472               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
27473               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
27474                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
27475               ELSE
27476                 FACPRP=FACPRT**2
27477               ENDIF
27478               NCHN=NCHN+1
27479               ISIG(NCHN,1)=I
27480               ISIG(NCHN,2)=J
27481               ISIG(NCHN,3)=1
27482               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
27483   330       CONTINUE
27484   340     CONTINUE
27485  
27486         ELSEIF(ISUB.EQ.353) THEN
27487 C...f + fbar -> Z_R0
27488           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
27489           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
27490           HS=SHR*WDTP(0)
27491           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
27492           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27493           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
27494           DO 350 I=MMINA,MMAXA
27495             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
27496             IF(IABS(I).LE.8) THEN
27497               EI=KCHG(IABS(I),1)/3D0
27498               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
27499               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
27500             ELSE
27501               AI=-(1D0-2D0*XW)
27502               VI=-1D0+4D0*XW
27503             ENDIF
27504             HI=HP*(VI**2+AI**2)
27505             IF(IABS(I).LE.10) HI=HI*FACA/3D0
27506             NCHN=NCHN+1
27507             ISIG(NCHN,1)=I
27508             ISIG(NCHN,2)=-I
27509             ISIG(NCHN,3)=1
27510             SIGH(NCHN)=HI*FACBW*HF
27511   350     CONTINUE
27512  
27513         ELSEIF(ISUB.EQ.354) THEN
27514 C...f + fbar' -> W_R+/-
27515           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
27516           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
27517           HS=SHR*WDTP(0)
27518           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
27519           HP=AEM/(24D0*XW)*SH
27520           DO 370 I=MMIN1,MMAX1
27521             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
27522             IA=IABS(I)
27523             DO 360 J=MMIN2,MMAX2
27524               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
27525               JA=IABS(J)
27526               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
27527               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
27528      &        GOTO 360
27529               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
27530               HI=HP*2D0
27531               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
27532               NCHN=NCHN+1
27533               ISIG(NCHN,1)=I
27534               ISIG(NCHN,2)=J
27535               ISIG(NCHN,3)=1
27536               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
27537               SIGH(NCHN)=HI*FACBW*HF
27538   360       CONTINUE
27539   370     CONTINUE
27540         ENDIF
27541  
27542       ELSEIF(ISUB.LE.400) THEN
27543         IF(ISUB.EQ.391) THEN
27544 C...f + fbar -> G*.
27545           KFGSTR=KFPR(ISUB,1)
27546           KCGSTR=PYCOMP(KFGSTR)
27547           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
27548           HS=SHR*WDTP(0)
27549           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27550           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
27551      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
27552           DO 380 I=MMINA,MMAXA
27553             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
27554             HI=1D0
27555             IF(IABS(I).LE.10) HI=HI*FACA/3D0
27556             NCHN=NCHN+1
27557             ISIG(NCHN,1)=I
27558             ISIG(NCHN,2)=-I
27559             ISIG(NCHN,3)=1
27560             SIGH(NCHN)=FACG*HI
27561   380     CONTINUE
27562  
27563         ELSEIF(ISUB.EQ.392) THEN
27564 C...g + g -> G*.
27565           KFGSTR=KFPR(ISUB,1)
27566           KCGSTR=PYCOMP(KFGSTR)
27567           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
27568           HS=SHR*WDTP(0)
27569           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27570           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
27571      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
27572           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
27573           NCHN=NCHN+1
27574           ISIG(NCHN,1)=21
27575           ISIG(NCHN,2)=21
27576           ISIG(NCHN,3)=1
27577           SIGH(NCHN)=FACG
27578   390     CONTINUE
27579  
27580         ELSEIF(ISUB.EQ.393) THEN
27581 C...q + qbar -> g + G*.
27582           KFGSTR=KFPR(ISUB,2)
27583           KCGSTR=PYCOMP(KFGSTR)
27584           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
27585      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
27586      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
27587      &    2D0*SH2/(TH*UH))
27588 C...Propagators: as simulated in PYOFSH and as desired
27589           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27590           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27591           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27592           HS=SQRT(SQM4)*WDTP(0)
27593           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27594           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27595           FACG=FACG*HBW4C/HBW4
27596           DO 400 I=MMINA,MMAXA
27597             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
27598      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
27599             NCHN=NCHN+1
27600             ISIG(NCHN,1)=I
27601             ISIG(NCHN,2)=-I
27602             ISIG(NCHN,3)=1
27603             SIGH(NCHN)=FACG
27604   400     CONTINUE
27605  
27606         ELSEIF(ISUB.EQ.394) THEN
27607 C...q + g -> q + G*.
27608           KFGSTR=KFPR(ISUB,2)
27609           KCGSTR=PYCOMP(KFGSTR)
27610           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
27611      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
27612      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
27613      &    2D0*TH2*TH/(UH*SH2))
27614 C...Propagators: as simulated in PYOFSH and as desired
27615           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27616           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27617           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27618           HS=SQRT(SQM4)*WDTP(0)
27619           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27620           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27621           FACG=FACG*HBW4C/HBW4
27622           DO 420 I=MMINA,MMAXA
27623             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
27624             DO 410 ISDE=1,2
27625               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
27626               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
27627               NCHN=NCHN+1
27628               ISIG(NCHN,ISDE)=I
27629               ISIG(NCHN,3-ISDE)=21
27630               ISIG(NCHN,3)=1
27631               SIGH(NCHN)=FACG
27632   410       CONTINUE
27633   420     CONTINUE
27634  
27635         ELSEIF(ISUB.EQ.395) THEN
27636 C...g + g -> g + G*.
27637           KFGSTR=KFPR(ISUB,2)
27638           KCGSTR=PYCOMP(KFGSTR)
27639           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
27640      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
27641      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
27642 C...Propagators: as simulated in PYOFSH and as desired
27643           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
27644           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
27645           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
27646           HS=SQRT(SQM4)*WDTP(0)
27647           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
27648           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
27649           FACG=FACG*HBW4C/HBW4
27650           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
27651             NCHN=NCHN+1
27652             ISIG(NCHN,1)=21
27653             ISIG(NCHN,2)=21
27654             ISIG(NCHN,3)=1
27655             SIGH(NCHN)=FACG
27656           ENDIF
27657         ENDIF
27658       ENDIF
27659  
27660       RETURN
27661       END
27662  
27663 C*********************************************************************
27664  
27665 C...PYPDFU
27666 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
27667 C...parton distributions according to a few different parametrizations.
27668 C...Note that what is coded is x times the probability distribution,
27669 C...i.e. xq(x,Q2) etc.
27670  
27671       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
27672  
27673 C...Double precision and integer declarations.
27674       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27675       IMPLICIT INTEGER(I-N)
27676       INTEGER PYK,PYCHGE,PYCOMP
27677 C...Commonblocks.
27678       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27679       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27680       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27681       COMMON/PYINT1/MINT(400),VINT(400)
27682       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
27683      &XPDIR(-6:6)
27684       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/
27685 C...Local arrays.
27686       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
27687      &XPPI(-6:6),XPPR(-6:6)
27688  
27689 C...Interface to PDFLIB.
27690       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
27691       SAVE /W50513/
27692       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
27693      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
27694       CHARACTER*20 PARM(20)
27695       DATA VALUE/20*0D0/,PARM/20*' '/
27696  
27697 C...Data related to Schuler-Sjostrand photon distributions.
27698       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
27699  
27700 C...Reset parton distributions.
27701       MINT(92)=0
27702       DO 100 KFL=-25,25
27703         XPQ(KFL)=0D0
27704   100 CONTINUE
27705  
27706 C...Check x and particle species.
27707       IF(X.LE.0D0.OR.X.GE.1D0) THEN
27708         WRITE(MSTU(11),5000) X
27709         RETURN
27710       ENDIF
27711       KFA=IABS(KF)
27712       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
27713      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
27714      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
27715      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
27716      &KFA.NE.310.AND.KFA.NE.130) THEN
27717         WRITE(MSTU(11),5100) KF
27718         RETURN
27719       ENDIF
27720  
27721 C...Electron (or muon or tau) parton distribution call.
27722       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
27723         CALL PYPDEL(KFA,X,Q2,XPEL)
27724         DO 110 KFL=-25,25
27725           XPQ(KFL)=XPEL(KFL)
27726   110   CONTINUE
27727  
27728 C...Photon parton distribution call (VDM+anomalous).
27729       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
27730         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
27731           CALL PYPDGA(X,Q2,XPGA)
27732           DO 120 KFL=-6,6
27733             XPQ(KFL)=XPGA(KFL)
27734   120     CONTINUE
27735         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
27736           Q2MX=Q2
27737           P2MX=0.36D0
27738           IF(MSTP(55).GE.7) P2MX=4.0D0
27739           IF(MSTP(57).EQ.0) Q2MX=P2MX
27740           P2=0D0
27741           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27742           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27743           DO 130 KFL=-6,6
27744             XPQ(KFL)=XPGA(KFL)
27745   130     CONTINUE
27746           VINT(231)=P2MX
27747         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
27748           Q2MX=Q2
27749           P2MX=0.36D0
27750           IF(MSTP(55).GE.11) P2MX=4.0D0
27751           IF(MSTP(57).EQ.0) Q2MX=P2MX
27752           P2=0D0
27753           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27754           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27755           DO 140 KFL=-6,6
27756             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
27757   140     CONTINUE
27758           VINT(231)=P2MX
27759         ELSEIF(MSTP(56).EQ.2) THEN
27760 C...Call PDFLIB parton distributions.
27761           PARM(1)='NPTYPE'
27762           VALUE(1)=3
27763           PARM(2)='NGROUP'
27764           VALUE(2)=MSTP(55)/1000
27765           PARM(3)='NSET'
27766           VALUE(3)=MOD(MSTP(55),1000)
27767           IF(MINT(93).NE.3000000+MSTP(55)) THEN
27768             CALL PDFSET(PARM,VALUE)
27769             MINT(93)=3000000+MSTP(55)
27770           ENDIF
27771           XX=X
27772           QQ2=MAX(0D0,Q2MIN,Q2)
27773           IF(MSTP(57).EQ.0) QQ2=Q2MIN
27774           P2=0D0
27775           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27776           IP2=MSTP(60)
27777           IF(MSTP(55).EQ.5004) THEN
27778             IF(5D0*P2.LT.QQ2.AND.
27779      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
27780      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
27781      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
27782               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
27783      &        BOT,TOP,GLU)
27784             ELSE
27785               UPV=0D0
27786               DNV=0D0
27787               USEA=0D0
27788               DSEA=0D0
27789               STR=0D0
27790               CHM=0D0
27791               BOT=0D0
27792               TOP=0D0
27793               GLU=0D0
27794             ENDIF
27795           ELSE
27796             IF(P2.LT.QQ2) THEN
27797               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
27798      &        BOT,TOP,GLU)
27799             ELSE
27800               UPV=0D0
27801               DNV=0D0
27802               USEA=0D0
27803               DSEA=0D0
27804               STR=0D0
27805               CHM=0D0
27806               BOT=0D0
27807               TOP=0D0
27808               GLU=0D0
27809             ENDIF
27810           ENDIF
27811           VINT(231)=Q2MIN
27812           XPQ(0)=GLU
27813           XPQ(1)=DNV
27814           XPQ(-1)=DNV
27815           XPQ(2)=UPV
27816           XPQ(-2)=UPV
27817           XPQ(3)=STR
27818           XPQ(-3)=STR
27819           XPQ(4)=CHM
27820           XPQ(-4)=CHM
27821           XPQ(5)=BOT
27822           XPQ(-5)=BOT
27823           XPQ(6)=TOP
27824           XPQ(-6)=TOP
27825         ELSE
27826           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
27827         ENDIF
27828  
27829 C...Pion/gammaVDM parton distribution call.
27830       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
27831      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
27832         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
27833      &  MSTP(55).LE.12) THEN
27834           ISET=1+MOD(MSTP(55)-1,4)
27835           Q2MX=Q2
27836           P2MX=0.36D0
27837           IF(ISET.GE.3) P2MX=4.0D0
27838           IF(MSTP(57).EQ.0) Q2MX=P2MX
27839           P2=0D0
27840           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27841           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
27842           DO 150 KFL=-6,6
27843             XPQ(KFL)=XPVMD(KFL)
27844   150     CONTINUE
27845           VINT(231)=P2MX
27846         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
27847           CALL PYPDPI(X,Q2,XPPI)
27848           DO 160 KFL=-6,6
27849             XPQ(KFL)=XPPI(KFL)
27850   160     CONTINUE
27851         ELSEIF(MSTP(54).EQ.2) THEN
27852 C...Call PDFLIB parton distributions.
27853           PARM(1)='NPTYPE'
27854           VALUE(1)=2
27855           PARM(2)='NGROUP'
27856           VALUE(2)=MSTP(53)/1000
27857           PARM(3)='NSET'
27858           VALUE(3)=MOD(MSTP(53),1000)
27859           IF(MINT(93).NE.2000000+MSTP(53)) THEN
27860             CALL PDFSET(PARM,VALUE)
27861             MINT(93)=2000000+MSTP(53)
27862           ENDIF
27863           XX=X
27864           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
27865           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
27866           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
27867           VINT(231)=Q2MIN
27868           XPQ(0)=GLU
27869           XPQ(1)=DSEA
27870           XPQ(-1)=UPV+DSEA
27871           XPQ(2)=UPV+USEA
27872           XPQ(-2)=USEA
27873           XPQ(3)=STR
27874           XPQ(-3)=STR
27875           XPQ(4)=CHM
27876           XPQ(-4)=CHM
27877           XPQ(5)=BOT
27878           XPQ(-5)=BOT
27879           XPQ(6)=TOP
27880           XPQ(-6)=TOP
27881         ELSE
27882           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
27883         ENDIF
27884  
27885 C...Anomalous photon parton distribution call.
27886       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
27887         Q2MX=Q2
27888         P2MX=PARP(15)**2
27889         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
27890           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
27891           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
27892           IF(MSTP(57).EQ.0) Q2MX=P2MX
27893           P2=0D0
27894           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27895           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
27896           DO 170 KFL=-6,6
27897             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
27898   170     CONTINUE
27899           VINT(231)=P2MX
27900         ELSEIF(MSTP(56).EQ.1) THEN
27901           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
27902           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
27903           IF(MSTP(57).EQ.0) Q2MX=P2MX
27904           P2=0D0
27905           IF(VINT(120).LT.0D0) P2=VINT(120)**2
27906           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
27907           DO 180 KFL=-6,6
27908             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
27909   180     CONTINUE
27910           VINT(231)=P2MX
27911         ELSEIF(MSTP(56).EQ.2) THEN
27912           IF(MSTP(57).EQ.0) Q2MX=P2MX
27913           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
27914           DO 190 KFL=-6,6
27915             XPQ(KFL)=XPGA(KFL)
27916   190     CONTINUE
27917           VINT(231)=P2MX
27918         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
27919           IF(MSTP(57).EQ.0) Q2MX=P2MX
27920           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
27921           DO 200 KFL=-6,6
27922             XPQ(KFL)=XPGA(KFL)
27923   200     CONTINUE
27924           VINT(231)=P2MX
27925         ELSE
27926   210     RKF=11D0*PYR(0)
27927           KFR=1
27928           IF(RKF.GT.1D0) KFR=2
27929           IF(RKF.GT.5D0) KFR=3
27930           IF(RKF.GT.6D0) KFR=4
27931           IF(RKF.GT.10D0) KFR=5
27932           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 210
27933           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 210
27934           IF(MSTP(57).EQ.0) Q2MX=P2MX
27935           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
27936           DO 220 KFL=-6,6
27937             XPQ(KFL)=XPGA(KFL)
27938   220     CONTINUE
27939           VINT(231)=P2MX
27940         ENDIF
27941  
27942 C...Proton parton distribution call.
27943       ELSE
27944         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
27945           CALL PYPDPR(X,Q2,XPPR)
27946           DO 230 KFL=-6,6
27947             XPQ(KFL)=XPPR(KFL)
27948   230     CONTINUE
27949         ELSEIF(MSTP(52).EQ.2) THEN
27950 C...Call PDFLIB parton distributions.
27951           PARM(1)='NPTYPE'
27952           VALUE(1)=1
27953           PARM(2)='NGROUP'
27954           VALUE(2)=MSTP(51)/1000
27955           PARM(3)='NSET'
27956           VALUE(3)=MOD(MSTP(51),1000)
27957           IF(MINT(93).NE.1000000+MSTP(51)) THEN
27958             CALL PDFSET_ALICE(PARM,VALUE)
27959             MINT(93)=1000000+MSTP(51)
27960           ENDIF
27961           XX=X
27962           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
27963           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
27964           CALL STRUCTM_ALICE
27965      +         (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
27966           VINT(231)=Q2MIN
27967           XPQ(0)=GLU
27968           XPQ(1)=DNV+DSEA
27969           XPQ(-1)=DSEA
27970           XPQ(2)=UPV+USEA
27971           XPQ(-2)=USEA
27972           XPQ(3)=STR
27973           XPQ(-3)=STR
27974           XPQ(4)=CHM
27975           XPQ(-4)=CHM
27976           XPQ(5)=BOT
27977           XPQ(-5)=BOT
27978           XPQ(6)=TOP
27979           XPQ(-6)=TOP
27980         ELSE
27981           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
27982         ENDIF
27983       ENDIF
27984  
27985 C...Isospin average for pi0/gammaVDM.
27986       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
27987         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
27988           XPV=XPQ(2)-XPQ(1)
27989           XPQ(2)=XPQ(1)
27990           XPQ(-2)=XPQ(-1)
27991         ELSE
27992           XPS=0.5D0*(XPQ(1)+XPQ(-2))
27993           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
27994           XPQ(2)=XPS
27995           XPQ(-1)=XPS
27996         ENDIF
27997         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
27998           XPQ(1)=XPQ(1)+0.2D0*XPV
27999           XPQ(-1)=XPQ(-1)+0.2D0*XPV
28000           XPQ(2)=XPQ(2)+0.8D0*XPV
28001           XPQ(-2)=XPQ(-2)+0.8D0*XPV
28002         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
28003           XPQ(3)=XPQ(3)+XPV
28004           XPQ(-3)=XPQ(-3)+XPV
28005         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
28006           XPQ(4)=XPQ(4)+XPV
28007           XPQ(-4)=XPQ(-4)+XPV
28008           IF(MSTP(55).GE.9) THEN
28009             DO 240 KFL=-6,6
28010               XPQ(KFL)=0D0
28011   240       CONTINUE
28012           ENDIF
28013         ELSE
28014           XPQ(1)=XPQ(1)+0.5D0*XPV
28015           XPQ(-1)=XPQ(-1)+0.5D0*XPV
28016           XPQ(2)=XPQ(2)+0.5D0*XPV
28017           XPQ(-2)=XPQ(-2)+0.5D0*XPV
28018         ENDIF
28019  
28020 C...Rescale for gammaVDM by effective gamma -> rho coupling.
28021 C+++Do not rescale?
28022         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
28023      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
28024           DO 250 KFL=-6,6
28025             XPQ(KFL)=VINT(281)*XPQ(KFL)
28026   250     CONTINUE
28027           VINT(232)=VINT(281)*XPV
28028         ENDIF
28029  
28030 C...Simple recipes for kaons.
28031       ELSEIF(KFA.EQ.321) THEN
28032         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
28033         XPQ(-1)=XPQ(1)
28034       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
28035         XPS=0.5D0*(XPQ(1)+XPQ(-2))
28036         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
28037         XPQ(2)=XPS
28038         XPQ(-1)=XPS
28039         XPQ(1)=XPQ(1)+0.5D0*XPV
28040         XPQ(-1)=XPQ(-1)+0.5D0*XPV
28041         XPQ(3)=XPQ(3)+0.5D0*XPV
28042         XPQ(-3)=XPQ(-3)+0.5D0*XPV
28043  
28044 C...Isospin conjugation for neutron.
28045       ELSEIF(KFA.EQ.2112) THEN
28046         XPS=XPQ(1)
28047         XPQ(1)=XPQ(2)
28048         XPQ(2)=XPS
28049         XPS=XPQ(-1)
28050         XPQ(-1)=XPQ(-2)
28051         XPQ(-2)=XPS
28052  
28053 C...Simple recipes for hyperon (average valence parton distribution).
28054       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
28055      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
28056         XPVAL=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
28057         XPSEA=0.5D0*(XPQ(-1)+XPQ(-2))
28058         XPQ(1)=XPSEA
28059         XPQ(2)=XPSEA
28060         XPQ(-1)=XPSEA
28061         XPQ(-2)=XPSEA
28062         XPQ(KFA/1000)=XPQ(KFA/1000)+XPVAL
28063         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPVAL
28064         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPVAL
28065       ENDIF
28066  
28067 C...Charge conjugation for antiparticle.
28068       IF(KF.LT.0) THEN
28069         DO 260 KFL=1,25
28070           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 260
28071           XPS=XPQ(KFL)
28072           XPQ(KFL)=XPQ(-KFL)
28073           XPQ(-KFL)=XPS
28074   260   CONTINUE
28075       ENDIF
28076  
28077 C...Allow gluon also in position 21.
28078       XPQ(21)=XPQ(0)
28079  
28080 C...Check positivity and reset above maximum allowed flavour.
28081       DO 270 KFL=-25,25
28082         XPQ(KFL)=MAX(0D0,XPQ(KFL))
28083         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
28084   270 CONTINUE
28085  
28086 C...Formats for error printouts.
28087  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
28088  5100 FORMAT(' Error: illegal particle code for parton distribution;',
28089      &' KF =',I5)
28090  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
28091      &3I5)
28092  
28093       RETURN
28094       END
28095  
28096 C*********************************************************************
28097  
28098 C...PYPDFL
28099 C...Gives proton parton distribution at small x and/or Q^2 according to
28100 C...correct limiting behaviour.
28101  
28102       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
28103  
28104 C...Double precision and integer declarations.
28105       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28106       IMPLICIT INTEGER(I-N)
28107       INTEGER PYK,PYCHGE,PYCOMP
28108 C...Commonblocks.
28109       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28110       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28111       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28112       COMMON/PYINT1/MINT(400),VINT(400)
28113       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
28114 C...Local arrays.
28115       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
28116       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
28117  
28118 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
28119       MINT(92)=0
28120       KFA=IABS(KF)
28121       IACC=0
28122       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
28123       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
28124       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
28125       IF(IACC.EQ.0) THEN
28126         CALL PYPDFU(KF,X,Q2,XPQ)
28127         RETURN
28128       ENDIF
28129  
28130 C...Reset. Check x.
28131       DO 100 KFL=-25,25
28132         XPQ(KFL)=0D0
28133   100 CONTINUE
28134       IF(X.LE.0D0.OR.X.GE.1D0) THEN
28135         WRITE(MSTU(11),5000) X
28136         RETURN
28137       ENDIF
28138  
28139 C...Define valence content.
28140       KFC=KF
28141       NV1=2
28142       NV2=1
28143       IF(KF.EQ.2212) THEN
28144         KFV1=2
28145         KFV2=1
28146       ELSEIF(KF.EQ.-2212) THEN
28147         KFV1=-2
28148         KFV2=-1
28149       ELSEIF(KF.EQ.2112) THEN
28150         KFV1=1
28151         KFV2=2
28152       ELSEIF(KF.EQ.-2112) THEN
28153         KFV1=-1
28154         KFV2=-2
28155       ELSEIF(KF.EQ.211) THEN
28156         NV1=1
28157         KFV1=2
28158         KFV2=-1
28159       ELSEIF(KF.EQ.-211) THEN
28160         NV1=1
28161         KFV1=-2
28162         KFV2=1
28163       ELSEIF(MINT(105).LE.223) THEN
28164         KFV1=1
28165         WTV1=0.2D0
28166         KFV2=2
28167         WTV2=0.8D0
28168       ELSEIF(MINT(105).EQ.333) THEN
28169         KFV1=3
28170         WTV1=1.0D0
28171         KFV2=1
28172         WTV2=0.0D0
28173       ELSEIF(MINT(105).EQ.443) THEN
28174         KFV1=4
28175         WTV1=1.0D0
28176         KFV2=1
28177         WTV2=0.0D0
28178       ENDIF
28179  
28180 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
28181       CALL PYPDFU(KFC,X,Q2,XPA)
28182       Q2MN=MAX(3D0,VINT(231))
28183       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
28184       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
28185  
28186 C...Large Q2 and large x: naive call is enough.
28187       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
28188         DO 110 KFL=-25,25
28189           XPQ(KFL)=XPA(KFL)
28190   110   CONTINUE
28191         MINT(92)=1
28192  
28193 C...Small Q2 and large x: dampen boundary value.
28194       ELSEIF(X.GT.XMN) THEN
28195  
28196 C...Evaluate at boundary and define dampening factors.
28197         CALL PYPDFU(KFC,X,Q2MN,XPA)
28198         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
28199         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
28200  
28201 C...Separate valence and sea parts of parton distribution.
28202         IF(KFA.NE.22) THEN
28203           XFV1=XPA(KFV1)-XPA(-KFV1)
28204           XPA(KFV1)=XPA(-KFV1)
28205           XFV2=XPA(KFV2)-XPA(-KFV2)
28206           XPA(KFV2)=XPA(-KFV2)
28207         ELSE
28208           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
28209           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
28210           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
28211           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
28212         ENDIF
28213  
28214 C...Dampen valence and sea separately. Put back together.
28215         DO 120 KFL=-25,25
28216           XPQ(KFL)=FS*XPA(KFL)
28217   120   CONTINUE
28218         IF(KFA.NE.22) THEN
28219           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
28220           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
28221         ELSE
28222           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
28223           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
28224           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
28225           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
28226         ENDIF
28227         MINT(92)=2
28228  
28229 C...Large Q2 and small x: interpolate behaviour.
28230       ELSEIF(Q2.GT.Q2MN) THEN
28231  
28232 C...Evaluate at extremes and define coefficients for interpolation.
28233         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
28234         VI232A=VINT(232)
28235         CALL PYPDFU(KFC,X,Q2B,XPB)
28236         VI232B=VINT(232)
28237         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
28238         FVA=(X/XMN)**0.45D0*FLA
28239         FSA=(X/XMN)**(-0.08D0)*FLA
28240         FB=1D0-FLA
28241  
28242 C...Separate valence and sea parts of parton distribution.
28243         IF(KFA.NE.22) THEN
28244           XFVA1=XPA(KFV1)-XPA(-KFV1)
28245           XPA(KFV1)=XPA(-KFV1)
28246           XFVA2=XPA(KFV2)-XPA(-KFV2)
28247           XPA(KFV2)=XPA(-KFV2)
28248           XFVB1=XPB(KFV1)-XPB(-KFV1)
28249           XPB(KFV1)=XPB(-KFV1)
28250           XFVB2=XPB(KFV2)-XPB(-KFV2)
28251           XPB(KFV2)=XPB(-KFV2)
28252         ELSE
28253           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
28254           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
28255           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
28256           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
28257           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
28258           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
28259           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
28260           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
28261         ENDIF
28262  
28263 C...Interpolate for valence and sea. Put back together.
28264         DO 130 KFL=-25,25
28265           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
28266   130   CONTINUE
28267         IF(KFA.NE.22) THEN
28268           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
28269           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
28270         ELSE
28271           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
28272           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
28273           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
28274           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
28275         ENDIF
28276         MINT(92)=3
28277  
28278 C...Small Q2 and small x: dampen boundary value and add term.
28279       ELSE
28280  
28281 C...Evaluate at boundary and define dampening factors.
28282         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
28283         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
28284         FA=1D0-FB
28285         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
28286         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
28287         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
28288         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
28289         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
28290         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
28291  
28292 C...Separate valence and sea parts of parton distribution.
28293         IF(KFA.NE.22) THEN
28294           XFV1=XPA(KFV1)-XPA(-KFV1)
28295           XPA(KFV1)=XPA(-KFV1)
28296           XFV2=XPA(KFV2)-XPA(-KFV2)
28297           XPA(KFV2)=XPA(-KFV2)
28298         ELSE
28299           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
28300           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
28301           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
28302           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
28303         ENDIF
28304  
28305 C...Dampen valence and sea separately. Add constant terms.
28306 C...Put back together.
28307         DO 140 KFL=-25,25
28308           XPQ(KFL)=FSA*XPA(KFL)
28309   140   CONTINUE
28310         IF(KFA.NE.22) THEN
28311           DO 150 KFL=-3,3
28312             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
28313   150     CONTINUE
28314           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
28315           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
28316         ELSE
28317           DO 160 KFL=-3,3
28318             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
28319   160     CONTINUE
28320           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
28321           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
28322           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
28323           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
28324         ENDIF
28325         XPQ(21)=XPQ(0)
28326         MINT(92)=4
28327       ENDIF
28328  
28329 C...Format for error printout.
28330  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
28331  
28332       RETURN
28333       END
28334  
28335 C*********************************************************************
28336  
28337 C...PYPDEL
28338 C...Gives electron (or muon, or tau) parton distribution.
28339  
28340       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
28341  
28342 C...Double precision and integer declarations.
28343       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28344       IMPLICIT INTEGER(I-N)
28345       INTEGER PYK,PYCHGE,PYCOMP
28346 C...Commonblocks.
28347       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28348       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28349       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28350       COMMON/PYINT1/MINT(400),VINT(400)
28351       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
28352 C...Local arrays.
28353       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
28354  
28355 C...Interface to PDFLIB.
28356       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
28357       SAVE /W50513/
28358       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
28359      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
28360       CHARACTER*20 PARM(20)
28361       DATA VALUE/20*0D0/,PARM/20*' '/
28362  
28363 C...Some common constants.
28364       DO 100 KFL=-25,25
28365         XPEL(KFL)=0D0
28366   100 CONTINUE
28367       AEM=PARU(101)
28368       PME=PMAS(11,1)
28369       IF(KFA.EQ.13) PME=PMAS(13,1)
28370       IF(KFA.EQ.15) PME=PMAS(15,1)
28371       XL=LOG(MAX(1D-10,X))
28372       X1L=LOG(MAX(1D-10,1D0-X))
28373       HLE=LOG(MAX(3D0,Q2/PME**2))
28374       HBE2=(AEM/PARU(1))*(HLE-1D0)
28375  
28376 C...Electron inside electron, see R. Kleiss et al., in Z physics at
28377 C...LEP 1, CERN 89-08, p. 34
28378       IF(MSTP(59).LE.1) THEN
28379         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
28380      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
28381         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
28382      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
28383      &  4D0*XL/(1D0-X)-5D0-X)
28384       ELSE
28385         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
28386      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
28387      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
28388       ENDIF
28389 C...Zero distribution for very large x and rescale it for intermediate.
28390       IF(X.GT.1D0-1D-10) THEN
28391         HEE=0D0
28392       ELSEIF(X.GT.1D0-1D-7) THEN
28393         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
28394       ENDIF
28395       XPEL(KFA)=X*HEE
28396  
28397 C...Photon and (transverse) W- inside electron.
28398       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
28399       IF(MSTP(13).LE.1) THEN
28400         HLG=HLE
28401       ELSE
28402         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
28403       ENDIF
28404       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
28405       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
28406       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
28407  
28408 C...Electron or positron inside photon inside electron.
28409       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
28410         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
28411      &  2D0*X*(1D0+X)*XL)
28412         XPEL(11)=XPEL(11)+XFSEA
28413         XPEL(-11)=XFSEA
28414  
28415 C...Initialize PDFLIB photon parton distributions.
28416         IF(MSTP(56).EQ.2) THEN
28417           PARM(1)='NPTYPE'
28418           VALUE(1)=3
28419           PARM(2)='NGROUP'
28420           VALUE(2)=MSTP(55)/1000
28421           PARM(3)='NSET'
28422           VALUE(3)=MOD(MSTP(55),1000)
28423           IF(MINT(93).NE.3000000+MSTP(55)) THEN
28424             CALL PDFSET(PARM,VALUE)
28425             MINT(93)=3000000+MSTP(55)
28426           ENDIF
28427         ENDIF
28428  
28429 C...Quarks and gluons inside photon inside electron:
28430 C...numerical convolution required.
28431         DO 110 KFL=0,6
28432           SXP(KFL)=0D0
28433   110   CONTINUE
28434         SUMXPP=0D0
28435         ITER=-1
28436   120   ITER=ITER+1
28437         SUMXP=SUMXPP
28438         NSTP=2**(ITER-1)
28439         IF(ITER.EQ.0) NSTP=2
28440         DO 130 KFL=0,6
28441           SXP(KFL)=0.5D0*SXP(KFL)
28442   130   CONTINUE
28443         WTSTP=0.5D0/NSTP
28444         IF(ITER.EQ.0) WTSTP=0.5D0
28445 C...Pick grid of x_{gamma} values logarithmically even.
28446         DO 150 ISTP=1,NSTP
28447           IF(ITER.EQ.0) THEN
28448             XLE=XL*(ISTP-1)
28449           ELSE
28450             XLE=XL*(ISTP-0.5D0)/NSTP
28451           ENDIF
28452           XE=MIN(1D0-1D-10,EXP(XLE))
28453           XG=MIN(1D0-1D-10,X/XE)
28454 C...Evaluate photon inside electron parton distribution for convolution.
28455           XPGP=1D0+(1D0-XE)**2
28456           IF(MSTP(13).LE.1) THEN
28457             XPGP=XPGP*HLE
28458           ELSE
28459             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
28460           ENDIF
28461 C...Evaluate photon parton distributions for convolution.
28462           IF(MSTP(56).EQ.1) THEN
28463             IF(MSTP(55).EQ.1) THEN
28464               CALL PYPDGA(XG,Q2,XPGA)
28465             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
28466               Q2MX=Q2
28467               P2MX=0.36D0
28468               IF(MSTP(55).GE.7) P2MX=4.0D0
28469               IF(MSTP(57).EQ.0) Q2MX=P2MX
28470               P2=0D0
28471               IF(VINT(120).LT.0D0) P2=VINT(120)**2
28472               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
28473               VINT(231)=P2MX
28474             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
28475               Q2MX=Q2
28476               P2MX=0.36D0
28477               IF(MSTP(55).GE.11) P2MX=4.0D0
28478               IF(MSTP(57).EQ.0) Q2MX=P2MX
28479               P2=0D0
28480               IF(VINT(120).LT.0D0) P2=VINT(120)**2
28481               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
28482               VINT(231)=P2MX
28483             ENDIF
28484             DO 140 KFL=0,5
28485               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
28486   140       CONTINUE
28487           ELSEIF(MSTP(56).EQ.2) THEN
28488 C...Call PDFLIB parton distributions.
28489             XX=XG
28490             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
28491             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
28492             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
28493             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
28494             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
28495             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
28496             SXP(3)=SXP(3)+WTSTP*XPGP*STR
28497             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
28498             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
28499             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
28500           ENDIF
28501   150   CONTINUE
28502         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
28503         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
28504      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
28505  
28506 C...Put convolution into output arrays.
28507         FCONV=AEMP*(-XL)
28508         XPEL(0)=FCONV*SXP(0)
28509         DO 160 KFL=1,6
28510           XPEL(KFL)=FCONV*SXP(KFL)
28511           XPEL(-KFL)=XPEL(KFL)
28512   160   CONTINUE
28513       ENDIF
28514  
28515       RETURN
28516       END
28517  
28518 C*********************************************************************
28519  
28520 C...PYPDGA
28521 C...Gives photon parton distribution.
28522  
28523       SUBROUTINE PYPDGA(X,Q2,XPGA)
28524  
28525 C...Double precision and integer declarations.
28526       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28527       IMPLICIT INTEGER(I-N)
28528       INTEGER PYK,PYCHGE,PYCOMP
28529 C...Commonblocks.
28530       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28531       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28532       COMMON/PYINT1/MINT(400),VINT(400)
28533       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
28534 C...Local arrays.
28535       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
28536      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
28537      &DGCS(4,3),DGDS(4,3),DGES(4,3)
28538  
28539 C...The following data lines are coefficients needed in the
28540 C...Drees and Grassie photon parton distribution parametrization.
28541       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
28542      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
28543       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
28544      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
28545       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
28546      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
28547       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
28548      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
28549       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
28550      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
28551       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
28552      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
28553       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
28554      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
28555       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
28556      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
28557       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
28558      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
28559       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
28560      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
28561       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
28562      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
28563       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
28564      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
28565       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
28566      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
28567  
28568 C...Photon parton distribution from Drees and Grassie.
28569 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
28570       DO 100 KFL=-6,6
28571         XPGA(KFL)=0D0
28572   100 CONTINUE
28573       VINT(231)=1D0
28574       IF(MSTP(57).LE.0) THEN
28575         T=LOG(1D0/0.16D0)
28576       ELSE
28577         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
28578       ENDIF
28579       X1=1D0-X
28580       NF=3
28581       IF(Q2.GT.25D0) NF=4
28582       IF(Q2.GT.300D0) NF=5
28583       NFE=NF-2
28584       AEM=PARU(101)
28585  
28586 C...Evaluate gluon content.
28587       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
28588       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
28589       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
28590       XPGL=DGA*X**DGB*X1**DGC
28591  
28592 C...Evaluate up- and down-type quark content.
28593       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
28594       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
28595       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
28596       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
28597       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
28598       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
28599       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
28600       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
28601       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
28602       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
28603       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
28604       DGF=9D0
28605       IF(NF.EQ.4) DGF=10D0
28606       IF(NF.EQ.5) DGF=55D0/6D0
28607       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
28608       IF(NF.LE.3) THEN
28609         XPQU=(XPQS+9D0*XPQN)/6D0
28610         XPQD=(XPQS-4.5D0*XPQN)/6D0
28611       ELSEIF(NF.EQ.4) THEN
28612         XPQU=(XPQS+6D0*XPQN)/8D0
28613         XPQD=(XPQS-6D0*XPQN)/8D0
28614       ELSE
28615         XPQU=(XPQS+7.5D0*XPQN)/10D0
28616         XPQD=(XPQS-5D0*XPQN)/10D0
28617       ENDIF
28618  
28619 C...Put into output arrays.
28620       XPGA(0)=AEM*XPGL
28621       XPGA(1)=AEM*XPQD
28622       XPGA(2)=AEM*XPQU
28623       XPGA(3)=AEM*XPQD
28624       IF(NF.GE.4) XPGA(4)=AEM*XPQU
28625       IF(NF.GE.5) XPGA(5)=AEM*XPQD
28626       DO 110 KFL=1,6
28627         XPGA(-KFL)=XPGA(KFL)
28628   110 CONTINUE
28629  
28630       RETURN
28631       END
28632  
28633 C*********************************************************************
28634  
28635 C...PYGGAM
28636 C...Constructs the F2 and parton distributions of the photon
28637 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
28638 C...For F2, c and b are included by the Bethe-Heitler formula;
28639 C...in the 'MSbar' scheme additionally a Cgamma term is added.
28640 C...Contains the SaS sets 1D, 1M, 2D and 2M.
28641 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
28642  
28643       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
28644  
28645 C...Double precision and integer declarations.
28646       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28647       IMPLICIT INTEGER(I-N)
28648       INTEGER PYK,PYCHGE,PYCOMP
28649 C...Commonblocks.
28650       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
28651      &XPDIR(-6:6)
28652       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
28653       SAVE /PYINT8/,/PYINT9/
28654 C...Local arrays.
28655       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
28656 C...Charm and bottom masses (low to compensate for J/psi etc.).
28657       DATA PMC/1.3D0/, PMB/4.6D0/
28658 C...alpha_em and alpha_em/(2*pi).
28659       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
28660 C...Lambda value for 4 flavours.
28661       DATA ALAM/0.20D0/
28662 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
28663       DATA FRACU/0.8D0/
28664 C...VMD couplings f_V**2/(4*pi).
28665       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
28666 C...Masses for rho (=omega) and phi.
28667       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
28668 C...Number of points in integration for IP2=1.
28669       DATA NSTEP/100/
28670  
28671 C...Reset output.
28672       F2GM=0D0
28673       DO 100 KFL=-6,6
28674         XPDFGM(KFL)=0D0
28675         XPVMD(KFL)=0D0
28676         XPANL(KFL)=0D0
28677         XPANH(KFL)=0D0
28678         XPBEH(KFL)=0D0
28679         XPDIR(KFL)=0D0
28680         VXPVMD(KFL)=0D0
28681         VXPANL(KFL)=0D0
28682         VXPANH(KFL)=0D0
28683         VXPDGM(KFL)=0D0
28684   100 CONTINUE
28685  
28686 C...Set Q0 cut-off parameter as function of set used.
28687       IF(ISET.LE.2) THEN
28688         Q0=0.6D0
28689       ELSE
28690         Q0=2D0
28691       ENDIF
28692       Q02=Q0**2
28693  
28694 C...Scale choice for off-shell photon; common factors.
28695       Q2A=Q2
28696       FACNOR=1D0
28697       IF(IP2.EQ.1) THEN
28698         P2MX=P2+Q02
28699         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
28700         FACNOR=LOG(Q2/Q02)/NSTEP
28701       ELSEIF(IP2.EQ.2) THEN
28702         P2MX=MAX(P2,Q02)
28703       ELSEIF(IP2.EQ.3) THEN
28704         P2MX=P2+Q02
28705         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
28706       ELSEIF(IP2.EQ.4) THEN
28707         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28708      &  ((Q2+P2)*(Q02+P2)))
28709       ELSEIF(IP2.EQ.5) THEN
28710         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28711      &  ((Q2+P2)*(Q02+P2)))
28712         P2MX=Q0*SQRT(P2MXA)
28713         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
28714       ELSEIF(IP2.EQ.6) THEN
28715         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28716      &  ((Q2+P2)*(Q02+P2)))
28717         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
28718       ELSE
28719         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
28720      &  ((Q2+P2)*(Q02+P2)))
28721         P2MX=Q0*SQRT(P2MXA)
28722         P2MXB=P2MX
28723         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
28724         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
28725         IF(ABS(Q2-Q02).GT.1D-6) THEN
28726           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
28727         ELSEIF(P2.LT.Q02) THEN
28728           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
28729         ELSE
28730           FACNOR=1D0
28731         ENDIF
28732       ENDIF
28733  
28734 C...Call VMD parametrization for d quark and use to give rho, omega,
28735 C...phi. Note dipole dampening for off-shell photon.
28736       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28737       XFVAL=VXPGA(1)
28738       XPGA(1)=XPGA(2)
28739       XPGA(-1)=XPGA(-2)
28740       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
28741       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
28742       DO 110 KFL=-5,5
28743         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
28744   110 CONTINUE
28745       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
28746       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
28747       XPVMD(3)=XPVMD(3)+FACS*XFVAL
28748       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
28749       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
28750       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
28751       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
28752       VXPVMD(2)=FRACU*FACUD*XFVAL
28753       VXPVMD(3)=FACS*XFVAL
28754       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
28755       VXPVMD(-2)=FRACU*FACUD*XFVAL
28756       VXPVMD(-3)=FACS*XFVAL
28757  
28758       IF(IP2.NE.1) THEN
28759 C...Anomalous parametrizations for different strategies
28760 C...for off-shell photons; except full integration.
28761  
28762 C...Call anomalous parametrization for d + u + s.
28763         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28764         DO 120 KFL=-5,5
28765           XPANL(KFL)=FACNOR*XPGA(KFL)
28766           VXPANL(KFL)=FACNOR*VXPGA(KFL)
28767   120   CONTINUE
28768  
28769 C...Call anomalous parametrization for c and b.
28770         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28771         DO 130 KFL=-5,5
28772           XPANH(KFL)=FACNOR*XPGA(KFL)
28773           VXPANH(KFL)=FACNOR*VXPGA(KFL)
28774   130   CONTINUE
28775         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
28776         DO 140 KFL=-5,5
28777           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
28778           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
28779   140   CONTINUE
28780  
28781       ELSE
28782 C...Special option: loop over flavours and integrate over k2.
28783         DO 170 KF=1,5
28784           DO 160 ISTEP=1,NSTEP
28785             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
28786             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
28787      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
28788             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
28789             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
28790             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
28791             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
28792             DO 150 KFL=-5,5
28793               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
28794               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
28795               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
28796               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
28797   150       CONTINUE
28798   160     CONTINUE
28799   170   CONTINUE
28800       ENDIF
28801  
28802 C...Call Bethe-Heitler term expression for charm and bottom.
28803       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
28804       XPBEH(4)=XPBH
28805       XPBEH(-4)=XPBH
28806       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
28807       XPBEH(5)=XPBH
28808       XPBEH(-5)=XPBH
28809  
28810 C...For MSbar subtraction call C^gamma term expression for d, u, s.
28811       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
28812         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
28813         DO 180 KFL=-5,5
28814           XPDIR(KFL)=XPGA(KFL)
28815   180   CONTINUE
28816       ENDIF
28817  
28818 C...Store result in output array.
28819       DO 190 KFL=-5,5
28820         CHSQ=1D0/9D0
28821         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
28822         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
28823         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
28824         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
28825         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
28826   190 CONTINUE
28827  
28828       RETURN
28829       END
28830  
28831 C*********************************************************************
28832  
28833 C...PYGVMD
28834 C...Evaluates the VMD parton distributions of a photon,
28835 C...evolved homogeneously from an initial scale P2 to Q2.
28836 C...Does not include dipole suppression factor.
28837 C...ISET is parton distribution set, see above;
28838 C...additionally ISET=0 is used for the evolution of an anomalous photon
28839 C...which branched at a scale P2 and then evolved homogeneously to Q2.
28840 C...ALAM is the 4-flavour Lambda, which is automatically converted
28841 C...to 3- and 5-flavour equivalents as needed.
28842 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
28843  
28844       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
28845  
28846 C...Double precision and integer declarations.
28847       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28848       IMPLICIT INTEGER(I-N)
28849       INTEGER PYK,PYCHGE,PYCOMP
28850 C...Local arrays and data.
28851       DIMENSION XPGA(-6:6), VXPGA(-6:6)
28852       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
28853  
28854 C...Reset output.
28855       DO 100 KFL=-6,6
28856         XPGA(KFL)=0D0
28857         VXPGA(KFL)=0D0
28858   100 CONTINUE
28859       KFA=IABS(KF)
28860  
28861 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
28862       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
28863       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
28864       P2EFF=MAX(P2,1.2D0*ALAM3**2)
28865       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
28866       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
28867       Q2EFF=MAX(Q2,P2EFF)
28868  
28869 C...Find number of flavours at lower and upper scale.
28870       NFP=4
28871       IF(P2EFF.LT.PMC**2) NFP=3
28872       IF(P2EFF.GT.PMB**2) NFP=5
28873       NFQ=4
28874       IF(Q2EFF.LT.PMC**2) NFQ=3
28875       IF(Q2EFF.GT.PMB**2) NFQ=5
28876  
28877 C...Find s as sum of 3-, 4- and 5-flavour parts.
28878       S=0D0
28879       IF(NFP.EQ.3) THEN
28880         Q2DIV=PMC**2
28881         IF(NFQ.EQ.3) Q2DIV=Q2EFF
28882         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
28883       ENDIF
28884       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
28885         P2DIV=P2EFF
28886         IF(NFP.EQ.3) P2DIV=PMC**2
28887         Q2DIV=Q2EFF
28888         IF(NFQ.EQ.5) Q2DIV=PMB**2
28889         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
28890       ENDIF
28891       IF(NFQ.EQ.5) THEN
28892         P2DIV=PMB**2
28893         IF(NFP.EQ.5) P2DIV=P2EFF
28894         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
28895       ENDIF
28896  
28897 C...Calculate frequent combinations of x and s.
28898       X1=1D0-X
28899       XL=-LOG(X)
28900       S2=S**2
28901       S3=S**3
28902       S4=S**4
28903  
28904 C...Evaluate homogeneous anomalous parton distributions below or
28905 C...above threshold.
28906       IF(ISET.EQ.0) THEN
28907         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28908      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28909           XVAL = X * 1.5D0 * (X**2+X1**2)
28910           XGLU = 0D0
28911           XSEA = 0D0
28912         ELSE
28913           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
28914      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
28915      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
28916      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
28917           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
28918      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
28919      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
28920           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
28921      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
28922      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
28923      &    (2D0*X-1D0)*X*XL**2)
28924         ENDIF
28925  
28926 C...Evaluate set 1D parton distributions below or above threshold.
28927       ELSEIF(ISET.EQ.1) THEN
28928         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28929      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28930           XVAL = 1.294D0 * X**0.80D0 * X1**0.76D0
28931           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
28932           XSEA = 0.100D0 * X1**3.76D0
28933         ELSE
28934           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
28935      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
28936           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
28937      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
28938      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
28939      &    X**0.40D0 * X1**(1.76D0+3D0*S)
28940           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
28941      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
28942      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
28943           XSEA0 = 0.100D0 * X1**3.76D0
28944         ENDIF
28945  
28946 C...Evaluate set 1M parton distributions below or above threshold.
28947       ELSEIF(ISET.EQ.2) THEN
28948         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28949      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28950           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
28951           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
28952           XSEA = 0D0
28953         ELSE
28954           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
28955      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
28956           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
28957      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
28958      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
28959      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
28960           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
28961      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
28962      &    XL**(2.8D0*S)
28963           XSEA0 = 0D0
28964         ENDIF
28965  
28966 C...Evaluate set 2D parton distributions below or above threshold.
28967       ELSEIF(ISET.EQ.3) THEN
28968         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28969      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28970           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
28971           XGLU = 1.925D0 * X1**2
28972           XSEA = 0.242D0 * X1**4
28973         ELSE
28974           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
28975      &    X**(0.46D0+0.25D0*S) *
28976      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
28977      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
28978           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
28979      &    EXP(-18.67D0*S) *
28980      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
28981      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
28982      &    XL**(9.3D0*S/(1D0+1.7D0*S))
28983           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
28984      &    (1D0-0.607D0*S+21.95D0*S2) *
28985      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
28986           XSEA0 = 0.242D0 * X1**4
28987         ENDIF
28988  
28989 C...Evaluate set 2M parton distributions below or above threshold.
28990       ELSEIF(ISET.EQ.4) THEN
28991         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
28992      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
28993           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
28994           XGLU = 1.808D0 * X1**2
28995           XSEA = 0.209D0 * X1**4
28996         ELSE
28997           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
28998      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
28999      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
29000      &    XL**(5.15D0*S/(1D0+2D0*S)) +
29001      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
29002           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
29003      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
29004      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
29005      &    XL**(10.9D0*S/(1D0+2.5D0*S))
29006           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
29007      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
29008      &    X1**(4D0+S) * XL**(0.45D0*S)
29009           XSEA0 = 0.209D0 * X1**4
29010         ENDIF
29011       ENDIF
29012  
29013 C...Threshold factors for c and b sea.
29014       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
29015       XCHM=0D0
29016       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29017         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29018         IF(ISET.EQ.0) THEN
29019           XCHM=XSEA*(1D0-(SCH/SLL)**2)
29020         ELSE
29021           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
29022         ENDIF
29023       ENDIF
29024       XBOT=0D0
29025       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29026         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29027         IF(ISET.EQ.0) THEN
29028           XBOT=XSEA*(1D0-(SBT/SLL)**2)
29029         ELSE
29030           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
29031         ENDIF
29032       ENDIF
29033  
29034 C...Fill parton distributions.
29035       XPGA(0)=XGLU
29036       XPGA(1)=XSEA
29037       XPGA(2)=XSEA
29038       XPGA(3)=XSEA
29039       XPGA(4)=XCHM
29040       XPGA(5)=XBOT
29041       XPGA(KFA)=XPGA(KFA)+XVAL
29042       DO 110 KFL=1,5
29043         XPGA(-KFL)=XPGA(KFL)
29044   110 CONTINUE
29045       VXPGA(KFA)=XVAL
29046       VXPGA(-KFA)=XVAL
29047  
29048       RETURN
29049       END
29050  
29051 C*********************************************************************
29052  
29053 C...PYGANO
29054 C...Evaluates the parton distributions of the anomalous photon,
29055 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
29056 C...KF=0 gives the sum over (up to) 5 flavours,
29057 C...KF<0 limits to flavours up to abs(KF),
29058 C...KF>0 is for flavour KF only.
29059 C...ALAM is the 4-flavour Lambda, which is automatically converted
29060 C...to 3- and 5-flavour equivalents as needed.
29061 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29062  
29063       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
29064  
29065 C...Double precision and integer declarations.
29066       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29067       IMPLICIT INTEGER(I-N)
29068       INTEGER PYK,PYCHGE,PYCOMP
29069 C...Local arrays and data.
29070       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
29071       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
29072  
29073 C...Reset output.
29074       DO 100 KFL=-6,6
29075         XPGA(KFL)=0D0
29076         VXPGA(KFL)=0D0
29077   100 CONTINUE
29078       IF(Q2.LE.P2) RETURN
29079       KFA=IABS(KF)
29080  
29081 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
29082       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
29083       ALAMSQ(4)=ALAM**2
29084       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
29085       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
29086       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
29087       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
29088       Q2EFF=MAX(Q2,P2EFF)
29089       XL=-LOG(X)
29090  
29091 C...Find number of flavours at lower and upper scale.
29092       NFP=4
29093       IF(P2EFF.LT.PMC**2) NFP=3
29094       IF(P2EFF.GT.PMB**2) NFP=5
29095       NFQ=4
29096       IF(Q2EFF.LT.PMC**2) NFQ=3
29097       IF(Q2EFF.GT.PMB**2) NFQ=5
29098  
29099 C...Define range of flavour loop.
29100       IF(KF.EQ.0) THEN
29101         KFLMN=1
29102         KFLMX=5
29103       ELSEIF(KF.LT.0) THEN
29104         KFLMN=1
29105         KFLMX=KFA
29106       ELSE
29107         KFLMN=KFA
29108         KFLMX=KFA
29109       ENDIF
29110  
29111 C...Loop over flavours the photon can branch into.
29112       DO 110 KFL=KFLMN,KFLMX
29113  
29114 C...Light flavours: calculate t range and (approximate) s range.
29115         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
29116           TDIFF=LOG(Q2EFF/P2EFF)
29117           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29118      &    LOG(P2EFF/ALAMSQ(NFQ)))
29119           IF(NFQ.GT.NFP) THEN
29120             Q2DIV=PMB**2
29121             IF(NFQ.EQ.4) Q2DIV=PMC**2
29122             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
29123      &      LOG(P2EFF/ALAMSQ(NFQ)))
29124             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
29125      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
29126             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
29127           ENDIF
29128           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
29129             Q2DIV=PMC**2
29130             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
29131      &      LOG(P2EFF/ALAMSQ(4)))
29132             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
29133      &      LOG(P2EFF/ALAMSQ(3)))
29134             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
29135           ENDIF
29136  
29137 C...u and s quark do not need a separate treatment when d has been done.
29138         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
29139  
29140 C...Charm: as above, but only include range above c threshold.
29141         ELSEIF(KFL.EQ.4) THEN
29142           IF(Q2.LE.PMC**2) GOTO 110
29143           P2EFF=MAX(P2EFF,PMC**2)
29144           Q2EFF=MAX(Q2EFF,P2EFF)
29145           TDIFF=LOG(Q2EFF/P2EFF)
29146           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29147      &    LOG(P2EFF/ALAMSQ(NFQ)))
29148           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
29149             Q2DIV=PMB**2
29150             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
29151      &      LOG(P2EFF/ALAMSQ(NFQ)))
29152             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
29153      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
29154             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
29155           ENDIF
29156  
29157 C...Bottom: as above, but only include range above b threshold.
29158         ELSEIF(KFL.EQ.5) THEN
29159           IF(Q2.LE.PMB**2) GOTO 110
29160           P2EFF=MAX(P2EFF,PMB**2)
29161           Q2EFF=MAX(Q2,P2EFF)
29162           TDIFF=LOG(Q2EFF/P2EFF)
29163           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
29164      &    LOG(P2EFF/ALAMSQ(NFQ)))
29165         ENDIF
29166  
29167 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
29168         CHSQ=1D0/9D0
29169         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
29170         FAC=AEM2PI*2D0*CHSQ*TDIFF
29171  
29172 C...Evaluate parton distributions (normalized to unit momentum sum).
29173         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
29174           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
29175      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
29176      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
29177      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
29178           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
29179      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
29180      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
29181           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
29182      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
29183      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
29184      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
29185  
29186 C...Threshold factors for c and b sea.
29187           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
29188           XCHM=0D0
29189           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29190             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29191             XCHM=XSEA*(1D0-(SCH/SLL)**3)
29192           ENDIF
29193           XBOT=0D0
29194           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
29195             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
29196             XBOT=XSEA*(1D0-(SBT/SLL)**3)
29197           ENDIF
29198         ENDIF
29199  
29200 C...Add contribution of each valence flavour.
29201         XPGA(0)=XPGA(0)+FAC*XGLU
29202         XPGA(1)=XPGA(1)+FAC*XSEA
29203         XPGA(2)=XPGA(2)+FAC*XSEA
29204         XPGA(3)=XPGA(3)+FAC*XSEA
29205         XPGA(4)=XPGA(4)+FAC*XCHM
29206         XPGA(5)=XPGA(5)+FAC*XBOT
29207         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
29208         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
29209   110 CONTINUE
29210       DO 120 KFL=1,5
29211         XPGA(-KFL)=XPGA(KFL)
29212         VXPGA(-KFL)=VXPGA(KFL)
29213   120 CONTINUE
29214  
29215       RETURN
29216       END
29217  
29218 C*********************************************************************
29219  
29220 C...PYGBEH
29221 C...Evaluates the Bethe-Heitler cross section for heavy flavour
29222 C...production.
29223 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29224  
29225       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
29226  
29227 C...Double precision and integer declarations.
29228       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29229       IMPLICIT INTEGER(I-N)
29230       INTEGER PYK,PYCHGE,PYCOMP
29231  
29232 C...Local data.
29233       DATA AEM2PI/0.0011614D0/
29234  
29235 C...Reset output.
29236       XPBH=0D0
29237       SIGBH=0D0
29238  
29239 C...Check kinematics limits.
29240       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
29241       W2=Q2*(1D0-X)/X-P2
29242       BETA2=1D0-4D0*PM2/W2
29243       IF(BETA2.LT.1D-10) RETURN
29244       BETA=SQRT(BETA2)
29245       RMQ=4D0*PM2/Q2
29246  
29247 C...Simple case: P2 = 0.
29248       IF(P2.LT.1D-4) THEN
29249         IF(BETA.LT.0.99D0) THEN
29250           XBL=LOG((1D0+BETA)/(1D0-BETA))
29251         ELSE
29252           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
29253         ENDIF
29254         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
29255      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
29256  
29257 C...Complicated case: P2 > 0, based on approximation of
29258 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
29259       ELSE
29260         RPQ=1D0-4D0*X**2*P2/Q2
29261         IF(RPQ.GT.1D-10) THEN
29262           RPBE=SQRT(RPQ*BETA2)
29263           IF(RPBE.LT.0.99D0) THEN
29264             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
29265             XBI=2D0*RPBE/(1D0-RPBE**2)
29266           ELSE
29267             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
29268             XBL=LOG((1D0+RPBE)**2/RPBESN)
29269             XBI=2D0*RPBE/RPBESN
29270           ENDIF
29271           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
29272      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
29273      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
29274         ENDIF
29275       ENDIF
29276  
29277 C...Multiply by charge-squared etc. to get parton distribution.
29278       CHSQ=1D0/9D0
29279       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
29280       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
29281  
29282       RETURN
29283       END
29284  
29285 C*********************************************************************
29286  
29287 C...PYGDIR
29288 C...Evaluates the direct contribution, i.e. the C^gamma term,
29289 C...as needed in MSbar parametrizations.
29290 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
29291  
29292       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
29293  
29294 C...Double precision and integer declarations.
29295       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29296       IMPLICIT INTEGER(I-N)
29297       INTEGER PYK,PYCHGE,PYCOMP
29298 C...Local array and data.
29299       DIMENSION XPGA(-6:6)
29300       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
29301  
29302 C...Reset output.
29303       DO 100 KFL=-6,6
29304         XPGA(KFL)=0D0
29305   100 CONTINUE
29306  
29307 C...Evaluate common x-dependent expression.
29308       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
29309       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
29310  
29311 C...d, u, s part by simple charge factor.
29312       XPGA(1)=(1D0/9D0)*CGAM
29313       XPGA(2)=(4D0/9D0)*CGAM
29314       XPGA(3)=(1D0/9D0)*CGAM
29315  
29316 C...Also fill for antiquarks.
29317       DO 110 KF=1,5
29318         XPGA(-KF)=XPGA(KF)
29319   110 CONTINUE
29320  
29321       RETURN
29322       END
29323  
29324 C*********************************************************************
29325  
29326 C...PYPDPI
29327 C...Gives pi+ parton distribution according to two different
29328 C...parametrizations.
29329  
29330       SUBROUTINE PYPDPI(X,Q2,XPPI)
29331  
29332 C...Double precision and integer declarations.
29333       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29334       IMPLICIT INTEGER(I-N)
29335       INTEGER PYK,PYCHGE,PYCOMP
29336 C...Commonblocks.
29337       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29338       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29339       COMMON/PYINT1/MINT(400),VINT(400)
29340       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
29341 C...Local arrays.
29342       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
29343  
29344 C...The following data lines are coefficients needed in the
29345 C...Owens pion parton distribution parametrizations, see below.
29346 C...Expansion coefficients for up and down valence quark distributions.
29347       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
29348      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29349      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29350      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
29351       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
29352      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29353      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
29354      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
29355 C...Expansion coefficients for gluon distribution.
29356       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
29357      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
29358      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
29359      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
29360       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
29361      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
29362      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
29363      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
29364 C...Expansion coefficients for (up+down+strange) quark sea distribution.
29365       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
29366      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
29367      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
29368      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
29369       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
29370      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
29371      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
29372      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
29373 C...Expansion coefficients for charm quark sea distribution.
29374       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
29375      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
29376      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
29377      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
29378       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
29379      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
29380      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
29381      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
29382  
29383 C...Euler's beta function, requires ordinary Gamma function
29384       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
29385  
29386 C...Reset output array.
29387       DO 100 KFL=-6,6
29388         XPPI(KFL)=0D0
29389   100 CONTINUE
29390  
29391       IF(MSTP(53).LE.2) THEN
29392 C...Pion parton distributions from Owens.
29393 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
29394  
29395 C...Determine set, Lambda and s expansion variable.
29396         NSET=MSTP(53)
29397         IF(NSET.EQ.1) ALAM=0.2D0
29398         IF(NSET.EQ.2) ALAM=0.4D0
29399         VINT(231)=4D0
29400         IF(MSTP(57).LE.0) THEN
29401           SD=0D0
29402         ELSE
29403           Q2IN=MIN(2D3,MAX(4D0,Q2))
29404           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
29405         ENDIF
29406  
29407 C...Calculate parton distributions.
29408         DO 120 KFL=1,4
29409           DO 110 IS=1,5
29410             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
29411      &      COW(3,IS,KFL,NSET)*SD**2
29412   110     CONTINUE
29413           IF(KFL.EQ.1) THEN
29414             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
29415           ELSE
29416             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
29417      &      TS(5)*X**2)
29418           ENDIF
29419   120   CONTINUE
29420  
29421 C...Put into output array.
29422         XPPI(0)=XQ(2)
29423         XPPI(1)=XQ(3)/6D0
29424         XPPI(2)=XQ(1)+XQ(3)/6D0
29425         XPPI(3)=XQ(3)/6D0
29426         XPPI(4)=XQ(4)
29427         XPPI(-1)=XQ(1)+XQ(3)/6D0
29428         XPPI(-2)=XQ(3)/6D0
29429         XPPI(-3)=XQ(3)/6D0
29430         XPPI(-4)=XQ(4)
29431  
29432 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
29433 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
29434 C...10^-5 < x < 1.
29435       ELSE
29436  
29437 C...Determine s expansion variable and some x expressions.
29438         VINT(231)=0.25D0
29439         IF(MSTP(57).LE.0) THEN
29440           SD=0D0
29441         ELSE
29442           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
29443           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
29444         ENDIF
29445         SD2=SD**2
29446         XL=-LOG(X)
29447         XS=SQRT(X)
29448  
29449 C...Evaluate valence, gluon and sea distributions.
29450         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
29451      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
29452         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
29453      &  SD-0.175D0*SD2)+
29454      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
29455      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
29456      &  XL)))*
29457      &  (1D0-X)**(0.390D0+1.053D0*SD)
29458         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
29459      &  X)**3.359D0*
29460      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
29461      &  XL))/
29462      &  XL**(2.538D0-0.763D0*SD)
29463         IF(SD.LE.0.888D0) THEN
29464           XFCHM=0D0
29465         ELSE
29466           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
29467      &    0.771D0*SD)*
29468      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
29469      &    XL))
29470         ENDIF
29471         IF(SD.LE.1.351D0) THEN
29472           XFBOT=0D0
29473         ELSE
29474           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
29475      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
29476      &    XL))
29477         ENDIF
29478  
29479 C...Put into output array.
29480         XPPI(0)=XFGLU
29481         XPPI(1)=XFSEA
29482         XPPI(2)=XFSEA
29483         XPPI(3)=XFSEA
29484         XPPI(4)=XFCHM
29485         XPPI(5)=XFBOT
29486         DO 130 KFL=1,5
29487           XPPI(-KFL)=XPPI(KFL)
29488   130   CONTINUE
29489         XPPI(2)=XPPI(2)+XFVAL
29490         XPPI(-1)=XPPI(-1)+XFVAL
29491       ENDIF
29492  
29493       RETURN
29494       END
29495  
29496 C*********************************************************************
29497  
29498 C...PYPDPR
29499 C...Gives proton parton distributions according to a few different
29500 C...parametrizations.
29501  
29502       SUBROUTINE PYPDPR(X,Q2,XPPR)
29503  
29504 C...Double precision and integer declarations.
29505       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29506       IMPLICIT INTEGER(I-N)
29507       INTEGER PYK,PYCHGE,PYCOMP
29508 C...Commonblocks.
29509       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29510       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29511       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29512       COMMON/PYINT1/MINT(400),VINT(400)
29513       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
29514 C...Arrays and data.
29515       DIMENSION XPPR(-6:6),Q2MIN(16)
29516       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
29517      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
29518  
29519 C...Reset output array.
29520       DO 100 KFL=-6,6
29521         XPPR(KFL)=0D0
29522   100 CONTINUE
29523  
29524 C...Common preliminaries.
29525       NSET=MAX(1,MIN(16,MSTP(51)))
29526       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
29527       VINT(231)=Q2MIN(NSET)
29528       IF(MSTP(57).EQ.0) THEN
29529         Q2L=Q2MIN(NSET)
29530       ELSE
29531         Q2L=MAX(Q2MIN(NSET),Q2)
29532       ENDIF
29533  
29534       IF(NSET.GE.1.AND.NSET.LE.3) THEN
29535 C...Interface to the CTEQ 3 parton distributions.
29536         QRT=SQRT(MAX(1D0,Q2L))
29537  
29538 C...Loop over flavours.
29539         DO 110 I=-6,6
29540           IF(I.LE.0) THEN
29541             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
29542           ELSEIF(I.LE.2) THEN
29543             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
29544           ELSE
29545             XPPR(I)=XPPR(-I)
29546           ENDIF
29547   110   CONTINUE
29548  
29549       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
29550 C...Interface to the GRV 94 distributions.
29551         IF(NSET.EQ.4) THEN
29552           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29553         ELSEIF(NSET.EQ.5) THEN
29554           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29555         ELSE
29556           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29557         ENDIF
29558  
29559 C...Put into output array.
29560         XPPR(0)=GL
29561         XPPR(-1)=0.5D0*(UDB+DEL)
29562         XPPR(-2)=0.5D0*(UDB-DEL)
29563         XPPR(-3)=SB
29564         XPPR(-4)=CHM
29565         XPPR(-5)=BOT
29566         XPPR(1)=DV+XPPR(-1)
29567         XPPR(2)=UV+XPPR(-2)
29568         XPPR(3)=SB
29569         XPPR(4)=CHM
29570         XPPR(5)=BOT
29571  
29572       ELSEIF(NSET.EQ.7) THEN
29573 C...Interface to the CTEQ 5L parton distributions.
29574 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
29575 C...freezing x*f(x,Q2) at borders.
29576         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
29577         XIN=MAX(1D-6,MIN(1D0,X))
29578  
29579 C...Loop over flavours (with u <-> d notation mismatch).
29580         SUMUDB=PYCT5L(-1,XIN,QRT)
29581         RATUDB=PYCT5L(-2,XIN,QRT)
29582         DO 120 I=-5,2
29583           IF(I.EQ.1) THEN
29584             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
29585           ELSEIF(I.EQ.2) THEN
29586             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
29587           ELSEIF(I.EQ.-1) THEN
29588             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
29589           ELSEIF(I.EQ.-2) THEN
29590             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
29591           ELSE
29592             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
29593             IF(I.LT.0) XPPR(-I)=XPPR(I)
29594           ENDIF
29595   120   CONTINUE
29596  
29597       ELSEIF(NSET.EQ.8) THEN
29598 C...Interface to the CTEQ 5M1 parton distributions.
29599         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
29600         XIN=MAX(1D-6,MIN(1D0,X))
29601  
29602 C...Loop over flavours (with u <-> d notation mismatch).
29603         SUMUDB=PYCT5M(-1,XIN,QRT)
29604         RATUDB=PYCT5M(-2,XIN,QRT)
29605         DO 130 I=-5,2
29606           IF(I.EQ.1) THEN
29607             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
29608           ELSEIF(I.EQ.2) THEN
29609             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
29610           ELSEIF(I.EQ.-1) THEN
29611             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
29612           ELSEIF(I.EQ.-2) THEN
29613             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
29614           ELSE
29615             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
29616             IF(I.LT.0) XPPR(-I)=XPPR(I)
29617           ENDIF
29618   130   CONTINUE
29619  
29620       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
29621 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
29622 C...obsolete but offers backwards compatibility.
29623         CALL PYPDPO(X,Q2L,XPPR)
29624  
29625 C...Symmetric choice for debugging only
29626       ELSEIF(NSET.EQ.16) THEN
29627         XPPR(0)=.5D0/X
29628         XPPR(1)=.05D0/X
29629         XPPR(2)=.05D0/X
29630         XPPR(3)=.05D0/X
29631         XPPR(4)=.05D0/X
29632         XPPR(5)=.05D0/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  
29639       ENDIF
29640  
29641       RETURN
29642       END
29643  
29644 C*********************************************************************
29645  
29646 C...PYCTEQ
29647 C...Gives the CTEQ 3 parton distribution function sets in
29648 C...parametrized form, of October 24, 1994.
29649 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
29650 C...J. Qiu, W.K. Tung and H. Weerts.
29651  
29652       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
29653  
29654 C...Double precision declaration.
29655       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29656       IMPLICIT INTEGER(I-N)
29657  
29658 C...Data on Lambda values of fits, minimum Q and quark masses.
29659       DIMENSION ALM(3), QMS(4:6)
29660       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
29661       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
29662  
29663 C....Check flavour thresholds. Set up QI for SB.
29664       IP = IABS(IPRT)
29665       IF(IP .GE. 4) THEN
29666         IF(Q .LE. QMS(IP)) THEN
29667           PYCTEQ = 0D0
29668           RETURN
29669         ENDIF
29670         QI = QMS(IP)
29671       ELSE
29672         QI = QMN
29673       ENDIF
29674  
29675 C...Use "standard lambda" of parametrization program for expansion.
29676       ALAM = ALM (ISET)
29677       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
29678       SB = LOG (SBL)
29679       SB2 = SB*SB
29680       SB3 = SB2*SB
29681  
29682 C...Expansion for CTEQ3L.
29683       IF(ISET .EQ. 1) THEN
29684         IF(IPRT .EQ. 2) THEN
29685           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
29686      &    0.3171D+00*SB3)
29687           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
29688           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
29689           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
29690           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
29691           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
29692         ELSEIF(IPRT .EQ. 1) THEN
29693           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
29694      &    0.7728D+00*SB3)
29695           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
29696           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
29697           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
29698           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
29699           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
29700         ELSEIF(IPRT .EQ. 0) THEN
29701           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
29702      &    0.5343D+00*SB3)
29703           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
29704           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
29705           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
29706           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
29707           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
29708         ELSEIF(IPRT .EQ. -1) THEN
29709           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
29710      &    0.2031D+01*SB3)
29711           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
29712           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
29713           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
29714           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
29715           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
29716         ELSEIF(IPRT .EQ. -2) THEN
29717           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
29718      &    0.9872D-01*SB3)
29719           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
29720           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
29721           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
29722           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
29723           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
29724         ELSEIF(IPRT .EQ. -3) THEN
29725           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
29726      &    0.8390D+00*SB3)
29727           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
29728           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
29729           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
29730           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
29731           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
29732         ELSEIF(IPRT .EQ. -4) THEN
29733           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
29734      &    0.1651D-01*SB2)
29735           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
29736           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
29737           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
29738           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
29739           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
29740         ELSEIF(IPRT .EQ. -5) THEN
29741           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
29742      &    0.3702D+01*SB2)
29743           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
29744           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
29745           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
29746           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
29747           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
29748         ELSEIF(IPRT .EQ. -6) THEN
29749           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
29750      &    0.6943D+00*SB2)
29751           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
29752           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
29753           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
29754           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
29755           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
29756         ENDIF
29757  
29758 C...Expansion for CTEQ3M.
29759       ELSEIF(ISET .EQ. 2) THEN
29760         IF(IPRT .EQ. 2) THEN
29761           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
29762      &    0.2935D+00*SB3)
29763           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
29764           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
29765           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
29766           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
29767           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
29768         ELSEIF(IPRT .EQ. 1) THEN
29769           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
29770      &    0.4305D-01*SB3)
29771           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
29772           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
29773           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
29774           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
29775           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
29776         ELSEIF(IPRT .EQ. 0) THEN
29777           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
29778      &    0.1037D-01*SB3)
29779           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
29780           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
29781           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
29782           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
29783           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
29784         ELSEIF(IPRT .EQ. -1) THEN
29785           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
29786      &    0.1602D+01*SB3)
29787           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
29788           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
29789           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
29790           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
29791           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
29792         ELSEIF(IPRT .EQ. -2) THEN
29793           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
29794      &    0.2496D+00*SB3)
29795           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
29796           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
29797           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
29798           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
29799           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
29800         ELSEIF(IPRT .EQ. -3) THEN
29801           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
29802      &    0.1936D+01*SB3)
29803           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
29804           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
29805           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
29806           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
29807           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
29808         ELSEIF(IPRT .EQ. -4) THEN
29809           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
29810      &    0.5348D+00*SB2)
29811           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
29812           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
29813           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
29814           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
29815           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
29816         ELSEIF(IPRT .EQ. -5) THEN
29817           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
29818      &    0.1569D+01*SB2)
29819           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
29820           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
29821           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
29822           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
29823           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
29824         ELSEIF(IPRT .EQ. -6) THEN
29825           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
29826      &    0.8838D+01*SB2)
29827           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
29828           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
29829           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
29830           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
29831           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
29832         ENDIF
29833  
29834 C...Expansion for CTEQ3D.
29835       ELSEIF(ISET .EQ. 3) THEN
29836         IF(IPRT .EQ. 2) THEN
29837           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
29838      &    0.2902D+00*SB3)
29839           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
29840           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
29841           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
29842           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
29843           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
29844         ELSEIF(IPRT .EQ. 1) THEN
29845           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
29846      &    0.7257D+00*SB3)
29847           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
29848           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
29849           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
29850           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
29851           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
29852         ELSEIF(IPRT .EQ. 0) THEN
29853           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
29854      &    0.2734D-04*SB3)
29855           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
29856           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
29857           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
29858           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
29859           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
29860         ELSEIF(IPRT .EQ. -1) THEN
29861           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
29862      &    0.1671D+01*SB3)
29863           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
29864           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
29865           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
29866           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
29867           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
29868         ELSEIF(IPRT .EQ. -2) THEN
29869           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
29870      &    0.2223D+00*SB3)
29871           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
29872           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
29873           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
29874           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
29875           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
29876         ELSEIF(IPRT .EQ. -3) THEN
29877           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
29878      &    0.1937D+01*SB3)
29879           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
29880           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
29881           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
29882           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
29883           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
29884         ELSEIF(IPRT .EQ. -4) THEN
29885           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
29886      &    0.5137D+00*SB2)
29887           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
29888           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
29889           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
29890           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
29891           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
29892         ELSEIF(IPRT .EQ. -5) THEN
29893           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
29894      &    0.2143D+01*SB2)
29895           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
29896           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
29897           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
29898           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
29899           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
29900         ELSEIF(IPRT .EQ. -6) THEN
29901           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
29902      &    0.9998D+01*SB2)
29903           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
29904           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
29905           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
29906           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
29907           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
29908         ENDIF
29909       ENDIF
29910  
29911 C...Calculation of x * f(x, Q).
29912       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
29913      &   *(LOG(1D0+1D0/X))**A5 )
29914  
29915       RETURN
29916       END
29917  
29918 C*********************************************************************
29919  
29920 C...PYGRVL
29921 C...Gives the GRV 94 L (leading order) parton distribution function set
29922 C...in parametrized form.
29923 C...Authors: M. Glueck, E. Reya and A. Vogt.
29924  
29925       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
29926  
29927 C...Double precision declaration.
29928       IMPLICIT DOUBLE PRECISION (A - Z)
29929  
29930 C...Common expressions.
29931       MU2  = 0.23D0
29932       LAM2 = 0.2322D0 * 0.2322D0
29933       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
29934       DS = SQRT (S)
29935       S2 = S * S
29936       S3 = S2 * S
29937  
29938 C...uv :
29939       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
29940       AKU =  0.590D0 - 0.024D0 * S
29941       BKU =  0.131D0 + 0.063D0 * S
29942       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
29943       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
29944       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
29945       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
29946       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
29947  
29948 C...dv :
29949       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
29950       AKD =  0.376D0
29951       BKD =  0.486D0 + 0.062D0 * S
29952       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
29953       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
29954       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
29955       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
29956       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
29957  
29958 C...del :
29959       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
29960       AKE =  0.409D0 - 0.005D0 * S
29961       BKE =  0.799D0 + 0.071D0 * S
29962       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
29963       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
29964       CE  =  0.0D0
29965       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
29966       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
29967  
29968 C...udb :
29969       ALX =  1.451D0
29970       BEX =  0.271D0
29971       AKX =  0.410D0 - 0.232D0 * S
29972       BKX =  0.534D0 - 0.457D0 * S
29973       AGX =  0.890D0 - 0.140D0 * S
29974       BGX = -0.981D0
29975       CX  =  0.320D0 + 0.683D0 * S
29976       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
29977       EX  =  4.119D0 + 1.713D0 * S
29978       ESX =  0.682D0 + 2.978D0 * S
29979       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
29980      & DX, EX, ESX)
29981  
29982 C...sb :
29983       STS =  0D0
29984       ALS =  0.914D0
29985       BES =  0.577D0
29986       AKS =  1.798D0 - 0.596D0 * S
29987       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
29988       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
29989       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
29990       EST =  3.981D0 + 1.638D0 * S
29991       ESS =  6.402D0
29992       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
29993  
29994 C...cb :
29995       STC =  0.888D0
29996       ALC =  1.01D0
29997       BEC =  0.37D0
29998       AKC =  0D0
29999       AC  =  0D0
30000       BC  =  4.24D0  - 0.804D0 * S
30001       DCT =  3.46D0  - 1.076D0 * S
30002       ECT =  4.61D0  + 1.49D0  * S
30003       ESC =  2.555D0 + 1.961D0 * S
30004       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30005  
30006 C...bb :
30007       STB =  1.351D0
30008       ALB =  1.00D0
30009       BEB =  0.51D0
30010       AKB =  0D0
30011       AB  =  0D0
30012       BB  =  1.848D0
30013       DBT =  2.929D0 + 1.396D0 * S
30014       EBT =  4.71D0  + 1.514D0 * S
30015       ESB =  4.02D0  + 1.239D0 * S
30016       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30017  
30018 C...gl :
30019       ALG =  0.524D0
30020       BEG =  1.088D0
30021       AKG =  1.742D0 - 0.930D0 * S
30022       BKG =                         - 0.399D0 * S2
30023       AG  =  7.486D0 - 2.185D0 * S
30024       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
30025       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
30026       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
30027       EG  =  0.807D0 + 2.005D0 * S
30028       ESG =  3.841D0 + 0.316D0 * S
30029       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
30030      & DG, EG, ESG)
30031  
30032       RETURN
30033       END
30034  
30035 C*********************************************************************
30036  
30037 C...PYGRVM
30038 C...Gives the GRV 94 M (MSbar) parton distribution function set
30039 C...in parametrized form.
30040 C...Authors: M. Glueck, E. Reya and A. Vogt.
30041  
30042       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
30043  
30044 C...Double precision declaration.
30045       IMPLICIT DOUBLE PRECISION (A - Z)
30046  
30047 C...Common expressions.
30048       MU2  = 0.34D0
30049       LAM2 = 0.248D0 * 0.248D0
30050       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
30051       DS = SQRT (S)
30052       S2 = S * S
30053       S3 = S2 * S
30054  
30055 C...uv :
30056       NU  =  1.304D0 + 0.863D0 * S
30057       AKU =  0.558D0 - 0.020D0 * S
30058       BKU =          0.183D0 * S
30059       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
30060       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
30061       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
30062       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
30063       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
30064  
30065 C...dv :
30066       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
30067       AKD =  0.270D0 - 0.019D0 * S
30068       BKD =  0.260D0
30069       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
30070       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
30071       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
30072       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
30073       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
30074  
30075 C...del :
30076       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
30077       AKE =  0.409D0 - 0.007D0 * S
30078       BKE =  0.782D0 + 0.082D0 * S
30079       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
30080       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
30081       CE  =  0.0D0
30082       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
30083       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
30084  
30085 C...udb :
30086       ALX =  0.877D0
30087       BEX =  0.561D0
30088       AKX =  0.275D0
30089       BKX =  0.0D0
30090       AGX =  0.997D0
30091       BGX =  3.210D0 - 1.866D0 * S
30092       CX  =  7.300D0
30093       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
30094       EX  =  3.077D0 + 1.446D0 * S
30095       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
30096       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
30097      & DX, EX, ESX)
30098  
30099 C...sb :
30100       STS =  0D0
30101       ALS =  0.756D0
30102       BES =  0.216D0
30103       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
30104       AS  = -4.329D0 + 1.131D0 * S
30105       BS  =  9.568D0 - 1.744D0 * S
30106       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
30107       EST =  3.031D0 + 1.639D0 * S
30108       ESS =  5.837D0 + 0.815D0 * S
30109       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
30110  
30111 C...cb :
30112       STC =  0.820D0
30113       ALC =  0.98D0
30114       BEC =  0D0
30115       AKC = -0.625D0 - 0.523D0 * S
30116       AC  =  0D0
30117       BC  =  1.896D0 + 1.616D0 * S
30118       DCT =  4.12D0  + 0.683D0 * S
30119       ECT =  4.36D0  + 1.328D0 * S
30120       ESC =  0.677D0 + 0.679D0 * S
30121       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30122  
30123 C...bb :
30124       STB =  1.297D0
30125       ALB =  0.99D0
30126       BEB =  0D0
30127       AKB =          - 0.193D0 * S
30128       AB  =  0D0
30129       BB  =  0D0
30130       DBT =  3.447D0 + 0.927D0 * S
30131       EBT =  4.68D0  + 1.259D0 * S
30132       ESB =  1.892D0 + 2.199D0 * S
30133       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30134  
30135 C...gl :
30136        ALG =  1.014D0
30137        BEG =  1.738D0
30138        AKG =  1.724D0 + 0.157D0 * S
30139        BKG =  0.800D0 + 1.016D0 * S
30140        AG  =  7.517D0 - 2.547D0 * S
30141        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
30142        CG  =  4.039D0 + 1.491D0 * S
30143        DG  =  3.404D0 + 0.830D0 * S
30144        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
30145        ESG =  3.256D0 - 0.436D0 * S
30146        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
30147  
30148        RETURN
30149        END
30150  
30151 C*********************************************************************
30152  
30153 C...PYGRVD
30154 C...Gives the GRV 94 D (DIS) parton distribution function set
30155 C...in parametrized form.
30156 C...Authors: M. Glueck, E. Reya and A. Vogt.
30157  
30158       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
30159  
30160 C...Double precision declaration.
30161       IMPLICIT DOUBLE PRECISION (A - Z)
30162  
30163 C...Common expressions.
30164       MU2  = 0.34D0
30165       LAM2 = 0.248D0 * 0.248D0
30166       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
30167       DS = SQRT (S)
30168       S2 = S * S
30169       S3 = S2 * S
30170  
30171 C...uv :
30172       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
30173       AKU =  0.563D0 - 0.025D0 * S
30174       BKU =  0.054D0 + 0.154D0 * S
30175       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
30176       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
30177       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
30178       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
30179       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
30180  
30181 C...dv :
30182       ND  =  0.156D0 - 0.017D0 * S
30183       AKD =  0.299D0 - 0.022D0 * S
30184       BKD =  0.259D0 - 0.015D0 * S
30185       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
30186       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
30187       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
30188       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
30189       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
30190  
30191 C...del :
30192       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
30193       AKE =  0.419D0 - 0.013D0 * S
30194       BKE =  1.064D0 - 0.038D0 * S
30195       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
30196       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
30197       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
30198       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
30199       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
30200  
30201 C...udb :
30202       ALX =  1.215D0
30203       BEX =  0.466D0
30204       AKX =  0.326D0 + 0.150D0 * S
30205       BKX =  0.956D0 + 0.405D0 * S
30206       AGX =  0.272D0
30207       BGX =  3.794D0 - 2.359D0 * DS
30208       CX  =  2.014D0
30209       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
30210       EX  =  3.049D0 + 1.597D0 * S
30211       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
30212       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
30213      & DX, EX, ESX)
30214  
30215 C...sb :
30216       STS =  0D0
30217       ALS =  0.175D0
30218       BES =  0.344D0
30219       AKS =  1.415D0 - 0.641D0 * DS
30220       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
30221       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
30222       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
30223       EST =  4.546D0 + 0.372D0 * S2
30224       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
30225       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
30226  
30227 C...cb :
30228       STC =  0.820D0
30229       ALC =  0.98D0
30230       BEC =  0D0
30231       AKC = -0.625D0 - 0.523D0 * S
30232       AC  =  0D0
30233       BC  =  1.896D0 + 1.616D0 * S
30234       DCT =  4.12D0  + 0.683D0 * S
30235       ECT =  4.36D0  + 1.328D0 * S
30236       ESC =  0.677D0 + 0.679D0 * S
30237       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
30238  
30239 C...bb :
30240       STB =  1.297D0
30241       ALB =  0.99D0
30242       BEB =  0D0
30243       AKB =          - 0.193D0 * S
30244       AB  =  0D0
30245       BB  =  0D0
30246       DBT =  3.447D0 + 0.927D0 * S
30247       EBT =  4.68D0  + 1.259D0 * S
30248       ESB =  1.892D0 + 2.199D0 * S
30249       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
30250  
30251 C...gl :
30252       ALG =  1.258D0
30253       BEG =  1.846D0
30254       AKG =  2.423D0
30255       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
30256       AG  =  25.09D0 - 7.935D0 * S
30257       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
30258       CG  =  590.3D0 - 173.8D0 * S
30259       DG  =  5.196D0 + 1.857D0 * S
30260       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
30261       ESG =  3.232D0 - 0.542D0 * S
30262       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
30263  
30264       RETURN
30265       END
30266  
30267 C*********************************************************************
30268  
30269 C...PYGRVV
30270 C...Auxiliary for the GRV 94 parton distribution functions
30271 C...for u and d valence and d-u sea.
30272 C...Authors: M. Glueck, E. Reya and A. Vogt.
30273  
30274       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
30275  
30276 C...Double precision declaration.
30277       IMPLICIT DOUBLE PRECISION (A - Z)
30278  
30279 C...Evaluation.
30280       DX = SQRT (X)
30281       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
30282      & (1D0- X)**D
30283  
30284       RETURN
30285       END
30286  
30287 C*********************************************************************
30288  
30289 C...PYGRVW
30290 C...Auxiliary for the GRV 94 parton distribution functions
30291 C...for d+u sea and gluon.
30292 C...Authors: M. Glueck, E. Reya and A. Vogt.
30293  
30294       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
30295  
30296 C...Double precision declaration.
30297       IMPLICIT DOUBLE PRECISION (A - Z)
30298  
30299 C...Evaluation.
30300       LX = LOG (1D0/X)
30301       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
30302      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
30303  
30304       RETURN
30305       END
30306  
30307 C*********************************************************************
30308  
30309 C...PYGRVS
30310 C...Auxiliary for the GRV 94 parton distribution functions
30311 C...for s, c and b sea.
30312 C...Authors: M. Glueck, E. Reya and A. Vogt.
30313  
30314       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
30315  
30316 C...Double precision declaration.
30317       IMPLICIT DOUBLE PRECISION (A - Z)
30318  
30319 C...Evaluation.
30320       IF(S.LE.STH) THEN
30321         PYGRVS = 0D0
30322       ELSE
30323         DX = SQRT (X)
30324         LX = LOG (1D0/X)
30325         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
30326      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
30327       ENDIF
30328  
30329       RETURN
30330       END
30331  
30332 C*********************************************************************
30333  
30334 C...PYCT5L
30335 C...Auxiliary function for parametrization of CTEQ5L.
30336 C...Author: J. Pumplin 9/99.
30337  
30338 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
30339 C...in Parametrized Form
30340 C...            September 15, 1999
30341 C
30342 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
30343 C...      CTEQ5 PPARTON DISTRIBUTIONS"
30344 C...hep-ph/9903282
30345  
30346 C...The CTEQ5M1 set given here is an updated version of the original
30347 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
30348 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
30349 C...almost all applications.
30350 C...The improvement is in the QCD evolution which is now more
30351 C...accurate, and which agrees completely with the benchmark work
30352 C...of the HERA 96/97 Workshop.
30353 C...The differences between the parametrized and the corresponding
30354 C...table versions (on which it is based) are of similar order as
30355 C...between the two version.
30356  
30357 C...!! Because accurate parametrizations over a wide range of (x,Q)
30358 C...is hard to obtain, only the most widely used sets CTEQ5M and
30359 C...CTEQ5L are available in parametrized form for now.
30360  
30361 C...These parametrizations were obtained by Jon Pumplin.
30362  
30363 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
30364 C -------------------------------------------------------------------
30365 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
30366 C   3    CTEQ5L   Leading Order                  0.127     192   146
30367 C -------------------------------------------------------------------
30368 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
30369 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
30370 C...calibration.
30371  
30372 C...The two Iset value are adopted to agree with the standard table
30373 C...versions.
30374  
30375 C...Range of validity:
30376 C...The range of (x, Q) covered by this parametrization of the QCD
30377 C...evolved parton distributions is 1E-6 < x < 1 ;
30378 C...1.1 GeV < Q < 10 TeV.  Of course, the PDF's are constrained by
30379 C...data only in a subset of that region; and the assumed DGLAP
30380 C...evolution is unlikely to be valid for all of it either.
30381  
30382 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
30383 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
30384 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
30385 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
30386  
30387       FUNCTION PYCT5L(IFL,X,Q)
30388  
30389 C...Double precision declaration.
30390       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30391       IMPLICIT INTEGER(I-N)
30392  
30393       PARAMETER (NEX=8, NLF=2)
30394       DIMENSION AM(0:NEX,0:NLF,-5:2)
30395       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
30396       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
30397       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
30398       DIMENSION AF(0:NEX)
30399  
30400       DATA MEXVEC( 2) / 8 /
30401       DATA MLFVEC( 2) / 2 /
30402       DATA UT1VEC( 2) /  0.4971265E+01 /
30403       DATA UT2VEC( 2) / -0.1105128E+01 /
30404       DATA ALFVEC( 2) /  0.2987216E+00 /
30405       DATA QMAVEC( 2) /  0.0000000E+00 /
30406       DATA (AM( 0,K, 2),K=0, 2)
30407      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
30408       DATA (AM( 1,K, 2),K=0, 2)
30409      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
30410       DATA (AM( 2,K, 2),K=0, 2)
30411      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
30412       DATA (AM( 3,K, 2),K=0, 2)
30413      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
30414       DATA (AM( 4,K, 2),K=0, 2)
30415      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
30416       DATA (AM( 5,K, 2),K=0, 2)
30417      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
30418       DATA (AM( 6,K, 2),K=0, 2)
30419      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
30420       DATA (AM( 7,K, 2),K=0, 2)
30421      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
30422       DATA (AM( 8,K, 2),K=0, 2)
30423      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
30424  
30425       DATA MEXVEC( 1) / 8 /
30426       DATA MLFVEC( 1) / 2 /
30427       DATA UT1VEC( 1) /  0.2612618E+01 /
30428       DATA UT2VEC( 1) / -0.1258304E+06 /
30429       DATA ALFVEC( 1) /  0.3407552E+00 /
30430       DATA QMAVEC( 1) /  0.0000000E+00 /
30431       DATA (AM( 0,K, 1),K=0, 2)
30432      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
30433       DATA (AM( 1,K, 1),K=0, 2)
30434      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
30435       DATA (AM( 2,K, 1),K=0, 2)
30436      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
30437       DATA (AM( 3,K, 1),K=0, 2)
30438      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
30439       DATA (AM( 4,K, 1),K=0, 2)
30440      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
30441       DATA (AM( 5,K, 1),K=0, 2)
30442      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
30443       DATA (AM( 6,K, 1),K=0, 2)
30444      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
30445       DATA (AM( 7,K, 1),K=0, 2)
30446      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
30447       DATA (AM( 8,K, 1),K=0, 2)
30448      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
30449  
30450       DATA MEXVEC( 0) / 8 /
30451       DATA MLFVEC( 0) / 2 /
30452       DATA UT1VEC( 0) / -0.4656819E+00 /
30453       DATA UT2VEC( 0) / -0.2742390E+03 /
30454       DATA ALFVEC( 0) /  0.4491863E+00 /
30455       DATA QMAVEC( 0) /  0.0000000E+00 /
30456       DATA (AM( 0,K, 0),K=0, 2)
30457      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
30458       DATA (AM( 1,K, 0),K=0, 2)
30459      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
30460       DATA (AM( 2,K, 0),K=0, 2)
30461      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
30462       DATA (AM( 3,K, 0),K=0, 2)
30463      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
30464       DATA (AM( 4,K, 0),K=0, 2)
30465      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
30466       DATA (AM( 5,K, 0),K=0, 2)
30467      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
30468       DATA (AM( 6,K, 0),K=0, 2)
30469      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
30470       DATA (AM( 7,K, 0),K=0, 2)
30471      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
30472       DATA (AM( 8,K, 0),K=0, 2)
30473      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
30474  
30475       DATA MEXVEC(-1) / 8 /
30476       DATA MLFVEC(-1) / 2 /
30477       DATA UT1VEC(-1) /  0.3862583E+01 /
30478       DATA UT2VEC(-1) / -0.1265969E+01 /
30479       DATA ALFVEC(-1) /  0.2457668E+00 /
30480       DATA QMAVEC(-1) /  0.0000000E+00 /
30481       DATA (AM( 0,K,-1),K=0, 2)
30482      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
30483       DATA (AM( 1,K,-1),K=0, 2)
30484      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
30485       DATA (AM( 2,K,-1),K=0, 2)
30486      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
30487       DATA (AM( 3,K,-1),K=0, 2)
30488      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
30489       DATA (AM( 4,K,-1),K=0, 2)
30490      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
30491       DATA (AM( 5,K,-1),K=0, 2)
30492      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
30493       DATA (AM( 6,K,-1),K=0, 2)
30494      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
30495       DATA (AM( 7,K,-1),K=0, 2)
30496      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
30497       DATA (AM( 8,K,-1),K=0, 2)
30498      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
30499  
30500       DATA MEXVEC(-2) / 7 /
30501       DATA MLFVEC(-2) / 2 /
30502       DATA UT1VEC(-2) /  0.1895615E+00 /
30503       DATA UT2VEC(-2) / -0.3069097E+01 /
30504       DATA ALFVEC(-2) /  0.5293999E+00 /
30505       DATA QMAVEC(-2) /  0.0000000E+00 /
30506       DATA (AM( 0,K,-2),K=0, 2)
30507      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
30508       DATA (AM( 1,K,-2),K=0, 2)
30509      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
30510       DATA (AM( 2,K,-2),K=0, 2)
30511      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
30512       DATA (AM( 3,K,-2),K=0, 2)
30513      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
30514       DATA (AM( 4,K,-2),K=0, 2)
30515      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
30516       DATA (AM( 5,K,-2),K=0, 2)
30517      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
30518       DATA (AM( 6,K,-2),K=0, 2)
30519      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
30520       DATA (AM( 7,K,-2),K=0, 2)
30521      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
30522  
30523       DATA MEXVEC(-3) / 7 /
30524       DATA MLFVEC(-3) / 2 /
30525       DATA UT1VEC(-3) /  0.3753257E+01 /
30526       DATA UT2VEC(-3) / -0.1113085E+01 /
30527       DATA ALFVEC(-3) /  0.3713141E+00 /
30528       DATA QMAVEC(-3) /  0.0000000E+00 /
30529       DATA (AM( 0,K,-3),K=0, 2)
30530      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
30531       DATA (AM( 1,K,-3),K=0, 2)
30532      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
30533       DATA (AM( 2,K,-3),K=0, 2)
30534      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
30535       DATA (AM( 3,K,-3),K=0, 2)
30536      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
30537       DATA (AM( 4,K,-3),K=0, 2)
30538      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
30539       DATA (AM( 5,K,-3),K=0, 2)
30540      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
30541       DATA (AM( 6,K,-3),K=0, 2)
30542      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
30543       DATA (AM( 7,K,-3),K=0, 2)
30544      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
30545  
30546       DATA MEXVEC(-4) / 7 /
30547       DATA MLFVEC(-4) / 2 /
30548       DATA UT1VEC(-4) /  0.4400772E+01 /
30549       DATA UT2VEC(-4) / -0.1356116E+01 /
30550       DATA ALFVEC(-4) /  0.3712017E-01 /
30551       DATA QMAVEC(-4) /  0.1300000E+01 /
30552       DATA (AM( 0,K,-4),K=0, 2)
30553      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
30554       DATA (AM( 1,K,-4),K=0, 2)
30555      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
30556       DATA (AM( 2,K,-4),K=0, 2)
30557      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
30558       DATA (AM( 3,K,-4),K=0, 2)
30559      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
30560       DATA (AM( 4,K,-4),K=0, 2)
30561      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
30562       DATA (AM( 5,K,-4),K=0, 2)
30563      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
30564       DATA (AM( 6,K,-4),K=0, 2)
30565      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
30566       DATA (AM( 7,K,-4),K=0, 2)
30567      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
30568  
30569       DATA MEXVEC(-5) / 6 /
30570       DATA MLFVEC(-5) / 2 /
30571       DATA UT1VEC(-5) /  0.5562568E+01 /
30572       DATA UT2VEC(-5) / -0.1801317E+01 /
30573       DATA ALFVEC(-5) /  0.4952010E-02 /
30574       DATA QMAVEC(-5) /  0.4500000E+01 /
30575       DATA (AM( 0,K,-5),K=0, 2)
30576      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
30577       DATA (AM( 1,K,-5),K=0, 2)
30578      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
30579       DATA (AM( 2,K,-5),K=0, 2)
30580      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
30581       DATA (AM( 3,K,-5),K=0, 2)
30582      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
30583       DATA (AM( 4,K,-5),K=0, 2)
30584      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
30585       DATA (AM( 5,K,-5),K=0, 2)
30586      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
30587       DATA (AM( 6,K,-5),K=0, 2)
30588      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
30589  
30590       IF(Q .LE. QMAVEC(IFL)) THEN
30591          PYCT5L = 0.D0
30592          RETURN
30593       ENDIF
30594  
30595       IF(X .GE. 1.D0) THEN
30596          PYCT5L = 0.D0
30597          RETURN
30598       ENDIF
30599  
30600       TMP = LOG(Q/ALFVEC(IFL))
30601       IF(TMP .LE. 0.D0) THEN
30602          PYCT5L = 0.D0
30603          RETURN
30604       ENDIF
30605  
30606       SB = LOG(TMP)
30607       SB1 = SB - 1.2D0
30608       SB2 = SB1*SB1
30609  
30610       DO 110 I = 0, NEX
30611          AF(I) = 0.D0
30612          SBX = 1.D0
30613          DO 100 K = 0, MLFVEC(IFL)
30614             AF(I) = AF(I) + SBX*AM(I,K,IFL)
30615             SBX = SB1*SBX
30616   100    CONTINUE
30617   110 CONTINUE
30618  
30619       Y = -LOG(X)
30620       U = LOG(X/0.00001D0)
30621  
30622       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
30623       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
30624       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
30625       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
30626      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
30627  
30628       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
30629  
30630 C...Include threshold factor.
30631       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
30632  
30633       RETURN
30634       END
30635  
30636 C*********************************************************************
30637  
30638 C...PYCT5M
30639 C...Auxiliary function for parametrization of CTEQ5M1.
30640 C...Author: J. Pumplin 9/99.
30641  
30642       FUNCTION PYCT5M(IFL,X,Q)
30643  
30644 C...Double precision declaration.
30645       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30646       IMPLICIT INTEGER(I-N)
30647  
30648       PARAMETER (NEX=8, NLF=2)
30649       DIMENSION AM(0:NEX,0:NLF,-5:2)
30650       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
30651       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
30652       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
30653       DIMENSION AF(0:NEX)
30654  
30655       DATA MEXVEC( 2) / 8 /
30656       DATA MLFVEC( 2) / 2 /
30657       DATA UT1VEC( 2) /  0.5141718E+01 /
30658       DATA UT2VEC( 2) / -0.1346944E+01 /
30659       DATA ALFVEC( 2) /  0.5260555E+00 /
30660       DATA QMAVEC( 2) /  0.0000000E+00 /
30661       DATA (AM( 0,K, 2),K=0, 2)
30662      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
30663       DATA (AM( 1,K, 2),K=0, 2)
30664      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
30665       DATA (AM( 2,K, 2),K=0, 2)
30666      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
30667       DATA (AM( 3,K, 2),K=0, 2)
30668      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
30669       DATA (AM( 4,K, 2),K=0, 2)
30670      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
30671       DATA (AM( 5,K, 2),K=0, 2)
30672      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
30673       DATA (AM( 6,K, 2),K=0, 2)
30674      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
30675       DATA (AM( 7,K, 2),K=0, 2)
30676      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
30677       DATA (AM( 8,K, 2),K=0, 2)
30678      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
30679  
30680       DATA MEXVEC( 1) / 8 /
30681       DATA MLFVEC( 1) / 2 /
30682       DATA UT1VEC( 1) /  0.4138426E+01 /
30683       DATA UT2VEC( 1) / -0.3221374E+01 /
30684       DATA ALFVEC( 1) /  0.4960962E+00 /
30685       DATA QMAVEC( 1) /  0.0000000E+00 /
30686       DATA (AM( 0,K, 1),K=0, 2)
30687      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
30688       DATA (AM( 1,K, 1),K=0, 2)
30689      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
30690       DATA (AM( 2,K, 1),K=0, 2)
30691      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
30692       DATA (AM( 3,K, 1),K=0, 2)
30693      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
30694       DATA (AM( 4,K, 1),K=0, 2)
30695      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
30696       DATA (AM( 5,K, 1),K=0, 2)
30697      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
30698       DATA (AM( 6,K, 1),K=0, 2)
30699      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
30700       DATA (AM( 7,K, 1),K=0, 2)
30701      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
30702       DATA (AM( 8,K, 1),K=0, 2)
30703      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
30704  
30705       DATA MEXVEC( 0) / 8 /
30706       DATA MLFVEC( 0) / 2 /
30707       DATA UT1VEC( 0) / -0.1026789E+01 /
30708       DATA UT2VEC( 0) / -0.9051707E+01 /
30709       DATA ALFVEC( 0) /  0.9462977E+00 /
30710       DATA QMAVEC( 0) /  0.0000000E+00 /
30711       DATA (AM( 0,K, 0),K=0, 2)
30712      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
30713       DATA (AM( 1,K, 0),K=0, 2)
30714      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
30715       DATA (AM( 2,K, 0),K=0, 2)
30716      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
30717       DATA (AM( 3,K, 0),K=0, 2)
30718      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
30719       DATA (AM( 4,K, 0),K=0, 2)
30720      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
30721       DATA (AM( 5,K, 0),K=0, 2)
30722      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
30723       DATA (AM( 6,K, 0),K=0, 2)
30724      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
30725       DATA (AM( 7,K, 0),K=0, 2)
30726      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
30727       DATA (AM( 8,K, 0),K=0, 2)
30728      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
30729  
30730       DATA MEXVEC(-1) / 8 /
30731       DATA MLFVEC(-1) / 2 /
30732       DATA UT1VEC(-1) /  0.5243571E+01 /
30733       DATA UT2VEC(-1) / -0.2870513E+01 /
30734       DATA ALFVEC(-1) /  0.6701448E+00 /
30735       DATA QMAVEC(-1) /  0.0000000E+00 /
30736       DATA (AM( 0,K,-1),K=0, 2)
30737      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
30738       DATA (AM( 1,K,-1),K=0, 2)
30739      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
30740       DATA (AM( 2,K,-1),K=0, 2)
30741      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
30742       DATA (AM( 3,K,-1),K=0, 2)
30743      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
30744       DATA (AM( 4,K,-1),K=0, 2)
30745      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
30746       DATA (AM( 5,K,-1),K=0, 2)
30747      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
30748       DATA (AM( 6,K,-1),K=0, 2)
30749      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
30750       DATA (AM( 7,K,-1),K=0, 2)
30751      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
30752       DATA (AM( 8,K,-1),K=0, 2)
30753      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
30754  
30755       DATA MEXVEC(-2) / 7 /
30756       DATA MLFVEC(-2) / 2 /
30757       DATA UT1VEC(-2) /  0.4782210E+01 /
30758       DATA UT2VEC(-2) / -0.1976856E+02 /
30759       DATA ALFVEC(-2) /  0.7558374E+00 /
30760       DATA QMAVEC(-2) /  0.0000000E+00 /
30761       DATA (AM( 0,K,-2),K=0, 2)
30762      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
30763       DATA (AM( 1,K,-2),K=0, 2)
30764      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
30765       DATA (AM( 2,K,-2),K=0, 2)
30766      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
30767       DATA (AM( 3,K,-2),K=0, 2)
30768      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
30769       DATA (AM( 4,K,-2),K=0, 2)
30770      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
30771       DATA (AM( 5,K,-2),K=0, 2)
30772      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
30773       DATA (AM( 6,K,-2),K=0, 2)
30774      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
30775       DATA (AM( 7,K,-2),K=0, 2)
30776      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
30777  
30778       DATA MEXVEC(-3) / 7 /
30779       DATA MLFVEC(-3) / 2 /
30780       DATA UT1VEC(-3) /  0.4518239E+01 /
30781       DATA UT2VEC(-3) / -0.2690590E+01 /
30782       DATA ALFVEC(-3) /  0.6124079E+00 /
30783       DATA QMAVEC(-3) /  0.0000000E+00 /
30784       DATA (AM( 0,K,-3),K=0, 2)
30785      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
30786       DATA (AM( 1,K,-3),K=0, 2)
30787      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
30788       DATA (AM( 2,K,-3),K=0, 2)
30789      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
30790       DATA (AM( 3,K,-3),K=0, 2)
30791      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
30792       DATA (AM( 4,K,-3),K=0, 2)
30793      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
30794       DATA (AM( 5,K,-3),K=0, 2)
30795      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
30796       DATA (AM( 6,K,-3),K=0, 2)
30797      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
30798       DATA (AM( 7,K,-3),K=0, 2)
30799      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
30800  
30801       DATA MEXVEC(-4) / 7 /
30802       DATA MLFVEC(-4) / 2 /
30803       DATA UT1VEC(-4) /  0.2783230E+01 /
30804       DATA UT2VEC(-4) / -0.1746328E+01 /
30805       DATA ALFVEC(-4) /  0.1115653E+01 /
30806       DATA QMAVEC(-4) /  0.1300000E+01 /
30807       DATA (AM( 0,K,-4),K=0, 2)
30808      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
30809       DATA (AM( 1,K,-4),K=0, 2)
30810      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
30811       DATA (AM( 2,K,-4),K=0, 2)
30812      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
30813       DATA (AM( 3,K,-4),K=0, 2)
30814      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
30815       DATA (AM( 4,K,-4),K=0, 2)
30816      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
30817       DATA (AM( 5,K,-4),K=0, 2)
30818      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
30819       DATA (AM( 6,K,-4),K=0, 2)
30820      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
30821       DATA (AM( 7,K,-4),K=0, 2)
30822      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
30823  
30824       DATA MEXVEC(-5) / 6 /
30825       DATA MLFVEC(-5) / 2 /
30826       DATA UT1VEC(-5) /  0.1619654E+02 /
30827       DATA UT2VEC(-5) / -0.3367346E+01 /
30828       DATA ALFVEC(-5) /  0.5109891E-02 /
30829       DATA QMAVEC(-5) /  0.4500000E+01 /
30830       DATA (AM( 0,K,-5),K=0, 2)
30831      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
30832       DATA (AM( 1,K,-5),K=0, 2)
30833      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
30834       DATA (AM( 2,K,-5),K=0, 2)
30835      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
30836       DATA (AM( 3,K,-5),K=0, 2)
30837      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
30838       DATA (AM( 4,K,-5),K=0, 2)
30839      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
30840       DATA (AM( 5,K,-5),K=0, 2)
30841      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
30842       DATA (AM( 6,K,-5),K=0, 2)
30843      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
30844  
30845       IF(Q .LE. QMAVEC(IFL)) THEN
30846          PYCT5M = 0.D0
30847          RETURN
30848       ENDIF
30849  
30850       IF(X .GE. 1.D0) THEN
30851          PYCT5M = 0.D0
30852          RETURN
30853       ENDIF
30854  
30855       TMP = LOG(Q/ALFVEC(IFL))
30856       IF(TMP .LE. 0.D0) THEN
30857          PYCT5M = 0.D0
30858          RETURN
30859       ENDIF
30860  
30861       SB = LOG(TMP)
30862       SB1 = SB - 1.2D0
30863       SB2 = SB1*SB1
30864  
30865       DO 110 I = 0, NEX
30866          AF(I) = 0.D0
30867          SBX = 1.D0
30868          DO 100 K = 0, MLFVEC(IFL)
30869             AF(I) = AF(I) + SBX*AM(I,K,IFL)
30870             SBX = SB1*SBX
30871   100    CONTINUE
30872   110 CONTINUE
30873  
30874       Y = -LOG(X)
30875       U = LOG(X/0.00001D0)
30876  
30877       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
30878       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
30879       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
30880       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
30881      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
30882  
30883       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
30884  
30885 C...Include threshold factor.
30886       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
30887  
30888       RETURN
30889       END
30890  
30891 C*********************************************************************
30892  
30893 C...PYPDPO
30894 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
30895 C...a few older parametrizations, now obsolete but convenient for
30896 C...backwards checks.
30897  
30898       SUBROUTINE PYPDPO(X,Q2,XPPR)
30899  
30900 C...Double precision and integer declarations.
30901       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30902       IMPLICIT INTEGER(I-N)
30903       INTEGER PYK,PYCHGE,PYCOMP
30904 C...Commonblocks.
30905       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30906       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30907       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30908       COMMON/PYINT1/MINT(400),VINT(400)
30909       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
30910       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
30911      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
30912  
30913  
30914 C...The following data lines are coefficients needed in the
30915 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
30916 C...parametrizations, see below.
30917 C...Powers of 1-x in different cases.
30918       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
30919 C...Expansion coefficients for up valence quark distribution.
30920       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
30921      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
30922      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
30923      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
30924      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
30925      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
30926      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
30927      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
30928      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
30929      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
30930      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
30931      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
30932      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
30933       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
30934      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
30935      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
30936      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
30937      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
30938      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
30939      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
30940      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
30941      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
30942      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
30943      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
30944      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
30945      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
30946 C...Expansion coefficients for down valence quark distribution.
30947       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
30948      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
30949      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
30950      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
30951      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
30952      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
30953      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
30954      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
30955      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
30956      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
30957      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
30958      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
30959      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
30960       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
30961      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
30962      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
30963      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
30964      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
30965      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
30966      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
30967      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
30968      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
30969      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
30970      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
30971      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
30972      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
30973 C...Expansion coefficients for up and down sea quark distributions.
30974       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
30975      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
30976      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
30977      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
30978      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
30979      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
30980      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
30981      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
30982      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
30983      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
30984      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
30985      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
30986      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
30987       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
30988      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
30989      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
30990      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
30991      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
30992      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
30993      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
30994      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
30995      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
30996      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
30997      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
30998      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
30999      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
31000 C...Expansion coefficients for gluon distribution.
31001       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
31002      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
31003      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
31004      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
31005      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
31006      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
31007      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
31008      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
31009      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
31010      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
31011      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
31012      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
31013      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
31014       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
31015      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
31016      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
31017      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
31018      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
31019      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
31020      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
31021      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
31022      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
31023      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
31024      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
31025      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
31026      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
31027 C...Expansion coefficients for strange sea quark distribution.
31028       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
31029      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
31030      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
31031      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
31032      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
31033      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
31034      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
31035      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
31036      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
31037      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
31038      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
31039      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
31040      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
31041       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
31042      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
31043      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
31044      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
31045      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
31046      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
31047      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
31048      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
31049      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
31050      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
31051      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
31052      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
31053      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
31054 C...Expansion coefficients for charm sea quark distribution.
31055       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
31056      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
31057      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
31058      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
31059      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
31060      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
31061      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
31062      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
31063      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
31064      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
31065      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
31066      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
31067      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
31068       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
31069      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
31070      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
31071      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
31072      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
31073      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
31074      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
31075      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
31076      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
31077      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
31078      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
31079      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
31080      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
31081 C...Expansion coefficients for bottom sea quark distribution.
31082       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
31083      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
31084      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
31085      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
31086      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
31087      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
31088      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
31089      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
31090      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
31091      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
31092      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
31093      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
31094      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
31095       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
31096      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
31097      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
31098      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
31099      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
31100      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
31101      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
31102      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
31103      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
31104      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
31105      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
31106      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
31107      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
31108 C...Expansion coefficients for top sea quark distribution.
31109       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
31110      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
31111      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
31112      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
31113      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
31114      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
31115      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
31116      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
31117      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
31118      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
31119      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
31120      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
31121      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
31122       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
31123      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
31124      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
31125      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
31126      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
31127      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
31128      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
31129      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
31130      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
31131      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
31132      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
31133      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
31134      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
31135  
31136 C...The following data lines are coefficients needed in the
31137 C...Duke, Owens proton structure function parametrizations, see below.
31138 C...Expansion coefficients for (up+down) valence quark distribution.
31139       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
31140      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31141      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31142      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
31143       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
31144      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31145      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31146      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
31147 C...Expansion coefficients for down valence quark distribution.
31148       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
31149      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31150      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
31151      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
31152       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
31153      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31154      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
31155      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
31156 C...Expansion coefficients for (up+down+strange) sea quark distribution.
31157       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
31158      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31159      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
31160      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
31161       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
31162      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31163      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
31164      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
31165 C...Expansion coefficients for charm sea quark distribution.
31166       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
31167      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31168      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
31169      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
31170        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
31171      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
31172      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
31173      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
31174 C...Expansion coefficients for gluon distribution.
31175       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
31176      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
31177      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
31178      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
31179       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
31180      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
31181      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
31182      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
31183  
31184 C...Euler's beta function, requires ordinary Gamma function
31185       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
31186  
31187 C...Leading order proton parton distributions from Glueck, Reya and
31188 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
31189 C...10^-5 < x < 1.
31190       IF(MSTP(51).EQ.11) THEN
31191  
31192 C...Determine s expansion variable and some x expressions.
31193         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
31194         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
31195         SD2=SD**2
31196         XL=-LOG(X)
31197         XS=SQRT(X)
31198  
31199 C...Evaluate valence, gluon and sea distributions.
31200         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
31201      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
31202      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
31203      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
31204         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
31205      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
31206      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
31207         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
31208      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
31209      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
31210      &  SQRT(4.066D0*SD**1.218D0*XL)))*
31211      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
31212         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
31213      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
31214      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
31215      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
31216         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
31217      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
31218      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
31219      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
31220         IF(SD.LE.0.888D0) THEN
31221           XFCHM=0D0
31222         ELSE
31223           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
31224      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
31225      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
31226         ENDIF
31227         IF(SD.LE.1.351D0) THEN
31228           XFBOT=0D0
31229         ELSE
31230           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
31231      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
31232      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
31233         ENDIF
31234  
31235 C...Put into output array.
31236         XPPR(0)=XFGLU
31237         XPPR(1)=XFVDD+XFSEA
31238         XPPR(2)=XFVUD-XFVDD+XFSEA
31239         XPPR(3)=XFSTR
31240         XPPR(4)=XFCHM
31241         XPPR(5)=XFBOT
31242         XPPR(-1)=XFSEA
31243         XPPR(-2)=XFSEA
31244         XPPR(-3)=XFSTR
31245         XPPR(-4)=XFCHM
31246         XPPR(-5)=XFBOT
31247  
31248 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
31249 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
31250       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
31251  
31252 C...Determine set, Lambda and x and t expansion variables.
31253         NSET=MSTP(51)-11
31254         IF(NSET.EQ.1) ALAM=0.2D0
31255         IF(NSET.EQ.2) ALAM=0.29D0
31256         TMIN=LOG(5D0/ALAM**2)
31257         TMAX=LOG(1D8/ALAM**2)
31258         T=LOG(MAX(1D0,Q2/ALAM**2))
31259         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31260         NX=1
31261         IF(X.LE.0.1D0) NX=2
31262         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
31263         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
31264  
31265 C...Chebyshev polynomials for x and t expansion.
31266         TX(1)=1D0
31267         TX(2)=VX
31268         TX(3)=2D0*VX**2-1D0
31269         TX(4)=4D0*VX**3-3D0*VX
31270         TX(5)=8D0*VX**4-8D0*VX**2+1D0
31271         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
31272         TT(1)=1D0
31273         TT(2)=VT
31274         TT(3)=2D0*VT**2-1D0
31275         TT(4)=4D0*VT**3-3D0*VT
31276         TT(5)=8D0*VT**4-8D0*VT**2+1D0
31277         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31278  
31279 C...Calculate structure functions.
31280         DO 120 KFL=1,6
31281           XQSUM=0D0
31282           DO 110 IT=1,6
31283             DO 100 IX=1,6
31284               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
31285   100       CONTINUE
31286   110     CONTINUE
31287           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
31288   120   CONTINUE
31289  
31290 C...Put into output array.
31291         XPPR(0)=XQ(4)
31292         XPPR(1)=XQ(2)+XQ(3)
31293         XPPR(2)=XQ(1)+XQ(3)
31294         XPPR(3)=XQ(5)
31295         XPPR(4)=XQ(6)
31296         XPPR(-1)=XQ(3)
31297         XPPR(-2)=XQ(3)
31298         XPPR(-3)=XQ(5)
31299         XPPR(-4)=XQ(6)
31300  
31301 C...Special expansion for bottom (threshold effects).
31302         IF(MSTP(58).GE.5) THEN
31303           IF(NSET.EQ.1) TMIN=8.1905D0
31304           IF(NSET.EQ.2) TMIN=7.4474D0
31305           IF(T.GT.TMIN) THEN
31306             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31307             TT(1)=1D0
31308             TT(2)=VT
31309             TT(3)=2D0*VT**2-1D0
31310             TT(4)=4D0*VT**3-3D0*VT
31311             TT(5)=8D0*VT**4-8D0*VT**2+1D0
31312             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31313             XQSUM=0D0
31314             DO 140 IT=1,6
31315               DO 130 IX=1,6
31316                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
31317   130         CONTINUE
31318   140       CONTINUE
31319             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
31320             XPPR(-5)=XPPR(5)
31321           ENDIF
31322         ENDIF
31323  
31324 C...Special expansion for top (threshold effects).
31325         IF(MSTP(58).GE.6) THEN
31326           IF(NSET.EQ.1) TMIN=11.5528D0
31327           IF(NSET.EQ.2) TMIN=10.8097D0
31328           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
31329           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
31330           IF(T.GT.TMIN) THEN
31331             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
31332             TT(1)=1D0
31333             TT(2)=VT
31334             TT(3)=2D0*VT**2-1D0
31335             TT(4)=4D0*VT**3-3D0*VT
31336             TT(5)=8D0*VT**4-8D0*VT**2+1D0
31337             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
31338             XQSUM=0D0
31339             DO 160 IT=1,6
31340               DO 150 IX=1,6
31341                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
31342   150         CONTINUE
31343   160       CONTINUE
31344             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
31345             XPPR(-6)=XPPR(6)
31346           ENDIF
31347         ENDIF
31348  
31349 C...Proton parton distributions from Duke, Owens.
31350 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
31351       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
31352  
31353 C...Determine set, Lambda and s expansion parameter.
31354         NSET=MSTP(51)-13
31355         IF(NSET.EQ.1) ALAM=0.2D0
31356         IF(NSET.EQ.2) ALAM=0.4D0
31357         Q2IN=MIN(1D6,MAX(4D0,Q2))
31358         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
31359  
31360 C...Calculate structure functions.
31361         DO 180 KFL=1,5
31362           DO 170 IS=1,6
31363             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
31364      &      CDO(3,IS,KFL,NSET)*SD**2
31365   170     CONTINUE
31366           IF(KFL.LE.2) THEN
31367             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
31368      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
31369           ELSE
31370             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
31371      &      TS(5)*X**2+TS(6)*X**3)
31372           ENDIF
31373   180   CONTINUE
31374  
31375 C...Put into output arrays.
31376         XPPR(0)=XQ(5)
31377         XPPR(1)=XQ(2)+XQ(3)/6D0
31378         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
31379         XPPR(3)=XQ(3)/6D0
31380         XPPR(4)=XQ(4)
31381         XPPR(-1)=XQ(3)/6D0
31382         XPPR(-2)=XQ(3)/6D0
31383         XPPR(-3)=XQ(3)/6D0
31384         XPPR(-4)=XQ(4)
31385  
31386       ENDIF
31387  
31388       RETURN
31389       END
31390  
31391 C*********************************************************************
31392  
31393 C...PYHFTH
31394 C...Gives threshold attractive/repulsive factor for heavy flavour
31395 C...production.
31396  
31397       FUNCTION PYHFTH(SH,SQM,FRATT)
31398  
31399 C...Double precision and integer declarations.
31400       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31401       IMPLICIT INTEGER(I-N)
31402       INTEGER PYK,PYCHGE,PYCOMP
31403 C...Commonblocks.
31404       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31405       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31406       COMMON/PYINT1/MINT(400),VINT(400)
31407       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
31408  
31409 C...Value for alpha_strong.
31410       IF(MSTP(35).LE.1) THEN
31411         ALSSG=PARP(35)
31412       ELSE
31413         MST115=MSTU(115)
31414         MSTU(115)=MSTP(36)
31415         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
31416      &  PARP(36)**2)))
31417         ALSSG=PYALPS(Q2BN)
31418         MSTU(115)=MST115
31419       ENDIF
31420  
31421 C...Evaluate attractive and repulsive factors.
31422       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
31423       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
31424       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
31425       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
31426       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
31427       VINT(138)=PYHFTH
31428  
31429       RETURN
31430       END
31431  
31432 C*********************************************************************
31433  
31434 C...PYSPLI
31435 C...Splits a hadron remnant into two (partons or hadron + parton)
31436 C...in case it is more complicated than just a quark or a diquark.
31437  
31438       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
31439  
31440 C...Double precision and integer declarations.
31441       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31442       IMPLICIT INTEGER(I-N)
31443       INTEGER PYK,PYCHGE,PYCOMP
31444 C...Commonblocks. PYDAT1 temporary
31445       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31446       COMMON/PYINT1/MINT(400),VINT(400)
31447       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31448       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
31449 C...Local array.
31450       DIMENSION KFL(3)
31451  
31452 C...Preliminaries. Parton composition.
31453       KFA=IABS(KF)
31454       KFS=ISIGN(1,KF)
31455       KFL(1)=MOD(KFA/1000,10)
31456       KFL(2)=MOD(KFA/100,10)
31457       KFL(3)=MOD(KFA/10,10)
31458       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
31459         KFL(2)=INT(1.5D0+PYR(0))
31460         IF(MINT(105).EQ.333) KFL(2)=3
31461         IF(MINT(105).EQ.443) KFL(2)=4
31462         KFL(3)=KFL(2)
31463       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
31464         KFL(2)=2
31465         KFL(3)=2
31466       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
31467         KFL(2)=1
31468         KFL(3)=1
31469       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
31470         KFL(2)=MOD(KFA/10,10)
31471         KFL(3)=MOD(KFA/100,10)
31472       ENDIF
31473       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
31474         KFLR=KFLIN*KFS
31475       ELSE
31476         KFLR=KFLIN
31477       ENDIF
31478       KFLCH=0
31479  
31480 C...Subdivide lepton.
31481       IF(KFA.GE.11.AND.KFA.LE.18) THEN
31482         IF(KFLR.EQ.KFA) THEN
31483           KFLSP=KFS*22
31484         ELSEIF(KFLR.EQ.22) THEN
31485           KFLSP=KFA
31486         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
31487           KFLSP=KFA+1
31488         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
31489           KFLSP=KFA-1
31490         ELSEIF(KFLR.EQ.21) THEN
31491           KFLSP=KFA
31492           KFLCH=KFS*21
31493         ELSE
31494           KFLSP=KFA
31495           KFLCH=-KFLR
31496         ENDIF
31497  
31498 C...Subdivide photon.
31499       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
31500         IF(KFLR.NE.21) THEN
31501           KFLSP=-KFLR
31502         ELSE
31503           RAGR=0.75D0*PYR(0)
31504           KFLSP=1
31505           IF(RAGR.GT.0.125D0) KFLSP=2
31506           IF(RAGR.GT.0.625D0) KFLSP=3
31507           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
31508           KFLCH=-KFLSP
31509         ENDIF
31510  
31511 C...Subdivide Reggeon or Pomeron.
31512       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
31513         IF(KFLIN.EQ.21) THEN
31514           KFLSP=KFS*21
31515         ELSE
31516           KFLSP=-KFLIN
31517         ENDIF
31518  
31519 C...Subdivide meson.
31520       ELSEIF(KFL(1).EQ.0) THEN
31521         KFL(2)=KFL(2)*(-1)**KFL(2)
31522         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
31523         IF(KFLR.EQ.KFL(2)) THEN
31524           KFLSP=KFL(3)
31525         ELSEIF(KFLR.EQ.KFL(3)) THEN
31526           KFLSP=KFL(2)
31527         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
31528           KFLSP=KFL(2)
31529           KFLCH=KFL(3)
31530         ELSEIF(KFLR.EQ.21) THEN
31531           KFLSP=KFL(3)
31532           KFLCH=KFL(2)
31533         ELSEIF(KFLR*KFL(2).GT.0) THEN
31534           NTRY=0
31535   100     NTRY=NTRY+1
31536           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
31537           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31538             GOTO 100
31539           ELSEIF(KFLCH.EQ.0) THEN
31540             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31541             MINT(51)=1
31542             RETURN
31543           ENDIF
31544           KFLSP=KFL(3)
31545         ELSE
31546           NTRY=0
31547   110     NTRY=NTRY+1
31548           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
31549           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31550             GOTO 110
31551           ELSEIF(KFLCH.EQ.0) THEN
31552             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31553             MINT(51)=1
31554             RETURN
31555           ENDIF
31556           KFLSP=KFL(2)
31557         ENDIF
31558  
31559 C...Subdivide baryon.
31560       ELSE
31561         NAGR=0
31562         DO 120 J=1,3
31563           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
31564   120   CONTINUE
31565         IF(NAGR.GE.1) THEN
31566           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
31567           IAGR=0
31568           DO 130 J=1,3
31569             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
31570             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
31571   130     CONTINUE
31572         ELSE
31573           IAGR=1.00001D0+2.99998D0*PYR(0)
31574         ENDIF
31575         ID1=1
31576         IF(IAGR.EQ.1) ID1=2
31577         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
31578         ID2=6-IAGR-ID1
31579         KSP=3
31580         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
31581           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
31582         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
31583           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
31584         ELSEIF(MOD(KFA,10).EQ.2) THEN
31585           IF(IAGR.EQ.1) KSP=1
31586           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
31587         ENDIF
31588         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
31589         IF(KFLR.EQ.21) THEN
31590           KFLCH=KFL(IAGR)
31591         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
31592           NTRY=0
31593   140     NTRY=NTRY+1
31594           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
31595           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31596             GOTO 140
31597           ELSEIF(KFLCH.EQ.0) THEN
31598             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31599             MINT(51)=1
31600             RETURN
31601           ENDIF
31602         ELSEIF(NAGR.EQ.0) THEN
31603           NTRY=0
31604   150     NTRY=NTRY+1
31605           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
31606           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
31607             GOTO 150
31608           ELSEIF(KFLCH.EQ.0) THEN
31609             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
31610             MINT(51)=1
31611             RETURN
31612           ENDIF
31613           KFLSP=KFL(IAGR)
31614         ENDIF
31615       ENDIF
31616  
31617 C...Add on correct sign for result.
31618       KFLCH=KFLCH*KFS
31619       KFLSP=KFLSP*KFS
31620  
31621       RETURN
31622       END
31623  
31624 C*********************************************************************
31625  
31626 C...PYGAMM
31627 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
31628 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
31629 C...(Dover, 1965) 6.1.36.
31630  
31631       FUNCTION PYGAMM(X)
31632  
31633 C...Double precision and integer declarations.
31634       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31635       IMPLICIT INTEGER(I-N)
31636       INTEGER PYK,PYCHGE,PYCOMP
31637 C...Local array and data.
31638       DIMENSION B(8)
31639       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
31640      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
31641  
31642       NX=INT(X)
31643       DX=X-NX
31644  
31645       PYGAMM=1D0
31646       DXP=1D0
31647       DO 100 I=1,8
31648         DXP=DXP*DX
31649         PYGAMM=PYGAMM+B(I)*DXP
31650   100 CONTINUE
31651       IF(X.LT.1D0) THEN
31652         PYGAMM=PYGAMM/X
31653       ELSE
31654         DO 110 IX=1,NX-1
31655           PYGAMM=(X-IX)*PYGAMM
31656   110   CONTINUE
31657       ENDIF
31658  
31659       RETURN
31660       END
31661  
31662 C***********************************************************************
31663  
31664 C...PYWAUX
31665 C...Calculates real and imaginary parts of the auxiliary functions W1
31666 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
31667 C...der Bij, Nucl. Phys. B297 (1988) 221.
31668  
31669       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
31670  
31671 C...Double precision and integer declarations.
31672       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31673       IMPLICIT INTEGER(I-N)
31674       INTEGER PYK,PYCHGE,PYCOMP
31675 C...Commonblocks.
31676       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31677       SAVE /PYDAT1/
31678  
31679       ASINH(X)=LOG(X+SQRT(X**2+1D0))
31680       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
31681  
31682       IF(EPS.LT.0D0) THEN
31683         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
31684         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
31685         WIM=0D0
31686       ELSEIF(EPS.LT.1D0) THEN
31687         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
31688         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
31689         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
31690         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
31691       ELSE
31692         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
31693         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
31694         WIM=0D0
31695       ENDIF
31696  
31697       RETURN
31698       END
31699  
31700 C***********************************************************************
31701  
31702 C...PYI3AU
31703 C...Calculates real and imaginary parts of the auxiliary function I3;
31704 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
31705 C...Nucl. Phys. B297 (1988) 221.
31706  
31707       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
31708  
31709 C...Double precision and integer declarations.
31710       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31711       IMPLICIT INTEGER(I-N)
31712       INTEGER PYK,PYCHGE,PYCOMP
31713 C...Commonblocks.
31714       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31715       SAVE /PYDAT1/
31716  
31717       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
31718       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
31719  
31720       IF(EPS.LT.0D0) THEN
31721         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31722           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
31723      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
31724      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
31725      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
31726      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
31727      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
31728      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
31729      &    EPS))
31730         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
31731           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
31732      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
31733      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
31734      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
31735      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
31736      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
31737      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
31738         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31739           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
31740      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
31741      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
31742      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
31743      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
31744      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
31745      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
31746         ELSE
31747           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
31748      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
31749      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
31750      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
31751      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
31752         ENDIF
31753         F3IM=0D0
31754       ELSEIF(EPS.LT.1D0) THEN
31755         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31756           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
31757      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
31758      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
31759      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
31760      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
31761      &    (0.25D0*(RAT+1D0)*EPS))
31762           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
31763      &    (0.25D0*(RAT+1D0)*EPS))
31764         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
31765           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
31766      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
31767      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
31768      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
31769      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
31770      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
31771           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
31772         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
31773           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
31774      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
31775      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
31776      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
31777      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
31778      &    (1D0+0.25D0*RAT*EPS-GA))
31779           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
31780      &    (1D0+0.25D0*RAT*EPS-GA))
31781         ELSE
31782           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
31783      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
31784      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
31785      &    LOG((GA+BE-1D0)/(BE-GA))
31786           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
31787         ENDIF
31788       ELSE
31789         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
31790         RCTHE=RSQ*(1D0-2D0*BE/EPS)
31791         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
31792         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
31793         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
31794         R=SQRT(RSQ)
31795         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
31796         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
31797         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
31798      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
31799      &  (PHI-THE)*(PHI+THE-PARU(1))
31800         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
31801      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
31802       ENDIF
31803  
31804       Y3RE=2D0/(2D0*BE-1D0)*F3RE
31805       Y3IM=2D0/(2D0*BE-1D0)*F3IM
31806  
31807       RETURN
31808       END
31809  
31810 C***********************************************************************
31811  
31812 C...PYSPEN
31813 C...Calculates real and imaginary part of Spence function; see
31814 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
31815  
31816       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
31817  
31818 C...Double precision and integer declarations.
31819       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31820       IMPLICIT INTEGER(I-N)
31821       INTEGER PYK,PYCHGE,PYCOMP
31822 C...Commonblocks.
31823       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31824       SAVE /PYDAT1/
31825 C...Local array and data.
31826       DIMENSION B(0:14)
31827       DATA B/
31828      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
31829      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
31830      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
31831      &0.000000D+00,         7.575757D-02,         0.000000D+00,
31832      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
31833  
31834       XRE=XREIN
31835       XIM=XIMIN
31836       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
31837         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
31838         IF(IREIM.EQ.2) PYSPEN=0D0
31839         RETURN
31840       ENDIF
31841  
31842       XMOD=SQRT(XRE**2+XIM**2)
31843       IF(XMOD.LT.1D-6) THEN
31844         IF(IREIM.EQ.1) PYSPEN=0D0
31845         IF(IREIM.EQ.2) PYSPEN=0D0
31846         RETURN
31847       ENDIF
31848  
31849       XARG=SIGN(ACOS(XRE/XMOD),XIM)
31850       SP0RE=0D0
31851       SP0IM=0D0
31852       SGN=1D0
31853       IF(XMOD.GT.1D0) THEN
31854         ALGXRE=LOG(XMOD)
31855         ALGXIM=XARG-SIGN(PARU(1),XARG)
31856         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
31857         SP0IM=-ALGXRE*ALGXIM
31858         SGN=-1D0
31859         XMOD=1D0/XMOD
31860         XARG=-XARG
31861         XRE=XMOD*COS(XARG)
31862         XIM=XMOD*SIN(XARG)
31863       ENDIF
31864       IF(XRE.GT.0.5D0) THEN
31865         ALGXRE=LOG(XMOD)
31866         ALGXIM=XARG
31867         XRE=1D0-XRE
31868         XIM=-XIM
31869         XMOD=SQRT(XRE**2+XIM**2)
31870         XARG=SIGN(ACOS(XRE/XMOD),XIM)
31871         ALGYRE=LOG(XMOD)
31872         ALGYIM=XARG
31873         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
31874         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
31875         SGN=-SGN
31876       ENDIF
31877  
31878       XRE=1D0-XRE
31879       XIM=-XIM
31880       XMOD=SQRT(XRE**2+XIM**2)
31881       XARG=SIGN(ACOS(XRE/XMOD),XIM)
31882       ZRE=-LOG(XMOD)
31883       ZIM=-XARG
31884  
31885       SPRE=0D0
31886       SPIM=0D0
31887       SAVERE=1D0
31888       SAVEIM=0D0
31889       DO 100 I=0,14
31890         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
31891         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
31892         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
31893         SAVERE=TERMRE
31894         SAVEIM=TERMIM
31895         SPRE=SPRE+B(I)*TERMRE
31896         SPIM=SPIM+B(I)*TERMIM
31897   100 CONTINUE
31898  
31899   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
31900       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
31901  
31902       RETURN
31903       END
31904  
31905 C***********************************************************************
31906  
31907 C...PYQQBH
31908 C...Calculates the matrix element for the processes
31909 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
31910 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
31911 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
31912  
31913       SUBROUTINE PYQQBH(WTQQBH)
31914  
31915 C...Double precision and integer declarations.
31916       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31917       IMPLICIT INTEGER(I-N)
31918       INTEGER PYK,PYCHGE,PYCOMP
31919 C...Commonblocks.
31920       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31921       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
31922       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31923       COMMON/PYINT1/MINT(400),VINT(400)
31924       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
31925       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
31926 C...Local arrays and function.
31927       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
31928       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
31929      &PP(I,3)*PP(J,3)
31930  
31931 C...Mass parameters.
31932       WTQQBH=0D0
31933       ISUB=MINT(1)
31934       SHPR=SQRT(VINT(26))*VINT(1)
31935       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
31936       PH=SQRT(VINT(21))*VINT(1)
31937       SPQ=PQ**2
31938       SPH=PH**2
31939  
31940 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
31941       DO 100 I=1,2
31942         PT=SQRT(MAX(0D0,VINT(197+5*I)))
31943         PP(I,1)=PT*COS(VINT(198+5*I))
31944         PP(I,2)=PT*SIN(VINT(198+5*I))
31945   100 CONTINUE
31946       PP(3,1)=-PP(1,1)-PP(2,1)
31947       PP(3,2)=-PP(1,2)-PP(2,2)
31948       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
31949       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
31950       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
31951       PMT3=SQRT(PMS3)
31952       PP(3,3)=PMT3*SINH(VINT(211))
31953       PP(3,4)=PMT3*COSH(VINT(211))
31954       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
31955       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
31956      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
31957       PP(2,3)=-PP(1,3)-PP(3,3)
31958       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
31959       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
31960  
31961 C...Set up incoming kinematics and derived momentum combinations.
31962       DO 110 I=4,5
31963         PP(I,1)=0D0
31964         PP(I,2)=0D0
31965         PP(I,3)=-0.5D0*SHPR*(-1)**I
31966         PP(I,4)=-0.5D0*SHPR
31967   110 CONTINUE
31968       DO 120 J=1,4
31969         PP(6,J)=PP(1,J)+PP(2,J)
31970         PP(7,J)=PP(1,J)+PP(3,J)
31971         PP(8,J)=PP(1,J)+PP(4,J)
31972         PP(9,J)=PP(1,J)+PP(5,J)
31973         PP(10,J)=-PP(2,J)-PP(3,J)
31974         PP(11,J)=-PP(2,J)-PP(4,J)
31975         PP(12,J)=-PP(2,J)-PP(5,J)
31976         PP(13,J)=-PP(4,J)-PP(5,J)
31977   120 CONTINUE
31978  
31979 C...Derived kinematics invariants.
31980       X1=DOT(1,2)
31981       X2=DOT(1,3)
31982       X3=DOT(1,4)
31983       X4=DOT(1,5)
31984       X5=DOT(2,3)
31985       X6=DOT(2,4)
31986       X7=DOT(2,5)
31987       X8=DOT(3,4)
31988       X9=DOT(3,5)
31989       X10=DOT(4,5)
31990  
31991 C...Propagators.
31992       SS1=DOT(7,7)-SPQ
31993       SS2=DOT(8,8)-SPQ
31994       SS3=DOT(9,9)-SPQ
31995       SS4=DOT(10,10)-SPQ
31996       SS5=DOT(11,11)-SPQ
31997       SS6=DOT(12,12)-SPQ
31998       SS7=DOT(13,13)
31999       DX(1)=SS1*SS6
32000       DX(2)=SS2*SS6
32001       DX(3)=SS2*SS4
32002       DX(4)=SS1*SS5
32003       DX(5)=SS3*SS5
32004       DX(6)=SS3*SS4
32005       DX(7)=SS7*SS1
32006       DX(8)=SS7*SS4
32007  
32008 C...Define colour coefficients for g + g -> Q + Qbar + H.
32009       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
32010         DO 140 I=1,3
32011           DO 130 J=1,3
32012             CLR(I,J)=16D0/3D0
32013             CLR(I+3,J+3)=16D0/3D0
32014             CLR(I,J+3)=-2D0/3D0
32015             CLR(I+3,J)=-2D0/3D0
32016   130     CONTINUE
32017   140   CONTINUE
32018         DO 160 L=1,2
32019           DO 150 I=1,3
32020             CLR(I,6+L)=-6D0
32021             CLR(I+3,6+L)=6D0
32022             CLR(6+L,I)=-6D0
32023             CLR(6+L,I+3)=6D0
32024   150     CONTINUE
32025   160   CONTINUE
32026         DO 180 K1=1,2
32027           DO 170 K2=1,2
32028             CLR(6+K1,6+K2)=12D0
32029   170     CONTINUE
32030   180   CONTINUE
32031  
32032 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
32033         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
32034      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
32035      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
32036         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
32037      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
32038      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
32039      &  X10)
32040         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
32041      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
32042      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
32043      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
32044      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
32045      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
32046         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
32047      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
32048      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
32049      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
32050      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
32051         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
32052      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
32053      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
32054      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
32055      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
32056      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
32057      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
32058      &  X4*X6*X5)
32059         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
32060      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
32061      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
32062      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
32063      &  +X4*X9*X5+X4*X5**2)
32064         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
32065      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
32066      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
32067      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
32068      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
32069      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
32070         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
32071      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
32072      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
32073      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
32074      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
32075      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
32076      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
32077      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
32078      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
32079         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
32080      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
32081         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
32082      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
32083      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
32084      &  X6)
32085         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
32086      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
32087      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
32088      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
32089      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
32090      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
32091      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
32092      &  X5+X4*X6*X5)
32093         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
32094      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
32095      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
32096      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
32097      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
32098      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
32099      &  X6**2)
32100         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
32101      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
32102      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
32103      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
32104      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
32105      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
32106      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
32107      &  X4*X6*X5)
32108         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
32109      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
32110      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
32111      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
32112      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
32113      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
32114      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
32115      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
32116      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
32117      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
32118      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
32119         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
32120      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
32121      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
32122      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
32123      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
32124      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
32125      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
32126      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
32127      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
32128      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
32129      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
32130         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
32131      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
32132      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
32133         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
32134      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
32135      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
32136      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
32137      &  +X3*X8*X5+X3*X5**2)
32138         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
32139      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
32140      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
32141      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
32142      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
32143      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
32144      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
32145      &  X5+X4*X6*X5)
32146         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
32147      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
32148      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
32149      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
32150      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
32151         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
32152      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
32153      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
32154      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
32155      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
32156      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
32157      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
32158      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
32159      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
32160         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
32161      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
32162      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
32163      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
32164      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
32165      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
32166         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
32167      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
32168      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
32169         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
32170      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
32171      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
32172      &  X10)
32173         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
32174      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
32175      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
32176      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
32177      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
32178      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
32179         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
32180      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
32181      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
32182      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
32183      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
32184      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
32185         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
32186      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
32187      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
32188      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
32189      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
32190      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
32191      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
32192      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
32193      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
32194         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
32195      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
32196         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
32197      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
32198      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
32199      &  X7)
32200         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
32201      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
32202      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
32203      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
32204      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
32205      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
32206      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
32207      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
32208      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
32209      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
32210      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
32211         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
32212      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
32213      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
32214      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
32215      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
32216      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
32217      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
32218      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
32219      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
32220      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
32221      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
32222         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
32223      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
32224      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
32225         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
32226      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
32227      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
32228      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
32229      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
32230      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
32231      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
32232      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
32233      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
32234         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
32235      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
32236      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
32237      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
32238      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
32239      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
32240         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
32241      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
32242      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
32243      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
32244      &  *X6)
32245         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
32246      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
32247      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
32248      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
32249      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
32250      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
32251      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
32252         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
32253      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
32254      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
32255      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
32256      &  X8)
32257         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
32258      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
32259      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
32260         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
32261      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
32262      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
32263      &  X9*X5)
32264         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
32265      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
32266      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
32267      &  X8*X5)
32268         FM(9,10)=0.5D0*(FMXX+FM(9,10))
32269         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
32270      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
32271      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
32272  
32273 C...Repackage matrix elements.
32274         DO 200 I=1,8
32275           DO 190 J=1,8
32276             RM(I,J)=FM(I,J)
32277   190     CONTINUE
32278   200   CONTINUE
32279         RM(7,7)=FM(7,7)-2D0*FM(9,9)
32280         RM(7,8)=FM(7,8)-2D0*FM(9,10)
32281         RM(8,8)=FM(8,8)-2D0*FM(10,10)
32282  
32283 C...Produce final result: matrix elements * colours * propagators.
32284         DO 220 I=1,8
32285           DO 210 J=I,8
32286             FAC=8D0
32287             IF(I.EQ.J)FAC=4D0
32288             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
32289   210     CONTINUE
32290   220   CONTINUE
32291         WTQQBH=-WTQQBH/256D0
32292  
32293       ELSE
32294 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
32295         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
32296      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
32297      &  *X6+X8*X7)
32298         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
32299      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
32300      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
32301      &  X5)
32302         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
32303      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
32304      &  *X9+X4*X8)
32305  
32306 C...Produce final result: matrix elements * propagators.
32307         A11=A11/DX(7)**2
32308         A12=A12/(DX(7)*DX(8))
32309         A22=A22/DX(8)**2
32310         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
32311       ENDIF
32312  
32313       RETURN
32314       END
32315  
32316 C*********************************************************************
32317  
32318 C...PYMSIN
32319 C...Initializes supersymmetry: finds sparticle masses and
32320 C...branching ratios and stores this information.
32321 C...AUTHOR: STEPHEN MRENNA
32322 C...Baryon- and lepton-number violating parameters by P. Z. Skands.
32323  
32324       SUBROUTINE PYMSIN
32325  
32326 C...Double precision and integer declarations.
32327       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32328       IMPLICIT INTEGER(I-N)
32329       INTEGER PYK,PYCHGE,PYCOMP
32330 C...Parameter statement to help give large particle numbers.
32331       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32332      &KEXCIT=4000000,KDIMEN=5000000)
32333 C...Commonblocks.
32334       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32335       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32336       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
32337       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
32338       COMMON/PYINT4/MWID(500),WIDS(500,5)
32339       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32340       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
32341       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
32342      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
32343       COMMON/PYHTRI/HHH(7)
32344       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT4/,/PYMSSM/,
32345      &/PYMSRV/,/PYSSMT/
32346  
32347 C...Local variables.
32348       DOUBLE PRECISION ALFA,BETA
32349       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
32350       INTEGER I,J,J1,I1,K1
32351       INTEGER KC,LKNT,IDLAM(400,3)
32352       DOUBLE PRECISION XLAM(0:400)
32353       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
32354       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
32355       DOUBLE PRECISION DELM,XMDIF
32356       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
32357       DOUBLE PRECISION ARG,SGNMU,R
32358       INTEGER IMSSM
32359       INTEGER IRPRTY
32360       INTEGER KFSUSY(36),MWIDSU(36),MDCYSU(36)
32361       SAVE MWIDSU,MDCYSU
32362       DATA KFSUSY/
32363      &1000001,2000001,1000002,2000002,1000003,2000003,
32364      &1000004,2000004,1000005,2000005,1000006,2000006,
32365      &1000011,2000011,1000012,2000012,1000013,2000013,
32366      &1000014,2000014,1000015,2000015,1000016,2000016,
32367      &1000021,1000022,1000023,1000025,1000035,1000024,
32368      &1000037,1000039,     25,     35,     36,     37/
32369       DATA INIT/0/
32370  
32371 C...Do nothing if SUSY not requested.
32372       IMSSM=IMSS(1)
32373       IF(IMSSM.EQ.0) RETURN
32374  
32375 C...Save copy of MWID(KC) and MDCY(KC,1) values before
32376 C...they are set to zero for the LSP.
32377       IF(INIT.EQ.0) THEN
32378         INIT=1
32379         DO 100 I=1,36
32380           KF=KFSUSY(I)
32381           KC=PYCOMP(KF)
32382           MWIDSU(I)=MWID(KC)
32383           MDCYSU(I)=MDCY(KC,1)
32384   100   CONTINUE
32385       ENDIF
32386  
32387 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
32388       DO 110 I=1,36
32389         KF=KFSUSY(I)
32390         KC=PYCOMP(KF)
32391         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
32392           MWID(KC)=MWIDSU(I)
32393           MDCY(KC,1)=MDCYSU(I)
32394         ENDIF
32395   110 CONTINUE
32396  
32397 C...First part of routine: set masses and couplings.
32398  
32399 C...Reset mixing values in sfermion sector to pure left/right.
32400       DO 120 I=1,16
32401         SFMIX(I,1)=1D0
32402         SFMIX(I,4)=1D0
32403         SFMIX(I,2)=0D0
32404         SFMIX(I,3)=0D0
32405   120 CONTINUE
32406  
32407 C...Common couplings.
32408       TANB=RMSS(5)
32409       BETA=ATAN(TANB)
32410       COSB=COS(BETA)
32411       SINB=TANB*COSB
32412       COS2B=COS(2D0*BETA)
32413       ALFA=RMSS(18)
32414       XMW2=PMAS(24,1)**2
32415       XMZ2=PMAS(23,1)**2
32416       XW=PARU(102)
32417  
32418 C...Define sparticle masses for a general MSSM simulation.
32419       IF(IMSSM.EQ.1) THEN
32420         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
32421         DO 130 I=1,5,2
32422           KC=PYCOMP(KSUSY1+I)
32423           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
32424           KC=PYCOMP(KSUSY2+I)
32425           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
32426           KC=PYCOMP(KSUSY1+I+1)
32427           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
32428           KC=PYCOMP(KSUSY2+I+1)
32429           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
32430   130   CONTINUE
32431         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
32432         IF(XARG.LT.0D0) THEN
32433           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
32434      &    ' FROM THE SUM RULE. '
32435           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
32436           RETURN
32437         ELSE
32438           XARG=SQRT(XARG)
32439         ENDIF
32440         DO 140 I=11,15,2
32441           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
32442           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
32443           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
32444           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
32445   140   CONTINUE
32446         IF(IMSS(8).EQ.1) THEN
32447           RMSS(13)=RMSS(6)
32448           RMSS(14)=RMSS(7)
32449         ENDIF
32450  
32451 C...Alternatively derive masses from SUGRA relations.
32452       ELSEIF(IMSSM.EQ.2) THEN
32453         CALL PYAPPS
32454 C...Or use ISASUSY
32455       ELSEIF(IMSSM.EQ.12) THEN
32456         CALL PYSUGI
32457         ALFA=RMSS(18)
32458         GOTO 170
32459       ENDIF
32460  
32461 C...Add in extra D-term contributions.
32462       IF(IMSS(7).EQ.1) THEN
32463         R=0.43D0
32464         DX=RMSS(23)
32465         DY=RMSS(24)
32466         DS=RMSS(25)
32467         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32468         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
32469         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
32470         WRITE(MSTU(11),*) 'C   DX = ',DX
32471         WRITE(MSTU(11),*) 'C   DY = ',DY
32472         WRITE(MSTU(11),*) 'C   DS = ',DS
32473         WRITE(MSTU(11),*) 'C                                      '
32474         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
32475         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
32476         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32477         DQ2=DY/6D0-DX/3D0-DS/3D0
32478         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
32479         DD2=DY/3D0+DX-2D0*DS/3D0
32480         DL2=-DY/2D0+DX-2D0*DS/3D0
32481         DE2=DY-DX/3D0-DS/3D0
32482         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
32483         DHD2=-DY/2D0-2D0*DX/3D0+DS
32484         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
32485      &  /ABS(COS2B)
32486         DMA2 = 2D0*DMU2+DHU2+DHD2
32487         DO 150 I=1,5,2
32488           KC=PYCOMP(KSUSY1+I)
32489           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
32490           KC=PYCOMP(KSUSY2+I)
32491           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
32492           KC=PYCOMP(KSUSY1+I+1)
32493           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
32494           KC=PYCOMP(KSUSY2+I+1)
32495           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
32496   150   CONTINUE
32497         DO 160 I=11,15,2
32498           KC=PYCOMP(KSUSY1+I)
32499           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
32500           KC=PYCOMP(KSUSY2+I)
32501           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
32502           KC=PYCOMP(KSUSY1+I+1)
32503           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
32504   160   CONTINUE
32505         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
32506           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
32507           STOP
32508         ENDIF
32509         SGNMU=SIGN(1D0,RMSS(4))
32510         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
32511         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
32512         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
32513         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
32514         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
32515         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
32516         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
32517         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
32518         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
32519         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
32520         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
32521         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
32522           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
32523           STOP
32524         ENDIF
32525         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
32526         RMSS(6)=SQRT(RMSS(6)**2+DL2)
32527         RMSS(7)=SQRT(RMSS(7)**2+DE2)
32528         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
32529         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
32530         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
32531         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
32532         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
32533       ENDIF
32534  
32535 C...Fix the third generation sfermions.
32536       CALL PYTHRG
32537  
32538 C...Fix the neutralino--chargino--gluino sector.
32539       CALL PYINOM
32540  
32541 C...Fix the Higgs sector.
32542       CALL PYHGGM(ALFA)
32543  
32544 C...Choose the Gunion-Haber convention.
32545       ALFA=-ALFA
32546       RMSS(18)=ALFA
32547  
32548 C...Print information on mass parameters.
32549       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
32550         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32551         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
32552         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
32553         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
32554         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
32555         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
32556         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
32557         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
32558         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
32559         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32560       ENDIF
32561       IF(IMSS(20).EQ.1) THEN
32562         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32563         WRITE(MSTU(11),*) ' DEBUG MODE '
32564         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
32565      &  UMIX(2,1),UMIX(2,2)
32566         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
32567      &  UMIXI(2,1),UMIXI(2,2)
32568         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
32569      &  VMIX(2,1),VMIX(2,2)
32570         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
32571      &  VMIXI(2,1),VMIXI(2,2)
32572         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
32573         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
32574         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
32575         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
32576         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
32577         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
32578         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
32579         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
32580         WRITE(MSTU(11),*) ' ALFA = ',ALFA
32581         WRITE(MSTU(11),*) ' BETA = ',BETA
32582         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
32583         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
32584         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
32585       ENDIF
32586  
32587 C...Set up the Higgs couplings - needed here since initialization
32588 C...in PYINRE did not yet occur when PYWIDT is called below.
32589   170 AL=ALFA
32590       BE=BETA
32591       SINA=SIN(AL)
32592       COSA=COS(AL)
32593       COSB=COS(BE)
32594       SINB=TANB*COSB
32595       SBMA=SIN(BE-AL)
32596       SAPB=SIN(AL+BE)
32597       CAPB=COS(AL+BE)
32598       CBMA=COS(BE-AL)
32599       C2A=COS(2D0*AL)
32600       C2B=COSB**2-SINB**2
32601 C...tanb (used for H+)
32602       PARU(141)=TANB
32603  
32604 C...Firstly: h
32605 C...Coupling to d-type quarks
32606       PARU(161)=SINA/COSB
32607 C...Coupling to u-type quarks
32608       PARU(162)=-COSA/SINB
32609 C...Coupling to leptons
32610       PARU(163)=PARU(161)
32611 C...Coupling to Z
32612       PARU(164)=SBMA
32613 C...Coupling to W
32614       PARU(165)=PARU(164)
32615  
32616 C...Secondly: H
32617 C...Coupling to d-type quarks
32618       PARU(171)=-COSA/COSB
32619 C...Coupling to u-type quarks
32620       PARU(172)=-SINA/SINB
32621 C...Coupling to leptons
32622       PARU(173)=PARU(171)
32623 C...Coupling to Z
32624       PARU(174)=CBMA
32625 C...Coupling to W
32626       PARU(175)=PARU(174)
32627 C...Coupling to h
32628       IF(IMSS(4).EQ.2) THEN
32629         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
32630       ELSE
32631         HHH(3)=HHH(3)+HHH(4)+HHH(5)
32632         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
32633      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
32634      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
32635      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
32636       ENDIF
32637 C...Coupling to H+
32638 C...Define later
32639       IF(IMSS(4).EQ.2) THEN
32640         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
32641       ELSE
32642         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
32643      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
32644      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
32645      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
32646       ENDIF
32647 C...Coupling to A
32648       IF(IMSS(4).EQ.2) THEN
32649         PARU(177)=COS(2D0*BE)*COS(BE+AL)
32650       ELSE
32651         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
32652      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
32653      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
32654      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
32655       ENDIF
32656 C...Coupling to H+
32657       IF(IMSS(4).EQ.2) THEN
32658         PARU(178)=PARU(177)
32659       ELSE
32660         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
32661       ENDIF
32662 C...Thirdly, A
32663 C...Coupling to d-type quarks
32664       PARU(181)=TANB
32665 C...Coupling to u-type quarks
32666       PARU(182)=1D0/PARU(181)
32667 C...Coupling to leptons
32668       PARU(183)=PARU(181)
32669       PARU(184)=0D0
32670       PARU(185)=0D0
32671 C...Coupling to Z h
32672       PARU(186)=COS(BE-AL)
32673 C...Coupling to Z H
32674       PARU(187)=SIN(BE-AL)
32675       PARU(188)=0D0
32676       PARU(189)=0D0
32677       PARU(190)=0D0
32678  
32679 C...Finally: H+
32680 C...Coupling to W h
32681       PARU(195)=COS(BE-AL)
32682  
32683 C...Tell that all Higgs couplings have been set.
32684       MSTP(4)=1
32685  
32686 C...Set R-Violating couplings.
32687 C...Set lambda couplings to common value or "natural values".
32688       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
32689         VIR3=1D0/(126D0)**3
32690         DO 200 IRK=1,3
32691           DO 190 IRI=1,3
32692             DO 180 IRJ=1,3
32693               IF (IRI.NE.IRJ) THEN
32694                 IF (IRI.LT.IRJ) THEN
32695                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
32696                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
32697      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
32698      &              PMAS(9+2*IRK,1)*VIR3)
32699                 ELSE
32700                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
32701                 ENDIF
32702               ELSE
32703                 RVLAM(IRI,IRJ,IRK)=0D0
32704               ENDIF
32705   180       CONTINUE
32706   190     CONTINUE
32707   200   CONTINUE
32708       ENDIF
32709 C...Set lambda' couplings to common value or "natural values".
32710       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
32711         VIR3=1D0/(126D0)**3
32712         DO 230 IRI=1,3
32713           DO 220 IRJ=1,3
32714             DO 210 IRK=1,3
32715               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
32716               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
32717      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
32718      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
32719   210       CONTINUE
32720   220     CONTINUE
32721   230   CONTINUE
32722       ENDIF
32723 C...Set lambda'' couplings to common value or "natural values".
32724       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
32725         VIR3=1D0/(126D0)**3
32726         DO 260 IRI=1,3
32727           DO 250 IRJ=1,3
32728             DO 240 IRK=1,3
32729               IF (IRJ.NE.IRK) THEN
32730                 IF (IRJ.LT.IRK) THEN
32731                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
32732                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
32733      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
32734      &              PMAS(2*IRK-1,1)*VIR3)
32735                 ELSE
32736                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
32737                 ENDIF
32738               ELSE
32739                 RVLAMB(IRI,IRJ,IRK) = 0D0
32740               ENDIF
32741   240       CONTINUE
32742   250     CONTINUE
32743   260   CONTINUE
32744       ENDIF
32745  
32746 C...Antisymmetrize couplings set by user
32747       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
32748         DO 290 IRI=1,3
32749           DO 280 IRJ=1,3
32750             DO 270 IRK=1,3
32751               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
32752                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
32753                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
32754               ENDIF
32755               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
32756                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
32757                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
32758               ENDIF
32759   270       CONTINUE
32760   280     CONTINUE
32761   290   CONTINUE
32762       ENDIF
32763  
32764 C...Second part of routine: set decay modes and branching ratios.
32765  
32766 C...Allow chi10 -> gravitino + gamma or not.
32767       KC=PYCOMP(KSUSY1+39)
32768       IF( IMSS(11) .NE. 0 ) THEN
32769         PMAS(KC,1)=RMSS(21)/1000000000D0
32770         PMAS(KC,2)=0.0001D0
32771         IRPRTY=0
32772         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
32773       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
32774         IRPRTY=0
32775         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
32776      &       ' ALLOWING SUSY LLE DECAYS'
32777         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
32778      &       ' ALLOWING SUSY LQD DECAYS'
32779         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
32780      &       ' ALLOWING SUSY UDD DECAYS'
32781         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
32782      &   ' --- Warning: R-Violating couplings possibly',
32783      &       ' incompatible with proton decay'
32784       ELSE
32785         PMAS(KC,1)=9999D0
32786         IRPRTY=1
32787       ENDIF
32788  
32789 C...Loop over sparticle and Higgs species.
32790       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
32791 C...Find the LSP or NLSP for a gravitino LSP
32792       ILSP=0
32793       PMLSP=1D20
32794       DO 300 I=1,36
32795         KF=KFSUSY(I)
32796         IF(KF.EQ.1000039) GOTO 300
32797         KC=PYCOMP(KF)
32798         IF(PMAS(KC,1).LT.PMLSP) THEN
32799           ILSP=I
32800           PMLSP=PMAS(KC,1)
32801         ENDIF
32802   300 CONTINUE
32803       DO 370 I=1,36
32804         KF=KFSUSY(I)
32805         KC=PYCOMP(KF)
32806         LKNT=0
32807  
32808 C...Sfermion decays.
32809         IF(I.LE.24) THEN
32810 C...First check to see if sneutrino is lighter than chi10.
32811           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
32812      &    PMAS(KC,1).LT.PMCHI1) THEN
32813           ELSE
32814             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
32815           ENDIF
32816  
32817 C...Gluino decays.
32818         ELSEIF(I.EQ.25) THEN
32819           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
32820           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
32821  
32822 C...Neutralino decays.
32823         ELSEIF(I.GE.26.AND.I.LE.29) THEN
32824           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
32825 C...chi10 stable or chi10 -> gravitino + gamma.
32826           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
32827             PMAS(KC,2)=1D-6
32828             MDCY(KC,1)=0
32829             MWID(KC)=0
32830           ENDIF
32831  
32832 C...Chargino decays.
32833         ELSEIF(I.GE.30.AND.I.LE.31) THEN
32834           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
32835  
32836 C...Gravitino is stable.
32837         ELSEIF(I.EQ.32) THEN
32838           MDCY(KC,1)=0
32839           MWID(KC)=0
32840  
32841 C...Higgs decays.
32842         ELSEIF(I.GE.33.AND.I.LE.36) THEN
32843 C...Calculate decays to non-SUSY particles.
32844           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
32845           LKNT=0
32846           DO 310 I1=0,100
32847             XLAM(I1)=0D0
32848   310     CONTINUE
32849           DO 330 I1=1,MDCY(KC,3)
32850             K1=MDCY(KC,2)+I1-1
32851             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
32852      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
32853             XLAM(I1)=WDTP(I1)
32854             XLAM(0)=XLAM(0)+XLAM(I1)
32855             DO 320 J1=1,3
32856               IDLAM(I1,J1)=KFDP(K1,J1)
32857   320       CONTINUE
32858             LKNT=LKNT+1
32859   330     CONTINUE
32860 C...Add the decays to SUSY particles.
32861           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
32862         ENDIF
32863 C...Zero the branching ratios for use in loop mode
32864 C...thanks to K. Matchev (FNAL)
32865         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
32866           BRAT(IDC)=0D0
32867   340   CONTINUE
32868  
32869 C...Set stable particles.
32870         IF(LKNT.EQ.0) THEN
32871           MDCY(KC,1)=0
32872           MWID(KC)=0
32873           PMAS(KC,2)=1D-6
32874           PMAS(KC,3)=1D-5
32875           PMAS(KC,4)=0D0
32876  
32877 C...Store branching ratios in the standard tables.
32878         ELSE
32879           IDC=MDCY(KC,2)+MDCY(KC,3)-1
32880           DELM=1D6
32881           DO 360 IL=1,LKNT
32882             IDCSV=IDC
32883   350       IDC=IDC+1
32884             BRAT(IDC)=0D0
32885             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
32886             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
32887      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
32888               BRAT(IDC)=XLAM(IL)/XLAM(0)
32889               XMDIF=PMAS(KC,1)
32890               IF(MDME(IDC,1).GE.1) THEN
32891                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
32892      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
32893                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
32894      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
32895               ENDIF
32896               IF(I.LE.32) THEN
32897                 IF(XMDIF.GE.0D0) THEN
32898                   DELM=MIN(DELM,XMDIF)
32899                 ELSE
32900                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
32901                   WRITE(MSTU(11),*) ' KF = ',KF
32902                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
32903                 ENDIF
32904               ENDIF
32905               GOTO 360
32906             ELSEIF(IDC.EQ.IDCSV) THEN
32907               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
32908      &        'channel not recognized:'
32909               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(I,J),J=1,3)
32910               GOTO 360
32911             ELSE
32912               GOTO 350
32913             ENDIF
32914   360     CONTINUE
32915  
32916 C...Store width, cutoff and lifetime.
32917           PMAS(KC,2)=XLAM(0)
32918           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
32919             PMAS(KC,3)=PMAS(KC,2)*10D0
32920           ELSE
32921             PMAS(KC,3)=0.95D0*DELM
32922           ENDIF
32923           IF(PMAS(KC,2).NE.0D0) THEN
32924             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
32925           ENDIF
32926         ENDIF
32927   370 CONTINUE
32928  
32929       RETURN
32930       END
32931  
32932 C*********************************************************************
32933  
32934 C...PYAPPS
32935 C...Uses approximate analytical formulae to determine the full set of
32936 C...MSSM parameters from SUGRA input.
32937 C...See M. Drees and S.P. Martin, hep-ph/9504124
32938  
32939       SUBROUTINE PYAPPS
32940  
32941 C...Double precision and integer declarations.
32942       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32943       IMPLICIT INTEGER(I-N)
32944       INTEGER PYK,PYCHGE,PYCOMP
32945 C...Parameter statement to help give large particle numbers.
32946       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32947      &KEXCIT=4000000,KDIMEN=5000000)
32948 C...Commonblocks.
32949       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32950       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32951       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32952       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
32953  
32954       IMSS(5)=0
32955       IMSS(8)=0
32956       XMT=PMAS(6,1)
32957       XMZ2=PMAS(23,1)**2
32958       XMW2=PMAS(24,1)**2
32959       TANB=RMSS(5)
32960       BETA=ATAN(TANB)
32961       XW=PARU(102)
32962       XMG=RMSS(1)
32963       XMG2=XMG*XMG
32964       XM0=RMSS(8)
32965       XM02=XM0*XM0
32966       AT=-RMSS(16)
32967       RMSS(15)=AT
32968       RMSS(17)=AT
32969       SINB=TANB/SQRT(TANB**2+1D0)
32970       COSB=SINB/TANB
32971  
32972       DTERM=XMZ2*COS(2D0*BETA)
32973       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
32974       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
32975       RMSS(6)=XMEL
32976       RMSS(7)=XMER
32977       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
32978       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
32979       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
32980       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
32981       DO 100 I=1,5,2
32982         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
32983         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
32984         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
32985         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
32986   100 CONTINUE
32987       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
32988       IF(XARG.LT.0D0) THEN
32989         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
32990      &  ' FROM THE SUM RULE. '
32991         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
32992         RETURN
32993       ELSE
32994         XARG=SQRT(XARG)
32995       ENDIF
32996       DO 110 I=11,15,2
32997         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
32998         PMAS(PYCOMP(KSUSY2+I),1)=XMER
32999         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
33000         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
33001   110 CONTINUE
33002       RMT=PYMRUN(6,PMAS(6,1)**2)
33003       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
33004      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
33005       RMB=PYMRUN(5,PMAS(6,1)**2)
33006       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
33007      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
33008       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
33009       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
33010      &SINB)**2)
33011       RMSS(16)=-ATP
33012       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
33013      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
33014       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
33015       XMU=SIGN(SQRT(XMU2),RMSS(4))
33016       RMSS(4)=XMU
33017       IF(XMA2.GT.0D0) THEN
33018         RMSS(19)=SQRT(XMA2)
33019       ELSE
33020         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
33021         STOP
33022       ENDIF
33023       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
33024       IF(ARG.GT.0D0) THEN
33025         RMSS(14)=SQRT(ARG)
33026       ELSE
33027         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
33028         STOP
33029       ENDIF
33030       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
33031       IF(ARG.GT.0D0) THEN
33032         RMSS(13)=SQRT(ARG)
33033       ELSE
33034         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
33035         STOP
33036       ENDIF
33037       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
33038       IF(ARG.GT.0D0) THEN
33039         RMSS(10)=SQRT(ARG)
33040       ELSE
33041         RMSS(10)=-SQRT(-ARG)
33042       ENDIF
33043       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
33044       IF(ARG.GT.0D0) THEN
33045         RMSS(12)=SQRT(ARG)
33046       ELSE
33047         RMSS(12)=-SQRT(-ARG)
33048       ENDIF
33049       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
33050       IF(ARG.GT.0D0) THEN
33051         RMSS(11)=SQRT(ARG)
33052       ELSE
33053         RMSS(11)=-SQRT(-ARG)
33054       ENDIF
33055  
33056       RETURN
33057       END
33058  
33059 C*********************************************************************
33060  
33061 C...PYSUGI
33062 C...Interface to ISASUSY version 7.61.
33063 C...Warning: if you use earlier versions, change dimension to
33064 C...SUPER(66) in /SSPAR/ and remove MHPNEG and ASM3 from /SUGPAS/.
33065 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
33066 C...Then converts to Gunion-Haber conventions.
33067  
33068       SUBROUTINE PYSUGI
33069       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33070  
33071       INTEGER PYK,PYCHGE,PYCOMP
33072       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33073      &KEXCIT=4000000,KDIMEN=5000000)
33074  
33075 C...Date of Change
33076       CHARACTER DOC*11
33077       PARAMETER (DOC='22 Nov 2002')
33078  
33079 C...ISASUGRA Input:
33080       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
33081 C...ISASUGRA Output
33082       CHARACTER*40 ISAVER,VISAJE
33083       REAL SUPER
33084       COMMON /SSPAR/ SUPER(69)
33085       COMMON /SUGMG/ MSS(32),GSS(29),MGUTSS,GGUTSS,AGUTSS,FTGUT,
33086      $FBGUT,FTAGUT,FNGUT
33087       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
33088       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
33089      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
33090      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3
33091       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
33092      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
33093      $FNMZ,AMNRMJ,ASM3
33094       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
33095 C SUPER: Filled by ISASUGRA.
33096 C SUPER(1)        = mass of ~g
33097 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
33098 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
33099 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
33100 C                          ,~tau_2
33101 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
33102 C SUPER(29)       = Higgsino mass = - mu
33103 C SUPER(30)       = ratio v2/v1 of vev's
33104 C SUPER(31:34)    = Signed neutralino masses
33105 C SUPER(35:50)    = Neutralino mixing matrix
33106 C SUPER(51:52)    = Signed chargino masses
33107 C SUPER(53:54)    = Chargino left, right mixing angles
33108 C SUPER(55:58)    = mass of h0, H0, A0, H+
33109 C SUPER(59)       = Higgs mixing angle alpha
33110 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
33111 C SUPER(66)       = Gravitino mass
33112 C GSS: Filled by ISASUGRA
33113 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
33114 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
33115 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
33116 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
33117 C     GSS(13) = M_h1^2     GSS(14) = M_h2^2     GSS(15) = M_er^2
33118 C     GSS(16) = M_el^2     GSS(17) = M_dnr^2    GSS(18) = M_upr^2
33119 C     GSS(19) = M_upl^2    GSS(20) = M_taur^2   GSS(21) = M_taul^2
33120 C     GSS(22) = M_btr^2    GSS(23) = M_tpr^2    GSS(24) = M_tpl^2
33121 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
33122 C     GSS(28) = M_nr       GSS(29) = A_n
33123 C MSS: Filled by ISASUGRA
33124 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
33125 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
33126 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
33127 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
33128 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
33129 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
33130 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
33131 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
33132 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
33133 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
33134 C     MSS(31) = ha0      MSS(32) = h+
33135 C Unification, filled by ISASUGRA if applicable.
33136 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
33137 C...SPYTHIA Input/Output:
33138       INTEGER IMSS
33139       DOUBLE PRECISION RMSS
33140       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33141       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33142      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33143       SAVE /SUGMG/,/SSPAR/
33144 C
33145 C...PYTHIA common blocks
33146 C...Parameters.
33147       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33148       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33149 C...Particle properties + some flavour parameters.
33150       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33151       SAVE  /PYDAT2/,/PYSSMT/
33152  
33153 C...Start by checking for incompatibilities/inconsistencies:
33154       DO 100 ICHK=2,9
33155         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
33156           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
33157      &         ,' option not used by PYSUGI'
33158         ENDIF
33159   100 CONTINUE
33160 C...ISAJET works with REAL numbers.
33161       MZERO=REAL(RMSS(8))
33162       MHLF=REAL(RMSS(1))
33163       AZERO=REAL(RMSS(16))
33164       TANB=REAL(RMSS(5))
33165       SGNMU=REAL(RMSS(4))
33166       MTOP=REAL(PMAS(6,1))
33167 C...Initialize MSSM parameter array
33168       DO 110 IPAR=1,66
33169         SUPER(IPAR)=0.0
33170   110 CONTINUE
33171 C...Call ISASUGRA
33172       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,1)
33173 C...Check whether ISASUSY thought the model was OK.
33174       IF (NOGOOD.NE.0) THEN
33175         IF (NOGOOD.EQ.1) CALL PYERRM(26
33176      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
33177         IF (NOGOOD.EQ.2) CALL PYERRM(26
33178      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
33179         IF (NOGOOD.EQ.3) CALL PYERRM(26
33180      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
33181         IF (NOGOOD.EQ.4) CALL PYERRM(26
33182      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
33183         IF (NOGOOD.EQ.7) CALL PYERRM(26
33184      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
33185         IF (NOGOOD.EQ.8) CALL PYERRM(26
33186      &       ,'(PYSUGI:) SUSY parameters give m(h0)^2 < 0.')
33187 C...Give warning, but don't stop, if LSP not ~chi_10.
33188         IF (NOGOOD.EQ.5) CALL PYERRM(16
33189      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
33190       ENDIF
33191 C...Warn about possible GUT scale tachyons.
33192       IF (ITACHY.NE.0) CALL PYERRM(16,
33193      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
33194  
33195 C...M1 and M2.
33196       RMSS(1)=GSS(7)
33197       RMSS(2)=GSS(8)
33198 C...Gluino Mass.
33199       RMSS(3)=SUPER(1)
33200 C...Mu = - Higgsino mass.
33201       RMSS(4)=-SUPER(29)
33202       RMSS(5)=TANB
33203 C...Slepton and squark masses. 2 first generations.
33204       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
33205       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
33206       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
33207       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
33208 C...Third generation.
33209       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
33210       RMSS(11)=SUPER(11)
33211       RMSS(12)=SUPER(15)
33212       RMSS(13)=SUPER(22)
33213       RMSS(14)=SUPER(23)
33214 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
33215       RMSS(15)=SUPER(62)
33216       RMSS(16)=SUPER(60)
33217       RMSS(17)=SUPER(64)
33218       RMSS(26)=SUPER(63)
33219       RMSS(27)=SUPER(61)
33220       RMSS(28)=SUPER(65)
33221 C...Higgs mixing angle alpha (Gunion-Haber convention).
33222       RMSS(18)=-SUPER(59)
33223 C...A0 mass.
33224       RMSS(19)=SUPER(57)
33225 C...GUT scale coupling
33226       RMSS(20)=AGUTSS
33227 C...Gravitino mass (for future compatibility)
33228       RMSS(21)=SUPER(66)
33229  
33230 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
33231 C...Higgs sector.
33232       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
33233       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
33234       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
33235       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
33236 C...Gluino.
33237       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
33238 C...Squarks and Sleptons.
33239       DO 120 ILR=1,2
33240         ILRM=ILR-1
33241         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
33242         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
33243         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
33244         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
33245         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
33246         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
33247         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
33248         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
33249         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
33250   120 CONTINUE
33251       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
33252       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
33253       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
33254 C...Neutralinos.
33255       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
33256       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
33257       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
33258       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
33259 C...Signed masses (extra minus from going to G-H convention).
33260       SMZ(1)=-SUPER(31)
33261       SMZ(2)=-SUPER(32)
33262       SMZ(3)=-SUPER(33)
33263       SMZ(4)=-SUPER(34)
33264 C...Charginos
33265       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
33266       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
33267 C...Signed masses (extra minus from going to G-H convention).
33268       SMW(1)=-SUPER(51)
33269       SMW(2)=-SUPER(52)
33270  
33271 C... Neutralino Mixing.
33272       DO 130 IN=1,4
33273         ZMIX(IN,1)= SUPER(38+4*(IN-1))
33274         ZMIX(IN,2)= SUPER(37+4*(IN-1))
33275         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
33276         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
33277   130 CONTINUE
33278 C...Chargino Mixing (PYTHIA same angle as HERWIG).
33279       THX=1D0
33280       THY=1D0
33281       IF (SUPER(53).GT.0) THX=-1D0
33282       IF (SUPER(54).GT.0) THY=-1D0
33283       UMIX(1,1) = -SIN(SUPER(53))
33284       UMIX(1,2) = -COS(SUPER(53))
33285       UMIX(2,1) = -THX*COS(SUPER(53))
33286       UMIX(2,2) = THX*SIN(SUPER(53))
33287       VMIX(1,1) = -SIN(SUPER(54))
33288       VMIX(1,2) = -COS(SUPER(54))
33289       VMIX(2,1) = -THY*COS(SUPER(54))
33290       VMIX(2,2) = THY*SIN(SUPER(54))
33291 C...Sfermion mixing (PYTHIA same angle as ISAJET)
33292       SFMIX(5,1)=COS(SUPER(63))
33293       SFMIX(5,2)=SIN(SUPER(63))
33294       SFMIX(5,3)=-SIN(SUPER(63))
33295       SFMIX(5,4)=COS(SUPER(63))
33296       SFMIX(6,1)=COS(SUPER(61))
33297       SFMIX(6,2)=SIN(SUPER(61))
33298       SFMIX(6,3)=-SIN(SUPER(61))
33299       SFMIX(6,4)=COS(SUPER(61))
33300       SFMIX(15,1)=COS(SUPER(65))
33301       SFMIX(15,2)=SIN(SUPER(65))
33302       SFMIX(15,3)=-SIN(SUPER(65))
33303       SFMIX(15,4)=COS(SUPER(65))
33304  
33305       IF (MSTP(122).NE.0) THEN
33306 C...Print a few lines to make the user know what's happening
33307         ISAVER=VISAJE()
33308         WRITE(MSTU(11),5000) DOC, ISAVER
33309         WRITE(MSTU(11),5100)
33310         WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU), MTOP
33311         WRITE(MSTU(11),5300)
33312         WRITE(MSTU(11),5500) 'EW scale masses'
33313         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
33314         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
33315      &       ,(SUPER(IP),IP=19,25,2)
33316         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
33317      &       ,IP=1,2)
33318         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
33319         WRITE(MSTU(11),5400)
33320         WRITE(MSTU(11),5500) 'Mixing structure'
33321         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
33322         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
33323      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
33324         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
33325      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
33326      &       ),(SFMIX(15,J),J=3,4)
33327         WRITE(MSTU(11),5400)
33328         WRITE(MSTU(11),5500) 'Couplings'
33329         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
33330         WRITE(MSTU(11),5400)
33331         WRITE(MSTU(11),6500)
33332       ENDIF
33333  
33334 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
33335 C...output by ISASUGRA.
33336       IMSS(4)=2
33337  
33338  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.1: PYTHIA/ISASUGRA '
33339      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
33340      &     ,1x,'-',1x,'P.Z. Skands'/1x,'*',2x,A/1x,'*')
33341  5100 FORMAT(1x,'*',1x,'ISASUGRA Input:'/1x,'*',1x,'----------------')
33342  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
33343      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
33344  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUGRA Output:'/1x,'*',1x
33345      &     ,'----------------')
33346  5400 FORMAT(1x,'*',1x,A)
33347  5500 FORMAT(1x,'*',1x,A,':')
33348  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
33349      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
33350  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
33351      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
33352      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
33353      &     ,1x))
33354  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
33355      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
33356      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
33357      &     .2,1x))
33358  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
33359      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
33360      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
33361  6000 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
33362      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
33363  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
33364      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
33365      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
33366      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
33367      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
33368      &     ,1x,F6.3,1x),'|')
33369  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
33370      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
33371      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
33372      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
33373      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
33374  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
33375      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
33376      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
33377      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
33378      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
33379      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
33380      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
33381  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
33382      &     ,4x,'Alpha_GUT = ',F8.2)
33383  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
33384       END
33385  
33386 C*********************************************************************
33387  
33388 C...PYRNMQ
33389 C...Determines the running mass of Squarks.
33390  
33391       FUNCTION PYRNMQ(ID,DTERM)
33392  
33393 C...Double precision and integer declarations.
33394       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33395       IMPLICIT INTEGER(I-N)
33396       INTEGER PYK,PYCHGE,PYCOMP
33397 C...Commonblock.
33398       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33399       SAVE /PYMSSM/
33400  
33401 C...Local variables.
33402       DOUBLE PRECISION PI,R
33403       DOUBLE PRECISION TOL
33404       DOUBLE PRECISION CI(3)
33405       EXTERNAL PYALPS
33406       DOUBLE PRECISION PYALPS
33407       DATA TOL/0.001D0/
33408       DATA PI,R/3.141592654D0,.61803399D0/
33409       DATA CI/0.47D0,0.07D0,0.02D0/
33410  
33411       C=1D0-R
33412       CA=CI(ID)
33413       AG=(0.71D0)**2/4D0/PI
33414       AG=RMSS(20)
33415       XM0=RMSS(8)
33416       XMG=RMSS(1)
33417       XM02=XM0*XM0
33418       XMG2=XMG*XMG
33419  
33420       AS=PYALPS(XM02+6D0*XMG2)
33421       CG=8D0/9D0*((AS/AG)**2-1D0)
33422       BX=XM02+(CA+CG)*XMG2+DTERM
33423       AX=MIN(50D0**2,0.5D0*BX)
33424       CX=MAX(2000D0**2,2D0*BX)
33425  
33426       X0=AX
33427       X3=CX
33428       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
33429         X1=BX
33430         X2=BX+C*(CX-BX)
33431       ELSE
33432         X2=BX
33433         X1=BX-C*(BX-AX)
33434       ENDIF
33435       AS1=PYALPS(X1)
33436       CG=8D0/9D0*((AS1/AG)**2-1D0)
33437       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
33438       AS2=PYALPS(X2)
33439       CG=8D0/9D0*((AS2/AG)**2-1D0)
33440       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
33441   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
33442         IF(F2.LT.F1) THEN
33443           X0=X1
33444           X1=X2
33445           X2=R*X1+C*X3
33446           F1=F2
33447           AS2=PYALPS(X2)
33448           CG=8D0/9D0*((AS2/AG)**2-1D0)
33449           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
33450         ELSE
33451           X3=X2
33452           X2=X1
33453           X1=R*X2+C*X0
33454           F2=F1
33455           AS1=PYALPS(X1)
33456           CG=8D0/9D0*((AS1/AG)**2-1D0)
33457           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
33458         ENDIF
33459         GOTO 100
33460       ENDIF
33461       IF(F1.LT.F2) THEN
33462         PYRNMQ=X1
33463         XMIN=X1
33464       ELSE
33465         PYRNMQ=X2
33466         XMIN=X2
33467       ENDIF
33468  
33469       RETURN
33470       END
33471  
33472 C*********************************************************************
33473  
33474 C...PYTHRG
33475 C...Calculates the mass eigenstates of the third generation sfermions.
33476 C...Created:  5-31-96
33477  
33478       SUBROUTINE PYTHRG
33479  
33480 C...Double precision and integer declarations.
33481       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33482       IMPLICIT INTEGER(I-N)
33483       INTEGER PYK,PYCHGE,PYCOMP
33484 C...Parameter statement to help give large particle numbers.
33485       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33486      &KEXCIT=4000000,KDIMEN=5000000)
33487 C...Commonblocks.
33488       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33489       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33490       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33491       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33492      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33493       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
33494  
33495 C...Local variables.
33496       DOUBLE PRECISION BETA
33497       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
33498       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
33499       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
33500       DOUBLE PRECISION ATR,AMQR,AMQL
33501       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
33502       INTEGER IF,I,J,II,JJ,IT,L
33503       LOGICAL DTERM
33504       DATA SMALL/1D-3/
33505       DATA ID1/10,10,13/
33506       DATA ID2/5,6,15/
33507       DATA ID3/15,16,17/
33508       DATA ID4/11,12,14/
33509       DATA DTERM/.TRUE./
33510  
33511       XMZ2=PMAS(23,1)**2
33512       XMW2=PMAS(24,1)**2
33513       TANB=RMSS(5)
33514       XMU=-RMSS(4)
33515       BETA=ATAN(TANB)
33516       COS2B=COS(2D0*BETA)
33517  
33518 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
33519  
33520       IOPT=IMSS(5)
33521       IF(IOPT.EQ.1) THEN
33522         CTT=DCOS(RMSS(27))
33523         CTT2=CTT**2
33524         STT=DSIN(RMSS(27))
33525         STT2=STT**2
33526         XM12=RMSS(10)**2
33527         XM22=RMSS(12)**2
33528         XMQL2=CTT2*XM12+STT2*XM22
33529         XMQR2=STT2*XM12+CTT2*XM22
33530         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
33531         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33532         RMSS(16)=ATOP
33533 C......SUBTRACT OUT D-TERM AND FERMION MASS
33534         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
33535         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
33536         IF(XMQL2.GE.0D0) THEN
33537           RMSS(10)=SQRT(XMQL2)
33538         ELSE
33539           RMSS(10)=-SQRT(-XMQL2)
33540         ENDIF
33541         IF(XMQR2.GE.0D0) THEN
33542           RMSS(12)=SQRT(XMQR2)
33543         ELSE
33544           RMSS(12)=-SQRT(-XMQR2)
33545         ENDIF
33546  
33547 C SAME FOR BOTTOM SQUARK
33548         CTT=DCOS(RMSS(26))
33549         CTT2=CTT**2
33550         STT=DSIN(RMSS(26))
33551         STT2=STT**2
33552         XM22=RMSS(11)**2
33553         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
33554         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
33555         IF(ABS(CTT).GE..9999D0) THEN
33556           ABOT=-XMU*TANB
33557           XMQR2=RMSS(11)**2
33558         ELSEIF(ABS(CTT).LE.1D-4) THEN
33559           ABOT=-XMU*TANB
33560           XMQR2=RMSS(11)**2
33561         ELSE
33562           XM12=(XMQL2-STT2*XM22)/CTT2
33563           XMQR2=STT2*XM12+CTT2*XM22
33564           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33565         ENDIF
33566         RMSS(15)=ABOT
33567 C......SUBTRACT OUT D-TERM AND FERMION MASS
33568         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
33569         IF(XMQR2.GE.0D0) THEN
33570           RMSS(11)=SQRT(XMQR2)
33571         ELSE
33572           RMSS(11)=-SQRT(-XMQR2)
33573         ENDIF
33574 C SAME FOR TAU SLEPTON
33575         CTT=DCOS(RMSS(28))
33576         CTT2=CTT**2
33577         STT=DSIN(RMSS(28))
33578         STT2=STT**2
33579         XM12=RMSS(13)**2
33580         XM22=RMSS(14)**2
33581         XMQL2=CTT2*XM12+STT2*XM22
33582         XMQR2=STT2*XM12+CTT2*XM22
33583         XMFR=PMAS(15,1)
33584         XMF2=XMFR**2
33585         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
33586         RMSS(17)=ATAU
33587 C......SUBTRACT OUT D-TERM AND FERMION MASS
33588         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
33589         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
33590         IF(XMQL2.GE.0D0) THEN
33591           RMSS(13)=SQRT(XMQL2)
33592         ELSE
33593           RMSS(13)=-SQRT(-XMQL2)
33594         ENDIF
33595         IF(XMQR2.GE.0D0) THEN
33596           RMSS(14)=SQRT(XMQR2)
33597         ELSE
33598           RMSS(14)=-SQRT(-XMQR2)
33599         ENDIF
33600       ENDIF
33601       DO 170 L=1,3
33602         AMQL=RMSS(ID1(L))
33603         IF(AMQL.LT.0D0) THEN
33604           XMQL2=-AMQL**2
33605         ELSE
33606           XMQL2=AMQL**2
33607         ENDIF
33608         ATR=RMSS(ID3(L))
33609         AMQR=RMSS(ID4(L))
33610         IF(AMQR.LT.0D0) THEN
33611           XMQR2=-AMQR**2
33612         ELSE
33613           XMQR2=AMQR**2
33614         ENDIF
33615         IF=ID2(L)
33616         XMF=PYMRUN(IF,PMAS(6,1)**2)
33617         XMF2=XMF**2
33618         AM2(1,1)=XMQL2+XMF2
33619         AM2(2,2)=XMQR2+XMF2
33620         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
33621         IF(DTERM) THEN
33622           IF(L.EQ.1) THEN
33623             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
33624             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
33625             AM2(1,2)=XMF*(ATR+XMU*TANB)
33626           ELSEIF(L.EQ.2) THEN
33627             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
33628             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
33629             AM2(1,2)=XMF*(ATR+XMU/TANB)
33630           ELSEIF(L.EQ.3) THEN
33631             IF(IMSS(8).EQ.1) THEN
33632               AM2(1,1)=RMSS(6)**2
33633               AM2(2,2)=RMSS(7)**2
33634               AM2(1,2)=0D0
33635               RMSS(13)=RMSS(6)
33636               RMSS(14)=RMSS(7)
33637             ELSE
33638               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
33639               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
33640               AM2(1,2)=XMF*(ATR+XMU*TANB)
33641             ENDIF
33642           ENDIF
33643         ENDIF
33644         AM2(2,1)=AM2(1,2)
33645         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
33646         IF(DETM.LT.0D0) THEN
33647           WRITE(MSTU(11),*) ID2(L),DETM,AM2
33648           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
33649         ENDIF
33650         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
33651         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
33652         XMF12=SAME-DIFF
33653         XMF22=SAME+DIFF
33654         IT=0
33655         IF(XMF22-XMF12.GT.0D0) THEN
33656           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
33657           RT(2,2) = RT(1,1)
33658           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
33659      &    AM2(1,2)/(XMF22-XMF12))
33660           RT(2,1) = -RT(1,2)
33661         ELSE
33662           RT(1,1) = 1D0
33663           RT(2,2) = RT(1,1)
33664           RT(1,2) = 0D0
33665           RT(2,1) = -RT(1,2)
33666         ENDIF
33667   100   CONTINUE
33668         IT=IT+1
33669  
33670         DO 140 I=1,2
33671           DO 130 JJ=1,2
33672             DI(I,JJ)=0D0
33673             DO 120 II=1,2
33674               DO 110 J=1,2
33675                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
33676   110         CONTINUE
33677   120       CONTINUE
33678   130     CONTINUE
33679   140   CONTINUE
33680  
33681         IF(DI(1,1).GT.DI(2,2)) THEN
33682           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
33683           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
33684           WRITE(MSTU(11),*) AM2
33685           WRITE(MSTU(11),*) DI
33686           WRITE(MSTU(11),*) RT
33687           DI(1,1)=-RT(2,1)
33688           DI(2,2)=RT(1,2)
33689           DI(1,2)=-RT(2,2)
33690           DI(2,1)=RT(1,1)
33691           DO 160 I=1,2
33692             DO 150 J=1,2
33693               RT(I,J)=DI(I,J)
33694   150       CONTINUE
33695   160     CONTINUE
33696           GOTO 100
33697         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
33698           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
33699      &    ' OFF DIAGONAL ELEMENTS '
33700           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
33701           WRITE(MSTU(11),*) DI
33702           WRITE(MSTU(11),*) ' ROTATION = ',RT
33703 C...STOP
33704         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
33705           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
33706      &    ' NEGATIVE MASSES '
33707           STOP
33708         ENDIF
33709         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
33710         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
33711         SFMIX(IF,1)=RT(1,1)
33712         SFMIX(IF,2)=RT(1,2)
33713         SFMIX(IF,3)=RT(2,1)
33714         SFMIX(IF,4)=RT(2,2)
33715   170 CONTINUE
33716  
33717 C.....TAU SNEUTRINO MASS...L=3
33718  
33719       XARG=AM2(1,1)+XMW2*COS2B
33720       IF(XARG.LT.0D0) THEN
33721         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
33722      &  ' FROM THE SUM RULE. '
33723         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
33724         RETURN
33725       ELSE
33726         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
33727       ENDIF
33728  
33729       RETURN
33730       END
33731  
33732 C*********************************************************************
33733  
33734 C...PYINOM
33735 C...Finds the mass eigenstates and mixing matrices for neutralinos
33736 C...and charginos.
33737  
33738       SUBROUTINE PYINOM
33739  
33740 C...Double precision and integer declarations.
33741       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33742       IMPLICIT INTEGER(I-N)
33743       INTEGER PYCOMP
33744 C...Parameter statement to help give large particle numbers.
33745       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33746      &KEXCIT=4000000,KDIMEN=5000000)
33747 C...Commonblocks.
33748       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33749       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33750       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33751       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33752      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33753       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
33754  
33755 C...Local variables.
33756       DOUBLE PRECISION XMW,XMZ,XM(4)
33757       DOUBLE PRECISION AR(4,4),WR(4),ZR(4,4),ZI(4,4),AI(4,4)
33758       DOUBLE PRECISION WI(4),FV1(4),FV2(4),FV3(4)
33759       DOUBLE PRECISION COSW,SINW
33760       DOUBLE PRECISION XMU
33761       DOUBLE PRECISION TANB,COSB,SINB
33762       DOUBLE PRECISION XM1,XM2,XM3,BETA
33763       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
33764       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
33765       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
33766       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
33767       DOUBLE PRECISION PYALPS,PYALEM
33768       DOUBLE PRECISION PYRNM3
33769       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
33770       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
33771       DATA KFNCHI/1000022,1000023,1000025,1000035/
33772  
33773       IOPT=IMSS(2)
33774       IF(IMSS(1).EQ.2) THEN
33775         IOPT=1
33776       ENDIF
33777 C...M1, M2, AND M3 ARE INDEPENDENT
33778       IF(IOPT.EQ.0) THEN
33779         XM1=RMSS(1)
33780         XM2=RMSS(2)
33781         XM3=RMSS(3)
33782       ELSEIF(IOPT.GE.1) THEN
33783         Q2=PMAS(23,1)**2
33784         AEM=PYALEM(Q2)
33785         A2=AEM/PARU(102)
33786         A1=AEM/(1D0-PARU(102))
33787         XM1=RMSS(1)
33788         XM2=RMSS(2)
33789         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
33790         IF(IOPT.EQ.1) THEN
33791           XM2=XM1*A2/A1*3D0/5D0
33792           RMSS(2)=XM2
33793         ELSEIF(IOPT.EQ.3) THEN
33794           XM1=XM2*5D0/3D0*A1/A2
33795           RMSS(1)=XM1
33796         ENDIF
33797         XM3=PYRNM3(XM2/A2)
33798         RMSS(3)=XM3
33799         IF(XM3.LE.0D0) THEN
33800           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
33801           STOP
33802         ENDIF
33803       ENDIF
33804  
33805 C...GLUINO MASS
33806       IF(IMSS(3).EQ.1) THEN
33807         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
33808       ELSE
33809         AQ=0D0
33810         DO 110 I=1,4
33811           DO 100 ILR=1,2
33812             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
33813             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
33814      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
33815   100     CONTINUE
33816   110   CONTINUE
33817  
33818         DO 130 I=5,6
33819           DO 120 ILR=1,2
33820             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
33821             RM2=PMAS(I,1)**2/XM3**2
33822             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
33823             IF(ARG.GE.0D0) THEN
33824               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
33825               AX0=ABS(X0)
33826               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
33827               AX1=ABS(X1)
33828               IF(X0.EQ.1D0) THEN
33829                 AT=-1D0
33830                 BT=0.25D0
33831               ELSEIF(X0.EQ.0D0) THEN
33832                 AT=0D0
33833                 BT=-0.25D0
33834               ELSE
33835                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
33836      &          0.5D0*X0**2*LOG(AX0)
33837                 BT=(-1D0-2D0*X0)/4D0
33838               ENDIF
33839               IF(X1.EQ.1D0) THEN
33840                 AT=-1D0+AT
33841                 BT=0.25D0+BT
33842               ELSEIF(X1.EQ.0D0) THEN
33843                 AT=0D0+AT
33844                 BT=-0.25D0+BT
33845               ELSE
33846                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
33847      &          X1**2*LOG(AX1)+AT
33848                 BT=(-1D0-2D0*X1)/4D0+BT
33849               ENDIF
33850               AQ=AQ+AT+BT
33851             ELSE
33852               X0=0.5D0*(1D0+RM2-RM1)
33853               Y0=-0.5D0*SQRT(-ARG)
33854               AMGX0=SQRT(X0**2+Y0**2)
33855               AM1X0=SQRT((1D0-X0)**2+Y0**2)
33856               ARGX0=ATAN2(-X0,-Y0)
33857               AR1X0=ATAN2(1D0-X0,Y0)
33858               X1=X0
33859               Y1=-Y0
33860               AMGX1=AMGX0
33861               AM1X1=AM1X0
33862               ARGX1=ATAN2(-X1,-Y1)
33863               AR1X1=ATAN2(1D0-X1,Y1)
33864               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
33865      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
33866               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
33867               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
33868      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
33869               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
33870               AQ=AQ+AT+BT
33871             ENDIF
33872   120     CONTINUE
33873   130   CONTINUE
33874         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
33875      &  /(2D0*PARU(2))*(15D0+AQ))
33876       ENDIF
33877  
33878 C...NEUTRALINO MASSES
33879       DO 150 I=1,4
33880         DO 140 J=1,4
33881           AI(I,J)=0D0
33882   140   CONTINUE
33883   150 CONTINUE
33884       XMZ=PMAS(23,1)
33885       XMW=PMAS(24,1)
33886       XMU=RMSS(4)
33887       SINW=SQRT(PARU(102))
33888       COSW=SQRT(1D0-PARU(102))
33889       TANB=RMSS(5)
33890       BETA=ATAN(TANB)
33891       COSB=COS(BETA)
33892       SINB=TANB*COSB
33893  
33894 C... Definitions:
33895 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
33896 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
33897       AR(1,1) = XM1*COS(RMSS(30))
33898       AI(1,1) = XM1*SIN(RMSS(30))
33899       AR(2,2) = XM2*COS(RMSS(31))
33900       AI(2,2) = XM2*SIN(RMSS(31))
33901       AR(3,3) = 0D0
33902       AR(4,4) = 0D0
33903       AR(1,2) = 0D0
33904       AR(2,1) = 0D0
33905       AR(1,3) = -XMZ*SINW*COSB
33906       AR(3,1) = AR(1,3)
33907       AR(1,4) = XMZ*SINW*SINB
33908       AR(4,1) = AR(1,4)
33909       AR(2,3) = XMZ*COSW*COSB
33910       AR(3,2) = AR(2,3)
33911       AR(2,4) = -XMZ*COSW*SINB
33912       AR(4,2) = AR(2,4)
33913       AR(3,4) = -XMU*COS(RMSS(33))
33914       AI(3,4) = -XMU*SIN(RMSS(33))
33915       AR(4,3) = -XMU*COS(RMSS(33))
33916       AI(4,3) = -XMU*SIN(RMSS(33))
33917 C      CALL PYEIG4(AR,WR,ZR)
33918       CALL PYEICG(4,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
33919       IF(IERR.NE.0) THEN
33920        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
33921       ENDIF
33922       DO 160 I=1,4
33923         INDEX(I)=I
33924         XM(I)=ABS(WR(I))
33925   160 CONTINUE
33926       DO 180 I=2,4
33927         K=I
33928         DO 170 J=I-1,1,-1
33929           IF(XM(K).LT.XM(J)) THEN
33930             ITMP=INDEX(J)
33931             XTMP=XM(J)
33932             INDEX(J)=INDEX(K)
33933             XM(J)=XM(K)
33934             INDEX(K)=ITMP
33935             XM(K)=XTMP
33936             K=K-1
33937           ELSE
33938             GOTO 180
33939           ENDIF
33940   170   CONTINUE
33941   180 CONTINUE
33942  
33943  
33944       DO 210 I=1,4
33945         K=INDEX(I)
33946         SMZ(I)=WR(K)
33947         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
33948         S=0D0
33949         DO 190 J=1,4
33950           S=S+ZR(J,K)**2+ZI(J,K)**2
33951   190   CONTINUE
33952         DO 200 J=1,4
33953           ZMIX(I,J)=ZR(J,K)/SQRT(S)
33954           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
33955           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
33956           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
33957   200   CONTINUE
33958   210 CONTINUE
33959  
33960 C...CHARGINO MASSES
33961 C.....Find eigenvectors of X X^*
33962       AI(1,1) = 0D0
33963       AI(2,2) = 0D0
33964       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
33965       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
33966       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
33967      &XMU*COS(RMSS(33))*SINB)
33968       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
33969      &XMU*SIN(RMSS(33))*SINB)
33970       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
33971      &XMU*COS(RMSS(33))*SINB)
33972       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
33973      &XMU*SIN(RMSS(33))*SINB)
33974       CALL PYEICG(4,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
33975       IF(IERR.NE.0) THEN
33976        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
33977       ENDIF
33978       INDEX(1)=1
33979       INDEX(2)=2
33980       IF(WR(2).LT.WR(1)) THEN
33981         INDEX(1)=2
33982         INDEX(2)=1
33983       ENDIF
33984  
33985       DO 240 I=1,2
33986         K=INDEX(I)
33987         SMW(I)=SQRT(WR(K))
33988         S=0D0
33989         DO 220 J=1,2
33990           S=S+ZR(J,K)**2+ZI(J,K)**2
33991   220   CONTINUE
33992         DO 230 J=1,2
33993           UMIX(I,J)=ZR(J,K)/SQRT(S)
33994           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
33995           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
33996           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
33997   230   CONTINUE
33998   240 CONTINUE
33999       IF(ABS(SMW(1)).LT.ABS(SMZ(1))) THEN
34000        SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
34001       ENDIF
34002       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
34003       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
34004  
34005 C.....Find eigenvectors of X^* X
34006       AI(1,1) = 0D0
34007       AI(2,2) = 0D0
34008       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
34009       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
34010       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
34011      &XMU*COS(RMSS(33))*COSB)
34012       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
34013      &XMU*SIN(RMSS(33))*COSB)
34014       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
34015      &XMU*COS(RMSS(33))*COSB)
34016       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
34017      &XMU*SIN(RMSS(33))*COSB)
34018       CALL PYEICG(4,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
34019       IF(IERR.NE.0) THEN
34020        WRITE(MSTU(11),*) ' PROBLEM WITH PYEICG IN PYINOM '
34021       ENDIF
34022       INDEX(1)=1
34023       INDEX(2)=2
34024       IF(WR(2).LT.WR(1)) THEN
34025         INDEX(1)=2
34026         INDEX(2)=1
34027       ENDIF
34028  
34029       DO 270 I=1,2
34030         K=INDEX(I)
34031         S=0D0
34032         DO 250 J=1,2
34033           S=S+ZR(J,K)**2+ZI(J,K)**2
34034   250   CONTINUE
34035         DO 260 J=1,2
34036           VMIX(I,J)=ZR(J,K)/SQRT(S)
34037           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
34038           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
34039           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
34040   260   CONTINUE
34041   270 CONTINUE
34042  
34043  
34044       RETURN
34045       END
34046  
34047 C*********************************************************************
34048  
34049 C...PYRNM3
34050 C...Calculates the running of M3, the SU(3) gluino mass parameter.
34051  
34052       FUNCTION PYRNM3(RGUT)
34053  
34054 C...Double precision and integer declarations.
34055       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34056       IMPLICIT INTEGER(I-N)
34057       INTEGER PYK,PYCHGE,PYCOMP
34058  
34059 C...Local variables.
34060       DOUBLE PRECISION R
34061       DOUBLE PRECISION TOL
34062       EXTERNAL PYALPS
34063       DOUBLE PRECISION PYALPS
34064       DATA TOL/0.001D0/
34065       DATA R/0.61803399D0/
34066  
34067       C=1D0-R
34068  
34069       BX=RGUT*PYALPS(RGUT**2)
34070       AX=MIN(50D0,BX*0.5D0)
34071       CX=MAX(2000D0,2D0*BX)
34072  
34073       X0=AX
34074       X3=CX
34075       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
34076         X1=BX
34077         X2=BX+C*(CX-BX)
34078       ELSE
34079         X2=BX
34080         X1=BX-C*(BX-AX)
34081       ENDIF
34082       AS1=PYALPS(X1**2)
34083       F1=ABS(X1-RGUT*AS1)
34084       AS2=PYALPS(X2**2)
34085       F2=ABS(X2-RGUT*AS2)
34086   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
34087         IF(F2.LT.F1) THEN
34088           X0=X1
34089           X1=X2
34090           X2=R*X1+C*X3
34091           F1=F2
34092           AS2=PYALPS(X2**2)
34093           F2=ABS(X2-RGUT*AS2)
34094         ELSE
34095           X3=X2
34096           X2=X1
34097           X1=R*X2+C*X0
34098           F2=F1
34099           AS1=PYALPS(X1**2)
34100           F1=ABS(X1-RGUT*AS1)
34101         ENDIF
34102         GOTO 100
34103       ENDIF
34104       IF(F1.LT.F2) THEN
34105         PYRNM3=X1
34106         XMIN=X1
34107       ELSE
34108         PYRNM3=X2
34109         XMIN=X2
34110       ENDIF
34111  
34112       RETURN
34113       END
34114  
34115 C*********************************************************************
34116  
34117 C...PYEIG4
34118 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
34119 C...Specific application: mixing in neutralino sector.
34120  
34121       SUBROUTINE PYEIG4(A,W,Z)
34122  
34123 C...Double precision and integer declarations.
34124       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34125       IMPLICIT INTEGER(I-N)
34126       INTEGER PYK,PYCHGE,PYCOMP
34127  
34128 C...Arrays: in call and local.
34129       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
34130  
34131 C...Coefficients of fourth-degree equation from matrix.
34132 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
34133       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
34134       B2=0D0
34135       DO 110 I=1,3
34136         DO 100 J=I+1,4
34137           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
34138   100   CONTINUE
34139   110 CONTINUE
34140       B1=0D0
34141       B0=0D0
34142       DO 120 I=1,4
34143         I1=MOD(I,4)+1
34144         I2=MOD(I+1,4)+1
34145         I3=MOD(I+2,4)+1
34146         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
34147      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
34148      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
34149         B0=B0+(-1D0)**(I+1)*A(1,I)*(
34150      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
34151      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
34152      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
34153   120 CONTINUE
34154  
34155 C...Coefficients of third-degree equation needed for
34156 C...separation into two second-degree equations.
34157 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
34158       C2=-B2
34159       C1=B1*B3-4D0*B0
34160       C0=-B1**2-B0*B3**2+4D0*B0*B2
34161       CQ=C1/3D0-C2**2/9D0
34162       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
34163       CQR=CQ**3+CR**2
34164  
34165 C...Cases with one or three real roots.
34166       IF(CQR.GE.0D0) THEN
34167         S1=(CR+SQRT(CQR))**(1D0/3D0)
34168         S2=(CR-SQRT(CQR))**(1D0/3D0)
34169         U=S1+S2-C2/3D0
34170       ELSE
34171         SABS=SQRT(-CQ)
34172         THE=ACOS(CR/SABS**3)/3D0
34173         SRE=SABS*COS(THE)
34174         U=2D0*SRE-C2/3D0
34175       ENDIF
34176  
34177 C...Find and solve two second-degree equations.
34178       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
34179       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
34180       Q1=U/2D0+SQRT(U**2/4D0-B0)
34181       Q2=U/2D0-SQRT(U**2/4D0-B0)
34182       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
34183         QSAV=Q1
34184         Q1=Q2
34185         Q2=QSAV
34186       ENDIF
34187       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
34188       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
34189       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
34190       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
34191  
34192 C...Order eigenvalues in asceding mass.
34193       W(1)=X(1)
34194       DO 150 I1=2,4
34195         DO 130 I2=I1-1,1,-1
34196           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
34197           W(I2+1)=W(I2)
34198   130   CONTINUE
34199   140   W(I2+1)=X(I1)
34200   150 CONTINUE
34201  
34202 C...Find equation system for eigenvectors.
34203       DO 250 I=1,4
34204         DO 170 J1=1,4
34205           D(J1,J1)=A(J1,J1)-W(I)
34206           DO 160 J2=J1+1,4
34207             D(J1,J2)=A(J1,J2)
34208             D(J2,J1)=A(J2,J1)
34209   160     CONTINUE
34210   170   CONTINUE
34211  
34212 C...Find largest element in matrix.
34213         DAMAX=0D0
34214         DO 190 J1=1,4
34215           DO 180 J2=1,4
34216             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
34217             JA=J1
34218             JB=J2
34219             DAMAX=ABS(D(J1,J2))
34220   180     CONTINUE
34221   190   CONTINUE
34222  
34223 C...Subtract others by multiple of row selected above.
34224         DAMAX=0D0
34225         DO 210 J3=JA+1,JA+3
34226           J1=J3-4*((J3-1)/4)
34227           RL=D(J1,JB)/D(JA,JB)
34228           DO 200 J2=1,4
34229             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
34230             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
34231             JC=J1
34232             JD=J2
34233             DAMAX=ABS(D(J1,J2))
34234   200     CONTINUE
34235   210   CONTINUE
34236  
34237 C...Do one more subtraction of a row.
34238         DAMAX=0D0
34239         DO 230 J3=JC+1,JC+3
34240           J1=J3-4*((J3-1)/4)
34241           IF(J1.EQ.JA) GOTO 230
34242           RL=D(J1,JD)/D(JC,JD)
34243           DO 220 J2=1,4
34244             IF(J2.EQ.JB) GOTO 220
34245             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
34246             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
34247             JE=J1
34248             DAMAX=ABS(D(J1,J2))
34249   220     CONTINUE
34250   230   CONTINUE
34251  
34252 C...Construct unnormalized eigenvector.
34253         JF1=JD+1-4*(JD/4)
34254         JF2=JD+2-4*((JD+1)/4)
34255         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
34256         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
34257         E(JF1)=-D(JE,JF2)
34258         E(JF2)=D(JE,JF1)
34259         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
34260         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
34261      &  D(JA,JB)
34262  
34263 C...Normalize and fill in final array.
34264         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
34265         SGN=(-1D0)**INT(PYR(0)+0.5D0)
34266         DO 240 J=1,4
34267           Z(I,J)=SGN*E(J)/EA
34268   240   CONTINUE
34269   250 CONTINUE
34270  
34271       RETURN
34272       END
34273  
34274 C*********************************************************************
34275  
34276 C...PYHGGM
34277 C...Determines the Higgs boson mass spectrum using several inputs.
34278  
34279       SUBROUTINE PYHGGM(ALPHA)
34280  
34281 C...Double precision and integer declarations.
34282       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34283       IMPLICIT INTEGER(I-N)
34284       INTEGER PYK,PYCHGE,PYCOMP
34285 C...Parameter statement to help give large particle numbers.
34286       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34287      &KEXCIT=4000000,KDIMEN=5000000)
34288 C...Commonblocks.
34289       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34290       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34291       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
34292       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
34293       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
34294  
34295 C...Local variables.
34296       DOUBLE PRECISION AT,AB,XMU,TANB
34297       DOUBLE PRECISION ALPHA
34298       INTEGER IHOPT
34299       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
34300       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
34301       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
34302       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
34303  
34304       IHOPT=IMSS(4)
34305       IF(IHOPT.EQ.2) THEN
34306         ALPHA=RMSS(18)
34307         RETURN
34308       ENDIF
34309       AT=RMSS(16)
34310       AB=RMSS(15)
34311       DMGL=RMSS(3)
34312       XMU=RMSS(4)
34313       TANB=RMSS(5)
34314  
34315       DMA=RMSS(19)
34316       DTANB=TANB
34317       DMQ=RMSS(10)
34318       DMUR=RMSS(12)
34319       DMDR=RMSS(11)
34320       DMTOP=PMAS(6,1)
34321       DMC=PMAS(PYCOMP(KSUSY1+37),1)
34322       DAU=AT
34323       DAD=AB
34324       DMU=XMU
34325       RMSS(40)=0D0
34326       RMSS(41)=0D0
34327  
34328       IF(IHOPT.EQ.0) THEN
34329         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
34330      &  DMHCH,DSA,DCA,DTANBA)
34331       ELSEIF(IHOPT.EQ.1) THEN
34332         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
34333      &  DMHCH,DSA,DCA,DTANBA)
34334         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
34335      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
34336      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
34337         RMSS(40)=DDT
34338         RMSS(41)=DDB
34339         DMH=DMHP
34340         DHM=DHMP
34341         DMA=DAMP
34342         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
34343          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
34344          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
34345      & PMAS(PYCOMP(1000006),1),DSTOP2
34346         ENDIF
34347         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
34348          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
34349          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
34350      & PMAS(PYCOMP(2000006),1),DSTOP1
34351         ENDIF
34352         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
34353          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
34354          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
34355      & PMAS(PYCOMP(1000005),1),DSBOT2
34356         ENDIF
34357         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
34358          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
34359          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
34360      & PMAS(PYCOMP(2000005),1),DSBOT1
34361         ENDIF
34362  
34363       ENDIF
34364  
34365       ALPHA=ACOS(DCA)
34366  
34367       PMAS(25,1)=DMH
34368       PMAS(35,1)=DHM
34369       PMAS(36,1)=DMA
34370       PMAS(37,1)=DMHCH
34371  
34372       RETURN
34373       END
34374  
34375 C*********************************************************************
34376  
34377 C...PYSUBH
34378 C...This routine computes the renormalization group improved
34379 C...values of Higgs masses and couplings in the MSSM.
34380  
34381 C...Program based on the work by M. Carena, J.R. Espinosa,
34382 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
34383  
34384 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
34385 C...All masses in GeV units. MA is the CP-odd Higgs mass,
34386 C...MTOP is the physical top mass, MQ and MUR are the soft
34387 C...supersymmetry breaking mass parameters of left handed
34388 C...and right handed stops respectively, AU and AD are the
34389 C...stop and sbottom trilinear soft breaking terms,
34390 C...respectively,  and MU is the supersymmetric
34391 C...Higgs mass parameter. We use the  conventions from
34392 C...the physics report of Haber and Kane: left right
34393 C...stop mixing term proportional to (AU - MU/TANB)
34394 C...We use as input TANB defined at the scale MTOP
34395  
34396 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
34397 C...where MH and HM are the lightest and heaviest CP-even
34398 C...Higgs masses, MHCH is the charged Higgs mass and
34399 C...ALPHA is the Higgs mixing angle
34400 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
34401  
34402 C...Range of validity:
34403 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
34404 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
34405 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
34406 C...are the sbottom  mass eigenvalues, respectively. This
34407 C...range automatically excludes the existence of tachyons.
34408 C...For the charged Higgs mass computation, the method is
34409 C...valid if
34410 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
34411 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
34412 C...where M_SUSY**2 is the average of the squared stop mass
34413 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
34414 C...masses have been assumed to be of order of the stop ones
34415 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
34416  
34417       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
34418      &XMHCH,SA,CA,TANBA)
34419  
34420 C...Double precision and integer declarations.
34421       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34422       IMPLICIT INTEGER(I-N)
34423       INTEGER PYK,PYCHGE,PYCOMP
34424 C...Parameter statement to help give large particle numbers.
34425       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34426      &KEXCIT=4000000,KDIMEN=5000000)
34427 C...Commonblocks.
34428       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34429       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34430       COMMON/PYHTRI/HHH(7)
34431       SAVE /PYDAT1/,/PYDAT2/
34432  
34433 C...Local variables.
34434       DOUBLE PRECISION PYALEM,PYALPS
34435       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
34436       DOUBLE PRECISION XMHCH,SA,CA
34437       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
34438       DOUBLE PRECISION Q02
34439       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
34440       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
34441       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
34442       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
34443       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
34444       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
34445       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
34446       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
34447  
34448       XMZ = PMAS(23,1)
34449       Q02=XMZ**2
34450       AEM=PYALEM(Q02)
34451       ALP1=AEM/(1D0-PARU(102))
34452       ALP2=AEM/PARU(102)
34453       ALPH3Z=PYALPS(Q02)
34454  
34455       ALP1 = 0.0101D0
34456       ALP2 = 0.0337D0
34457       ALPH3Z = 0.12D0
34458  
34459       V = 174.1D0
34460       PI = PARU(1)
34461       TANBA = TANB
34462       TANBT = TANB
34463  
34464 C...MBOTTOM(MTOP) = 3. GEV
34465       XMB = PYMRUN(5,XMTOP**2)
34466       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
34467      &LOG(XMTOP**2/XMZ**2))
34468  
34469 C...RMTOP= RUNNING TOP QUARK MASS
34470       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
34471       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
34472       T = LOG(XMS**2/XMTOP**2)
34473       SINB = TANB/((1D0 + TANB**2)**0.5D0)
34474       COSB = SINB/TANB
34475 C...IF(MA.LE.XMTOP) TANBA = TANBT
34476       IF(XMA.GT.XMTOP)
34477      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
34478      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
34479      &LOG(XMA**2/XMTOP**2))
34480  
34481       SINBT = TANBT/SQRT(1D0 + TANBT**2)
34482       COSBT = 1D0/SQRT(1D0 + TANBT**2)
34483 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
34484       G1 = SQRT(ALP1*4D0*PI)
34485       G2 = SQRT(ALP2*4D0*PI)
34486       G3 = SQRT(ALP3*4D0*PI)
34487       HU = RMTOP/V/SINBT
34488       HD =  XMB/V/COSBT
34489       HU2=HU*HU
34490       HD2=HD*HD
34491       HU4=HU2*HU2
34492       HD4=HD2*HD2
34493       AU2=AU**2
34494       AD2=AD**2
34495       XMS2=XMS**2
34496       XMS3=XMS**3
34497       XMS4=XMS2*XMS2
34498       XMU2=XMU*XMU
34499       PI2=PI*PI
34500  
34501       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
34502       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
34503       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
34504      &+ 3D0*(AU + AD)**2/XMS2)/6D0
34505       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
34506      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
34507      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
34508      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
34509      &-  16D0*G3**2) *T/16D0/PI2)
34510       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
34511      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
34512      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
34513      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
34514      &-  16D0*G3**2) *T/16D0/PI2)
34515       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
34516      &(HU2 + HD2)*T/16D0/PI2)
34517      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
34518      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
34519      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
34520      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
34521      &-  16D0*G3**2) *T/16D0/PI2)
34522      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
34523      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
34524      &-  16D0*G3**2) *T/16D0/PI2)
34525       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
34526      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
34527      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
34528      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
34529      &XMS4)*
34530      &(1+ (6D0*HU2 -2D0* HD2
34531      &-  16D0*G3**2) *T/16D0/PI2)
34532      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
34533      &XMS4)*
34534      &(1+ (6D0*HD2 -2D0* HU2/2D0
34535      &-  16D0*G3**2) *T/16D0/PI2)
34536       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
34537      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
34538      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
34539      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
34540       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
34541      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34542      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
34543      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34544       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
34545      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34546      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
34547      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
34548       HHH(1)=XLAM1
34549       HHH(2)=XLAM2
34550       HHH(3)=XLAM3
34551       HHH(4)=XLAM4
34552       HHH(5)=XLAM5
34553       HHH(6)=XLAM6
34554       HHH(7)=XLAM7
34555       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
34556      &2D0* XLAM6*SINBT*COSBT
34557      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
34558      &+ XLAM5*COSBT**2)
34559       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
34560      &XLAM6*COSBT**2
34561      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
34562      &2D0* XLAM6* COSBT*SINBT
34563      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34564      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
34565      &((XLAM1* COSBT**2 +2D0*
34566      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
34567      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
34568      &*SINBT**2
34569      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
34570      &+ XLAM4) + XLAM6*COSBT**2
34571      &+ XLAM7* SINBT**2))
34572  
34573       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
34574       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
34575       XHM = SQRT(XHM2)
34576       XMH = SQRT(XMH2)
34577       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
34578       XMHCH = SQRT(XMHCH2)
34579  
34580       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
34581      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
34582      &XLAM6* COSBT*SINBT
34583      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
34584      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34585      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
34586      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
34587  
34588       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
34589      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
34590      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
34591      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
34592      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
34593      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
34594      &XLAM6* COSBT*SINBT
34595      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
34596      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
34597      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
34598  
34599       SA = -SINALP
34600       CA = -COSALP
34601  
34602   100 CONTINUE
34603  
34604       RETURN
34605       END
34606  
34607 C*********************************************************************
34608  
34609 C...PYPOLE
34610 C...This subroutine computes the CP-even higgs and CP-odd pole
34611 c...Higgs masses and mixing angles.
34612  
34613 C...Program based on the work by M. Carena, M. Quiros
34614 C...and C.E.M. Wagner, "Effective potential methods and
34615 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
34616  
34617 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
34618 C...AT,AB,MU
34619 C...where MCHI is the largest chargino mass, MA is the running
34620 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
34621 C...expectaion values at the scale MTOP, MQ is the third generation
34622 C...left handed squark mass parameter, MUR is the third generation
34623 C...right handed stop mass parameter, MDR is the third generation
34624 C...right handed sbottom mass parameter, MTOP is the pole top quark
34625 C...mass; AT,AB are the soft supersymmetry breaking trilinear
34626 C...couplings of the stop and sbottoms, respectively, and MU is the
34627 C...supersymmetric mass parameter
34628  
34629 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
34630 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
34631 C...masses are given, what makes the running of the program
34632 c...much faster and it is quite generally a good approximation
34633 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
34634 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
34635 c...and if IHIGGS=3, then h,H,A polarizations are computed
34636  
34637 C...Output: MH and MHP which are the lightest CP-even Higgs running
34638 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
34639 C...Higgs running and pole masses, repectively; SA and CA are the
34640 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
34641 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
34642 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
34643 C...the value of TANB at the CP-odd Higgs mass scale
34644  
34645 C...This subroutine makes use of CERN library subroutine
34646 C...integration package, which makes the computation of the
34647 C...pole Higgs masses somewhat faster. We thank P. Janot for this
34648 C...improvement. Those who are not able to call the CERN
34649 C...libraries, please use the subroutine SUBHPOLE2.F, which
34650 C...although somewhat slower, gives identical results
34651  
34652       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
34653      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
34654  
34655 C...Double precision and integer declarations.
34656       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34657       IMPLICIT INTEGER(I-N)
34658  
34659 C...Parameters.
34660       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34661       SAVE /PYDAT1/
34662       INTEGER PYK,PYCHGE,PYCOMP
34663  
34664 C...Local variables.
34665       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
34666      &SSBOT2(2),B(2,2),COUPB(2,2),
34667      &HCOUPT(2,2),HCOUPB(2,2),
34668      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
34669  
34670       DELTA(1,1) = 1D0
34671       DELTA(2,2) = 1D0
34672       DELTA(1,2) = 0D0
34673       DELTA(2,1) = 0D0
34674       V = 174.1D0
34675       XMZ=91.18D0
34676       PI=PARU(1)
34677       RXMT=PYMRUN(6,XMT**2)
34678       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
34679      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
34680  
34681       SINB = TANB/(TANB**2+1D0)**0.5D0
34682       COSB = 1D0/(TANB**2+1D0)**0.5D0
34683       COS2B = SINB**2 - COSB**2
34684       SINBPA = SINB*CA + COSB*SA
34685       COSBPA = COSB*CA - SINB*SA
34686       RMBOT = PYMRUN(5,XMT**2)
34687       XMQ2 = XMQ**2
34688       XMUR2 = XMUR**2
34689       IF(XMUR.LT.0D0) XMUR2=-XMUR2
34690       XMDR2 = XMDR**2
34691       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
34692       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
34693       IF(XMST11.LT.0D0) GOTO 500
34694       IF(XMST22.LT.0D0) GOTO 500
34695       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
34696       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
34697       IF(XMSB11.LT.0D0) GOTO 500
34698       IF(XMSB22.LT.0D0) GOTO 500
34699 C      WMST11 = RXMT**2 + XMQ2
34700 C      WMST22 = RXMT**2 + XMUR2
34701       XMST12 = RXMT*(AT - XMU/TANB)
34702       XMSB12 = RMBOT*(AB - XMU*TANB)
34703  
34704 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34705 C...STOP EIGENVALUES CALCULATION
34706 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34707  
34708       STOP12 = 0.5D0*(XMST11+XMST22) +
34709      &0.5D0*((XMST11+XMST22)**2 -
34710      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
34711       STOP22 = 0.5D0*(XMST11+XMST22) -
34712      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
34713      &XMST12**2))**0.5D0
34714  
34715       IF(STOP22.LT.0D0) GOTO 500
34716       SSTOP2(1) = STOP12
34717       SSTOP2(2) = STOP22
34718       STOP1 = STOP12**0.5D0
34719       STOP2 = STOP22**0.5D0
34720 C      STOP1W = STOP1
34721 C      STOP2W = STOP2
34722  
34723       IF(XMST12.EQ.0D0) XST11 = 1D0
34724       IF(XMST12.EQ.0D0) XST12 = 0D0
34725       IF(XMST12.EQ.0D0) XST21 = 0D0
34726       IF(XMST12.EQ.0D0) XST22 = 1D0
34727  
34728       IF(XMST12.EQ.0D0) GOTO 110
34729  
34730   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
34731       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
34732       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
34733       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
34734  
34735   110 T(1,1) = XST11
34736       T(2,2) = XST22
34737       T(1,2) = XST12
34738       T(2,1) = XST21
34739  
34740       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
34741      &0.5D0*((XMSB11+XMSB22)**2 -
34742      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
34743       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
34744      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
34745      &XMSB12**2))**0.5D0
34746       IF(SBOT22.LT.0D0) GOTO 500
34747       SBOT1 = SBOT12**0.5D0
34748       SBOT2 = SBOT22**0.5D0
34749  
34750       SSBOT2(1) = SBOT12
34751       SSBOT2(2) = SBOT22
34752  
34753       IF(XMSB12.EQ.0D0) XSB11 = 1D0
34754       IF(XMSB12.EQ.0D0) XSB12 = 0D0
34755       IF(XMSB12.EQ.0D0) XSB21 = 0D0
34756       IF(XMSB12.EQ.0D0) XSB22 = 1D0
34757  
34758       IF(XMSB12.EQ.0D0) GOTO 130
34759  
34760   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
34761       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
34762       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
34763       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
34764  
34765   130 B(1,1) = XSB11
34766       B(2,2) = XSB22
34767       B(1,2) = XSB12
34768       B(2,1) = XSB21
34769  
34770  
34771       SINT = 0.2320D0
34772       SQR = DSQRT(2D0)
34773       VP = 174.1D0*SQR
34774  
34775 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34776 C...STARTING OF LIGHT HIGGS
34777 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34778  
34779       IF(IHIGGS.EQ.0) GOTO 490
34780  
34781       DO 150 I = 1,2
34782         DO 140 J = 1,2
34783           COUPT(I,J) =
34784      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
34785      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
34786      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
34787      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
34788      &    T(1,J)*T(2,I))
34789   140   CONTINUE
34790   150 CONTINUE
34791  
34792  
34793       DO 170 I = 1,2
34794         DO 160 J = 1,2
34795           COUPB(I,J) =
34796      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
34797      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
34798      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
34799      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
34800      &    B(1,J)*B(2,I))
34801   160   CONTINUE
34802   170 CONTINUE
34803  
34804       PRUN = XMH
34805       EPS = 1D-4*PRUN
34806       ITER = 0
34807   180 ITER = ITER + 1
34808       DO 230  I3 = 1,3
34809  
34810         PR(I3)=PRUN+(I3-2)*EPS/2
34811         P2=PR(I3)**2
34812         POLT = 0D0
34813         DO 200 I = 1,2
34814           DO 190 J = 1,2
34815             POLT = POLT + COUPT(I,J)**2*3D0*
34816      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34817   190     CONTINUE
34818   200   CONTINUE
34819  
34820         POLB = 0D0
34821         DO 220 I = 1,2
34822           DO 210 J = 1,2
34823             POLB = POLB + COUPB(I,J)**2*3D0*
34824      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34825   210     CONTINUE
34826   220   CONTINUE
34827 C        RXMT2 = RXMT**2
34828         XMT2=XMT**2
34829  
34830         POLTT =
34831      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34832      &  CA**2/SINB**2 *
34833      &  (-2D0*XMT**2+0.5D0*P2)*
34834      &  PYFINT(P2,XMT2,XMT2)
34835  
34836         POL = POLT + POLB + POLTT
34837         POLAR(I3) = P2 - XMH**2 - POL
34838   230 CONTINUE
34839       DERIV = (POLAR(3)-POLAR(1))/EPS
34840       DRUN = - POLAR(2)/DERIV
34841       PRUN = PRUN + DRUN
34842       P2 = PRUN**2
34843       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
34844       GOTO 180
34845   240 CONTINUE
34846  
34847       XMHP = DSQRT(P2)
34848  
34849 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34850 C...END OF LIGHT HIGGS
34851 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34852  
34853   250 IF(IHIGGS.EQ.1) GOTO 490
34854  
34855 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34856 C... STARTING OF HEAVY HIGGS
34857 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34858  
34859       DO 270 I = 1,2
34860         DO 260 J = 1,2
34861           HCOUPT(I,J) =
34862      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
34863      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
34864      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
34865      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
34866      &    T(1,J)*T(2,I))
34867   260   CONTINUE
34868   270 CONTINUE
34869  
34870       DO 290 I = 1,2
34871         DO 280 J = 1,2
34872           HCOUPB(I,J) =
34873      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
34874      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
34875      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
34876      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
34877      &    B(1,J)*B(2,I))
34878           HCOUPB(I,J)=0D0
34879   280   CONTINUE
34880   290 CONTINUE
34881  
34882       PRUN = HM
34883       EPS = 1D-4*PRUN
34884       ITER = 0
34885   300 ITER = ITER + 1
34886       DO 350 I3 = 1,3
34887         PR(I3)=PRUN+(I3-2)*EPS/2
34888         HP2=PR(I3)**2
34889  
34890         HPOLT = 0D0
34891         DO 320 I = 1,2
34892           DO 310 J = 1,2
34893             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
34894      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34895   310     CONTINUE
34896   320   CONTINUE
34897  
34898         HPOLB = 0D0
34899         DO 340 I = 1,2
34900           DO 330 J = 1,2
34901             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
34902      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34903   330     CONTINUE
34904   340   CONTINUE
34905  
34906 C        RXMT2 = RXMT**2
34907         XMT2  = XMT**2
34908  
34909         HPOLTT =
34910      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34911      &  SA**2/SINB**2 *
34912      &  (-2D0*XMT**2+0.5D0*HP2)*
34913      &  PYFINT(HP2,XMT2,XMT2)
34914  
34915         HPOL = HPOLT + HPOLB + HPOLTT
34916         POLAR(I3) =HP2-HM**2-HPOL
34917   350 CONTINUE
34918       DERIV = (POLAR(3)-POLAR(1))/EPS
34919       DRUN = - POLAR(2)/DERIV
34920       PRUN = PRUN + DRUN
34921       HP2 = PRUN**2
34922       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
34923       GOTO 300
34924   360 CONTINUE
34925  
34926  
34927   370 CONTINUE
34928       HMP = HP2**0.5D0
34929  
34930 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34931 C... END OF HEAVY HIGGS
34932 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34933  
34934       IF(IHIGGS.EQ.2) GOTO 490
34935  
34936 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34937 C...BEGINNING OF PSEUDOSCALAR HIGGS
34938 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34939  
34940       DO 390 I = 1,2
34941         DO 380 J = 1,2
34942           ACOUPT(I,J) =
34943      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
34944      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
34945   380   CONTINUE
34946   390 CONTINUE
34947       DO 410 I = 1,2
34948         DO 400 J = 1,2
34949           ACOUPB(I,J) =
34950      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
34951      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
34952   400   CONTINUE
34953   410 CONTINUE
34954  
34955       PRUN = XMA
34956       EPS = 1D-4*PRUN
34957       ITER = 0
34958   420 ITER = ITER + 1
34959       DO 470 I3 = 1,3
34960         PR(I3)=PRUN+(I3-2)*EPS/2
34961         AP2=PR(I3)**2
34962         APOLT = 0D0
34963         DO 440 I = 1,2
34964           DO 430 J = 1,2
34965             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
34966      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
34967   430     CONTINUE
34968   440   CONTINUE
34969         APOLB = 0D0
34970         DO 460 I = 1,2
34971           DO 450 J = 1,2
34972             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
34973      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
34974   450     CONTINUE
34975   460   CONTINUE
34976 C        RXMT2 = RXMT**2
34977         XMT2=XMT**2
34978         APOLTT =
34979      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
34980      &  COSB**2/SINB**2 *
34981      &  (-0.5D0*AP2)*
34982      &  PYFINT(AP2,XMT2,XMT2)
34983         APOL = APOLT + APOLB + APOLTT
34984         POLAR(I3) = AP2 - XMA**2 -APOL
34985   470 CONTINUE
34986       DERIV = (POLAR(3)-POLAR(1))/EPS
34987       DRUN = - POLAR(2)/DERIV
34988       PRUN = PRUN + DRUN
34989       AP2 = PRUN**2
34990       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
34991       GOTO 420
34992   480 CONTINUE
34993  
34994       AMP = DSQRT(AP2)
34995  
34996 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34997 C...END OF PSEUDOSCALAR HIGGS
34998 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
34999  
35000       IF(IHIGGS.EQ.3) GOTO 490
35001  
35002   490 CONTINUE
35003       RETURN
35004   500 CONTINUE
35005       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
35006       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
35007       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
35008       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
35009       STOP
35010       END
35011  
35012 C*********************************************************************
35013  
35014 C...PYRGHM
35015 C...Auxiliary to PYPOLE.
35016  
35017       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
35018      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
35019       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
35020       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
35021 C...Parameters.
35022       INTEGER MSTU,MSTJ
35023       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35024       SAVE /PYDAT1/
35025  
35026       MZ = 91.18D0
35027       PI = PARU(1)
35028       V  = 174.1D0
35029       ALPHA1 = 0.0101D0
35030       ALPHA2 = 0.0337D0
35031       ALPHA3Z = 0.12D0
35032       TANBA = TANB
35033       TANBT = TANB
35034 C     MBOTTOM(MTOP) = 3. GEV
35035       MB = PYMRUN(5,MTOP**2)
35036       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
35037      *LOG(MTOP**2/MZ**2))
35038 C     RMTOP= RUNNING TOP QUARK MASS
35039       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
35040       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
35041       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
35042       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
35043 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35044 C
35045 C    NEW DEFINITION, TGLU.
35046 C
35047 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35048       TGLU = LOG(MGLU**2/MTOP**2)
35049       SINB = TANB/DSQRT(1D0 + TANB**2)
35050       COSB = SINB/TANB
35051       IF(MA.GT.MTOP)
35052      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
35053      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
35054      *LOG(MA**2/MTOP**2))
35055       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
35056       SINB = TANBT/SQRT(1D0 + TANBT**2)
35057       COSB = 1D0/DSQRT(1D0 + TANBT**2)
35058       G1 = SQRT(ALPHA1*4D0*PI)
35059       G2 = SQRT(ALPHA2*4D0*PI)
35060       G3 = SQRT(ALPHA3*4D0*PI)
35061       HU = RMTOP/V/SINB
35062       HD =  MB/V/COSB
35063       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
35064      *SBOT1,SBOT2,DELTAMT,DELTAMB)
35065       IF(MQ.GT.MUR) TP = TQ - TU
35066       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
35067       IF(MQ.GT.MUR) TDP = TU
35068       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
35069       IF(MQ.GT.MD) TPD = TQ - TD
35070       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
35071       IF(MQ.GT.MD) TDPD = TD
35072       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
35073  
35074       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
35075       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
35076      * HD**2*(G1**2/3D0+G2**2)*TPD
35077  
35078       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
35079       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
35080      * HU**2*(-G1**2/3D0+G2**2)*TP
35081  
35082 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35083 C
35084 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
35085 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
35086 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
35087 C  TWO STOPS.
35088 C
35089 C
35090 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35091  
35092       DLAMBDAP2 = 0D0
35093       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
35094        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
35095         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
35096        ENDIF
35097  
35098        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
35099         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
35100        ENDIF
35101  
35102        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
35103         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
35104        ENDIF
35105  
35106        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
35107         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
35108        ENDIF
35109  
35110        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
35111         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
35112        ENDIF
35113  
35114        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
35115         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
35116        ENDIF
35117       ENDIF
35118       DLAMBDA3 = 0D0
35119       DLAMBDA4 = 0D0
35120       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
35121       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
35122      *(G2**2-G1**2/3D0)*TPD
35123       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
35124      *1D0/16D0/PI**2*G1**2*HU**2*TP
35125       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
35126      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
35127       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
35128       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
35129      *HD**2*TPD
35130       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
35131      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
35132      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
35133      *+ (3D0*HD**2/2D0 + HU**2/2D0
35134      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
35135      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
35136      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
35137       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
35138      *(TP + TDP)/8D0/PI**2)
35139      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
35140      *+ (3D0*HU**2/2D0 + HD**2/2D0
35141      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
35142      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
35143      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
35144       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
35145      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
35146      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
35147       LAMBDA4 = (- G2**2/2D0)*(1D0
35148      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
35149      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
35150  
35151       LAMBDA5 = 0D0
35152       LAMBDA6 = 0D0
35153       LAMBDA7 = 0D0
35154  
35155       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
35156      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
35157  
35158       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
35159      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
35160       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
35161      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
35162  
35163       M2(2,1) = M2(1,2)
35164 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35165 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
35166 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35167  
35168       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
35169  
35170       IF(MCHI.GT.MSSUSY) GOTO 100
35171       IF(MCHI.LT.MTOP) MCHI=MTOP
35172  
35173       TCHAR=LOG(MSSUSY**2/MCHI**2)
35174  
35175       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
35176       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
35177      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
35178  
35179       DELTAM112=2D0*DELTAL12*V**2*COSB**2
35180       DELTAM222=2D0*DELTAL12*V**2*SINB**2
35181       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
35182  
35183       M2(1,1)=M2(1,1)+DELTAM112
35184       M2(2,2)=M2(2,2)+DELTAM222
35185       M2(1,2)=M2(1,2)+DELTAM122
35186       M2(2,1)=M2(2,1)+DELTAM122
35187  
35188   100 CONTINUE
35189  
35190 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35191 CCC  END OF CHARGINOS/NEUTRALINOS
35192 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35193  
35194       DO 120 I = 1,2
35195         DO 110 J = 1,2
35196           M2P(I,J) = M2(I,J) + VH(I,J)
35197   110   CONTINUE
35198   120 CONTINUE
35199       TRM2P = M2P(1,1) + M2P(2,2)
35200       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
35201       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
35202       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
35203       HMP = DSQRT(HM2P)
35204       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
35205       MCH=DSQRT(MCH2)
35206       IF(MH2P.LT.0.) GOTO 130
35207       MHP = SQRT(MH2P)
35208       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
35209       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
35210       IF(COS2ALPHA.GE.0.) THEN
35211         ALPHA = ASIN(SIN2ALPHA)/2D0
35212       ELSE
35213         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
35214       ENDIF
35215       SA = SIN(ALPHA)
35216       CA = COS(ALPHA)
35217 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35218 C
35219 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
35220 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
35221 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
35222 C
35223 C
35224 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35225       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
35226       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
35227   130 CONTINUE
35228       RETURN
35229       END
35230  
35231 C*********************************************************************
35232  
35233 C...PYGFXX
35234 C...Auxiliary to PYRGHM.
35235  
35236       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
35237      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
35238       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
35239       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
35240 C...Commonblocks.
35241       INTEGER MSTU,MSTJ,KCHG
35242       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35243       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35244       SAVE /PYDAT1/,/PYDAT2/
35245  
35246       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
35247  
35248       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
35249      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
35250  
35251       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
35252       MQ2 = MQ**2
35253       MUR2 = MUR**2
35254       MD2 = MD**2
35255       TANBA = TANB
35256       SINBA = TANBA/DSQRT(TANBA**2+1D0)
35257       COSBA = SINBA/TANBA
35258  
35259       SINB = TANB/DSQRT(TANB**2+1D0)
35260       COSB = SINB/TANB
35261  
35262       PI = PARU(1)
35263       MZ = PMAS(23,1)
35264       MW = PMAS(24,1)
35265       SW = 1D0-MW**2/MZ**2
35266       V  = 174.1D0
35267  
35268       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
35269       G2 = DSQRT(0.0336D0*4D0*PI)
35270       G1 = DSQRT(0.0101D0*4D0*PI)
35271  
35272       IF(MQ.GT.MUR) MST = MQ
35273       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
35274  
35275       MSUSYT = DSQRT(MST**2  + MTOP**2)
35276  
35277       IF(MQ.GT.MD) MSB = MQ
35278       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
35279  
35280       MB = PYMRUN(5,MSB**2)
35281       MSUSYB = DSQRT(MSB**2 + MB**2)
35282       TT = LOG(MSUSYT**2/MTOP**2)
35283       TB = LOG(MSUSYB**2/MTOP**2)
35284  
35285       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
35286       HT = RMTOP/(V*SINB)
35287       HTST = RMTOP/V
35288       HB = MB/V/COSB
35289       G32 = ALPHA3*4D0*PI
35290       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
35291       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
35292       AL2 = 3D0/8D0/PI**2*HT**2
35293 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
35294 C      ALST = 3./8./PI**2*HTST**2
35295       AL1 = 3D0/8D0/PI**2*HB**2
35296  
35297       AL(1,1) = AL1
35298       AL(1,2) = (AL2+AL1)/2D0
35299       AL(2,1) = (AL2+AL1)/2D0
35300       AL(2,2) = AL2
35301  
35302       IF(MA.GT.MTOP) THEN
35303         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
35304      *        LOG(MTOP**2/MA**2))
35305         H1I = VI* COSBA
35306         H2I = VI*SINBA
35307         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
35308         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
35309         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
35310         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
35311       ELSE
35312         VI = V
35313         H1I = VI*COSB
35314         H2I = VI*SINB
35315         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
35316         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
35317         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
35318         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
35319       ENDIF
35320  
35321       TANBST = H2T/H1T
35322       SINBT = TANBST/DSQRT(1D0+TANBST**2)
35323  
35324       TANBSB = H2B/H1B
35325       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
35326       COSBB = SINBB/TANBSB
35327  
35328       DELTAMT = 0D0
35329       DELTAMB = 0D0
35330  
35331       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
35332       MTOP2 = DSQRT(MTOP4)
35333       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
35334      * /(1D0+DELTAMB)**4
35335       MBOT2 = DSQRT(MBOT4)
35336  
35337       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
35338      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35339      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35340      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
35341       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
35342      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35343      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35344      *  MQ2 - MUR2)**2*0.25D0
35345      *  + MTOP2*(AT-XMU/TANBST)**2)
35346       IF(STOP22.LT.0.) GOTO 120
35347       SBOT12 = (MQ2 + MD2)*.5D0
35348      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35349      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35350      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35351       SBOT22 = (MQ2 + MD2)*.5D0
35352      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35353      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35354      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35355       IF(SBOT22.LT.0.) SBOT22 = 10000D0
35356  
35357       STOP1 = DSQRT(STOP12)
35358       STOP2 = DSQRT(STOP22)
35359       SBOT1 = DSQRT(SBOT12)
35360       SBOT2 = DSQRT(SBOT22)
35361  
35362 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35363 C
35364 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
35365 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
35366 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
35367 C     INDUCED CORRECTIONS.
35368 C
35369 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35370  
35371       X=SBOT1
35372       Y=SBOT2
35373       Z=XMGL
35374       IF(X.EQ.Y) X = X - 0.00001D0
35375       IF(X.EQ.Z) X = X - 0.00002D0
35376       IF(Y.EQ.Z) Y = Y - 0.00003D0
35377  
35378       T1=T(X,Y,Z)
35379       X=STOP1
35380       Y=STOP2
35381       Z=XMU
35382       IF(X.EQ.Y) X = X - 0.00001D0
35383       IF(X.EQ.Z) X = X - 0.00002D0
35384       IF(Y.EQ.Z) Y = Y - 0.00003D0
35385       T2=T(X,Y,Z)
35386       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
35387      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
35388       X=STOP1
35389       Y=STOP2
35390       Z=XMGL
35391       IF(X.EQ.Y) X = X - 0.00001D0
35392       IF(X.EQ.Z) X = X - 0.00002D0
35393       IF(Y.EQ.Z) Y = Y - 0.00003D0
35394       T3=T(X,Y,Z)
35395       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
35396  
35397 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35398 C
35399 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
35400 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
35401 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
35402 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
35403 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
35404 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
35405 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
35406 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
35407 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
35408 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
35409 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
35410 C
35411 C
35412 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35413  
35414       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
35415       MTOP2 = DSQRT(MTOP4)
35416       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
35417      * /(1D0+DELTAMB)**4
35418       MBOT2 = DSQRT(MBOT4)
35419  
35420       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
35421      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35422      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35423      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
35424       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
35425      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
35426      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
35427      *  MQ2 - MUR2)**2*0.25D0
35428      *  + MTOP2*(AT-XMU/TANBST)**2)
35429  
35430       IF(STOP22.LT.0.) GOTO 120
35431       SBOT12 = (MQ2 + MD2)*.5D0
35432      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35433      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35434      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35435       SBOT22 = (MQ2 + MD2)*.5D0
35436      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
35437      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
35438      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
35439       IF(SBOT22.LT.0.) GOTO 120
35440  
35441  
35442       STOP1 = DSQRT(STOP12)
35443       STOP2 = DSQRT(STOP22)
35444       SBOT1 = DSQRT(SBOT12)
35445       SBOT2 = DSQRT(SBOT22)
35446  
35447 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35448 CCC   D-TERMS
35449 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
35450       STW=SW
35451  
35452       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
35453      *         LOG(STOP1/STOP2)
35454      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
35455      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
35456  
35457       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
35458      *        LOG(SBOT1/SBOT2)
35459      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
35460      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
35461  
35462       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
35463      *         (-.5D0*LOG(STOP12/STOP22)
35464      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
35465      *         G(STOP12,STOP22))
35466  
35467       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
35468      *         (.5D0*LOG(SBOT12/SBOT22)
35469      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
35470      *        G(SBOT12,SBOT22))
35471  
35472       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
35473      *  (MQ2+MBOT2)/(MD2+MBOT2))
35474      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
35475      *  LOG(SBOT1**2/SBOT2**2)) +
35476      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
35477      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
35478  
35479       VH3T(1,1) =
35480      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
35481      * -STOP2**2))**2*G(STOP12,STOP22)
35482  
35483       VH3B(1,1)=VH3B(1,1)+
35484      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
35485  
35486       VH3T(1,1) = VH3T(1,1) +
35487      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
35488  
35489       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
35490      *  (MQ2+MTOP2)/(MUR2+MTOP2))
35491      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
35492      *  LOG(STOP1**2/STOP2**2)) +
35493      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
35494      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
35495  
35496       VH3B(2,2) =
35497      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
35498      * -SBOT2**2))**2*G(SBOT12,SBOT22)
35499  
35500       VH3T(2,2)=VH3T(2,2)+
35501      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
35502       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
35503       VH3T(1,2) = -
35504      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
35505      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
35506      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
35507  
35508       VH3B(1,2) =
35509      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
35510      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
35511      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
35512  
35513  
35514       VH3T(1,2)=VH3T(1,2) +
35515      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
35516  
35517       VH3B(1,2)=VH3B(1,2) +
35518      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
35519  
35520       VH3T(2,1) = VH3T(1,2)
35521       VH3B(2,1) = VH3B(1,2)
35522  
35523 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
35524 C      TU = LOG((MUR2+MTOP2)/MTOP2)
35525 C      TQD = LOG((MQ2 + MB**2)/MB**2)
35526 C      TD = LOG((MD2+MB**2)/MB**2)
35527  
35528       DO 110 I = 1,2
35529         DO 100 J = 1,2
35530           VH(I,J) =
35531      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
35532      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
35533      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
35534      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
35535   100   CONTINUE
35536   110 CONTINUE
35537  
35538       GOTO 150
35539   120 DO 140 I =1,2
35540         DO 130 J = 1,2
35541           VH(I,J) = -1D15
35542   130   CONTINUE
35543   140 CONTINUE
35544  
35545  
35546   150 RETURN
35547       END
35548  
35549  
35550  
35551  
35552  
35553 C*********************************************************************
35554  
35555 C...PYFINT
35556 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
35557  
35558       FUNCTION PYFINT(A,B,C)
35559  
35560 C...Double precision and integer declarations.
35561       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35562       IMPLICIT INTEGER(I-N)
35563       INTEGER PYK,PYCHGE,PYCOMP
35564 C...Commonblock.
35565       COMMON/PYINTS/XXM(20)
35566       SAVE/PYINTS/
35567  
35568 C...Local variables.
35569       EXTERNAL PYFISB
35570       DOUBLE PRECISION PYFISB
35571  
35572       XXM(1)=A
35573       XXM(2)=B
35574       XXM(3)=C
35575       XLO=0D0
35576       XHI=1D0
35577       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
35578  
35579       RETURN
35580       END
35581  
35582 C*********************************************************************
35583  
35584 C...PYFISB
35585 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
35586  
35587       FUNCTION PYFISB(X)
35588  
35589 C...Double precision and integer declarations.
35590       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35591       IMPLICIT INTEGER(I-N)
35592       INTEGER PYK,PYCHGE,PYCOMP
35593 C...Commonblock.
35594       COMMON/PYINTS/XXM(20)
35595       SAVE/PYINTS/
35596  
35597       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
35598      &(X*(XXM(2)-XXM(3))+XXM(3)))
35599  
35600       RETURN
35601       END
35602  
35603 C*********************************************************************
35604  
35605 C...PYSFDC
35606 C...Calculates decays of sfermions.
35607  
35608       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
35609  
35610 C...Double precision and integer declarations.
35611       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35612       IMPLICIT INTEGER(I-N)
35613       INTEGER PYK,PYCHGE,PYCOMP
35614 C...Parameter statement to help give large particle numbers.
35615       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35616      &KEXCIT=4000000,KDIMEN=5000000)
35617 C...Commonblocks.
35618       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35619       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35620       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
35621       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
35622      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
35623       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
35624  
35625 C...Local variables.
35626       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
35627       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
35628       INTEGER KFIN,KCIN
35629       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
35630       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
35631       DOUBLE PRECISION PYLAMF,XL
35632       DOUBLE PRECISION TANW,XW,AEM,C1,AS
35633       DOUBLE PRECISION AL,AR,BL,BR
35634       DOUBLE PRECISION CH1,CH2,CH3,CH4
35635       DOUBLE PRECISION XMBOT,XMTOP
35636       DOUBLE PRECISION XLAM(0:400)
35637       INTEGER IDLAM(400,3)
35638       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
35639       DOUBLE PRECISION SR2
35640       DOUBLE PRECISION CBETA,SBETA
35641       DOUBLE PRECISION CW
35642       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
35643       DOUBLE PRECISION COSA,SINA,TANB
35644       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
35645       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
35646       INTEGER IG,KF1,KF2
35647       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
35648       DATA IGG/23,25,35,36/
35649       DATA PI/3.141592654D0/
35650       DATA SR2/1.4142136D0/
35651       DATA KFNCHI/1000022,1000023,1000025,1000035/
35652       DATA KFCCHI/1000024,1000037/
35653  
35654 C...COUNT THE NUMBER OF DECAY MODES
35655       LKNT=0
35656  
35657 C...NO NU_R DECAYS
35658       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
35659      &KFIN.EQ.KSUSY2+16) RETURN
35660  
35661       XMW=PMAS(24,1)
35662       XMW2=XMW**2
35663       XMZ=PMAS(23,1)
35664       XW=PARU(102)
35665       TANW = SQRT(XW/(1D0-XW))
35666       CW=SQRT(1D0-XW)
35667  
35668       DO 110 I=1,4
35669         DO 100 J=1,4
35670           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
35671   100   CONTINUE
35672   110 CONTINUE
35673       DO 130 I=1,2
35674         DO 120 J=1,2
35675            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
35676            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
35677   120   CONTINUE
35678   130 CONTINUE
35679  
35680 C...KCIN
35681       KCIN=PYCOMP(KFIN)
35682 C...ILR is 1 for left and 2 for right.
35683       ILR=KFIN/KSUSY1
35684 C...IFL is matching non-SUSY flavour.
35685       IFL=MOD(KFIN,KSUSY1)
35686 C...IDU is weak isospin, 1 for down and 2 for up.
35687       IDU=2-MOD(IFL,2)
35688  
35689       XMI=PMAS(KCIN,1)
35690       XMI2=XMI**2
35691       AEM=PYALEM(XMI2)
35692       AS =PYALPS(XMI2)
35693       C1=AEM/XW
35694       XMI3=XMI**3
35695       EI=KCHG(IFL,1)/3D0
35696  
35697       XMBOT=PYMRUN(5,XMI2)
35698       XMTOP=PYMRUN(6,XMI2)
35699  
35700       TANB=RMSS(5)
35701       BETA=ATAN(TANB)
35702       ALFA=RMSS(18)
35703       CBETA=COS(BETA)
35704       SBETA=TANB*CBETA
35705       SINA=SIN(ALFA)
35706       COSA=COS(ALFA)
35707       XMU=-RMSS(4)
35708       ATRIT=RMSS(16)
35709       ATRIB=RMSS(15)
35710       ATRIL=RMSS(17)
35711  
35712 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
35713  
35714       IF(IMSS(11).EQ.1) THEN
35715         XMP=RMSS(29)
35716         IDG=39+KSUSY1
35717         XMGR=PMAS(PYCOMP(IDG),1)
35718         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
35719         IF(IFL.EQ.5) THEN
35720           XMF=XMBOT
35721         ELSEIF(IFL.EQ.6) THEN
35722           XMF=XMTOP
35723         ELSE
35724           XMF=PMAS(IFL,1)
35725         ENDIF
35726         IF(XMI.GT.XMGR+XMF) THEN
35727           LKNT=LKNT+1
35728           IDLAM(LKNT,1)=IDG
35729           IDLAM(LKNT,2)=IFL
35730           IDLAM(LKNT,3)=0
35731           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
35732         ENDIF
35733       ENDIF
35734  
35735 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
35736  
35737 C...CHARGED DECAYS:
35738       DO 140 IX=1,2
35739 C...DI -> U CHI1-,CHI2-
35740         IF(IDU.EQ.1) THEN
35741           XMFP=PMAS(IFL+1,1)
35742           XMF =PMAS(IFL,1)
35743 C...UI -> D CHI1+,CHI2+
35744         ELSE
35745           XMFP=PMAS(IFL-1,1)
35746           XMF =PMAS(IFL,1)
35747         ENDIF
35748         XMJ=SMW(IX)
35749         AXMJ=ABS(XMJ)
35750         IF(XMI.GE.AXMJ+XMFP) THEN
35751           XMA2=XMJ**2
35752           XMB2=XMFP**2
35753           IF(IDU.EQ.2) THEN
35754             IF(IFL.EQ.6) THEN
35755               XMFP=XMBOT
35756               XMF =XMTOP
35757             ELSEIF(IFL.LT.6) THEN
35758               XMF=0D0
35759               XMFP=0D0
35760             ENDIF
35761             CBL=VMIXC(IX,1)
35762             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
35763             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
35764             CAR=0D0
35765           ELSE
35766             IF(IFL.EQ.5) THEN
35767               XMF =XMBOT
35768               XMFP=XMTOP
35769             ELSEIF(IFL.LT.5) THEN
35770               XMF=0D0
35771               XMFP=0D0
35772             ENDIF
35773             CBL=UMIXC(IX,1)
35774             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
35775             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
35776             CAR=0D0
35777           ENDIF
35778  
35779           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
35780           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
35781           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
35782           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
35783           CAL=CALP
35784           CBL=CBLP
35785           CAR=CARP
35786           CBR=CBRP
35787  
35788 C...F1 -> F` CHI
35789           IF(ILR.EQ.1) THEN
35790             CA=CAL
35791             CB=CBL
35792 C...F2 -> F` CHI
35793           ELSE
35794             CA=CAR
35795             CB=CBR
35796           ENDIF
35797           LKNT=LKNT+1
35798           XL=PYLAMF(XMI2,XMA2,XMB2)
35799 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
35800           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
35801      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
35802           IDLAM(LKNT,3)=0
35803           IF(IDU.EQ.1) THEN
35804             IDLAM(LKNT,1)=-KFCCHI(IX)
35805             IDLAM(LKNT,2)=IFL+1
35806           ELSE
35807             IDLAM(LKNT,1)=KFCCHI(IX)
35808             IDLAM(LKNT,2)=IFL-1
35809           ENDIF
35810         ENDIF
35811   140 CONTINUE
35812  
35813 C...NEUTRAL DECAYS
35814       DO 150 IX=1,4
35815 C...DI -> D CHI10
35816         XMF=PMAS(IFL,1)
35817         XMJ=SMZ(IX)
35818         AXMJ=ABS(XMJ)
35819         IF(XMI.GE.AXMJ+XMF) THEN
35820           XMA2=XMJ**2
35821           XMB2=XMF**2
35822           IF(IDU.EQ.1) THEN
35823             IF(IFL.EQ.5) THEN
35824               XMF=XMBOT
35825             ELSEIF(IFL.LT.5) THEN
35826               XMF=0D0
35827             ENDIF
35828             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
35829             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
35830             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
35831             CBR=CAL
35832           ELSE
35833             IF(IFL.EQ.6) THEN
35834               XMF=XMTOP
35835             ELSEIF(IFL.LT.5) THEN
35836               XMF=0D0
35837             ENDIF
35838             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
35839             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
35840             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
35841             CBR=CAL
35842           ENDIF
35843  
35844           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
35845           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
35846           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
35847           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
35848           CAL=CALP
35849           CBL=CBLP
35850           CAR=CARP
35851           CBR=CBRP
35852  
35853 C...F1 -> F CHI
35854           IF(ILR.EQ.1) THEN
35855             CA=CAL
35856             CB=CBL
35857 C...F2 -> F CHI
35858           ELSE
35859             CA=CAR
35860             CB=CBR
35861           ENDIF
35862           LKNT=LKNT+1
35863           XL=PYLAMF(XMI2,XMA2,XMB2)
35864 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
35865           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
35866      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
35867           IDLAM(LKNT,1)=KFNCHI(IX)
35868           IDLAM(LKNT,2)=IFL
35869           IDLAM(LKNT,3)=0
35870         ENDIF
35871   150 CONTINUE
35872  
35873 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
35874 C...IG=23,25,35,36
35875       DO 160 II=1,4
35876         IG=IGG(II)
35877         IF(ILR.EQ.1) GOTO 160
35878         XMB=PMAS(IG,1)
35879         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
35880         IF(XMI.LT.XMSF1+XMB) GOTO 160
35881         IF(IG.EQ.23) THEN
35882           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
35883           BR=EI*XW/CW
35884           BLR=0D0
35885         ELSEIF(IG.EQ.25) THEN
35886           IF(IFL.EQ.5) THEN
35887             XMF=XMBOT
35888           ELSEIF(IFL.EQ.6) THEN
35889             XMF=XMTOP
35890           ELSEIF(IFL.LT.5) THEN
35891             XMF=0D0
35892           ELSE
35893             XMF=PMAS(IFL,1)
35894           ENDIF
35895           IF(IDU.EQ.2) THEN
35896             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
35897      &      XMF**2/XMW*COSA/SBETA
35898             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
35899      &      XMF**2/XMW*COSA/SBETA
35900           ELSE
35901             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
35902      &      XMF**2/XMW*(-SINA)/CBETA
35903             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
35904      &      XMF**2/XMW*(-SINA)/CBETA
35905           ENDIF
35906           IF(IFL.EQ.5) THEN
35907             AT=ATRIB
35908           ELSEIF(IFL.EQ.6) THEN
35909             AT=ATRIT
35910           ELSEIF(IFL.EQ.15) THEN
35911             AT=ATRIL
35912           ELSE
35913             AT=0D0
35914           ENDIF
35915 C.........need to complexify
35916           IF(IDU.EQ.2) THEN
35917             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
35918      &      AT*COSA)
35919           ELSE
35920             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
35921      &      AT*SINA)
35922           ENDIF
35923           BL=GHLL
35924           BR=GHRR
35925           BLR=-GHLR
35926         ELSEIF(IG.EQ.35) THEN
35927           IF(IFL.EQ.5) THEN
35928             XMF=XMBOT
35929           ELSEIF(IFL.EQ.6) THEN
35930             XMF=XMTOP
35931           ELSEIF(IFL.LT.5) THEN
35932             XMF=0D0
35933           ELSE
35934             XMF=PMAS(IFL,1)
35935           ENDIF
35936           IF(IDU.EQ.2) THEN
35937             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
35938      &      XMF**2/XMW*SINA/SBETA
35939             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
35940      &      XMF**2/XMW*SINA/SBETA
35941           ELSE
35942             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
35943      &      XMF**2/XMW*COSA/CBETA
35944             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
35945      &      XMF**2/XMW*COSA/CBETA
35946           ENDIF
35947           IF(IFL.EQ.5) THEN
35948             AT=ATRIB
35949           ELSEIF(IFL.EQ.6) THEN
35950             AT=ATRIT
35951           ELSEIF(IFL.EQ.15) THEN
35952             AT=ATRIL
35953           ELSE
35954             AT=0D0
35955           ENDIF
35956 C.........Need to complexify
35957           IF(IDU.EQ.2) THEN
35958             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
35959      &      AT*SINA)
35960           ELSE
35961             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
35962      &      AT*COSA)
35963           ENDIF
35964           BL=GHLL
35965           BR=GHRR
35966           BLR=GHLR
35967         ELSEIF(IG.EQ.36) THEN
35968           GHLL=0D0
35969           GHRR=0D0
35970           IF(IFL.EQ.5) THEN
35971             XMF=XMBOT
35972           ELSEIF(IFL.EQ.6) THEN
35973             XMF=XMTOP
35974           ELSEIF(IFL.LT.5) THEN
35975             XMF=0D0
35976           ELSE
35977             XMF=PMAS(IFL,1)
35978           ENDIF
35979           IF(IFL.EQ.5) THEN
35980             AT=ATRIB
35981           ELSEIF(IFL.EQ.6) THEN
35982             AT=ATRIT
35983           ELSEIF(IFL.EQ.15) THEN
35984             AT=ATRIL
35985           ELSE
35986             AT=0D0
35987           ENDIF
35988 C.........Need to complexify
35989           IF(IDU.EQ.2) THEN
35990             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
35991           ELSE
35992             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
35993           ENDIF
35994           BL=GHLL
35995           BR=GHRR
35996           BLR=GHLR
35997         ENDIF
35998         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
35999      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
36000      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
36001         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36002         LKNT=LKNT+1
36003         IF(IG.EQ.23) THEN
36004           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36005         ELSE
36006           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
36007         ENDIF
36008         IDLAM(LKNT,3)=0
36009         IDLAM(LKNT,1)=KFIN-KSUSY1
36010         IDLAM(LKNT,2)=IG
36011   160 CONTINUE
36012  
36013 C...SF -> SF' + W
36014       XMB=PMAS(24,1)
36015       IF(MOD(IFL,2).EQ.0) THEN
36016         KF1=KSUSY1+IFL-1
36017       ELSE
36018         KF1=KSUSY1+IFL+1
36019       ENDIF
36020       KF2=KF1+KSUSY1
36021       XMSF1=PMAS(PYCOMP(KF1),1)
36022       XMSF2=PMAS(PYCOMP(KF2),1)
36023       IF(XMI.GT.XMB+XMSF1) THEN
36024         IF(MOD(IFL,2).EQ.0) THEN
36025           IF(ILR.EQ.1) THEN
36026             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
36027           ELSE
36028             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
36029           ENDIF
36030         ELSE
36031           IF(ILR.EQ.1) THEN
36032             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
36033           ELSE
36034             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
36035           ENDIF
36036         ENDIF
36037         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36038         LKNT=LKNT+1
36039         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36040         IDLAM(LKNT,3)=0
36041         IDLAM(LKNT,1)=KF1
36042         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
36043       ENDIF
36044       IF(XMI.GT.XMB+XMSF2) THEN
36045         IF(MOD(IFL,2).EQ.0) THEN
36046           IF(ILR.EQ.1) THEN
36047             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,3)
36048           ELSE
36049             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
36050           ENDIF
36051         ELSE
36052           IF(ILR.EQ.1) THEN
36053             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
36054           ELSE
36055             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
36056           ENDIF
36057         ENDIF
36058         XL=PYLAMF(XMI2,XMSF2**2,XMB**2)
36059         LKNT=LKNT+1
36060         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
36061         IDLAM(LKNT,3)=0
36062         IDLAM(LKNT,1)=KF2
36063         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
36064       ENDIF
36065  
36066 C...SF -> SF' + HC
36067       XMB=PMAS(37,1)
36068       IF(MOD(IFL,2).EQ.0) THEN
36069         KF1=KSUSY1+IFL-1
36070       ELSE
36071         KF1=KSUSY1+IFL+1
36072       ENDIF
36073       KF2=KF1+KSUSY1
36074       XMSF1=PMAS(PYCOMP(KF1),1)
36075       XMSF2=PMAS(PYCOMP(KF2),1)
36076       IF(XMI.GT.XMB+XMSF1) THEN
36077         XMF=0D0
36078         XMFP=0D0
36079         AT=0D0
36080         AB=0D0
36081         IF(MOD(IFL,2).EQ.0) THEN
36082 C...T1-> B1 HC
36083           IF(ILR.EQ.1) THEN
36084             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
36085             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
36086             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
36087             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
36088 C...T2-> B1 HC
36089           ELSE
36090             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
36091             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
36092             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
36093             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
36094           ENDIF
36095           IF(IFL.EQ.6) THEN
36096             XMF=XMTOP
36097             XMFP=XMBOT
36098             AT=ATRIT
36099             AB=ATRIB
36100           ENDIF
36101         ELSE
36102 C...B1 -> T1 HC
36103           IF(ILR.EQ.1) THEN
36104             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
36105             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
36106             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
36107             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
36108 C...B2-> T1 HC
36109           ELSE
36110             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
36111             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
36112             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
36113             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
36114           ENDIF
36115           IF(IFL.EQ.5) THEN
36116             XMF=XMTOP
36117             XMFP=XMBOT
36118             AT=ATRIT
36119             AB=ATRIB
36120           ENDIF
36121         ENDIF
36122         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36123         LKNT=LKNT+1
36124 C.......Need to complexify
36125         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
36126      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
36127      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
36128         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
36129         IDLAM(LKNT,3)=0
36130         IDLAM(LKNT,1)=KF1
36131         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
36132       ENDIF
36133       IF(XMI.GT.XMB+XMSF2) THEN
36134         XMF=0D0
36135         XMFP=0D0
36136         AT=0D0
36137         AB=0D0
36138         IF(MOD(IFL,2).EQ.0) THEN
36139 C...T1-> B2 HC
36140           IF(ILR.EQ.1) THEN
36141             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
36142             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
36143             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
36144             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
36145 C...T2-> B2 HC
36146           ELSE
36147             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
36148             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
36149             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
36150             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
36151           ENDIF
36152           IF(IFL.EQ.6) THEN
36153             XMF=XMTOP
36154             XMFP=XMBOT
36155             AT=ATRIT
36156             AB=ATRIB
36157           ENDIF
36158         ELSE
36159 C...B1 -> T2 HC
36160           IF(ILR.EQ.1) THEN
36161             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
36162             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
36163             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
36164             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
36165 C...B2-> T2 HC
36166           ELSE
36167             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
36168             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
36169             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
36170             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
36171           ENDIF
36172           IF(IFL.EQ.5) THEN
36173             XMF=XMTOP
36174             XMFP=XMBOT
36175             AT=ATRIT
36176             AB=ATRIB
36177           ENDIF
36178         ENDIF
36179         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
36180         LKNT=LKNT+1
36181 C.......Need to complexify
36182         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
36183      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
36184      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
36185         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
36186         IDLAM(LKNT,3)=0
36187         IDLAM(LKNT,1)=KF2
36188         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
36189       ENDIF
36190  
36191 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
36192  
36193       IF(IFL.LE.6) THEN
36194         XMFP=0D0
36195         XMF=0D0
36196         IF(IFL.EQ.6) XMF=PMAS(6,1)
36197         IF(IFL.EQ.5) XMF=PMAS(5,1)
36198         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
36199         AXMJ=ABS(XMJ)
36200         IF(XMI.GE.AXMJ+XMF) THEN
36201           AL=-SFMIX(IFL,3)
36202           BL=SFMIX(IFL,1)
36203           AR=-SFMIX(IFL,4)
36204           BR=SFMIX(IFL,2)
36205 C...F1 -> F CHI
36206           IF(ILR.EQ.1) THEN
36207             XCA=AL
36208             XCB=BL
36209 C...F2 -> F CHI
36210           ELSE
36211             XCA=AR
36212             XCB=BR
36213           ENDIF
36214           LKNT=LKNT+1
36215           XMA2=XMJ**2
36216           XMB2=XMF**2
36217           XL=PYLAMF(XMI2,XMA2,XMB2)
36218           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
36219      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
36220           IDLAM(LKNT,1)=KSUSY1+21
36221           IDLAM(LKNT,2)=IFL
36222           IDLAM(LKNT,3)=0
36223         ENDIF
36224       ENDIF
36225  
36226 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
36227       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
36228      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
36229 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
36230 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
36231 C...M*M = C1**2 * G**2/(16PI**2)
36232 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
36233         LKNT=LKNT+1
36234         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
36235         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
36236         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
36237         IDLAM(LKNT,1)=KSUSY1+22
36238         IDLAM(LKNT,2)=4
36239         IDLAM(LKNT,3)=0
36240       ENDIF
36241  
36242 C...R-violating sfermion decays (SKANDS).
36243       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
36244  
36245       IKNT=LKNT
36246       XLAM(0)=0D0
36247       DO 170 I=1,IKNT
36248         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
36249         XLAM(0)=XLAM(0)+XLAM(I)
36250   170 CONTINUE
36251       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
36252  
36253       RETURN
36254       END
36255  
36256 C*********************************************************************
36257  
36258 C...PYGLUI
36259 C...Calculates gluino decay modes.
36260  
36261       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
36262  
36263 C...Double precision and integer declarations.
36264       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36265       IMPLICIT INTEGER(I-N)
36266       INTEGER PYK,PYCHGE,PYCOMP
36267 C...Parameter statement to help give large particle numbers.
36268       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36269      &KEXCIT=4000000,KDIMEN=5000000)
36270 C...Commonblocks.
36271       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36272       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36273       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36274       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36275      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36276 CC     &SFMIX(16,4),
36277 C      COMMON/PYINTS/XXM(20)
36278       COMPLEX*16 CXC
36279       COMMON/PYINTC/XXC(10),CXC(8)
36280       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
36281  
36282 C...Local variables
36283       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
36284       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
36285       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
36286       DOUBLE PRECISION PYLAMF,XL
36287       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
36288       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
36289       DOUBLE PRECISION XLAM(0:400)
36290       INTEGER IDLAM(400,3)
36291       INTEGER LKNT,IX,ILR,I,IKNT,IFL
36292       DOUBLE PRECISION SR2
36293       DOUBLE PRECISION GAM
36294       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
36295       EXTERNAL PYGAUS,PYXXZ6
36296       DOUBLE PRECISION PYGAUS,PYXXZ6
36297       DOUBLE PRECISION PREC
36298       INTEGER KFNCHI(4),KFCCHI(2)
36299       DATA PI/3.141592654D0/
36300       DATA SR2/1.4142136D0/
36301       DATA PREC/1D-2/
36302       DATA KFNCHI/1000022,1000023,1000025,1000035/
36303       DATA KFCCHI/1000024,1000037/
36304  
36305 C...COUNT THE NUMBER OF DECAY MODES
36306       LKNT=0
36307       IF(KFIN.NE.KSUSY1+21) RETURN
36308       KCIN=PYCOMP(KFIN)
36309  
36310       XW=PARU(102)
36311       TANW = SQRT(XW/(1D0-XW))
36312  
36313       XMI=PMAS(KCIN,1)
36314       AXMI=ABS(XMI)
36315       XMI2=XMI**2
36316       AEM=PYALEM(XMI2)
36317       AS =PYALPS(XMI2)
36318       C1=AEM/XW
36319       XMI3=AXMI**3
36320  
36321       XMI=SIGN(XMI,RMSS(3))
36322  
36323 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
36324  
36325       IF(IMSS(11).EQ.1) THEN
36326         XMP=RMSS(29)
36327         IDG=39+KSUSY1
36328         XMGR=PMAS(PYCOMP(IDG),1)
36329         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
36330         IF(AXMI.GT.XMGR) THEN
36331           LKNT=LKNT+1
36332           IDLAM(LKNT,1)=IDG
36333           IDLAM(LKNT,2)=21
36334           IDLAM(LKNT,3)=0
36335           XLAM(LKNT)=XFAC
36336         ENDIF
36337       ENDIF
36338  
36339 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
36340  
36341       DO 110 IFL=1,6
36342         DO 100 ILR=1,2
36343           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
36344           AXMJ=ABS(XMJ)
36345           XMF=PMAS(IFL,1)
36346           IF(AXMI.GE.AXMJ+XMF) THEN
36347 C...Minus sign difference from gluino-quark-squark feynman rules
36348             AL=SFMIX(IFL,1)
36349             BL=-SFMIX(IFL,3)
36350             AR=SFMIX(IFL,2)
36351             BR=-SFMIX(IFL,4)
36352 C...F1 -> F CHI
36353             IF(ILR.EQ.1) THEN
36354               CA=AL
36355               CB=BL
36356 C...F2 -> F CHI
36357             ELSE
36358               CA=AR
36359               CB=BR
36360             ENDIF
36361             LKNT=LKNT+1
36362             XMA2=XMJ**2
36363             XMB2=XMF**2
36364             XL=PYLAMF(XMI2,XMA2,XMB2)
36365             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
36366      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
36367             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
36368             IDLAM(LKNT,2)=-IFL
36369             IDLAM(LKNT,3)=0
36370             LKNT=LKNT+1
36371             XLAM(LKNT)=XLAM(LKNT-1)
36372             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36373             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36374             IDLAM(LKNT,3)=0
36375           ENDIF
36376   100   CONTINUE
36377   110 CONTINUE
36378  
36379 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
36380 C...GLUINO -> NI Q QBAR
36381       DO 170 IX=1,4
36382         XMJ=SMZ(IX)
36383         AXMJ=ABS(XMJ)
36384         IF(AXMI.GE.AXMJ) THEN
36385           DO 120 I=1,4
36386             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
36387   120     CONTINUE
36388           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
36389           ORPP=DCONJG(OLPP)
36390           XXC(1)=0D0
36391           XXC(2)=XMJ
36392           XXC(3)=0D0
36393           XXC(4)=XMI
36394           IA=1
36395           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
36396           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
36397           XXC(7)=XXC(5)
36398           XXC(8)=XXC(6)
36399           XXC(9)=1D6
36400           XXC(10)=0D0
36401           EI=KCHG(IA,1)/3D0
36402           T3I=SIGN(1D0,EI+1D-6)/2D0
36403           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
36404           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
36405           CXC(1)=0D0
36406           CXC(2)=-GLIJ
36407           CXC(3)=0D0
36408           CXC(4)=DCONJG(GLIJ)
36409           CXC(5)=0D0
36410           CXC(6)=GRIJ
36411           CXC(7)=0D0
36412           CXC(8)=-DCONJG(GRIJ)
36413           S12MIN=0D0
36414           S12MAX=(AXMI-AXMJ)**2
36415           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
36416           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
36417             LKNT=LKNT+1
36418             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
36419      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
36420             IDLAM(LKNT,1)=KFNCHI(IX)
36421             IDLAM(LKNT,2)=1
36422             IDLAM(LKNT,3)=-1
36423           ENDIF
36424           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
36425             LKNT=LKNT+1
36426             XLAM(LKNT)=XLAM(LKNT-1)
36427             IDLAM(LKNT,1)=KFNCHI(IX)
36428             IDLAM(LKNT,2)=3
36429             IDLAM(LKNT,3)=-3
36430           ENDIF
36431   130     CONTINUE
36432           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
36433             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
36434             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
36435               GOTO 140
36436             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
36437               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
36438             ENDIF
36439             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
36440             LKNT=LKNT+1
36441             XLAM(LKNT)=GAM
36442             IDLAM(LKNT,1)=KFNCHI(IX)
36443             IDLAM(LKNT,2)=5
36444             IDLAM(LKNT,3)=-5
36445             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
36446           ENDIF
36447 C...U-TYPE QUARKS
36448   140     CONTINUE
36449           IA=2
36450           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
36451           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
36452 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
36453           XXC(7)=XXC(5)
36454           XXC(8)=XXC(6)
36455           EI=KCHG(IA,1)/3D0
36456           T3I=SIGN(1D0,EI+1D-6)/2D0
36457           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
36458           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
36459           CXC(2)=-GLIJ
36460           CXC(4)=DCONJG(GLIJ)
36461           CXC(6)=GRIJ
36462           CXC(8)=-DCONJG(GRIJ)
36463           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
36464           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
36465             LKNT=LKNT+1
36466             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
36467      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
36468             IDLAM(LKNT,1)=KFNCHI(IX)
36469             IDLAM(LKNT,2)=2
36470             IDLAM(LKNT,3)=-2
36471           ENDIF
36472           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
36473             LKNT=LKNT+1
36474             XLAM(LKNT)=XLAM(LKNT-1)
36475             IDLAM(LKNT,1)=KFNCHI(IX)
36476             IDLAM(LKNT,2)=4
36477             IDLAM(LKNT,3)=-4
36478           ENDIF
36479   150     CONTINUE
36480 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
36481 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
36482           XMF=PMAS(6,1)
36483           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
36484             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
36485             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
36486               GOTO 160
36487             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
36488               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
36489             ENDIF
36490             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
36491             LKNT=LKNT+1
36492             XLAM(LKNT)=GAM
36493             IDLAM(LKNT,1)=KFNCHI(IX)
36494             IDLAM(LKNT,2)=6
36495             IDLAM(LKNT,3)=-6
36496             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
36497           ENDIF
36498   160     CONTINUE
36499         ENDIF
36500   170 CONTINUE
36501  
36502 C...GLUINO -> CI Q QBAR'
36503       DO 210 IX=1,2
36504         XMJ=SMW(IX)
36505         AXMJ=ABS(XMJ)
36506         IF(AXMI.GE.AXMJ) THEN
36507           DO 180 I=1,2
36508             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
36509             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
36510   180     CONTINUE
36511           S12MIN=0D0
36512           S12MAX=(AXMI-AXMJ)**2
36513           XXC(1)=0D0
36514           XXC(2)=XMJ
36515           XXC(3)=0D0
36516           XXC(4)=XMI
36517           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
36518           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
36519           XXC(9)=1D6
36520           XXC(10)=0D0
36521           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
36522           ORPP=DCONJG(OLPP)
36523           CXC(1)=DCMPLX(0D0,0D0)
36524           CXC(3)=DCMPLX(0D0,0D0)
36525           CXC(5)=DCMPLX(0D0,0D0)
36526           CXC(7)=DCMPLX(0D0,0D0)
36527           CXC(2)=UMIXC(IX,1)*OLPP/SR2
36528           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
36529           CXC(6)=DCMPLX(0D0,0D0)
36530           CXC(8)=DCMPLX(0D0,0D0)
36531           IF(XXC(5).LT.AXMI) THEN
36532             XXC(5)=1D6
36533           ELSEIF(XXC(6).LT.AXMI) THEN
36534             XXC(6)=1D6
36535           ENDIF
36536           XXC(7)=XXC(6)
36537           XXC(8)=XXC(5)
36538           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
36539           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
36540             LKNT=LKNT+1
36541             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
36542      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
36543             IDLAM(LKNT,1)=KFCCHI(IX)
36544             IDLAM(LKNT,2)=1
36545             IDLAM(LKNT,3)=-2
36546             LKNT=LKNT+1
36547             XLAM(LKNT)=XLAM(LKNT-1)
36548             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36549             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36550             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36551           ENDIF
36552           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
36553             LKNT=LKNT+1
36554             XLAM(LKNT)=XLAM(LKNT-1)
36555             IDLAM(LKNT,1)=KFCCHI(IX)
36556             IDLAM(LKNT,2)=3
36557             IDLAM(LKNT,3)=-4
36558             LKNT=LKNT+1
36559             XLAM(LKNT)=XLAM(LKNT-1)
36560             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36561             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36562             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36563           ENDIF
36564   190     CONTINUE
36565  
36566           XMF=PMAS(6,1)
36567           XMFP=PMAS(5,1)
36568           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
36569             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
36570      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
36571             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
36572             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
36573             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
36574             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
36575             IF(XMI.GT.PMOLT2+XMF) PMOLT2=100D0*AXMI
36576             IF(XMI.GT.PMOLT1+XMF) PMOLT1=100D0*AXMI
36577             IF(XMI.GT.PMOLB2+XMFP) PMOLB2=100D0*AXMI
36578             IF(XMI.GT.PMOLB1+XMFP) PMOLB1=100D0*AXMI
36579             CALL PYTBBC(IX,100,XMI,GAM)
36580             LKNT=LKNT+1
36581             XLAM(LKNT)=GAM
36582             IDLAM(LKNT,1)=KFCCHI(IX)
36583             IDLAM(LKNT,2)=5
36584             IDLAM(LKNT,3)=-6
36585             LKNT=LKNT+1
36586             XLAM(LKNT)=XLAM(LKNT-1)
36587             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
36588             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
36589             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
36590             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
36591             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
36592             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
36593             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
36594           ENDIF
36595   200     CONTINUE
36596         ENDIF
36597   210 CONTINUE
36598  
36599 C...R-parity violating (3-body) decays.
36600       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
36601  
36602       IKNT=LKNT
36603       XLAM(0)=0D0
36604       DO 220 I=1,IKNT
36605         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
36606         XLAM(0)=XLAM(0)+XLAM(I)
36607   220 CONTINUE
36608       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
36609  
36610       RETURN
36611       END
36612  
36613 C*********************************************************************
36614  
36615 C...PYTBBN
36616 C...Calculates the three-body decay of gluinos into
36617 C...neutralinos and third generation fermions.
36618  
36619       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
36620  
36621 C...Double precision and integer declarations.
36622       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36623       IMPLICIT INTEGER(I-N)
36624       INTEGER PYK,PYCHGE,PYCOMP
36625 C...Parameter statement to help give large particle numbers.
36626       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36627      &KEXCIT=4000000,KDIMEN=5000000)
36628 C...Commonblocks.
36629       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36630       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36631       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36632       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36633      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36634       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
36635  
36636 C...Local variables.
36637       EXTERNAL PYSIMP,PYLAMF
36638       DOUBLE PRECISION PYSIMP,PYLAMF
36639       INTEGER LIN,NN
36640       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
36641       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
36642       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
36643       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
36644       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
36645       DOUBLE PRECISION XLN1,XLN2,B1,B2
36646       DOUBLE PRECISION E,XMGLU,GAM
36647       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
36648       SAVE HRB,HLB,FLB,FRB
36649       DOUBLE PRECISION ALPHAW,ALPHAS
36650       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
36651       SAVE HLT,HRT,FLT,FRT
36652       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
36653       SAVE AMN,AN,ZN
36654       DOUBLE PRECISION AMBOT,SINC,COSC
36655       DOUBLE PRECISION AMTOP,SINA,COSA
36656       DOUBLE PRECISION SINW,COSW,TANW
36657       DOUBLE PRECISION ROT1(4,4)
36658       LOGICAL IFIRST
36659       SAVE IFIRST
36660       DATA IFIRST/.TRUE./
36661  
36662       TANB=RMSS(5)
36663       SINB=TANB/SQRT(1D0+TANB**2)
36664       COSB=SINB/TANB
36665       XW=PARU(102)
36666       SINW=SQRT(XW)
36667       COSW=SQRT(1D0-XW)
36668       TANW=SINW/COSW
36669       AMW=PMAS(24,1)
36670       COSC=SFMIX(5,1)
36671       SINC=SFMIX(5,3)
36672       COSA=SFMIX(6,1)
36673       SINA=SFMIX(6,3)
36674       AMBOT=PYMRUN(5,XMGLU**2)
36675       AMTOP=PYMRUN(6,XMGLU**2)
36676       W2=SQRT(2D0)
36677       FAKT1=AMBOT/W2/AMW/COSB
36678       FAKT2=AMTOP/W2/AMW/SINB
36679       IF(IFIRST) THEN
36680         DO 110 II=1,4
36681           AMN(II)=SMZ(II)
36682           DO 100 J=1,4
36683             ROT1(II,J)=0D0
36684             AN(II,J)=0D0
36685   100     CONTINUE
36686   110   CONTINUE
36687         ROT1(1,1)=COSW
36688         ROT1(1,2)=-SINW
36689         ROT1(2,1)=-ROT1(1,2)
36690         ROT1(2,2)=ROT1(1,1)
36691         ROT1(3,3)=COSB
36692         ROT1(3,4)=SINB
36693         ROT1(4,3)=-ROT1(3,4)
36694         ROT1(4,4)=ROT1(3,3)
36695         DO 140 II=1,4
36696           DO 130 J=1,4
36697             DO 120 JJ=1,4
36698               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
36699   120       CONTINUE
36700   130     CONTINUE
36701   140   CONTINUE
36702         DO 150 J=1,4
36703           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
36704           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
36705           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
36706      &    XW)*AN(J,2)/COSW
36707           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
36708           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
36709           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
36710           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
36711 C          FLU(J)=ZN(3)
36712 C          FRU(J)=ZN(2)
36713           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
36714           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
36715           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
36716           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
36717           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
36718           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
36719           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
36720 C          FLD(J)=ZN(3)
36721 C          FRD(J)=ZN(2)
36722   150   CONTINUE
36723 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
36724 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
36725 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
36726 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
36727         IFIRST=.FALSE.
36728       ENDIF
36729  
36730       IF(NINT(3D0*E).EQ.2) THEN
36731         HL=HLT(I)
36732         HR=HRT(I)
36733         FL=FLT(I)
36734         FR=FRT(I)
36735         COSD=SFMIX(6,1)
36736         SIND=SFMIX(6,3)
36737         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
36738         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
36739         XM=PMAS(6,1)
36740       ELSE
36741         HL=HLB(I)
36742         HR=HRB(I)
36743         FL=FLB(I)
36744         FR=FRB(I)
36745         COSD=SFMIX(5,1)
36746         SIND=SFMIX(5,3)
36747         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
36748         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
36749         XM=PMAS(5,1)
36750       ENDIF
36751       COSD2=COSD*COSD
36752       SIND2=SIND*SIND
36753       COS2D=COSD2-SIND2
36754       SIN2D=SIND*COSD*2D0
36755       HL2=HL*HL
36756       HR2=HR*HR
36757       FL2=FL*FL
36758       FR2=FR*FR
36759       FF=FL*FR
36760       HH=HL*HR
36761       HFL=HL*FL
36762       HFR=HR*FR
36763       HRFL=HR*FL
36764       HLFR=HL*FR
36765       XM2=XM*XM
36766       XMG=XMGLU
36767       XMG2=XMG*XMG
36768       ALPHAW=PYALEM(XMG2)
36769       ALPHAS=PYALPS(XMG2)
36770       XMR=AMN(I)
36771       XMR2=XMR*XMR
36772       XMQ4=XMG*XM2*XMR
36773       XM24=(XMG2+XM2)*(XM2+XMR2)
36774       SMIN=4D0*XM2
36775       SMAX=(XMG-ABS(XMR))**2
36776       XMQA=XMG2+2D0*XM2+XMR2
36777       DO 170 LIN=1,NN-1
36778         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
36779         GRS=SBAR-XMQA
36780         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
36781         W=DSQRT(W)
36782         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
36783         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
36784         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
36785         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
36786         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
36787      &  +2D0*(FF*SIND2-HH*COSD2))*W
36788         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
36789      &  +4D0*HFL*XM*XMR)*XLN1
36790      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
36791      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
36792      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
36793      &  +8D0*HFL*XMQ4*SIN2D)*B1
36794         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
36795      &  +4D0*HFR*XMR*XM)*XLN2
36796      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
36797      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
36798      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
36799      &  -8D0*HFR*XMQ4*SIN2D)*B2
36800         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
36801      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
36802      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
36803      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
36804      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
36805         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
36806      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
36807      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
36808         G(5)=(2D0*(HH*COSD2-FF*SIND2)
36809      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
36810      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
36811      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
36812      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
36813      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
36814      &  +COS2D*XM*(SBAR+XMG2-XMR2))
36815      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
36816      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
36817         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
36818      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
36819      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
36820      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
36821      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
36822         SUMME(LIN)=0D0
36823         DO 160 J=0,6
36824           SUMME(LIN)=SUMME(LIN)+G(J)
36825   160   CONTINUE
36826   170 CONTINUE
36827       SUMME(0)=0D0
36828       SUMME(NN)=0D0
36829       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
36830      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
36831  
36832       RETURN
36833       END
36834  
36835 C*********************************************************************
36836  
36837 C...PYTBBC
36838 C...Calculates the three-body decay of gluinos into
36839 C...charginos and third generation fermions.
36840  
36841       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
36842  
36843 C...Double precision and integer declarations.
36844       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36845       IMPLICIT INTEGER(I-N)
36846       INTEGER PYK,PYCHGE,PYCOMP
36847 C...Parameter statement to help give large particle numbers.
36848       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36849      &KEXCIT=4000000,KDIMEN=5000000)
36850 C...Commonblocks.
36851       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36852       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36853       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
36854       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
36855      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
36856       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
36857  
36858 C...Local variables.
36859       EXTERNAL PYSIMP,PYLAMF
36860       DOUBLE PRECISION PYSIMP,PYLAMF
36861       INTEGER I,NN,LIN
36862       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
36863       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
36864       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
36865       DOUBLE PRECISION SUMME(0:100),A(4,8)
36866       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
36867       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
36868       DOUBLE PRECISION XMGLU,GAM
36869       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
36870      &DDD(2),EEE(2),FFF(2)
36871       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
36872       DOUBLE PRECISION ALPHAW,ALPHAS
36873       DOUBLE PRECISION AMC(2)
36874       SAVE AMC
36875       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
36876       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
36877       SAVE AMSB,AMST
36878       LOGICAL IFIRST
36879       SAVE IFIRST
36880       DATA IFIRST/.TRUE./
36881  
36882       TANB=RMSS(5)
36883       SINB=TANB/SQRT(1D0+TANB**2)
36884       COSB=SINB/TANB
36885       XW=PARU(102)
36886       AMW=PMAS(24,1)
36887       COSC=SFMIX(5,1)
36888       SINC=SFMIX(5,3)
36889       COSA=SFMIX(6,1)
36890       SINA=SFMIX(6,3)
36891       AMBOT=PYMRUN(5,XMGLU**2)
36892       AMTOP=PYMRUN(6,XMGLU**2)
36893       W2=SQRT(2D0)
36894       AMW=PMAS(24,1)
36895       FAKT1=AMBOT/W2/AMW/COSB
36896       FAKT2=AMTOP/W2/AMW/SINB
36897       IF(IFIRST) THEN
36898         AMC(1)=SMW(1)
36899         AMC(2)=SMW(2)
36900         DO 100 JJ=1,2
36901           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
36902           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
36903           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
36904           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
36905           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
36906           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
36907           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
36908           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
36909   100   CONTINUE
36910         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
36911         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
36912         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
36913         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
36914         IFIRST=.FALSE.
36915       ENDIF
36916  
36917       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
36918       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
36919       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
36920       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
36921  
36922       COS2A=COSA**2-SINA**2
36923       SIN2A=SINA*COSA*2D0
36924       COS2C=COSC**2-SINC**2
36925       SIN2C=SINC*COSC*2D0
36926  
36927       XMG=XMGLU
36928       XMT=PMAS(6,1)
36929       XMB=PMAS(5,1)
36930       XMR=AMC(I)
36931       XMG2=XMG*XMG
36932       ALPHAW=PYALEM(XMG2)
36933       ALPHAS=PYALPS(XMG2)
36934       XMT2=XMT*XMT
36935       XMB2=XMB*XMB
36936       XMR2=XMR*XMR
36937       XMQ2=XMG2+XMT2+XMB2+XMR2
36938       XMQ4=XMG*XMT*XMB*XMR
36939       XMQ3=XMG2*XMR2+XMT2*XMB2
36940       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
36941       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
36942  
36943       XMST(1)=AMST(1)*AMST(1)
36944       XMST(2)=AMST(1)*AMST(1)
36945       XMST(3)=AMST(2)*AMST(2)
36946       XMST(4)=AMST(2)*AMST(2)
36947       XMSB(1)=AMSB(1)*AMSB(1)
36948       XMSB(2)=AMSB(2)*AMSB(2)
36949       XMSB(3)=AMSB(1)*AMSB(1)
36950       XMSB(4)=AMSB(2)*AMSB(2)
36951  
36952       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
36953       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
36954       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
36955       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
36956       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
36957       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
36958       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
36959       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
36960  
36961       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
36962       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
36963       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
36964       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
36965       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
36966       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
36967       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
36968       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
36969  
36970       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
36971       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
36972       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
36973       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
36974       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
36975       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
36976       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
36977       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
36978  
36979       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
36980       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
36981       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
36982       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
36983       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
36984       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
36985       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
36986       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
36987  
36988       SMAX=(XMG-ABS(XMR))**2
36989       SMIN=(XMB+XMT)**2+0.1D0
36990  
36991       DO 120 LIN=0,NN-1
36992         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
36993         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
36994         GRS=SBAR-XMQ2
36995         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
36996         W=DSQRT(W)/2D0/SBAR
36997         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
36998         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
36999         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
37000         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
37001         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
37002      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
37003      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
37004      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
37005      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
37006      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
37007      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
37008         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
37009      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
37010      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
37011      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
37012      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
37013      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
37014      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
37015      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
37016         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
37017      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
37018      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
37019      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
37020      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
37021      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
37022      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
37023      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
37024         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
37025      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
37026      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
37027      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
37028      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
37029      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
37030      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
37031      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
37032         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
37033      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
37034      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
37035      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
37036         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
37037      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
37038      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
37039      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
37040         DO 110 J=1,4
37041           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
37042      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
37043      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
37044      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
37045      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
37046      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
37047      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
37048      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
37049      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
37050      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
37051      &    -A(J,6)*(XMG2+XMR2-SBAR)
37052      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
37053      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
37054      &    /(GRS+XMSB(J)+XMST(J))
37055   110   CONTINUE
37056   120 CONTINUE
37057       SUMME(NN)=0D0
37058       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
37059      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
37060  
37061       RETURN
37062       END
37063  
37064 C*********************************************************************
37065  
37066 C...PYNJDC
37067 C...Calculates decay widths for the neutralinos (admixtures of
37068 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
37069  
37070 C...Input:  KCIN = KF code for particle
37071 C...Output: XLAM = widths
37072 C...        IDLAM = KF codes for decay particles
37073 C...        IKNT = number of decay channels defined
37074 C...AUTHOR: STEPHEN MRENNA
37075 C...Last change:
37076 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
37077 C...when CHIGAMMA .NE. 0
37078 C...10 FEB 96:  Calculate this decay for small tan(beta)
37079  
37080       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
37081  
37082 C...Double precision and integer declarations.
37083       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37084       IMPLICIT INTEGER(I-N)
37085       INTEGER PYK,PYCHGE,PYCOMP
37086 C...Parameter statement to help give large particle numbers.
37087       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37088      &KEXCIT=4000000,KDIMEN=5000000)
37089 C...Commonblocks.
37090       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37091       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37092       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
37093 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37094 c     &SFMIX(16,4)
37095       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37096      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
37097 C      COMMON/PYINTS/XXM(20)
37098       COMPLEX*16 CXC
37099       COMMON/PYINTC/XXC(10),CXC(8)
37100       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
37101  
37102 C...Local variables.
37103       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
37104       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
37105       INTEGER KFIN
37106       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
37107      &XMZ,XMZ2,AXMJ,AXMI
37108       DOUBLE PRECISION S12MIN,S12MAX
37109       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
37110       DOUBLE PRECISION PYLAMF,XL
37111       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
37112       DOUBLE PRECISION PYX2XH,PYX2XG
37113       DOUBLE PRECISION XLAM(0:400)
37114       INTEGER IDLAM(400,3)
37115       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
37116       INTEGER ITH(3),KF1,KF2
37117       INTEGER ITHC
37118       DOUBLE PRECISION DH(3),EH(3)
37119       DOUBLE PRECISION SR2
37120       DOUBLE PRECISION CBETA,SBETA
37121       DOUBLE PRECISION GAMCON,XMT1,XMT2
37122       DOUBLE PRECISION PYALEM,PI,PYALPS
37123       DOUBLE PRECISION RAT1,RAT2
37124       DOUBLE PRECISION T3T,FCOL
37125       DOUBLE PRECISION ALFA,BETA,TANB
37126       DOUBLE PRECISION PYXXGA
37127       EXTERNAL PYGAUS,PYXXZ6
37128       DOUBLE PRECISION PYGAUS,PYXXZ6
37129       DOUBLE PRECISION PREC
37130       INTEGER KFNCHI(4),KFCCHI(2)
37131       DATA ITH/25,35,36/
37132       DATA ITHC/37/
37133       DATA PREC/1D-2/
37134       DATA PI/3.141592654D0/
37135       DATA SR2/1.4142136D0/
37136       DATA KFNCHI/1000022,1000023,1000025,1000035/
37137       DATA KFCCHI/1000024,1000037/
37138  
37139 C...COUNT THE NUMBER OF DECAY MODES
37140       LKNT=0
37141  
37142       XMW=PMAS(24,1)
37143       XMW2=XMW**2
37144       XMZ=PMAS(23,1)
37145       XMZ2=XMZ**2
37146       XW=1D0-XMW2/XMZ2
37147       XW1=1D0-XW
37148       TANW = SQRT(XW/XW1)
37149  
37150 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
37151       IX=1
37152       IF(KFIN.EQ.KFNCHI(2)) IX=2
37153       IF(KFIN.EQ.KFNCHI(3)) IX=3
37154       IF(KFIN.EQ.KFNCHI(4)) IX=4
37155  
37156       XMI=SMZ(IX)
37157       XMI2=XMI**2
37158       AXMI=ABS(XMI)
37159       AEM=PYALEM(XMI2)
37160       AS =PYALPS(XMI2)
37161       C1=AEM/XW
37162       XMI3=ABS(XMI**3)
37163  
37164       TANB=RMSS(5)
37165       BETA=ATAN(TANB)
37166       ALFA=RMSS(18)
37167       CBETA=COS(BETA)
37168       SBETA=TANB*CBETA
37169       CALFA=COS(ALFA)
37170       SALFA=SIN(ALFA)
37171  
37172       DO 110 I=1,4
37173         DO 100 J=1,4
37174           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
37175   100   CONTINUE
37176   110 CONTINUE
37177       DO 130 I=1,2
37178         DO 120 J=1,2
37179            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
37180            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
37181   120   CONTINUE
37182   130 CONTINUE
37183  
37184 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
37185       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
37186  
37187 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
37188       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
37189         XMJ=SMZ(1)
37190         AXMJ=ABS(XMJ)
37191         LKNT=LKNT+1
37192         GAMCON=AEM**3/8D0/PI/XMW2/XW
37193         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
37194         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
37195         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
37196         IDLAM(LKNT,1)=KSUSY1+22
37197         IDLAM(LKNT,2)=22
37198         IDLAM(LKNT,3)=0
37199         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
37200         GOTO 340
37201       ENDIF
37202  
37203 C...GRAVITINO DECAY MODES
37204  
37205       IF(IMSS(11).EQ.1) THEN
37206         XMP=RMSS(29)
37207         IDG=39+KSUSY1
37208         XMGR=PMAS(PYCOMP(IDG),1)
37209         SINW=SQRT(XW)
37210         COSW=SQRT(1D0-XW)
37211         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
37212         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
37213           LKNT=LKNT+1
37214           IDLAM(LKNT,1)=IDG
37215           IDLAM(LKNT,2)=22
37216           IDLAM(LKNT,3)=0
37217           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
37218         ENDIF
37219         IF(AXMI.GT.XMGR+XMZ) THEN
37220           LKNT=LKNT+1
37221           IDLAM(LKNT,1)=IDG
37222           IDLAM(LKNT,2)=23
37223           IDLAM(LKNT,3)=0
37224           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
37225      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
37226      &  (1D0-XMZ2/XMI2)**4
37227         ENDIF
37228         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
37229           LKNT=LKNT+1
37230           IDLAM(LKNT,1)=IDG
37231           IDLAM(LKNT,2)=25
37232           IDLAM(LKNT,3)=0
37233           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
37234      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
37235         ENDIF
37236         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
37237           LKNT=LKNT+1
37238           IDLAM(LKNT,1)=IDG
37239           IDLAM(LKNT,2)=35
37240           IDLAM(LKNT,3)=0
37241           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
37242      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
37243         ENDIF
37244         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
37245           LKNT=LKNT+1
37246           IDLAM(LKNT,1)=IDG
37247           IDLAM(LKNT,2)=36
37248           IDLAM(LKNT,3)=0
37249           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
37250      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
37251         ENDIF
37252         IF(IX.EQ.1) GOTO 300
37253       ENDIF
37254  
37255       DO 220 IJ=1,IX-1
37256         XMJ=SMZ(IJ)
37257         AXMJ=ABS(XMJ)
37258         XMJ2=XMJ**2
37259  
37260 C...CHI0_I -> CHI0_J + GAMMA
37261         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
37262           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
37263           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
37264           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
37265           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
37266           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
37267      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
37268             LKNT=LKNT+1
37269             IDLAM(LKNT,1)=KFNCHI(IJ)
37270             IDLAM(LKNT,2)=22
37271             IDLAM(LKNT,3)=0
37272             GAMCON=AEM**3/8D0/PI/XMW2/XW
37273             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
37274             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
37275             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
37276           ENDIF
37277         ENDIF
37278  
37279 C...CHI0_I -> CHI0_J + Z0
37280         IF(AXMI.GE.AXMJ+XMZ) THEN
37281           LKNT=LKNT+1
37282           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
37283      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
37284           ORPP=-DCONJG(OLPP)
37285           GX2=ABS(OLPP)**2+ABS(ORPP)**2
37286           GLR=DBLE(OLPP*DCONJG(ORPP))
37287           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
37288           IDLAM(LKNT,1)=KFNCHI(IJ)
37289           IDLAM(LKNT,2)=23
37290           IDLAM(LKNT,3)=0
37291         ELSEIF(AXMI.GE.AXMJ) THEN
37292           XXC(1)=0D0
37293           XXC(2)=XMJ
37294           XXC(3)=0D0
37295           XXC(4)=XMI
37296           XXC(9)=XMZ
37297           XXC(10)=PMAS(23,2)
37298           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
37299      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
37300           ORPP=DCONJG(OLPP)
37301 C...CHARGED LEPTONS
37302           FID=11
37303           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37304           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37305           EI=KCHG(FID,1)/3D0
37306           T3I=SIGN(1D0,EI+1D-6)/2D0
37307           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37308      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37309           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37310           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37311           CXC(2)=-GLIJ
37312           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37313           CXC(4)=DCONJG(GLIJ)
37314           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37315           CXC(6)=GRIJ
37316           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37317           CXC(8)=-DCONJG(GRIJ)
37318           S12MIN=0D0
37319           S12MAX=(AXMI-AXMJ)**2
37320           IF( XXC(5).LT.AXMI ) THEN
37321             XXC(5)=1D6
37322           ENDIF
37323           IF(XXC(6).LT.AXMI ) THEN
37324             XXC(6)=1D6
37325           ENDIF
37326           XXC(7)=XXC(5)
37327           XXC(8)=XXC(6)
37328  
37329           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
37330             LKNT=LKNT+1
37331             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37332      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37333             IDLAM(LKNT,1)=KFNCHI(IJ)
37334             IDLAM(LKNT,2)=FID
37335             IDLAM(LKNT,3)=-FID
37336             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
37337               LKNT=LKNT+1
37338               XLAM(LKNT)=XLAM(LKNT-1)
37339               IDLAM(LKNT,1)=KFNCHI(IJ)
37340               IDLAM(LKNT,2)=13
37341               IDLAM(LKNT,3)=-13
37342             ENDIF
37343           ENDIF
37344   140     CONTINUE
37345           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
37346             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
37347             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
37348           ELSE
37349             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
37350             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
37351           ENDIF
37352           IF( XXC(5).LT.AXMI ) THEN
37353             XXC(5)=1D6
37354           ENDIF
37355           IF(XXC(6).LT.AXMI ) THEN
37356             XXC(6)=1D6
37357           ENDIF
37358           XXC(7)=XXC(5)
37359           XXC(8)=XXC(6)
37360  
37361           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
37362             LKNT=LKNT+1
37363             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37364      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37365             IDLAM(LKNT,1)=KFNCHI(IJ)
37366             IDLAM(LKNT,2)=15
37367             IDLAM(LKNT,3)=-15
37368           ENDIF
37369  
37370 C...NEUTRINOS
37371   150     CONTINUE
37372           FID=12
37373           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37374           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37375           EI=KCHG(FID,1)/3D0
37376           T3I=SIGN(1D0,EI+1D-6)/2D0
37377           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37378      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37379           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37380           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37381           CXC(2)=-GLIJ
37382           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37383           CXC(4)=DCONJG(GLIJ)
37384           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37385           CXC(6)=GRIJ
37386           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37387           CXC(8)=-DCONJG(GRIJ)
37388           S12MIN=0D0
37389           S12MAX=(AXMI-AXMJ)**2
37390           IF( XXC(5).LT.AXMI ) THEN
37391             XXC(5)=1D6
37392           ENDIF
37393           IF( XXC(6).LT.AXMI ) THEN
37394             XXC(6)=1D6
37395           ENDIF
37396           XXC(7)=XXC(5)
37397           XXC(8)=XXC(6)
37398  
37399           LKNT=LKNT+1
37400           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37401      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37402           IDLAM(LKNT,1)=KFNCHI(IJ)
37403           IDLAM(LKNT,2)=12
37404           IDLAM(LKNT,3)=-12
37405           LKNT=LKNT+1
37406           XLAM(LKNT)=XLAM(LKNT-1)
37407           IDLAM(LKNT,1)=KFNCHI(IJ)
37408           IDLAM(LKNT,2)=14
37409           IDLAM(LKNT,3)=-14
37410   160     CONTINUE
37411  
37412           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
37413      &    THEN
37414             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
37415             IF( XXC(5).LT.AXMI ) THEN
37416               XXC(5)=1D6
37417             ENDIF
37418             XXC(7)=XXC(5)
37419             LKNT=LKNT+1
37420             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37421      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37422           ELSE
37423             LKNT=LKNT+1
37424             XLAM(LKNT)=XLAM(LKNT-1)
37425           ENDIF
37426           IDLAM(LKNT,1)=KFNCHI(IJ)
37427           IDLAM(LKNT,2)=16
37428           IDLAM(LKNT,3)=-16
37429 C...D-TYPE QUARKS
37430   170     CONTINUE
37431           FID=1
37432           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37433           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37434           EI=KCHG(FID,1)/3D0
37435           T3I=SIGN(1D0,EI+1D-6)/2D0
37436           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37437      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37438           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37439           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37440           CXC(2)=-GLIJ
37441           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37442           CXC(4)=DCONJG(GLIJ)
37443           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37444           CXC(6)=GRIJ
37445           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37446           CXC(8)=-DCONJG(GRIJ)
37447           S12MIN=0D0
37448           S12MAX=(AXMI-AXMJ)**2
37449           IF( XXC(5).LT.AXMI ) THEN
37450             XXC(5)=1D6
37451           ENDIF
37452           IF( XXC(6).LT.AXMI ) THEN
37453             XXC(6)=1D6
37454           ENDIF
37455           XXC(7)=XXC(5)
37456           XXC(8)=XXC(6)
37457  
37458           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
37459             LKNT=LKNT+1
37460             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37461      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37462             IDLAM(LKNT,1)=KFNCHI(IJ)
37463             IDLAM(LKNT,2)=1
37464             IDLAM(LKNT,3)=-1
37465             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
37466               LKNT=LKNT+1
37467               XLAM(LKNT)=XLAM(LKNT-1)
37468               IDLAM(LKNT,1)=KFNCHI(IJ)
37469               IDLAM(LKNT,2)=3
37470               IDLAM(LKNT,3)=-3
37471             ENDIF
37472           ENDIF
37473   180     CONTINUE
37474           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
37475             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
37476             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
37477           ELSE
37478             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
37479             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
37480           ENDIF
37481           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
37482           IF(XXC(5).LT.AXMI) THEN
37483             XXC(5)=1D6
37484           ELSEIF(XXC(6).LT.AXMI) THEN
37485             XXC(6)=1D6
37486           ENDIF
37487           XXC(7)=XXC(5)
37488           XXC(8)=XXC(6)
37489           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
37490             LKNT=LKNT+1
37491             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37492      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37493             IDLAM(LKNT,1)=KFNCHI(IJ)
37494             IDLAM(LKNT,2)=5
37495             IDLAM(LKNT,3)=-5
37496           ENDIF
37497  
37498 C...U-TYPE QUARKS
37499   190     CONTINUE
37500           FID=2
37501           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37502           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37503           EI=KCHG(FID,1)/3D0
37504           T3I=SIGN(1D0,EI+1D-6)/2D0
37505           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
37506      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
37507           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
37508           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
37509           CXC(2)=-GLIJ
37510           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
37511           CXC(4)=DCONJG(GLIJ)
37512           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
37513           CXC(6)=GRIJ
37514           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
37515           CXC(8)=-DCONJG(GRIJ)
37516  
37517           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
37518           IF(XXC(5).LT.AXMI) THEN
37519             XXC(5)=1D6
37520           ELSEIF(XXC(6).LT.AXMI) THEN
37521             XXC(6)=1D6
37522           ENDIF
37523           XXC(7)=XXC(5)
37524           XXC(8)=XXC(6)
37525  
37526           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
37527             LKNT=LKNT+1
37528             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37529      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
37530             IDLAM(LKNT,1)=KFNCHI(IJ)
37531             IDLAM(LKNT,2)=2
37532             IDLAM(LKNT,3)=-2
37533             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
37534               LKNT=LKNT+1
37535               XLAM(LKNT)=XLAM(LKNT-1)
37536               IDLAM(LKNT,1)=KFNCHI(IJ)
37537               IDLAM(LKNT,2)=4
37538               IDLAM(LKNT,3)=-4
37539             ENDIF
37540           ENDIF
37541   200     CONTINUE
37542         ENDIF
37543  
37544 C...CHI0_I -> CHI0_J + H0_K
37545         EH(1)=SIN(ALFA)
37546         EH(2)=COS(ALFA)
37547         EH(3)=-SIN(BETA)
37548         DH(1)=COS(ALFA)
37549         DH(2)=-SIN(ALFA)
37550         DH(3)=COS(BETA)
37551         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
37552      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
37553      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
37554      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
37555         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
37556      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
37557      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
37558      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
37559         DO 210 IH=1,3
37560           XMH=PMAS(ITH(IH),1)
37561           XMH2=XMH**2
37562           IF(AXMI.GE.AXMJ+XMH) THEN
37563             LKNT=LKNT+1
37564             XL=PYLAMF(XMI2,XMJ2,XMH2)
37565             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
37566             F12K=F21K
37567 C...SIGN OF MASSES I,J
37568             XMK=XMJ
37569             IF(IH.EQ.3) XMK=-XMK
37570             GX2=ABS(F21K)**2+ABS(F12K)**2
37571             GLR=DBLE(F21K*DCONJG(F12K))
37572             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
37573             IDLAM(LKNT,1)=KFNCHI(IJ)
37574             IDLAM(LKNT,2)=ITH(IH)
37575             IDLAM(LKNT,3)=0
37576           ENDIF
37577   210   CONTINUE
37578   220 CONTINUE
37579  
37580 C...CHI0_I -> CHI+_J + W-
37581       DO 260 IJ=1,2
37582         XMJ=SMW(IJ)
37583         AXMJ=ABS(XMJ)
37584         XMJ2=XMJ**2
37585         IF(AXMI.GE.AXMJ+XMW) THEN
37586           LKNT=LKNT+1
37587           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
37588      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
37589           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
37590      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
37591           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
37592           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
37593           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
37594           IDLAM(LKNT,1)=KFCCHI(IJ)
37595           IDLAM(LKNT,2)=-24
37596           IDLAM(LKNT,3)=0
37597           LKNT=LKNT+1
37598           XLAM(LKNT)=XLAM(LKNT-1)
37599           IDLAM(LKNT,1)=-KFCCHI(IJ)
37600           IDLAM(LKNT,2)=24
37601           IDLAM(LKNT,3)=0
37602         ELSEIF(AXMI.GE.AXMJ) THEN
37603           S12MIN=0D0
37604           S12MAX=(AXMI-AXMJ)**2
37605           RT2I = 1D0/SQRT(2D0)
37606           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
37607      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
37608           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
37609      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
37610           CXC(5)=DCMPLX(0D0,0D0)
37611           CXC(7)=DCMPLX(0D0,0D0)
37612           IA=11
37613           JA=12
37614           EI=KCHG(IA,1)/3D0
37615           T3I=SIGN(1D0,EI+1D-6)/2D0
37616           EJ=KCHG(JA,1)/3D0
37617           T3J=SIGN(1D0,EJ+1D-6)/2D0
37618           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
37619      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
37620           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
37621      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
37622           CXC(6)=DCMPLX(0D0,0D0)
37623           CXC(8)=DCMPLX(0D0,0D0)
37624           XXC(1)=0D0
37625           XXC(2)=XMJ
37626           XXC(3)=0D0
37627           XXC(4)=XMI
37628           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
37629           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
37630           XXC(9)=PMAS(24,1)
37631           XXC(10)=PMAS(24,2)
37632           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
37633           IF(XXC(5).LT.AXMI) THEN
37634             XXC(5)=1D6
37635           ELSEIF(XXC(6).LT.AXMI) THEN
37636             XXC(6)=1D6
37637           ENDIF
37638           XXC(7)=XXC(6)
37639           XXC(8)=XXC(5)
37640           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
37641             LKNT=LKNT+1
37642             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37643      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37644             IDLAM(LKNT,1)=KFCCHI(IJ)
37645             IDLAM(LKNT,2)=11
37646             IDLAM(LKNT,3)=-12
37647             LKNT=LKNT+1
37648             XLAM(LKNT)=XLAM(LKNT-1)
37649             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37650             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37651             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37652             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
37653               LKNT=LKNT+1
37654               XLAM(LKNT)=XLAM(LKNT-1)
37655               IDLAM(LKNT,1)=KFCCHI(IJ)
37656               IDLAM(LKNT,2)=13
37657               IDLAM(LKNT,3)=-14
37658               LKNT=LKNT+1
37659               XLAM(LKNT)=XLAM(LKNT-1)
37660               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37661               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37662               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37663             ENDIF
37664           ENDIF
37665   230     CONTINUE
37666           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
37667             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
37668             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
37669           ELSE
37670             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
37671             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
37672           ENDIF
37673           IF(XXC(5).LT.AXMI) THEN
37674             XXC(5)=1D6
37675           ENDIF
37676           IF(XXC(6).LT.AXMI) THEN
37677             XXC(6)=1D6
37678           ENDIF
37679           XXC(7)=XXC(6)
37680           XXC(8)=XXC(5)
37681           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
37682             LKNT=LKNT+1
37683             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
37684      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37685             XLAM(LKNT)=XLAM(LKNT-1)
37686             IDLAM(LKNT,1)=KFCCHI(IJ)
37687             IDLAM(LKNT,2)=15
37688             IDLAM(LKNT,3)=-16
37689             LKNT=LKNT+1
37690             XLAM(LKNT)=XLAM(LKNT-1)
37691             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37692             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37693             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37694           ENDIF
37695  
37696 C...NOW, DO THE QUARKS
37697   240     CONTINUE
37698           IA=1
37699           JA=2
37700           EI=KCHG(IA,1)/3D0
37701           T3I=SIGN(1D0,EI+1D-6)/2D0
37702           EJ=KCHG(JA,1)/3D0
37703           T3J=SIGN(1D0,EJ+1D-6)/2D0
37704           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
37705      &    TANW+ZMIXC(IX,2)*T3J)
37706           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
37707      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
37708           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
37709           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
37710           IF(XXC(5).LT.AXMI) THEN
37711             XXC(5)=1D6
37712           ENDIF
37713           IF(XXC(6).LT.AXMI) THEN
37714             XXC(6)=1D6
37715           ENDIF
37716           XXC(7)=XXC(6)
37717           XXC(8)=XXC(5)
37718           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
37719             LKNT=LKNT+1
37720             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
37721      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
37722             IDLAM(LKNT,1)=KFCCHI(IJ)
37723             IDLAM(LKNT,2)=1
37724             IDLAM(LKNT,3)=-2
37725             LKNT=LKNT+1
37726             XLAM(LKNT)=XLAM(LKNT-1)
37727             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37728             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37729             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37730             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
37731               LKNT=LKNT+1
37732               XLAM(LKNT)=XLAM(LKNT-1)
37733               IDLAM(LKNT,1)=KFCCHI(IJ)
37734               IDLAM(LKNT,2)=3
37735               IDLAM(LKNT,3)=-4
37736               LKNT=LKNT+1
37737               XLAM(LKNT)=XLAM(LKNT-1)
37738               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37739               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37740               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37741             ENDIF
37742           ENDIF
37743   250     CONTINUE
37744         ENDIF
37745   260 CONTINUE
37746   270 CONTINUE
37747  
37748 C...CHI0_I -> CHI+_I + H-
37749       DO 280 IJ=1,2
37750         XMJ=SMW(IJ)
37751         AXMJ=ABS(XMJ)
37752         XMJ2=XMJ**2
37753         XMHP=PMAS(ITHC,1)
37754         IF(AXMI.GE.AXMJ+XMHP) THEN
37755           LKNT=LKNT+1
37756           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
37757      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
37758           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
37759      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
37760      &    UMIXC(IJ,2)/SR2)
37761           GX2=ABS(OLPP)**2+ABS(ORPP)**2
37762           GLR=DBLE(OLPP*DCONJG(ORPP))
37763           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
37764           IDLAM(LKNT,1)=KFCCHI(IJ)
37765           IDLAM(LKNT,2)=-ITHC
37766           IDLAM(LKNT,3)=0
37767           LKNT=LKNT+1
37768           XLAM(LKNT)=XLAM(LKNT-1)
37769           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37770           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37771           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
37772         ELSE
37773  
37774         ENDIF
37775   280 CONTINUE
37776  
37777 C...2-BODY DECAYS TO FERMION SFERMION
37778       DO 290 J=1,16
37779         IF(J.GE.7.AND.J.LE.10) GOTO 290
37780         KF1=KSUSY1+J
37781         KF2=KSUSY2+J
37782         XMSF1=PMAS(PYCOMP(KF1),1)
37783         XMSF2=PMAS(PYCOMP(KF2),1)
37784         XMF=PMAS(J,1)
37785         IF(J.LE.6) THEN
37786           FCOL=3D0
37787         ELSE
37788           FCOL=1D0
37789         ENDIF
37790  
37791         EI=KCHG(J,1)/3D0
37792         T3T=SIGN(1D0,EI)
37793         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
37794         IF(MOD(J,2).EQ.0) THEN
37795           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
37796           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
37797           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
37798           CBR=CAL
37799         ELSE
37800           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
37801           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
37802           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
37803           CBR=CAL
37804         ENDIF
37805  
37806 C...D~ D_L
37807         IF(AXMI.GE.XMF+XMSF1) THEN
37808           LKNT=LKNT+1
37809           XMA2=XMSF1**2
37810           XMB2=XMF**2
37811           XL=PYLAMF(XMI2,XMA2,XMB2)
37812           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
37813           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
37814           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
37815      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
37816           IDLAM(LKNT,1)=KF1
37817           IDLAM(LKNT,2)=-J
37818           IDLAM(LKNT,3)=0
37819           LKNT=LKNT+1
37820           XLAM(LKNT)=XLAM(LKNT-1)
37821           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37822           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37823           IDLAM(LKNT,3)=0
37824         ENDIF
37825  
37826 C...D~ D_R
37827         IF(AXMI.GE.XMF+XMSF2) THEN
37828           LKNT=LKNT+1
37829           XMA2=XMSF2**2
37830           XMB2=XMF**2
37831           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
37832           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
37833           XL=PYLAMF(XMI2,XMA2,XMB2)
37834           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
37835      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
37836           IDLAM(LKNT,1)=KF2
37837           IDLAM(LKNT,2)=-J
37838           IDLAM(LKNT,3)=0
37839           LKNT=LKNT+1
37840           XLAM(LKNT)=XLAM(LKNT-1)
37841           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
37842           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
37843           IDLAM(LKNT,3)=0
37844         ENDIF
37845   290 CONTINUE
37846   300 CONTINUE
37847 C...3-BODY DECAY TO Q Q~ GLUINO
37848       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
37849       IF(AXMI.GE.XMJ) THEN
37850         RT2I = 1D0/SQRT(2D0)
37851         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
37852         ORPP=DCONJG(OLPP)
37853         AXMJ=ABS(XMJ)
37854         XXC(1)=0D0
37855         XXC(2)=XMJ
37856         XXC(3)=0D0
37857         XXC(4)=XMI
37858         FID=1
37859         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37860         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37861         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
37862         XXC(7)=XXC(5)
37863         XXC(8)=XXC(6)
37864         XXC(9)=1D6
37865         XXC(10)=0D0
37866         EI=KCHG(FID,1)/3D0
37867         T3I=SIGN(1D0,EI+1D-6)/2D0
37868         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
37869         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
37870         CXC(1)=0D0
37871         CXC(2)=-GLIJ
37872         CXC(3)=0D0
37873         CXC(4)=DCONJG(GLIJ)
37874         CXC(5)=0D0
37875         CXC(6)=GRIJ
37876         CXC(7)=0D0
37877         CXC(8)=-DCONJG(GRIJ)
37878         S12MIN=0D0
37879         S12MAX=(AXMI-AXMJ)**2
37880 C...ALL QUARKS BUT T
37881         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
37882           LKNT=LKNT+1
37883           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
37884      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37885           IDLAM(LKNT,1)=KSUSY1+21
37886           IDLAM(LKNT,2)=1
37887           IDLAM(LKNT,3)=-1
37888           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
37889             LKNT=LKNT+1
37890             XLAM(LKNT)=XLAM(LKNT-1)
37891             IDLAM(LKNT,1)=KSUSY1+21
37892             IDLAM(LKNT,2)=3
37893             IDLAM(LKNT,3)=-3
37894           ENDIF
37895         ENDIF
37896   310   CONTINUE
37897         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
37898           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
37899           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
37900         ELSE
37901           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
37902           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
37903         ENDIF
37904         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
37905         XXC(7)=XXC(5)
37906         XXC(8)=XXC(6)
37907         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
37908           LKNT=LKNT+1
37909           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
37910      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37911           IDLAM(LKNT,1)=KSUSY1+21
37912           IDLAM(LKNT,2)=5
37913           IDLAM(LKNT,3)=-5
37914         ENDIF
37915 C...U-TYPE QUARKS
37916   320   CONTINUE
37917         FID=2
37918         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
37919         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
37920         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
37921         XXC(7)=XXC(5)
37922         XXC(8)=XXC(6)
37923         EI=KCHG(FID,1)/3D0
37924         T3I=SIGN(1D0,EI+1D-6)/2D0
37925         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
37926         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
37927         CXC(2)=-GLIJ
37928         CXC(4)=DCONJG(GLIJ)
37929         CXC(6)=GRIJ
37930         CXC(8)=-DCONJG(GRIJ)
37931         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
37932           LKNT=LKNT+1
37933           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
37934      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
37935           IDLAM(LKNT,1)=KSUSY1+21
37936           IDLAM(LKNT,2)=2
37937           IDLAM(LKNT,3)=-2
37938           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
37939             LKNT=LKNT+1
37940             XLAM(LKNT)=XLAM(LKNT-1)
37941             IDLAM(LKNT,1)=KSUSY1+21
37942             IDLAM(LKNT,2)=4
37943             IDLAM(LKNT,3)=-4
37944           ENDIF
37945         ENDIF
37946   330   CONTINUE
37947       ENDIF
37948  
37949 C...R-violating decay modes (SKANDS).
37950       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
37951  
37952   340 IKNT=LKNT
37953       XLAM(0)=0D0
37954       DO 350 I=1,IKNT
37955         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
37956         XLAM(0)=XLAM(0)+XLAM(I)
37957   350 CONTINUE
37958       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
37959  
37960       RETURN
37961       END
37962  
37963 C*********************************************************************
37964  
37965 C...PYCJDC
37966 C...Calculate decay widths for the charginos (admixtures of
37967 C...charged Wino and charged Higgsino.
37968  
37969 C...Input:  KCIN = KF code for particle
37970 C...Output: XLAM = widths
37971 C...        IDLAM = KF codes for decay particles
37972 C...        IKNT = number of decay channels defined
37973 C...AUTHOR: STEPHEN MRENNA
37974 C...Last change:
37975 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
37976 C...when CHIENU .NE. 0
37977  
37978       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
37979  
37980 C...Double precision and integer declarations.
37981       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37982       IMPLICIT INTEGER(I-N)
37983       INTEGER PYK,PYCHGE,PYCOMP
37984 C...Parameter statement to help give large particle numbers.
37985       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37986      &KEXCIT=4000000,KDIMEN=5000000)
37987 C...Commonblocks.
37988       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37989       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37990       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
37991       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
37992      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
37993 CC     &SFMIX(16,4),
37994 C      COMMON/PYINTS/XXM(20)
37995       COMPLEX*16 CXC
37996       COMMON/PYINTC/XXC(10),CXC(8)
37997       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
37998  
37999 C...Local variables
38000       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
38001       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
38002       INTEGER KFIN,KCIN
38003       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
38004      &XMZ,XMZ2,AXMJ,AXMI
38005       DOUBLE PRECISION S12MIN,S12MAX
38006       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
38007       DOUBLE PRECISION PYLAMF,XL
38008       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
38009       DOUBLE PRECISION PYX2XH,PYX2XG
38010       DOUBLE PRECISION XLAM(0:400)
38011       INTEGER IDLAM(400,3)
38012       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
38013       INTEGER ITH(3)
38014       INTEGER ITHC
38015       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
38016       DOUBLE PRECISION SR2
38017       DOUBLE PRECISION CBETA,SBETA,TANB
38018  
38019       DOUBLE PRECISION PYALEM,PI,PYALPS
38020       DOUBLE PRECISION FCOL
38021       INTEGER KF1,KF2,ISF
38022       INTEGER KFNCHI(4),KFCCHI(2)
38023  
38024       DOUBLE PRECISION TEMP
38025       EXTERNAL PYGAUS,PYXXZ6
38026       DOUBLE PRECISION PYGAUS,PYXXZ6
38027       DOUBLE PRECISION PREC
38028       DATA ITH/25,35,36/
38029       DATA ITHC/37/
38030       DATA ETAH/1D0,1D0,-1D0/
38031       DATA SR2/1.4142136D0/
38032       DATA PI/3.141592654D0/
38033       DATA PREC/1D-2/
38034       DATA KFNCHI/1000022,1000023,1000025,1000035/
38035       DATA KFCCHI/1000024,1000037/
38036  
38037 C...COUNT THE NUMBER OF DECAY MODES
38038       LKNT=0
38039       XMW=PMAS(24,1)
38040       XMW2=XMW**2
38041       XMZ=PMAS(23,1)
38042       XMZ2=XMZ**2
38043       XW=1D0-XMW2/XMZ2
38044       XW1=1D0-XW
38045       TANW = SQRT(XW/XW1)
38046  
38047 C...1 OR 2 DEPENDING ON CHARGINO TYPE
38048       IX=1
38049       IF(KFIN.EQ.KFCCHI(2)) IX=2
38050       KCIN=PYCOMP(KFIN)
38051  
38052       XMI=SMW(IX)
38053       XMI2=XMI**2
38054       AXMI=ABS(XMI)
38055       AEM=PYALEM(XMI2)
38056       AS =PYALPS(XMI2)
38057       C1=AEM/XW
38058       XMI3=ABS(XMI**3)
38059       TANB=RMSS(5)
38060       BETA=ATAN(TANB)
38061       CBETA=COS(BETA)
38062       SBETA=TANB*CBETA
38063       ALFA=RMSS(18)
38064  
38065       DO 110 I=1,2
38066         DO 100 J=1,2
38067           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
38068           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
38069   100   CONTINUE
38070   110 CONTINUE
38071  
38072 C...GRAVITINO DECAY MODES
38073  
38074       IF(IMSS(11).EQ.1) THEN
38075         XMP=RMSS(29)
38076         IDG=39+KSUSY1
38077         XMGR=PMAS(PYCOMP(IDG),1)
38078 C        SINW=SQRT(XW)
38079 C        COSW=SQRT(1D0-XW)
38080         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
38081         IF(AXMI.GT.XMGR+XMW) THEN
38082           LKNT=LKNT+1
38083           IDLAM(LKNT,1)=IDG
38084           IDLAM(LKNT,2)=24
38085           IDLAM(LKNT,3)=0
38086           XLAM(LKNT)=XFAC*(
38087      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
38088      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
38089      &  (1D0-XMW2/XMI2)**4
38090         ENDIF
38091         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
38092           LKNT=LKNT+1
38093           IDLAM(LKNT,1)=IDG
38094           IDLAM(LKNT,2)=37
38095           IDLAM(LKNT,3)=0
38096           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
38097      &   (ABS(UMIXC(IX,2))*SBETA)**2))
38098      &   *(1D0-PMAS(37,1)**2/XMI2)**4
38099        ENDIF
38100       ENDIF
38101  
38102 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
38103       IF(IX.EQ.1) GOTO 170
38104       XMJ=SMW(1)
38105       AXMJ=ABS(XMJ)
38106       XMJ2=XMJ**2
38107  
38108 C...CHI_2+ -> CHI_1+ + Z0
38109       IF(AXMI.GE.AXMJ+XMZ) THEN
38110         LKNT=LKNT+1
38111         IJ=1
38112         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
38113      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
38114         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
38115      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
38116         GX2=ABS(OLPP)**2+ABS(ORPP)**2
38117         GLR=DBLE(OLPP*DCONJG(ORPP))
38118         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
38119         IDLAM(LKNT,1)=KFCCHI(1)
38120         IDLAM(LKNT,2)=23
38121         IDLAM(LKNT,3)=0
38122  
38123 C...CHARGED LEPTONS
38124       ELSEIF(AXMI.GE.AXMJ) THEN
38125         S12MIN=0D0
38126         S12MAX=(AXMI-AXMJ)**2
38127         IA=11
38128         JA=12
38129         EI=KCHG(IABS(IA),1)/3D0
38130         T3I=SIGN(1D0,EI+1D-6)/2D0
38131         XXC(1)=0D0
38132         XXC(2)=XMJ
38133         XXC(3)=0D0
38134         XXC(4)=XMI
38135         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38136         XXC(6)=1D6
38137         XXC(9)=PMAS(23,1)
38138         XXC(10)=PMAS(23,2)
38139         IJ=1
38140         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
38141      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
38142         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
38143      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
38144         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38145         CXC(2)=DCMPLX(0D0,0D0)
38146         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38147         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
38148         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38149         CXC(6)=DCMPLX(0D0,0D0)
38150         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38151         CXC(8)=DCMPLX(0D0,0D0)
38152         IF( XXC(5).LT.AXMI ) THEN
38153           XXC(5)=1D6
38154         ENDIF
38155         XXC(7)=XXC(5)
38156         XXC(8)=XXC(6)
38157         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
38158           LKNT=LKNT+1
38159           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38160      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38161           IDLAM(LKNT,1)=KFCCHI(1)
38162           IDLAM(LKNT,2)=11
38163           IDLAM(LKNT,3)=-11
38164           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
38165             LKNT=LKNT+1
38166             XLAM(LKNT)=XLAM(LKNT-1)
38167             IDLAM(LKNT,1)=KFCCHI(1)
38168             IDLAM(LKNT,2)=13
38169             IDLAM(LKNT,3)=-13
38170           ENDIF
38171           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
38172             LKNT=LKNT+1
38173             XLAM(LKNT)=XLAM(LKNT-1)
38174             IDLAM(LKNT,1)=KFCCHI(1)
38175             IDLAM(LKNT,2)=15
38176             IDLAM(LKNT,3)=-15
38177           ENDIF
38178         ENDIF
38179  
38180 C...NEUTRINOS
38181   120   CONTINUE
38182         IA=12
38183         JA=11
38184         EI=KCHG(IABS(IA),1)/3D0
38185         T3I=SIGN(1D0,EI+1D-6)/2D0
38186         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38187         XXC(6)=1D6
38188         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38189         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38190         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
38191         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38192         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38193         IF( XXC(5).LT.AXMI ) THEN
38194           XXC(5)=1D6
38195         ENDIF
38196         XXC(7)=XXC(5)
38197         XXC(8)=XXC(6)
38198         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
38199           LKNT=LKNT+1
38200           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38201      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38202           IDLAM(LKNT,1)=KFCCHI(1)
38203           IDLAM(LKNT,2)=12
38204           IDLAM(LKNT,3)=-12
38205           LKNT=LKNT+1
38206           XLAM(LKNT)=XLAM(LKNT-1)
38207           IDLAM(LKNT,1)=KFCCHI(1)
38208           IDLAM(LKNT,2)=14
38209           IDLAM(LKNT,3)=-14
38210         ENDIF
38211         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
38212           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
38213             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
38214           ELSE
38215             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
38216           ENDIF
38217           IF( XXC(5).LT.AXMI ) THEN
38218             XXC(5)=1D6
38219           ENDIF
38220           XXC(7)=XXC(5)
38221           LKNT=LKNT+1
38222           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
38223      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38224           IDLAM(LKNT,1)=KFCCHI(1)
38225           IDLAM(LKNT,2)=16
38226           IDLAM(LKNT,3)=-16
38227         ENDIF
38228  
38229 C...D-TYPE QUARKS
38230   130   CONTINUE
38231         IA=1
38232         JA=2
38233         EI=KCHG(IABS(IA),1)/3D0
38234         T3I=SIGN(1D0,EI+1D-6)/2D0
38235         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38236         XXC(6)=1D6
38237         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38238         CXC(2)=DCMPLX(0D0,0D0)
38239         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38240         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
38241         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38242         CXC(6)=DCMPLX(0D0,0D0)
38243         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38244         CXC(8)=DCMPLX(0D0,0D0)
38245         IF( XXC(5).LT.AXMI ) THEN
38246           XXC(5)=1D6
38247         ENDIF
38248         XXC(7)=XXC(5)
38249         XXC(8)=XXC(6)
38250         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
38251           LKNT=LKNT+1
38252           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38253      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38254           IDLAM(LKNT,1)=KFCCHI(1)
38255           IDLAM(LKNT,2)=1
38256           IDLAM(LKNT,3)=-1
38257           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
38258             LKNT=LKNT+1
38259             XLAM(LKNT)=XLAM(LKNT-1)
38260             IDLAM(LKNT,1)=KFCCHI(1)
38261             IDLAM(LKNT,2)=3
38262             IDLAM(LKNT,3)=-3
38263           ENDIF
38264         ENDIF
38265         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
38266           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
38267             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
38268           ELSE
38269             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
38270           ENDIF
38271           IF( XXC(5).LT.AXMI ) THEN
38272             XXC(5)=1D6
38273           ENDIF
38274           XXC(7)=XXC(5)
38275           LKNT=LKNT+1
38276           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38277      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38278           IDLAM(LKNT,1)=KFCCHI(1)
38279           IDLAM(LKNT,2)=5
38280           IDLAM(LKNT,3)=-5
38281         ENDIF
38282  
38283 C...U-TYPE QUARKS
38284   140   CONTINUE
38285         IA=2
38286         JA=1
38287         EI=KCHG(IABS(IA),1)/3D0
38288         T3I=SIGN(1D0,EI+1D-6)/2D0
38289         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38290         XXC(6)=1D6
38291         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
38292         CXC(2)=DCMPLX(0D0,0D0)
38293         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
38294         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
38295         CXC(5)=-DCMPLX(EI/XW1)*ORPP
38296         CXC(6)=DCMPLX(0D0,0D0)
38297         CXC(7)=-DCMPLX(EI/XW1)*OLPP
38298         CXC(8)=DCMPLX(0D0,0D0)
38299         IF( XXC(5).LT.AXMI ) THEN
38300           XXC(5)=1D6
38301         ENDIF
38302         XXC(7)=XXC(5)
38303         XXC(8)=XXC(6)
38304         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
38305           LKNT=LKNT+1
38306           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38307      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38308           IDLAM(LKNT,1)=KFCCHI(1)
38309           IDLAM(LKNT,2)=2
38310           IDLAM(LKNT,3)=-2
38311           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
38312             LKNT=LKNT+1
38313             XLAM(LKNT)=XLAM(LKNT-1)
38314             IDLAM(LKNT,1)=KFCCHI(1)
38315             IDLAM(LKNT,2)=4
38316             IDLAM(LKNT,3)=-4
38317           ENDIF
38318         ENDIF
38319   150   CONTINUE
38320       ENDIF
38321  
38322 C...CHI_2+ -> CHI_1+ + H0_K
38323       EH(2)=COS(ALFA)
38324       EH(1)=SIN(ALFA)
38325       EH(3)=-SBETA
38326       DH(2)=-SIN(ALFA)
38327       DH(1)=COS(ALFA)
38328       DH(3)=COS(BETA)
38329       DO 160 IH=1,3
38330         XMH=PMAS(ITH(IH),1)
38331         XMH2=XMH**2
38332 C...NO 3-BODY OPTION
38333         IF(AXMI.GE.AXMJ+XMH) THEN
38334           LKNT=LKNT+1
38335           XL=PYLAMF(XMI2,XMJ2,XMH2)
38336           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
38337      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
38338           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
38339      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
38340           XMK=XMJ*ETAH(IH)
38341           GX2=ABS(OLPP)**2+ABS(ORPP)**2
38342           GLR=DBLE(OLPP*DCONJG(ORPP))
38343           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
38344           IDLAM(LKNT,1)=KFCCHI(1)
38345           IDLAM(LKNT,2)=ITH(IH)
38346           IDLAM(LKNT,3)=0
38347         ENDIF
38348   160 CONTINUE
38349  
38350 C...CHI1 JUMPS TO HERE
38351   170 CONTINUE
38352  
38353 C...CHI+_I -> CHI0_J + W+
38354       DO 220 IJ=1,4
38355         XMJ=SMZ(IJ)
38356         AXMJ=ABS(XMJ)
38357         XMJ2=XMJ**2
38358         IF(AXMI.GE.AXMJ+XMW) THEN
38359           LKNT=LKNT+1
38360           DO 180 I=1,4
38361             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
38362   180     CONTINUE
38363           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
38364      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
38365           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
38366      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
38367           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
38368           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
38369           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
38370           IDLAM(LKNT,1)=KFNCHI(IJ)
38371           IDLAM(LKNT,2)=24
38372           IDLAM(LKNT,3)=0
38373 C...LEPTONS
38374         ELSEIF(AXMI.GE.AXMJ) THEN
38375           S12MIN=0D0
38376           S12MAX=(AXMI-AXMJ)**2
38377           DO 190 I=1,4
38378             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
38379   190     CONTINUE
38380           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
38381      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
38382           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
38383      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
38384           CXC(5)=DCMPLX(0D0,0D0)
38385           CXC(7)=DCMPLX(0D0,0D0)
38386           IA=11
38387           JA=12
38388           EI=KCHG(IA,1)/3D0
38389           T3I=SIGN(1D0,EI+1D-6)/2D0
38390           EJ=KCHG(JA,1)/3D0
38391           T3J=SIGN(1D0,EJ+1D-6)/2D0
38392           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
38393      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
38394           CXC(4)=-DCONJG(UMIXC(IX,1))*(
38395      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
38396           CXC(6)=DCMPLX(0D0,0D0)
38397           CXC(8)=DCMPLX(0D0,0D0)
38398           XXC(1)=0D0
38399           XXC(2)=XMJ
38400           XXC(3)=0D0
38401           XXC(4)=XMI
38402           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38403           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
38404           XXC(9)=PMAS(24,1)
38405           XXC(10)=PMAS(24,2)
38406 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
38407           IF(XXC(5).LT.AXMI) THEN
38408             XXC(5)=1D6
38409           ELSEIF(XXC(6).LT.AXMI) THEN
38410             XXC(6)=1D6
38411           ENDIF
38412           XXC(7)=XXC(6)
38413           XXC(8)=XXC(5)
38414 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
38415 C...--> 1/(16PI)/M**3*(AEM/XW)**2
38416           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
38417             LKNT=LKNT+1
38418             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38419             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
38420             IDLAM(LKNT,1)=KFNCHI(IJ)
38421             IDLAM(LKNT,2)=-11
38422             IDLAM(LKNT,3)=12
38423 C...ONLY DECAY CHI+1 -> E+ NU_E
38424             IF( IMSS(12).NE. 0 ) GOTO 260
38425             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
38426               LKNT=LKNT+1
38427               XLAM(LKNT)=XLAM(LKNT-1)
38428               IDLAM(LKNT,1)=KFNCHI(IJ)
38429               IDLAM(LKNT,2)=-13
38430               IDLAM(LKNT,3)=14
38431             ENDIF
38432           ENDIF
38433           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
38434             LKNT=LKNT+1
38435             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
38436               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
38437             ELSE
38438               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
38439             ENDIF
38440             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
38441             IF(XXC(5).LT.AXMI) THEN
38442               XXC(5)=1D6
38443             ELSEIF(XXC(6).LT.AXMI) THEN
38444               XXC(6)=1D6
38445             ENDIF
38446             XXC(7)=XXC(6)
38447             XXC(8)=XXC(5)
38448             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38449             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
38450             IDLAM(LKNT,1)=KFNCHI(IJ)
38451             IDLAM(LKNT,2)=-15
38452             IDLAM(LKNT,3)=16
38453           ENDIF
38454  
38455 C...NOW, DO THE QUARKS
38456   200     CONTINUE
38457           IA=1
38458           JA=2
38459           EI=KCHG(IA,1)/3D0
38460           T3I=SIGN(1D0,EI+1D-6)/2D0
38461           EJ=KCHG(JA,1)/3D0
38462           T3J=SIGN(1D0,EJ+1D-6)/2D0
38463           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
38464      &    TANW+ZMIXC(IX,2)*T3J)
38465           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
38466      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
38467           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
38468           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
38469           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
38470           IF(XXC(5).LT.AXMI) THEN
38471             XXC(5)=1D6
38472           ENDIF
38473           IF(XXC(6).LT.AXMI) THEN
38474             XXC(6)=1D6
38475           ENDIF
38476           XXC(7)=XXC(6)
38477           XXC(8)=XXC(5)
38478           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
38479             LKNT=LKNT+1
38480             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
38481      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38482             IDLAM(LKNT,1)=KFNCHI(IJ)
38483             IDLAM(LKNT,2)=-1
38484             IDLAM(LKNT,3)=2
38485             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
38486               LKNT=LKNT+1
38487               XLAM(LKNT)=XLAM(LKNT-1)
38488               IDLAM(LKNT,1)=KFNCHI(IJ)
38489               IDLAM(LKNT,2)=-3
38490               IDLAM(LKNT,3)=4
38491             ENDIF
38492           ENDIF
38493   210     CONTINUE
38494         ENDIF
38495   220 CONTINUE
38496  
38497 C...CHI+_I -> CHI0_J + H+
38498       DO 230 IJ=1,4
38499         XMJ=SMZ(IJ)
38500         AXMJ=ABS(XMJ)
38501         XMJ2=XMJ**2
38502         XMHP=PMAS(ITHC,1)
38503         IF(AXMI.GE.AXMJ+XMHP) THEN
38504           LKNT=LKNT+1
38505           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
38506      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
38507           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
38508      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
38509      &    UMIXC(IX,2)/SR2)
38510           GX2=ABS(OLPP)**2+ABS(ORPP)**2
38511           GLR=DBLE(OLPP*DCONJG(ORPP))
38512           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
38513           IDLAM(LKNT,1)=KFNCHI(IJ)
38514           IDLAM(LKNT,2)=ITHC
38515           IDLAM(LKNT,3)=0
38516         ELSE
38517  
38518         ENDIF
38519   230 CONTINUE
38520  
38521 C...2-BODY DECAYS TO FERMION SFERMION
38522       DO 240 J=1,16
38523         IF(J.GE.7.AND.J.LE.10) GOTO 240
38524         IF(MOD(J,2).EQ.0) THEN
38525           KF1=KSUSY1+J-1
38526         ELSE
38527           KF1=KSUSY1+J+1
38528         ENDIF
38529         KF2=KF1+KSUSY1
38530         XMSF1=PMAS(PYCOMP(KF1),1)
38531         XMSF2=PMAS(PYCOMP(KF2),1)
38532         XMF=PMAS(J,1)
38533         IF(J.LE.6) THEN
38534           FCOL=3D0
38535         ELSE
38536           FCOL=1D0
38537         ENDIF
38538  
38539 C...U~ D_L
38540         IF(MOD(J,2).EQ.0) THEN
38541           XMFP=PMAS(J-1,1)
38542           CAL=UMIXC(IX,1)
38543           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
38544           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
38545           CBR=0D0
38546           ISF=J-1
38547         ELSE
38548           XMFP=PMAS(J+1,1)
38549           CAL=VMIXC(IX,1)
38550           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
38551           CBR=0D0
38552           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
38553           ISF=J+1
38554         ENDIF
38555  
38556 C...~U_L D
38557         IF(AXMI.GE.XMF+XMSF1) THEN
38558           LKNT=LKNT+1
38559           XMA2=XMSF1**2
38560           XMB2=XMF**2
38561           XL=PYLAMF(XMI2,XMA2,XMB2)
38562           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
38563           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
38564           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
38565      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
38566           IDLAM(LKNT,3)=0
38567           IF(MOD(J,2).EQ.0) THEN
38568             IDLAM(LKNT,1)=-KF1
38569             IDLAM(LKNT,2)=J
38570           ELSE
38571             IDLAM(LKNT,1)=KF1
38572             IDLAM(LKNT,2)=-J
38573           ENDIF
38574         ENDIF
38575  
38576 C...U~ D_R
38577         IF(AXMI.GE.XMF+XMSF2) THEN
38578           LKNT=LKNT+1
38579           XMA2=XMSF2**2
38580           XMB2=XMF**2
38581           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
38582           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
38583           XL=PYLAMF(XMI2,XMA2,XMB2)
38584           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
38585      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
38586           IDLAM(LKNT,3)=0
38587           IF(MOD(J,2).EQ.0) THEN
38588             IDLAM(LKNT,1)=-KF2
38589             IDLAM(LKNT,2)=J
38590           ELSE
38591             IDLAM(LKNT,1)=KF2
38592             IDLAM(LKNT,2)=-J
38593           ENDIF
38594         ENDIF
38595   240 CONTINUE
38596  
38597 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
38598 C...A 2-BODY -- 2-BODY CHAIN
38599       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
38600       IF(AXMI.GE.XMJ) THEN
38601         AXMJ=ABS(XMJ)
38602         S12MIN=0D0
38603         S12MAX=(AXMI-AXMJ)**2
38604         XXC(1)=0D0
38605         XXC(2)=XMJ
38606         XXC(3)=0D0
38607         XXC(4)=XMI
38608         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
38609         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
38610         XXC(9)=1D6
38611         XXC(10)=0D0
38612         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
38613         ORPP=DCONJG(OLPP)
38614         CXC(1)=DCMPLX(0D0,0D0)
38615         CXC(3)=DCMPLX(0D0,0D0)
38616         CXC(5)=DCMPLX(0D0,0D0)
38617         CXC(7)=DCMPLX(0D0,0D0)
38618         CXC(2)=UMIXC(IX,1)*OLPP/SR2
38619         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
38620         CXC(6)=DCMPLX(0D0,0D0)
38621         CXC(8)=DCMPLX(0D0,0D0)
38622         IF(XXC(5).LT.AXMI) THEN
38623           XXC(5)=1D6
38624         ELSEIF(XXC(6).LT.AXMI) THEN
38625           XXC(6)=1D6
38626         ENDIF
38627         XXC(7)=XXC(6)
38628         XXC(8)=XXC(5)
38629         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
38630         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
38631           LKNT=LKNT+1
38632           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
38633      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
38634           IDLAM(LKNT,1)=KSUSY1+21
38635           IDLAM(LKNT,2)=-1
38636           IDLAM(LKNT,3)=2
38637           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
38638             LKNT=LKNT+1
38639             XLAM(LKNT)=XLAM(LKNT-1)
38640             IDLAM(LKNT,1)=KSUSY1+21
38641             IDLAM(LKNT,2)=-3
38642             IDLAM(LKNT,3)=4
38643           ENDIF
38644         ENDIF
38645   250   CONTINUE
38646       ENDIF
38647  
38648 C...R-violating decay modes (SKANDS).
38649       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
38650  
38651   260 IKNT=LKNT
38652       XLAM(0)=0D0
38653       DO 270 I=1,IKNT
38654         XLAM(0)=XLAM(0)+XLAM(I)
38655         IF(XLAM(I).LT.0D0) THEN
38656           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
38657      &    (IDLAM(I,J),J=1,3)
38658           XLAM(I)=0D0
38659         ENDIF
38660   270 CONTINUE
38661       IF(XLAM(0).EQ.0D0) THEN
38662         XLAM(0)=1D-6
38663         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
38664         WRITE(MSTU(11),*) LKNT
38665         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
38666       ENDIF
38667  
38668       RETURN
38669       END
38670  
38671 C*********************************************************************
38672  
38673 C...PYXXZ6
38674 C...Used in the calculation of  inoi -> inoj + f + ~f.
38675  
38676       FUNCTION PYXXZ6(X)
38677  
38678 C...Double precision and integer declarations.
38679       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38680       IMPLICIT INTEGER(I-N)
38681       INTEGER PYK,PYCHGE,PYCOMP
38682 C...Parameter statement to help give large particle numbers.
38683       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
38684      &KEXCIT=4000000,KDIMEN=5000000)
38685 C...Commonblocks.
38686       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38687 C      COMMON/PYINTS/XXM(20)
38688       COMPLEX*16 CXC
38689       COMMON/PYINTC/XXC(10),CXC(8)
38690       SAVE /PYDAT1/,/PYINTC/
38691  
38692 C...Local variables.
38693       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
38694       DOUBLE PRECISION PYXXZ6,X
38695       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
38696       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
38697       DOUBLE PRECISION SIJ
38698       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
38699       DOUBLE PRECISION OL2
38700       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
38701       INTEGER I
38702  
38703 C...Statement functions.
38704 C...Integral from x to y of (t-a)(b-t) dt.
38705       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
38706 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
38707       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
38708      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
38709 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
38710       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
38711      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
38712 C...Integral from x to y of (t-a)/(b-t) dt.
38713       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
38714 C...Integral from x to y of 1/(t-a) dt.
38715       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
38716  
38717       XM12=XXC(1)**2
38718       XM22=XXC(2)**2
38719       XM32=XXC(3)**2
38720       S=XXC(4)**2
38721       S13=X
38722  
38723       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
38724       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
38725      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
38726  
38727       S23MIN=(S23AVE-S23DEL)
38728       S23MAX=(S23AVE+S23DEL)
38729  
38730       XMSD1=XXC(5)**2
38731       XMSD2=XXC(7)**2
38732       XMSU1=XXC(6)**2
38733       XMSU2=XXC(8)**2
38734  
38735       XMV=XXC(9)
38736       XMG=XXC(10)
38737       QLLS=CXC(1)
38738       QLLU=CXC(2)
38739       QLRS=CXC(3)
38740       QLRT=CXC(4)
38741       QRLS=CXC(5)
38742       QRLT=CXC(6)
38743       QRRS=CXC(7)
38744       QRRU=CXC(8)
38745       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
38746       SIJ=2D0*XXC(2)*XXC(4)*S13
38747       IF(XMV.LE.1000D0) THEN
38748         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
38749         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
38750         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
38751      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
38752         IF(XXC(5).LE.10000D0) THEN
38753           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
38754      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
38755      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
38756      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
38757      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
38758      &    *(S13-XMV**2)/WPROP2
38759         ELSE
38760           WFL1=0D0
38761         ENDIF
38762  
38763         IF(XXC(6).LE.10000D0) THEN
38764           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
38765      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
38766      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
38767      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
38768      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
38769      &    *(S13-XMV**2)/WPROP2
38770         ELSE
38771           WFL2=0D0
38772         ENDIF
38773       ELSE
38774         WW=0D0
38775         WFL1=0D0
38776         WFL2=0D0
38777       ENDIF
38778       IF(XXC(5).LE.10000D0) THEN
38779         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
38780      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
38781      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
38782      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
38783       ELSE
38784         WF1=0D0
38785       ENDIF
38786       IF(XXC(6).LE.10000D0) THEN
38787         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
38788      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
38789      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
38790      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
38791       ELSE
38792         WF2=0D0
38793       ENDIF
38794  
38795       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
38796  
38797       IF(PYXXZ6.LT.0D0) THEN
38798         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
38799         WRITE(MSTU(11),*) XXc(1),XXc(2),XXc(3),XXc(4)
38800         WRITE(MSTU(11),*) (XXc(I),I=5,8)
38801         WRITE(MSTU(11),*) (XXc(I),I=9,12)
38802         WRITE(MSTU(11),*) (XXc(I),I=13,16)
38803         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
38804         WRITE(MSTU(11),*) S23MIN,S23MAX
38805         PYXXZ6=0D0
38806       ENDIF
38807  
38808       RETURN
38809       END
38810  
38811  
38812 C*********************************************************************
38813  
38814 C...PYXXGA
38815 C...Calculates chi0_i -> chi0_j + gamma.
38816  
38817       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
38818  
38819 C...Double precision and integer declarations.
38820       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38821       IMPLICIT INTEGER(I-N)
38822       INTEGER PYK,PYCHGE,PYCOMP
38823  
38824 C...Local variables.
38825       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
38826       DOUBLE PRECISION F1,F2
38827  
38828       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
38829       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
38830       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
38831       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
38832  
38833       RETURN
38834       END
38835  
38836 C*********************************************************************
38837  
38838 C...PYX2XG
38839 C...Calculates the decay rate for ino -> ino + gauge boson.
38840  
38841       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
38842  
38843 C...Double precision and integer declarations.
38844       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38845       IMPLICIT INTEGER(I-N)
38846       INTEGER PYK,PYCHGE,PYCOMP
38847  
38848 C...Local variables.
38849       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
38850       DOUBLE PRECISION XL,PYLAMF,C1
38851       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
38852  
38853       XMI2=XM1**2
38854       XMI3=ABS(XM1**3)
38855       XMJ2=XM2**2
38856       XMV2=XM3**2
38857       XL=PYLAMF(XMI2,XMJ2,XMV2)
38858       PYX2XG=C1/8D0/XMI3*SQRT(XL)
38859      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
38860      &12D0*GLR*XM1*XM2*XMV2)
38861  
38862       RETURN
38863       END
38864  
38865 C*********************************************************************
38866  
38867 C...PYX2XH
38868 C...Calculates the decay rate for ino -> ino + H.
38869  
38870       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
38871  
38872 C...Double precision and integer declarations.
38873       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38874       IMPLICIT INTEGER(I-N)
38875       INTEGER PYK,PYCHGE,PYCOMP
38876  
38877 C...Local variables.
38878       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
38879       DOUBLE PRECISION XL,PYLAMF,C1
38880       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
38881  
38882       XMI2=XM1**2
38883       XMI3=ABS(XM1**3)
38884       XMJ2=XM2**2
38885       XMV2=XM3**2
38886       XL=PYLAMF(XMI2,XMJ2,XMV2)
38887       PYX2XH=C1/8D0/XMI3*SQRT(XL)
38888      &*(GX2*(XMI2+XMJ2-XMV2)+
38889      &4D0*GLR*XM1*XM2)
38890  
38891       RETURN
38892       END
38893  
38894 C*********************************************************************
38895  
38896 C...PYHEXT
38897 C...Calculates the non-standard decay modes of the Higgs boson.
38898 C...
38899 C...Author:  Stephen Mrenna
38900 C...Last Update:  April 2001
38901 C......Allow complex values for Z,U, and V
38902  
38903       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
38904  
38905 C...Double precision and integer declarations.
38906       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38907       IMPLICIT INTEGER(I-N)
38908       INTEGER PYK,PYCHGE,PYCOMP
38909 C...Parameter statement to help give large particle numbers.
38910       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
38911      &KEXCIT=4000000,KDIMEN=5000000)
38912 C...Commonblocks.
38913       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38914       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38915       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38916       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
38917       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
38918      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
38919       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
38920  
38921 C...Local variables.
38922       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
38923       COMPLEX*16 QIJ,RIJ,F21K,F12K
38924       INTEGER KFIN
38925       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
38926       DOUBLE PRECISION XMI2,XMI3,XMJ2
38927       DOUBLE PRECISION PYLAMF,XL,CF,EI
38928       INTEGER IDU,IFL
38929       DOUBLE PRECISION TANW,XW,AEM,C1,AS
38930       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
38931       DOUBLE PRECISION XLAM(0:400)
38932       INTEGER IDLAM(400,3)
38933       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
38934       INTEGER ITH(4)
38935       INTEGER KFNCHI(4),KFCCHI(2)
38936       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
38937       DOUBLE PRECISION SR2
38938       DOUBLE PRECISION BETA,ALFA
38939       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
38940       DOUBLE PRECISION PYALEM
38941       DOUBLE PRECISION AL,AR,ALR
38942       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
38943       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
38944       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
38945       DATA ITH/25,35,36,37/
38946       DATA ETAH/1D0,1D0,-1D0/
38947       DATA SR2/1.4142136D0/
38948       DATA KFNCHI/1000022,1000023,1000025,1000035/
38949       DATA KFCCHI/1000024,1000037/
38950  
38951 C...COUNT THE NUMBER OF DECAY MODES
38952       LKNT=IKNT
38953  
38954       XMW=PMAS(24,1)
38955       XMW2=XMW**2
38956       XMZ=PMAS(23,1)
38957       XW=PARU(102)
38958       TANW = SQRT(XW/(1D0-XW))
38959       CW=SQRT(1D0-XW)
38960  
38961 C...1 - 4 DEPENDING ON Higgs species.
38962       IH=1
38963       IF(KFIN.EQ.ITH(2)) IH=2
38964       IF(KFIN.EQ.ITH(3)) IH=3
38965       IF(KFIN.EQ.ITH(4)) IH=4
38966  
38967       XMI=PMAS(KFIN,1)
38968       XMI2=XMI**2
38969       AXMI=ABS(XMI)
38970       AEM=PYALEM(XMI2)
38971       C1=AEM/XW
38972       XMI3=ABS(XMI**3)
38973  
38974       TANB=RMSS(5)
38975       BETA=ATAN(TANB)
38976       CBETA=COS(BETA)
38977       SBETA=TANB*CBETA
38978       ALFA=RMSS(18)
38979       COSA=COS(ALFA)
38980       SINA=SIN(ALFA)
38981       ATRIT=RMSS(16)
38982       ATRIB=RMSS(15)
38983       ATRIL=RMSS(17)
38984       XMUZ=-RMSS(4)
38985  
38986       DO 110 I=1,4
38987         DO 100 J=1,4
38988           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
38989   100   CONTINUE
38990   110 CONTINUE
38991       DO 130 I=1,2
38992         DO 120 J=1,2
38993            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
38994            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
38995   120   CONTINUE
38996   130 CONTINUE
38997  
38998  
38999       IF(IH.EQ.4) GOTO 220
39000  
39001 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
39002 C...H0_K -> CHI0_I + CHI0_J
39003       EH(2)=SINA
39004       EH(1)=COSA
39005       EH(3)=CBETA
39006       DH(2)=COSA
39007       DH(1)=-SINA
39008       DH(3)=SBETA
39009       DO 150 IJ=1,4
39010         XMJ=SMZ(IJ)
39011         AXMJ=ABS(XMJ)
39012         DO 140 IK=1,IJ
39013           XMK=SMZ(IK)
39014           AXMK=ABS(XMK)
39015           IF(AXMI.GE.AXMJ+AXMK) THEN
39016             LKNT=LKNT+1
39017             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
39018      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
39019      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
39020      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
39021             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
39022      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
39023      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
39024      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
39025             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
39026             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
39027 C...SIGN OF MASSES I,J
39028             XML=XMK*ETAH(IH)
39029             GX2=ABS(F12K)**2+ABS(F21K)**2
39030             GLR=DBLE(F12K*DCONJG(F21K))
39031             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
39032             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
39033             IDLAM(LKNT,1)=KFNCHI(IJ)
39034             IDLAM(LKNT,2)=KFNCHI(IK)
39035             IDLAM(LKNT,3)=0
39036           ENDIF
39037   140   CONTINUE
39038   150 CONTINUE
39039  
39040 C...H0_K -> CHI+_I CHI-_J
39041       DO 170 IJ=1,2
39042         XMJ=SMW(IJ)
39043         AXMJ=ABS(XMJ)
39044         DO 160 IK=1,2
39045           XMK=SMW(IK)
39046           AXMK=ABS(XMK)
39047           IF(AXMI.GE.AXMJ+AXMK) THEN
39048             LKNT=LKNT+1
39049             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
39050      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
39051             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
39052      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
39053             GX2=ABS(OLPP)**2+ABS(ORPP)**2
39054             GLR=DBLE(OLPP*DCONJG(ORPP))
39055             XML=XMK*ETAH(IH)
39056             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
39057             IDLAM(LKNT,1)=KFCCHI(IJ)
39058             IDLAM(LKNT,2)=-KFCCHI(IK)
39059             IDLAM(LKNT,3)=0
39060           ENDIF
39061   160   CONTINUE
39062   170 CONTINUE
39063  
39064 C...HIGGS TO SFERMION SFERMION
39065       DO 200 IFL=1,16
39066         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
39067         IJ=KSUSY1+IFL
39068         XMJL=PMAS(PYCOMP(IJ),1)
39069         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
39070         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
39071           XMJ=XMJL
39072           XMJ2=XMJ**2
39073           XL=PYLAMF(XMI2,XMJ2,XMJ2)
39074           XMF=PMAS(IFL,1)
39075           EI=KCHG(IFL,1)/3D0
39076           IDU=2-MOD(IFL,2)
39077  
39078           IF(IH.EQ.1) THEN
39079             IF(IDU.EQ.1) THEN
39080               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
39081      &        XMF**2/XMW*SINA/CBETA
39082               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
39083      &        XMF**2/XMW*SINA/CBETA
39084               IF(IFL.EQ.5) THEN
39085                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
39086      &          ATRIB*SINA)
39087               ELSEIF(IFL.EQ.15) THEN
39088                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
39089      &          ATRIL*SINA)
39090               ELSE
39091                 GHLR=0D0
39092               ENDIF
39093             ELSE
39094               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
39095      &        XMF**2/XMW*COSA/SBETA
39096               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
39097      &        XMF**2/XMW*COSA/SBETA
39098               IF(IFL.EQ.6) THEN
39099                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
39100      &          ATRIT*COSA)
39101               ELSE
39102                 GHLR=0D0
39103               ENDIF
39104             ENDIF
39105  
39106           ELSEIF(IH.EQ.2) THEN
39107             IF(IDU.EQ.1) THEN
39108               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
39109      &        XMF**2/XMW*COSA/CBETA
39110               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
39111      &        XMF**2/XMW*COSA/CBETA
39112               IF(IFL.EQ.5) THEN
39113                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
39114      &          ATRIB*COSA)
39115               ELSEIF(IFL.EQ.15) THEN
39116                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
39117      &          ATRIL*COSA)
39118               ELSE
39119                 GHLR=0D0
39120               ENDIF
39121             ELSE
39122               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
39123      &        XMF**2/XMW*SINA/SBETA
39124               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
39125      &        XMF**2/XMW*SINA/SBETA
39126               IF(IFL.EQ.6) THEN
39127                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
39128      &          ATRIT*SINA)
39129               ELSE
39130                 GHLR=0D0
39131               ENDIF
39132             ENDIF
39133  
39134           ELSEIF(IH.EQ.3) THEN
39135             GHLL=0D0
39136             GHRR=0D0
39137             GHLR=0D0
39138             IF(IDU.EQ.1) THEN
39139               IF(IFL.EQ.5) THEN
39140                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
39141               ELSEIF(IFL.EQ.15) THEN
39142                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
39143               ENDIF
39144             ELSE
39145               IF(IFL.EQ.6) THEN
39146                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
39147               ENDIF
39148             ENDIF
39149           ENDIF
39150           IF(IH.EQ.3) GOTO 180
39151  
39152           AL=SFMIX(IFL,1)**2
39153           AR=SFMIX(IFL,2)**2
39154           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
39155           IF(IFL.LE.6) THEN
39156             CF=3D0
39157           ELSE
39158             CF=1D0
39159           ENDIF
39160  
39161           IF(AXMI.GE.2D0*XMJ) THEN
39162             LKNT=LKNT+1
39163             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39164      &      (GHLL*AL+GHRR*AR
39165      &      +2D0*GHLR*ALR)**2
39166             IDLAM(LKNT,1)=IJ
39167             IDLAM(LKNT,2)=-IJ
39168             IDLAM(LKNT,3)=0
39169           ENDIF
39170  
39171           IF(AXMI.GE.2D0*XMJR) THEN
39172             LKNT=LKNT+1
39173             AL=SFMIX(IFL,3)**2
39174             AR=SFMIX(IFL,4)**2
39175             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
39176             XMJ=XMJR
39177             XMJ2=XMJ**2
39178             XL=PYLAMF(XMI2,XMJ2,XMJ2)
39179             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39180      &      (GHLL*AL+GHRR*AR
39181      &      +2D0*GHLR*ALR)**2
39182             IDLAM(LKNT,1)=IJ+KSUSY1
39183             IDLAM(LKNT,2)=-(IJ+KSUSY1)
39184             IDLAM(LKNT,3)=0
39185           ENDIF
39186   180     CONTINUE
39187  
39188           IF(AXMI.GE.XMJL+XMJR) THEN
39189             LKNT=LKNT+1
39190             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
39191             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
39192             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
39193             XMJ=XMJR
39194             XMJ2=XMJ**2
39195             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
39196             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39197      &      (GHLL*AL+GHRR*AR)**2
39198             IDLAM(LKNT,1)=IJ
39199             IDLAM(LKNT,2)=-(IJ+KSUSY1)
39200             IDLAM(LKNT,3)=0
39201             LKNT=LKNT+1
39202             IDLAM(LKNT,1)=-IJ
39203             IDLAM(LKNT,2)=IJ+KSUSY1
39204             IDLAM(LKNT,3)=0
39205             XLAM(LKNT)=XLAM(LKNT-1)
39206           ENDIF
39207         ENDIF
39208   190   CONTINUE
39209   200 CONTINUE
39210   210 CONTINUE
39211  
39212       GOTO 270
39213   220 CONTINUE
39214  
39215 C...H+ -> CHI+_I + CHI0_J
39216       DO 240 IJ=1,4
39217         XMJ=SMZ(IJ)
39218         AXMJ=ABS(XMJ)
39219         XMJ2=XMJ**2
39220         DO 230 IK=1,2
39221           XMK=SMW(IK)
39222           AXMK=ABS(XMK)
39223           IF(AXMI.GE.AXMJ+AXMK) THEN
39224             LKNT=LKNT+1
39225             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
39226      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
39227             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
39228      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
39229             GX2=ABS(OLPP)**2+ABS(ORPP)**2
39230             GLR=DBLE(OLPP*DCONJG(ORPP))
39231             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
39232             IDLAM(LKNT,1)=KFNCHI(IJ)
39233             IDLAM(LKNT,2)=KFCCHI(IK)
39234             IDLAM(LKNT,3)=0
39235           ENDIF
39236   230   CONTINUE
39237   240 CONTINUE
39238  
39239       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
39240       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
39241       AL=0D0
39242       AR=0D0
39243       CF=3D0
39244  
39245 C...H+ -> T_1 B_1~
39246       XM1=PMAS(PYCOMP(KSUSY1+6),1)
39247       XM2=PMAS(PYCOMP(KSUSY1+5),1)
39248       IF(XMI.GE.XM1+XM2) THEN
39249         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39250         LKNT=LKNT+1
39251         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39252      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
39253         IDLAM(LKNT,1)=KSUSY1+6
39254         IDLAM(LKNT,2)=-(KSUSY1+5)
39255         IDLAM(LKNT,3)=0
39256       ENDIF
39257  
39258 C...H+ -> T_2 B_1~
39259       XM1=PMAS(PYCOMP(KSUSY2+6),1)
39260       XM2=PMAS(PYCOMP(KSUSY1+5),1)
39261       IF(XMI.GE.XM1+XM2) THEN
39262         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39263         LKNT=LKNT+1
39264         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39265      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
39266         IDLAM(LKNT,1)=KSUSY2+6
39267         IDLAM(LKNT,2)=-(KSUSY1+5)
39268         IDLAM(LKNT,3)=0
39269       ENDIF
39270  
39271 C...H+ -> T_1 B_2~
39272       XM1=PMAS(PYCOMP(KSUSY1+6),1)
39273       XM2=PMAS(PYCOMP(KSUSY2+5),1)
39274       IF(XMI.GE.XM1+XM2) THEN
39275         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39276         LKNT=LKNT+1
39277         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39278      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
39279         IDLAM(LKNT,1)=KSUSY1+6
39280         IDLAM(LKNT,2)=-(KSUSY2+5)
39281         IDLAM(LKNT,3)=0
39282       ENDIF
39283  
39284 C...H+ -> T_2 B_2~
39285       XM1=PMAS(PYCOMP(KSUSY2+6),1)
39286       XM2=PMAS(PYCOMP(KSUSY2+5),1)
39287       IF(XMI.GE.XM1+XM2) THEN
39288         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39289         LKNT=LKNT+1
39290         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
39291      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
39292         IDLAM(LKNT,1)=KSUSY2+6
39293         IDLAM(LKNT,2)=-(KSUSY2+5)
39294         IDLAM(LKNT,3)=0
39295       ENDIF
39296  
39297 C...H+ -> UL DL~
39298       GL=-XMW/SR2*SIN(2D0*BETA)
39299       DO 250 IJ=1,3,2
39300         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
39301         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
39302         IF(XMI.GE.XM1+XM2) THEN
39303           XL=PYLAMF(XMI2,XM1**2,XM2**2)
39304           LKNT=LKNT+1
39305           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
39306           IDLAM(LKNT,1)=-(KSUSY1+IJ)
39307           IDLAM(LKNT,2)=KSUSY1+IJ+1
39308           IDLAM(LKNT,3)=0
39309         ENDIF
39310   250 CONTINUE
39311  
39312 C...H+ -> EL~ NUL
39313       CF=1D0
39314       DO 260 IJ=11,13,2
39315         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
39316         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
39317         IF(XMI.GE.XM1+XM2) THEN
39318           XL=PYLAMF(XMI2,XM1**2,XM2**2)
39319           LKNT=LKNT+1
39320           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
39321           IDLAM(LKNT,1)=-(KSUSY1+IJ)
39322           IDLAM(LKNT,2)=KSUSY1+IJ+1
39323           IDLAM(LKNT,3)=0
39324         ENDIF
39325   260 CONTINUE
39326  
39327 C...H+ -> TAU1 NUTAUL
39328       XM1=PMAS(PYCOMP(KSUSY1+15),1)
39329       XM2=PMAS(PYCOMP(KSUSY1+16),1)
39330       IF(XMI.GE.XM1+XM2) THEN
39331         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39332         LKNT=LKNT+1
39333         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
39334         IDLAM(LKNT,1)=-(KSUSY1+15)
39335         IDLAM(LKNT,2)= KSUSY1+16
39336         IDLAM(LKNT,3)=0
39337       ENDIF
39338  
39339 C...H+ -> TAU2 NUTAUL
39340       XM1=PMAS(PYCOMP(KSUSY2+15),1)
39341       XM2=PMAS(PYCOMP(KSUSY1+16),1)
39342       IF(XMI.GE.XM1+XM2) THEN
39343         XL=PYLAMF(XMI2,XM1**2,XM2**2)
39344         LKNT=LKNT+1
39345         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
39346         IDLAM(LKNT,1)=-(KSUSY2+15)
39347         IDLAM(LKNT,2)= KSUSY1+16
39348         IDLAM(LKNT,3)=0
39349       ENDIF
39350  
39351   270 CONTINUE
39352       IKNT=LKNT
39353       XLAM(0)=0D0
39354       DO 280 I=1,IKNT
39355         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
39356         XLAM(0)=XLAM(0)+XLAM(I)
39357   280 CONTINUE
39358       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
39359  
39360       RETURN
39361       END
39362  
39363 C*********************************************************************
39364  
39365 C...PYH2XX
39366 C...Calculates the decay rate for a Higgs to an ino pair.
39367  
39368       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
39369  
39370 C...Double precision and integer declarations.
39371       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39372       IMPLICIT INTEGER(I-N)
39373       INTEGER PYK,PYCHGE,PYCOMP
39374 C...Commonblocks.
39375       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39376       SAVE /PYDAT1/
39377  
39378 C...Local variables.
39379       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
39380       DOUBLE PRECISION XL,PYLAMF,C1
39381       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
39382  
39383       XMI2=XM1**2
39384       XMI3=ABS(XM1**3)
39385       XMJ2=XM2**2
39386       XMK2=XM3**2
39387       XL=PYLAMF(XMI2,XMJ2,XMK2)
39388       PYH2XX=C1/4D0/XMI3*SQRT(XL)
39389      &*(GX2*(XMI2-XMJ2-XMK2)-
39390      &4D0*GLR*XM3*XM2)
39391       IF(PYH2XX.LT.0D0) THEN
39392         WRITE(MSTU(11),*) ' NEGATIVE WIDTH IN PYH2XX '
39393         WRITE(MSTU(11),*) XMI2,XMJ2,XMK2,GX2,GLR,XM1,XM2,XM3
39394         STOP
39395       ENDIF
39396  
39397       RETURN
39398       END
39399  
39400 C*********************************************************************
39401  
39402 C...PYGAUS
39403 C...Integration by adaptive Gaussian quadrature.
39404 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
39405  
39406       FUNCTION PYGAUS(F, A, B, EPS)
39407  
39408 C...Double precision and integer declarations.
39409       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39410       IMPLICIT INTEGER(I-N)
39411       INTEGER PYK,PYCHGE,PYCOMP
39412  
39413 C...Local declarations.
39414       EXTERNAL F
39415       DOUBLE PRECISION F,W(12), X(12)
39416       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
39417       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
39418       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
39419       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
39420       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
39421       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
39422       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
39423       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
39424       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
39425       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
39426       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
39427       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
39428  
39429 C...The Gaussian quadrature algorithm.
39430       H = 0D0
39431       IF(B .EQ. A) GOTO 140
39432       CONST = 5D-3 / ABS(B-A)
39433       BB = A
39434   100 CONTINUE
39435       AA = BB
39436       BB = B
39437   110 CONTINUE
39438       C1 = 0.5D0*(BB+AA)
39439       C2 = 0.5D0*(BB-AA)
39440       S8 = 0D0
39441       DO 120 I = 1, 4
39442         U = C2*X(I)
39443         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
39444   120 CONTINUE
39445       S16 = 0D0
39446       DO 130 I = 5, 12
39447         U = C2*X(I)
39448         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
39449   130 CONTINUE
39450       S16 = C2*S16
39451       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
39452         H = H + S16
39453         IF(BB .NE. B) GOTO 100
39454       ELSE
39455         BB = C1
39456         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
39457         H = 0D0
39458         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
39459         GOTO 140
39460       ENDIF
39461   140 CONTINUE
39462       PYGAUS = H
39463  
39464       RETURN
39465       END
39466  
39467 C*********************************************************************
39468  
39469 C...PYGAU2
39470 C...Integration by adaptive Gaussian quadrature.
39471 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
39472 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
39473  
39474       FUNCTION PYGAU2(F, A, B, EPS)
39475  
39476 C...Double precision and integer declarations.
39477       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39478       IMPLICIT INTEGER(I-N)
39479       INTEGER PYK,PYCHGE,PYCOMP
39480  
39481 C...Local declarations.
39482       EXTERNAL F
39483       DOUBLE PRECISION F,W(12), X(12)
39484       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
39485       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
39486       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
39487       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
39488       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
39489       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
39490       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
39491       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
39492       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
39493       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
39494       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
39495       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
39496  
39497 C...The Gaussian quadrature algorithm.
39498       H = 0D0
39499       IF(B .EQ. A) GOTO 140
39500       CONST = 5D-3 / ABS(B-A)
39501       BB = A
39502   100 CONTINUE
39503       AA = BB
39504       BB = B
39505   110 CONTINUE
39506       C1 = 0.5D0*(BB+AA)
39507       C2 = 0.5D0*(BB-AA)
39508       S8 = 0D0
39509       DO 120 I = 1, 4
39510         U = C2*X(I)
39511         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
39512   120 CONTINUE
39513       S16 = 0D0
39514       DO 130 I = 5, 12
39515         U = C2*X(I)
39516         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
39517   130 CONTINUE
39518       S16 = C2*S16
39519       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
39520         H = H + S16
39521         IF(BB .NE. B) GOTO 100
39522       ELSE
39523         BB = C1
39524         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
39525         H = 0D0
39526         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
39527         GOTO 140
39528       ENDIF
39529   140 CONTINUE
39530       PYGAU2 = H
39531  
39532       RETURN
39533       END
39534  
39535 C*********************************************************************
39536  
39537 C...PYSIMP
39538 C...Simpson formula for an integral.
39539  
39540       FUNCTION PYSIMP(Y,X0,X1,N)
39541  
39542 C...Double precision and integer declarations.
39543       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39544       IMPLICIT INTEGER(I-N)
39545       INTEGER PYK,PYCHGE,PYCOMP
39546  
39547 C...Local variables.
39548       DOUBLE PRECISION Y,X0,X1,H,S
39549       DIMENSION Y(0:N)
39550  
39551       S=0D0
39552       H=(X1-X0)/N
39553       DO 100 I=0,N-2,2
39554         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
39555   100 CONTINUE
39556       PYSIMP=S*H/3D0
39557  
39558       RETURN
39559       END
39560  
39561 C*********************************************************************
39562  
39563 C...PYLAMF
39564 C...The standard lambda function.
39565  
39566       FUNCTION PYLAMF(X,Y,Z)
39567  
39568 C...Double precision and integer declarations.
39569       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39570       IMPLICIT INTEGER(I-N)
39571       INTEGER PYK,PYCHGE,PYCOMP
39572  
39573 C...Local variables.
39574       DOUBLE PRECISION PYLAMF,X,Y,Z
39575  
39576       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
39577       IF(PYLAMF.LT.0D0) PYLAMF=0D0
39578  
39579       RETURN
39580       END
39581  
39582 C*********************************************************************
39583  
39584 C...PYTBDY
39585 C...Generates 3-body decays of gauginos.
39586  
39587       SUBROUTINE PYTBDY(IDIN)
39588  
39589 C...Double precision and integer declarations.
39590       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39591       IMPLICIT INTEGER(I-N)
39592       INTEGER PYK,PYCHGE,PYCOMP
39593 C...Parameter statement to help give large particle numbers.
39594       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
39595      &KEXCIT=4000000,KDIMEN=5000000)
39596 C...Commonblocks.
39597       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
39598       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39599       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39600 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
39601 C     COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39602       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
39603      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
39604 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
39605       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSSMT/
39606  
39607 C...Local variables.
39608       DOUBLE PRECISION XM(5)
39609       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
39610       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
39611       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
39612       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
39613       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
39614       DOUBLE PRECISION CPHI1,SPHI1
39615       DOUBLE PRECISION S23DEL,EPS
39616       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
39617       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
39618       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
39619       INTEGER INOID(4)
39620       DATA INOID/22,23,25,35/
39621       DATA EPS/1D-6/
39622  
39623       ID=IDIN
39624       ISKIP=1
39625       XM(1)=P(N+1,5)
39626       XM(2)=P(N+2,5)
39627       XM(3)=P(N+3,5)
39628       XM(5)=P(ID,5)
39629  
39630 C...GENERATE S12
39631       S12MIN=(XM(1)+XM(2))**2
39632       S12MAX=(XM(5)-XM(3))**2
39633       YJACO1=S12MAX-S12MIN
39634  
39635 C...Initialize some parameters
39636       XW=PARU(102)
39637       XW1=1D0-XW
39638       TANW=SQRT(XW/XW1)
39639       IZID1=0
39640       IWID1=0
39641       IZID2=0
39642       IWID2=0
39643       DO 100 I1=1,4
39644         IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
39645         IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
39646   100 CONTINUE
39647       IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
39648       IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
39649       IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
39650       IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
39651       IA=K(N+2,2)
39652       JA=K(N+3,2)
39653       ZM12=XM(5)**2
39654       ZM22=XM(1)**2
39655       EI=KCHG(IABS(IA),1)/3D0
39656       T3I=SIGN(1D0,EI+1D-6)/2D0
39657       IF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
39658         ISKIP=0
39659       ELSEIF(IZID1*IZID2.NE.0) THEN
39660         SQMZ=PMAS(23,1)**2
39661         GMMZ=PMAS(23,1)*PMAS(23,2)
39662         DO 110 I=1,4
39663           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
39664           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
39665   110   CONTINUE
39666         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
39667      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
39668         ORPP=DCONJG(OLPP)
39669         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
39670         XLR2=XLL2
39671         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
39672         XRL2=XRR2
39673         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
39674      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
39675         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
39676         XM1M2=SMZ(IZID1)*SMZ(IZID2)
39677         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
39678         QLLU=-GLIJ
39679         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
39680         QLRT=DCONJG(GLIJ)
39681         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
39682         QRLT=GRIJ
39683         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
39684         QRRU=-DCONJG(GRIJ)
39685       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
39686         IF(IZID1.NE.0) THEN
39687           XM1M2=SMZ(IZID1)*SMW(IWID2)
39688           IZID1=IWID2
39689           IZID2=IZID1
39690         ELSE
39691           XM1M2=SMZ(IZID2)*SMW(IWID1)
39692           IZID1=IWID1
39693         ENDIF
39694         RT2I = 1D0/SQRT(2D0)
39695         SQMZ=PMAS(24,1)**2
39696         GMMZ=PMAS(24,1)*PMAS(24,2)
39697         DO 120 I=1,2
39698           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
39699           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
39700   120   CONTINUE
39701         DO 130 I=1,4
39702           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
39703   130   CONTINUE
39704         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
39705      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
39706         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
39707      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
39708         EJ=KCHG(JA,1)/3D0
39709         T3J=SIGN(1D0,EJ+1D-6)/2D0
39710         QRLS=DCMPLX(0D0,0D0)
39711         QRLT=QRLS
39712         QRRS=QRLS
39713         QRRU=QRLS
39714         XRR2=1D6**2
39715         XRL2=XRR2
39716         XLR2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
39717         XLL2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
39718         IF(MOD(IA,2).EQ.0) THEN
39719           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
39720      &    TANW+ZMIXC(IZID2,2)*T3I)
39721           QLRT=-DCONJG(UMIXC(IZID1,1))*(
39722      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
39723         ELSE
39724           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
39725      &    TANW+ZMIXC(IZID2,2)*T3J)
39726           QLRT=-DCONJG(UMIXC(IZID1,1))*(
39727      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
39728         ENDIF
39729       ELSEIF(IWID1*IWID2.NE.0) THEN
39730         IZID1=IWID1
39731         IZID2=IWID2
39732         XM1M2=SMW(IWID1)*SMW(IWID2)
39733         SQMZ=PMAS(23,1)**2
39734         GMMZ=PMAS(23,1)*PMAS(23,2)
39735         DO 140 I=1,2
39736           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
39737           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
39738           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
39739           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
39740   140   CONTINUE
39741         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
39742      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
39743         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
39744      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
39745         QRLS=-DCMPLX(EI/XW1)*ORPP
39746         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
39747         QRRS=-DCMPLX(EI/XW1)*OLPP
39748         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
39749         IF(MOD(IA,2).EQ.0) THEN
39750           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
39751           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
39752         ELSE
39753           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
39754           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
39755         ENDIF
39756       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
39757      &THEN
39758         ISKIP=0
39759       ELSE
39760         ISKIP=0
39761       ENDIF
39762  
39763       IF(ISKIP.NE.0) THEN
39764         WTMAX=0D0
39765         DO 160 KT=1,100
39766           S12=S12MIN+YJACO1*(KT-1)/99
39767           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
39768      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
39769           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
39770      &    -(2D0*XM(1)*XM(2))**2
39771           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
39772      &    -(2D0*XM(3)*XM(5))**2
39773           S23DF1=S23DF1*EPS
39774           S23DF2=S23DF2*EPS
39775           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
39776           S23DEL=S23DEL/EPS
39777           S23MIN=S23AVE-S23DEL
39778           S23MAX=S23AVE+S23DEL
39779           YJACO2=S23MAX-S23MIN
39780           TH=S12
39781           DO 150 KS=1,100
39782             S23=S23MIN+YJACO2*(KS-1)/99
39783             SH=S23
39784             UH=ZM12+ZM22-SH-TH
39785             WU2 = (UH-ZM12)*(UH-ZM22)
39786             WT2 = (TH-ZM12)*(TH-ZM22)
39787             WS2 = XM1M2*SH
39788             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
39789             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
39790             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
39791             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
39792             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
39793             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
39794             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
39795      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
39796      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
39797             IF(WT0.GT.WTMAX) WTMAX=WT0
39798   150     CONTINUE
39799   160   CONTINUE
39800  
39801         WTMAX=WTMAX*1.05D0
39802       ENDIF
39803  
39804 C...FIND S12*
39805       AX=S12MIN
39806       CX=S12MAX
39807       BX=S12MIN+0.5D0*YJACO1
39808       X0=AX
39809       X3=CX
39810       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
39811         X1=BX
39812         X2=BX+C*(CX-BX)
39813       ELSE
39814         X2=BX
39815         X1=BX-C*(BX-AX)
39816       ENDIF
39817  
39818 C...SOLVE FOR F1 AND F2
39819       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
39820      &-(2D0*XM(1)*XM(2))**2
39821       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
39822      &-(2D0*XM(3)*XM(5))**2
39823       S23DF1=S23DF1*EPS
39824       S23DF2=S23DF2*EPS
39825       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
39826       F1=-2D0*S23DEL/EPS
39827       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
39828      &-(2D0*XM(1)*XM(2))**2
39829       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
39830      &-(2D0*XM(3)*XM(5))**2
39831       S23DF1=S23DF1*EPS
39832       S23DF2=S23DF2*EPS
39833       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
39834       F2=-2D0*S23DEL/EPS
39835  
39836   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
39837 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
39838         IF(F2.LE.F1)THEN
39839           X0=X1
39840           X1=X2
39841           X2=R*X1+C*X3
39842           F1=F2
39843           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
39844      &    -(2D0*XM(1)*XM(2))**2
39845           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
39846      &    -(2D0*XM(3)*XM(5))**2
39847           S23DF1=S23DF1*EPS
39848           S23DF2=S23DF2*EPS
39849           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
39850           F2=-2D0*S23DEL/EPS
39851         ELSE
39852           X3=X2
39853           X2=X1
39854           X1=R*X2+C*X0
39855           F2=F1
39856           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
39857      &    -(2D0*XM(1)*XM(2))**2
39858           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
39859      &    -(2D0*XM(3)*XM(5))**2
39860           S23DF1=S23DF1*EPS
39861           S23DF2=S23DF2*EPS
39862           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
39863           F1=-2D0*S23DEL/EPS
39864         ENDIF
39865         GOTO 170
39866       ENDIF
39867 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
39868       IF(F1.LT.F2)THEN
39869         GOLDEN=-F1
39870         XMIN=X1
39871       ELSE
39872         GOLDEN=-F2
39873         XMIN=X2
39874       ENDIF
39875  
39876       IKNT=0
39877   180 S12=S12MIN+PYR(0)*YJACO1
39878       IKNT=IKNT+1
39879 C...GENERATE S23
39880       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
39881      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
39882       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
39883      &-(2D0*XM(1)*XM(2))**2
39884       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
39885      &-(2D0*XM(3)*XM(5))**2
39886       S23DF1=S23DF1*EPS
39887       S23DF2=S23DF2*EPS
39888       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
39889       S23DEL=S23DEL/EPS
39890       S23MIN=S23AVE-S23DEL
39891       S23MAX=S23AVE+S23DEL
39892       YJACO2=S23MAX-S23MIN
39893       S23=S23MIN+PYR(0)*YJACO2
39894  
39895 C...CHECK THE SAMPLING
39896       IF(IKNT.GT.100) THEN
39897         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
39898         GOTO 190
39899       ENDIF
39900       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
39901  
39902       IF(ISKIP.EQ.0) GOTO 190
39903  
39904       SH=S23
39905       TH=S12
39906       UH=ZM12+ZM22-SH-TH
39907  
39908       WU2 = (UH-ZM12)*(UH-ZM22)
39909       WT2 = (TH-ZM12)*(TH-ZM22)
39910       WS2 = XM1M2*SH
39911       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
39912       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
39913  
39914       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
39915       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
39916       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
39917       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
39918 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
39919 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
39920 c     &/DCMPLX(TH-XML2)
39921 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
39922 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
39923 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
39924       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
39925      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
39926      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
39927  
39928       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
39929       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
39930  
39931   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
39932       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
39933       D2=XM(5)-D1-D3
39934       P1=SQRT(D1*D1-XM(1)**2)
39935       P2=SQRT(D2*D2-XM(2)**2)
39936       P3=SQRT(D3*D3-XM(3)**2)
39937       CTHE1=2D0*PYR(0)-1D0
39938       ANG1=2D0*PYR(0)*PARU(1)
39939       CPHI1=COS(ANG1)
39940       SPHI1=SIN(ANG1)
39941       ARG=1D0-CTHE1**2
39942       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
39943       STHE1=SQRT(ARG)
39944       P(N+1,1)=P1*STHE1*CPHI1
39945       P(N+1,2)=P1*STHE1*SPHI1
39946       P(N+1,3)=P1*CTHE1
39947       P(N+1,4)=D1
39948  
39949 C...GET CPHI3
39950       ANG3=2D0*PYR(0)*PARU(1)
39951       CPHI3=COS(ANG3)
39952       SPHI3=SIN(ANG3)
39953       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
39954       ARG=1D0-CTHE3**2
39955       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
39956       STHE3=SQRT(ARG)
39957       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
39958      &+P3*STHE3*SPHI3*SPHI1
39959      &+P3*CTHE3*STHE1*CPHI1
39960       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
39961      &-P3*STHE3*SPHI3*CPHI1
39962      &+P3*CTHE3*STHE1*SPHI1
39963       P(N+3,3)=P3*STHE3*CPHI3*STHE1
39964      &+P3*CTHE3*CTHE1
39965       P(N+3,4)=D3
39966  
39967       DO 200 I=1,3
39968         P(N+2,I)=-P(N+1,I)-P(N+3,I)
39969   200 CONTINUE
39970       P(N+2,4)=D2
39971  
39972       RETURN
39973       END
39974  
39975 C*********************************************************************
39976  
39977 C...PYTECM
39978 C...Finds the s-hat dependent eigenvalues of the inverse propagator
39979 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
39980 C...phase space generation.
39981  
39982       SUBROUTINE PYTECM(S1,S2)
39983  
39984 C...Double precision and integer declarations.
39985       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39986       IMPLICIT INTEGER(I-N)
39987       INTEGER PYK,PYCHGE,PYCOMP
39988 C...Parameter statement to help give large particle numbers.
39989       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
39990      &KEXCIT=4000000,KDIMEN=5000000)
39991 C...Commonblocks.
39992       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39993       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39994       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39995       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
39996       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
39997  
39998 C...Local variables.
39999       DOUBLE PRECISION AR(4,4),WR(4),ZR(4,4),ZI(4,4),WORK(12,12),
40000      &AT(4,4),WI(4),FV1(4),FV2(4),FV3(4),sh,aem,tanw,ct2w,qupd,alprht,
40001      &far,fao,fzr,fzo,shr,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5)
40002       INTEGER i,j,ierr
40003  
40004       SH=PMAS(PYCOMP(KTECHN+113),1)**2
40005       AEM=PYALEM(SH)
40006  
40007       TANW=SQRT(PARU(102)/(1D0-PARU(102)))
40008       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
40009       QUPD=2D0*RTCM(2)-1D0
40010  
40011       ALPRHT=2.91D0*(3D0/DBLE(ITCM(1)))
40012       FAR=SQRT(AEM/ALPRHT)
40013       FAO=FAR*QUPD
40014       FZR=FAR*CT2W
40015       FZO=-FAO*TANW
40016  
40017       AR(1,1) = SH
40018       AR(2,2) = SH-PMAS(23,1)**2
40019       AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
40020       AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
40021       AR(1,2) = 0D0
40022       AR(2,1) = 0D0
40023       AR(1,3) = -SH*FAR
40024       AR(3,1) = AR(1,3)
40025       AR(1,4) = -SH*FAO
40026       AR(4,1) = AR(1,4)
40027       AR(2,3) = -SH*FZR
40028       AR(3,2) = AR(2,3)
40029       AR(2,4) = -SH*FZO
40030       AR(4,2) = AR(2,4)
40031       AR(3,4) = 0D0
40032       AR(4,3) = 0D0
40033 CCCCCCCC
40034       DO 110 I=1,4
40035         DO 100 J=1,4
40036           AT(I,J)=0D0
40037   100   CONTINUE
40038   110 CONTINUE
40039       SHR=SQRT(SH)
40040       CALL PYWIDT(23,SH,WDTP,WDTE)
40041       AT(2,2) = WDTP(0)*SHR
40042       CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
40043       AT(3,3) = WDTP(0)*SHR
40044       CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
40045       AT(4,4) = WDTP(0)*SHR
40046 CCCC
40047       CALL PYEICG(4,4,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
40048       DO 120 I=1,4
40049         WI(I)=SQRT(ABS(SH-WR(I)))
40050         WR(I)=ABS(WR(I))
40051   120 CONTINUE
40052       R1=MIN(WR(1),WR(2),WR(3),WR(4))
40053       R2=1D20
40054       S1=0D0
40055       S2=0D0
40056       DO 130 I=1,4
40057         IF(ABS(WR(I)-R1).LT.1D-6) THEN
40058           S1=WI(I)
40059           GOTO 130
40060         ENDIF
40061         IF(WR(I).LE.R2) THEN
40062           R2=WR(I)
40063           S2=WI(I)
40064         ENDIF
40065   130 CONTINUE
40066       S1=S1**2
40067       S2=S2**2
40068       RETURN
40069       END
40070  
40071 C*********************************************************************
40072  
40073 C...PYEIGC
40074 C...Finds eigenvalues of a general complex matrix
40075 C
40076 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
40077 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
40078 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
40079 C     OF A COMPLEX GENERAL MATRIX.
40080 C
40081 C     ON INPUT
40082 C
40083 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
40084 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40085 C        DIMENSION STATEMENT.
40086 C
40087 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
40088 C
40089 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
40090 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
40091 C
40092 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
40093 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
40094 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
40095 C
40096 C     ON OUTPUT
40097 C
40098 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
40099 C        RESPECTIVELY, OF THE EIGENVALUES.
40100 C
40101 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
40102 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
40103 C
40104 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
40105 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
40106 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
40107 C
40108 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
40109 C
40110 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40111 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40112 C
40113 C     THIS VERSION DATED AUGUST 1983.
40114 C
40115  
40116       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
40117  
40118       INTEGER N,NM,IS1,IS2,IERR,MATZ
40119       DOUBLE PRECISION AR(4,4),AI(4,4),WR(4),WI(4),ZR(4,4),ZI(4,4),
40120      X       FV1(4),FV2(4),FV3(4)
40121       IF (N .LE. NM) GOTO 100
40122       IERR = 10 * N
40123       GOTO 120
40124 C
40125   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
40126       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
40127       IF (MATZ .NE. 0) GOTO 110
40128 C     .......... FIND EIGENVALUES ONLY ..........
40129       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
40130       GOTO 120
40131 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
40132   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
40133       IF (IERR .NE. 0) GOTO 120
40134       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
40135   120 RETURN
40136       END
40137  
40138 C*********************************************************************
40139  
40140 C...PYCMQR
40141 C...Auxiliary to PYEICG.
40142 C
40143 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
40144 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
40145 C     AND WILKINSON.
40146 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
40147 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
40148 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
40149 C
40150 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
40151 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
40152 C
40153 C     ON INPUT
40154 C
40155 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40156 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40157 C          DIMENSION STATEMENT.
40158 C
40159 C        N IS THE ORDER OF THE MATRIX.
40160 C
40161 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
40162 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
40163 C          SET LOW=1, IGH=N.
40164 C
40165 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
40166 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
40167 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
40168 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
40169 C          THE REDUCTION BY  CORTH, IF PERFORMED.
40170 C
40171 C     ON OUTPUT
40172 C
40173 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
40174 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
40175 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
40176 C          EIGENVECTORS IS TO BE PERFORMED.
40177 C
40178 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
40179 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
40180 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
40181 C          FOR INDICES IERR+1,...,N.
40182 C
40183 C        IERR IS SET TO
40184 C          ZERO       FOR NORMAL RETURN,
40185 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
40186 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
40187 C
40188 C     CALLS PYCDIV FOR COMPLEX DIVISION.
40189 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
40190 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
40191 C
40192 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40193 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40194 C
40195 C     THIS VERSION DATED AUGUST 1983.
40196 C
40197  
40198       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
40199  
40200       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
40201       DOUBLE PRECISION HR(4,4),HI(4,4),WR(4),WI(4)
40202       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
40203      X       PYTHAG
40204  
40205       IERR = 0
40206       IF (LOW .EQ. IGH) GOTO 130
40207 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
40208       L = LOW + 1
40209 C
40210       DO 120 I = L, IGH
40211          LL = MIN0(I+1,IGH)
40212          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
40213          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
40214          YR = HR(I,I-1) / NORM
40215          YI = HI(I,I-1) / NORM
40216          HR(I,I-1) = NORM
40217          HI(I,I-1) = 0.0D0
40218 C
40219          DO 100 J = I, IGH
40220             SI = YR * HI(I,J) - YI * HR(I,J)
40221             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
40222             HI(I,J) = SI
40223   100    CONTINUE
40224 C
40225          DO 110 J = LOW, LL
40226             SI = YR * HI(J,I) + YI * HR(J,I)
40227             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
40228             HI(J,I) = SI
40229   110    CONTINUE
40230 C
40231   120 CONTINUE
40232 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
40233   130 DO 140 I = 1, N
40234          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
40235          WR(I) = HR(I,I)
40236          WI(I) = HI(I,I)
40237   140 CONTINUE
40238 C
40239       EN = IGH
40240       TR = 0.0D0
40241       TI = 0.0D0
40242       ITN = 30*N
40243 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
40244   150 IF (EN .LT. LOW) GOTO 320
40245       ITS = 0
40246       ENM1 = EN - 1
40247 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
40248 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
40249   160 DO 170 LL = LOW, EN
40250          L = EN + LOW - LL
40251          IF (L .EQ. LOW) GOTO 180
40252          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
40253      X            + DABS(HR(L,L)) + DABS(HI(L,L))
40254          TST2 = TST1 + DABS(HR(L,L-1))
40255          IF (TST2 .EQ. TST1) GOTO 180
40256   170 CONTINUE
40257 C     .......... FORM SHIFT ..........
40258   180 IF (L .EQ. EN) GOTO 300
40259       IF (ITN .EQ. 0) GOTO 310
40260       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
40261       SR = HR(EN,EN)
40262       SI = HI(EN,EN)
40263       XR = HR(ENM1,EN) * HR(EN,ENM1)
40264       XI = HI(ENM1,EN) * HR(EN,ENM1)
40265       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
40266       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
40267       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
40268       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
40269       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
40270       ZZR = -ZZR
40271       ZZI = -ZZI
40272   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
40273       SR = SR - XR
40274       SI = SI - XI
40275       GOTO 210
40276 C     .......... FORM EXCEPTIONAL SHIFT ..........
40277   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
40278       SI = 0.0D0
40279 C
40280   210 DO 220 I = LOW, EN
40281          HR(I,I) = HR(I,I) - SR
40282          HI(I,I) = HI(I,I) - SI
40283   220 CONTINUE
40284 C
40285       TR = TR + SR
40286       TI = TI + SI
40287       ITS = ITS + 1
40288       ITN = ITN - 1
40289 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
40290       LP1 = L + 1
40291 C
40292       DO 240 I = LP1, EN
40293          SR = HR(I,I-1)
40294          HR(I,I-1) = 0.0D0
40295          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
40296          XR = HR(I-1,I-1) / NORM
40297          WR(I-1) = XR
40298          XI = HI(I-1,I-1) / NORM
40299          WI(I-1) = XI
40300          HR(I-1,I-1) = NORM
40301          HI(I-1,I-1) = 0.0D0
40302          HI(I,I-1) = SR / NORM
40303 C
40304          DO 230 J = I, EN
40305             YR = HR(I-1,J)
40306             YI = HI(I-1,J)
40307             ZZR = HR(I,J)
40308             ZZI = HI(I,J)
40309             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
40310             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
40311             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
40312             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
40313   230    CONTINUE
40314 C
40315   240 CONTINUE
40316 C
40317       SI = HI(EN,EN)
40318       IF (SI .EQ. 0.0D0) GOTO 250
40319       NORM = PYTHAG(HR(EN,EN),SI)
40320       SR = HR(EN,EN) / NORM
40321       SI = SI / NORM
40322       HR(EN,EN) = NORM
40323       HI(EN,EN) = 0.0D0
40324 C     .......... INVERSE OPERATION (COLUMNS) ..........
40325   250 DO 280 J = LP1, EN
40326          XR = WR(J-1)
40327          XI = WI(J-1)
40328 C
40329          DO 270 I = L, J
40330             YR = HR(I,J-1)
40331             YI = 0.0D0
40332             ZZR = HR(I,J)
40333             ZZI = HI(I,J)
40334             IF (I .EQ. J) GOTO 260
40335             YI = HI(I,J-1)
40336             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40337   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40338             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40339             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40340   270    CONTINUE
40341 C
40342   280 CONTINUE
40343 C
40344       IF (SI .EQ. 0.0D0) GOTO 160
40345 C
40346       DO 290 I = L, EN
40347          YR = HR(I,EN)
40348          YI = HI(I,EN)
40349          HR(I,EN) = SR * YR - SI * YI
40350          HI(I,EN) = SR * YI + SI * YR
40351   290 CONTINUE
40352 C
40353       GOTO 160
40354 C     .......... A ROOT FOUND ..........
40355   300 WR(EN) = HR(EN,EN) + TR
40356       WI(EN) = HI(EN,EN) + TI
40357       EN = ENM1
40358       GOTO 150
40359 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
40360 C                CONVERGED AFTER 30*N ITERATIONS ..........
40361   310 IERR = EN
40362   320 RETURN
40363       END
40364  
40365 C*********************************************************************
40366  
40367 C...PYCMQ2
40368 C...Auxiliary to PYEICG.
40369 C
40370 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
40371 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
40372 C     AND WILKINSON.
40373 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
40374 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
40375 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
40376 C
40377 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
40378 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
40379 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
40380 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
40381 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
40382 C
40383 C     ON INPUT
40384 C
40385 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40386 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40387 C          DIMENSION STATEMENT.
40388 C
40389 C        N IS THE ORDER OF THE MATRIX.
40390 C
40391 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
40392 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
40393 C          SET LOW=1, IGH=N.
40394 C
40395 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
40396 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
40397 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
40398 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
40399 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
40400 C
40401 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
40402 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
40403 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
40404 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
40405 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
40406 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
40407 C          ARBITRARY.
40408 C
40409 C     ON OUTPUT
40410 C
40411 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
40412 C          HAVE BEEN DESTROYED.
40413 C
40414 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
40415 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
40416 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
40417 C          FOR INDICES IERR+1,...,N.
40418 C
40419 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
40420 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
40421 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
40422 C          THE EIGENVECTORS HAS BEEN FOUND.
40423 C
40424 C        IERR IS SET TO
40425 C          ZERO       FOR NORMAL RETURN,
40426 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
40427 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
40428 C
40429 C     CALLS PYCDIV FOR COMPLEX DIVISION.
40430 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
40431 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
40432 C
40433 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40434 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40435 C
40436 C     THIS VERSION DATED OCTOBER 1989.
40437 C
40438 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
40439 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
40440 C
40441  
40442       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
40443  
40444       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
40445      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
40446       DOUBLE PRECISION HR(4,4),HI(4,4),WR(4),WI(4),ZR(4,4),ZI(4,4),
40447      X       ORTR(4),ORTI(4)
40448       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
40449      X       PYTHAG
40450  
40451       IERR = 0
40452 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
40453       DO 110 J = 1, N
40454 C
40455          DO 100 I = 1, N
40456             ZR(I,J) = 0.0D0
40457             ZI(I,J) = 0.0D0
40458   100    CONTINUE
40459          ZR(J,J) = 1.0D0
40460   110 CONTINUE
40461 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
40462 C                FROM THE INFORMATION LEFT BY CORTH ..........
40463       IEND = IGH - LOW - 1
40464       IF (IEND.LT.0) GOTO 220
40465       IF (IEND.EQ.0) GOTO 170
40466 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
40467       DO 160 II = 1, IEND
40468          I = IGH - II
40469          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
40470          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
40471 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
40472          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
40473          IP1 = I + 1
40474 C
40475          DO 120 K = IP1, IGH
40476             ORTR(K) = HR(K,I-1)
40477             ORTI(K) = HI(K,I-1)
40478   120    CONTINUE
40479 C
40480          DO 150 J = I, IGH
40481             SR = 0.0D0
40482             SI = 0.0D0
40483 C
40484             DO 130 K = I, IGH
40485                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
40486                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
40487   130       CONTINUE
40488 C
40489             SR = SR / NORM
40490             SI = SI / NORM
40491 C
40492             DO 140 K = I, IGH
40493                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
40494                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
40495   140       CONTINUE
40496 C
40497   150    CONTINUE
40498 C
40499   160 CONTINUE
40500 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
40501   170 L = LOW + 1
40502 C
40503       DO 210 I = L, IGH
40504          LL = MIN0(I+1,IGH)
40505          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
40506          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
40507          YR = HR(I,I-1) / NORM
40508          YI = HI(I,I-1) / NORM
40509          HR(I,I-1) = NORM
40510          HI(I,I-1) = 0.0D0
40511 C
40512          DO 180 J = I, N
40513             SI = YR * HI(I,J) - YI * HR(I,J)
40514             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
40515             HI(I,J) = SI
40516   180    CONTINUE
40517 C
40518          DO 190 J = 1, LL
40519             SI = YR * HI(J,I) + YI * HR(J,I)
40520             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
40521             HI(J,I) = SI
40522   190    CONTINUE
40523 C
40524          DO 200 J = LOW, IGH
40525             SI = YR * ZI(J,I) + YI * ZR(J,I)
40526             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
40527             ZI(J,I) = SI
40528   200    CONTINUE
40529 C
40530   210 CONTINUE
40531 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
40532   220 DO 230 I = 1, N
40533          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
40534          WR(I) = HR(I,I)
40535          WI(I) = HI(I,I)
40536   230 CONTINUE
40537 C
40538       EN = IGH
40539       TR = 0.0D0
40540       TI = 0.0D0
40541       ITN = 30*N
40542 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
40543   240 IF (EN .LT. LOW) GOTO 430
40544       ITS = 0
40545       ENM1 = EN - 1
40546 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
40547 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
40548   250 DO 260 LL = LOW, EN
40549          L = EN + LOW - LL
40550          IF (L .EQ. LOW) GOTO 270
40551          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
40552      X            + DABS(HR(L,L)) + DABS(HI(L,L))
40553          TST2 = TST1 + DABS(HR(L,L-1))
40554          IF (TST2 .EQ. TST1) GOTO 270
40555   260 CONTINUE
40556 C     .......... FORM SHIFT ..........
40557   270 IF (L .EQ. EN) GOTO 420
40558       IF (ITN .EQ. 0) GOTO 550
40559       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
40560       SR = HR(EN,EN)
40561       SI = HI(EN,EN)
40562       XR = HR(ENM1,EN) * HR(EN,ENM1)
40563       XI = HI(ENM1,EN) * HR(EN,ENM1)
40564       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
40565       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
40566       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
40567       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
40568       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
40569       ZZR = -ZZR
40570       ZZI = -ZZI
40571   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
40572       SR = SR - XR
40573       SI = SI - XI
40574       GOTO 300
40575 C     .......... FORM EXCEPTIONAL SHIFT ..........
40576   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
40577       SI = 0.0D0
40578 C
40579   300 DO 310 I = LOW, EN
40580          HR(I,I) = HR(I,I) - SR
40581          HI(I,I) = HI(I,I) - SI
40582   310 CONTINUE
40583 C
40584       TR = TR + SR
40585       TI = TI + SI
40586       ITS = ITS + 1
40587       ITN = ITN - 1
40588 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
40589       LP1 = L + 1
40590 C
40591       DO 330 I = LP1, EN
40592          SR = HR(I,I-1)
40593          HR(I,I-1) = 0.0D0
40594          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
40595          XR = HR(I-1,I-1) / NORM
40596          WR(I-1) = XR
40597          XI = HI(I-1,I-1) / NORM
40598          WI(I-1) = XI
40599          HR(I-1,I-1) = NORM
40600          HI(I-1,I-1) = 0.0D0
40601          HI(I,I-1) = SR / NORM
40602 C
40603          DO 320 J = I, N
40604             YR = HR(I-1,J)
40605             YI = HI(I-1,J)
40606             ZZR = HR(I,J)
40607             ZZI = HI(I,J)
40608             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
40609             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
40610             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
40611             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
40612   320    CONTINUE
40613 C
40614   330 CONTINUE
40615 C
40616       SI = HI(EN,EN)
40617       IF (SI .EQ. 0.0D0) GOTO 350
40618       NORM = PYTHAG(HR(EN,EN),SI)
40619       SR = HR(EN,EN) / NORM
40620       SI = SI / NORM
40621       HR(EN,EN) = NORM
40622       HI(EN,EN) = 0.0D0
40623       IF (EN .EQ. N) GOTO 350
40624       IP1 = EN + 1
40625 C
40626       DO 340 J = IP1, N
40627          YR = HR(EN,J)
40628          YI = HI(EN,J)
40629          HR(EN,J) = SR * YR + SI * YI
40630          HI(EN,J) = SR * YI - SI * YR
40631   340 CONTINUE
40632 C     .......... INVERSE OPERATION (COLUMNS) ..........
40633   350 DO 390 J = LP1, EN
40634          XR = WR(J-1)
40635          XI = WI(J-1)
40636 C
40637          DO 370 I = 1, J
40638             YR = HR(I,J-1)
40639             YI = 0.0D0
40640             ZZR = HR(I,J)
40641             ZZI = HI(I,J)
40642             IF (I .EQ. J) GOTO 360
40643             YI = HI(I,J-1)
40644             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40645   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40646             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40647             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40648   370    CONTINUE
40649 C
40650          DO 380 I = LOW, IGH
40651             YR = ZR(I,J-1)
40652             YI = ZI(I,J-1)
40653             ZZR = ZR(I,J)
40654             ZZI = ZI(I,J)
40655             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
40656             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
40657             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
40658             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
40659   380    CONTINUE
40660 C
40661   390 CONTINUE
40662 C
40663       IF (SI .EQ. 0.0D0) GOTO 250
40664 C
40665       DO 400 I = 1, EN
40666          YR = HR(I,EN)
40667          YI = HI(I,EN)
40668          HR(I,EN) = SR * YR - SI * YI
40669          HI(I,EN) = SR * YI + SI * YR
40670   400 CONTINUE
40671 C
40672       DO 410 I = LOW, IGH
40673          YR = ZR(I,EN)
40674          YI = ZI(I,EN)
40675          ZR(I,EN) = SR * YR - SI * YI
40676          ZI(I,EN) = SR * YI + SI * YR
40677   410 CONTINUE
40678 C
40679       GOTO 250
40680 C     .......... A ROOT FOUND ..........
40681   420 HR(EN,EN) = HR(EN,EN) + TR
40682       WR(EN) = HR(EN,EN)
40683       HI(EN,EN) = HI(EN,EN) + TI
40684       WI(EN) = HI(EN,EN)
40685       EN = ENM1
40686       GOTO 240
40687 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
40688 C                VECTORS OF UPPER TRIANGULAR FORM ..........
40689   430 NORM = 0.0D0
40690 C
40691       DO 440 I = 1, N
40692 C
40693          DO 440 J = I, N
40694             TR = DABS(HR(I,J)) + DABS(HI(I,J))
40695             IF (TR .GT. NORM) NORM = TR
40696   440 CONTINUE
40697 C
40698       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
40699 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
40700       DO 500 NN = 2, N
40701          EN = N + 2 - NN
40702          XR = WR(EN)
40703          XI = WI(EN)
40704          HR(EN,EN) = 1.0D0
40705          HI(EN,EN) = 0.0D0
40706          ENM1 = EN - 1
40707 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
40708          DO 490 II = 1, ENM1
40709             I = EN - II
40710             ZZR = 0.0D0
40711             ZZI = 0.0D0
40712             IP1 = I + 1
40713 C
40714             DO 450 J = IP1, EN
40715                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
40716                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
40717   450       CONTINUE
40718 C
40719             YR = XR - WR(I)
40720             YI = XI - WI(I)
40721             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
40722                TST1 = NORM
40723                YR = TST1
40724   460          YR = 0.01D0 * YR
40725                TST2 = NORM + YR
40726                IF (TST2 .GT. TST1) GOTO 460
40727   470       CONTINUE
40728             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
40729 C     .......... OVERFLOW CONTROL ..........
40730             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
40731             IF (TR .EQ. 0.0D0) GOTO 490
40732             TST1 = TR
40733             TST2 = TST1 + 1.0D0/TST1
40734             IF (TST2 .GT. TST1) GOTO 490
40735             DO 480 J = I, EN
40736                HR(J,EN) = HR(J,EN)/TR
40737                HI(J,EN) = HI(J,EN)/TR
40738   480       CONTINUE
40739 C
40740   490    CONTINUE
40741 C
40742   500 CONTINUE
40743 C     .......... END BACKSUBSTITUTION ..........
40744 C     .......... VECTORS OF ISOLATED ROOTS ..........
40745       DO 520 I = 1, N
40746          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
40747 C
40748          DO 510 J = I, N
40749             ZR(I,J) = HR(I,J)
40750             ZI(I,J) = HI(I,J)
40751   510    CONTINUE
40752 C
40753   520 CONTINUE
40754 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
40755 C                VECTORS OF ORIGINAL FULL MATRIX.
40756 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
40757       DO 540 JJ = LOW, N
40758          J = N + LOW - JJ
40759          M = MIN0(J,IGH)
40760 C
40761          DO 540 I = LOW, IGH
40762             ZZR = 0.0D0
40763             ZZI = 0.0D0
40764 C
40765             DO 530 K = LOW, M
40766                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
40767                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
40768   530       CONTINUE
40769 C
40770             ZR(I,J) = ZZR
40771             ZI(I,J) = ZZI
40772   540 CONTINUE
40773 C
40774       GOTO 560
40775 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
40776 C                CONVERGED AFTER 30*N ITERATIONS ..........
40777   550 IERR = EN
40778   560 RETURN
40779       END
40780  
40781 C*********************************************************************
40782  
40783 C...PYCDIV
40784 C...Auxiliary to PYCMQR
40785 C
40786 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
40787 C
40788  
40789       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
40790  
40791       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
40792       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
40793  
40794       S = DABS(BR) + DABS(BI)
40795       ARS = AR/S
40796       AIS = AI/S
40797       BRS = BR/S
40798       BIS = BI/S
40799       S = BRS**2 + BIS**2
40800       CR = (ARS*BRS + AIS*BIS)/S
40801       CI = (AIS*BRS - ARS*BIS)/S
40802       RETURN
40803       END
40804  
40805 C*********************************************************************
40806  
40807 C...PYCSRT
40808 C...Auxiliary to PYCMQR
40809 C
40810 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
40811 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
40812 C
40813  
40814       SUBROUTINE PYCSRT(XR,XI,YR,YI)
40815  
40816       DOUBLE PRECISION XR,XI,YR,YI
40817       DOUBLE PRECISION S,TR,TI,PYTHAG
40818  
40819       TR = XR
40820       TI = XI
40821       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
40822       IF (TR .GE. 0.0D0) YR = S
40823       IF (TI .LT. 0.0D0) S = -S
40824       IF (TR .LE. 0.0D0) YI = S
40825       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
40826       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
40827       RETURN
40828       END
40829  
40830       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
40831       DOUBLE PRECISION A,B
40832 C
40833 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
40834 C
40835       DOUBLE PRECISION P,R,S,T,U
40836       P = DMAX1(DABS(A),DABS(B))
40837       IF (P .EQ. 0.0D0) GOTO 110
40838       R = (DMIN1(DABS(A),DABS(B))/P)**2
40839   100 CONTINUE
40840          T = 4.0D0 + R
40841          IF (T .EQ. 4.0D0) GOTO 110
40842          S = R/T
40843          U = 1.0D0 + 2.0D0*S
40844          P = U*P
40845          R = (S/U)**2 * R
40846       GOTO 100
40847   110 PYTHAG = P
40848       RETURN
40849       END
40850  
40851 C*********************************************************************
40852  
40853 C...PYCBAL
40854 C...Auxiliary to PYEICG
40855 C
40856 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
40857 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
40858 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
40859 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
40860 C
40861 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
40862 C     EIGENVALUES WHENEVER POSSIBLE.
40863 C
40864 C     ON INPUT
40865 C
40866 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
40867 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
40868 C          DIMENSION STATEMENT.
40869 C
40870 C        N IS THE ORDER OF THE MATRIX.
40871 C
40872 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
40873 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
40874 C
40875 C     ON OUTPUT
40876 C
40877 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
40878 C          RESPECTIVELY, OF THE BALANCED MATRIX.
40879 C
40880 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
40881 C          ARE EQUAL TO ZERO IF
40882 C           (1) I IS GREATER THAN J AND
40883 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
40884 C
40885 C        SCALE CONTAINS INFORMATION DETERMINING THE
40886 C           PERMUTATIONS AND SCALING FACTORS USED.
40887 C
40888 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
40889 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
40890 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
40891 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
40892 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
40893 C                 = D(J,J)       J = LOW,...,IGH
40894 C                 = P(J)         J = IGH+1,...,N.
40895 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
40896 C     THEN 1 TO LOW-1.
40897 C
40898 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
40899 C
40900 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
40901 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
40902 C     K,L HAVE BEEN REVERSED.)
40903 C
40904 C     ARITHMETIC IS REAL THROUGHOUT.
40905 C
40906 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
40907 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
40908 C
40909 C     THIS VERSION DATED AUGUST 1983.
40910 C
40911  
40912       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
40913  
40914       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
40915       DOUBLE PRECISION AR(4,4),AI(4,4),SCALE(4)
40916       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
40917       LOGICAL NOCONV
40918  
40919       RADIX = 16.0D0
40920 C
40921       B2 = RADIX * RADIX
40922       K = 1
40923       L = N
40924       GOTO 150
40925 C     .......... IN-LINE PROCEDURE FOR ROW AND
40926 C                COLUMN EXCHANGE ..........
40927   100 SCALE(M) = J
40928       IF (J .EQ. M) GOTO 130
40929 C
40930       DO 110 I = 1, L
40931          F = AR(I,J)
40932          AR(I,J) = AR(I,M)
40933          AR(I,M) = F
40934          F = AI(I,J)
40935          AI(I,J) = AI(I,M)
40936          AI(I,M) = F
40937   110 CONTINUE
40938 C
40939       DO 120 I = K, N
40940          F = AR(J,I)
40941          AR(J,I) = AR(M,I)
40942          AR(M,I) = F
40943          F = AI(J,I)
40944          AI(J,I) = AI(M,I)
40945          AI(M,I) = F
40946   120 CONTINUE
40947 C
40948   130 IF(IEXC.EQ.1) GOTO 140
40949       IF(IEXC.EQ.2) GOTO 180
40950 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
40951 C                AND PUSH THEM DOWN ..........
40952   140 IF (L .EQ. 1) GOTO 320
40953       L = L - 1
40954 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
40955   150 DO 170 JJ = 1, L
40956          J = L + 1 - JJ
40957 C
40958          DO 160 I = 1, L
40959             IF (I .EQ. J) GOTO 160
40960             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
40961   160    CONTINUE
40962 C
40963          M = L
40964          IEXC = 1
40965          GOTO 100
40966   170 CONTINUE
40967 C
40968       GOTO 190
40969 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
40970 C                AND PUSH THEM LEFT ..........
40971   180 K = K + 1
40972 C
40973   190 DO 210 J = K, L
40974 C
40975          DO 200 I = K, L
40976             IF (I .EQ. J) GOTO 200
40977             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
40978   200    CONTINUE
40979 C
40980          M = K
40981          IEXC = 2
40982          GOTO 100
40983   210 CONTINUE
40984 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
40985       DO 220 I = K, L
40986   220 SCALE(I) = 1.0D0
40987 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
40988   230 NOCONV = .FALSE.
40989 C
40990       DO 310 I = K, L
40991          C = 0.0D0
40992          R = 0.0D0
40993 C
40994          DO 240 J = K, L
40995             IF (J .EQ. I) GOTO 240
40996             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
40997             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
40998   240    CONTINUE
40999 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
41000          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
41001          G = R / RADIX
41002          F = 1.0D0
41003          S = C + R
41004   250    IF (C .GE. G) GOTO 260
41005          F = F * RADIX
41006          C = C * B2
41007          GOTO 250
41008   260    G = R * RADIX
41009   270    IF (C .LT. G) GOTO 280
41010          F = F / RADIX
41011          C = C / B2
41012          GOTO 270
41013 C     .......... NOW BALANCE ..........
41014   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
41015          G = 1.0D0 / F
41016          SCALE(I) = SCALE(I) * F
41017          NOCONV = .TRUE.
41018 C
41019          DO 290 J = K, N
41020             AR(I,J) = AR(I,J) * G
41021             AI(I,J) = AI(I,J) * G
41022   290    CONTINUE
41023 C
41024          DO 300 J = 1, L
41025             AR(J,I) = AR(J,I) * F
41026             AI(J,I) = AI(J,I) * F
41027   300    CONTINUE
41028 C
41029   310 CONTINUE
41030 C
41031       IF (NOCONV) GOTO 230
41032 C
41033   320 LOW = K
41034       IGH = L
41035       RETURN
41036       END
41037  
41038 C*********************************************************************
41039  
41040 C...PYCBA2
41041 C...Auxiliary to PYEICG.
41042 C
41043 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
41044 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
41045 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
41046 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
41047 C
41048 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
41049 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
41050 C     BALANCED MATRIX DETERMINED BY  CBAL.
41051 C
41052 C     ON INPUT
41053 C
41054 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
41055 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
41056 C          DIMENSION STATEMENT.
41057 C
41058 C        N IS THE ORDER OF THE MATRIX.
41059 C
41060 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
41061 C
41062 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
41063 C          AND SCALING FACTORS USED BY  CBAL.
41064 C
41065 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
41066 C
41067 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
41068 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
41069 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
41070 C
41071 C     ON OUTPUT
41072 C
41073 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
41074 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
41075 C          IN THEIR FIRST M COLUMNS.
41076 C
41077 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
41078 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
41079 C
41080 C     THIS VERSION DATED AUGUST 1983.
41081 C
41082  
41083       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
41084  
41085       INTEGER I,J,K,M,N,II,NM,IGH,LOW
41086       DOUBLE PRECISION SCALE(4),ZR(4,4),ZI(4,4)
41087       DOUBLE PRECISION S
41088  
41089       IF (M .EQ. 0) GOTO 150
41090       IF (IGH .EQ. LOW) GOTO 120
41091 C
41092       DO 110 I = LOW, IGH
41093          S = SCALE(I)
41094 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
41095 C                IF THE FOREGOING STATEMENT IS REPLACED BY
41096 C                S=1.0D0/SCALE(I). ..........
41097          DO 100 J = 1, M
41098             ZR(I,J) = ZR(I,J) * S
41099             ZI(I,J) = ZI(I,J) * S
41100   100    CONTINUE
41101 C
41102   110 CONTINUE
41103 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
41104 C                IGH+1 STEP 1 UNTIL N DO -- ..........
41105   120 DO 140 II = 1, N
41106          I = II
41107          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
41108          IF (I .LT. LOW) I = LOW - II
41109          K = SCALE(I)
41110          IF (K .EQ. I) GOTO 140
41111 C
41112          DO 130 J = 1, M
41113             S = ZR(I,J)
41114             ZR(I,J) = ZR(K,J)
41115             ZR(K,J) = S
41116             S = ZI(I,J)
41117             ZI(I,J) = ZI(K,J)
41118             ZI(K,J) = S
41119   130    CONTINUE
41120 C
41121   140 CONTINUE
41122 C
41123   150 RETURN
41124       END
41125  
41126 C*********************************************************************
41127  
41128 C...PYCRTH
41129 C...Auxiliary to PYEICG.
41130 C
41131 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
41132 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
41133 C     BY MARTIN AND WILKINSON.
41134 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
41135 C
41136 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
41137 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
41138 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
41139 C     UNITARY SIMILARITY TRANSFORMATIONS.
41140 C
41141 C     ON INPUT
41142 C
41143 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
41144 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
41145 C          DIMENSION STATEMENT.
41146 C
41147 C        N IS THE ORDER OF THE MATRIX.
41148 C
41149 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
41150 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
41151 C          SET LOW=1, IGH=N.
41152 C
41153 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
41154 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
41155 C
41156 C     ON OUTPUT
41157 C
41158 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
41159 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
41160 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
41161 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
41162 C          HESSENBERG MATRIX.
41163 C
41164 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
41165 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
41166 C
41167 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
41168 C
41169 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
41170 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
41171 C
41172 C     THIS VERSION DATED AUGUST 1983.
41173 C
41174  
41175       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
41176  
41177       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
41178       DOUBLE PRECISION AR(4,4),AI(4,4),ORTR(4),ORTI(4)
41179       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
41180  
41181       LA = IGH - 1
41182       KP1 = LOW + 1
41183       IF (LA .LT. KP1) GOTO 210
41184 C
41185       DO 200 M = KP1, LA
41186          H = 0.0D0
41187          ORTR(M) = 0.0D0
41188          ORTI(M) = 0.0D0
41189          SCALE = 0.0D0
41190 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
41191          DO 100 I = M, IGH
41192   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
41193 C
41194          IF (SCALE .EQ. 0.0D0) GOTO 200
41195          MP = M + IGH
41196 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
41197          DO 110 II = M, IGH
41198             I = MP - II
41199             ORTR(I) = AR(I,M-1) / SCALE
41200             ORTI(I) = AI(I,M-1) / SCALE
41201             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
41202   110    CONTINUE
41203 C
41204          G = DSQRT(H)
41205          F = PYTHAG(ORTR(M),ORTI(M))
41206          IF (F .EQ. 0.0D0) GOTO 120
41207          H = H + F * G
41208          G = G / F
41209          ORTR(M) = (1.0D0 + G) * ORTR(M)
41210          ORTI(M) = (1.0D0 + G) * ORTI(M)
41211          GOTO 130
41212 C
41213   120    ORTR(M) = G
41214          AR(M,M-1) = SCALE
41215 C     .......... FORM (I-(U*UT)/H) * A ..........
41216   130    DO 160 J = M, N
41217             FR = 0.0D0
41218             FI = 0.0D0
41219 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
41220             DO 140 II = M, IGH
41221                I = MP - II
41222                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
41223                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
41224   140       CONTINUE
41225 C
41226             FR = FR / H
41227             FI = FI / H
41228 C
41229             DO 150 I = M, IGH
41230                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
41231                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
41232   150       CONTINUE
41233 C
41234   160    CONTINUE
41235 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
41236          DO 190 I = 1, IGH
41237             FR = 0.0D0
41238             FI = 0.0D0
41239 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
41240             DO 170 JJ = M, IGH
41241                J = MP - JJ
41242                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
41243                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
41244   170       CONTINUE
41245 C
41246             FR = FR / H
41247             FI = FI / H
41248 C
41249             DO 180 J = M, IGH
41250                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
41251                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
41252   180       CONTINUE
41253 C
41254   190    CONTINUE
41255 C
41256          ORTR(M) = SCALE * ORTR(M)
41257          ORTI(M) = SCALE * ORTI(M)
41258          AR(M,M-1) = -G * AR(M,M-1)
41259          AI(M,M-1) = -G * AI(M,M-1)
41260   200 CONTINUE
41261 C
41262   210 RETURN
41263       END
41264  
41265 C*********************************************************************
41266  
41267 C...PYLDCM
41268 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
41269 C...processes.
41270  
41271       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
41272       IMPLICIT NONE
41273       INTEGER N,NP,INDX(N)
41274       REAL*8 D,TINY
41275       COMPLEX*16 A(NP,NP)
41276       PARAMETER (TINY=1.0D-20)
41277       INTEGER I,IMAX,J,K
41278       REAL*8 AAMAX,VV(6),DUM
41279       COMPLEX*16 SUM,DUMC
41280  
41281       D=1D0
41282       DO 110 I=1,N
41283         AAMAX=0D0
41284         DO 100 J=1,N
41285           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
41286   100   CONTINUE
41287         IF (AAMAX.EQ.0D0) PAUSE 'SINGULAR MATRIX IN PYLDCM'
41288         VV(I)=1D0/AAMAX
41289   110 CONTINUE
41290       DO 180 J=1,N
41291         DO 130 I=1,J-1
41292           SUM=A(I,J)
41293           DO 120 K=1,I-1
41294             SUM=SUM-A(I,K)*A(K,J)
41295   120     CONTINUE
41296           A(I,J)=SUM
41297   130   CONTINUE
41298         AAMAX=0D0
41299         DO 150 I=J,N
41300           SUM=A(I,J)
41301           DO 140 K=1,J-1
41302             SUM=SUM-A(I,K)*A(K,J)
41303   140     CONTINUE
41304           A(I,J)=SUM
41305           DUM=VV(I)*ABS(SUM)
41306           IF (DUM.GE.AAMAX) THEN
41307             IMAX=I
41308             AAMAX=DUM
41309           ENDIF
41310   150   CONTINUE
41311         IF (J.NE.IMAX)THEN
41312           DO 160 K=1,N
41313             DUMC=A(IMAX,K)
41314             A(IMAX,K)=A(J,K)
41315             A(J,K)=DUMC
41316   160     CONTINUE
41317           D=-D
41318           VV(IMAX)=VV(J)
41319         ENDIF
41320         INDX(J)=IMAX
41321         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
41322         IF(J.NE.N)THEN
41323           DO 170 I=J+1,N
41324             A(I,J)=A(I,J)/A(J,J)
41325   170     CONTINUE
41326         ENDIF
41327   180 CONTINUE
41328  
41329       RETURN
41330       END
41331  
41332 C*********************************************************************
41333  
41334 C...PYBKSB
41335 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
41336 C...processes.
41337  
41338       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
41339       IMPLICIT NONE
41340       INTEGER N,NP,INDX(N)
41341       COMPLEX*16 A(NP,NP),B(N)
41342       INTEGER I,II,J,LL
41343       COMPLEX*16 SUM
41344  
41345       II=0
41346       DO 110 I=1,N
41347         LL=INDX(I)
41348         SUM=B(LL)
41349         B(LL)=B(I)
41350         IF (II.NE.0)THEN
41351           DO 100 J=II,I-1
41352             SUM=SUM-A(I,J)*B(J)
41353   100     CONTINUE
41354         ELSE IF (ABS(SUM).NE.0D0) THEN
41355           II=I
41356         ENDIF
41357         B(I)=SUM
41358   110 CONTINUE
41359       DO 130 I=N,1,-1
41360         SUM=B(I)
41361         DO 120 J=I+1,N
41362           SUM=SUM-A(I,J)*B(J)
41363   120   CONTINUE
41364         B(I)=SUM/A(I,I)
41365   130 CONTINUE
41366       RETURN
41367       END
41368  
41369 C***********************************************************************
41370  
41371 C...PYWIDX
41372 C...Calculates full and partial widths of resonances.
41373 C....copy of PYWIDT, used for techniparticle widths
41374  
41375       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
41376  
41377 C...Double precision and integer declarations.
41378       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41379       IMPLICIT INTEGER(I-N)
41380       INTEGER PYK,PYCHGE,PYCOMP
41381 C...Parameter statement to help give large particle numbers.
41382       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41383      &KEXCIT=4000000,KDIMEN=5000000)
41384 C...Commonblocks.
41385       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41386       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41387       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
41388       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
41389       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41390       COMMON/PYINT1/MINT(400),VINT(400)
41391       COMMON/PYINT4/MWID(500),WIDS(500,5)
41392       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41393       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
41394       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
41395      &/PYINT4/,/PYMSSM/,/PYTCSM/
41396 C...Local arrays and saved variables.
41397       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
41398      &WID2SV(3,2)
41399       SAVE MOFSV,WIDWSV,WID2SV
41400       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
41401  
41402 C...Compressed code and sign; mass.
41403       KFLA=IABS(KFLR)
41404       KFLS=ISIGN(1,KFLR)
41405       KC=PYCOMP(KFLA)
41406       SHR=SQRT(SH)
41407       PMR=PMAS(KC,1)
41408  
41409 C...Reset width information.
41410       DO 110 I=0,200
41411         WDTP(I)=0D0
41412         DO 100 J=0,5
41413           WDTE(I,J)=0D0
41414   100   CONTINUE
41415   110 CONTINUE
41416  
41417 C...Common electroweak and strong constants.
41418       XW=PARU(102)
41419       XWV=XW
41420       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
41421       XW1=1D0-XW
41422       AEM=PYALEM(SH)
41423       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
41424       AS=PYALPS(SH)
41425       RADC=1D0+AS/PARU(1)
41426  
41427       IF(KFLA.EQ.23) THEN
41428 C...Z0:
41429         ICASE=1
41430         XWC=1D0/(16D0*XW*XW1)
41431         FAC=(AEM*XWC/3D0)*SHR
41432   120   CONTINUE
41433         DO 130 I=1,MDCY(KC,3)
41434           IDC=I+MDCY(KC,2)-1
41435           IF(MDME(IDC,1).LT.0) GOTO 130
41436           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
41437           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
41438           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
41439           WID2=1D0
41440           IF(I.LE.8) THEN
41441 C...Z0 -> q + qbar
41442             EF=KCHG(I,1)/3D0
41443             AF=SIGN(1D0,EF+0.1D0)
41444             VF=AF-4D0*EF*XWV
41445             FCOF=3D0*RADC
41446             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
41447             IF(I.EQ.6) WID2=WIDS(6,1)
41448             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
41449           ELSEIF(I.LE.16) THEN
41450 C...Z0 -> l+ + l-, nu + nubar
41451             EF=KCHG(I+2,1)/3D0
41452             AF=SIGN(1D0,EF+0.1D0)
41453             VF=AF-4D0*EF*XWV
41454             FCOF=1D0
41455             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
41456           ENDIF
41457           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
41458             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
41459      &      BE34
41460             WDTP(0)=WDTP(0)+WDTP(I)
41461           IF(MDME(IDC,1).GT.0) THEN
41462               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41463               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
41464      &        WDTE(I,MDME(IDC,1))
41465               WDTE(I,0)=WDTE(I,MDME(IDC,1))
41466               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41467           ENDIF
41468   130   CONTINUE
41469  
41470  
41471       ELSEIF(KFLA.EQ.24) THEN
41472 C...W+/-:
41473         FAC=(AEM/(24D0*XW))*SHR
41474         DO 140 I=1,MDCY(KC,3)
41475           IDC=I+MDCY(KC,2)-1
41476           IF(MDME(IDC,1).LT.0) GOTO 140
41477           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
41478           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
41479           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
41480           WID2=1D0
41481           IF(I.LE.16) THEN
41482 C...W+/- -> q + qbar'
41483             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
41484             IF(KFLR.GT.0) THEN
41485               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
41486               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
41487               IF(I.GE.13) WID2=WID2*WIDS(7,3)
41488             ELSE
41489               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
41490               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
41491               IF(I.GE.13) WID2=WID2*WIDS(7,2)
41492             ENDIF
41493           ELSEIF(I.LE.20) THEN
41494 C...W+/- -> l+/- + nu
41495             FCOF=1D0
41496             IF(KFLR.GT.0) THEN
41497               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
41498             ELSE
41499               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
41500             ENDIF
41501           ENDIF
41502           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
41503      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
41504           WDTP(0)=WDTP(0)+WDTP(I)
41505           IF(MDME(IDC,1).GT.0) THEN
41506             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41507             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
41508             WDTE(I,0)=WDTE(I,MDME(IDC,1))
41509             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41510           ENDIF
41511   140   CONTINUE
41512  
41513 C.....V8 -> quark anti-quark
41514       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
41515         FAC=AS/6D0*SHR
41516         TANT3=RTCM(21)
41517         IF(ITCM(2).EQ.0) THEN
41518           IMDL=1
41519         ELSEIF(ITCM(2).EQ.1) THEN
41520           IMDL=2
41521         ENDIF
41522         DO 150 I=1,MDCY(KC,3)
41523           IDC=I+MDCY(KC,2)-1
41524           IF(MDME(IDC,1).LT.0) GOTO 150
41525           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
41526           RM1=PM1**2/SH
41527           IF(RM1.GT.0.25D0) GOTO 150
41528           WID2=1D0
41529           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
41530             FMIX=1D0/TANT3**2
41531           ELSE
41532             FMIX=TANT3**2
41533           ENDIF
41534           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
41535           IF(I.EQ.6) WID2=WIDS(6,1)
41536           WDTP(0)=WDTP(0)+WDTP(I)
41537           IF(MDME(IDC,1).GT.0) THEN
41538             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
41539             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
41540             WDTE(I,0)=WDTE(I,MDME(IDC,1))
41541             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
41542           ENDIF
41543   150   CONTINUE
41544       ENDIF
41545  
41546       RETURN
41547       END
41548  
41549 C*********************************************************************
41550  
41551 C...PYRVSF
41552 C...Calculates R-violating decays of sfermions.
41553 C...P. Z. Skands
41554  
41555       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
41556  
41557 C...Double precision and integer declarations.
41558       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41559       IMPLICIT INTEGER(I-N)
41560 C...Parameter statement to help give large particle numbers.
41561       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41562      &KEXCIT=4000000,KDIMEN=5000000)
41563 C...Commonblocks.
41564       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41565       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41566       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
41567      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
41568       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
41569 C...Local variables.
41570       DOUBLE PRECISION XLAM(0:400)
41571       INTEGER IDLAM(400,3), PYCOMP
41572       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
41573  
41574 C...IS R-VIOLATION ON ?
41575       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
41576 C...Mass eigenstate counter
41577         ICNT=INT(KFIN/KSUSY1)
41578 C...SM KF code of SUSY particle
41579         KFSM=KFIN-ICNT*KSUSY1
41580 C...Squared Sparticle Mass
41581         SM=PMAS(PYCOMP(KFIN),1)**2
41582 C... Squared mass of top quark
41583         SMT=PMAS(PYCOMP(6),1)**2
41584 C...IS L-VIOLATION ON ?
41585         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
41586 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
41587           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
41588      &         THEN
41589             K=INT((KFSM-9)/2)
41590             DO 110 I=1,3
41591               DO 100 J=1,3
41592                 IF(I.NE.J) THEN
41593 C...~e,~mu,~tau -> nu_I + lepton-_J
41594                   LKNT = LKNT+1
41595                   IDLAM(LKNT,1)= 12 +2*(I-1)
41596                   IDLAM(LKNT,2)= 11 +2*(J-1)
41597                   IDLAM(LKNT,3)= 0
41598                   XLAM(LKNT)=0D0
41599                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41600                   IF (IMSS(51).NE.0) XLAM(LKNT) =
41601      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41602 C...KINEMATICS CHECK
41603                   IF (XLAM(LKNT).EQ.0D0) THEN
41604                     LKNT=LKNT-1
41605                   ENDIF
41606                 ENDIF
41607   100         CONTINUE
41608   110       CONTINUE
41609 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
41610             J=INT((KFSM-9)/2)
41611             DO 130 I=1,3
41612               IF(I.NE.J) THEN
41613                 DO 120 K=1,3
41614                   LKNT = LKNT+1
41615                   IDLAM(LKNT,1)=-12 -2*(I-1)
41616                   IDLAM(LKNT,2)= 11 +2*(K-1)
41617                   IDLAM(LKNT,3)= 0
41618                   XLAM(LKNT)=0D0
41619                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41620                   IF (IMSS(51).NE.0) XLAM(LKNT) =
41621      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41622 C...KINEMATICS CHECK
41623                   IF (XLAM(LKNT).EQ.0D0) THEN
41624                     LKNT=LKNT-1
41625                   ENDIF
41626   120           CONTINUE
41627               ENDIF
41628   130       CONTINUE
41629 C...~e,~mu,~tau -> u_Jbar + d_K
41630             I=INT((KFSM-9)/2)
41631             DO 150 J=1,3
41632               DO 140 K=1,3
41633                 LKNT = LKNT+1
41634                 IDLAM(LKNT,1)=-2 -2*(J-1)
41635                 IDLAM(LKNT,2)= 1 +2*(K-1)
41636                 IDLAM(LKNT,3)= 0
41637                 XLAM(LKNT)=0
41638                 IF (IMSS(52).NE.0) THEN
41639 C...Use massive top quark
41640                   IF (IDLAM(LKNT,1).EQ.-6) THEN
41641                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
41642      &                   * (SM-SMT)
41643                     XLAM(LKNT) =
41644      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
41645 C...If no top quark, all decay products massless
41646                   ELSE
41647                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41648                     XLAM(LKNT) =
41649      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41650                   ENDIF
41651 C...KINEMATICS CHECK
41652                   IF (XLAM(LKNT).EQ.0D0) THEN
41653                     LKNT=LKNT-1
41654                   ENDIF
41655                 ENDIF
41656   140         CONTINUE
41657   150       CONTINUE
41658           ENDIF
41659 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
41660 C...No right-handed neutrinos
41661           IF(ICNT.EQ.1) THEN
41662             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
41663               J=INT((KFSM-10)/2)
41664               DO 170 I=1,3
41665                 DO 160 K=1,3
41666                   IF (I.NE.J) THEN
41667 C...~nu_J -> lepton+_I + lepton-_K
41668                     LKNT = LKNT+1
41669                     IDLAM(LKNT,1)=-11 -2*(I-1)
41670                     IDLAM(LKNT,2)= 11 +2*(K-1)
41671                     IDLAM(LKNT,3)=  0
41672                     XLAM(LKNT)=0D0
41673                     RM2=RVLAM(I,J,K)**2 * SM
41674                     IF (IMSS(51).NE.0) XLAM(LKNT) =
41675      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41676 C...KINEMATICS CHECK
41677                     IF (XLAM(LKNT).EQ.0D0) THEN
41678                       LKNT=LKNT-1
41679                     ENDIF
41680                   ENDIF
41681   160           CONTINUE
41682   170         CONTINUE
41683 C...~nu_I -> dbar_J + d_K
41684               I=INT((KFSM-10)/2)
41685               DO 190 J=1,3
41686                 DO 180 K=1,3
41687                   LKNT = LKNT+1
41688                   IDLAM(LKNT,1)=-1 -2*(J-1)
41689                   IDLAM(LKNT,2)= 1 +2*(K-1)
41690                   IDLAM(LKNT,3)= 0
41691                   XLAM(LKNT)=0D0
41692                   RM2=3*RVLAMP(I,J,K)**2 * SM
41693                   IF (IMSS(52).NE.0) XLAM(LKNT) =
41694      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41695 C...KINEMATICS CHECK
41696                   IF (XLAM(LKNT).EQ.0D0) THEN
41697                     LKNT=LKNT-1
41698                   ENDIF
41699   180           CONTINUE
41700   190         CONTINUE
41701             ENDIF
41702           ENDIF
41703 C * SDOWN -> NU(BAR) + D and LEPTON- + U
41704           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
41705             J=INT((KFSM+1)/2)
41706             DO 210 I=1,3
41707               DO 200 K=1,3
41708 C...~d_J -> nu_Ibar + d_K
41709                 LKNT = LKNT+1
41710                 IDLAM(LKNT,1)=-12 -2*(I-1)
41711                 IDLAM(LKNT,2)=  1 +2*(K-1)
41712                 IDLAM(LKNT,3)=  0
41713                 XLAM(LKNT)=0D0
41714                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41715                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41716      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41717 C...KINEMATICS CHECK
41718                 IF (XLAM(LKNT).EQ.0D0) THEN
41719                   LKNT=LKNT-1
41720                 ENDIF
41721   200         CONTINUE
41722   210       CONTINUE
41723             K=INT((KFSM+1)/2)
41724             DO 240 I=1,3
41725               DO 230 J=1,3
41726 C...~d_K -> nu_I + d_J
41727                 LKNT = LKNT+1
41728                 IDLAM(LKNT,1)= 12 +2*(I-1)
41729                 IDLAM(LKNT,2)=  1 +2*(J-1)
41730                 IDLAM(LKNT,3)=  0
41731                 XLAM(LKNT)=0D0
41732                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41733                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41734      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41735 C...KINEMATICS CHECK
41736                 IF (XLAM(LKNT).EQ.0D0) THEN
41737                   LKNT=LKNT-1
41738                 ENDIF
41739 C...~d_K -> lepton_I- + u_J
41740   220           LKNT = LKNT+1
41741                 IDLAM(LKNT,1)= 11 +2*(I-1)
41742                 IDLAM(LKNT,2)=  2 +2*(J-1)
41743                 IDLAM(LKNT,3)=  0
41744                 XLAM(LKNT)=0D0
41745                 IF (IMSS(52).NE.0) THEN
41746 C...Use massive top quark
41747                   IF (IDLAM(LKNT,2).EQ.6) THEN
41748                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
41749                     XLAM(LKNT) =
41750      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
41751 C...If no top quark, all decay products massless
41752                   ELSE
41753                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41754                     XLAM(LKNT) =
41755      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41756                   ENDIF
41757 C...KINEMATICS CHECK
41758                   IF (XLAM(LKNT).EQ.0D0) THEN
41759                     LKNT=LKNT-1
41760                   ENDIF
41761                 ENDIF
41762   230         CONTINUE
41763   240       CONTINUE
41764           ENDIF
41765 C * SUP -> LEPTON+ + D
41766           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
41767             J=NINT(KFSM/2.)
41768             DO 260 I=1,3
41769               DO 250 K=1,3
41770 C...~u_J -> lepton_I+ + d_K
41771                 LKNT = LKNT+1
41772                 IDLAM(LKNT,1)=-11 -2*(I-1)
41773                 IDLAM(LKNT,2)=  1 +2*(K-1)
41774                 IDLAM(LKNT,3)=  0
41775                 XLAM(LKNT)=0D0
41776                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
41777                 IF (IMSS(52).NE.0) XLAM(LKNT) =
41778      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41779 C...KINEMATICS CHECK
41780                 IF (XLAM(LKNT).EQ.0D0) THEN
41781                   LKNT=LKNT-1
41782                 ENDIF
41783   250         CONTINUE
41784   260       CONTINUE
41785           ENDIF
41786         ENDIF
41787 C...BARYON NUMBER VIOLATING DECAYS
41788         IF (IMSS(53).GE.1) THEN
41789 C * SUP -> DBAR + DBAR
41790           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
41791             I = KFSM/2
41792             DO 280 J=1,3
41793               DO 270 K=1,3
41794 C...~u_I -> dbar_J + dbar_K
41795                 IF (J.LT.K) THEN
41796 C...(anti-) symmetry J <-> K.
41797                   LKNT = LKNT + 1
41798                   IDLAM(LKNT,1) = -1 -2*(J-1)
41799                   IDLAM(LKNT,2) = -1 -2*(K-1)
41800                   IDLAM(LKNT,3) =  0
41801                   XLAM(LKNT)    =  0D0
41802                   RM2 = 2.*(RVLAMB(I,J,K)**2)
41803      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
41804                   XLAM(LKNT)    =
41805      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41806 C...KINEMATICS CHECK
41807                   IF (XLAM(LKNT).EQ.0D0) THEN
41808                     LKNT = LKNT-1
41809                   ENDIF
41810                 ENDIF
41811   270         CONTINUE
41812   280       CONTINUE
41813           ENDIF
41814 C * SDOWN -> UBAR + DBAR
41815           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
41816             K=(KFSM+1)/2
41817             DO 300 I=1,3
41818               DO 290 J=1,3
41819 C...LAMB coupling antisymmetric in J and K.
41820                 IF (J.NE.K) THEN
41821 C...~d_K -> ubar_I + dbar_K
41822                   LKNT = LKNT + 1
41823                   IDLAM(LKNT,1)= -2 -2*(I-1)
41824                   IDLAM(LKNT,2)= -1 -2*(J-1)
41825                   IDLAM(LKNT,3)=  0
41826                   XLAM(LKNT)=0D0
41827 C...Use massive top quark
41828                   IF (IDLAM(LKNT,1).EQ.-6) THEN
41829                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
41830      &                   )
41831                     XLAM(LKNT) =
41832      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
41833 C...If no top quark, all decay products massless
41834                   ELSE
41835                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
41836                     XLAM(LKNT) =
41837      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
41838                   ENDIF
41839 C...KINEMATICS CHECK
41840                   IF (XLAM(LKNT).EQ.0D0) THEN
41841                     LKNT=LKNT-1
41842                   ENDIF
41843                 ENDIF
41844   290         CONTINUE
41845   300       CONTINUE
41846           ENDIF
41847         ENDIF
41848       ENDIF
41849  
41850       RETURN
41851       END
41852  
41853 C*********************************************************************
41854  
41855 C...PYRVNE
41856 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
41857 C...P. Z. Skands
41858  
41859       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
41860  
41861 C...Double precision and integer declarations.
41862       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41863       IMPLICIT INTEGER(I-N)
41864 C...Parameter statement to help give large particle numbers.
41865       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
41866      &KEXCIT=4000000,KDIMEN=5000000)
41867 C...Commonblocks.
41868       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41869       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41870       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
41871       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
41872      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
41873       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
41874 C...Local variables.
41875       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
41876      &     ,DCMASS,KFR(3)
41877       DOUBLE PRECISION XLAM(0:400)
41878       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
41879       INTEGER IDLAM(400,3), PYCOMP
41880       LOGICAL DCMASS
41881       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
41882  
41883 C...R-VIOLATING DECAYS
41884       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
41885         KFSM=KFIN-KSUSY1
41886         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
41887 C...WHICH NEUTRALINO ?
41888           NCHI=1
41889           IF (KFSM.EQ.23) NCHI=2
41890           IF (KFSM.EQ.25) NCHI=3
41891           IF (KFSM.EQ.35) NCHI=4
41892 C...SIGN OF MASS (Opposite convention as HERWIG)
41893           ISM = 1
41894           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
41895  
41896 C...Useful parameters for the calculation of the A and B constants.
41897           WMASS = PMAS(PYCOMP(24),1)
41898           ECHG = 2*SQRT(PARU(103)*PARU(1))
41899           COSB=1/(SQRT(1+RMSS(5)**2))
41900           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
41901           COSW=SQRT(1-PARU(102))
41902           SINW=SQRT(PARU(102))
41903           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
41904 C...Run quark masses to neutralino mass squared (for Higgs-type
41905 C...couplings)
41906           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
41907           DO 100 I=1,6
41908             RMQ(I)=PYMRUN(I,SQMCHI)
41909   100     CONTINUE
41910 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
41911             DO 110 NCHJ=1,4
41912               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
41913               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
41914               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
41915               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
41916   110       CONTINUE
41917             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
41918             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
41919             C2=ECHG*ZPMIX(NCHI,1)
41920             C3=GW*ZPMIX(NCHI,2)/COSW
41921             EU=2D0/3D0
41922             ED=-1D0/3D0
41923 C... AB(x,y,z):
41924 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
41925 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
41926 C                                    11-16:e,nu_e,mu,...)
41927 C       z=1-2  : Mass eigenstate number
41928 C...CALCULATE COUPLINGS
41929           DO 120 I = 11,15,2
41930             CMS=PMAS(PYCOMP(I),1)
41931 C...Intermediate sleptons
41932             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
41933      &           *(C2-C3*SINW**2))
41934             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
41935      &           *(C2-C3*SINW**2))
41936             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
41937      &           **2))
41938             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
41939      &           **2))
41940 C...Inermediate sneutrinos
41941             AB(1,I+1,1)=0D0
41942             AB(2,I+1,1)=5D-1*C3
41943             AB(1,I+1,2)=0D0
41944             AB(2,I+1,2)=0D0
41945 C...Inermediate sdown
41946             J=I-10
41947             CMS=RMQ(J)
41948             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
41949      &           *ED*(C2-C3*SINW**2))
41950             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
41951      &           *ED*(C2-C3*SINW**2))
41952             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
41953      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
41954             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
41955      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
41956 C...Inermediate sup
41957             J=J+1
41958             CMS=RMQ(J)
41959             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
41960      &           *EU*(C2-C3*SINW**2))
41961             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
41962      &           *EU*(C2-C3*SINW**2))
41963             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
41964      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
41965             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
41966      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
41967   120     CONTINUE
41968  
41969           IF (IMSS(51).GE.1) THEN
41970 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
41971 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
41972 C...STEP IN I,J,K USING SINGLE COUNTER
41973             DO 130 ISC=0,26
41974 C...LAMBDA COUPLING ASYM IN I,J
41975               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
41976                 LKNT = LKNT+1
41977                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
41978                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
41979                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
41980                 XLAM(LKNT)    = 0D0
41981 C...Set coupling, and decay product masses on/off
41982                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
41983      &               ,MOD(ISC,3)+1)**2
41984                 DCMASS=.FALSE.
41985                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
41986      &               DCMASS = .TRUE.
41987 C...Resonance KF codes (1=I,2=J,3=K)
41988                 KFR(1)=-IDLAM(LKNT,1)
41989                 KFR(2)=-IDLAM(LKNT,2)
41990                 KFR(3)=-IDLAM(LKNT,3)
41991 C...Calculate width.
41992                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
41993      &               IDLAM(LKNT,3),XLAM(LKNT))
41994                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
41995 C...Charge conjugate mode.
41996                 LKNT=LKNT+1
41997                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
41998                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
41999                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42000                 XLAM(LKNT)=XLAM(LKNT-1)
42001 C...KINEMATICS CHECK
42002                 IF (XLAM(LKNT).EQ.0D0) THEN
42003                   LKNT=LKNT-2
42004                 ENDIF
42005               ENDIF
42006   130       CONTINUE
42007           ENDIF
42008  
42009           IF (IMSS(52).GE.1) THEN
42010 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
42011 C * CHI0 -> NUBAR_I + DBAR_J + D_K
42012             DO 140 ISC=0,26
42013               LKNT = LKNT+1
42014               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42015               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42016               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42017               XLAM(LKNT)    =  0D0
42018 C...Set coupling, and decay product masses on/off
42019               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
42020      &             ,MOD(ISC,3)+1)**2
42021               DCMASS=.FALSE.
42022               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
42023      &             DCMASS = .TRUE.
42024 C...Resonance KF codes (1=I,2=J,3=K)
42025               KFR(1)=-IDLAM(LKNT,1)
42026               KFR(2)=-IDLAM(LKNT,2)
42027               KFR(3)=-IDLAM(LKNT,3)
42028 C...Calculate width.
42029               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42030      &             ,XLAM(LKNT))
42031               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42032 C...Charge conjugate mode.
42033               LKNT=LKNT+1
42034               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42035               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42036               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42037               XLAM(LKNT)=XLAM(LKNT-1)
42038 C...KINEMATICS CHECK
42039               IF (XLAM(LKNT).EQ.0D0) THEN
42040                 LKNT=LKNT-2
42041               ENDIF
42042  
42043 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
42044               LKNT = LKNT+1
42045               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42046               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42047               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42048               XLAM(LKNT)    =  0D0
42049 C...Set coupling, and decay product masses on/off
42050               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
42051      &             ,MOD(ISC,3)+1)**2
42052               DCMASS=.FALSE.
42053               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
42054      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
42055 C...Resonance KF codes (1=I,2=J,3=K)
42056               KFR(1)=-IDLAM(LKNT,1)
42057               KFR(2)=-IDLAM(LKNT,2)
42058               KFR(3)=-IDLAM(LKNT,3)
42059 C...Calculate width.
42060               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42061      &             ,XLAM(LKNT))
42062               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42063 C...Charge conjugate mode.
42064               LKNT=LKNT+1
42065               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42066               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42067               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42068               XLAM(LKNT)=XLAM(LKNT-1)
42069 C...KINEMATICS CHECK
42070               IF (XLAM(LKNT).EQ.0D0) THEN
42071                 LKNT=LKNT-2
42072               ENDIF
42073   140       CONTINUE
42074           ENDIF
42075  
42076           IF (IMSS(53).GE.1) THEN
42077 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
42078 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
42079             DO 150 ISC=0,26
42080 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
42081               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
42082                 LKNT = LKNT+1
42083                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
42084                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42085                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42086                 XLAM(LKNT)    =  0D0
42087 C...Set coupling, and decay product masses on/off
42088                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
42089      &               +1,MOD(ISC,3)+1)**2
42090                 DCMASS=.FALSE.
42091                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
42092      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
42093 C...Resonance KF codes (1=I,2=J,3=K)
42094                 KFR(1) = IDLAM(LKNT,1)
42095                 KFR(2) = IDLAM(LKNT,2)
42096                 KFR(3) = IDLAM(LKNT,3)
42097 C...Calculate width.
42098                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42099      &               IDLAM(LKNT,3),XLAM(LKNT))
42100                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42101 C...Charge conjugate mode.
42102                 LKNT=LKNT+1
42103                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
42104                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
42105                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
42106                 XLAM(LKNT)=XLAM(LKNT-1)
42107 C...KINEMATICS CHECK
42108                 IF (XLAM(LKNT).EQ.0D0) THEN
42109                   LKNT=LKNT-2
42110                 ENDIF
42111               ENDIF
42112   150       CONTINUE
42113           ENDIF
42114         ENDIF
42115       ENDIF
42116  
42117       RETURN
42118       END
42119  
42120 C*********************************************************************
42121  
42122 C...PYRVCH
42123 C...Calculates R-violating chargino decay widths.
42124 C...P. Z. Skands
42125  
42126       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
42127  
42128 C...Double precision and integer declarations.
42129       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42130       IMPLICIT INTEGER(I-N)
42131 C...Parameter statement to help give large particle numbers.
42132       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42133      &KEXCIT=4000000,KDIMEN=5000000)
42134 C...Commonblocks.
42135       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42136       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42137       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42138       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42139      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42140       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
42141 C...Local variables.
42142       DOUBLE PRECISION XLAM(0:400)
42143       INTEGER IDLAM(400,3), PYCOMP
42144 C...Information from main routine to PYRVGW
42145       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42146      &     ,DCMASS,KFR(3)
42147 C...Auxiliary variables needed for BV (RV Gauge STOre)
42148       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
42149      &     ,RVLJKI,RVLJIK
42150 C...Running quark masses
42151       DOUBLE PRECISION RMQ(6)
42152 C...Decay product masses on/off
42153       LOGICAL DCMASS
42154       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
42155      &     /RVGSTO/
42156  
42157  
42158 C...IF R-VIOLATION ON.
42159       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
42160         KFSM=KFIN-KSUSY1
42161         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
42162 C...WHICH CHARGINO ?
42163           NCHI = 1
42164           IF (KFSM.EQ.37) NCHI = 2
42165  
42166 C...Useful parameters for calculating the A and B constants.
42167 C...SIGN OF MASS (Opposite convention as HERWIG)
42168           ISM  = 1
42169           IF (SMW(NCHI).LT.0D0) ISM = -1
42170           WMASS   = PMAS(PYCOMP(24),1)
42171           COSB    = 1/(SQRT(1+RMSS(5)**2))
42172           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
42173           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
42174           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
42175           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
42176           C2      = UMIX(NCHI,1)
42177           C3      = VMIX(NCHI,1)
42178 C...Running masses at Q^2=MCHI^2.
42179           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
42180           DO 100 I=1,6
42181             RMQ(I)=PYMRUN(I,SQMCHI)
42182   100     CONTINUE
42183  
42184 C... AB(x,y,z) coefficients:
42185 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
42186 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
42187 C                                    11-16:e,nu_e,mu,...)
42188 C       z=1-2  : Mass eigenstate number
42189           DO 110 I = 11,15,2
42190 C...Intermediate sleptons
42191             AB(1,I,1)   = 0D0
42192             AB(1,I,2)   = 0D0
42193             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
42194      &           SFMIX(I,1)*C2
42195             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
42196      &           SFMIX(I,3)*C2
42197 C...Intermediate sneutrinos
42198             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
42199             AB(1,I+1,2) = 0D0
42200             AB(2,I+1,1) = ISM*C3
42201             AB(2,I+1,2) = 0D0
42202 C...Intermediate sdown
42203             J=I-10
42204             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
42205             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
42206             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
42207             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
42208 C...Intermediate sup
42209             J=J+1
42210             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
42211             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
42212             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
42213             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
42214   110     CONTINUE
42215  
42216 C...LLE TYPE R-VIOLATION
42217           IF (IMSS(51).GE.1) THEN
42218 C...LOOP OVER DECAY MODES
42219             DO 140 ISC=0,26
42220  
42221 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
42222               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
42223                 LKNT = LKNT+1
42224                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
42225                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
42226                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
42227                 XLAM(LKNT)    =  0D0
42228 C...Set coupling, and decay product masses on/off
42229                 RVLAMC        = GW2 * 5D-1 *
42230      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42231      &               **2
42232                 DCMASS=.FALSE.
42233                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
42234 C...Resonance KF codes (1=I,2=J,3=K).
42235                 KFR(1) = 0
42236                 KFR(2) = 0
42237                 KFR(3) = -IDLAM(LKNT,3)+1
42238 C...Calculate width.
42239                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42240      &               IDLAM(LKNT,3),XLAM(LKNT))
42241                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42242 C...KINEMATICS CHECK
42243                 IF (XLAM(LKNT).EQ.0D0) THEN
42244                   LKNT=LKNT-1
42245                 ENDIF
42246  
42247 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
42248   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
42249                   LKNT = LKNT+1
42250                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
42251                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
42252                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
42253                   XLAM(LKNT)    = 0D0
42254 C...Set coupling, and decay product masses on/off
42255                   RVLAMC = GW2 * 5D-1 *
42256      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42257 C...I,J SYMMETRY => FACTOR 2
42258                   RVLAMC=2*RVLAMC
42259                   DCMASS=.FALSE.
42260                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
42261 C...Resonance KF codes (1=I,2=J,3=K)
42262                   KFR(1)=IDLAM(LKNT,1)-1
42263                   KFR(2)=IDLAM(LKNT,2)-1
42264                   KFR(3)=0
42265 C...Calculate width.
42266                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42267      &                 IDLAM(LKNT,3),XLAM(LKNT))
42268                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42269 C...KINEMATICS CHECK
42270                   IF (XLAM(LKNT).EQ.0D0) THEN
42271                     LKNT=LKNT-1
42272                   ENDIF
42273   130           ENDIF
42274  
42275 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K
42276                 LKNT = LKNT+1
42277                 IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42278                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
42279                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
42280                 XLAM(LKNT)    = 0D0
42281 C...Set coupling, and decay product masses on/off
42282                 RVLAMC = GW2 * 5D-1 *
42283      &             RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42284 C...I,J SYMMETRY => FACTOR 2
42285                 RVLAMC=2*RVLAMC
42286                 DCMASS=.FALSE.
42287                 IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
42288      &               .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
42289 C...Resonance KF codes (1=I,2=J,3=K)
42290                 KFR(1) =-IDLAM(LKNT,1)+1
42291                 KFR(2) =-IDLAM(LKNT,2)+1
42292                 KFR(3) = 0
42293 C...Calculate width.
42294                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42295      &               IDLAM(LKNT,3),XLAM(LKNT))
42296                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42297 C...KINEMATICS CHECK
42298                 IF (XLAM(LKNT).EQ.0D0) THEN
42299                   LKNT=LKNT-1
42300                 ENDIF
42301               ENDIF
42302   140       CONTINUE
42303           ENDIF
42304  
42305 C...LQD TYPE R-VIOLATION
42306           IF (IMSS(52).GE.1) THEN
42307 C...LOOP OVER DECAY MODES
42308             DO 180 ISC=0,26
42309  
42310 C...CHI+ -> NUBAR_I + DBAR_J + U_K
42311               LKNT = LKNT+1
42312               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42313               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42314               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
42315               XLAM(LKNT)    =  0D0
42316 C...Set coupling, and decay product masses on/off
42317               RVLAMC = 3. * GW2 * 5D-1 *
42318      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42319               DCMASS=.FALSE.
42320               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
42321      &             DCMASS = .TRUE.
42322 C...Resonance KF codes (1=I,2=J,3=K)
42323               KFR(1)=0
42324               KFR(2)=0
42325               KFR(3)=-IDLAM(LKNT,3)+1
42326 C...Calculate width.
42327               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42328      &             ,XLAM(LKNT))
42329               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42330 C...KINEMATICS CHECK
42331               IF (XLAM(LKNT).EQ.0D0) THEN
42332                 LKNT=LKNT-1
42333               ENDIF
42334  
42335 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
42336   150         LKNT = LKNT+1
42337               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42338               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42339               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
42340               XLAM(LKNT)    =  0D0
42341 C...Set coupling, and decay product masses on/off
42342               RVLAMC = 3. * GW2 * 5D-1 *
42343      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42344               DCMASS=.FALSE.
42345               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
42346      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
42347 C...Resonance KF codes (1=I,2=J,3=K)
42348               KFR(1)=0
42349               KFR(2)=0
42350               KFR(3)=-IDLAM(LKNT,3)+1
42351 C...Calculate width.
42352               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42353      &             ,XLAM(LKNT))
42354               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42355 C...KINEMATICS CHECK
42356               IF (XLAM(LKNT).EQ.0D0) THEN
42357                 LKNT=LKNT-1
42358               ENDIF
42359  
42360 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
42361   160         LKNT = LKNT+1
42362               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42363               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42364               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42365               XLAM(LKNT)    =  0D0
42366 C...Set coupling, and decay product masses on/off
42367               RVLAMC = 3. * GW2 * 5D-1 *
42368      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42369               DCMASS = .FALSE.
42370               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
42371      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
42372 C...Resonance KF codes (1=I,2=J,3=K)
42373               KFR(1)=-IDLAM(LKNT,1)+1
42374               KFR(2)=-IDLAM(LKNT,2)+1
42375               KFR(3)=0
42376 C...Calculate width.
42377               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42378      &             ,XLAM(LKNT))
42379               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42380 C...KINEMATICS CHECK
42381               IF (XLAM(LKNT).EQ.0D0) THEN
42382                 LKNT=LKNT-1
42383               ENDIF
42384  
42385 C * CHI+ -> NU_I + U_J + DBAR_K.
42386   170         LKNT = LKNT+1
42387               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
42388               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
42389               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42390               XLAM(LKNT)    =  0D0
42391 C...Set coupling, and decay product masses on/off
42392               DCMASS = .FALSE.
42393               RVLAMC = 3. * GW2 * 5D-1 *
42394      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42395               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
42396      &             DCMASS = .TRUE.
42397 C...Resonance KF codes (1=I,2=J,3=K)
42398               KFR(1)=IDLAM(LKNT,1)-1
42399               KFR(2)=IDLAM(LKNT,2)-1
42400               KFR(3)=0
42401 C...Calculate width.
42402               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42403      &             ,XLAM(LKNT))
42404               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42405 C...KINEMATICS CHECK
42406               IF (XLAM(LKNT).EQ.0D0) THEN
42407                 LKNT=LKNT-1
42408               ENDIF
42409  
42410   180       CONTINUE
42411           ENDIF
42412  
42413 C...UDD TYPE R-VIOLATION
42414 C...These decays need special treatment since more than one BV coupling
42415 C...contributes (with interference). Consider e.g. (symbolically)
42416 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
42417 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
42418 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
42419 C...The problem is that a single call to PYRVGW would evaluate all
42420 C...these terms and sum them, but without the different couplings. The
42421 C...way out is to call PYRVGW three times, once for the first line, once
42422 C...for the second line, and then once for all the lines (it is
42423 C...impossible to get just the last line out) without multiplying by
42424 C...couplings. The last line is then obtained as the result of the third
42425 C...call minus the results of the two first calls. Each term is then
42426 C...multiplied by its respective coupling before the whole thing is
42427 C...summed up in XLAM.
42428 C...Note that with three interfering resonances, this procedure becomes
42429 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
42430  
42431           IF (IMSS(53).GE.1) THEN
42432 C...LOOP OVER DECAY MODES
42433             DO 190 ISC=1,25
42434  
42435 C...CHI+ -> U_I + U_J + D_K
42436 C...Decay mode I<->J symmetric.
42437               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
42438                 LKNT = LKNT+1
42439                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
42440                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
42441                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42442                 XLAM(LKNT)    =  0D0
42443 C...Set coupling, and decay product masses on/off
42444                 RVLAMC= 6. * GW2 * 5D-1
42445                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
42446      &               +1)
42447                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
42448      &               +1)
42449                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
42450      &               * RVLAMC
42451                 DCMASS=.FALSE.
42452                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
42453      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
42454 C...Resonance KF codes (1=I,2=J,3=K)
42455                 KFR(1) = -IDLAM(LKNT,1)+1
42456                 KFR(2) = 0
42457                 KFR(3) = 0
42458 C...Calculate width.
42459                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42460      &               IDLAM(LKNT,3),XRESI)
42461 C...Resonance KF codes (1=I,2=J,3=K)
42462                 KFR(1) = 0
42463                 KFR(2) = -IDLAM(LKNT,2)+1
42464                 KFR(3) = 0
42465 C...Calculate width.
42466                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42467      &               IDLAM(LKNT,3),XRESJ)
42468 C...Resonance KF codes (1=I,2=J,3=K)
42469                 KFR(1) = -IDLAM(LKNT,1)+1
42470                 KFR(2) = -IDLAM(LKNT,2)+1
42471                 KFR(3) = 0
42472 C...Calculate width.
42473                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42474      &               IDLAM(LKNT,3),XRESIJ)
42475                 IF (ABS((XRESI+XRESJ)/XRESIJ-1.).GT.1D-4) THEN
42476                   XRESIJ = XRESIJ-XRESI-XRESJ
42477                 ELSE
42478                   XRESIJ = 0D0
42479                 ENDIF
42480 C...CALCULATE TOTAL WIDTH
42481                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
42482      &               + RVLJIK*RVLIJK * XRESIJ
42483                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42484 C...KINEMATICS CHECK
42485                 IF (XLAM(LKNT).EQ.0D0) THEN
42486                   LKNT=LKNT-1
42487                 ENDIF
42488               ENDIF
42489 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
42490 C...Symmetry I<->J<->K.
42491               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
42492      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
42493                 LKNT = LKNT+1
42494                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
42495                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42496                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42497                 XLAM(LKNT)    =  0D0
42498 C...Set coupling, and decay product masses on/off
42499                 RVLAMC = 6. * GW2 * 5D-1
42500                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
42501      &               +1)
42502                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
42503      &               +1)
42504                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
42505      &               +1)
42506                 DCMASS = .FALSE.
42507                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
42508      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
42509 C...Collect symmetry factors
42510                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
42511      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
42512      &               RVLAMC = 5D-1 * RVLAMC
42513 C...Resonance KF codes (1=I,2=J,3=K)
42514                 KFR(1) = IDLAM(LKNT,1)-1
42515                 KFR(2) = 0
42516                 KFR(3) = 0
42517 C...Calculate width.
42518                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42519      &               IDLAM(LKNT,3),XRESI)
42520 C...Resonance KF codes (1=I,2=J,3=K)
42521                 KFR(1) = 0
42522                 KFR(2) = IDLAM(LKNT,2)-1
42523                 KFR(3) = 0
42524 C...Calculate width.
42525                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42526      &               IDLAM(LKNT,3),XRESJ)
42527 C...Resonance KF codes (1=I,2=J,3=K)
42528                 KFR(1) = 0
42529                 KFR(2) = 0
42530                 KFR(3) = IDLAM(LKNT,3)-1
42531 C...Calculate width.
42532                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42533      &               IDLAM(LKNT,3),XRESK)
42534 C...Resonance KF codes (1=I,2=J,3=K)
42535                 KFR(1) = IDLAM(LKNT,1)-1
42536                 KFR(2) = IDLAM(LKNT,2)-1
42537                 KFR(3) = 0
42538 C...Calculate width.
42539                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42540      &               IDLAM(LKNT,3),XRESIJ)
42541                 IF (ABS(XRESIJ/(XRESI+XRESJ)-1.).GT.1D-4) THEN
42542                   XRESIJ = XRESI+XRESJ-XRESIJ
42543                 ELSE
42544                   XRESIJ = 0D0
42545                 ENDIF
42546 C...Resonance KF codes (1=I,2=J,3=K)
42547                 KFR(1) = 0
42548                 KFR(2) = IDLAM(LKNT,2)-1
42549                 KFR(3) = IDLAM(LKNT,3)-1
42550 C...Calculate width.
42551                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42552      &               IDLAM(LKNT,3),XRESJK)
42553                 IF (ABS(XRESJK/(XRESJ+XRESK)-1.).GT.1D-4) THEN
42554                   XRESJK = XRESJ+XRESK-XRESJK
42555                 ELSE
42556                   XRESJK = 0D0
42557                 ENDIF
42558 C...Resonance KF codes (1=I,2=J,3=K)
42559                 KFR(1) = IDLAM(LKNT,1)-1
42560                 KFR(2) = 0
42561                 KFR(3) = IDLAM(LKNT,3)-1
42562 C...Calculate width.
42563                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
42564      &               IDLAM(LKNT,3),XRESIK)
42565                 IF (ABS(XRESIK/(XRESI+XRESK)-1.).GT.1D-4) THEN
42566                   XRESIK = XRESI+XRESK-XRESIK
42567                 ELSE
42568                   XRESIK = 0D0
42569                 ENDIF
42570 C...CALCULATE TOTAL WIDTH
42571                 XLAM(LKNT) =
42572      &                 RVLIJK**2 * XRESI
42573      &               + RVLJKI**2 * XRESJ
42574      &               + RVLKIJ**2 * XRESK
42575      &               + RVLIJK*RVLJKI * XRESIJ
42576      &               + RVLIJK*RVLKIJ * XRESIK
42577      &               + RVLJKI*RVLKIJ * XRESJK
42578                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
42579 C...KINEMATICS CHECK
42580                 IF (XLAM(LKNT).EQ.0D0) THEN
42581                   LKNT=LKNT-1
42582                 ENDIF
42583               ENDIF
42584   190       CONTINUE
42585           ENDIF
42586         ENDIF
42587       ENDIF
42588  
42589       RETURN
42590       END
42591  
42592 C*********************************************************************
42593  
42594 C...PYRVGL
42595 C...Calculates R-violating gluino decay widths.
42596 C...See BV part of PYRVCH for comments about the way the BV decay width
42597 C...is calculated. Same comments apply here.
42598 C...P. Z. Skands
42599  
42600       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
42601  
42602 C...Double precision and integer declarations.
42603       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42604       IMPLICIT INTEGER(I-N)
42605 C...Parameter statement to help give large particle numbers.
42606       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42607      &KEXCIT=4000000,KDIMEN=5000000)
42608 C...Commonblocks.
42609       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42610       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42611       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42612       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42613      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42614       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
42615 C...Local variables.
42616       DOUBLE PRECISION XLAM(0:400)
42617       INTEGER IDLAM(400,3), PYCOMP
42618 C...Information from main routine to PYRVGW
42619       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42620      &     ,DCMASS,KFR(3)
42621 C...Auxiliary variables needed for BV (RV Gauge STOre)
42622       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
42623      &     ,RVLJKI,RVLJIK
42624 C...Running quark masses
42625       DOUBLE PRECISION RMQ(6)
42626 C...Decay product masses on/off
42627       LOGICAL DCMASS
42628       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
42629      &     /RVGSTO/
42630  
42631 C...IF LQD OR UDD TYPE R-VIOLATION ON.
42632       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
42633         KFSM=KFIN-KSUSY1
42634  
42635 C... AB(x,y,z):
42636 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
42637 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
42638 C                                    11-16:e,nu_e,mu,... not used here)
42639 C       z=1-2  : Mass eigenstate number
42640         DO 100 I = 1,6
42641 C...A Couplings
42642           AB(1,I,1) = SFMIX(I,2)
42643           AB(1,I,2) = SFMIX(I,4)
42644 C...B Couplings
42645           AB(2,I,1) = -SFMIX(I,1)
42646           AB(2,I,2) = -SFMIX(I,3)
42647   100   CONTINUE
42648         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
42649 C...LQD DECAYS.
42650         IF (IMSS(52).GE.1) THEN
42651 C...STEP IN I,J,K USING SINGLE COUNTER
42652           DO 120 ISC=0,26
42653 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
42654             LKNT          = LKNT+1
42655             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
42656             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42657             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42658             XLAM(LKNT)=0D0
42659 C...Set coupling, and decay product masses on/off
42660             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
42661      &           * 5D-1 * GSTR2
42662             DCMASS        = .FALSE.
42663             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
42664 C...Resonance KF codes (1=I,2=J,3=K)
42665             KFR(1)        = 0
42666             KFR(2)        = -IDLAM(LKNT,2)
42667             KFR(3)        = -IDLAM(LKNT,3)
42668 C...Calculate width.
42669             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42670      &           ,XLAM(LKNT))
42671 C...Normalize
42672             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42673 C...Charge conjugate mode.
42674   110       LKNT          = LKNT+1
42675             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
42676             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
42677             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
42678             XLAM(LKNT)    = XLAM(LKNT-1)
42679 C...KINEMATICS CHECK
42680             IF (XLAM(LKNT).EQ.0D0) THEN
42681               LKNT=LKNT-2
42682             ENDIF
42683  
42684 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
42685             LKNT = LKNT+1
42686             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
42687             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
42688             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
42689             XLAM(LKNT)=0D0
42690 C...Set coupling, and decay product masses on/off
42691             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42692      &           **2* 5D-1 * GSTR2
42693             DCMASS        = .FALSE.
42694             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
42695      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
42696 C...Resonance KF codes (1=I,2=J,3=K)
42697             KFR(1)        = 0
42698             KFR(2)        = -IDLAM(LKNT,2)
42699             KFR(3)        = -IDLAM(LKNT,3)
42700 C...Calculate width.
42701             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42702      &           ,XLAM(LKNT))
42703             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42704 C...Charge conjugate mode.
42705             LKNT=LKNT+1
42706             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
42707             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
42708             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
42709             XLAM(LKNT)    =  XLAM(LKNT-1)
42710 C...KINEMATICS CHECK
42711             IF (XLAM(LKNT).EQ.0D0) THEN
42712               LKNT=LKNT-2
42713             ENDIF
42714  
42715   120     CONTINUE
42716         ENDIF
42717  
42718 C...UDD DECAYS.
42719         IF (IMSS(53).GE.1) THEN
42720 C...STEP IN I,J,K USING SINGLE COUNTER
42721           DO 130 ISC=0,26
42722 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
42723             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
42724               LKNT          = LKNT+1
42725               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
42726               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
42727               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
42728               XLAM(LKNT)=0D0
42729 C...Set coupling, and decay product masses on/off. A factor of 2 for
42730 C...(N_C-1) has been used to cancel a factor 0.5.
42731               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
42732      &             **2 * GSTR2
42733               DCMASS        = .FALSE.
42734               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
42735      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
42736 C...Resonance KF codes (1=I,2=J,3=K)
42737               KFR(1)        = IDLAM(LKNT,1)
42738               KFR(2)        = 0
42739               KFR(3)        = 0
42740 C...Calculate width.
42741               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42742      &             ,XRESI)
42743 C...Resonance KF codes (1=I,2=J,3=K)
42744               KFR(1)        = 0
42745               KFR(2)        = IDLAM(LKNT,2)
42746               KFR(3)        = 0
42747 C...Calculate width.
42748               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42749      &             ,XRESJ)
42750 C...Resonance KF codes (1=I,2=J,3=K)
42751               KFR(1)        = 0
42752               KFR(2)        = 0
42753               KFR(3)        = IDLAM(LKNT,3)
42754 C...Calculate width.
42755               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42756      &             ,XRESK)
42757 C...Resonance KF codes (1=I,2=J,3=K)
42758               KFR(1)        = IDLAM(LKNT,1)
42759               KFR(2)        = IDLAM(LKNT,2)
42760               KFR(3)        = 0
42761 C...Calculate width.
42762               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42763      &             ,XRESIJ)
42764 C...Calculate interference function. (Factor -1/2 to make up for factor
42765 C...-2 in PYRVGW.
42766               IF (ABS((XRESI+XRESJ)/XRESIJ-1D0).GT.1D-4) THEN
42767                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
42768               ELSE
42769                 XRESIJ = 0D0
42770               ENDIF
42771 C...Resonance KF codes (1=I,2=J,3=K)
42772               KFR(1)        = 0
42773               KFR(2)        = IDLAM(LKNT,2)
42774               KFR(3)        = IDLAM(LKNT,3)
42775 C...Calculate width.
42776               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42777      &             ,XRESJK)
42778               IF (ABS((XRESJ+XRESK)/XRESJK-1).GT.1D-4) THEN
42779                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
42780               ELSE
42781                 XRESJK = 0D0
42782               ENDIF
42783 C...Resonance KF codes (1=I,2=J,3=K)
42784               KFR(1)        = IDLAM(LKNT,1)
42785               KFR(2)        = 0
42786               KFR(3)        = IDLAM(LKNT,3)
42787 C...Calculate width.
42788               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
42789      &             ,XRESIK)
42790               IF (ABS((XRESI+XRESK)/XRESIK-1).GT.1D-4) THEN
42791                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
42792               ELSE
42793                 XRESIK = 0D0
42794               ENDIF
42795 C...Calculate total width (factor 1/2 from 1/(N_C-1))
42796               XLAM(LKNT) = XRESI + XRESJ + XRESK
42797      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
42798 C...Normalize
42799               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
42800 C...Charge conjugate mode.
42801               LKNT          = LKNT+1
42802               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
42803               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
42804               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
42805               XLAM(LKNT)    = XLAM(LKNT-1)
42806 C...KINEMATICS CHECK
42807               IF (XLAM(LKNT).EQ.0D0) THEN
42808                 LKNT=LKNT-2
42809               ENDIF
42810             ENDIF
42811   130     CONTINUE
42812         ENDIF
42813       ENDIF
42814       RETURN
42815       END
42816  
42817 C*********************************************************************
42818  
42819 C...PYRVSB
42820 C...Auxiliary function to PYRVSF for calculating R-Violating
42821 C...sfermion widths. Though the decay products are most often treated
42822 C...as massless in the calculation, the kinematical boundary of phase
42823 C...space is tested using the true masses.
42824 C...MODE = 1: All decay products massive
42825 C...MODE = 2: Decay product 1 massless
42826 C...MODE = 3: Decay product 2 massless
42827 C...MODE = 4: All decay products  massless
42828  
42829       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
42830  
42831       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42832       IMPLICIT INTEGER (I-N)
42833       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42834       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42835       SAVE /PYDAT1/,/PYDAT2/
42836       DOUBLE PRECISION SM(3)
42837       INTEGER PYCOMP, KC(3)
42838       KC(1)=PYCOMP(KFIN)
42839       KC(2)=PYCOMP(ID1)
42840       KC(3)=PYCOMP(ID2)
42841       SM(1)=PMAS(KC(1),1)**2
42842       SM(2)=PMAS(KC(2),1)**2
42843       SM(3)=PMAS(KC(3),1)**2
42844 C...Kinematics check
42845       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
42846         PYRVSB=0D0
42847         RETURN
42848       ENDIF
42849 C...CM momenta squared
42850       IF (MODE.EQ.1) THEN
42851         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
42852      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
42853       ELSE IF (MODE.EQ.2) THEN
42854         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
42855       ELSE IF (MODE.EQ.3) THEN
42856         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
42857       ELSE
42858         P2CM=SM(1)/4.
42859       ENDIF
42860 C...Calculate Width
42861       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
42862       RETURN
42863       END
42864  
42865 C*********************************************************************
42866  
42867 C...PYRVGW
42868 C...Generalized Matrix Element for R-Violating 3-body widths.
42869 C...P. Z. Skands
42870       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
42871  
42872       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42873       IMPLICIT INTEGER (I-N)
42874       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
42875      &KEXCIT=4000000,KDIMEN=5000000)
42876       PARAMETER (EPS=1D-4)
42877       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42878       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
42879      &     ,DCMASS,KFR(3)
42880       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
42881      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
42882       DOUBLE PRECISION XLIM(3,3)
42883       INTEGER KC(0:3), PYCOMP
42884       LOGICAL DCMASS, DCHECK(6)
42885       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
42886  
42887       XLAM   = 0D0
42888  
42889       KC(0)  = PYCOMP(KFIN)
42890       KC(1)  = PYCOMP(ID1)
42891       KC(2)  = PYCOMP(ID2)
42892       KC(3)  = PYCOMP(ID3)
42893       RMS(0) = PMAS(KC(0),1)
42894       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
42895       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
42896       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
42897 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
42898       XLIM(1,1)=(RMS(1)+RMS(2))**2
42899       XLIM(1,2)=(RMS(0)-RMS(3))**2
42900       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
42901       XLIM(2,1)=(RMS(2)+RMS(3))**2
42902       XLIM(2,2)=(RMS(0)-RMS(1))**2
42903       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
42904       XLIM(3,1)=(RMS(1)+RMS(3))**2
42905       XLIM(3,2)=(RMS(0)-RMS(2))**2
42906       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
42907 C...Check Phase Space
42908       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
42909         RETURN
42910       ENDIF
42911  
42912 C...INITIALIZE RESONANCE INFORMATION
42913       DO 110 JRES = 1,3
42914         DO 100 IMASS = 1,2
42915           IRES = 2*(JRES-1)+IMASS
42916           INTRES(IRES,1) = 0
42917           DCHECK(IRES)   =.FALSE.
42918 C...NO RIGHT-HANDED NEUTRINOS
42919           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
42920      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
42921      &         .KFR(JRES).EQ.0) GOTO 100
42922           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
42923           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
42924           INTRES(IRES,1) = IABS(KFR(JRES))
42925           INTRES(IRES,2) = IMASS
42926           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
42927           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
42928   100   CONTINUE
42929   110 CONTINUE
42930  
42931 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
42932  
42933 C...RESONANCE CONTRIBUTIONS
42934 C...(Only sum contributions where the resonance is off shell).
42935 C...Store whether diagram on/off in DCHECK.
42936 C...LOOP OVER MASS STATES
42937       DO 120 J=1,2
42938         IDR=J
42939         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42940         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
42941      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42942           DCHECK(IDR) =.TRUE.
42943           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
42944         ENDIF
42945  
42946         IDR=J+2
42947         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42948         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
42949      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42950           DCHECK(IDR) =.TRUE.
42951           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
42952         ENDIF
42953  
42954         IDR=J+4
42955         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
42956         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
42957      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
42958           DCHECK(IDR) =.TRUE.
42959           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
42960         ENDIF
42961   120 CONTINUE
42962 C... L-R INTERFERENCES
42963 C... (Only add contributions where both contributing diagrams
42964 C... are non-resonant).
42965       IDR=1
42966       IF (DCHECK(1).AND.DCHECK(2)) THEN
42967 C...Bug corrected 11/12 2001. Skands.
42968         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
42969      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
42970      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
42971       ENDIF
42972  
42973       IDR=3
42974       IF (DCHECK(3).AND.DCHECK(4)) THEN
42975         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
42976      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
42977      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
42978       ENDIF
42979  
42980       IDR=5
42981       IF (DCHECK(5).AND.DCHECK(6)) THEN
42982         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
42983      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
42984      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
42985       ENDIF
42986 C... TRUE INTERFERENCES
42987 C... (Only add contributions where both contributing diagrams
42988 C... are non-resonant).
42989       PREF=-2D0
42990       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
42991       DO 140 IKR1 = 1,2
42992         DO 130 IKR2 = 1,2
42993           IDR  = IKR1+2
42994           IDR2 = IKR2
42995           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
42996             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
42997      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
42998      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
42999           ENDIF
43000  
43001           IDR  = IKR1+4
43002           IDR2 = IKR2
43003           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
43004             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
43005      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
43006      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
43007           ENDIF
43008  
43009           IDR  = IKR1+4
43010           IDR2 = IKR2+2
43011           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
43012             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
43013      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
43014      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
43015           ENDIF
43016   130   CONTINUE
43017   140 CONTINUE
43018  
43019       RETURN
43020       END
43021  
43022 C*********************************************************************
43023  
43024 C...PYRVI1
43025 C...Function to integrate resonance contributions
43026  
43027       FUNCTION PYRVI1(ID1,ID2,ID3)
43028  
43029       IMPLICIT NONE
43030       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
43031       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43032       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43033       LOGICAL MFLAG,DCMASS
43034       EXTERNAL PYRVG1,PYGAUS
43035       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43036      &     ,DCMASS,KFR(3)
43037       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43038       SAVE/PYRVNV/,/PYRVPM/
43039 C...Initialize mass and width information
43040       PYRVI1 = 0D0
43041       RM(0)  = RMS(0)
43042       RM(1)  = RMS(ID1)
43043       RM(2)  = RMS(ID2)
43044       RM(3)  = RMS(ID3)
43045       RESM(1)= RES(IDR,1)
43046       RESW(1)= RES(IDR,2)
43047 C...A->B and B->A for antisparticles
43048       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43049       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43050 C...Integration boundaries and mass flag
43051       LO     = (RM(1)+RM(2))**2
43052       HI     = (RM(0)-RM(3))**2
43053       MFLAG  = DCMASS
43054       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
43055       RETURN
43056       END
43057  
43058 C*********************************************************************
43059  
43060 C...PYRVI2
43061 C...Function to integrate L-R interference contributions
43062  
43063       FUNCTION PYRVI2(ID1,ID2,ID3)
43064  
43065       IMPLICIT NONE
43066       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
43067       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43068       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43069       LOGICAL MFLAG,DCMASS
43070       EXTERNAL PYRVG2,PYGAUS
43071       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43072      &     ,DCMASS,KFR(3)
43073       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43074       SAVE/PYRVNV/,/PYRVPM/
43075 C...Initialize mass and width information
43076       PYRVI2 = 0D0
43077       RM(0)  = RMS(0)
43078       RM(1)  = RMS(ID1)
43079       RM(2)  = RMS(ID2)
43080       RM(3)  = RMS(ID3)
43081       RESM(1)= RES(IDR,1)
43082       RESW(1)= RES(IDR,2)
43083       RESM(2)= RES(IDR+1,1)
43084       RESW(2)= RES(IDR+1,2)
43085 C...A->B and B->A for antisparticles
43086       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43087       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43088       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
43089       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
43090 C...Boundaries and mass flag
43091       LO     = (RM(1)+RM(2))**2
43092       HI     = (RM(0)-RM(3))**2
43093       MFLAG  = DCMASS
43094       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
43095       RETURN
43096       END
43097  
43098 C*********************************************************************
43099  
43100 C...PYRVI3
43101 C...Function to integrate true interference contributions
43102  
43103       FUNCTION PYRVI3(ID1,ID2,ID3)
43104  
43105       IMPLICIT NONE
43106       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
43107       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
43108       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
43109       LOGICAL MFLAG,DCMASS
43110       EXTERNAL PYRVG3,PYGAUS
43111       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
43112      &     ,DCMASS,KFR(3)
43113       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43114       SAVE/PYRVNV/,/PYRVPM/
43115 C...Initialize mass and width information
43116       PYRVI3 = 0D0
43117       RM(0)  = RMS(0)
43118       RM(1)  = RMS(ID1)
43119       RM(2)  = RMS(ID2)
43120       RM(3)  = RMS(ID3)
43121       RESM(1)= RES(IDR,1)
43122       RESW(1)= RES(IDR,2)
43123       RESM(2)= RES(IDR2,1)
43124       RESW(2)= RES(IDR2,2)
43125 C...A -> B and B -> A for antisparticles
43126       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43127       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
43128       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
43129       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
43130 C...Boundaries and mass flag
43131       LO     = (RM(1)+RM(2))**2
43132       HI     = (RM(0)-RM(3))**2
43133       MFLAG  = DCMASS
43134       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
43135       RETURN
43136       END
43137  
43138 C*********************************************************************
43139  
43140 C...PYRVG1
43141 C...Integrand for resonance contributions
43142  
43143       FUNCTION PYRVG1(X)
43144  
43145       IMPLICIT NONE
43146       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43147       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
43148       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
43149       LOGICAL MFLAG
43150       SAVE/PYRVPM/
43151       RVR    = PYRVR(X,RESM(1),RESW(1))
43152       C1     = 2D0*SQRT(MAX(0D0,X))
43153       IF (.NOT.MFLAG) THEN
43154         E2     = X/C1
43155         E3     = (RM(0)**2-X)/C1
43156         DELTAY = 4D0*E2*E3
43157         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
43158       ELSE
43159         E2     = (X-RM(1)**2+RM(2)**2)/C1
43160         E3     = (RM(0)**2-X-RM(3)**2)/C1
43161         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
43162         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
43163         DELTAY = 4D0*SR1*SR2
43164         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
43165         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
43166         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
43167       ENDIF
43168       RETURN
43169       END
43170  
43171 C*********************************************************************
43172  
43173 C...PYRVG2
43174 C...Integrand for L-R interference contributions
43175  
43176       FUNCTION PYRVG2(X)
43177  
43178       IMPLICIT NONE
43179       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43180       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
43181       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
43182       LOGICAL MFLAG
43183       SAVE/PYRVPM/
43184       C1     = 2D0*SQRT(MAX(0D0,X))
43185       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
43186       IF (.NOT.MFLAG) THEN
43187         E2     = X/C1
43188         E3     = (RM(0)**2-X)/C1
43189         DELTAY = 4D0*E2*E3
43190         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
43191       ELSE
43192         E2     = (X-RM(1)**2+RM(2)**2)/C1
43193         E3     = (RM(0)**2-X-RM(3)**2)/C1
43194         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
43195         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
43196         DELTAY = 4D0*SR1*SR2
43197         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
43198      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
43199      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
43200       ENDIF
43201       RETURN
43202       END
43203  
43204 C*********************************************************************
43205  
43206 C...PYRVG3
43207 C...Function to do Y integration over true interference contributions
43208  
43209       FUNCTION PYRVG3(X)
43210  
43211       IMPLICIT NONE
43212       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43213 C...Second Dalitz variable for PYRVG4
43214       COMMON/PYG2DX/X1
43215       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
43216       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
43217       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
43218       LOGICAL MFLAG
43219       EXTERNAL PYGAU2,PYRVG4
43220       SAVE/PYRVPM/,/PYG2DX/
43221       PYRVG3=0D0
43222       C1=2D0*SQRT(MAX(1D-9,X))
43223       X1=X
43224       IF (.NOT.MFLAG) THEN
43225         E2    = X/C1
43226         E3    = (RM(0)**2-X)/C1
43227         YMIN  = 0D0
43228         YMAX  = 4D0*E2*E3
43229       ELSE
43230         E2    = (X-RM(1)**2+RM(2)**2)/C1
43231         E3    = (RM(0)**2-X-RM(3)**2)/C1
43232         SQ1   = (E2+E3)**2
43233         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
43234         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
43235         YMIN  = SQ1-(SR1+SR2)**2
43236         YMAX  = SQ1-(SR1-SR2)**2
43237       ENDIF
43238       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
43239       RETURN
43240       END
43241  
43242 C*********************************************************************
43243  
43244 C...PYRVG4
43245 C...Integrand for true intereference contributions
43246  
43247       FUNCTION PYRVG4(Y)
43248  
43249       IMPLICIT NONE
43250       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
43251       COMMON/PYG2DX/X
43252       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
43253       LOGICAL MFLAG
43254       SAVE /PYRVPM/,/PYG2DX/
43255       PYRVG4=0D0
43256       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
43257       IF (.NOT.MFLAG) THEN
43258         PYRVG4 = RVS*B(1)*B(2)*X*Y
43259       ELSE
43260         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
43261      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
43262      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
43263      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
43264       ENDIF
43265       RETURN
43266       END
43267  
43268 C*********************************************************************
43269  
43270 C...PYRVR
43271 C...Breit-Wigner for resonance contributions
43272  
43273       FUNCTION PYRVR(Mab2,RM,RW)
43274  
43275       IMPLICIT NONE
43276       DOUBLE PRECISION Mab2,RM,RW,PYRVR
43277       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
43278       RETURN
43279       END
43280  
43281 C*********************************************************************
43282  
43283 C...PYRVS
43284 C...Interference function
43285  
43286       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
43287  
43288       IMPLICIT NONE
43289       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
43290       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
43291      &     +W1*W2*M1*M2)
43292       RETURN
43293       END
43294  
43295 C*********************************************************************
43296  
43297 C...PY1ENT
43298 C...Stores one parton/particle in commonblock PYJETS.
43299  
43300       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
43301  
43302 C...Double precision and integer declarations.
43303       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43304       IMPLICIT INTEGER(I-N)
43305       INTEGER PYK,PYCHGE,PYCOMP
43306 C...Commonblocks.
43307       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43308       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43309       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43310       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43311  
43312 C...Standard checks.
43313       MSTU(28)=0
43314       IF(MSTU(12).GE.1) CALL PYLIST(0)
43315       IPA=MAX(1,IABS(IP))
43316       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
43317      &'(PY1ENT:) writing outside PYJETS memory')
43318       KC=PYCOMP(KF)
43319       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
43320  
43321 C...Find mass. Reset K, P and V vectors.
43322       PM=0D0
43323       IF(MSTU(10).EQ.1) PM=P(IPA,5)
43324       IF(MSTU(10).GE.2) PM=PYMASS(KF)
43325       DO 100 J=1,5
43326         K(IPA,J)=0
43327         P(IPA,J)=0D0
43328         V(IPA,J)=0D0
43329   100 CONTINUE
43330  
43331 C...Store parton/particle in K and P vectors.
43332       K(IPA,1)=1
43333       IF(IP.LT.0) K(IPA,1)=2
43334       K(IPA,2)=KF
43335       P(IPA,5)=PM
43336       P(IPA,4)=MAX(PE,PM)
43337       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
43338       P(IPA,1)=PA*SIN(THE)*COS(PHI)
43339       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
43340       P(IPA,3)=PA*COS(THE)
43341  
43342 C...Set N. Optionally fragment/decay.
43343       N=IPA
43344       IF(IP.EQ.0) CALL PYEXEC
43345  
43346       RETURN
43347       END
43348  
43349 C*********************************************************************
43350  
43351 C...PY2ENT
43352 C...Stores two partons/particles in their CM frame,
43353 C...with the first along the +z axis.
43354  
43355       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
43356  
43357 C...Double precision and integer declarations.
43358       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43359       IMPLICIT INTEGER(I-N)
43360       INTEGER PYK,PYCHGE,PYCOMP
43361 C...Commonblocks.
43362       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43363       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43364       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43365       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43366  
43367 C...Standard checks.
43368       MSTU(28)=0
43369       IF(MSTU(12).GE.1) CALL PYLIST(0)
43370       IPA=MAX(1,IABS(IP))
43371       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
43372      &'(PY2ENT:) writing outside PYJETS memory')
43373       KC1=PYCOMP(KF1)
43374       KC2=PYCOMP(KF2)
43375       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
43376      &'(PY2ENT:) unknown flavour code')
43377  
43378 C...Find masses. Reset K, P and V vectors.
43379       PM1=0D0
43380       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43381       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43382       PM2=0D0
43383       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43384       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43385       DO 110 I=IPA,IPA+1
43386         DO 100 J=1,5
43387           K(I,J)=0
43388           P(I,J)=0D0
43389           V(I,J)=0D0
43390   100   CONTINUE
43391   110 CONTINUE
43392  
43393 C...Check flavours.
43394       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43395       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43396       IF(MSTU(19).EQ.1) THEN
43397         MSTU(19)=0
43398       ELSE
43399         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
43400      &  '(PY2ENT:) unphysical flavour combination')
43401       ENDIF
43402       K(IPA,2)=KF1
43403       K(IPA+1,2)=KF2
43404  
43405 C...Store partons/particles in K vectors for normal case.
43406       IF(IP.GE.0) THEN
43407         K(IPA,1)=1
43408         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
43409         K(IPA+1,1)=1
43410  
43411 C...Store partons in K vectors for parton shower evolution.
43412       ELSE
43413         K(IPA,1)=3
43414         K(IPA+1,1)=3
43415         K(IPA,4)=MSTU(5)*(IPA+1)
43416         K(IPA,5)=K(IPA,4)
43417         K(IPA+1,4)=MSTU(5)*IPA
43418         K(IPA+1,5)=K(IPA+1,4)
43419       ENDIF
43420  
43421 C...Check kinematics and store partons/particles in P vectors.
43422       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
43423      &'(PY2ENT:) energy smaller than sum of masses')
43424       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
43425      &(2D0*PECM)
43426       P(IPA,3)=PA
43427       P(IPA,4)=SQRT(PM1**2+PA**2)
43428       P(IPA,5)=PM1
43429       P(IPA+1,3)=-PA
43430       P(IPA+1,4)=SQRT(PM2**2+PA**2)
43431       P(IPA+1,5)=PM2
43432  
43433 C...Set N. Optionally fragment/decay.
43434       N=IPA+1
43435       IF(IP.EQ.0) CALL PYEXEC
43436  
43437       RETURN
43438       END
43439  
43440 C*********************************************************************
43441  
43442 C...PY3ENT
43443 C...Stores three partons or particles in their CM frame,
43444 C...with the first along the +z axis and the third in the (x,z)
43445 C...plane with x > 0.
43446  
43447       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
43448  
43449 C...Double precision and integer declarations.
43450       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43451       IMPLICIT INTEGER(I-N)
43452       INTEGER PYK,PYCHGE,PYCOMP
43453 C...Commonblocks.
43454       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43455       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43456       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43457       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43458  
43459 C...Standard checks.
43460       MSTU(28)=0
43461       IF(MSTU(12).GE.1) CALL PYLIST(0)
43462       IPA=MAX(1,IABS(IP))
43463       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
43464      &'(PY3ENT:) writing outside PYJETS memory')
43465       KC1=PYCOMP(KF1)
43466       KC2=PYCOMP(KF2)
43467       KC3=PYCOMP(KF3)
43468       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
43469      &'(PY3ENT:) unknown flavour code')
43470  
43471 C...Find masses. Reset K, P and V vectors.
43472       PM1=0D0
43473       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43474       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43475       PM2=0D0
43476       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43477       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43478       PM3=0D0
43479       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
43480       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
43481       DO 110 I=IPA,IPA+2
43482         DO 100 J=1,5
43483           K(I,J)=0
43484           P(I,J)=0D0
43485           V(I,J)=0D0
43486   100   CONTINUE
43487   110 CONTINUE
43488  
43489 C...Check flavours.
43490       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43491       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43492       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
43493       IF(MSTU(19).EQ.1) THEN
43494         MSTU(19)=0
43495       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
43496       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
43497      &  KQ1+KQ3.EQ.4)) THEN
43498       ELSE
43499         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
43500       ENDIF
43501       K(IPA,2)=KF1
43502       K(IPA+1,2)=KF2
43503       K(IPA+2,2)=KF3
43504  
43505 C...Store partons/particles in K vectors for normal case.
43506       IF(IP.GE.0) THEN
43507         K(IPA,1)=1
43508         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
43509         K(IPA+1,1)=1
43510         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
43511         K(IPA+2,1)=1
43512  
43513 C...Store partons in K vectors for parton shower evolution.
43514       ELSE
43515         K(IPA,1)=3
43516         K(IPA+1,1)=3
43517         K(IPA+2,1)=3
43518         KCS=4
43519         IF(KQ1.EQ.-1) KCS=5
43520         K(IPA,KCS)=MSTU(5)*(IPA+1)
43521         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
43522         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
43523         K(IPA+1,9-KCS)=MSTU(5)*IPA
43524         K(IPA+2,KCS)=MSTU(5)*IPA
43525         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
43526       ENDIF
43527  
43528 C...Check kinematics.
43529       MKERR=0
43530       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
43531      &0.5D0*X3*PECM.LE.PM3) MKERR=1
43532       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
43533       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
43534       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
43535       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
43536       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
43537       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
43538       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
43539       IF(MKERR.NE.0) CALL PYERRM(13,
43540      &'(PY3ENT:) unphysical kinematical variable setup')
43541  
43542 C...Store partons/particles in P vectors.
43543       P(IPA,3)=PA1
43544       P(IPA,4)=SQRT(PA1**2+PM1**2)
43545       P(IPA,5)=PM1
43546       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
43547       P(IPA+2,3)=PA3*CTHE3
43548       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
43549       P(IPA+2,5)=PM3
43550       P(IPA+1,1)=-P(IPA+2,1)
43551       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
43552       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
43553       P(IPA+1,5)=PM2
43554  
43555 C...Set N. Optionally fragment/decay.
43556       N=IPA+2
43557       IF(IP.EQ.0) CALL PYEXEC
43558  
43559       RETURN
43560       END
43561  
43562 C*********************************************************************
43563  
43564 C...PY4ENT
43565 C...Stores four partons or particles in their CM frame, with
43566 C...the first along the +z axis, the last in the xz plane with x > 0
43567 C...and the second having y < 0 and y > 0 with equal probability.
43568  
43569       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
43570  
43571 C...Double precision and integer declarations.
43572       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43573       IMPLICIT INTEGER(I-N)
43574       INTEGER PYK,PYCHGE,PYCOMP
43575 C...Commonblocks.
43576       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43577       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43578       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43579       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
43580  
43581 C...Standard checks.
43582       MSTU(28)=0
43583       IF(MSTU(12).GE.1) CALL PYLIST(0)
43584       IPA=MAX(1,IABS(IP))
43585       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
43586      &'(PY4ENT:) writing outside PYJETS momory')
43587       KC1=PYCOMP(KF1)
43588       KC2=PYCOMP(KF2)
43589       KC3=PYCOMP(KF3)
43590       KC4=PYCOMP(KF4)
43591       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
43592      &'(PY4ENT:) unknown flavour code')
43593  
43594 C...Find masses. Reset K, P and V vectors.
43595       PM1=0D0
43596       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
43597       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
43598       PM2=0D0
43599       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
43600       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
43601       PM3=0D0
43602       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
43603       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
43604       PM4=0D0
43605       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
43606       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
43607       DO 110 I=IPA,IPA+3
43608         DO 100 J=1,5
43609           K(I,J)=0
43610           P(I,J)=0D0
43611           V(I,J)=0D0
43612   100   CONTINUE
43613   110 CONTINUE
43614  
43615 C...Check flavours.
43616       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
43617       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
43618       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
43619       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
43620       IF(MSTU(19).EQ.1) THEN
43621         MSTU(19)=0
43622       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
43623       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
43624      &  KQ1+KQ4.EQ.4)) THEN
43625       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
43626      &  THEN
43627       ELSE
43628         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
43629       ENDIF
43630       K(IPA,2)=KF1
43631       K(IPA+1,2)=KF2
43632       K(IPA+2,2)=KF3
43633       K(IPA+3,2)=KF4
43634  
43635 C...Store partons/particles in K vectors for normal case.
43636       IF(IP.GE.0) THEN
43637         K(IPA,1)=1
43638         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
43639         K(IPA+1,1)=1
43640         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
43641      &  K(IPA+1,1)=2
43642         K(IPA+2,1)=1
43643         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
43644         K(IPA+3,1)=1
43645  
43646 C...Store partons for parton shower evolution from q-g-g-qbar or
43647 C...g-g-g-g event.
43648       ELSEIF(KQ1+KQ2.NE.0) THEN
43649         K(IPA,1)=3
43650         K(IPA+1,1)=3
43651         K(IPA+2,1)=3
43652         K(IPA+3,1)=3
43653         KCS=4
43654         IF(KQ1.EQ.-1) KCS=5
43655         K(IPA,KCS)=MSTU(5)*(IPA+1)
43656         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
43657         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
43658         K(IPA+1,9-KCS)=MSTU(5)*IPA
43659         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
43660         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
43661         K(IPA+3,KCS)=MSTU(5)*IPA
43662         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
43663  
43664 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
43665       ELSE
43666         K(IPA,1)=3
43667         K(IPA+1,1)=3
43668         K(IPA+2,1)=3
43669         K(IPA+3,1)=3
43670         K(IPA,4)=MSTU(5)*(IPA+1)
43671         K(IPA,5)=K(IPA,4)
43672         K(IPA+1,4)=MSTU(5)*IPA
43673         K(IPA+1,5)=K(IPA+1,4)
43674         K(IPA+2,4)=MSTU(5)*(IPA+3)
43675         K(IPA+2,5)=K(IPA+2,4)
43676         K(IPA+3,4)=MSTU(5)*(IPA+2)
43677         K(IPA+3,5)=K(IPA+3,4)
43678       ENDIF
43679  
43680 C...Check kinematics.
43681       MKERR=0
43682       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
43683      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
43684      &MKERR=1
43685       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
43686       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
43687       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
43688       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
43689       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
43690       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
43691       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
43692       STHE4=SQRT(1D0-CTHE4**2)
43693       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
43694       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
43695       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
43696       STHE2=SQRT(1D0-CTHE2**2)
43697       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
43698      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
43699       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
43700       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
43701       IF(MKERR.EQ.1) CALL PYERRM(13,
43702      &'(PY4ENT:) unphysical kinematical variable setup')
43703  
43704 C...Store partons/particles in P vectors.
43705       P(IPA,3)=PA1
43706       P(IPA,4)=SQRT(PA1**2+PM1**2)
43707       P(IPA,5)=PM1
43708       P(IPA+3,1)=PA4*STHE4
43709       P(IPA+3,3)=PA4*CTHE4
43710       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
43711       P(IPA+3,5)=PM4
43712       P(IPA+1,1)=PA2*STHE2*CPHI2
43713       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
43714       P(IPA+1,3)=PA2*CTHE2
43715       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
43716       P(IPA+1,5)=PM2
43717       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
43718       P(IPA+2,2)=-P(IPA+1,2)
43719       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
43720       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
43721       P(IPA+2,5)=PM3
43722  
43723 C...Set N. Optionally fragment/decay.
43724       N=IPA+3
43725       IF(IP.EQ.0) CALL PYEXEC
43726  
43727       RETURN
43728       END
43729  
43730 C*********************************************************************
43731  
43732 C...PY2FRM
43733 C...An interface from a two-fermion generator to include
43734 C...parton showers and hadronization.
43735  
43736       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
43737  
43738 C...Double precision and integer declarations.
43739       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43740       IMPLICIT INTEGER(I-N)
43741       INTEGER PYK,PYCHGE,PYCOMP
43742 C...Commonblocks.
43743       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43744       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43745       SAVE /PYJETS/,/PYDAT1/
43746 C...Local arrays.
43747       DIMENSION IJOIN(2),INTAU(2)
43748  
43749 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
43750       IF(ICOM.EQ.0) THEN
43751         MSTU(28)=0
43752         CALL PYHEPC(2)
43753       ENDIF
43754  
43755 C...Loop through entries and pick up all final fermions/antifermions.
43756       I1=0
43757       I2=0
43758       DO 100 I=1,N
43759       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
43760       KFA=IABS(K(I,2))
43761       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
43762         IF(K(I,2).GT.0) THEN
43763           IF(I1.EQ.0) THEN
43764             I1=I
43765           ELSE
43766             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
43767           ENDIF
43768         ELSE
43769           IF(I2.EQ.0) THEN
43770             I2=I
43771           ELSE
43772             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
43773           ENDIF
43774         ENDIF
43775       ENDIF
43776   100 CONTINUE
43777  
43778 C...Check that event is arranged according to conventions.
43779       IF(I1.EQ.0.OR.I2.EQ.0) THEN
43780         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
43781       ENDIF
43782       IF(I2.LT.I1) THEN
43783         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
43784       ENDIF
43785  
43786 C...Check whether fermion pair is quarks or leptons.
43787       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
43788         IQL12=1
43789       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
43790         IQL12=2
43791       ELSE
43792         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
43793       ENDIF
43794  
43795 C...Decide whether to allow or not photon radiation in showers.
43796       MSTJ(41)=2
43797       IF(IRAD.EQ.0) MSTJ(41)=1
43798  
43799 C...Do colour joining and parton showers.
43800       IP1=I1
43801       IP2=I2
43802       IF(IQL12.EQ.1) THEN
43803         IJOIN(1)=IP1
43804         IJOIN(2)=IP2
43805         CALL PYJOIN(2,IJOIN)
43806       ENDIF
43807       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
43808         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
43809      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
43810         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
43811       ENDIF
43812  
43813 C...Do fragmentation and decays. Possibly except tau decay.
43814       IF(ITAU.EQ.0) THEN
43815         NTAU=0
43816         DO 110 I=1,N
43817         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
43818           NTAU=NTAU+1
43819           INTAU(NTAU)=I
43820           K(I,1)=11
43821         ENDIF
43822   110   CONTINUE
43823       ENDIF
43824       CALL PYEXEC
43825       IF(ITAU.EQ.0) THEN
43826         DO 120 I=1,NTAU
43827         K(INTAU(I),1)=1
43828   120   CONTINUE
43829       ENDIF
43830  
43831 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
43832       IF(ICOM.EQ.0) THEN
43833         MSTU(28)=0
43834         CALL PYHEPC(1)
43835       ENDIF
43836  
43837       END
43838  
43839 C*********************************************************************
43840  
43841 C...PY4FRM
43842 C...An interface from a four-fermion generator to include
43843 C...parton showers and hadronization.
43844  
43845       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
43846  
43847 C...Double precision and integer declarations.
43848       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43849       IMPLICIT INTEGER(I-N)
43850       INTEGER PYK,PYCHGE,PYCOMP
43851 C...Commonblocks.
43852       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
43853       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43854       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43855       COMMON/PYINT1/MINT(400),VINT(400)
43856       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
43857 C...Local arrays.
43858       DIMENSION IJOIN(2),INTAU(4)
43859  
43860 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
43861       IF(ICOM.EQ.0) THEN
43862         MSTU(28)=0
43863         CALL PYHEPC(2)
43864       ENDIF
43865  
43866 C...Loop through entries and pick up all final fermions/antifermions.
43867       I1=0
43868       I2=0
43869       I3=0
43870       I4=0
43871       DO 100 I=1,N
43872       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
43873       KFA=IABS(K(I,2))
43874       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
43875         IF(K(I,2).GT.0) THEN
43876           IF(I1.EQ.0) THEN
43877             I1=I
43878           ELSEIF(I3.EQ.0) THEN
43879             I3=I
43880           ELSE
43881             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
43882           ENDIF
43883         ELSE
43884           IF(I2.EQ.0) THEN
43885             I2=I
43886           ELSEIF(I4.EQ.0) THEN
43887             I4=I
43888           ELSE
43889             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
43890           ENDIF
43891         ENDIF
43892       ENDIF
43893   100 CONTINUE
43894  
43895 C...Check that event is arranged according to conventions.
43896       IF(I3.EQ.0.OR.I4.EQ.0) THEN
43897         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
43898       ENDIF
43899       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
43900         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
43901       ENDIF
43902  
43903 C...Check which fermion pairs are quarks and which leptons.
43904       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
43905         IQL12=1
43906       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
43907         IQL12=2
43908       ELSE
43909         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
43910       ENDIF
43911       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
43912         IQL34=1
43913       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
43914         IQL34=2
43915       ELSE
43916         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
43917       ENDIF
43918  
43919 C...Decide whether to allow or not photon radiation in showers.
43920       MSTJ(41)=2
43921       IF(IRAD.EQ.0) MSTJ(41)=1
43922  
43923 C...Decide on dipole pairing.
43924       IP1=I1
43925       IP2=I2
43926       IP3=I3
43927       IP4=I4
43928       IF(IQL12.EQ.IQL34) THEN
43929         R1SQ=A1SQ
43930         R2SQ=A2SQ
43931         DELTA=ATOTSQ-A1SQ-A2SQ
43932         IF(ISTRAT.EQ.1) THEN
43933           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
43934           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
43935         ELSEIF(ISTRAT.EQ.2) THEN
43936           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
43937           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
43938         ENDIF
43939         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
43940           IP2=I4
43941           IP4=I2
43942         ENDIF
43943       ENDIF
43944  
43945 C...If colour reconnection then bookkeep W+W- or Z0Z0
43946 C...and copy q qbar q qbar consecutively.
43947       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
43948         K(N+1,1)=11
43949         K(N+1,3)=IP1
43950         K(N+1,4)=N+3
43951         K(N+1,5)=N+4
43952         K(N+2,1)=11
43953         K(N+2,3)=IP3
43954         K(N+2,4)=N+5
43955         K(N+2,5)=N+6
43956         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
43957           K(N+1,2)=23
43958           K(N+2,2)=23
43959           MINT(1)=22
43960         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
43961           K(N+1,2)=24
43962           K(N+2,2)=-24
43963           MINT(1)=25
43964         ELSE
43965           K(N+1,2)=-24
43966           K(N+2,2)=24
43967           MINT(1)=25
43968         ENDIF
43969         DO 110 J=1,5
43970           K(N+3,J)=K(IP1,J)
43971           K(N+4,J)=K(IP2,J)
43972           K(N+5,J)=K(IP3,J)
43973           K(N+6,J)=K(IP4,J)
43974           P(N+1,J)=P(IP1,J)+P(IP2,J)
43975           P(N+2,J)=P(IP3,J)+P(IP4,J)
43976           P(N+3,J)=P(IP1,J)
43977           P(N+4,J)=P(IP2,J)
43978           P(N+5,J)=P(IP3,J)
43979           P(N+6,J)=P(IP4,J)
43980           V(N+1,J)=V(IP1,J)
43981           V(N+2,J)=V(IP3,J)
43982           V(N+3,J)=V(IP1,J)
43983           V(N+4,J)=V(IP2,J)
43984           V(N+5,J)=V(IP3,J)
43985           V(N+6,J)=V(IP4,J)
43986   110   CONTINUE
43987         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
43988      &  P(N+1,3)**2))
43989         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
43990      &  P(N+2,3)**2))
43991         K(N+3,3)=N+1
43992         K(N+4,3)=N+1
43993         K(N+5,3)=N+2
43994         K(N+6,3)=N+2
43995 C...Remove original q qbar q qbar and update counters.
43996         K(IP1,1)=K(IP1,1)+10
43997         K(IP2,1)=K(IP2,1)+10
43998         K(IP3,1)=K(IP3,1)+10
43999         K(IP4,1)=K(IP4,1)+10
44000         IW1=N+1
44001         IW2=N+2
44002         NSD1=N+2
44003         IP1=N+3
44004         IP2=N+4
44005         IP3=N+5
44006         IP4=N+6
44007         N=N+6
44008       ENDIF
44009  
44010 C...Do colour joinings and parton showers.
44011       IF(IQL12.EQ.1) THEN
44012         IJOIN(1)=IP1
44013         IJOIN(2)=IP2
44014         CALL PYJOIN(2,IJOIN)
44015       ENDIF
44016       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
44017         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
44018      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
44019         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
44020       ENDIF
44021       NAFT1=N
44022       IF(IQL34.EQ.1) THEN
44023         IJOIN(1)=IP3
44024         IJOIN(2)=IP4
44025         CALL PYJOIN(2,IJOIN)
44026       ENDIF
44027       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
44028         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
44029      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
44030         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
44031       ENDIF
44032  
44033 C...Optionally do colour reconnection.
44034       MINT(32)=0
44035       MSTI(32)=0
44036       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
44037         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
44038         MSTI(32)=MINT(32)
44039       ENDIF
44040  
44041 C...Do fragmentation and decays. Possibly except tau decay.
44042       IF(ITAU.EQ.0) THEN
44043         NTAU=0
44044         DO 120 I=1,N
44045         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
44046           NTAU=NTAU+1
44047           INTAU(NTAU)=I
44048           K(I,1)=11
44049         ENDIF
44050   120   CONTINUE
44051       ENDIF
44052       CALL PYEXEC
44053       IF(ITAU.EQ.0) THEN
44054         DO 130 I=1,NTAU
44055         K(INTAU(I),1)=1
44056   130   CONTINUE
44057       ENDIF
44058  
44059 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44060       IF(ICOM.EQ.0) THEN
44061         MSTU(28)=0
44062         CALL PYHEPC(1)
44063       ENDIF
44064  
44065       END
44066  
44067 C*********************************************************************
44068  
44069 C...PY6FRM
44070 C...An interface from a six-fermion generator to include
44071 C...parton showers and hadronization.
44072  
44073       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
44074  
44075 C...Double precision and integer declarations.
44076       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44077       IMPLICIT INTEGER(I-N)
44078       INTEGER PYK,PYCHGE,PYCOMP
44079 C...Commonblocks.
44080       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44081       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44082       SAVE /PYJETS/,/PYDAT1/
44083 C...Local arrays.
44084       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
44085  
44086 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
44087       IF(ICOM.EQ.0) THEN
44088         MSTU(28)=0
44089         CALL PYHEPC(2)
44090       ENDIF
44091  
44092 C...Loop through entries and pick up all final fermions/antifermions.
44093       I1=0
44094       I2=0
44095       I3=0
44096       I4=0
44097       I5=0
44098       I6=0
44099       DO 100 I=1,N
44100       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
44101       KFA=IABS(K(I,2))
44102       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
44103         IF(K(I,2).GT.0) THEN
44104           IF(I1.EQ.0) THEN
44105             I1=I
44106           ELSEIF(I3.EQ.0) THEN
44107             I3=I
44108           ELSEIF(I5.EQ.0) THEN
44109             I5=I
44110           ELSE
44111             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
44112           ENDIF
44113         ELSE
44114           IF(I2.EQ.0) THEN
44115             I2=I
44116           ELSEIF(I4.EQ.0) THEN
44117             I4=I
44118           ELSEIF(I6.EQ.0) THEN
44119             I6=I
44120           ELSE
44121             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
44122           ENDIF
44123         ENDIF
44124       ENDIF
44125   100 CONTINUE
44126  
44127 C...Check that event is arranged according to conventions.
44128       IF(I5.EQ.0.OR.I6.EQ.0) THEN
44129         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
44130       ENDIF
44131       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
44132         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
44133       ENDIF
44134  
44135 C...Check which fermion pairs are quarks and which leptons.
44136       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
44137         IQL12=1
44138       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
44139         IQL12=2
44140       ELSE
44141         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
44142       ENDIF
44143       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
44144         IQL34=1
44145       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
44146         IQL34=2
44147       ELSE
44148         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
44149       ENDIF
44150       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
44151         IQL56=1
44152       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
44153         IQL56=2
44154       ELSE
44155         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
44156       ENDIF
44157  
44158 C...Decide whether to allow or not photon radiation in showers.
44159       MSTJ(41)=2
44160       IF(IRAD.EQ.0) MSTJ(41)=1
44161  
44162 C...Allow dipole pairings only among leptons and quarks separately.
44163       P12D=P12
44164       P13D=0D0
44165       IF(IQL34.EQ.IQL56) P13D=P13
44166       P21D=0D0
44167       IF(IQL12.EQ.IQL34) P21D=P21
44168       P23D=0D0
44169       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
44170       P31D=0D0
44171       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
44172       P32D=0D0
44173       IF(IQL12.EQ.IQL56) P32D=P32
44174  
44175 C...Decide whether t+tbar.
44176       ITOP=0
44177       IF(PYR(0).LT.PTOP) THEN
44178         ITOP=1
44179  
44180 C...If t+tbar: reconstruct t's.
44181         IT=N+1
44182         ITB=N+2
44183         DO 110 J=1,5
44184           K(IT,J)=0
44185           K(ITB,J)=0
44186           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
44187           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
44188           V(IT,J)=0D0
44189           V(ITB,J)=0D0
44190   110   CONTINUE
44191         K(IT,1)=1
44192         K(ITB,1)=1
44193         K(IT,2)=6
44194         K(ITB,2)=-6
44195         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
44196      &  P(IT,3)**2))
44197         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
44198      &  P(ITB,3)**2))
44199         N=N+2
44200  
44201 C...If t+tbar: colour join t's and let them shower.
44202         IJOIN(1)=IT
44203         IJOIN(2)=ITB
44204         CALL PYJOIN(2,IJOIN)
44205         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
44206      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
44207         CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
44208  
44209 C...If t+tbar: pick up the t's after shower.
44210         ITNEW=IT
44211         ITBNEW=ITB
44212         DO 120 I=ITB+1,N
44213           IF(K(I,2).EQ.6) ITNEW=I
44214           IF(K(I,2).EQ.-6) ITBNEW=I
44215   120   CONTINUE
44216  
44217 C...If t+tbar: loop over two top systems.
44218         DO 200 IT1=1,2
44219           IF(IT1.EQ.1) THEN
44220             ITO=IT
44221             ITN=ITNEW
44222             IBO=I1
44223             IW1=I3
44224             IW2=I4
44225           ELSE
44226             ITO=ITB
44227             ITN=ITBNEW
44228             IBO=I2
44229             IW1=I5
44230             IW2=I6
44231           ENDIF
44232           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
44233      &    '(PY6FRM:) not b in t decay')
44234  
44235 C...If t+tbar: find boost from original to new top frame.
44236           DO 130 J=1,3
44237             BETAO(J)=P(ITO,J)/P(ITO,4)
44238             BETAN(J)=P(ITN,J)/P(ITN,4)
44239   130     CONTINUE
44240  
44241 C...If t+tbar: boost copy of b by t shower and connect it in colour.
44242           N=N+1
44243           IB=N
44244           K(IB,1)=3
44245           K(IB,2)=K(IBO,2)
44246           K(IB,3)=ITN
44247           DO 140 J=1,5
44248             P(IB,J)=P(IBO,J)
44249             V(IB,J)=0D0
44250   140     CONTINUE
44251           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44252           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44253           K(IB,4)=MSTU(5)*ITN
44254           K(IB,5)=MSTU(5)*ITN
44255           K(ITN,4)=K(ITN,4)+IB
44256           K(ITN,5)=K(ITN,5)+IB
44257           K(ITN,1)=K(ITN,1)+10
44258           K(IBO,1)=K(IBO,1)+10
44259  
44260 C...If t+tbar: construct W recoiling against b.
44261           N=N+1
44262           IW=N
44263           DO 150 J=1,5
44264             K(IW,J)=0
44265             V(IW,J)=0D0
44266   150     CONTINUE
44267           K(IW,1)=1
44268           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
44269           IF(IABS(KCHW).EQ.3) THEN
44270             K(IW,2)=ISIGN(24,KCHW)
44271           ELSE
44272             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
44273           ENDIF
44274           K(IW,3)=IW1
44275  
44276 C...If t+tbar: construct W momentum, including boost by t shower.
44277           DO 160 J=1,4
44278             P(IW,J)=P(IW1,J)+P(IW2,J)
44279   160     CONTINUE
44280           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
44281      &    P(IW,3)**2))
44282           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44283           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44284  
44285 C...If t+tbar: boost b and W to top rest frame.
44286           DO 170 J=1,3
44287             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
44288   170     CONTINUE
44289           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44290           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44291  
44292 C...If t+tbar: let b shower and pick up modified W.
44293           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
44294      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
44295           CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
44296           DO 180 I=IW,N
44297             IF(IABS(K(I,2)).EQ.24) IWM=I
44298   180     CONTINUE
44299  
44300 C...If t+tbar: take copy of W decay products.
44301           DO 190 J=1,5
44302             K(N+1,J)=K(IW1,J)
44303             P(N+1,J)=P(IW1,J)
44304             V(N+1,J)=V(IW1,J)
44305             K(N+2,J)=K(IW2,J)
44306             P(N+2,J)=P(IW2,J)
44307             V(N+2,J)=V(IW2,J)
44308   190     CONTINUE
44309           K(IW1,1)=K(IW1,1)+10
44310           K(IW2,1)=K(IW2,1)+10
44311           K(IWM,1)=K(IWM,1)+10
44312           K(IWM,4)=N+1
44313           K(IWM,5)=N+2
44314           K(N+1,3)=IWM
44315           K(N+2,3)=IWM
44316           IF(IT1.EQ.1) THEN
44317             I3=N+1
44318             I4=N+2
44319           ELSE
44320             I5=N+1
44321             I6=N+2
44322           ENDIF
44323           N=N+2
44324  
44325 C...If t+tbar: boost W decay products, first by effects of t shower,
44326 C...then by those of b shower. b and its shower simple boost back.
44327           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
44328           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
44329           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44330           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
44331      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
44332           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
44333      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
44334           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
44335           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
44336   200   CONTINUE
44337       ENDIF
44338  
44339 C...Decide on dipole pairing.
44340       IP1=I1
44341       IP3=I3
44342       IP5=I5
44343       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
44344       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
44345         IP2=I2
44346         IP4=I4
44347         IP6=I6
44348       ELSEIF(PRN.LT.P12D+P13D) THEN
44349         IP2=I2
44350         IP4=I6
44351         IP6=I4
44352       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
44353         IP2=I4
44354         IP4=I2
44355         IP6=I6
44356       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
44357         IP2=I4
44358         IP4=I6
44359         IP6=I2
44360       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
44361         IP2=I6
44362         IP4=I2
44363         IP6=I4
44364       ELSE
44365         IP2=I6
44366         IP4=I4
44367         IP6=I2
44368       ENDIF
44369  
44370 C...Do colour joinings and parton showers
44371 C...(except ones already made for t+tbar).
44372       IF(ITOP.EQ.0) THEN
44373         IF(IQL12.EQ.1) THEN
44374           IJOIN(1)=IP1
44375           IJOIN(2)=IP2
44376           CALL PYJOIN(2,IJOIN)
44377         ENDIF
44378         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
44379           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
44380      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
44381           CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
44382         ENDIF
44383       ENDIF
44384       IF(IQL34.EQ.1) THEN
44385         IJOIN(1)=IP3
44386         IJOIN(2)=IP4
44387         CALL PYJOIN(2,IJOIN)
44388       ENDIF
44389       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
44390         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
44391      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
44392         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
44393       ENDIF
44394       IF(IQL56.EQ.1) THEN
44395         IJOIN(1)=IP5
44396         IJOIN(2)=IP6
44397         CALL PYJOIN(2,IJOIN)
44398       ENDIF
44399       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
44400         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
44401      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
44402         CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
44403       ENDIF
44404  
44405 C...Do fragmentation and decays. Possibly except tau decay.
44406       IF(ITAU.EQ.0) THEN
44407         NTAU=0
44408         DO 210 I=1,N
44409         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
44410           NTAU=NTAU+1
44411           INTAU(NTAU)=I
44412           K(I,1)=11
44413         ENDIF
44414   210   CONTINUE
44415       ENDIF
44416       CALL PYEXEC
44417       IF(ITAU.EQ.0) THEN
44418         DO 220 I=1,NTAU
44419         K(INTAU(I),1)=1
44420   220   CONTINUE
44421       ENDIF
44422  
44423 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44424       IF(ICOM.EQ.0) THEN
44425         MSTU(28)=0
44426         CALL PYHEPC(1)
44427       ENDIF
44428  
44429       END
44430  
44431 C*********************************************************************
44432  
44433 C...PY4JET
44434 C...An interface from a four-parton generator to include
44435 C...parton showers and hadronization.
44436  
44437       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
44438  
44439 C...Double precision and integer declarations.
44440       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44441       IMPLICIT INTEGER(I-N)
44442       INTEGER PYK,PYCHGE,PYCOMP
44443 C...Commonblocks.
44444       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44445       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44446       SAVE /PYJETS/,/PYDAT1/
44447 C...Local arrays.
44448       DIMENSION IJOIN(2),PTOT(4),BETA(3)
44449  
44450 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
44451       IF(ICOM.EQ.0) THEN
44452         MSTU(28)=0
44453         CALL PYHEPC(2)
44454       ENDIF
44455  
44456 C...Loop through entries and pick up all final partons.
44457       I1=0
44458       I2=0
44459       I3=0
44460       I4=0
44461       DO 100 I=1,N
44462       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
44463       KFA=IABS(K(I,2))
44464       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
44465         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
44466           IF(I1.EQ.0) THEN
44467             I1=I
44468           ELSEIF(I3.EQ.0) THEN
44469             I3=I
44470           ELSE
44471             CALL PYERRM(16,'(PY4JET:) more than two quarks')
44472           ENDIF
44473         ELSEIF(K(I,2).LT.0) THEN
44474           IF(I2.EQ.0) THEN
44475             I2=I
44476           ELSEIF(I4.EQ.0) THEN
44477             I4=I
44478           ELSE
44479             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
44480           ENDIF
44481         ELSE
44482           IF(I3.EQ.0) THEN
44483             I3=I
44484           ELSEIF(I4.EQ.0) THEN
44485             I4=I
44486           ELSE
44487             CALL PYERRM(16,'(PY4JET:) more than two gluons')
44488           ENDIF
44489         ENDIF
44490       ENDIF
44491   100 CONTINUE
44492  
44493 C...Check that event is arranged according to conventions.
44494       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
44495         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
44496       ENDIF
44497       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
44498         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
44499       ENDIF
44500  
44501 C...Check whether second pair are quarks or gluons.
44502       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
44503         IQG34=1
44504       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
44505         IQG34=2
44506       ELSE
44507         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
44508       ENDIF
44509  
44510 C...Boost partons to their cm frame.
44511       DO 110 J=1,4
44512         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
44513   110 CONTINUE
44514       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
44515       DO 120 J=1,3
44516         BETA(J)=PTOT(J)/PTOT(4)
44517   120 CONTINUE
44518       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44519       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44520       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44521       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
44522       NSAV=N
44523  
44524 C...Decide and set up shower history for q qbar q' qbar' events.
44525       IF(IQG34.EQ.1) THEN
44526         W1=PY4JTW(0,I1,I3,I4)
44527         W2=PY4JTW(0,I2,I3,I4)
44528         IF(W1.GT.PYR(0)*(W1+W2)) THEN
44529           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
44530         ELSE
44531           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
44532         ENDIF
44533  
44534 C...Decide and set up shower history for q qbar g g events.
44535       ELSE
44536         W1=PY4JTW(I1,I3,I2,I4)
44537         W2=PY4JTW(I1,I4,I2,I3)
44538         W3=PY4JTW(0,I3,I1,I4)
44539         W4=PY4JTW(0,I4,I1,I3)
44540         W5=PY4JTW(0,I3,I2,I4)
44541         W6=PY4JTW(0,I4,I2,I3)
44542         W7=PY4JTW(0,I1,I3,I4)
44543         W8=PY4JTW(0,I2,I3,I4)
44544         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
44545         IF(W1.GT.WR) THEN
44546           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
44547         ELSEIF(W1+W2.GT.WR) THEN
44548           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
44549         ELSEIF(W1+W2+W3.GT.WR) THEN
44550           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
44551         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
44552           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
44553         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
44554           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
44555         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
44556           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
44557         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
44558           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
44559         ELSE
44560           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
44561         ENDIF
44562       ENDIF
44563  
44564 C...Boost back original partons and mark them as deleted.
44565       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
44566       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
44567       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
44568       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
44569       K(I1,1)=K(I1,1)+10
44570       K(I2,1)=K(I2,1)+10
44571       K(I3,1)=K(I3,1)+10
44572       K(I4,1)=K(I4,1)+10
44573  
44574 C...Rotate shower initiating partons to be along z axis.
44575       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
44576       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
44577       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
44578       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
44579  
44580 C...Set up copy of shower initiating partons as on mass shell.
44581       DO 140 I=N+1,N+2
44582         DO 130 J=1,5
44583           K(I,J)=0
44584           P(I,J)=0D0
44585           V(I,J)=V(I1,J)
44586   130   CONTINUE
44587         K(I,1)=1
44588         K(I,2)=K(I-6,2)
44589   140 CONTINUE
44590       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
44591         K(N+1,3)=I1
44592         P(N+1,5)=P(I1,5)
44593         K(N+2,3)=I2
44594         P(N+2,5)=P(I2,5)
44595       ELSE
44596         K(N+1,3)=I2
44597         P(N+1,5)=P(I2,5)
44598         K(N+2,3)=I1
44599         P(N+2,5)=P(I1,5)
44600       ENDIF
44601       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
44602      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
44603       P(N+1,3)=PABS
44604       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
44605       P(N+2,3)=-PABS
44606       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
44607       N=N+2
44608  
44609 C...Decide whether to allow or not photon radiation in showers.
44610 C...Connect up colours.
44611       MSTJ(41)=2
44612       IF(IRAD.EQ.0) MSTJ(41)=1
44613       IJOIN(1)=N-1
44614       IJOIN(2)=N
44615       CALL PYJOIN(2,IJOIN)
44616  
44617 C...Decide on maximum virtuality and do parton shower.
44618       IF(PMAX.LT.PARJ(82)) THEN
44619         PQMAX=QMAX
44620       ELSE
44621         PQMAX=PMAX
44622       ENDIF
44623       CALL PYSHOW(NSAV+1,-8,PQMAX)
44624  
44625 C...Rotate and boost back system.
44626       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
44627  
44628 C...Do fragmentation and decays.
44629       CALL PYEXEC
44630  
44631 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
44632       IF(ICOM.EQ.0) THEN
44633         MSTU(28)=0
44634         CALL PYHEPC(1)
44635       ENDIF
44636  
44637       RETURN
44638       END
44639  
44640 C*********************************************************************
44641  
44642 C...PY4JTW
44643 C...Auxiliary to PY4JET, to evaluate weight of configuration.
44644  
44645       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
44646  
44647 C...Double precision and integer declarations.
44648       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44649       IMPLICIT INTEGER(I-N)
44650       INTEGER PYK,PYCHGE,PYCOMP
44651 C...Commonblocks.
44652       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44653       SAVE /PYJETS/
44654  
44655 C...First case: when both original partons radiate.
44656 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
44657       IF(IA1.NE.0) THEN
44658         DO 100 J=1,4
44659           P(N+1,J)=P(IA1,J)+P(IA2,J)
44660           P(N+2,J)=P(IA3,J)+P(IA4,J)
44661   100   CONTINUE
44662         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44663      &  P(N+1,3)**2))
44664         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44665      &  P(N+2,3)**2))
44666         Z1=P(IA1,4)/P(N+1,4)
44667         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
44668         Z2=P(IA3,4)/P(N+2,4)
44669         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
44670  
44671 C...Second case: when one original parton radiates to three.
44672 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
44673       ELSE
44674         DO 110 J=1,4
44675           P(N+2,J)=P(IA3,J)+P(IA4,J)
44676           P(N+1,J)=P(N+2,J)+P(IA2,J)
44677   110   CONTINUE
44678         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44679      &  P(N+1,3)**2))
44680         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44681      &  P(N+2,3)**2))
44682         IF(K(IA2,2).EQ.21) THEN
44683           Z1=P(N+2,4)/P(N+1,4)
44684           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
44685      &    P(IA3,5)**2)
44686         ELSE
44687           Z1=P(IA2,4)/P(N+1,4)
44688           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
44689      &    P(IA2,5)**2)
44690         ENDIF
44691         Z2=P(IA3,4)/P(N+2,4)
44692         IF(K(IA2,2).EQ.21) THEN
44693           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
44694      &    P(IA3,5)**2)
44695         ELSEIF(K(IA3,2).EQ.21) THEN
44696           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
44697         ELSE
44698           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
44699         ENDIF
44700       ENDIF
44701  
44702 C...Total weight.
44703       PY4JTW=WT1*WT2
44704  
44705       RETURN
44706       END
44707  
44708 C*********************************************************************
44709  
44710 C...PY4JTS
44711 C...Auxiliary to PY4JET, to set up chosen configuration.
44712  
44713       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
44714  
44715 C...Double precision and integer declarations.
44716       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44717       IMPLICIT INTEGER(I-N)
44718       INTEGER PYK,PYCHGE,PYCOMP
44719 C...Commonblocks.
44720       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44721       SAVE /PYJETS/
44722  
44723 C...Reset info.
44724       DO 110 I=N+1,N+6
44725         DO 100 J=1,5
44726           K(I,J)=0
44727           V(I,J)=V(IA2,J)
44728   100   CONTINUE
44729         K(I,1)=16
44730   110 CONTINUE
44731  
44732 C...First case: when both original partons radiate.
44733 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
44734       IF(IA1.NE.0) THEN
44735  
44736 C...Set up flavour and history pointers for new partons.
44737         K(N+1,2)=K(IA1,2)
44738         K(N+2,2)=K(IA3,2)
44739         K(N+3,2)=K(IA1,2)
44740         K(N+4,2)=K(IA2,2)
44741         K(N+5,2)=K(IA3,2)
44742         K(N+6,2)=K(IA4,2)
44743         K(N+1,3)=IA1
44744         K(N+1,4)=N+3
44745         K(N+1,5)=N+4
44746         K(N+2,3)=IA3
44747         K(N+2,4)=N+5
44748         K(N+2,5)=N+6
44749         K(N+3,3)=N+1
44750         K(N+4,3)=N+1
44751         K(N+5,3)=N+2
44752         K(N+6,3)=N+2
44753  
44754 C...Set up momenta for new partons.
44755         DO 120 J=1,5
44756           P(N+1,J)=P(IA1,J)+P(IA2,J)
44757           P(N+2,J)=P(IA3,J)+P(IA4,J)
44758           P(N+3,J)=P(IA1,J)
44759           P(N+4,J)=P(IA2,J)
44760           P(N+5,J)=P(IA3,J)
44761           P(N+6,J)=P(IA4,J)
44762   120   CONTINUE
44763         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44764      &  P(N+1,3)**2))
44765         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
44766      &  P(N+2,3)**2))
44767         QMAX=MIN(P(N+1,5),P(N+2,5))
44768  
44769 C...Second case: q radiates twice.
44770 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
44771 C...IA5=N+2 does not radiate.
44772       ELSEIF(K(IA2,2).EQ.21) THEN
44773  
44774 C...Set up flavour and history pointers for new partons.
44775         K(N+1,2)=K(IA3,2)
44776         K(N+2,2)=K(IA5,2)
44777         K(N+3,2)=K(IA3,2)
44778         K(N+4,2)=K(IA2,2)
44779         K(N+5,2)=K(IA3,2)
44780         K(N+6,2)=K(IA4,2)
44781         K(N+1,3)=IA3
44782         K(N+1,4)=N+3
44783         K(N+1,5)=N+4
44784         K(N+2,3)=IA5
44785         K(N+3,3)=N+1
44786         K(N+3,4)=N+5
44787         K(N+3,5)=N+6
44788         K(N+4,3)=N+1
44789         K(N+5,3)=N+3
44790         K(N+6,3)=N+3
44791  
44792 C...Set up momenta for new partons.
44793         DO 130 J=1,5
44794           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
44795           P(N+2,J)=P(IA5,J)
44796           P(N+3,J)=P(IA3,J)+P(IA4,J)
44797           P(N+4,J)=P(IA2,J)
44798           P(N+5,J)=P(IA3,J)
44799           P(N+6,J)=P(IA4,J)
44800   130   CONTINUE
44801         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44802      &  P(N+1,3)**2))
44803         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
44804      &  P(N+3,3)**2))
44805         QMAX=P(N+3,5)
44806  
44807 C...Third case: q radiates g, g branches.
44808 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
44809 C...IA5=N+2 does not radiate.
44810       ELSE
44811  
44812 C...Set up flavour and history pointers for new partons.
44813         K(N+1,2)=K(IA2,2)
44814         K(N+2,2)=K(IA5,2)
44815         K(N+3,2)=K(IA2,2)
44816         K(N+4,2)=21
44817         K(N+5,2)=K(IA3,2)
44818         K(N+6,2)=K(IA4,2)
44819         K(N+1,3)=IA2
44820         K(N+1,4)=N+3
44821         K(N+1,5)=N+4
44822         K(N+2,3)=IA5
44823         K(N+3,3)=N+1
44824         K(N+4,3)=N+1
44825         K(N+4,4)=N+5
44826         K(N+4,5)=N+6
44827         K(N+5,3)=N+4
44828         K(N+6,3)=N+4
44829  
44830 C...Set up momenta for new partons.
44831         DO 140 J=1,5
44832           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
44833           P(N+2,J)=P(IA5,J)
44834           P(N+3,J)=P(IA2,J)
44835           P(N+4,J)=P(IA3,J)+P(IA4,J)
44836           P(N+5,J)=P(IA3,J)
44837           P(N+6,J)=P(IA4,J)
44838   140   CONTINUE
44839         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
44840      &  P(N+1,3)**2))
44841         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
44842      &  P(N+4,3)**2))
44843         QMAX=P(N+4,5)
44844  
44845       ENDIF
44846       N=N+6
44847  
44848       RETURN
44849       END
44850  
44851 C*********************************************************************
44852  
44853 C...PYJOIN
44854 C...Connects a sequence of partons with colour flow indices,
44855 C...as required for subsequent shower evolution (or other operations).
44856  
44857       SUBROUTINE PYJOIN(NJOIN,IJOIN)
44858  
44859 C...Double precision and integer declarations.
44860       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44861       IMPLICIT INTEGER(I-N)
44862       INTEGER PYK,PYCHGE,PYCOMP
44863 C...Commonblocks.
44864       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44865       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44866       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44867       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
44868 C...Local array.
44869       DIMENSION IJOIN(*)
44870  
44871 C...Check that partons are of right types to be connected.
44872       IF(NJOIN.LT.2) GOTO 120
44873       KQSUM=0
44874       DO 100 IJN=1,NJOIN
44875         I=IJOIN(IJN)
44876         IF(I.LE.0.OR.I.GT.N) GOTO 120
44877         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
44878         KC=PYCOMP(K(I,2))
44879         IF(KC.EQ.0) GOTO 120
44880         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
44881         IF(KQ.EQ.0) GOTO 120
44882         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
44883         IF(KQ.NE.2) KQSUM=KQSUM+KQ
44884         IF(IJN.EQ.1) KQS=KQ
44885   100 CONTINUE
44886       IF(KQSUM.NE.0) GOTO 120
44887  
44888 C...Connect the partons sequentially (closing for gluon loop).
44889       KCS=(9-KQS)/2
44890       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
44891       DO 110 IJN=1,NJOIN
44892         I=IJOIN(IJN)
44893         K(I,1)=3
44894         IF(IJN.NE.1) IP=IJOIN(IJN-1)
44895         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
44896         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
44897         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
44898         K(I,KCS)=MSTU(5)*IN
44899         K(I,9-KCS)=MSTU(5)*IP
44900         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
44901         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
44902   110 CONTINUE
44903  
44904 C...Error exit: no action taken.
44905       RETURN
44906   120 CALL PYERRM(12,
44907      &'(PYJOIN:) given entries can not be joined by one string')
44908  
44909       RETURN
44910       END
44911  
44912 C*********************************************************************
44913  
44914 C...PYGIVE
44915 C...Sets values of commonblock variables.
44916  
44917       SUBROUTINE PYGIVE(CHIN)
44918  
44919 C...Double precision and integer declarations.
44920       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44921       IMPLICIT INTEGER(I-N)
44922       INTEGER PYK,PYCHGE,PYCOMP
44923 C...Commonblocks.
44924       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
44925       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44926       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44927       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
44928       COMMON/PYDAT4/CHAF(500,2)
44929       CHARACTER CHAF*16
44930       COMMON/PYDATR/MRPY(6),RRPY(100)
44931       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
44932       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
44933       COMMON/PYINT1/MINT(400),VINT(400)
44934       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
44935       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
44936       COMMON/PYINT4/MWID(500),WIDS(500,5)
44937       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
44938       COMMON/PYINT6/PROC(0:500)
44939       CHARACTER PROC*28
44940       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
44941       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
44942      &XPDIR(-6:6)
44943       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44944       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
44945       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
44946       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
44947      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
44948      &/PYINT5/,/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/
44949 C...Local arrays and character variables.
44950       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
44951      &CHNEW2*28,CHNAM*6,CHVAR(54)*6,CHALP(2)*26,CHIND*8,CHINI*10,
44952      &CHINR*16
44953       DIMENSION MSVAR(54,8)
44954  
44955 C...For each variable to be translated give: name,
44956 C...integer/real/character, no. of indices, lower&upper index bounds.
44957       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
44958      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
44959      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
44960      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
44961      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
44962      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
44963      &'ITCM','RTCM'/
44964       DATA ((MSVAR(I,J),J=1,8),I=1,54)/ 1,7*0,  1,2,1,4000,1,5,2*0,
44965      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
44966      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
44967      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
44968      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
44969      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
44970      &1,1,1,6,4*0,  2,1,1,100,4*0,
44971      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
44972      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
44973      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
44974      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
44975      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
44976      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
44977      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
44978      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
44979      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
44980      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
44981      &1,1,0,99,4*0,  2,1,0,99,4*0/
44982       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
44983      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
44984  
44985 C...Length of character variable. Subdivide it into instructions.
44986       IF(MSTU(12).GE.1) CALL PYLIST(0)
44987       CHBIT=CHIN//' '
44988       LBIT=101
44989   100 LBIT=LBIT-1
44990       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
44991       LTOT=0
44992       DO 110 LCOM=1,LBIT
44993         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
44994         LTOT=LTOT+1
44995         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
44996   110 CONTINUE
44997       LLOW=0
44998   120 LHIG=LLOW+1
44999   130 LHIG=LHIG+1
45000       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
45001       LBIT=LHIG-LLOW-1
45002       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
45003  
45004 C...Peel off any text following exclamation mark.
45005       LHIG2=LBIT
45006       DO 140 LLOW2=LHIG2,1,-1
45007         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
45008   140 CONTINUE
45009       IF(LBIT.EQ.0) RETURN
45010  
45011 C...Identify commonblock variable.
45012       LNAM=1
45013   150 LNAM=LNAM+1
45014       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
45015      &LNAM.LE.6) GOTO 150
45016       CHNAM=CHBIT(1:LNAM-1)//' '
45017       DO 170 LCOM=1,LNAM-1
45018         DO 160 LALP=1,26
45019           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
45020      &    CHALP(2)(LALP:LALP)
45021   160   CONTINUE
45022   170 CONTINUE
45023       IVAR=0
45024       DO 180 IV=1,54
45025         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
45026   180 CONTINUE
45027       IF(IVAR.EQ.0) THEN
45028         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
45029         LLOW=LHIG
45030         IF(LLOW.LT.LTOT) GOTO 120
45031         RETURN
45032       ENDIF
45033  
45034 C...Identify any indices.
45035       I1=0
45036       I2=0
45037       I3=0
45038       NINDX=0
45039       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
45040         LIND=LNAM
45041   190   LIND=LIND+1
45042         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
45043         CHIND=' '
45044         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
45045      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
45046      &  IVAR.EQ.37)) THEN
45047           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
45048           READ(CHIND,'(I8)') KF
45049           I1=PYCOMP(KF)
45050         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
45051      &    'c') THEN
45052           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
45053      &    CHNAM)
45054           LLOW=LHIG
45055           IF(LLOW.LT.LTOT) GOTO 120
45056           RETURN
45057         ELSE
45058           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45059           READ(CHIND,'(I8)') I1
45060         ENDIF
45061         LNAM=LIND
45062         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
45063         NINDX=1
45064       ENDIF
45065       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
45066         LIND=LNAM
45067   200   LIND=LIND+1
45068         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
45069         CHIND=' '
45070         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45071         READ(CHIND,'(I8)') I2
45072         LNAM=LIND
45073         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
45074         NINDX=2
45075       ENDIF
45076       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
45077         LIND=LNAM
45078   210   LIND=LIND+1
45079         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
45080         CHIND=' '
45081         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
45082         READ(CHIND,'(I8)') I3
45083         LNAM=LIND+1
45084         NINDX=3
45085       ENDIF
45086  
45087 C...Check that indices allowed.
45088       IERR=0
45089       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
45090       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
45091      &IERR=2
45092       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
45093      &IERR=3
45094       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
45095      &IERR=4
45096       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
45097       IF(IERR.GE.1) THEN
45098         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
45099      &  CHBIT(1:LNAM-1))
45100         LLOW=LHIG
45101         IF(LLOW.LT.LTOT) GOTO 120
45102         RETURN
45103       ENDIF
45104  
45105 C...Save old value of variable.
45106       IF(IVAR.EQ.1) THEN
45107         IOLD=N
45108       ELSEIF(IVAR.EQ.2) THEN
45109         IOLD=K(I1,I2)
45110       ELSEIF(IVAR.EQ.3) THEN
45111         ROLD=P(I1,I2)
45112       ELSEIF(IVAR.EQ.4) THEN
45113         ROLD=V(I1,I2)
45114       ELSEIF(IVAR.EQ.5) THEN
45115         IOLD=MSTU(I1)
45116       ELSEIF(IVAR.EQ.6) THEN
45117         ROLD=PARU(I1)
45118       ELSEIF(IVAR.EQ.7) THEN
45119         IOLD=MSTJ(I1)
45120       ELSEIF(IVAR.EQ.8) THEN
45121         ROLD=PARJ(I1)
45122       ELSEIF(IVAR.EQ.9) THEN
45123         IOLD=KCHG(I1,I2)
45124       ELSEIF(IVAR.EQ.10) THEN
45125         ROLD=PMAS(I1,I2)
45126       ELSEIF(IVAR.EQ.11) THEN
45127         ROLD=PARF(I1)
45128       ELSEIF(IVAR.EQ.12) THEN
45129         ROLD=VCKM(I1,I2)
45130       ELSEIF(IVAR.EQ.13) THEN
45131         IOLD=MDCY(I1,I2)
45132       ELSEIF(IVAR.EQ.14) THEN
45133         IOLD=MDME(I1,I2)
45134       ELSEIF(IVAR.EQ.15) THEN
45135         ROLD=BRAT(I1)
45136       ELSEIF(IVAR.EQ.16) THEN
45137         IOLD=KFDP(I1,I2)
45138       ELSEIF(IVAR.EQ.17) THEN
45139         CHOLD=CHAF(I1,I2)
45140       ELSEIF(IVAR.EQ.18) THEN
45141         IOLD=MRPY(I1)
45142       ELSEIF(IVAR.EQ.19) THEN
45143         ROLD=RRPY(I1)
45144       ELSEIF(IVAR.EQ.20) THEN
45145         IOLD=MSEL
45146       ELSEIF(IVAR.EQ.21) THEN
45147         IOLD=MSUB(I1)
45148       ELSEIF(IVAR.EQ.22) THEN
45149         IOLD=KFIN(I1,I2)
45150       ELSEIF(IVAR.EQ.23) THEN
45151         ROLD=CKIN(I1)
45152       ELSEIF(IVAR.EQ.24) THEN
45153         IOLD=MSTP(I1)
45154       ELSEIF(IVAR.EQ.25) THEN
45155         ROLD=PARP(I1)
45156       ELSEIF(IVAR.EQ.26) THEN
45157         IOLD=MSTI(I1)
45158       ELSEIF(IVAR.EQ.27) THEN
45159         ROLD=PARI(I1)
45160       ELSEIF(IVAR.EQ.28) THEN
45161         IOLD=MINT(I1)
45162       ELSEIF(IVAR.EQ.29) THEN
45163         ROLD=VINT(I1)
45164       ELSEIF(IVAR.EQ.30) THEN
45165         IOLD=ISET(I1)
45166       ELSEIF(IVAR.EQ.31) THEN
45167         IOLD=KFPR(I1,I2)
45168       ELSEIF(IVAR.EQ.32) THEN
45169         ROLD=COEF(I1,I2)
45170       ELSEIF(IVAR.EQ.33) THEN
45171         IOLD=ICOL(I1,I2,I3)
45172       ELSEIF(IVAR.EQ.34) THEN
45173         ROLD=XSFX(I1,I2)
45174       ELSEIF(IVAR.EQ.35) THEN
45175         IOLD=ISIG(I1,I2)
45176       ELSEIF(IVAR.EQ.36) THEN
45177         ROLD=SIGH(I1)
45178       ELSEIF(IVAR.EQ.37) THEN
45179         IOLD=MWID(I1)
45180       ELSEIF(IVAR.EQ.38) THEN
45181         ROLD=WIDS(I1,I2)
45182       ELSEIF(IVAR.EQ.39) THEN
45183         IOLD=NGEN(I1,I2)
45184       ELSEIF(IVAR.EQ.40) THEN
45185         ROLD=XSEC(I1,I2)
45186       ELSEIF(IVAR.EQ.41) THEN
45187         CHOLD2=PROC(I1)
45188       ELSEIF(IVAR.EQ.42) THEN
45189         ROLD=SIGT(I1,I2,I3)
45190       ELSEIF(IVAR.EQ.43) THEN
45191         ROLD=XPVMD(I1)
45192       ELSEIF(IVAR.EQ.44) THEN
45193         ROLD=XPANL(I1)
45194       ELSEIF(IVAR.EQ.45) THEN
45195         ROLD=XPANH(I1)
45196       ELSEIF(IVAR.EQ.46) THEN
45197         ROLD=XPBEH(I1)
45198       ELSEIF(IVAR.EQ.47) THEN
45199         ROLD=XPDIR(I1)
45200       ELSEIF(IVAR.EQ.48) THEN
45201         IOLD=IMSS(I1)
45202       ELSEIF(IVAR.EQ.49) THEN
45203         ROLD=RMSS(I1)
45204       ELSEIF(IVAR.EQ.50) THEN
45205         ROLD=RVLAM(I1,I2,I3)
45206       ELSEIF(IVAR.EQ.51) THEN
45207         ROLD=RVLAMP(I1,I2,I3)
45208       ELSEIF(IVAR.EQ.52) THEN
45209         ROLD=RVLAMB(I1,I2,I3)
45210       ELSEIF(IVAR.EQ.53) THEN
45211         IOLD=ITCM(I1)
45212       ELSEIF(IVAR.EQ.54) THEN
45213         ROLD=RTCM(I1)
45214       ENDIF
45215  
45216 C...Print current value of variable. Loop back.
45217       IF(LNAM.GE.LBIT) THEN
45218         CHBIT(LNAM:14)=' '
45219         CHBIT(15:60)=' has the value                                '
45220         IF(MSVAR(IVAR,1).EQ.1) THEN
45221           WRITE(CHBIT(51:60),'(I10)') IOLD
45222         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45223           WRITE(CHBIT(47:60),'(F14.5)') ROLD
45224         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45225           CHBIT(53:60)=CHOLD
45226         ELSE
45227           CHBIT(33:60)=CHOLD
45228         ENDIF
45229         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45230         LLOW=LHIG
45231         IF(LLOW.LT.LTOT) GOTO 120
45232         RETURN
45233       ENDIF
45234  
45235 C...Read in new variable value.
45236       IF(MSVAR(IVAR,1).EQ.1) THEN
45237         CHINI=' '
45238         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
45239         READ(CHINI,'(I10)') INEW
45240       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45241         CHINR=' '
45242         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
45243         READ(CHINR,*) RNEW
45244       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45245         CHNEW=CHBIT(LNAM+1:LBIT)//' '
45246       ELSE
45247         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
45248       ENDIF
45249  
45250 C...Store new variable value.
45251       IF(IVAR.EQ.1) THEN
45252         N=INEW
45253       ELSEIF(IVAR.EQ.2) THEN
45254         K(I1,I2)=INEW
45255       ELSEIF(IVAR.EQ.3) THEN
45256         P(I1,I2)=RNEW
45257       ELSEIF(IVAR.EQ.4) THEN
45258         V(I1,I2)=RNEW
45259       ELSEIF(IVAR.EQ.5) THEN
45260         MSTU(I1)=INEW
45261       ELSEIF(IVAR.EQ.6) THEN
45262         PARU(I1)=RNEW
45263       ELSEIF(IVAR.EQ.7) THEN
45264         MSTJ(I1)=INEW
45265       ELSEIF(IVAR.EQ.8) THEN
45266         PARJ(I1)=RNEW
45267       ELSEIF(IVAR.EQ.9) THEN
45268         KCHG(I1,I2)=INEW
45269       ELSEIF(IVAR.EQ.10) THEN
45270         PMAS(I1,I2)=RNEW
45271       ELSEIF(IVAR.EQ.11) THEN
45272         PARF(I1)=RNEW
45273       ELSEIF(IVAR.EQ.12) THEN
45274         VCKM(I1,I2)=RNEW
45275       ELSEIF(IVAR.EQ.13) THEN
45276         MDCY(I1,I2)=INEW
45277       ELSEIF(IVAR.EQ.14) THEN
45278         MDME(I1,I2)=INEW
45279       ELSEIF(IVAR.EQ.15) THEN
45280         BRAT(I1)=RNEW
45281       ELSEIF(IVAR.EQ.16) THEN
45282         KFDP(I1,I2)=INEW
45283       ELSEIF(IVAR.EQ.17) THEN
45284         CHAF(I1,I2)=CHNEW
45285       ELSEIF(IVAR.EQ.18) THEN
45286         MRPY(I1)=INEW
45287       ELSEIF(IVAR.EQ.19) THEN
45288         RRPY(I1)=RNEW
45289       ELSEIF(IVAR.EQ.20) THEN
45290         MSEL=INEW
45291       ELSEIF(IVAR.EQ.21) THEN
45292         MSUB(I1)=INEW
45293       ELSEIF(IVAR.EQ.22) THEN
45294         KFIN(I1,I2)=INEW
45295       ELSEIF(IVAR.EQ.23) THEN
45296         CKIN(I1)=RNEW
45297       ELSEIF(IVAR.EQ.24) THEN
45298         MSTP(I1)=INEW
45299       ELSEIF(IVAR.EQ.25) THEN
45300         PARP(I1)=RNEW
45301       ELSEIF(IVAR.EQ.26) THEN
45302         MSTI(I1)=INEW
45303       ELSEIF(IVAR.EQ.27) THEN
45304         PARI(I1)=RNEW
45305       ELSEIF(IVAR.EQ.28) THEN
45306         MINT(I1)=INEW
45307       ELSEIF(IVAR.EQ.29) THEN
45308         VINT(I1)=RNEW
45309       ELSEIF(IVAR.EQ.30) THEN
45310         ISET(I1)=INEW
45311       ELSEIF(IVAR.EQ.31) THEN
45312         KFPR(I1,I2)=INEW
45313       ELSEIF(IVAR.EQ.32) THEN
45314         COEF(I1,I2)=RNEW
45315       ELSEIF(IVAR.EQ.33) THEN
45316         ICOL(I1,I2,I3)=INEW
45317       ELSEIF(IVAR.EQ.34) THEN
45318         XSFX(I1,I2)=RNEW
45319       ELSEIF(IVAR.EQ.35) THEN
45320         ISIG(I1,I2)=INEW
45321       ELSEIF(IVAR.EQ.36) THEN
45322         SIGH(I1)=RNEW
45323       ELSEIF(IVAR.EQ.37) THEN
45324         MWID(I1)=INEW
45325       ELSEIF(IVAR.EQ.38) THEN
45326         WIDS(I1,I2)=RNEW
45327       ELSEIF(IVAR.EQ.39) THEN
45328         NGEN(I1,I2)=INEW
45329       ELSEIF(IVAR.EQ.40) THEN
45330         XSEC(I1,I2)=RNEW
45331       ELSEIF(IVAR.EQ.41) THEN
45332         PROC(I1)=CHNEW2
45333       ELSEIF(IVAR.EQ.42) THEN
45334         SIGT(I1,I2,I3)=RNEW
45335       ELSEIF(IVAR.EQ.43) THEN
45336         XPVMD(I1)=RNEW
45337       ELSEIF(IVAR.EQ.44) THEN
45338         XPANL(I1)=RNEW
45339       ELSEIF(IVAR.EQ.45) THEN
45340         XPANH(I1)=RNEW
45341       ELSEIF(IVAR.EQ.46) THEN
45342         XPBEH(I1)=RNEW
45343       ELSEIF(IVAR.EQ.47) THEN
45344         XPDIR(I1)=RNEW
45345       ELSEIF(IVAR.EQ.48) THEN
45346         IMSS(I1)=INEW
45347       ELSEIF(IVAR.EQ.49) THEN
45348         RMSS(I1)=RNEW
45349       ELSEIF(IVAR.EQ.50) THEN
45350         RVLAM(I1,I2,I3)=RNEW
45351       ELSEIF(IVAR.EQ.51) THEN
45352         RVLAMP(I1,I2,I3)=RNEW
45353       ELSEIF(IVAR.EQ.52) THEN
45354         RVLAMB(I1,I2,I3)=RNEW
45355       ELSEIF(IVAR.EQ.53) THEN
45356         ITCM(I1)=INEW
45357       ELSEIF(IVAR.EQ.54) THEN
45358         RTCM(I1)=RNEW
45359       ENDIF
45360  
45361 C...Write old and new value. Loop back.
45362       CHBIT(LNAM:14)=' '
45363       CHBIT(15:60)=' changed from                to               '
45364       IF(MSVAR(IVAR,1).EQ.1) THEN
45365         WRITE(CHBIT(33:42),'(I10)') IOLD
45366         WRITE(CHBIT(51:60),'(I10)') INEW
45367         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45368       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
45369         WRITE(CHBIT(29:42),'(F14.5)') ROLD
45370         WRITE(CHBIT(47:60),'(F14.5)') RNEW
45371         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45372       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
45373         CHBIT(35:42)=CHOLD
45374         CHBIT(53:60)=CHNEW
45375         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
45376       ELSE
45377         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
45378         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
45379       ENDIF
45380       LLOW=LHIG
45381       IF(LLOW.LT.LTOT) GOTO 120
45382  
45383 C...Format statement for output on unit MSTU(11) (by default 6).
45384  5000 FORMAT(5X,A60)
45385  5100 FORMAT(5X,A88)
45386  
45387       RETURN
45388       END
45389  
45390 C*********************************************************************
45391  
45392 C...PYEXEC
45393 C...Administrates the fragmentation and decay chain.
45394  
45395       SUBROUTINE PYEXEC
45396  
45397 C...Double precision and integer declarations.
45398       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45399       IMPLICIT INTEGER(I-N)
45400       INTEGER PYK,PYCHGE,PYCOMP
45401 C...Commonblocks.
45402       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
45403       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45404       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45405       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45406       COMMON/PYINT4/MWID(500),WIDS(500,5)
45407       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT4/
45408 C...Local array.
45409       DIMENSION PS(2,6),IJOIN(100)
45410  
45411 C...Initialize and reset.
45412       MSTU(24)=0
45413       IF(MSTU(12).GE.1) CALL PYLIST(0)
45414       MSTU(29)=0
45415       MSTU(31)=MSTU(31)+1
45416       MSTU(1)=0
45417       MSTU(2)=0
45418       MSTU(3)=0
45419       IF(MSTU(17).LE.0) MSTU(90)=0
45420       MCONS=1
45421  
45422 C...Sum up momentum, energy and charge for starting entries.
45423       NSAV=N
45424       DO 110 I=1,2
45425         DO 100 J=1,6
45426           PS(I,J)=0D0
45427   100   CONTINUE
45428   110 CONTINUE
45429       DO 130 I=1,N
45430         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
45431         DO 120 J=1,4
45432           PS(1,J)=PS(1,J)+P(I,J)
45433   120   CONTINUE
45434         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
45435   130 CONTINUE
45436       PARU(21)=PS(1,4)
45437  
45438 C...Start by all decays of coloured resonances involved in shower.
45439       NORIG=N
45440       DO 140 I=1,NORIG
45441         IF(K(I,1).EQ.3) THEN
45442           KC=PYCOMP(K(I,2))
45443           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
45444         ENDIF
45445   140 CONTINUE
45446  
45447 C...Prepare system for subsequent fragmentation/decay.
45448       CALL PYPREP(0)
45449  
45450 C...Loop through jet fragmentation and particle decays.
45451       MBE=0
45452   150 MBE=MBE+1
45453       IP=0
45454   160 IP=IP+1
45455       KC=0
45456       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
45457       IF(KC.EQ.0) THEN
45458  
45459 C...Deal with any remaining undecayed resonance
45460 C...(normally the task of PYEVNT, so seldom used).
45461       ELSEIF(MWID(KC).NE.0) THEN
45462         IBEG=IP
45463         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
45464           IBEG=IP+1
45465   170     IBEG=IBEG-1
45466           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
45467           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
45468           IEND=IP-1
45469   180     IEND=IEND+1
45470           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
45471           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
45472           NJOIN=0
45473           DO 190 I=IBEG,IEND
45474             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
45475               NJOIN=NJOIN+1
45476               IJOIN(NJOIN)=I
45477             ENDIF
45478   190     CONTINUE
45479         ENDIF
45480         CALL PYRESD(IP)
45481         CALL PYPREP(IBEG)
45482  
45483 C...Particle decay if unstable and allowed. Save long-lived particle
45484 C...decays until second pass after Bose-Einstein effects.
45485       ELSEIF(KCHG(KC,2).EQ.0) THEN
45486         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
45487      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
45488      &  CALL PYDECY(IP)
45489  
45490 C...Decay products may develop a shower.
45491         IF(MSTJ(92).GT.0) THEN
45492           IP1=MSTJ(92)
45493           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
45494      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
45495           CALL PYSHOW(IP1,IP1+1,QMAX)
45496           CALL PYPREP(IP1)
45497           MSTJ(92)=0
45498         ELSEIF(MSTJ(92).LT.0) THEN
45499           IP1=-MSTJ(92)
45500           CALL PYSHOW(IP1,-3,P(IP,5))
45501           CALL PYPREP(IP1)
45502           MSTJ(92)=0
45503         ENDIF
45504  
45505 C...Jet fragmentation: string or independent fragmentation.
45506       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
45507         MFRAG=MSTJ(1)
45508         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
45509         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
45510           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
45511      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
45512             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
45513           ENDIF
45514         ENDIF
45515         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
45516         IF(MFRAG.EQ.2) CALL PYINDF(IP)
45517         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
45518         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
45519       ENDIF
45520  
45521 C...Loop back if enough space left in PYJETS and no error abort.
45522       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
45523       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
45524         GOTO 160
45525       ELSEIF(IP.LT.N) THEN
45526         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
45527       ENDIF
45528  
45529 C...Include simple Bose-Einstein effect parametrization if desired.
45530       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
45531         CALL PYBOEI(NSAV)
45532         GOTO 150
45533       ENDIF
45534  
45535 C...Check that momentum, energy and charge were conserved.
45536       DO 210 I=1,N
45537         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
45538         DO 200 J=1,4
45539           PS(2,J)=PS(2,J)+P(I,J)
45540   200   CONTINUE
45541         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
45542   210 CONTINUE
45543       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
45544      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
45545       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
45546      &'(PYEXEC:) four-momentum was not conserved')
45547       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
45548      &'(PYEXEC:) charge was not conserved')
45549  
45550       RETURN
45551       END
45552  
45553 C*********************************************************************
45554  
45555 C...PYPREP
45556 C...Rearranges partons along strings.
45557 C...Special considerations for systems with junctions, with
45558 C...possibility of junction-antijunction annihilation.
45559 C...Allows small systems to collapse into one or two particles.
45560 C...Checks flavours and colour singlet invariant masses.
45561  
45562       SUBROUTINE PYPREP(IP)
45563  
45564 C...Double precision and integer declarations.
45565       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45566       INTEGER PYK,PYCHGE,PYCOMP
45567 C...Commonblocks.
45568       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
45569       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45570       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45571       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45572       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
45573 C...Local arrays.
45574       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
45575      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
45576      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
45577      &IJCP(0:6),TJUOLD(5)
45578  
45579 C...Function to give four-product.
45580       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)
45581  
45582 C...Rearrange parton shower product listing along strings: begin loop.
45583       NOLD=N
45584       I1=N
45585       NJUNC=0
45586       NPIECE=0
45587       NJJSTR=0
45588       MSTU32=MSTU(32)+1
45589       DO 170 MQGST=1,3
45590         DO 160 I=MAX(1,IP),N
45591  
45592 C...Special treatment for junctions
45593           IF(K(I,1).EQ.42) THEN
45594 C...First, just store positions
45595             IF (MQGST.EQ.1) THEN
45596               NJUNC=NJUNC+1
45597               IJUNC(NJUNC,0)=I
45598               IJUNC(NJUNC,4)=0
45599 C...Then look for junction-junction strings (not detected in the
45600 C...main search below).
45601             ELSE IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
45602               IF (NJJSTR.EQ.0) THEN
45603                 NJJSTR = (3*NJUNC-NPIECE)/2
45604               ENDIF
45605 C...Check how many already identified strings end on this junction
45606               ILC=0
45607               DO 100 J=1,NPIECE
45608                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
45609   100         CONTINUE
45610 C...If only 2, third one must be to another junction
45611               IF (ILC.EQ.2) THEN
45612 C...The colour information in the junction is unreadable for the
45613 C...colour space search further down in this routine, so we must
45614 C...start on the colour mother of this junction and then "artificially"
45615 C...prevent the colour mother from connecting here again.
45616                 IA=MOD(K(I,4),MSTU(5))
45617                 KCS=4
45618                 IF (MOD(MOD(K(I,4)/MSTU(5),MSTU(5)),2).EQ.1) KCS=5
45619                 K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
45620                 K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
45621                 I1BEG = I1
45622                 NSTP = 0
45623                 GOTO 150
45624               ELSE IF (ILC.NE.3) THEN
45625 C...This could happen if 2 legs of a junction connect to other
45626 C...junctions.
45627                 CALL PYERRM(12,
45628      &          '(PYPREP:) Too many junction-junction strings.')
45629               ENDIF
45630             ENDIF
45631           ENDIF
45632  
45633 C...Look for coloured string endpoint, or (later) leftover gluon.
45634           IF(K(I,1).NE.3) GOTO 160
45635           KC=PYCOMP(K(I,2))
45636           IF(KC.EQ.0) GOTO 160
45637           KQ=KCHG(KC,2)
45638           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 160
45639  
45640 C...Pick up loose string end.
45641           KCS=4
45642           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
45643           IA=I
45644           IB=I
45645           I1BEG=I1
45646           NSTP=0
45647   110     NSTP=NSTP+1
45648           IF(NSTP.GT.4*N) THEN
45649             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
45650             RETURN
45651           ENDIF
45652  
45653 C...Copy undecayed parton. Finished if reached string endpoint.
45654           IF(K(IA,1).EQ.3) THEN
45655             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
45656               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
45657               RETURN
45658             ENDIF
45659             I1=I1+1
45660             K(I1,1)=2
45661             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
45662             K(I1,2)=K(IA,2)
45663             K(I1,3)=IA
45664             K(I1,4)=0
45665             K(I1,5)=0
45666             DO 120 J=1,5
45667               P(I1,J)=P(IA,J)
45668               V(I1,J)=V(IA,J)
45669   120       CONTINUE
45670             K(IA,1)=K(IA,1)+10
45671             IF(K(I1,1).EQ.1) GOTO 160
45672           ENDIF
45673  
45674 C...Also finished (for now) if reached junction; then copy to end.
45675           IF(K(IA,1).EQ.42) THEN
45676             NCOPY=I1-I1BEG
45677             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
45678               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
45679               RETURN
45680             ENDIF
45681             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
45682               DO 140 ICOPY=1,NCOPY
45683                 DO 130 J=1,5
45684                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
45685                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
45686                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
45687   130           CONTINUE
45688   140         CONTINUE
45689             ENDIF
45690             NPIECE=NPIECE+1
45691             IPIECE(NPIECE,0)=I
45692             IPIECE(NPIECE,1)=MSTU32+1
45693             IPIECE(NPIECE,2)=MSTU32+NCOPY
45694             IPIECE(NPIECE,3)=IB
45695             IPIECE(NPIECE,4)=IA
45696             MSTU32=MSTU32+NCOPY
45697             I1=I1BEG
45698             GOTO 160
45699           ENDIF
45700  
45701 C...GOTO next parton in colour space.
45702   150     IB=IA
45703           IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
45704      &    .NE.0) THEN
45705             IA=MOD(K(IB,KCS),MSTU(5))
45706             K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
45707             MREV=0
45708           ELSE
45709             IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
45710      &      MSTU(5)).EQ.0) KCS=9-KCS
45711             IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
45712             K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
45713             MREV=1
45714           ENDIF
45715           IF(IA.LE.0.OR.IA.GT.N) THEN
45716             CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
45717             RETURN
45718           ENDIF
45719           IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
45720      &    MSTU(5)).EQ.IB) THEN
45721             IF(MREV.EQ.1) KCS=9-KCS
45722             IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
45723             K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
45724           ELSE
45725             IF(MREV.EQ.0) KCS=9-KCS
45726             IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
45727             K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
45728           ENDIF
45729           IF(IA.NE.I) GOTO 110
45730           K(I1,1)=1
45731   160   CONTINUE
45732   170 CONTINUE
45733  
45734 C...Junction systems remain.
45735       IJU=0
45736       IJUS=0
45737       IJUCNT=0
45738       MREV=0
45739       IJJSTR=0
45740   180 IJUCNT=IJUCNT+1
45741       IF (IJUCNT.LE.NJUNC) THEN
45742 C...If we are not processing a j-j string, treat this junction as new.
45743         IF (IJJSTR.EQ.0) THEN
45744           IJU=IJUNC(IJUCNT,0)
45745           MREV=0
45746 C...If junction has already been read, ignore it.
45747           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 180
45748 C...If we are on a j-j string, goto second j-j junction.
45749         ELSE
45750           IJUCNT=IJUCNT-1
45751           IJU=IJUS
45752         ENDIF
45753 C...Mark selected junction read.
45754         DO 190 J=1,NJUNC
45755           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
45756   190   CONTINUE
45757  
45758 C...Determine junction type
45759         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
45760 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
45761 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
45762 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
45763         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
45764           IHK=0
45765   200     IHK=IHK+1
45766 C...Find which quarks belong to given junction.
45767           IF(IHK.EQ.1) IEND=MOD(K(IJU,5),MSTU(5))
45768           IF(IHK.EQ.2) IEND=MOD(K(IJU,5)/MSTU(5),MSTU(5))
45769 C...IHK = 3 is special. Either normal string piece, or j-j string.
45770           IF(IHK.EQ.3) THEN
45771             IEND=MOD(K(IJU,4),MSTU(5))
45772             IF (MREV.NE.1) THEN
45773               DO 210 IPC=1,NPIECE
45774 C...If there is a j-j string starting on the present junction which has
45775 C...zero length, insert next junction immediately.
45776                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
45777      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
45778                   IJJSTR = 1
45779                   GOTO 250
45780                 ENDIF
45781   210         CONTINUE
45782               MREV = 1
45783 C...If MREV is 1 and IHK is 3 we are finished with this system.
45784             ELSE
45785               MREV=0
45786               GOTO 180
45787             ENDIF
45788           ENDIF
45789  
45790 C...If we've gotten this far, then either IHK < 3, or
45791 C...an interjunction string exists, or just a third normal string.
45792           IJUNC(IJUCNT,IHK)=0
45793           IJJSTR = 0
45794 C..Order pieces belonging to this junction. Also look for j-j.
45795           DO 220 IPC=1,NPIECE
45796             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
45797             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
45798      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
45799               IJUNC(IJUCNT,IHK)=IPC
45800               IJJSTR = 1
45801               MREV = 0
45802             ENDIF
45803   220     CONTINUE
45804 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
45805           IPC=IJUNC(IJUCNT,IHK)
45806           DO 240 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
45807             I1=I1+1
45808             DO 230 J=1,5
45809               K(I1,J)=K(MSTU(4)-ICP,J)
45810               P(I1,J)=P(MSTU(4)-ICP,J)
45811               V(I1,J)=V(MSTU(4)-ICP,J)
45812   230       CONTINUE
45813   240     CONTINUE
45814           K(I1,1)=2
45815 C...Mark last quark.
45816           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
45817 C...Do not insert junctions at wrong places.
45818           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 270
45819 C...Insert junction.
45820   250     IJUS = IJU
45821           IF (IHK.EQ.3) THEN
45822 C...Shift to end junction if a j-j string has been processed.
45823             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
45824             MREV= 1
45825           ENDIF
45826           I1=I1+1
45827           DO 260 J=1,5
45828             K(I1,J)=0
45829             P(I1,J)=0.
45830             V(I1,J)=0.
45831   260     CONTINUE
45832           K(I1,1)=41
45833           K(IJUS,1)=K(IJUS,1)+10
45834           K(I1,2)=K(IJUS,2)
45835           K(I1,3)=K(IJUS,3)
45836   270     IF (IHK.LT.3) GOTO 200
45837         ELSE
45838           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
45839         ENDIF
45840         IF (IJUCNT.NE.NJUNC) GOTO 180
45841       ENDIF
45842       N=I1
45843  
45844 C...Rearrange three strings from junction, e.g. in case one has been
45845 C...shortened by shower, so the last is the largest-energy one.
45846       IF(NJUNC.GE.1) THEN
45847 C...Find systems with exactly one junction.
45848         MJUN1=0
45849         NBEG=NOLD+1
45850         DO 380 I=NOLD+1,N
45851           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
45852           ELSEIF(K(I,1).EQ.41) THEN
45853             MJUN1=MJUN1+1
45854           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
45855             MJUN1=0
45856             NBEG=I+1
45857           ELSE
45858             NEND=I
45859 C...Sum up energy-momentum in each junction string.
45860             DO 280 J=1,5
45861               PJU(1,J)=0D0
45862               PJU(2,J)=0D0
45863               PJU(3,J)=0D0
45864   280       CONTINUE
45865             NJU=0
45866             DO 300 I1=NBEG,NEND
45867               IF(K(I1,2).NE.21) THEN
45868                 NJU=NJU+1
45869                 IJUR(NJU)=I1
45870               ENDIF
45871               DO 290 J=1,5
45872                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
45873   290         CONTINUE
45874   300       CONTINUE
45875 C...Find which of them has highest energy (minus mass) in rest frame.
45876             DO 310 J=1,5
45877               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
45878   310       CONTINUE
45879             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
45880      &      PJU(4,3)**2))
45881             DO 320 I2=1,3
45882               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
45883      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
45884   320       CONTINUE
45885             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
45886 C...Decide how to rearrange so that new last has highest energy.
45887               IF(PJU(1,6).LT.PJU(2,6)) THEN
45888                 IRNG(1,1)=IJUR(1)
45889                 IRNG(1,2)=IJUR(2)-1
45890                 IRNG(2,1)=IJUR(4)
45891                 IRNG(2,2)=IJUR(3)+1
45892                 IRNG(4,1)=IJUR(3)-1
45893                 IRNG(4,2)=IJUR(2)
45894               ELSE
45895                 IRNG(1,1)=IJUR(4)
45896                 IRNG(1,2)=IJUR(3)+1
45897                 IRNG(2,1)=IJUR(2)
45898                 IRNG(2,2)=IJUR(3)-1
45899                 IRNG(4,1)=IJUR(2)-1
45900                 IRNG(4,2)=IJUR(1)
45901               ENDIF
45902               IRNG(3,1)=IJUR(3)
45903               IRNG(3,2)=IJUR(3)
45904 C...Copy in correct order below bottom of current event record.
45905               I2=N
45906               DO 350 II=1,4
45907                 DO 340 I1=IRNG(II,1),IRNG(II,2),
45908      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
45909                   I2=I2+1
45910                   DO 330 J=1,5
45911                     K(I2,J)=K(I1,J)
45912                     P(I2,J)=P(I1,J)
45913                     V(I2,J)=V(I1,J)
45914   330             CONTINUE
45915                   IF(K(I2,1).EQ.1) K(I2,1)=2
45916   340           CONTINUE
45917   350         CONTINUE
45918               K(I2,1)=1
45919 C...Copy back up, overwriting but now in correct order.
45920               DO 370 I1=NBEG,NEND
45921                 I2=I1-NBEG+N+1
45922                 DO 360 J=1,5
45923                   K(I1,J)=K(I2,J)
45924                   P(I1,J)=P(I2,J)
45925                   V(I1,J)=V(I2,J)
45926   360           CONTINUE
45927   370         CONTINUE
45928             ENDIF
45929             MJUN1=0
45930             NBEG=I+1
45931           ENDIF
45932   380   CONTINUE
45933 C++SKANDS
45934 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
45935 C...to two q-qbar systems.
45936 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
45937         IF (MSTJ(19).NE.1) THEN
45938           MJUN1  = 0
45939           JJGLUE = 0
45940           NBEG   = NOLD+1
45941 C...Force collapse when MSTJ(19)=2.
45942           IF (MSTJ(19).EQ.2) THEN
45943             DELMJJ = 1D9
45944             DELMQQ = 0D0
45945           ENDIF
45946 C...Find systems with exactly two junctions.
45947           DO 610 I=NOLD+1,N
45948 C...Count junctions
45949             IF (K(I,1).EQ.41) THEN
45950               MJUN1 = MJUN1+1
45951 C...Check for interjunction gluons
45952               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
45953                 JJGLUE = 1
45954               ENDIF
45955             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
45956 C...If end of system reached with either zero or one junction, restart
45957 C...with next system.
45958               MJUN1  = 0
45959               JJGLUE = 0
45960               NBEG   = I+1
45961             ELSEIF(K(I,1).EQ.1) THEN
45962 C...If end of system reached with exactly two junctions, compute string
45963 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
45964 C...length measure for the (q-qbar)(q-qbar) topology.
45965               NEND=I
45966 C...Loop down through chain.
45967               ISID=0
45968               DO 390 I1=NBEG,NEND
45969 C...Store string piece division locations in event record
45970                 IF (K(I1,2).NE.21) THEN
45971                   ISID       = ISID+1
45972                   IJCP(ISID) = I1
45973                 ENDIF
45974   390         CONTINUE
45975 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
45976               ISW=0
45977               IF (PYR(0).LT.0.5D0) ISW=1
45978 C...Randomly choose which qqbar string gets the jj gluons.
45979               IGS=1
45980               IF (PYR(0).GT.0.5D0) IGS=2
45981 C...Only compute string lengths when no topology forced.
45982               IF (MSTJ(19).EQ.0) THEN
45983 C...Repeat following for each junction
45984                 DO 480 IJU=1,2
45985 C...Initialize iterative procedure for finding JRF
45986                   IJRFIT=0
45987                   DO 400 IX=1,3
45988                     TJUOLD(IX)=0D0
45989   400             CONTINUE
45990                   TJUOLD(4)=1D0
45991 C...Start iteration. Sum up momenta in string pieces
45992   410             DO 450 IJS=1,3
45993 C...JD=-1 for first junction, +1 for second junction.
45994 C...Find out where piece starts and ends and which direction to go.
45995                     JD=2*IJU-3
45996                     IF (IJS.LE.2) THEN
45997                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
45998                       IB = IJCP((IJU-1)*7 - JD*IJS)
45999                     ELSEIF (IJS.EQ.3) THEN
46000                       JD =-JD
46001                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
46002                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
46003                     ENDIF
46004 C...Initialize junction pull 4-vector.
46005                     DO 420 J=1,5
46006                       PUL(IJS,J)=0D0
46007   420               CONTINUE
46008 C...Initialize weight
46009                     PWT = 0D0
46010                     PWTOLD = 0D0
46011 C...Sum up (weighted) momenta along each string piece
46012                     DO 440 ISP=IA,IB,JD
46013 C...If present parton not last in chain
46014                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
46015 C...If last parton was a junction, store present weight
46016                         IF (K(ISP-JD,2).EQ.88) THEN
46017                           PWTOLD = PWT
46018 C...If last parton was a quark, reset to stored weight.
46019                         ELSEIF (K(ISP-JD,2).NE.21) THEN
46020                           PWT = PWTOLD
46021                         ENDIF
46022                       ENDIF
46023 C...Skip next parton if weight already large
46024                       IF (PWT.GT.10D0) GOTO 440
46025 C...Compute momentum in TJUOLD frame:
46026                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
46027      &                     )*P(ISP,3)
46028                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
46029                       DO 430 J=1,3
46030                         TMP=P(ISP,J)+TJUOLD(J)*BFC
46031                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
46032   430                 CONTINUE
46033 C...Boosted energy
46034                       TMP=TJUOLD(4)*P(ISP,4)+TDP
46035                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
46036 C...Update weight
46037                       PWT=PWT+TMP/PARJ(48)
46038 C...Put |p| rather than m in 5th slot
46039                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
46040      &                     +PUL(IJS,3)**2)
46041   440               CONTINUE
46042   450             CONTINUE
46043 C...Compute boost
46044                   IJRFIT=IJRFIT+1
46045                   CALL PYJURF(PUL,T)
46046 C...Combine new boost (T) with old boost (TJUOLD)
46047                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
46048                   DO 460 IX=1,3
46049                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
46050      &                   ))
46051   460             CONTINUE
46052                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
46053      &                 **2)
46054 C...If last boost small, accept JRF, else iterate.
46055 C...Also prevent possibility of infinite loop.
46056                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
46057      &                 IJRFIT.LT.MSTJ(18))THEN
46058                     GOTO 410
46059                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
46060                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
46061                   ENDIF
46062 C...Store final boost, with change of sign since TJJ motion vector.
46063                   DO 470 IX=1,3
46064                     TJJ(IJU,IX)=-TJUOLD(IX)
46065   470             CONTINUE
46066                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
46067      &                 +TJJ(IJU,3)**2)
46068   480           CONTINUE
46069 C...String length measure for (q-qbar)(q-qbar) topology.
46070 C...Note only momenta of nearest partons used (since rest of system
46071 C...identical).
46072                 IF (JJGLUE.EQ.0) THEN
46073                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
46074      &                 -1,IJCP(5-ISW)+1)
46075                 ELSE
46076 C...Put jj gluons on selected string (IGS selected randomly above).
46077                   IF (IGS.EQ.1) THEN
46078                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
46079      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
46080                   ELSE
46081                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
46082      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
46083      &                   ,IJCP(5-ISW)+1)
46084                   ENDIF
46085                 ENDIF
46086 C...String length measure for q-q-j-j-q-q topology.
46087                 T1G1=0D0
46088                 T2G2=0D0
46089                 T1T2=0D0
46090                 T1P1=0D0
46091                 T1P2=0D0
46092                 T2P3=0D0
46093                 T2P4=0D0
46094                 ISGN=-1
46095 C...Note only momenta of nearest partons used (since rest of system
46096 C...identical).
46097                 DO 490 IX=1,4
46098                   IF (IX.EQ.4) ISGN=1
46099                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
46100                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
46101                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
46102                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
46103                   IF (JJGLUE.EQ.0) THEN
46104 C...Junction motion vector dot product gives length when inter-junction
46105 C...gluons absent.
46106                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
46107                   ELSE
46108 C...Junction motion vector dot products with gluon momenta give length
46109 C...when inter-junction gluons present.
46110                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
46111                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
46112                   ENDIF
46113   490           CONTINUE
46114                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
46115                 IF (JJGLUE.EQ.0) THEN
46116                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
46117                 ELSE
46118                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
46119                 ENDIF
46120               ENDIF
46121 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
46122 C...(Always the case for MSTJ(19)=2 due to initialization above)
46123               IF (DELMJJ.GT.DELMQQ) THEN
46124 C...Put new system at end of event record
46125                 NCOP=N
46126                 DO 560 IST=1,2
46127                   DO 510 ICOP=IJCP(IST),IJCP(IST+1)-1
46128                     NCOP=NCOP+1
46129                     DO 500 IX=1,5
46130                       P(NCOP,IX)=P(ICOP,IX)
46131                       K(NCOP,IX)=K(ICOP,IX)
46132   500               CONTINUE
46133   510             CONTINUE
46134                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
46135 C...Insert inter-junction gluon string piece (reversed)
46136                     NJJGL=0
46137                     DO 530 ICOP=IJCP(4)-1,IJCP(3)+1,-1
46138                       NJJGL=NJJGL+1
46139                       NCOP=NCOP+1
46140                       DO 520 IX=1,5
46141                         P(NCOP,IX)=P(ICOP,IX)
46142                         K(NCOP,IX)=K(ICOP,IX)
46143   520                 CONTINUE
46144   530               CONTINUE
46145                     ENDIF
46146                   IFC=-2*IST+3
46147                   DO 550 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
46148                     NCOP=NCOP+1
46149                     DO 540 IX=1,5
46150                       P(NCOP,IX)=P(ICOP,IX)
46151                       K(NCOP,IX)=K(ICOP,IX)
46152   540               CONTINUE
46153   550             CONTINUE
46154                   K(NCOP,1)=1
46155   560           CONTINUE
46156 C...Copy system back in right order
46157                 DO 580 ICOP=NBEG,NEND-2
46158                   DO 570 IX=1,5
46159                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
46160                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
46161   570             CONTINUE
46162   580           CONTINUE
46163 C...Shift down rest of event record
46164                 DO 600 ICOP=NEND+1,N
46165                   DO 590 IX=1,5
46166                     P(ICOP-2,IX)=P(ICOP,IX)
46167                     K(ICOP-2,IX)=K(ICOP,IX)
46168   590             CONTINUE
46169   600             CONTINUE
46170 C...Update length of event record.
46171                 N=N-2
46172               ENDIF
46173               MJUN1=0
46174               NBEG=I+1
46175             ENDIF
46176   610     CONTINUE
46177         ENDIF
46178       ENDIF
46179  
46180 C...Done if no checks on small-mass systems.
46181       IF(MSTJ(14).LT.0) RETURN
46182       IF(MSTJ(14).EQ.0) GOTO 1050
46183  
46184 C...Find lowest-mass colour singlet jet system.
46185       NS=N
46186   620 NSIN=N-NS
46187       PDMIN=1D0+PARJ(32)
46188       IC=0
46189       DO 680 I=MAX(1,IP),N
46190         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
46191         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
46192           NSIN=NSIN+1
46193           IC=I
46194           DO 630 J=1,4
46195             DPS(J)=P(I,J)
46196   630     CONTINUE
46197           MSTJ(93)=1
46198           DPS(5)=PYMASS(K(I,2))
46199         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
46200           DO 640 J=1,4
46201             DPS(J)=DPS(J)+P(I,J)
46202   640     CONTINUE
46203           MSTJ(93)=1
46204           DPS(5)=DPS(5)+PYMASS(K(I,2))
46205         ELSEIF(K(I,1).EQ.2) THEN
46206           DO 650 J=1,4
46207             DPS(J)=DPS(J)+P(I,J)
46208   650     CONTINUE
46209         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46210           DO 660 J=1,4
46211             DPS(J)=DPS(J)+P(I,J)
46212   660     CONTINUE
46213           MSTJ(93)=1
46214           DPS(5)=DPS(5)+PYMASS(K(I,2))
46215           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
46216      &    DPS(5)
46217           IF(PD.LT.PDMIN) THEN
46218             PDMIN=PD
46219             DO 670 J=1,5
46220               DPC(J)=DPS(J)
46221   670       CONTINUE
46222             IC1=IC
46223             IC2=I
46224           ENDIF
46225           IC=0
46226         ELSE
46227           NSIN=NSIN+1
46228         ENDIF
46229   680 CONTINUE
46230  
46231 C...Done if lowest-mass system above threshold for string frag.
46232       IF(PDMIN.GE.PARJ(32)) GOTO 1050
46233  
46234 C...Fill small-mass system as cluster.
46235       NSAV=N
46236       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
46237       K(N+1,1)=11
46238       K(N+1,2)=91
46239       K(N+1,3)=IC1
46240       P(N+1,1)=DPC(1)
46241       P(N+1,2)=DPC(2)
46242       P(N+1,3)=DPC(3)
46243       P(N+1,4)=DPC(4)
46244       P(N+1,5)=PECM
46245  
46246 C...Set up history, assuming cluster -> 2 hadrons.
46247       NBODY=2
46248       K(N+1,4)=N+2
46249       K(N+1,5)=N+3
46250       K(N+2,1)=1
46251       K(N+3,1)=1
46252       IF(MSTU(16).NE.2) THEN
46253         K(N+2,3)=N+1
46254         K(N+3,3)=N+1
46255       ELSE
46256         K(N+2,3)=IC1
46257         K(N+3,3)=IC2
46258       ENDIF
46259       K(N+2,4)=0
46260       K(N+3,4)=0
46261       K(N+2,5)=0
46262       K(N+3,5)=0
46263       V(N+1,5)=0D0
46264       V(N+2,5)=0D0
46265       V(N+3,5)=0D0
46266  
46267 C...Find total flavour content - complicated by presence of junctions.
46268       NQ=0
46269       NDIQ=0
46270       DO 690 I=IC1,IC2
46271         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
46272           NQ=NQ+1
46273           KFQ(NQ)=K(I,2)
46274           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
46275         ENDIF
46276   690 CONTINUE
46277  
46278 C...If several diquarks, split up one to give even number of flavours.
46279       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
46280         I1=3
46281         IF(IABS(KFQ(3)).LT.1000) I1=1
46282         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
46283         KFQ(I1)=KFQ(I1)/1000
46284         NQ=4
46285         NDIQ=NDIQ-1
46286       ENDIF
46287  
46288 C...If four quark ends, join two to diquark.
46289       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
46290         I1=1
46291         I2=2
46292         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
46293         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
46294         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
46295         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
46296         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
46297      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
46298         KFQ(I2)=KFQ(4)
46299         NQ=3
46300         NDIQ=1
46301       ENDIF
46302  
46303 C...If two quark ends, plus quark or diquark, join quarks to diquark.
46304       IF(NQ.EQ.3) THEN
46305         I1=1
46306         I2=2
46307         IF(IABS(KFQ(I1)).GT.1000) I1=3
46308         IF(IABS(KFQ(I2)).GT.1000) I2=3
46309         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
46310         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
46311         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
46312      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
46313         KFQ(I2)=KFQ(3)
46314         NQ=2
46315         NDIQ=NDIQ+1
46316       ENDIF
46317  
46318 C...Form two particles from flavours of lowest-mass system, if feasible.
46319       NTRY = 0
46320   700 NTRY = NTRY + 1
46321  
46322 C...Open string with two specified endpoint flavours.
46323       IF(NQ.EQ.2) THEN
46324         KC1=PYCOMP(KFQ(1))
46325         KC2=PYCOMP(KFQ(2))
46326         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1050
46327         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
46328         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
46329         IF(KQ1+KQ2.NE.0) GOTO 1050
46330 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
46331   710   K1=KFQ(1)
46332         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
46333         MSTU(125)=0
46334         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
46335         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
46336         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 710
46337  
46338 C...Open string with four specified flavours.
46339       ELSEIF(NQ.EQ.4) THEN
46340         KC1=PYCOMP(KFQ(1))
46341         KC2=PYCOMP(KFQ(2))
46342         KC3=PYCOMP(KFQ(3))
46343         KC4=PYCOMP(KFQ(4))
46344         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1050
46345         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
46346         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
46347         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
46348         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
46349         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1050
46350 C...Combine flavours pairwise to form two hadrons.
46351   720   I1=1
46352         I2=2
46353         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
46354      &  IABS(KFQ(2)).GT.1000)) I2=3
46355         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
46356      &  IABS(KFQ(3)).GT.1000))) I2=4
46357         I3=3
46358         IF(I2.EQ.3) I3=2
46359         I4=10-I1-I2-I3
46360         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
46361         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
46362         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 720
46363  
46364 C...Closed string.
46365       ELSE
46366         IF(IABS(K(IC2,2)).NE.21) GOTO 1050
46367 C...No room for popcorn mesons in closed string -> 2 hadrons.
46368         MSTU(125)=0
46369   730   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
46370         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
46371         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
46372         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 730
46373       ENDIF
46374       P(N+2,5)=PYMASS(K(N+2,2))
46375       P(N+3,5)=PYMASS(K(N+3,2))
46376  
46377 C...If it does not work: try again (a number of times), give up (if no
46378 C...place to shuffle momentum or too many flavours), or form one hadron.
46379       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
46380         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
46381           GOTO 700
46382         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
46383           GOTO 1050
46384         ELSE
46385           GOTO 800
46386         END IF
46387       END IF
46388  
46389 C...Perform two-particle decay of jet system.
46390 C...First step: find reference axis in decaying system rest frame.
46391 C...(Borrow slot N+2 for temporary direction.)
46392       DO 740 J=1,4
46393         P(N+2,J)=P(IC1,J)
46394   740 CONTINUE
46395       DO 760 I=IC1+1,IC2-1
46396         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
46397      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46398           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
46399           DO 750 J=1,4
46400             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
46401   750     CONTINUE
46402         ENDIF
46403   760 CONTINUE
46404       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
46405      &-DPC(3)/DPC(4))
46406       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
46407       PHI1=PYANGL(P(N+2,1),P(N+2,2))
46408  
46409 C...Second step: generate isotropic/anisotropic decay.
46410       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
46411      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
46412   770 UE(3)=PYR(0)
46413       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
46414       PT2=(1D0-UE(3)**2)*PA**2
46415       IF(MSTJ(16).LE.0) THEN
46416         PREV=0.5D0
46417       ELSE
46418         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 770
46419         PR1=P(N+2,5)**2+PT2
46420         PR2=P(N+3,5)**2+PT2
46421         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
46422         PREVCF=PARJ(42)
46423         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
46424         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
46425       ENDIF
46426       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
46427       PHI=PARU(2)*PYR(0)
46428       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
46429       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
46430       DO 780 J=1,3
46431         P(N+2,J)=PA*UE(J)
46432         P(N+3,J)=-PA*UE(J)
46433   780 CONTINUE
46434       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
46435       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
46436  
46437 C...Third step: move back to event frame and set production vertex.
46438       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
46439      &DPC(3)/DPC(4))
46440       DO 790 J=1,4
46441         V(N+1,J)=V(IC1,J)
46442         V(N+2,J)=V(IC1,J)
46443         V(N+3,J)=V(IC2,J)
46444   790 CONTINUE
46445       N=N+3
46446       GOTO 1030
46447  
46448 C...Else form one particle, if possible.
46449   800 NBODY=1
46450       K(N+1,5)=N+2
46451       DO 810 J=1,4
46452         V(N+1,J)=V(IC1,J)
46453         V(N+2,J)=V(IC1,J)
46454   810 CONTINUE
46455  
46456 C...Select hadron flavour from available quark flavours.
46457   820 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
46458         GOTO 1050
46459       ELSEIF(NQ.EQ.2) THEN
46460         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
46461       ELSE
46462         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
46463         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
46464       ENDIF
46465       IF(K(N+2,2).EQ.0) GOTO 820
46466       P(N+2,5)=PYMASS(K(N+2,2))
46467  
46468 C...Use old algorithm for E/p conservation? (EN)
46469       IF (MSTJ(16).LE.0) GOTO 990
46470  
46471 C...Find the string piece closest to the cluster by a loop
46472 C...over the undecayed partons not in present cluster. (EN)
46473       DGLOMI=1D30
46474       IBEG=0
46475       I0=0
46476       NJUNC=0
46477       DO 850 I1=MAX(1,IP),N-1
46478         IF(K(I,1).EQ.1) NJUNC=0
46479         IF(K(I,1).EQ.41) NJUNC=NJUNC+1
46480         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
46481           I0=0
46482         ELSEIF(K(I1,1).EQ.2) THEN
46483           IF(I0.EQ.0) I0=I1
46484           I2=I1
46485   830     I2=I2+1
46486           IF(K(I2,1).EQ.41) GOTO 850
46487           IF(K(I2,1).GT.10) GOTO 830
46488           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 830
46489           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
46490      &    NJUNC.EQ.0) GOTO 850
46491           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 850
46492  
46493 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
46494           DO 840 J=1,3
46495             E1(J)=P(I1,J)/P(I1,4)
46496             E2(J)=P(I2,J)/P(I2,4)
46497             ECL(J)=P(N+1,J)/P(N+1,4)
46498             E3(J)=E2(J)-E1(J)
46499             E4(J)=ECL(J)-E1(J)
46500   840     CONTINUE
46501  
46502 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
46503           E3S=E3(1)**2+E3(2)**2+E3(3)**2
46504           E4S=E4(1)**2+E4(2)**2+E4(3)**2
46505           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
46506           IF(E34.LE.0D0) THEN
46507             DDMIN=E4S
46508           ELSEIF(E34.LT.E3S) THEN
46509             DDMIN=E4S-E34**2/E3S
46510           ELSE
46511             DDMIN=E4S-2D0*E34+E3S
46512           ENDIF
46513  
46514 C...Is this the smallest so far?
46515           IF(DDMIN.LT.DGLOMI) THEN
46516             DGLOMI=DDMIN
46517             IBEG=I0
46518             IPCS=I1
46519           ENDIF
46520         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
46521           I0=0
46522         ENDIF
46523   850 CONTINUE
46524  
46525 C... Check if there are any strings to connect to the new gluon. (EN)
46526       IF (IBEG.EQ.0) GOTO 990
46527  
46528 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
46529       IF (P(N+1,5).GE.P(N+2,5)) THEN
46530  
46531 C...Construct 'gluon' that is needed to put hadron on the mass shell.
46532         FRAC=P(N+2,5)/P(N+1,5)
46533         DO 860 J=1,5
46534           P(N+2,J)=FRAC*P(N+1,J)
46535           PG(J)=(1D0-FRAC)*P(N+1,J)
46536   860   CONTINUE
46537  
46538 C... Copy string with new gluon put in.
46539         N=N+2
46540         I=IBEG-1
46541   870   I=I+1
46542         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 870
46543         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 870
46544         N=N+1
46545         DO 880 J=1,5
46546           K(N,J)=K(I,J)
46547           P(N,J)=P(I,J)
46548           V(N,J)=V(I,J)
46549   880   CONTINUE
46550         K(I,1)=K(I,1)+10
46551         K(I,4)=N
46552         K(I,5)=N
46553         K(N,3)=I
46554         IF(I.EQ.IPCS) THEN
46555           N=N+1
46556           DO 890 J=1,5
46557             K(N,J)=K(N-1,J)
46558             P(N,J)=PG(J)
46559             V(N,J)=V(N-1,J)
46560   890     CONTINUE
46561           K(N,2)=21
46562           K(N,3)=NSAV+1
46563         ENDIF
46564         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 870
46565         GOTO 1030
46566  
46567 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
46568 C...from string piece endpoints.
46569       ELSE
46570  
46571 C...Begin by copying string that should give energy to cluster.
46572         N=N+2
46573         I=IBEG-1
46574   900   I=I+1
46575         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 900
46576         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 900
46577         N=N+1
46578         DO 910 J=1,5
46579           K(N,J)=K(I,J)
46580           P(N,J)=P(I,J)
46581           V(N,J)=V(I,J)
46582   910   CONTINUE
46583         K(I,1)=K(I,1)+10
46584         K(I,4)=N
46585         K(I,5)=N
46586         K(N,3)=I
46587         IF(I.EQ.IPCS) I1=N
46588         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 900
46589         I2=I1+1
46590  
46591 C...Set initial Phad.
46592         DO 920 J=1,4
46593           P(NSAV+2,J)=P(NSAV+1,J)
46594   920   CONTINUE
46595  
46596 C...Calculate Pg, a part of which will be added to Phad later. (EN)
46597   930   IF(MSTJ(16).EQ.1) THEN
46598           ALPHA=1D0
46599           BETA=1D0
46600         ELSE
46601           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
46602           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
46603         ENDIF
46604         DO 940 J=1,4
46605           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
46606   940   CONTINUE
46607         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
46608  
46609 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
46610         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
46611      &  P(NSAV+2,3)**2
46612         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
46613      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
46614         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
46615  
46616 C...If all gluon energy eaten, zero it and take a step back.
46617         ITER=0
46618         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3) THEN
46619           ITER=1
46620           DO 950 J=1,4
46621             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
46622             P(I1,J)=0D0
46623   950     CONTINUE
46624           P(I1,5)=0D0
46625           K(I1,1)=K(I1,1)+10
46626           I1=I1-1
46627           IF(K(I1,1).EQ.41) ITER=-1
46628         ENDIF
46629         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N) THEN
46630           ITER=1
46631           DO 960 J=1,4
46632             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
46633             P(I2,J)=0D0
46634   960     CONTINUE
46635           P(I2,5)=0D0
46636           K(I2,1)=K(I2,1)+10
46637           I2=I2+1
46638           IF(K(I2,1).EQ.41) ITER=-1
46639         ENDIF
46640         IF(ITER.EQ.1) GOTO 930
46641  
46642 C...If also all endpoint energy eaten, revert to old procedure.
46643         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
46644      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
46645           DO 970 I=NSAV+3,N
46646             IM=K(I,3)
46647             K(IM,1)=K(IM,1)-10
46648             K(IM,4)=0
46649             K(IM,5)=0
46650   970     CONTINUE
46651           N=NSAV
46652           GOTO 990
46653         ENDIF
46654  
46655 C... Construct the collapsed hadron and modified string partons.
46656         DO 980 J=1,4
46657           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
46658           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
46659           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
46660   980   CONTINUE
46661           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
46662           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
46663  
46664 C...Finished with string collapse in new scheme.
46665         GOTO 1030
46666       ENDIF
46667  
46668 C... Use old algorithm; by choice or when in trouble.
46669   990 CONTINUE
46670 C...Find parton/particle which combines to largest extra mass.
46671       IR=0
46672       HA=0D0
46673       HSM=0D0
46674       DO 1010 MCOMB=1,3
46675         IF(IR.NE.0) GOTO 1010
46676         DO 1000 I=MAX(1,IP),N
46677           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
46678      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1000
46679           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
46680           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1000
46681           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1000
46682           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
46683      &    GOTO 1000
46684           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
46685           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
46686           IF(HSR.GT.HSM) THEN
46687             IR=I
46688             HA=HCR
46689             HSM=HSR
46690           ENDIF
46691  1000   CONTINUE
46692  1010 CONTINUE
46693  
46694 C...Shuffle energy and momentum to put new particle on mass shell.
46695       IF(IR.NE.0) THEN
46696         HB=PECM**2+HA
46697         HC=P(N+2,5)**2+HA
46698         HD=P(IR,5)**2+HA
46699         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
46700      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
46701         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
46702         DO 1020 J=1,4
46703           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
46704           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
46705  1020   CONTINUE
46706         N=N+2
46707       ELSE
46708         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
46709         RETURN
46710       ENDIF
46711  
46712 C...Mark collapsed system and store daughter pointers. Iterate.
46713  1030 DO 1040 I=IC1,IC2
46714         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
46715      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
46716           K(I,1)=K(I,1)+10
46717           IF(MSTU(16).NE.2) THEN
46718             K(I,4)=NSAV+1
46719             K(I,5)=NSAV+1
46720           ELSE
46721             K(I,4)=NSAV+2
46722             K(I,5)=NSAV+1+NBODY
46723           ENDIF
46724         ENDIF
46725         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
46726  1040 CONTINUE
46727       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 620
46728  
46729 C...Check flavours and invariant masses in parton systems.
46730  1050 NP=0
46731       KFN=0
46732       KQS=0
46733       NJU=0
46734       DO 1060 J=1,5
46735         DPS(J)=0D0
46736  1060 CONTINUE
46737       DO 1090 I=MAX(1,IP),N
46738         IF(K(I,1).EQ.41) NJU=NJU+1
46739         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1090
46740         KC=PYCOMP(K(I,2))
46741         IF(KC.EQ.0) GOTO 1090
46742         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
46743         IF(KQ.EQ.0) GOTO 1090
46744         NP=NP+1
46745         IF(KQ.NE.2) THEN
46746           KFN=KFN+1
46747           KQS=KQS+KQ
46748           MSTJ(93)=1
46749           DPS(5)=DPS(5)+PYMASS(K(I,2))
46750         ENDIF
46751         DO 1070 J=1,4
46752           DPS(J)=DPS(J)+P(I,J)
46753  1070   CONTINUE
46754         IF(K(I,1).EQ.1) THEN
46755           NFERR=0
46756           IF(NJU.EQ.0.AND.NP.NE.1) THEN
46757             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
46758           ELSEIF(NJU.EQ.1) THEN
46759             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
46760           ELSEIF(NJU.EQ.2) THEN
46761             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
46762           ELSEIF(NJU.GE.3) THEN
46763             NFERR=1
46764           ENDIF
46765           IF(NFERR.EQ.1) CALL
46766      &    PYERRM(2,'(PYPREP:) unphysical flavour combination')
46767           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
46768      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
46769      &    '(PYPREP:) too small mass in jet system')
46770           NP=0
46771           KFN=0
46772           KQS=0
46773           NJU=0
46774           DO 1080 J=1,5
46775             DPS(J)=0D0
46776  1080     CONTINUE
46777         ENDIF
46778  1090 CONTINUE
46779  
46780       RETURN
46781       END
46782  
46783 C*********************************************************************
46784  
46785 C...PYSTRF
46786 C...Handles the fragmentation of an arbitrary colour singlet
46787 C...jet system according to the Lund string fragmentation model.
46788  
46789       SUBROUTINE PYSTRF(IP)
46790  
46791 C...Double precision and integer declarations.
46792       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46793       IMPLICIT INTEGER(I-N)
46794       INTEGER PYK,PYCHGE,PYCOMP
46795 C...Commonblocks.
46796       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
46797       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46798       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46799       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
46800 C...Local arrays. All MOPS variables ends with MO
46801       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
46802      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
46803      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
46804      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
46805      &PBST(3,5),TJUOLD(5)
46806  
46807 C...Function: four-product of two vectors.
46808       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)
46809       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
46810      &DP(I,3)*DP(J,3)
46811  
46812 C...Reset counters.
46813       MSTJ(91)=0
46814       NSAV=N
46815       MSTU90=MSTU(90)
46816       NP=0
46817       KQSUM=0
46818       DO 100 J=1,5
46819         DPS(J)=0D0
46820   100 CONTINUE
46821       MJU(1)=0
46822       MJU(2)=0
46823       NTRYFN=0
46824       IJUORI(1)=0
46825       IJUORI(2)=0
46826  
46827 C...Identify parton system.
46828       I=IP-1
46829   110 I=I+1
46830       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
46831         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
46832         IF(MSTU(21).GE.1) RETURN
46833       ENDIF
46834       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
46835       KC=PYCOMP(K(I,2))
46836       IF(KC.EQ.0) GOTO 110
46837       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
46838       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
46839       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
46840         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
46841         IF(MSTU(21).GE.1) RETURN
46842       ENDIF
46843  
46844 C...Take copy of partons to be considered. Check flavour sum.
46845       NP=NP+1
46846       DO 120 J=1,5
46847         K(N+NP,J)=K(I,J)
46848         P(N+NP,J)=P(I,J)
46849         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
46850   120 CONTINUE
46851       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
46852       K(N+NP,3)=I
46853       IF(KQ.NE.2) KQSUM=KQSUM+KQ
46854       IF(K(I,1).EQ.41) THEN
46855         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
46856           MJU(1)=N+NP
46857           IJUORI(1)=I
46858         ELSE
46859           MJU(2)=N+NP
46860           IJUORI(2)=I
46861         ENDIF
46862       ENDIF
46863       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
46864       IF(MOD(KQSUM,3).NE.0) THEN
46865         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
46866         IF(MSTU(21).GE.1) RETURN
46867       ENDIF
46868       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
46869  
46870 C...Boost copied system to CM frame (for better numerical precision).
46871       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
46872         MBST=0
46873         MSTU(33)=1
46874         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
46875      &  -DPS(3)/DPS(4))
46876       ELSE
46877         MBST=1
46878         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
46879         DO 130 I=N+1,N+NP
46880           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
46881           IF(P(I,3).GT.0D0) THEN
46882             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
46883             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
46884             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
46885           ELSE
46886             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
46887             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
46888             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
46889           ENDIF
46890   130   CONTINUE
46891       ENDIF
46892  
46893 C...Search for very nearby partons that may be recombined.
46894       NTRYR=0
46895       NTRYWR=0
46896       PARU12=PARU(12)
46897       PARU13=PARU(13)
46898       MJU(3)=MJU(1)
46899       MJU(4)=MJU(2)
46900       NR=NP
46901   140 IF(NR.GE.3) THEN
46902         PDRMIN=2D0*PARU12
46903         DO 150 I=N+1,N+NR
46904           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
46905           I1=I+1
46906           IF(I.EQ.N+NR) I1=N+1
46907           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
46908           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
46909      &    GOTO 150
46910           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
46911      &    GOTO 150
46912           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
46913      &    P(I1,2)**2+P(I1,3)**2))
46914           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
46915           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
46916           IF(PDR.LT.PDRMIN) THEN
46917             IR=I
46918             PDRMIN=PDR
46919           ENDIF
46920   150   CONTINUE
46921  
46922 C...Recombine very nearby partons to avoid machine precision problems.
46923         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
46924           DO 160 J=1,4
46925             P(N+1,J)=P(N+1,J)+P(N+NR,J)
46926   160     CONTINUE
46927           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
46928      &    P(N+1,3)**2))
46929           NR=NR-1
46930           GOTO 140
46931         ELSEIF(PDRMIN.LT.PARU12) THEN
46932           DO 170 J=1,4
46933             P(IR,J)=P(IR,J)+P(IR+1,J)
46934   170     CONTINUE
46935           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
46936      &    P(IR,3)**2))
46937           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
46938           DO 190 I=IR+1,N+NR-1
46939             K(I,1)=K(I+1,1)
46940             K(I,2)=K(I+1,2)
46941             DO 180 J=1,5
46942               P(I,J)=P(I+1,J)
46943   180       CONTINUE
46944   190     CONTINUE
46945           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
46946           NR=NR-1
46947           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
46948           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
46949           GOTO 140
46950         ENDIF
46951       ENDIF
46952       NTRYR=NTRYR+1
46953  
46954 C...Reset particle counter. Skip ahead if no junctions are present;
46955 C...this is usually the case!
46956       NRS=MAX(5*NR+11,NP)
46957       NTRY=0
46958   200 NTRY=NTRY+1
46959       IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
46960         PARU12=4D0*PARU12
46961         PARU13=2D0*PARU13
46962         GOTO 140
46963       ELSEIF(NTRY.GT.100) THEN
46964         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
46965         IF(MSTU(21).GE.1) RETURN
46966       ENDIF
46967       I=N+NRS
46968       MSTU(90)=MSTU90
46969       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 640
46970       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
46971      &     ' junction strings not handled by MSTJ(12)>3 options')
46972       DO 630 JT=1,2
46973         NJS(JT)=0
46974         IF(MJU(JT).EQ.0) GOTO 630
46975         JS=3-2*JT
46976  
46977 C++SKANDS
46978 C...Find and sum up momentum on three sides of junction.
46979 C...Begin with previous boost = zero.
46980         IJRFIT=0
46981         DO 210 IX=1,3
46982           TJUOLD(IX)=0D0
46983   210   CONTINUE
46984         TJUOLD(4)=1D0
46985   220   IU=0
46986 C...Beginning and end of string system in event record.
46987         I1BEG=N+1+(JT-1)*(NR-1)
46988         I1END=N+NR+(JT-1)*(1-NR)
46989 C...Look for junction string piece end points
46990         DO 230 I1=I1BEG,I1END,JS
46991           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
46992 C...Store junction string piece end points.
46993 C                 1-junction systems        2-junction systems
46994 C           IU :  1     2     3   4     1     2   3     4   5     6
46995 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
46996             IU=IU+1
46997             IJU(IU)=I1
46998           ENDIF
46999 C...Sum over momenta, from junction outwards.
47000   230   CONTINUE
47001         DO 280 IU=1,3
47002           PWT=0D0
47003 C...Initialize junction drag and string piece 4-vectors.
47004           DO 240 J=1,5
47005             PBST(IU,J)=0D0
47006             PJU(IU,J)=0D0
47007   240     CONTINUE
47008 C...First two branches. Inwards out means opposite direction to JS.
47009 C...(JS is 1 for JT=1, -1 for JT=2)
47010           IF (IU.LT.3) THEN
47011             I1A=IJU(IU+1)-JS
47012             I1B=IJU(IU)
47013             IDIR=-JS
47014 C...Last branch (gq or gjgqgq). Direction now reversed.
47015           ELSE
47016             I1A=IJU(IU)+JS
47017             I1B=I1END
47018             IDIR=JS
47019           ENDIF
47020           DO 270 I1=I1A,I1B,IDIR
47021 C...Sum up momentum directions with exponential suppression
47022 C...for use in finding junction rest frame below.
47023             IF (K(I1,2).EQ.88) THEN
47024 C...gjgqgq type system encountered. Use current PWT as start
47025 C...for both strings.
47026               PWTOLD=PWT
47027             ELSE
47028               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
47029 C...Sum up string piece (boosted) 4-momenta.
47030               DO 250 J=1,4
47031                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
47032   250         CONTINUE
47033 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
47034 C...boost is zero, see above). Skip parton if suppression factor large.
47035               IF (PWT.GT.10D0) GOTO 270
47036 C...Compute momentum in current frame:
47037               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
47038               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
47039               DO 260 J=1,3
47040                 PTMP=P(I1,J)+TJUOLD(J)*BFC
47041                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
47042   260         CONTINUE
47043 C...Boosted energy
47044               PTMP=TJUOLD(4)*P(I1,4)+TDP
47045               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
47046               PWT=PWT+PTMP/PARJ(48)
47047             ENDIF
47048   270     CONTINUE
47049 C...Put |p| rather than m in 5th slot.
47050           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
47051           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
47052   280   CONTINUE
47053  
47054 C...Calculate boost from present frame to next JRF candidate.
47055         IJRFIT=IJRFIT+1
47056         CALL PYJURF(PBST,TJU)
47057  
47058 C...Combine new boost (TJU) with old boost (TJUOLD)
47059         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
47060         DO 290 IX=1,3
47061           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
47062   290   CONTINUE
47063         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
47064  
47065 C...If last boost small, accept JRF, else iterate.
47066 C...Also prevent possibility of infinite loop.
47067         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
47068      &  IJRFIT.LT.MSTJ(18)) THEN
47069           GOTO 220
47070         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
47071           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
47072         ENDIF
47073  
47074 C...Now store total boost in TJU and change perception.
47075 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
47076 C...TJU = junction motion vector in string CM, so the sign changes.
47077         DO 300 J=1,3
47078           TJU(J)=-TJUOLD(J)
47079   300   CONTINUE
47080         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
47081  
47082 C--SKANDS
47083  
47084 C...Calculate string piece energies in junction rest frame.
47085         DO 310 IU=1,3
47086           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
47087      &    TJU(3)*PJU(IU,3)
47088           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
47089      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
47090   310   CONTINUE
47091  
47092 C...Start preparing for fragmentation of two strings from junction.
47093         ISTA=I
47094         NTRYER=0
47095   320   NTRYER=NTRYER+1
47096         I=ISTA
47097         DO 610 IU=1,2
47098           NS=IABS(IJU(IU+1)-IJU(IU))
47099  
47100 C...Junction strings: find longitudinal string directions.
47101           DO 350 IS=1,NS
47102             IS1=IJU(IU)+JS*(IS-1)
47103             IS2=IJU(IU)+JS*IS
47104             DO 330 J=1,5
47105               DP(1,J)=0.5D0*P(IS1,J)
47106               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
47107               DP(2,J)=0.5D0*P(IS2,J)
47108               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
47109      &        (PJU(IU,5)/PBST(IU,5))
47110   330       CONTINUE
47111             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
47112      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
47113             DP(3,5)=DFOUR(1,1)
47114             DP(4,5)=DFOUR(2,2)
47115             DHKC=DFOUR(1,2)
47116             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
47117               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47118               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47119               DP(3,5)=0D0
47120               DP(4,5)=0D0
47121               DHKC=DFOUR(1,2)
47122             ENDIF
47123             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
47124             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
47125             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
47126             IN1=N+NR+4*IS-3
47127             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
47128             DO 340 J=1,4
47129               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
47130               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
47131   340       CONTINUE
47132   350     CONTINUE
47133  
47134 C...Junction strings: initialize flavour, momentum and starting pos.
47135           ISAV=I
47136           MSTU91=MSTU(90)
47137   360     NTRY=NTRY+1
47138           IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
47139             PARU12=4D0*PARU12
47140             PARU13=2D0*PARU13
47141             GOTO 140
47142           ELSEIF(NTRY.GT.100) THEN
47143             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
47144             IF(MSTU(21).GE.1) RETURN
47145           ENDIF
47146           I=ISAV
47147           MSTU(90)=MSTU91
47148           IRANKJ=0
47149           IE(1)=K(N+1+(JT/2)*(NP-1),3)
47150           IN(4)=N+NR+1
47151           IN(5)=IN(4)+1
47152           IN(6)=N+NR+4*NS+1
47153           DO 380 JQ=1,2
47154             DO 370 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
47155               P(IN1,1)=2-JQ
47156               P(IN1,2)=JQ-1
47157               P(IN1,3)=1D0
47158   370       CONTINUE
47159   380     CONTINUE
47160           KFL(1)=K(IJU(IU),2)
47161           PX(1)=0D0
47162           PY(1)=0D0
47163           GAM(1)=0D0
47164           DO 390 J=1,5
47165             PJU(IU+3,J)=0D0
47166   390     CONTINUE
47167  
47168 C...Junction strings: find initial transverse directions.
47169           DO 400 J=1,4
47170             DP(1,J)=P(IN(4),J)
47171             DP(2,J)=P(IN(4)+1,J)
47172             DP(3,J)=0D0
47173             DP(4,J)=0D0
47174   400     CONTINUE
47175           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47176           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47177           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47178           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47179           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47180           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47181           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47182           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47183           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47184           DHC12=DFOUR(1,2)
47185           DHCX1=DFOUR(3,1)/DHC12
47186           DHCX2=DFOUR(3,2)/DHC12
47187           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47188           DHCY1=DFOUR(4,1)/DHC12
47189           DHCY2=DFOUR(4,2)/DHC12
47190           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47191           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47192           DO 410 J=1,4
47193             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47194             P(IN(6),J)=DP(3,J)
47195             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47196      &      DHCYX*DP(3,J))
47197   410     CONTINUE
47198  
47199 C...Junction strings: produce new particle, origin.
47200   420     I=I+1
47201           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
47202             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
47203             IF(MSTU(21).GE.1) RETURN
47204           ENDIF
47205           IRANKJ=IRANKJ+1
47206           K(I,1)=1
47207           K(I,3)=IE(1)
47208           K(I,4)=0
47209           K(I,5)=0
47210  
47211 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
47212   430     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
47213           IF(K(I,2).EQ.0) GOTO 360
47214           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
47215      &    IABS(KFL(3)).GT.10) THEN
47216             IF(PYR(0).GT.PARJ(19)) GOTO 430
47217           ENDIF
47218           P(I,5)=PYMASS(K(I,2))
47219           CALL PYPTDI(KFL(1),PX(3),PY(3))
47220           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
47221           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
47222           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
47223      &    MSTU(90).LT.8) THEN
47224             MSTU(90)=MSTU(90)+1
47225             MSTU(90+MSTU(90))=I
47226             PARU(90+MSTU(90))=Z
47227           ENDIF
47228           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
47229           DO 440 J=1,3
47230             IN(J)=IN(3+J)
47231   440     CONTINUE
47232  
47233 C...Junction strings: stepping within 'low' string region.
47234           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
47235      &    P(IN(1),5)**2.GE.PR(1)) THEN
47236             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
47237             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
47238             DO 450 J=1,4
47239               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
47240   450       CONTINUE
47241             GOTO 550
47242 C...Has used up energy of junction string, i.e. no more hadrons in it.
47243           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
47244             DO 460 J=1,5
47245               P(I,J)=0D0
47246   460       CONTINUE
47247             GOTO 590
47248 C...Stepping from 'low' string region
47249           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
47250             P(IN(2)+2,4)=P(IN(2)+2,3)
47251             P(IN(2)+2,1)=1D0
47252             IN(2)=IN(2)+4
47253             IF(IN(2).GT.N+NR+4*NS) GOTO 360
47254             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47255               P(IN(1)+2,4)=P(IN(1)+2,3)
47256               P(IN(1)+2,1)=0D0
47257               IN(1)=IN(1)+4
47258             ENDIF
47259           ENDIF
47260  
47261 C...Junction strings: find new transverse directions.
47262   470     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
47263      &    IN(1).GT.IN(2)) GOTO 360
47264           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
47265             DO 480 J=1,4
47266               DP(1,J)=P(IN(1),J)
47267               DP(2,J)=P(IN(2),J)
47268               DP(3,J)=0D0
47269               DP(4,J)=0D0
47270   480       CONTINUE
47271             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47272             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47273             DHC12=DFOUR(1,2)
47274             IF(DHC12.LE.1D-2) THEN
47275               P(IN(1)+2,4)=P(IN(1)+2,3)
47276               P(IN(1)+2,1)=0D0
47277               IN(1)=IN(1)+4
47278               GOTO 470
47279             ENDIF
47280             IN(3)=N+NR+4*NS+5
47281             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47282             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47283             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47284             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47285             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47286             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47287             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47288             DHCX1=DFOUR(3,1)/DHC12
47289             DHCX2=DFOUR(3,2)/DHC12
47290             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47291             DHCY1=DFOUR(4,1)/DHC12
47292             DHCY2=DFOUR(4,2)/DHC12
47293             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47294             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47295             DO 490 J=1,4
47296               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47297               P(IN(3),J)=DP(3,J)
47298               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47299      &        DHCYX*DP(3,J))
47300   490       CONTINUE
47301 C...Express pT with respect to new axes, if sensible.
47302             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
47303             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
47304             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
47305               PX(3)=PXP
47306               PY(3)=PYP
47307             ENDIF
47308           ENDIF
47309  
47310 C...Junction strings: sum up known four-momentum, coefficients for m2.
47311           DO 520 J=1,4
47312             DHG(J)=0D0
47313             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
47314      &      PY(3)*P(IN(3)+1,J)
47315             DO 500 IN1=IN(4),IN(1)-4,4
47316               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
47317   500       CONTINUE
47318             DO 510 IN2=IN(5),IN(2)-4,4
47319               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
47320   510       CONTINUE
47321   520     CONTINUE
47322           DHM(1)=FOUR(I,I)
47323           DHM(2)=2D0*FOUR(I,IN(1))
47324           DHM(3)=2D0*FOUR(I,IN(2))
47325           DHM(4)=2D0*FOUR(IN(1),IN(2))
47326  
47327 C...Junction strings: find coefficients for Gamma expression.
47328           DO 540 IN2=IN(1)+1,IN(2),4
47329             DO 530 IN1=IN(1),IN2-1,4
47330               DHC=2D0*FOUR(IN1,IN2)
47331               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
47332               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
47333               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
47334               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
47335   530       CONTINUE
47336   540     CONTINUE
47337  
47338 C...Junction strings: solve (m2, Gamma) equation system for energies.
47339           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
47340           IF(ABS(DHS1).LT.1D-4) GOTO 360
47341           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
47342      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
47343           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
47344           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
47345      &    ABS(DHS1)-DHS2/DHS1)
47346           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
47347           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
47348      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
47349  
47350 C...Junction strings: step to new region if necessary.
47351           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
47352             P(IN(2)+2,4)=P(IN(2)+2,3)
47353             P(IN(2)+2,1)=1D0
47354             IN(2)=IN(2)+4
47355             IF(IN(2).GT.N+NR+4*NS) GOTO 360
47356             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47357               P(IN(1)+2,4)=P(IN(1)+2,3)
47358               P(IN(1)+2,1)=0D0
47359               IN(1)=IN(1)+4
47360             ENDIF
47361             GOTO 470
47362           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
47363             P(IN(1)+2,4)=P(IN(1)+2,3)
47364             P(IN(1)+2,1)=0D0
47365             IN(1)=IN(1)+4
47366             GOTO 470
47367           ENDIF
47368  
47369 C...Junction strings: particle four-momentum, remainder, loop back.
47370   550     DO 560 J=1,4
47371             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
47372      &      P(IN(2)+2,4)*P(IN(2),J)
47373             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
47374   560     CONTINUE
47375           IF(P(I,4).LT.P(I,5)) GOTO 360
47376           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
47377      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
47378           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
47379             KFL(1)=-KFL(3)
47380             PX(1)=-PX(3)
47381             PY(1)=-PY(3)
47382             GAM(1)=GAM(3)
47383             IF(IN(3).NE.IN(6)) THEN
47384               DO 570 J=1,4
47385                 P(IN(6),J)=P(IN(3),J)
47386                 P(IN(6)+1,J)=P(IN(3)+1,J)
47387   570         CONTINUE
47388             ENDIF
47389             DO 580 JQ=1,2
47390               IN(3+JQ)=IN(JQ)
47391               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
47392               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
47393   580       CONTINUE
47394             GOTO 420
47395           ENDIF
47396  
47397 C...Junction strings: save quantities left after each string.
47398           IF(IABS(KFL(1)).GT.10) GOTO 360
47399   590     I=I-1
47400           KFJH(IU)=KFL(1)
47401           DO 600 J=1,4
47402             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
47403   600     CONTINUE
47404  
47405 C...Junction strings: loopback if much unused energy in both strings.
47406           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
47407      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
47408           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
47409   610   CONTINUE
47410         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
47411      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
47412      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
47413      &  .AND.NTRYER.LT.10) GOTO 320
47414  
47415 C...Junction strings: put together to new effective string endpoint.
47416         NJS(JT)=I-ISTA
47417         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
47418         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
47419         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
47420      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
47421         DO 620 J=1,4
47422           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
47423           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
47424   620   CONTINUE
47425         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
47426      &  PJS(JT,3)**2))
47427         PJS(JT+2,5)=0D0
47428   630 CONTINUE
47429  
47430 C...Open versus closed strings. Choose breakup region for latter.
47431   640 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
47432         NS=MJU(2)-MJU(1)
47433         NB=MJU(1)-N
47434       ELSEIF(MJU(1).NE.0) THEN
47435         NS=N+NR-MJU(1)
47436         NB=MJU(1)-N
47437       ELSEIF(MJU(2).NE.0) THEN
47438         NS=MJU(2)-N
47439         NB=1
47440       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
47441         NS=NR-1
47442         NB=1
47443       ELSE
47444         NS=NR+1
47445         W2SUM=0D0
47446         DO 650 IS=1,NR
47447           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
47448           W2SUM=W2SUM+P(N+NR+IS,1)
47449   650   CONTINUE
47450         W2RAN=PYR(0)*W2SUM
47451         NB=0
47452   660   NB=NB+1
47453         W2SUM=W2SUM-P(N+NR+NB,1)
47454         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 660
47455       ENDIF
47456  
47457 C...Find longitudinal string directions (i.e. lightlike four-vectors).
47458       DO 690 IS=1,NS
47459         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
47460         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
47461         DO 670 J=1,5
47462           DP(1,J)=P(IS1,J)
47463           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
47464           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
47465           DP(2,J)=P(IS2,J)
47466           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
47467           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
47468   670   CONTINUE
47469         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
47470      &  DP(1,2)**2-DP(1,3)**2))
47471         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
47472      &  DP(2,2)**2-DP(2,3)**2))
47473         DP(3,5)=DFOUR(1,1)
47474         DP(4,5)=DFOUR(2,2)
47475         DHKC=DFOUR(1,2)
47476         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
47477         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
47478         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
47479         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
47480         IN1=N+NR+4*IS-3
47481         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
47482         DO 680 J=1,4
47483           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
47484           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
47485   680   CONTINUE
47486   690 CONTINUE
47487  
47488 C...Begin initialization: sum up energy, set starting position.
47489       ISAV=I
47490       MSTU91=MSTU(90)
47491   700 NTRY=NTRY+1
47492       IF(NTRY.GT.100.AND.NTRYR.LE.8) THEN
47493         PARU12=4D0*PARU12
47494         PARU13=2D0*PARU13
47495         GOTO 140
47496       ELSEIF(NTRY.GT.100) THEN
47497         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
47498         IF(MSTU(21).GE.1) RETURN
47499       ENDIF
47500       I=ISAV
47501       MSTU(90)=MSTU91
47502       DO 720 J=1,4
47503         P(N+NRS,J)=0D0
47504         DO 710 IS=1,NR
47505           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
47506   710   CONTINUE
47507   720 CONTINUE
47508       DO 740 JT=1,2
47509         IRANK(JT)=0
47510         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
47511         IF(NS.GT.NR) IRANK(JT)=1
47512         IBARRK(JT)=0
47513         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
47514         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
47515         IN(3*JT+2)=IN(3*JT+1)+1
47516         IN(3*JT+3)=N+NR+4*NS+2*JT-1
47517         DO 730 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
47518           P(IN1,1)=2-JT
47519           P(IN1,2)=JT-1
47520           P(IN1,3)=1D0
47521   730   CONTINUE
47522   740 CONTINUE
47523  
47524 C.. MOPS variables and switches
47525       NRVMO=0
47526       XBMO=1D0
47527       MSTU(121)=0
47528       MSTU(122)=0
47529  
47530 C...Initialize flavour and pT variables for open string.
47531       IF(NS.LT.NR) THEN
47532         PX(1)=0D0
47533         PY(1)=0D0
47534         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
47535         PX(2)=-PX(1)
47536         PY(2)=-PY(1)
47537         DO 750 JT=1,2
47538           KFL(JT)=K(IE(JT),2)
47539           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
47540           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
47541           MSTJ(93)=1
47542           PMQ(JT)=PYMASS(KFL(JT))
47543           GAM(JT)=0D0
47544   750   CONTINUE
47545  
47546 C...Closed string: random initial breakup flavour, pT and vertex.
47547       ELSE
47548         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
47549         IBMO=0
47550   760   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
47551 C.. Closed string: first vertex diq attempt => enforced second
47552 C.. vertex diq
47553         IF(IABS(KFL(1)).GT.10)THEN
47554            IBMO=1
47555            MSTU(121)=0
47556            GOTO 760
47557         ENDIF
47558         IF(IBMO.EQ.1) MSTU(121)=-1
47559         KFL(2)=-KFL(1)
47560         CALL PYPTDI(KFL(1),PX(1),PY(1))
47561         PX(2)=-PX(1)
47562         PY(2)=-PY(1)
47563         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
47564   770   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
47565         ZR=PR3/(Z*P(N+NR+1,5)**2)
47566         IF(ZR.GE.1D0) GOTO 770
47567         DO 780 JT=1,2
47568           MSTJ(93)=1
47569           PMQ(JT)=PYMASS(KFL(JT))
47570           GAM(JT)=PR3*(1D0-Z)/Z
47571           IN1=N+NR+3+4*(JT/2)*(NS-1)
47572           P(IN1,JT)=1D0-Z
47573           P(IN1,3-JT)=JT-1
47574           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
47575           P(IN1+1,JT)=ZR
47576           P(IN1+1,3-JT)=2-JT
47577           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
47578   780   CONTINUE
47579       ENDIF
47580 C.. MOPS variables
47581       DO 790 JT=1,2
47582          XTMO(JT)=1D0
47583          PM2QMO(JT)=PMQ(JT)**2
47584          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
47585   790 CONTINUE
47586  
47587 C...Find initial transverse directions (i.e. spacelike four-vectors).
47588       DO 830 JT=1,2
47589         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
47590           IN1=IN(3*JT+1)
47591           IN3=IN(3*JT+3)
47592           DO 800 J=1,4
47593             DP(1,J)=P(IN1,J)
47594             DP(2,J)=P(IN1+1,J)
47595             DP(3,J)=0D0
47596             DP(4,J)=0D0
47597   800     CONTINUE
47598           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47599           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47600           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47601           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47602           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47603           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47604           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47605           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47606           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47607           DHC12=DFOUR(1,2)
47608           DHCX1=DFOUR(3,1)/DHC12
47609           DHCX2=DFOUR(3,2)/DHC12
47610           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47611           DHCY1=DFOUR(4,1)/DHC12
47612           DHCY2=DFOUR(4,2)/DHC12
47613           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47614           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47615           DO 810 J=1,4
47616             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47617             P(IN3,J)=DP(3,J)
47618             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47619      &      DHCYX*DP(3,J))
47620   810     CONTINUE
47621         ELSE
47622           DO 820 J=1,4
47623             P(IN3+2,J)=P(IN3,J)
47624             P(IN3+3,J)=P(IN3+1,J)
47625   820     CONTINUE
47626         ENDIF
47627   830 CONTINUE
47628  
47629 C...Remove energy used up in junction string fragmentation.
47630       IF(MJU(1)+MJU(2).GT.0) THEN
47631         DO 850 JT=1,2
47632           IF(NJS(JT).EQ.0) GOTO 850
47633           DO 840 J=1,4
47634             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
47635   840     CONTINUE
47636   850   CONTINUE
47637         PARJST=PARJ(33)
47638         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
47639         WMIN=PARJST+PMQ(1)+PMQ(2)
47640         WREM2=FOUR(N+NRS,N+NRS)
47641         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
47642           NTRYWR=NTRYWR+1
47643           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
47644           GOTO 140
47645         ENDIF
47646       ENDIF
47647  
47648 C...Produce new particle: side, origin.
47649   860 I=I+1
47650       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
47651         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
47652         IF(MSTU(21).GE.1) RETURN
47653       ENDIF
47654 C.. New side priority for popcorn systems
47655       IF(MSTU(121).LE.0)THEN
47656          JT=1.5D0+PYR(0)
47657          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
47658          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
47659       ENDIF
47660       JR=3-JT
47661       JS=3-2*JT
47662       IRANK(JT)=IRANK(JT)+1
47663       K(I,1)=1
47664       K(I,4)=0
47665       K(I,5)=0
47666  
47667 C...Generate flavour, hadron and pT.
47668   870 K(I,3)=IE(JT)
47669       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
47670       IF(K(I,2).EQ.0) GOTO 700
47671       MU90MO=MSTU(90)
47672       IF(MSTU(121).EQ.-1) GOTO 900
47673       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
47674      &IABS(KFL(3)).GT.10) THEN
47675         IF(PYR(0).GT.PARJ(19)) GOTO 870
47676       ENDIF
47677       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47678      &K(I,3)=IJUORI(JT)
47679       P(I,5)=PYMASS(K(I,2))
47680       CALL PYPTDI(KFL(JT),PX(3),PY(3))
47681       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
47682  
47683 C...Final hadrons for small invariant mass.
47684       MSTJ(93)=1
47685       PMQ(3)=PYMASS(KFL(3))
47686       PARJST=PARJ(33)
47687       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
47688       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
47689       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
47690      &WMIN-0.5D0*PARJ(36)*PMQ(3)
47691       WREM2=FOUR(N+NRS,N+NRS)
47692       IF(WREM2.LT.0.10D0) GOTO 700
47693       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
47694      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1070
47695  
47696 C...Choose z, which gives Gamma. Shift z for heavy flavours.
47697       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
47698       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
47699      &MSTU(90).LT.8) THEN
47700         MSTU(90)=MSTU(90)+1
47701         MSTU(90+MSTU(90))=I
47702         PARU(90+MSTU(90))=Z
47703       ENDIF
47704       KFL1A=IABS(KFL(1))
47705       KFL2A=IABS(KFL(2))
47706       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
47707      &MOD(KFL2A/1000,10)).GE.4) THEN
47708         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47709         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
47710         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
47711         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47712         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1070
47713       ENDIF
47714       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
47715  
47716 C.. MOPS baryon model modification
47717       XTMO3=(1D0-Z)*XTMO(JT)
47718       IF(IABS(KFL(3)).LE.10) NRVMO=0
47719       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
47720          GTSTMO=1D0
47721          PTSTMO=1D0
47722          RTSTMO=PYR(0)
47723          IF(IABS(KFL(JT)).LE.10)THEN
47724             XBMO=MIN(XTMO3,1D0-(2D-10))
47725             GBMO=GAM(3)
47726             PMMO=0D0
47727             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
47728             GTSTMO=1D0-PARF(192)**PGMO
47729          ELSE
47730             IF(IRANK(JT).EQ.1) THEN
47731                GBMO=GAM(JT)
47732                PMMO=0D0
47733                XBMO=1D0
47734             ENDIF
47735             IF(XBMO.LT.1D0-(1D-10))THEN
47736                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
47737                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
47738                PGMO=PGNMO
47739             ENDIF
47740             IF(MSTJ(12).GE.5)THEN
47741                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
47742                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
47743                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
47744                PMMO=PMNMO
47745             ENDIF
47746          ENDIF
47747  
47748 C.. MOPS Accepting popcorn system hadron.
47749          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
47750             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
47751                NRVMO=I-N-NR
47752                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
47753                   CALL PYERRM(11,
47754      &                 '(PYSTRF:) no more memory left in PYJETS')
47755                   IF(MSTU(21).GE.1) RETURN
47756                ENDIF
47757                IMO=I
47758                KFLMO=KFL(JT)
47759                PMQMO=PMQ(JT)
47760                PXMO=PX(JT)
47761                PYMO=PY(JT)
47762                GAMMO=GAM(JT)
47763                IRMO=IRANK(JT)
47764                XMO=XTMO(JT)
47765                DO 890 J=1,9
47766                   IF(J.LE.5) THEN
47767                      DO 880 LINE=1,I-N-NR
47768                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
47769                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
47770   880                CONTINUE
47771                   ENDIF
47772                   INMO(J)=IN(J)
47773   890          CONTINUE
47774             ENDIF
47775          ELSE
47776 C..Reject popcorn system, flag=-1 if enforcing new one
47777             MSTU(121)=-1
47778             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
47779          ENDIF
47780       ENDIF
47781  
47782  
47783 C..Lift restoring string outside MOPS block
47784   900 IF(MSTU(121).LT.0) THEN
47785          IF(MSTU(121).EQ.-2) MSTU(121)=0
47786          MSTU(90)=MU90MO
47787          NRVMO=0
47788          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 870
47789          I=IMO
47790          KFL(JT)=KFLMO
47791          PMQ(JT)=PMQMO
47792          PX(JT)=PXMO
47793          PY(JT)=PYMO
47794          GAM(JT)=GAMMO
47795          IRANK(JT)=IRMO
47796          XTMO(JT)=XMO
47797          DO 920 J=1,9
47798             IF(J.LE.5) THEN
47799                DO 910 LINE=1,I-N-NR
47800                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
47801                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
47802   910          CONTINUE
47803             ENDIF
47804             IN(J)=INMO(J)
47805   920    CONTINUE
47806          GOTO 870
47807       ENDIF
47808       XTMO(JT)=XTMO3
47809 C.. MOPS end of modification
47810  
47811       DO 930 J=1,3
47812         IN(J)=IN(3*JT+J)
47813   930 CONTINUE
47814  
47815 C...Stepping within or from 'low' string region easy.
47816       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
47817      &P(IN(1),5)**2.GE.PR(JT)) THEN
47818         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
47819         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
47820         DO 940 J=1,4
47821           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
47822   940   CONTINUE
47823         GOTO 1030
47824       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
47825         P(IN(JR)+2,4)=P(IN(JR)+2,3)
47826         P(IN(JR)+2,JT)=1D0
47827         IN(JR)=IN(JR)+4*JS
47828         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 700
47829         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47830           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47831           P(IN(JT)+2,JT)=0D0
47832           IN(JT)=IN(JT)+4*JS
47833         ENDIF
47834       ENDIF
47835  
47836 C...Find new transverse directions (i.e. spacelike string vectors).
47837   950 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
47838      &IN(1).GT.IN(2)) GOTO 700
47839       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
47840         DO 960 J=1,4
47841           DP(1,J)=P(IN(1),J)
47842           DP(2,J)=P(IN(2),J)
47843           DP(3,J)=0D0
47844           DP(4,J)=0D0
47845   960   CONTINUE
47846         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
47847         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
47848         DHC12=DFOUR(1,2)
47849         IF(DHC12.LE.1D-2) THEN
47850           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47851           P(IN(JT)+2,JT)=0D0
47852           IN(JT)=IN(JT)+4*JS
47853           GOTO 950
47854         ENDIF
47855         IN(3)=N+NR+4*NS+5
47856         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
47857         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
47858         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
47859         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
47860         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
47861         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
47862         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
47863         DHCX1=DFOUR(3,1)/DHC12
47864         DHCX2=DFOUR(3,2)/DHC12
47865         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
47866         DHCY1=DFOUR(4,1)/DHC12
47867         DHCY2=DFOUR(4,2)/DHC12
47868         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
47869         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
47870         DO 970 J=1,4
47871           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
47872           P(IN(3),J)=DP(3,J)
47873           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
47874      &    DHCYX*DP(3,J))
47875   970   CONTINUE
47876 C...Express pT with respect to new axes, if sensible.
47877         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
47878      &  FOUR(IN(3*JT+3)+1,IN(3)))
47879         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
47880      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
47881         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
47882           PX(3)=PXP
47883           PY(3)=PYP
47884         ENDIF
47885       ENDIF
47886  
47887 C...Sum up known four-momentum. Gives coefficients for m2 expression.
47888       DO 1000 J=1,4
47889         DHG(J)=0D0
47890         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
47891      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
47892         DO 980 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
47893           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
47894   980   CONTINUE
47895         DO 990 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
47896           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
47897   990   CONTINUE
47898  1000 CONTINUE
47899       DHM(1)=FOUR(I,I)
47900       DHM(2)=2D0*FOUR(I,IN(1))
47901       DHM(3)=2D0*FOUR(I,IN(2))
47902       DHM(4)=2D0*FOUR(IN(1),IN(2))
47903  
47904 C...Find coefficients for Gamma expression.
47905       DO 1020 IN2=IN(1)+1,IN(2),4
47906         DO 1010 IN1=IN(1),IN2-1,4
47907           DHC=2D0*FOUR(IN1,IN2)
47908           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
47909           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
47910           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
47911           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
47912  1010   CONTINUE
47913  1020 CONTINUE
47914  
47915 C...Solve (m2, Gamma) equation system for energies taken.
47916       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
47917       IF(ABS(DHS1).LT.1D-4) GOTO 700
47918       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
47919      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
47920       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
47921       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
47922      &ABS(DHS1)-DHS2/DHS1)
47923       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 700
47924       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
47925      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
47926  
47927 C...Step to new region if necessary.
47928       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
47929         P(IN(JR)+2,4)=P(IN(JR)+2,3)
47930         P(IN(JR)+2,JT)=1D0
47931         IN(JR)=IN(JR)+4*JS
47932         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 700
47933         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
47934           P(IN(JT)+2,4)=P(IN(JT)+2,3)
47935           P(IN(JT)+2,JT)=0D0
47936           IN(JT)=IN(JT)+4*JS
47937         ENDIF
47938         GOTO 950
47939       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
47940         P(IN(JT)+2,4)=P(IN(JT)+2,3)
47941         P(IN(JT)+2,JT)=0D0
47942         IN(JT)=IN(JT)+4*JS
47943         GOTO 950
47944       ENDIF
47945  
47946 C...Four-momentum of particle. Remaining quantities. Loop back.
47947  1030 DO 1040 J=1,4
47948         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
47949         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
47950  1040 CONTINUE
47951       IF(P(I,4).LT.P(I,5)) GOTO 700
47952       KFL(JT)=-KFL(3)
47953       PMQ(JT)=PMQ(3)
47954       PX(JT)=-PX(3)
47955       PY(JT)=-PY(3)
47956       GAM(JT)=GAM(3)
47957       IF(IN(3).NE.IN(3*JT+3)) THEN
47958         DO 1050 J=1,4
47959           P(IN(3*JT+3),J)=P(IN(3),J)
47960           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
47961  1050   CONTINUE
47962       ENDIF
47963       DO 1060 JQ=1,2
47964         IN(3*JT+JQ)=IN(JQ)
47965         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
47966         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
47967  1060 CONTINUE
47968       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47969      &IBARRK(JT)=0
47970       GOTO 860
47971  
47972 C...Final hadron: side, flavour, hadron, mass.
47973  1070 I=I+1
47974       K(I,1)=1
47975       K(I,3)=IE(JR)
47976       K(I,4)=0
47977       K(I,5)=0
47978       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
47979       IF(K(I,2).EQ.0) GOTO 700
47980       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
47981      &IBARRK(JT)=0
47982       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47983      &K(I,3)=IJUORI(JT)
47984       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
47985      &K(I,3)=IJUORI(JR)
47986       P(I,5)=PYMASS(K(I,2))
47987       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
47988  
47989 C...Final two hadrons: find common setup of four-vectors.
47990       JQ=1
47991       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
47992      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
47993       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
47994       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
47995       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
47996       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
47997         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
47998         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
47999         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
48000      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
48001       ENDIF
48002  
48003 C...Solve kinematics for final two hadrons, if possible.
48004       WREM2=2D0*DHR1*DHR2*DHC12
48005       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
48006       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
48007       IF(FD.GE.1D0) GOTO 700
48008       FA=WREM2+PR(JT)-PR(JR)
48009       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
48010       PREVCF=PARJ(42)
48011       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
48012       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
48013       FB=SIGN(FB,JS*(PYR(0)-PREV))
48014       KFL1A=IABS(KFL(1))
48015       KFL2A=IABS(KFL(2))
48016       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
48017      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
48018      &4D0*WREM2*PR(JT))),DBLE(JS))
48019       DO 1080 J=1,4
48020         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
48021      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
48022      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
48023         P(I,J)=P(N+NRS,J)-P(I-1,J)
48024  1080 CONTINUE
48025       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 700
48026       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
48027       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
48028       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
48029         NTRYFN=NTRYFN+1
48030         IF(NTRYFN.LT.100) GOTO 140
48031         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
48032       ENDIF
48033  
48034 C...Mark jets as fragmented and give daughter pointers.
48035       N=I-NRS+1
48036       DO 1090 I=NSAV+1,NSAV+NP
48037         IM=K(I,3)
48038         K(IM,1)=K(IM,1)+10
48039         IF(MSTU(16).NE.2) THEN
48040           K(IM,4)=NSAV+1
48041           K(IM,5)=NSAV+1
48042         ELSE
48043           K(IM,4)=NSAV+2
48044           K(IM,5)=N
48045         ENDIF
48046  1090 CONTINUE
48047  
48048 C...Document string system. Move up particles.
48049       NSAV=NSAV+1
48050       K(NSAV,1)=11
48051       K(NSAV,2)=92
48052       K(NSAV,3)=IP
48053       K(NSAV,4)=NSAV+1
48054       K(NSAV,5)=N
48055       DO 1100 J=1,4
48056         P(NSAV,J)=DPS(J)
48057         V(NSAV,J)=V(IP,J)
48058  1100 CONTINUE
48059       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
48060       V(NSAV,5)=0D0
48061       DO 1120 I=NSAV+1,N
48062         DO 1110 J=1,5
48063           K(I,J)=K(I+NRS-1,J)
48064           P(I,J)=P(I+NRS-1,J)
48065           V(I,J)=0D0
48066  1110   CONTINUE
48067  1120 CONTINUE
48068       MSTU91=MSTU(90)
48069       DO 1130 IZ=MSTU90+1,MSTU91
48070         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
48071         PARU9T(IZ)=PARU(90+IZ)
48072  1130 CONTINUE
48073       MSTU(90)=MSTU90
48074  
48075 C...Order particles in rank along the chain. Update mother pointer.
48076       DO 1150 I=NSAV+1,N
48077         DO 1140 J=1,5
48078           K(I-NSAV+N,J)=K(I,J)
48079           P(I-NSAV+N,J)=P(I,J)
48080  1140   CONTINUE
48081  1150 CONTINUE
48082       I1=NSAV
48083       DO 1180 I=N+1,2*N-NSAV
48084         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1180
48085         I1=I1+1
48086         DO 1160 J=1,5
48087           K(I1,J)=K(I,J)
48088           P(I1,J)=P(I,J)
48089  1160   CONTINUE
48090         IF(MSTU(16).NE.2) K(I1,3)=NSAV
48091         DO 1170 IZ=MSTU90+1,MSTU91
48092           IF(MSTU9T(IZ).EQ.I) THEN
48093             MSTU(90)=MSTU(90)+1
48094             MSTU(90+MSTU(90))=I1
48095             PARU(90+MSTU(90))=PARU9T(IZ)
48096           ENDIF
48097  1170   CONTINUE
48098  1180 CONTINUE
48099       DO 1210 I=2*N-NSAV,N+1,-1
48100         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1210
48101         I1=I1+1
48102         DO 1190 J=1,5
48103           K(I1,J)=K(I,J)
48104           P(I1,J)=P(I,J)
48105  1190   CONTINUE
48106         IF(MSTU(16).NE.2) K(I1,3)=NSAV
48107         DO 1200 IZ=MSTU90+1,MSTU91
48108           IF(MSTU9T(IZ).EQ.I) THEN
48109             MSTU(90)=MSTU(90)+1
48110             MSTU(90+MSTU(90))=I1
48111             PARU(90+MSTU(90))=PARU9T(IZ)
48112           ENDIF
48113  1200   CONTINUE
48114  1210 CONTINUE
48115  
48116 C...Boost back particle system. Set production vertices.
48117       IF(MBST.EQ.0) THEN
48118         MSTU(33)=1
48119         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
48120      &  DPS(3)/DPS(4))
48121       ELSE
48122         DO 1220 I=NSAV+1,N
48123           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
48124           IF(P(I,3).GT.0D0) THEN
48125             HHPEZ=(P(I,4)+P(I,3))*HHBZ
48126             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
48127             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
48128           ELSE
48129             HHPEZ=(P(I,4)-P(I,3))/HHBZ
48130             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
48131             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
48132           ENDIF
48133  1220   CONTINUE
48134       ENDIF
48135       DO 1240 I=NSAV+1,N
48136         DO 1230 J=1,4
48137           V(I,J)=V(IP,J)
48138  1230   CONTINUE
48139  1240 CONTINUE
48140  
48141       RETURN
48142       END
48143  
48144 C*********************************************************************
48145  
48146 C...PYJURF
48147 C...From three given input vectors in PJU the boost VJU from
48148 C...the "lab frame" to the junction rest frame is constructed.
48149  
48150       SUBROUTINE PYJURF(PJU,VJU)
48151  
48152 C...Double precision and integer declarations.
48153       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48154       IMPLICIT INTEGER(I-N)
48155  
48156 C...Input, output and local arrays.
48157       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
48158       DATA TWOPI/6.283186D0/
48159  
48160 C...Calculate masses and other invariants.
48161       DO 100 J=1,4
48162         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
48163   100 CONTINUE
48164       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
48165       PSUM(5)=SQRT(PSUM2)
48166       DO 120 I=1,3
48167         DO 110 J=1,3
48168           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
48169      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
48170   110   CONTINUE
48171   120 CONTINUE
48172  
48173 C...Pick I to be most massive parton and J to be the one closest to I.
48174       ITRY=0
48175       I=1
48176       IF(A(2,2).GT.A(1,1)) I=2
48177       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
48178   130 ITRY=ITRY+1
48179       J=1+MOD(I,3)
48180       K=1+MOD(J,3)
48181       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
48182         K=1+MOD(I,3)
48183         J=1+MOD(K,3)
48184       ENDIF
48185       PMI2=A(I,I)
48186       PMJ2=A(J,J)
48187       PMK2=A(K,K)
48188       AIJ=A(I,J)
48189       AIK=A(I,K)
48190       AJK=A(J,K)
48191  
48192 C...Trivial find new parton energies if all three partons are massless.
48193       IF(PMI2.LT.1D-4) THEN
48194         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
48195         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
48196         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
48197  
48198 C...Else find momentum range for parton I and values at extremes.
48199       ELSE
48200         PAIMIN=0D0
48201         PEIMIN=SQRT(PMI2)
48202         PEJMIN=AIJ/PEIMIN
48203         PEKMIN=AIK/PEIMIN
48204         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
48205         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
48206         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
48207         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
48208         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
48209         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
48210         HI=PEIMAX**2-0.25D0*PAIMAX**2
48211         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
48212      &  0.5D0*PAIMAX*AIJ)/HI
48213         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
48214      &  0.5D0*PAIMAX*AIK)/HI
48215         PEJMAX=SQRT(PAJMAX**2+PMJ2)
48216         PEKMAX=SQRT(PAKMAX**2+PMK2)
48217         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
48218  
48219 C...If unexpected values at upper endpoint then pick another parton.
48220         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
48221           I1=1+MOD(I,3)
48222           IF(A(I1,I1).GE.1D-4) THEN
48223             I=I1
48224             GOTO 130
48225           ENDIF
48226           ITRY=ITRY+1
48227           I1=1+MOD(I,3)
48228           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
48229             I=I1
48230             GOTO 130
48231           ENDIF
48232         ENDIF
48233  
48234 C..Start binary + linear search to find solution inside range.
48235         ITER=0
48236         ITMIN=0
48237         ITMAX=0
48238         PAI=0.5D0*(PAIMIN+PAIMAX)
48239   140   ITER=ITER+1
48240  
48241 C...Derive momentum of other two partons and distance to root.
48242         PEI=SQRT(PAI**2+PMI2)
48243         HI=PEI**2-0.25D0*PAI**2
48244         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
48245         PEJ=SQRT(PAJ**2+PMJ2)
48246         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
48247         PEK=SQRT(PAK**2+PMK2)
48248         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
48249  
48250 C...Pick next I momentum to explore, hopefully closer to root.
48251         IF(FNOW.GT.0D0) THEN
48252           PAIMIN=PAI
48253           FMIN=FNOW
48254           ITMIN=ITMIN+1
48255         ELSE
48256           PAIMAX=PAI
48257           FMAX=FNOW
48258           ITMAX=ITMAX+1
48259         ENDIF
48260         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
48261      &  THEN
48262           PAI=0.5D0*(PAIMIN+PAIMAX)
48263           GOTO 140
48264         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
48265      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
48266           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
48267           GOTO 140
48268         ENDIF
48269       ENDIF
48270  
48271 C...Now know energies in junction rest frame.
48272       PENEW(I)=PEI
48273       PENEW(J)=PEJ
48274       PENEW(K)=PEK
48275  
48276 C...Boost (copy of) partons to their rest frame.
48277       VXCM=-PSUM(1)/PSUM(5)
48278       VYCM=-PSUM(2)/PSUM(5)
48279       VZCM=-PSUM(3)/PSUM(5)
48280       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
48281       DO 150 I=1,3
48282         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
48283         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
48284         PCM(I,1)=PJU(I,1)+FAC2*VXCM
48285         PCM(I,2)=PJU(I,2)+FAC2*VYCM
48286         PCM(I,3)=PJU(I,3)+FAC2*VZCM
48287         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
48288         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
48289   150 CONTINUE
48290  
48291 C...Construct difference vectors and boost to junction rest frame.
48292       DO 160 J=1,3
48293         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
48294         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
48295   160 CONTINUE
48296       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
48297       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
48298       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
48299       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
48300       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
48301       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
48302       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
48303       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
48304       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
48305       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
48306       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
48307  
48308 C...Add two boosts, giving final result.
48309       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
48310       VJU(1)=VXJU+FCM*VXCM
48311       VJU(2)=VYJU+FCM*VYCM
48312       VJU(3)=VZJU+FCM*VZCM
48313       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
48314       VJU(5)=1D0
48315  
48316 C...In case of error in reconstruction: revert to CM frame of system.
48317       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
48318      &(PCM(1,5)*PCM(2,5))
48319       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
48320      &(PCM(1,5)*PCM(3,5))
48321       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
48322      &(PCM(2,5)*PCM(3,5))
48323       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
48324       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
48325       DO 170 I=1,3
48326         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
48327         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
48328         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
48329         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
48330         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
48331         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
48332         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
48333   170 CONTINUE
48334       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
48335      &(PCM(1,5)*PCM(2,5))
48336       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
48337      &(PCM(1,5)*PCM(3,5))
48338       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
48339      &(PCM(2,5)*PCM(3,5))
48340       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
48341       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
48342       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
48343         VJU(1)=VXCM
48344         VJU(2)=VYCM
48345         VJU(3)=VZCM
48346         VJU(4)=GAMCM
48347       ENDIF
48348  
48349       RETURN
48350       END
48351  
48352 C*********************************************************************
48353  
48354 C...PYINDF
48355 C...Handles the fragmentation of a jet system (or a single
48356 C...jet) according to independent fragmentation models.
48357  
48358       SUBROUTINE PYINDF(IP)
48359  
48360 C...Double precision and integer declarations.
48361       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48362       IMPLICIT INTEGER(I-N)
48363       INTEGER PYK,PYCHGE,PYCOMP
48364 C...Commonblocks.
48365       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
48366       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48367       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48368       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
48369 C...Local arrays.
48370       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
48371      &KFLO(2),PXO(2),PYO(2),WO(2)
48372  
48373 C.. MOPS error message
48374       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
48375      &' are not treated as expected in independent fragmentation')
48376  
48377 C...Reset counters. Identify parton system and take copy. Check flavour.
48378       NSAV=N
48379       MSTU90=MSTU(90)
48380       NJET=0
48381       KQSUM=0
48382       DO 100 J=1,5
48383         DPS(J)=0D0
48384   100 CONTINUE
48385       I=IP-1
48386   110 I=I+1
48387       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
48388         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
48389         IF(MSTU(21).GE.1) RETURN
48390       ENDIF
48391       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
48392       KC=PYCOMP(K(I,2))
48393       IF(KC.EQ.0) GOTO 110
48394       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
48395       IF(KQ.EQ.0) GOTO 110
48396       NJET=NJET+1
48397       IF(KQ.NE.2) KQSUM=KQSUM+KQ
48398       DO 120 J=1,5
48399         K(NSAV+NJET,J)=K(I,J)
48400         P(NSAV+NJET,J)=P(I,J)
48401         DPS(J)=DPS(J)+P(I,J)
48402   120 CONTINUE
48403       K(NSAV+NJET,3)=I
48404       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
48405      &K(I+1,1).EQ.2)) GOTO 110
48406       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
48407         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
48408         IF(MSTU(21).GE.1) RETURN
48409       ENDIF
48410  
48411 C...Boost copied system to CM frame. Find CM energy and sum flavours.
48412       IF(NJET.NE.1) THEN
48413         MSTU(33)=1
48414         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
48415      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
48416       ENDIF
48417       PECM=0D0
48418       DO 130 J=1,3
48419         NFI(J)=0
48420   130 CONTINUE
48421       DO 140 I=NSAV+1,NSAV+NJET
48422         PECM=PECM+P(I,4)
48423         KFA=IABS(K(I,2))
48424         IF(KFA.LE.3) THEN
48425           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
48426         ELSEIF(KFA.GT.1000) THEN
48427           KFLA=MOD(KFA/1000,10)
48428           KFLB=MOD(KFA/100,10)
48429           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
48430           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
48431         ENDIF
48432   140 CONTINUE
48433  
48434 C...Loop over attempts made. Reset counters.
48435       NTRY=0
48436   150 NTRY=NTRY+1
48437       IF(NTRY.GT.200) THEN
48438         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
48439         IF(MSTU(21).GE.1) RETURN
48440       ENDIF
48441       N=NSAV+NJET
48442       MSTU(90)=MSTU90
48443       DO 160 J=1,3
48444         NFL(J)=NFI(J)
48445         IFET(J)=0
48446         KFLF(J)=0
48447   160 CONTINUE
48448  
48449 C...Loop over jets to be fragmented.
48450       DO 230 IP1=NSAV+1,NSAV+NJET
48451         MSTJ(91)=0
48452         NSAV1=N
48453         MSTU91=MSTU(90)
48454  
48455 C...Initial flavour and momentum values. Jet along +z axis.
48456         KFLH=IABS(K(IP1,2))
48457         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
48458         KFLO(2)=0
48459         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
48460  
48461 C...Initial values for quark or diquark jet.
48462   170   IF(IABS(K(IP1,2)).NE.21) THEN
48463           NSTR=1
48464           KFLO(1)=K(IP1,2)
48465           CALL PYPTDI(0,PXO(1),PYO(1))
48466           WO(1)=WF
48467  
48468 C...Initial values for gluon treated like random quark jet.
48469         ELSEIF(MSTJ(2).LE.2) THEN
48470           NSTR=1
48471           IF(MSTJ(2).EQ.2) MSTJ(91)=1
48472           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
48473           CALL PYPTDI(0,PXO(1),PYO(1))
48474           WO(1)=WF
48475  
48476 C...Initial values for gluon treated like quark-antiquark jet pair,
48477 C...sharing energy according to Altarelli-Parisi splitting function.
48478         ELSE
48479           NSTR=2
48480           IF(MSTJ(2).EQ.4) MSTJ(91)=1
48481           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
48482           KFLO(2)=-KFLO(1)
48483           CALL PYPTDI(0,PXO(1),PYO(1))
48484           PXO(2)=-PXO(1)
48485           PYO(2)=-PYO(1)
48486           WO(1)=WF*PYR(0)**(1D0/3D0)
48487           WO(2)=WF-WO(1)
48488         ENDIF
48489  
48490 C...Initial values for rank, flavour, pT and W+.
48491         DO 220 ISTR=1,NSTR
48492   180     I=N
48493           MSTU(90)=MSTU91
48494           IRANK=0
48495           KFL1=KFLO(ISTR)
48496           PX1=PXO(ISTR)
48497           PY1=PYO(ISTR)
48498           W=WO(ISTR)
48499  
48500 C...New hadron. Generate flavour and hadron species.
48501   190     I=I+1
48502           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
48503             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
48504             IF(MSTU(21).GE.1) RETURN
48505           ENDIF
48506           IRANK=IRANK+1
48507           K(I,1)=1
48508           K(I,3)=IP1
48509           K(I,4)=0
48510           K(I,5)=0
48511   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
48512           IF(K(I,2).EQ.0) GOTO 180
48513           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
48514             IF(PYR(0).GT.PARJ(19)) GOTO 200
48515           ENDIF
48516  
48517 C...Find hadron mass. Generate four-momentum.
48518           P(I,5)=PYMASS(K(I,2))
48519           CALL PYPTDI(KFL1,PX2,PY2)
48520           P(I,1)=PX1+PX2
48521           P(I,2)=PY1+PY2
48522           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
48523           CALL PYZDIS(KFL1,KFL2,PR,Z)
48524           MZSAV=0
48525           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
48526             MZSAV=1
48527             MSTU(90)=MSTU(90)+1
48528             MSTU(90+MSTU(90))=I
48529             PARU(90+MSTU(90))=Z
48530           ENDIF
48531           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
48532           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
48533           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
48534      &    P(I,3).LE.0.001D0) THEN
48535             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
48536             P(I,3)=0.0001D0
48537             P(I,4)=SQRT(PR)
48538             Z=P(I,4)/W
48539           ENDIF
48540  
48541 C...Remaining flavour and momentum.
48542           KFL1=-KFL2
48543           PX1=-PX2
48544           PY1=-PY2
48545           W=(1D0-Z)*W
48546           DO 210 J=1,5
48547             V(I,J)=0D0
48548   210     CONTINUE
48549  
48550 C...Check if pL acceptable. Go back for new hadron if enough energy.
48551           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
48552             I=I-1
48553             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
48554           ENDIF
48555           IF(W.GT.PARJ(31)) GOTO 190
48556           N=I
48557   220   CONTINUE
48558         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
48559         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
48560  
48561 C...Rotate jet to new direction.
48562         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
48563         PHI=PYANGL(P(IP1,1),P(IP1,2))
48564         MSTU(33)=1
48565         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
48566         K(K(IP1,3),4)=NSAV1+1
48567         K(K(IP1,3),5)=N
48568  
48569 C...End of jet generation loop. Skip conservation in some cases.
48570   230 CONTINUE
48571       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
48572       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
48573  
48574 C...Subtract off produced hadron flavours, finished if zero.
48575       DO 240 I=NSAV+NJET+1,N
48576         KFA=IABS(K(I,2))
48577         KFLA=MOD(KFA/1000,10)
48578         KFLB=MOD(KFA/100,10)
48579         KFLC=MOD(KFA/10,10)
48580         IF(KFLA.EQ.0) THEN
48581           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
48582           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
48583         ELSE
48584           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
48585           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
48586           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
48587         ENDIF
48588   240 CONTINUE
48589       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48590      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48591       IF(NREQ.EQ.0) GOTO 320
48592  
48593 C...Take away flavour of low-momentum particles until enough freedom.
48594       NREM=0
48595   250 IREM=0
48596       P2MIN=PECM**2
48597       DO 260 I=NSAV+NJET+1,N
48598         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
48599         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
48600         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
48601   260 CONTINUE
48602       IF(IREM.EQ.0) GOTO 150
48603       K(IREM,1)=7
48604       KFA=IABS(K(IREM,2))
48605       KFLA=MOD(KFA/1000,10)
48606       KFLB=MOD(KFA/100,10)
48607       KFLC=MOD(KFA/10,10)
48608       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
48609       IF(K(IREM,1).EQ.8) GOTO 250
48610       IF(KFLA.EQ.0) THEN
48611         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
48612         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
48613         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
48614       ELSE
48615         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
48616         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
48617         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
48618       ENDIF
48619       NREM=NREM+1
48620       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48621      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48622       IF(NREQ.GT.NREM) GOTO 250
48623       DO 270 I=NSAV+NJET+1,N
48624         IF(K(I,1).EQ.8) K(I,1)=1
48625   270 CONTINUE
48626  
48627 C...Find combination of existing and new flavours for hadron.
48628   280 NFET=2
48629       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
48630       IF(NREQ.LT.NREM) NFET=1
48631       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
48632       DO 290 J=1,NFET
48633         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
48634         KFLF(J)=ISIGN(1,NFL(1))
48635         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
48636         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
48637   290 CONTINUE
48638       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
48639      &GOTO 280
48640       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
48641      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
48642      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
48643       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
48644       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
48645       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
48646       IF(NFET.LE.2) KFLF(3)=0
48647       IF(KFLF(3).NE.0) THEN
48648         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
48649      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
48650         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
48651      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
48652       ELSE
48653         KFLFC=KFLF(1)
48654       ENDIF
48655       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
48656       IF(KF.EQ.0) GOTO 280
48657       DO 300 J=1,MAX(2,NFET)
48658         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
48659   300 CONTINUE
48660  
48661 C...Store hadron at random among free positions.
48662       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
48663       DO 310 I=NSAV+NJET+1,N
48664         IF(K(I,1).EQ.7) NPOS=NPOS-1
48665         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
48666         K(I,1)=1
48667         K(I,2)=KF
48668         P(I,5)=PYMASS(K(I,2))
48669         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48670   310 CONTINUE
48671       NREM=NREM-1
48672       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
48673      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
48674       IF(NREM.GT.0) GOTO 280
48675  
48676 C...Compensate for missing momentum in global scheme (3 options).
48677   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
48678         DO 340 J=1,3
48679           PSI(J)=0D0
48680           DO 330 I=NSAV+NJET+1,N
48681             PSI(J)=PSI(J)+P(I,J)
48682   330     CONTINUE
48683   340   CONTINUE
48684         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
48685         PWS=0D0
48686         DO 350 I=NSAV+NJET+1,N
48687           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
48688           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
48689      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
48690           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
48691   350   CONTINUE
48692         DO 370 I=NSAV+NJET+1,N
48693           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
48694           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
48695      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
48696           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
48697           DO 360 J=1,3
48698             P(I,J)=P(I,J)-PSI(J)*PW/PWS
48699   360     CONTINUE
48700           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48701   370   CONTINUE
48702  
48703 C...Compensate for missing momentum withing each jet separately.
48704       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
48705         DO 390 I=N+1,N+NJET
48706           K(I,1)=0
48707           DO 380 J=1,5
48708             P(I,J)=0D0
48709   380     CONTINUE
48710   390   CONTINUE
48711         DO 410 I=NSAV+NJET+1,N
48712           IR1=K(I,3)
48713           IR2=N+IR1-NSAV
48714           K(IR2,1)=K(IR2,1)+1
48715           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
48716      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
48717           DO 400 J=1,3
48718             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
48719   400     CONTINUE
48720           P(IR2,4)=P(IR2,4)+P(I,4)
48721           P(IR2,5)=P(IR2,5)+PLS
48722   410   CONTINUE
48723         PSS=0D0
48724         DO 420 I=N+1,N+NJET
48725           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
48726   420   CONTINUE
48727         DO 440 I=NSAV+NJET+1,N
48728           IR1=K(I,3)
48729           IR2=N+IR1-NSAV
48730           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
48731      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
48732           DO 430 J=1,3
48733             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
48734      &      PLS*P(IR1,J)
48735   430     CONTINUE
48736           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48737   440   CONTINUE
48738       ENDIF
48739  
48740 C...Scale momenta for energy conservation.
48741       IF(MOD(MSTJ(3),5).NE.0) THEN
48742         PMS=0D0
48743         PES=0D0
48744         PQS=0D0
48745         DO 450 I=NSAV+NJET+1,N
48746           PMS=PMS+P(I,5)
48747           PES=PES+P(I,4)
48748           PQS=PQS+P(I,5)**2/P(I,4)
48749   450   CONTINUE
48750         IF(PMS.GE.PECM) GOTO 150
48751         NECO=0
48752   460   NECO=NECO+1
48753         PFAC=(PECM-PQS)/(PES-PQS)
48754         PES=0D0
48755         PQS=0D0
48756         DO 480 I=NSAV+NJET+1,N
48757           DO 470 J=1,3
48758             P(I,J)=PFAC*P(I,J)
48759   470     CONTINUE
48760           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
48761           PES=PES+P(I,4)
48762           PQS=PQS+P(I,5)**2/P(I,4)
48763   480   CONTINUE
48764         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
48765       ENDIF
48766  
48767 C...Origin of produced particles and parton daughter pointers.
48768   490 DO 500 I=NSAV+NJET+1,N
48769         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
48770         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
48771   500 CONTINUE
48772       DO 510 I=NSAV+1,NSAV+NJET
48773         I1=K(I,3)
48774         K(I1,1)=K(I1,1)+10
48775         IF(MSTU(16).NE.2) THEN
48776           K(I1,4)=NSAV+1
48777           K(I1,5)=NSAV+1
48778         ELSE
48779           K(I1,4)=K(I1,4)-NJET+1
48780           K(I1,5)=K(I1,5)-NJET+1
48781           IF(K(I1,5).LT.K(I1,4)) THEN
48782             K(I1,4)=0
48783             K(I1,5)=0
48784           ENDIF
48785         ENDIF
48786   510 CONTINUE
48787  
48788 C...Document independent fragmentation system. Remove copy of jets.
48789       NSAV=NSAV+1
48790       K(NSAV,1)=11
48791       K(NSAV,2)=93
48792       K(NSAV,3)=IP
48793       K(NSAV,4)=NSAV+1
48794       K(NSAV,5)=N-NJET+1
48795       DO 520 J=1,4
48796         P(NSAV,J)=DPS(J)
48797         V(NSAV,J)=V(IP,J)
48798   520 CONTINUE
48799       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
48800       V(NSAV,5)=0D0
48801       DO 540 I=NSAV+NJET,N
48802         DO 530 J=1,5
48803           K(I-NJET+1,J)=K(I,J)
48804           P(I-NJET+1,J)=P(I,J)
48805           V(I-NJET+1,J)=V(I,J)
48806   530   CONTINUE
48807   540 CONTINUE
48808       N=N-NJET+1
48809       DO 550 IZ=MSTU90+1,MSTU(90)
48810         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
48811   550 CONTINUE
48812  
48813 C...Boost back particle system. Set production vertices.
48814       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
48815      &DPS(2)/DPS(4),DPS(3)/DPS(4))
48816       DO 570 I=NSAV+1,N
48817         DO 560 J=1,4
48818           V(I,J)=V(IP,J)
48819   560   CONTINUE
48820   570 CONTINUE
48821  
48822       RETURN
48823       END
48824  
48825 C*********************************************************************
48826  
48827 C...PYDECY
48828 C...Handles the decay of unstable particles.
48829  
48830       SUBROUTINE PYDECY(IP)
48831  
48832 C...Double precision and integer declarations.
48833       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48834       IMPLICIT INTEGER(I-N)
48835       INTEGER PYK,PYCHGE,PYCOMP
48836 C...Commonblocks.
48837       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
48838       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48839       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48840       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
48841       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
48842 C...Local arrays.
48843       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
48844      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
48845       CHARACTER CIDC*4
48846       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
48847  
48848 C...Functions: momentum in two-particle decays and four-product.
48849       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
48850       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)
48851  
48852 C...Initial values.
48853       NTRY=0
48854       NSAV=N
48855       KFA=IABS(K(IP,2))
48856       KFS=ISIGN(1,K(IP,2))
48857       KC=PYCOMP(KFA)
48858       MSTJ(92)=0
48859  
48860 C...Choose lifetime and determine decay vertex.
48861       IF(K(IP,1).EQ.5) THEN
48862         V(IP,5)=0D0
48863       ELSEIF(K(IP,1).NE.4) THEN
48864         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
48865       ENDIF
48866       DO 100 J=1,4
48867         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
48868   100 CONTINUE
48869  
48870 C...Determine whether decay allowed or not.
48871       MOUT=0
48872       IF(MSTJ(22).EQ.2) THEN
48873         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
48874       ELSEIF(MSTJ(22).EQ.3) THEN
48875         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
48876       ELSEIF(MSTJ(22).EQ.4) THEN
48877         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
48878         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
48879       ENDIF
48880       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
48881         K(IP,1)=4
48882         RETURN
48883       ENDIF
48884  
48885 C...Interface to external tau decay library (for tau polarization).
48886       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
48887  
48888 C...Starting values for pointers and momenta.
48889         ITAU=IP
48890         DO 110 J=1,4
48891           PTAU(J)=P(ITAU,J)
48892           PCMTAU(J)=P(ITAU,J)
48893   110   CONTINUE
48894  
48895 C...Iterate to find position and code of mother of tau.
48896         IMTAU=ITAU
48897   120   IMTAU=K(IMTAU,3)
48898  
48899         IF(IMTAU.EQ.0) THEN
48900 C...If no known origin then impossible to do anything further.
48901           KFORIG=0
48902           IORIG=0
48903  
48904         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
48905 C...If tau -> tau + gamma then add gamma energy and loop.
48906           IF(K(K(IMTAU,4),2).EQ.22) THEN
48907             DO 130 J=1,4
48908               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
48909   130       CONTINUE
48910           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
48911             DO 140 J=1,4
48912               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
48913   140       CONTINUE
48914           ENDIF
48915           GOTO 120
48916  
48917         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
48918 C...If coming from weak decay of hadron then W is not stored in record,
48919 C...but can be reconstructed by adding neutrino momentum.
48920           KFORIG=-ISIGN(24,K(ITAU,2))
48921           IORIG=0
48922           DO 160 II=K(IMTAU,4),K(IMTAU,5)
48923             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
48924               DO 150 J=1,4
48925                 PCMTAU(J)=PCMTAU(J)+P(II,J)
48926   150         CONTINUE
48927             ENDIF
48928   160     CONTINUE
48929  
48930         ELSE
48931 C...If coming from resonance decay then find latest copy of this
48932 C...resonance (may not completely agree).
48933           KFORIG=K(IMTAU,2)
48934           IORIG=IMTAU
48935           DO 170 II=IMTAU+1,IP-1
48936             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
48937      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
48938   170     CONTINUE
48939           DO 180 J=1,4
48940             PCMTAU(J)=P(IORIG,J)
48941   180     CONTINUE
48942         ENDIF
48943  
48944 C...Boost tau to rest frame of production process (where known)
48945 C...and rotate it to sit along +z axis.
48946         DO 190 J=1,3
48947           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
48948   190   CONTINUE
48949         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
48950      &  -DBETAU(2),-DBETAU(3))
48951         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
48952         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
48953         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
48954         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
48955  
48956 C...Call tau decay routine (if meaningful) and fill extra info.
48957         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
48958           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
48959           DO 200 II=NSAV+1,NSAV+NDECAY
48960             K(II,1)=1
48961             K(II,3)=IP
48962             K(II,4)=0
48963             K(II,5)=0
48964   200     CONTINUE
48965           N=NSAV+NDECAY
48966         ENDIF
48967  
48968 C...Boost back decay tau and decay products.
48969         DO 210 J=1,4
48970           P(ITAU,J)=PTAU(J)
48971   210   CONTINUE
48972         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
48973           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
48974           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
48975      &    DBETAU(2),DBETAU(3))
48976  
48977 C...Skip past ordinary tau decay treatment.
48978           MMAT=0
48979           MBST=0
48980           ND=0
48981           GOTO 630
48982         ENDIF
48983       ENDIF
48984  
48985 C...B-Bbar mixing: flip sign of meson appropriately.
48986       MMIX=0
48987       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
48988         XBBMIX=PARJ(76)
48989         IF(KFA.EQ.531) XBBMIX=PARJ(77)
48990         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
48991         IF(MMIX.EQ.1) KFS=-KFS
48992       ENDIF
48993  
48994 C...Check existence of decay channels. Particle/antiparticle rules.
48995       KCA=KC
48996       IF(MDCY(KC,2).GT.0) THEN
48997         MDMDCY=MDME(MDCY(KC,2),2)
48998         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
48999       ENDIF
49000       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
49001         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
49002         RETURN
49003       ENDIF
49004       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
49005       IF(KCHG(KC,3).EQ.0) THEN
49006         KFSP=1
49007         KFSN=0
49008         IF(PYR(0).GT.0.5D0) KFS=-KFS
49009       ELSEIF(KFS.GT.0) THEN
49010         KFSP=1
49011         KFSN=0
49012       ELSE
49013         KFSP=0
49014         KFSN=1
49015       ENDIF
49016  
49017 C...Sum branching ratios of allowed decay channels.
49018   220 NOPE=0
49019       BRSU=0D0
49020       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
49021         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
49022      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
49023         IF(MDME(IDL,2).GT.100) GOTO 230
49024         NOPE=NOPE+1
49025         BRSU=BRSU+BRAT(IDL)
49026   230 CONTINUE
49027       IF(NOPE.EQ.0) THEN
49028         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
49029         RETURN
49030       ENDIF
49031  
49032 C...Select decay channel among allowed ones.
49033   240 RBR=BRSU*PYR(0)
49034       IDL=MDCY(KCA,2)-1
49035   250 IDL=IDL+1
49036       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
49037      &KFSN*MDME(IDL,1).NE.3) THEN
49038         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
49039       ELSEIF(MDME(IDL,2).GT.100) THEN
49040         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
49041       ELSE
49042         IDC=IDL
49043         RBR=RBR-BRAT(IDL)
49044         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
49045       ENDIF
49046  
49047 C...Start readout of decay channel: matrix element, reset counters.
49048       MMAT=MDME(IDC,2)
49049   260 NTRY=NTRY+1
49050       IF(MOD(NTRY,200).EQ.0) THEN
49051         WRITE(CIDC,'(I4)') IDC
49052 C...Do not print warning for some well-known special cases.
49053         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
49054      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
49055      &  CIDC)
49056         GOTO 240
49057       ENDIF
49058       IF(NTRY.GT.1000) THEN
49059         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
49060         IF(MSTU(21).GE.1) RETURN
49061       ENDIF
49062       I=N
49063       NP=0
49064       NQ=0
49065       MBST=0
49066       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
49067       DO 270 J=1,4
49068         PV(1,J)=0D0
49069         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
49070   270 CONTINUE
49071       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
49072       PV(1,5)=P(IP,5)
49073       PS=0D0
49074       PSQ=0D0
49075       MREM=0
49076       MHADDY=0
49077       IF(KFA.GT.80) MHADDY=1
49078 C.. Random flavour and popcorn system memory.
49079       IRNDMO=0
49080       JTMO=0
49081       MSTU(121)=0
49082       MSTU(125)=10
49083  
49084 C...Read out decay products. Convert to standard flavour code.
49085       JTMAX=5
49086       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
49087       DO 280 JT=1,JTMAX
49088         IF(JT.LE.5) KP=KFDP(IDC,JT)
49089         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
49090         IF(KP.EQ.0) GOTO 280
49091         KPA=IABS(KP)
49092         KCP=PYCOMP(KPA)
49093         IF(KPA.GT.80) MHADDY=1
49094         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
49095           KFP=KP
49096         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
49097           KFP=KFS*KP
49098         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
49099           KFP=-KFS*MOD(KFA/10,10)
49100         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
49101           KFP=KFS*(100*MOD(KFA/10,100)+3)
49102         ELSEIF(KPA.EQ.81) THEN
49103           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
49104         ELSEIF(KP.EQ.82) THEN
49105           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
49106           IF(KFP.EQ.0) GOTO 260
49107           KFP=-KFP
49108           IRNDMO=1
49109           MSTJ(93)=1
49110           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
49111         ELSEIF(KP.EQ.-82) THEN
49112           KFP=MSTU(124)
49113         ENDIF
49114         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
49115  
49116 C...Add decay product to event record or to quark flavour list.
49117         KFPA=IABS(KFP)
49118         KQP=KCHG(KCP,2)
49119         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
49120           NQ=NQ+1
49121           KFLO(NQ)=KFP
49122 C...set rndmflav popcorn system pointer
49123           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
49124           MSTJ(93)=2
49125           PSQ=PSQ+PYMASS(KFLO(NQ))
49126         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
49127      &    MOD(NQ,2).EQ.1) THEN
49128           NQ=NQ-1
49129           PS=PS-P(I,5)
49130           K(I,1)=1
49131           KFI=K(I,2)
49132           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
49133           IF(K(I,2).EQ.0) GOTO 260
49134           MSTJ(93)=1
49135           P(I,5)=PYMASS(K(I,2))
49136           PS=PS+P(I,5)
49137         ELSE
49138           I=I+1
49139           NP=NP+1
49140           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
49141           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
49142           K(I,1)=1+MOD(NQ,2)
49143           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
49144           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
49145           K(I,2)=KFP
49146           K(I,3)=IP
49147           K(I,4)=0
49148           K(I,5)=0
49149           P(I,5)=PYMASS(KFP)
49150           PS=PS+P(I,5)
49151         ENDIF
49152   280 CONTINUE
49153  
49154 C...Check masses for resonance decays.
49155       IF(MHADDY.EQ.0) THEN
49156         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
49157       ENDIF
49158  
49159 C...Choose decay multiplicity in phase space model.
49160   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
49161         PSP=PS
49162         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
49163         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
49164   300   NTRY=NTRY+1
49165 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
49166         IF(IRNDMO.EQ.0) THEN
49167            MSTU(121)=0
49168            JTMO=0
49169         ELSEIF(IRNDMO.EQ.1) THEN
49170            IRNDMO=2
49171         ELSE
49172            GOTO 260
49173         ENDIF
49174         IF(NTRY.GT.1000) THEN
49175           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
49176           IF(MSTU(21).GE.1) RETURN
49177         ENDIF
49178         IF(MMAT.LE.20) THEN
49179           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
49180      &    SIN(PARU(2)*PYR(0))
49181           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
49182           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
49183           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
49184           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
49185           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
49186         ELSE
49187           ND=MMAT-20
49188         ENDIF
49189 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
49190         MSTU(125)=ND-NQ/2
49191         IF(MSTU(121).GT.MSTU(125)) GOTO 300
49192  
49193 C...Form hadrons from flavour content.
49194         DO 310 JT=1,NQ
49195           KFL1(JT)=KFLO(JT)
49196   310   CONTINUE
49197         IF(ND.EQ.NP+NQ/2) GOTO 330
49198         DO 320 I=N+NP+1,N+ND-NQ/2
49199 C.. Stick to started popcorn system, else pick side at random
49200           JT=JTMO
49201           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
49202           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
49203           IF(K(I,2).EQ.0) GOTO 300
49204           MSTU(125)=MSTU(125)-1
49205           JTMO=0
49206           IF(MSTU(121).GT.0) JTMO=JT
49207           KFL1(JT)=-KFL2
49208   320   CONTINUE
49209   330   JT=2
49210         JT2=3
49211         JT3=4
49212         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
49213         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
49214      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
49215         IF(JT.EQ.3) JT2=2
49216         IF(JT.EQ.4) JT3=2
49217         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
49218         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
49219         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
49220         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
49221  
49222 C...Check that sum of decay product masses not too large.
49223         PS=PSP
49224         DO 340 I=N+NP+1,N+ND
49225           K(I,1)=1
49226           K(I,3)=IP
49227           K(I,4)=0
49228           K(I,5)=0
49229           P(I,5)=PYMASS(K(I,2))
49230           PS=PS+P(I,5)
49231   340   CONTINUE
49232         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
49233  
49234 C...Rescale energy to subtract off spectator quark mass.
49235       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
49236      &  .AND.NP.GE.3) THEN
49237         PS=PS-P(N+NP,5)
49238         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
49239         DO 350 J=1,5
49240           P(N+NP,J)=PQT*PV(1,J)
49241           PV(1,J)=(1D0-PQT)*PV(1,J)
49242   350   CONTINUE
49243         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
49244         ND=NP-1
49245         MREM=1
49246  
49247 C...Fully specified final state: check mass broadening effects.
49248       ELSE
49249         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
49250         ND=NP
49251       ENDIF
49252  
49253 C...Determine position of grandmother, number of sisters.
49254       NM=0
49255       KFAS=0
49256       MSGN=0
49257       IF(MMAT.EQ.3) THEN
49258         IM=K(IP,3)
49259         IF(IM.LT.0.OR.IM.GE.IP) IM=0
49260         IF(IM.NE.0) KFAM=IABS(K(IM,2))
49261         IF(IM.NE.0) THEN
49262           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
49263             IF(K(IL,3).EQ.IM) NM=NM+1
49264             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
49265   360     CONTINUE
49266           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
49267      &    MOD(KFAM/1000,10).NE.0) NM=0
49268           IF(NM.EQ.2) THEN
49269             KFAS=IABS(K(ISIS,2))
49270             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
49271      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
49272           ENDIF
49273         ENDIF
49274       ENDIF
49275  
49276 C...Kinematics of one-particle decays.
49277       IF(ND.EQ.1) THEN
49278         DO 370 J=1,4
49279           P(N+1,J)=P(IP,J)
49280   370   CONTINUE
49281         GOTO 630
49282       ENDIF
49283  
49284 C...Calculate maximum weight ND-particle decay.
49285       PV(ND,5)=P(N+ND,5)
49286       IF(ND.GE.3) THEN
49287         WTMAX=1D0/WTCOR(ND-2)
49288         PMAX=PV(1,5)-PS+P(N+ND,5)
49289         PMIN=0D0
49290         DO 380 IL=ND-1,1,-1
49291           PMAX=PMAX+P(N+IL,5)
49292           PMIN=PMIN+P(N+IL+1,5)
49293           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
49294   380   CONTINUE
49295       ENDIF
49296  
49297 C...Find virtual gamma mass in Dalitz decay.
49298   390 IF(ND.EQ.2) THEN
49299       ELSEIF(MMAT.EQ.2) THEN
49300         PMES=4D0*PMAS(11,1)**2
49301         PMRHO2=PMAS(131,1)**2
49302         PGRHO2=PMAS(131,2)**2
49303   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
49304         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
49305      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
49306      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
49307         IF(WT.LT.PYR(0)) GOTO 400
49308         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
49309  
49310 C...M-generator gives weight. If rejected, try again.
49311       ELSE
49312   410   RORD(1)=1D0
49313         DO 440 IL1=2,ND-1
49314           RSAV=PYR(0)
49315           DO 420 IL2=IL1-1,1,-1
49316             IF(RSAV.LE.RORD(IL2)) GOTO 430
49317             RORD(IL2+1)=RORD(IL2)
49318   420     CONTINUE
49319   430     RORD(IL2+1)=RSAV
49320   440   CONTINUE
49321         RORD(ND)=0D0
49322         WT=1D0
49323         DO 450 IL=ND-1,1,-1
49324           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
49325      &    (PV(1,5)-PS)
49326           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
49327   450   CONTINUE
49328         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
49329       ENDIF
49330  
49331 C...Perform two-particle decays in respective CM frame.
49332   460 DO 480 IL=1,ND-1
49333         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
49334         UE(3)=2D0*PYR(0)-1D0
49335         PHI=PARU(2)*PYR(0)
49336         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
49337         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
49338         DO 470 J=1,3
49339           P(N+IL,J)=PA*UE(J)
49340           PV(IL+1,J)=-PA*UE(J)
49341   470   CONTINUE
49342         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
49343         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
49344   480 CONTINUE
49345  
49346 C...Lorentz transform decay products to lab frame.
49347       DO 490 J=1,4
49348         P(N+ND,J)=PV(ND,J)
49349   490 CONTINUE
49350       DO 530 IL=ND-1,1,-1
49351         DO 500 J=1,3
49352           BE(J)=PV(IL,J)/PV(IL,4)
49353   500   CONTINUE
49354         GA=PV(IL,4)/PV(IL,5)
49355         DO 520 I=N+IL,N+ND
49356           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
49357           DO 510 J=1,3
49358             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
49359   510     CONTINUE
49360           P(I,4)=GA*(P(I,4)+BEP)
49361   520   CONTINUE
49362   530 CONTINUE
49363  
49364 C...Check that no infinite loop in matrix element weight.
49365       NTRY=NTRY+1
49366       IF(NTRY.GT.800) GOTO 560
49367  
49368 C...Matrix elements for omega and phi decays.
49369       IF(MMAT.EQ.1) THEN
49370         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
49371      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
49372      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
49373         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
49374  
49375 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
49376       ELSEIF(MMAT.EQ.2) THEN
49377         FOUR12=FOUR(N+1,N+2)
49378         FOUR13=FOUR(N+1,N+3)
49379         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
49380      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
49381         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
49382  
49383 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
49384 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
49385 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
49386       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
49387         FOUR10=FOUR(IP,IM)
49388         FOUR12=FOUR(IP,N+1)
49389         FOUR02=FOUR(IM,N+1)
49390         PMS1=P(IP,5)**2
49391         PMS0=P(IM,5)**2
49392         PMS2=P(N+1,5)**2
49393         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
49394         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
49395      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
49396         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
49397         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
49398         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
49399  
49400 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
49401       ELSEIF(MMAT.EQ.4) THEN
49402         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
49403         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
49404         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
49405         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
49406      &  ((1D0-HX3)/(HX1*HX2))**2
49407         IF(WT.LT.2D0*PYR(0)) GOTO 390
49408         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
49409      &  GOTO 390
49410  
49411 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
49412       ELSEIF(MMAT.EQ.41) THEN
49413         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
49414         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
49415         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
49416  
49417 C...Matrix elements for weak decays (only semileptonic for c and b)
49418       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
49419      &  .AND.ND.EQ.3) THEN
49420         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
49421         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
49422         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
49423       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
49424         DO 550 J=1,4
49425           P(N+NP+1,J)=0D0
49426           DO 540 IS=N+3,N+NP
49427             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
49428   540     CONTINUE
49429   550   CONTINUE
49430         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
49431         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
49432         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
49433       ENDIF
49434  
49435 C...Scale back energy and reattach spectator.
49436   560 IF(MREM.EQ.1) THEN
49437         DO 570 J=1,5
49438           PV(1,J)=PV(1,J)/(1D0-PQT)
49439   570   CONTINUE
49440         ND=ND+1
49441         MREM=0
49442       ENDIF
49443  
49444 C...Low invariant mass for system with spectator quark gives particle,
49445 C...not two jets. Readjust momenta accordingly.
49446       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
49447         MSTJ(93)=1
49448         PM2=PYMASS(K(N+2,2))
49449         MSTJ(93)=1
49450         PM3=PYMASS(K(N+3,2))
49451         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
49452      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
49453         K(N+2,1)=1
49454         KFTEMP=K(N+2,2)
49455         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
49456         IF(K(N+2,2).EQ.0) GOTO 260
49457         P(N+2,5)=PYMASS(K(N+2,2))
49458         PS=P(N+1,5)+P(N+2,5)
49459         PV(2,5)=P(N+2,5)
49460         MMAT=0
49461         ND=2
49462         GOTO 460
49463       ELSEIF(MMAT.EQ.44) THEN
49464         MSTJ(93)=1
49465         PM3=PYMASS(K(N+3,2))
49466         MSTJ(93)=1
49467         PM4=PYMASS(K(N+4,2))
49468         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
49469      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
49470         K(N+3,1)=1
49471         KFTEMP=K(N+3,2)
49472         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
49473         IF(K(N+3,2).EQ.0) GOTO 260
49474         P(N+3,5)=PYMASS(K(N+3,2))
49475         DO 580 J=1,3
49476           P(N+3,J)=P(N+3,J)+P(N+4,J)
49477   580   CONTINUE
49478         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)
49479         HA=P(N+1,4)**2-P(N+2,4)**2
49480         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
49481         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
49482      &  (P(N+1,3)-P(N+2,3))**2
49483         HD=(PV(1,4)-P(N+3,4))**2
49484         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
49485         HF=HD*HC-HB**2
49486         HG=HD*HC-HA*HB
49487         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
49488         DO 590 J=1,3
49489           PCOR=HH*(P(N+1,J)-P(N+2,J))
49490           P(N+1,J)=P(N+1,J)+PCOR
49491           P(N+2,J)=P(N+2,J)-PCOR
49492   590   CONTINUE
49493         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)
49494         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)
49495         ND=ND-1
49496       ENDIF
49497  
49498 C...Check invariant mass of W jets. May give one particle or start over.
49499   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
49500      &.AND.IABS(K(N+1,2)).LT.10) THEN
49501         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
49502         MSTJ(93)=1
49503         PM1=PYMASS(K(N+1,2))
49504         MSTJ(93)=1
49505         PM2=PYMASS(K(N+2,2))
49506         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
49507         KFLDUM=INT(1.5D0+PYR(0))
49508         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
49509         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
49510         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
49511         PSM=PYMASS(KF1)+PYMASS(KF2)
49512         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
49513         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
49514         IF(MMAT.EQ.48) GOTO 390
49515         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
49516         K(N+1,1)=1
49517         KFTEMP=K(N+1,2)
49518         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
49519         IF(K(N+1,2).EQ.0) GOTO 260
49520         P(N+1,5)=PYMASS(K(N+1,2))
49521         K(N+2,2)=K(N+3,2)
49522         P(N+2,5)=P(N+3,5)
49523         PS=P(N+1,5)+P(N+2,5)
49524         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
49525         PV(2,5)=P(N+3,5)
49526         MMAT=0
49527         ND=2
49528         GOTO 460
49529       ENDIF
49530  
49531 C...Phase space decay of partons from W decay.
49532   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
49533         KFLO(1)=K(N+1,2)
49534         KFLO(2)=K(N+2,2)
49535         K(N+1,1)=K(N+3,1)
49536         K(N+1,2)=K(N+3,2)
49537         DO 620 J=1,5
49538           PV(1,J)=P(N+1,J)+P(N+2,J)
49539           P(N+1,J)=P(N+3,J)
49540   620   CONTINUE
49541         PV(1,5)=PMR
49542         N=N+1
49543         NP=0
49544         NQ=2
49545         PS=0D0
49546         MSTJ(93)=2
49547         PSQ=PYMASS(KFLO(1))
49548         MSTJ(93)=2
49549         PSQ=PSQ+PYMASS(KFLO(2))
49550         MMAT=11
49551         GOTO 290
49552       ENDIF
49553  
49554 C...Boost back for rapidly moving particle.
49555   630 N=N+ND
49556       IF(MBST.EQ.1) THEN
49557         DO 640 J=1,3
49558           BE(J)=P(IP,J)/P(IP,4)
49559   640   CONTINUE
49560         GA=P(IP,4)/P(IP,5)
49561         DO 660 I=NSAV+1,N
49562           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
49563           DO 650 J=1,3
49564             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
49565   650     CONTINUE
49566           P(I,4)=GA*(P(I,4)+BEP)
49567   660   CONTINUE
49568       ENDIF
49569  
49570 C...Fill in position of decay vertex.
49571       DO 680 I=NSAV+1,N
49572         DO 670 J=1,4
49573           V(I,J)=VDCY(J)
49574   670   CONTINUE
49575         V(I,5)=0D0
49576   680 CONTINUE
49577  
49578 C...Set up for parton shower evolution from jets.
49579       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
49580         K(NSAV+1,1)=3
49581         K(NSAV+2,1)=3
49582         K(NSAV+3,1)=3
49583         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
49584         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
49585         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
49586         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
49587         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
49588         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
49589         MSTJ(92)=-(NSAV+1)
49590       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
49591         K(NSAV+2,1)=3
49592         K(NSAV+3,1)=3
49593         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
49594         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
49595         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
49596         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
49597         MSTJ(92)=NSAV+2
49598       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
49599      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
49600         K(NSAV+1,1)=3
49601         K(NSAV+2,1)=3
49602         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
49603         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
49604         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
49605         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
49606         MSTJ(92)=NSAV+1
49607       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
49608      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
49609         MSTJ(92)=NSAV+1
49610       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
49611      &  THEN
49612         K(NSAV+1,1)=3
49613         K(NSAV+2,1)=3
49614         K(NSAV+3,1)=3
49615         KCP=PYCOMP(K(NSAV+1,2))
49616         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
49617         JCON=4
49618         IF(KQP.LT.0) JCON=5
49619         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
49620         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
49621         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
49622         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
49623         MSTJ(92)=NSAV+1
49624       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
49625         K(NSAV+1,1)=3
49626         K(NSAV+3,1)=3
49627         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
49628         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
49629         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
49630         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
49631         MSTJ(92)=NSAV+1
49632       ENDIF
49633  
49634 C...Mark decayed particle; special option for B-Bbar mixing.
49635       IF(K(IP,1).EQ.5) K(IP,1)=15
49636       IF(K(IP,1).LE.10) K(IP,1)=11
49637       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
49638       K(IP,4)=NSAV+1
49639       K(IP,5)=N
49640  
49641       RETURN
49642       END
49643  
49644  
49645 C*********************************************************************
49646  
49647 C...PYDCYK
49648 C...Handles flavour production in the decay of unstable particles
49649 C...and small string clusters.
49650  
49651       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
49652  
49653 C...Double precision and integer declarations.
49654       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49655       IMPLICIT INTEGER(I-N)
49656       INTEGER PYK,PYCHGE,PYCOMP
49657 C...Commonblocks.
49658       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49659       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49660       SAVE /PYDAT1/,/PYDAT2/
49661  
49662  
49663 C.. Call PYKFDI directly if no popcorn option is on
49664       IF(MSTJ(12).LT.2) THEN
49665          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
49666          MSTU(124)=KFL3
49667          RETURN
49668       ENDIF
49669  
49670       KFL3=0
49671       KF=0
49672       IF(KFL1.EQ.0) RETURN
49673       KF1A=IABS(KFL1)
49674       KF2A=IABS(KFL2)
49675  
49676       NSTO=130
49677       NMAX=MIN(MSTU(125),10)
49678  
49679 C.. Identify rank 0 cluster qq
49680       IRANK=1
49681       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
49682  
49683       IF(KF2A.GT.0)THEN
49684 C.. Join jets: Fails if store not empty
49685          IF(MSTU(121).GT.0) THEN
49686             MSTU(121)=0
49687             RETURN
49688          ENDIF
49689          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
49690       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
49691 C.. Pick popcorn meson from store, return same qq, decrease store
49692          KF=MSTU(NSTO+MSTU(121))
49693          KFL3=-KFL1
49694          MSTU(121)=MSTU(121)-1
49695       ELSE
49696 C.. Generate new flavour. Then done if no diquark is generated
49697   100    CALL PYKFDI(KFL1,0,KFL3,KF)
49698          IF(MSTU(121).EQ.-1) GOTO 100
49699          MSTU(124)=KFL3
49700          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
49701  
49702 C.. Simple case if no dynamical popcorn suppressions are considered
49703          IF(MSTJ(12).LT.4) THEN
49704             IF(MSTU(121).EQ.0) RETURN
49705             NMES=1
49706             KFPREV=-KFL3
49707             CALL PYKFDI(KFPREV,0,KFL3,KFM)
49708 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
49709             IF(IABS(KFL3).LE.10)THEN
49710                KFL3=-KFPREV
49711                RETURN
49712             ENDIF
49713             GOTO 120
49714          ENDIF
49715  
49716 C test output qq against fake Gamma, then return if no popcorn.
49717          GB=2D0
49718          IF(IRANK.NE.0)THEN
49719             CALL PYZDIS(1,2103,5D0,Z)
49720             GB=5D0*(1D0-Z)/Z
49721             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
49722                MSTU(121)=0
49723                GOTO 100
49724             ENDIF
49725          ENDIF
49726          IF(MSTU(121).EQ.0) RETURN
49727  
49728 C..Set store size memory. Pick fake dynamical variables of qq.
49729          NMES=MSTU(121)
49730          CALL PYPTDI(1,PX3,PY3)
49731          X=1D0
49732          POPM=0D0
49733          G=GB
49734          POPG=GB
49735  
49736 C.. Pick next popcorn meson, test with fake dynamical variables
49737   110    KFPREV=-KFL3
49738          PX1=-PX3
49739          PY1=-PY3
49740          CALL PYKFDI(KFPREV,0,KFL3,KFM)
49741          IF(MSTU(121).EQ.-1) GOTO 100
49742          CALL PYPTDI(KFL3,PX3,PY3)
49743          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
49744          CALL PYZDIS(KFPREV,KFL3,PM,Z)
49745          G=(1D0-Z)*(G+PM/Z)
49746          X=(1D0-Z)*X
49747  
49748          PTST=1D0
49749          GTST=1D0
49750          RTST=PYR(0)
49751          IF(MSTJ(12).GT.4)THEN
49752             POPMN=SQRT((1D0-X)*(G/X-GB))
49753             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
49754             PTST=EXP((POPM-POPMN)*PARF(193))
49755             POPM=POPMN
49756          ENDIF
49757          IF(IRANK.NE.0)THEN
49758             POPGN=X*GB
49759             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
49760             POPG=POPGN
49761          ENDIF
49762          IF(RTST.GT.PTST*GTST)THEN
49763             MSTU(121)=0
49764             IF(RTST.GT.PTST) MSTU(121)=-1
49765             GOTO 100
49766          ENDIF
49767  
49768 C.. Store meson
49769   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
49770          IF(MSTU(121).GT.0) GOTO 110
49771  
49772 C.. Test accepted system size. If OK set global popcorn size variable.
49773          IF(NMES.GT.NMAX)THEN
49774             KF=0
49775             KFL3=0
49776             RETURN
49777          ENDIF
49778          MSTU(121)=NMES
49779       ENDIF
49780  
49781       RETURN
49782       END
49783  
49784 C********************************************************************
49785  
49786 C...PYKFDI
49787 C...Generates a new flavour pair and combines off a hadron
49788  
49789       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
49790  
49791 C...Double precision and integer declarations.
49792       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49793       IMPLICIT INTEGER(I-N)
49794       INTEGER PYK,PYCHGE,PYCOMP
49795 C...Commonblocks.
49796       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49797       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49798       SAVE /PYDAT1/,/PYDAT2/
49799 C...Local arrays.
49800       DIMENSION PD(7)
49801  
49802       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
49803  
49804 C...Default flavour values. Input consistency checks.
49805       KF1A=IABS(KFL1)
49806       KF2A=IABS(KFL2)
49807       KFL3=0
49808       KF=0
49809       IF(KF1A.EQ.0) RETURN
49810       IF(KF2A.NE.0)THEN
49811         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
49812         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
49813         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
49814       ENDIF
49815  
49816 C...Check if tabulated flavour probabilities are to be used.
49817       IF(MSTJ(15).EQ.1) THEN
49818         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
49819      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
49820      &        ' together with MSTJ(12)>=5 modification')
49821         KTAB1=-1
49822         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
49823         KFL1A=MOD(KF1A/1000,10)
49824         KFL1B=MOD(KF1A/100,10)
49825         KFL1S=MOD(KF1A,10)
49826         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
49827      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
49828         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
49829         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
49830         KTAB2=0
49831         IF(KF2A.NE.0) THEN
49832           KTAB2=-1
49833           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
49834           KFL2A=MOD(KF2A/1000,10)
49835           KFL2B=MOD(KF2A/100,10)
49836           KFL2S=MOD(KF2A,10)
49837           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
49838      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
49839           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
49840         ENDIF
49841         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
49842       ENDIF
49843  
49844 C.. Recognize rank 0 diquark case
49845   100 IRANK=1
49846       KFDIQ=MAX(KF1A,KF2A)
49847       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
49848  
49849 C.. Join two flavours to meson or baryon. Test for popcorn.
49850       IF(KF2A.GT.0)THEN
49851         MBARY=0
49852         IF(KFDIQ.GT.10) THEN
49853           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
49854      &         CALL PYNMES(KFDIQ)
49855           IF(MSTU(121).NE.0) THEN
49856              MSTU(121)=0
49857              RETURN
49858           ENDIF
49859           MBARY=2
49860         ENDIF
49861         KFQOLD=KF1A
49862         KFQVER=KF2A
49863         GOTO 130
49864       ENDIF
49865  
49866 C.. Separate incoming flavours, curtain flavour consistency check
49867       KFIN=KFL1
49868       KFQOLD=KF1A
49869       KFQPOP=KF1A/10000
49870       IF(KF1A.GT.10)THEN
49871          KFIN=-KFL1
49872          KFL1A=MOD(KF1A/1000,10)
49873          KFL1B=MOD(KF1A/100,10)
49874          IF(IRANK.EQ.0)THEN
49875             QAWT=1D0
49876             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
49877             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
49878             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
49879          ENDIF
49880          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
49881              MSTU(121)=0
49882              RETURN
49883           ENDIF
49884          KFQOLD=KFL1A+KFL1B-KFQPOP
49885       ENDIF
49886  
49887 C...Meson/baryon choice. Set number of mesons if starting a popcorn
49888 C...system.
49889   110 MBARY=0
49890       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
49891          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
49892             MBARY=1
49893             CALL PYNMES(0)
49894          ENDIF
49895       ELSEIF(KF1A.GT.10)THEN
49896          MBARY=2
49897          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
49898          IF(MSTU(121).GT.0) MBARY=-1
49899       ENDIF
49900  
49901 C..x->H+q: Choose single vertex quark. Jump to form hadron.
49902       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
49903          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
49904          KFL3=ISIGN(KFQVER,-KFIN)
49905          GOTO 130
49906       ENDIF
49907  
49908 C..x->H+qq: (IDW=proper PARF position for diquark weights)
49909       IDW=160
49910       IF(MBARY.EQ.1)THEN
49911          IF(MSTU(121).EQ.0) IDW=150
49912          SQWT=PARF(IDW+1)
49913          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
49914          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
49915 C..   Shift to s-curtain parameters if needed
49916          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
49917             PARF(194)=PARF(138)*PARF(139)
49918             PARF(193)=PARJ(8)+PARJ(9)
49919          ENDIF
49920       ENDIF
49921  
49922 C.. x->H+qq: Get vertex quark
49923       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
49924          IDW=MSTU(122)
49925          MSTU(121)=MSTU(121)-1
49926          IF(IDW.EQ.170) THEN
49927             IF(MSTU(121).EQ.0)THEN
49928                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
49929             ELSE
49930                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
49931             ENDIF
49932          ELSE
49933             IF(MSTU(121).EQ.0)THEN
49934                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
49935             ELSE
49936                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
49937             ENDIF
49938          ENDIF
49939          IPOS=200+30*IPOS+1
49940  
49941          IMES=-1
49942          RMES=PYR(0)*PARF(194)
49943   120    IMES=IMES+1
49944          RMES=RMES-PARF(IPOS+IMES)
49945          IF(IMES.EQ.30) THEN
49946             MSTU(121)=-1
49947             KF=-111
49948             RETURN
49949          ENDIF
49950          IF(RMES.GT.0D0) GOTO 120
49951          KMUL=IMES/5
49952          KFJ=2*KMUL+1
49953          IF(KMUL.EQ.2) KFJ=10003
49954          IF(KMUL.EQ.3) KFJ=10001
49955          IF(KMUL.EQ.4) KFJ=20003
49956          IF(KMUL.EQ.5) KFJ=5
49957          IDIAG=0
49958          KFQVER=MOD(IMES,5)+1
49959          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
49960          IF(KFQVER.GT.3)THEN
49961             IDIAG=KFQVER-3
49962             KFQVER=KFQOLD
49963          ENDIF
49964       ELSE
49965          IF(MBARY.EQ.-1) IDW=170
49966          SQWT=PARF(IDW+2)
49967          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
49968          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
49969          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
49970          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
49971             KFQVER=KFQPOP
49972             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
49973          ENDIF
49974       ENDIF
49975  
49976 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
49977       KFLDS=3
49978       IF(KFQPOP.NE.KFQVER)THEN
49979          SWT=PARF(IDW+7)
49980          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
49981          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
49982          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
49983       ENDIF
49984       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
49985      &      +10000*KFQPOP
49986       KFL3=ISIGN(KFDIQ,KFIN)
49987  
49988 C..x->M+y: flavour for meson.
49989   130 IF(MBARY.LE.0)THEN
49990         KFLA=MAX(KFQOLD,KFQVER)
49991         KFLB=MIN(KFQOLD,KFQVER)
49992         KFS=ISIGN(1,KFL1)
49993         IF(KFLA.NE.KFQOLD) KFS=-KFS
49994 C... Form meson, with spin and flavour mixing for diagonal states.
49995         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
49996            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
49997            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
49998            RETURN
49999         ENDIF
50000         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
50001         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
50002         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
50003         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
50004           IF(PYR(0).LT.PARJ(14)) KMUL=2
50005         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
50006           RMUL=PYR(0)
50007           IF(RMUL.LT.PARJ(15)) KMUL=3
50008           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
50009           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
50010         ENDIF
50011         KFLS=3
50012         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
50013         IF(KMUL.EQ.5) KFLS=5
50014         IF(KFLA.NE.KFLB)THEN
50015           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
50016         ELSE
50017           RMIX=PYR(0)
50018           IMIX=2*KFLA+10*KMUL
50019           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
50020      &    INT(RMIX+PARF(IMIX)))+KFLS
50021           IF(KFLA.GE.4) KF=110*KFLA+KFLS
50022         ENDIF
50023         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
50024         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
50025  
50026 C..Optional extra suppression of eta and eta'.
50027 C..Allow shift to qq->B+q in old version (set IRANK to 0)
50028         IF(KF.EQ.221.OR.KF.EQ.331)THEN
50029            IF(PYR(0).GT.PARJ(25+KF/300))THEN
50030               IF(KF2A.GT.0) GOTO 130
50031               IF(MSTJ(12).LT.4) IRANK=0
50032               GOTO 110
50033            ENDIF
50034         ENDIF
50035         MSTU(121)=0
50036  
50037 C.. x->B+y: Flavour for baryon
50038       ELSE
50039         KFLA=KFQVER
50040         IF(KF1A.LE.10) KFLA=KFQOLD
50041         KFLB=MOD(KFDIQ/1000,10)
50042         KFLC=MOD(KFDIQ/100,10)
50043         KFLDS=MOD(KFDIQ,10)
50044         KFLD=MAX(KFLA,KFLB,KFLC)
50045         KFLF=MIN(KFLA,KFLB,KFLC)
50046         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
50047  
50048 C...  SU(6) factors for formation of baryon.
50049         KBARY=3
50050         KDMAX=5
50051         KFLG=KFLB
50052         IF(KFLB.NE.KFLC)THEN
50053            KBARY=2*KFLDS-1
50054            KDMAX=1+KFLDS/2
50055            IF(KFLB.GT.2) KDMAX=KDMAX+2
50056         ENDIF
50057         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
50058            KBARY=KBARY+1
50059            KFLG=KFLA
50060         ENDIF
50061  
50062         SU6MAX=PARF(140+KDMAX)
50063         SU6DEC=PARJ(18)
50064         SU6S  =PARF(146)
50065         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
50066            SU6MAX=1D0
50067            SU6DEC=1D0
50068            SU6S  =1D0
50069         ENDIF
50070         SU6OCT=PARF(60+KBARY)
50071         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
50072            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
50073            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
50074         ELSE
50075            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
50076         ENDIF
50077         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
50078  
50079 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
50080         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
50081            MSTU(121)=0
50082            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
50083            GOTO 110
50084         ENDIF
50085  
50086 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
50087         KSIG=1
50088         KFLS=2
50089         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
50090         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
50091           KSIG=KFLDS/3
50092           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
50093         ENDIF
50094         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
50095         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
50096       ENDIF
50097       RETURN
50098  
50099 C...Use tabulated probabilities to select new flavour and hadron.
50100   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
50101         KT3L=1
50102         KT3U=6
50103       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
50104         KT3L=1
50105         KT3U=6
50106       ELSEIF(KTAB2.EQ.0) THEN
50107         KT3L=1
50108         KT3U=22
50109       ELSE
50110         KT3L=KTAB2
50111         KT3U=KTAB2
50112       ENDIF
50113       RFL=0D0
50114       DO 160 KTS=0,2
50115         DO 150 KT3=KT3L,KT3U
50116           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
50117   150   CONTINUE
50118   160 CONTINUE
50119       RFL=PYR(0)*RFL
50120       DO 180 KTS=0,2
50121         KTABS=KTS
50122         DO 170 KT3=KT3L,KT3U
50123           KTAB3=KT3
50124           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
50125           IF(RFL.LE.0D0) GOTO 190
50126   170   CONTINUE
50127   180 CONTINUE
50128   190 CONTINUE
50129  
50130 C...Reconstruct flavour of produced quark/diquark.
50131       IF(KTAB3.LE.6) THEN
50132         KFL3A=KTAB3
50133         KFL3B=0
50134         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
50135       ELSE
50136         KFL3A=1
50137         IF(KTAB3.GE.8) KFL3A=2
50138         IF(KTAB3.GE.11) KFL3A=3
50139         IF(KTAB3.GE.16) KFL3A=4
50140         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
50141         KFL3=1000*KFL3A+100*KFL3B+1
50142         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
50143      &  KFL3+2
50144         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
50145       ENDIF
50146  
50147 C...Reconstruct meson code.
50148       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
50149      &KFL3B.NE.0)) THEN
50150         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
50151      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
50152         KF=110+2*KTABS+1
50153         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
50154         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
50155      &  25*KTABS)) KF=330+2*KTABS+1
50156       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
50157         KFLA=MAX(KTAB1,KTAB3)
50158         KFLB=MIN(KTAB1,KTAB3)
50159         KFS=ISIGN(1,KFL1)
50160         IF(KFLA.NE.KF1A) KFS=-KFS
50161         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
50162       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
50163         KFS=ISIGN(1,KFL1)
50164         IF(KFL1A.EQ.KFL3A) THEN
50165           KFLA=MAX(KFL1B,KFL3B)
50166           KFLB=MIN(KFL1B,KFL3B)
50167           IF(KFLA.NE.KFL1B) KFS=-KFS
50168         ELSEIF(KFL1A.EQ.KFL3B) THEN
50169           KFLA=KFL3A
50170           KFLB=KFL1B
50171           KFS=-KFS
50172         ELSEIF(KFL1B.EQ.KFL3A) THEN
50173           KFLA=KFL1A
50174           KFLB=KFL3B
50175         ELSEIF(KFL1B.EQ.KFL3B) THEN
50176           KFLA=MAX(KFL1A,KFL3A)
50177           KFLB=MIN(KFL1A,KFL3A)
50178           IF(KFLA.NE.KFL1A) KFS=-KFS
50179         ELSE
50180           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
50181           GOTO 100
50182         ENDIF
50183         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
50184  
50185 C...Reconstruct baryon code.
50186       ELSE
50187         IF(KTAB1.GE.7) THEN
50188           KFLA=KFL3A
50189           KFLB=KFL1A
50190           KFLC=KFL1B
50191         ELSE
50192           KFLA=KFL1A
50193           KFLB=KFL3A
50194           KFLC=KFL3B
50195         ENDIF
50196         KFLD=MAX(KFLA,KFLB,KFLC)
50197         KFLF=MIN(KFLA,KFLB,KFLC)
50198         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
50199         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
50200         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
50201       ENDIF
50202  
50203 C...Check that constructed flavour code is an allowed one.
50204       IF(KFL2.NE.0) KFL3=0
50205       KC=PYCOMP(KF)
50206       IF(KC.EQ.0) THEN
50207         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
50208      &  'failed')
50209         GOTO 100
50210       ENDIF
50211  
50212       RETURN
50213       END
50214  
50215 C*********************************************************************
50216  
50217 C...PYNMES
50218 C...Generates number of popcorn mesons and stores some relevant
50219 C...parameters.
50220  
50221       SUBROUTINE PYNMES(KFDIQ)
50222  
50223 C...Double precision and integer declarations.
50224       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50225       IMPLICIT INTEGER(I-N)
50226       INTEGER PYK,PYCHGE,PYCOMP
50227 C...Commonblocks.
50228       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50229       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50230       SAVE /PYDAT1/,/PYDAT2/
50231  
50232       MSTU(121)=0
50233       IF(MSTJ(12).LT.2) RETURN
50234  
50235 C..Old version: Get 1 or 0 popcorn mesons
50236       IF(MSTJ(12).LT.5)THEN
50237          POPWT=PARF(131)
50238          IF(KFDIQ.NE.0) THEN
50239             KFDIQA=IABS(KFDIQ)
50240             KFA=MOD(KFDIQA/1000,10)
50241             KFB=MOD(KFDIQA/100,10)
50242             KFS=MOD(KFDIQA,10)
50243             POPWT=PARF(132)
50244             IF(KFA.EQ.3) POPWT=PARF(133)
50245             IF(KFB.EQ.3) POPWT=PARF(134)
50246             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
50247          ENDIF
50248          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
50249          RETURN
50250       ENDIF
50251  
50252 C..New version: Store popcorn- or rank 0 diquark parameters
50253       MSTU(122)=170
50254       PARF(193)=PARJ(8)
50255       PARF(194)=PARF(139)
50256       IF(KFDIQ.NE.0) THEN
50257          MSTU(122)=180
50258          PARF(193)=PARJ(10)
50259          PARF(194)=PARF(140)
50260       ENDIF
50261       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
50262          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
50263      &        '(PYNMES:) Neglecting too large popcorn possibility')
50264          RETURN
50265       ENDIF
50266  
50267 C..New version: Get number of popcorn mesons
50268   100 RTST=PYR(0)
50269       MSTU(121)=-1
50270   110 MSTU(121)=MSTU(121)+1
50271       RTST=RTST/PARF(194)
50272       IF(RTST.LT.1D0) GOTO 110
50273       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
50274      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
50275       RETURN
50276       END
50277  
50278 C***************************************************************
50279  
50280 C...PYKFIN
50281 C...Precalculates a set of diquark and popcorn weights.
50282  
50283       SUBROUTINE PYKFIN
50284  
50285 C...Double precision and integer declarations.
50286       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50287       IMPLICIT INTEGER(I-N)
50288       INTEGER PYK,PYCHGE,PYCOMP
50289 C...Commonblocks.
50290       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50291       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50292       SAVE /PYDAT1/,/PYDAT2/
50293  
50294       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
50295  
50296  
50297       MSTU(123)=1
50298 C..Diquark indices for dimensional variables
50299       IUD1=1
50300       IUU1=2
50301       IUS0=3
50302       ISU0=4
50303       IUS1=5
50304       ISU1=6
50305       ISS1=7
50306  
50307 C.. *** SU(6) factors **
50308 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
50309       PARF(146)=1D0
50310       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
50311       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
50312      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
50313       DO 100 I=1,6
50314          SU6(I)=PARF(60+I)
50315          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
50316   100 CONTINUE
50317       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
50318       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
50319       DO 110 I=1,6
50320          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
50321          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
50322   110 CONTINUE
50323  
50324 C..SU(6)max            q       q'     s,c,b
50325       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
50326       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
50327       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
50328       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
50329       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
50330       SU6M(IUS0)=SU6M(ISU0)
50331       SU6M(ISS1)=SU6M(IUU1)
50332       SU6M(IUS1)=SU6M(ISU1)
50333  
50334 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
50335       PARF(141)=SU6MUD
50336       PARF(142)=SU6M(IUD1)
50337       PARF(143)=SU6M(ISU0)
50338       PARF(144)=SU6M(ISU1)
50339       PARF(145)=SU6M(ISS1)
50340  
50341 C..diquark SU(6) survival =
50342 C..sum over quark (quark tunnel weight)*(SU(6)).
50343       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
50344       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
50345       DMB(IUS0)=DMB(ISU0)
50346       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
50347       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
50348       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
50349       DMB(IUS1)=DMB(ISU1)
50350       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
50351  
50352 C.. *** Tunneling factors for Diquark production***
50353 C.. T: half a curtain pair = sqrt(curtain pair factor)
50354       IF(MSTJ(12).GE.5) THEN
50355          PMUD0=PYMASS(2101)
50356          PMUD1=PYMASS(2103)-PMUD0
50357          PMUS0=PYMASS(3201)-PMUD0
50358          PMUS1=PYMASS(3203)-PMUS0-PMUD0
50359          PMSS1=PYMASS(3303)-PMUS0-PMUD0
50360          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
50361          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
50362          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
50363          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
50364          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
50365          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
50366          QBB(IUD1)=QBB(IUU1)
50367       ELSE
50368          PAR2M=SQRT(PARJ(2))
50369          PAR3M=SQRT(PARJ(3))
50370          PAR4M=SQRT(PARJ(4))
50371          QBB(ISU0)=PAR2M*PAR3M
50372          QBB(IUS0)=PAR3M
50373          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
50374          QBB(IUU1)=PAR4M
50375          QBB(ISU1)=PAR4M*QBB(ISU0)
50376          QBB(IUS1)=PAR4M*QBB(IUS0)
50377          QBB(IUD1)=PAR4M
50378       ENDIF
50379  
50380 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
50381       QBM(ISU0)=QBB(ISU0)
50382       QBM(IUS0)=PARJ(2)*QBB(IUS0)
50383       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
50384       QBM(IUU1)=6D0*QBB(IUU1)
50385       QBM(ISU1)=3D0*QBB(ISU1)
50386       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
50387       QBM(IUD1)=3D0*QBB(IUD1)
50388  
50389 C.. Combine T and tau to diquark weight for q-> B+B+..
50390       DO 120 I=1,7
50391          QBB(I)=QBB(I)*QBM(I)
50392   120 CONTINUE
50393  
50394       IF(MSTJ(12).GE.5)THEN
50395 C..New version: tau  for rank 0 diquark.
50396          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
50397          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
50398          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
50399          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
50400          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
50401          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
50402          DMB(7+IUD1)=DMB(7+IUU1)/2D0
50403  
50404 C..New version: curtain flavour ratios.
50405 C.. s/u for q->B+M+...
50406 C.. s/u for rank 0 diquark: su -> ...M+B+...
50407 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
50408          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
50409          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
50410          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
50411          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
50412          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
50413      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
50414       ELSE
50415 C..Old version: reset unused rank 0 diquark weights and
50416 C..             unused diquark SU(6) survival weights
50417          DO 130 I=1,7
50418             IF(MSTJ(12).LT.3) DMB(I)=1D0
50419             DMB(7+I)=1D0
50420   130    CONTINUE
50421  
50422 C..Old version: Shuffle PARJ(7) into tau
50423          QBM(IUS0)=QBM(IUS0)*PARJ(7)
50424          QBM(ISS1)=QBM(ISS1)*PARJ(7)
50425          QBM(IUS1)=QBM(IUS1)*PARJ(7)
50426  
50427 C..Old version: curtain flavour ratios.
50428 C.. s/u for q->B+M+...
50429 C.. s/u for rank 0 diquark: su -> ...M+B+...
50430 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
50431          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
50432          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
50433          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
50434          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
50435       ENDIF
50436  
50437 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
50438 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
50439       DO 140 I=1,7
50440          DMB(7+I)=DMB(7+I)*DMB(I)
50441          DMB(I)=DMB(I)*QBM(I)
50442          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
50443          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
50444   140 CONTINUE
50445  
50446 C.. *** Popcorn factors ***
50447  
50448       IF(MSTJ(12).LT.5)THEN
50449 C.. Old version: Resulting popcorn weights.
50450          PARF(138)=PARJ(6)
50451          WS=PARF(135)*PARF(138)
50452          WQ=WU*PARJ(5)/3D0
50453          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
50454          PARF(133)=WQ*
50455      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
50456          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
50457          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
50458      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
50459      &        (1D0+QBB(IUD1)+QBB(IUU1)+
50460      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
50461       ELSE
50462 C..New version: Store weights for popcorn mesons,
50463 C..get prel. popcorn weights.
50464          DO 150 IPOS=201,1400
50465             PARF(IPOS)=0D0
50466   150    CONTINUE
50467          DO 160 I=138,140
50468             PARF(I)=0D0
50469   160    CONTINUE
50470          IPOS=200
50471          PARF(193)=PARJ(8)
50472          DO 240 MR=0,7,7
50473            IF(MR.EQ.7) PARF(193)=PARJ(10)
50474            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
50475      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
50476            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
50477            DO 230 NMES=0,1
50478              IF(NMES.EQ.1) SQWT=PARJ(2)
50479              DO 220 KFQPOP=1,4
50480                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
50481                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
50482                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
50483                   QQWT=0.5D0
50484                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
50485                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
50486                ENDIF
50487                DO 210 KFQOLD =1,5
50488                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
50489                   IF(NMES.EQ.1) THEN
50490                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
50491                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
50492                   ENDIF
50493                   WTTOT=0D0
50494                   WTFAIL=0D0
50495       DO 190 KMUL=0,5
50496          PJWT=PARJ(12+KMUL)
50497          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
50498          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
50499          IF(PJWT.LE.0D0) GOTO 190
50500          IF(PJWT.GT.1D0) PJWT=1D0
50501          IMES=5*KMUL
50502          IMIX=2*KFQOLD+10*KMUL
50503          KFJ=2*KMUL+1
50504          IF(KMUL.EQ.2) KFJ=10003
50505          IF(KMUL.EQ.3) KFJ=10001
50506          IF(KMUL.EQ.4) KFJ=20003
50507          IF(KMUL.EQ.5) KFJ=5
50508          DO 180 KFQVER =1,3
50509             KFLA=MAX(KFQOLD,KFQVER)
50510             KFLB=MIN(KFQOLD,KFQVER)
50511             SWT=PARJ(11+KFLA/3+KFLA/4)
50512             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
50513             SWT=SWT*PJWT
50514             QWT=SQWT/(2D0+SQWT)
50515             IF(KFQVER.LT.3)THEN
50516                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
50517                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
50518             ENDIF
50519             IF(KFQVER.NE.KFQOLD)THEN
50520                IMES=IMES+1
50521                KFM=100*KFLA+10*KFLB+KFJ
50522                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
50523                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
50524                WTTOT=WTTOT+PARF(IPOS+IMES)
50525             ELSE
50526                DO 170 ID=3,5
50527                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
50528                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
50529                   IF(ID.EQ.5) DWT=PARF(IMIX)
50530                   KFM=110*(ID-2)+KFJ
50531                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
50532                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
50533                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
50534                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
50535                      PARF(IPOS+5*KMUL+ID)=
50536      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
50537                   ENDIF
50538                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
50539   170          CONTINUE
50540             ENDIF
50541   180    CONTINUE
50542   190 CONTINUE
50543                   DO 200 IMES=1,30
50544                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
50545   200             CONTINUE
50546                   IF(MR.EQ.7) PARF(140)=
50547      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
50548                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
50549      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
50550                   IPOS=IPOS+30
50551   210           CONTINUE
50552   220         CONTINUE
50553   230       CONTINUE
50554   240    CONTINUE
50555          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
50556          MSTU(121)=0
50557  
50558       ENDIF
50559  
50560 C..Recombine diquark weights to flavour and spin ratios
50561       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
50562      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
50563       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
50564       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
50565       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
50566       PARF(155)=QBB(ISU1)/QBB(ISU0)
50567       PARF(156)=QBB(IUS1)/QBB(IUS0)
50568       PARF(157)=QBB(IUD1)
50569  
50570       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
50571      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
50572       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
50573       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
50574       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
50575       PARF(165)=QBM(ISU1)/QBM(ISU0)
50576       PARF(166)=QBM(IUS1)/QBM(IUS0)
50577       PARF(167)=QBM(IUD1)
50578  
50579       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
50580      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
50581       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
50582       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
50583       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
50584       PARF(175)=DMB(ISU1)/DMB(ISU0)
50585       PARF(176)=DMB(IUS1)/DMB(IUS0)
50586       PARF(177)=DMB(IUD1)
50587  
50588       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
50589       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
50590       PARF(187)=DMB(7+IUD1)
50591  
50592       RETURN
50593       END
50594  
50595  
50596 C*********************************************************************
50597  
50598 C...PYPTDI
50599 C...Generates transverse momentum according to a Gaussian.
50600  
50601       SUBROUTINE PYPTDI(KFL,PX,PY)
50602  
50603 C...Double precision and integer declarations.
50604       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50605       IMPLICIT INTEGER(I-N)
50606       INTEGER PYK,PYCHGE,PYCOMP
50607 C...Commonblocks.
50608       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50609       SAVE /PYDAT1/
50610  
50611 C...Generate p_T and azimuthal angle, gives p_x and p_y.
50612       KFLA=IABS(KFL)
50613       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
50614       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
50615       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
50616       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
50617       PHI=PARU(2)*PYR(0)
50618       PX=PT*COS(PHI)
50619       PY=PT*SIN(PHI)
50620  
50621       RETURN
50622       END
50623  
50624 C*********************************************************************
50625  
50626 C...PYZDIS
50627 C...Generates the longitudinal splitting variable z.
50628  
50629       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
50630  
50631 C...Double precision and integer declarations.
50632       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50633       IMPLICIT INTEGER(I-N)
50634       INTEGER PYK,PYCHGE,PYCOMP
50635 C...Commonblocks.
50636       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50637       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50638       SAVE /PYDAT1/,/PYDAT2/
50639  
50640 C...Check if heavy flavour fragmentation.
50641       KFLA=IABS(KFL1)
50642       KFLB=IABS(KFL2)
50643       KFLH=KFLA
50644       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
50645  
50646 C...Lund symmetric scaling function: determine parameters of shape.
50647       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
50648      &MSTJ(11).GE.4) THEN
50649         FA=PARJ(41)
50650         IF(MSTJ(91).EQ.1) FA=PARJ(43)
50651         IF(KFLB.GE.10) FA=FA+PARJ(45)
50652         FBB=PARJ(42)
50653         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
50654         FB=FBB*PR
50655         FC=1D0
50656         IF(KFLA.GE.10) FC=FC-PARJ(45)
50657         IF(KFLB.GE.10) FC=FC+PARJ(45)
50658         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
50659           FRED=PARJ(46)
50660           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
50661           FC=FC+FRED*FBB*PARF(100+KFLH)**2
50662         ENDIF
50663         MC=1
50664         IF(ABS(FC-1D0).GT.0.01D0) MC=2
50665  
50666 C...Determine position of maximum. Special cases for a = 0 or a = c.
50667         IF(FA.LT.0.02D0) THEN
50668           MA=1
50669           ZMAX=1D0
50670           IF(FC.GT.FB) ZMAX=FB/FC
50671         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
50672           MA=2
50673           ZMAX=FB/(FB+FC)
50674         ELSE
50675           MA=3
50676           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
50677           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
50678         ENDIF
50679  
50680 C...Subdivide z range if distribution very peaked near endpoint.
50681         MMAX=2
50682         IF(ZMAX.LT.0.1D0) THEN
50683           MMAX=1
50684           ZDIV=2.75D0*ZMAX
50685           IF(MC.EQ.1) THEN
50686             FINT=1D0-LOG(ZDIV)
50687           ELSE
50688             ZDIVC=ZDIV**(1D0-FC)
50689             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
50690           ENDIF
50691         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
50692           MMAX=3
50693           FSCB=SQRT(4D0+(FC/FB)**2)
50694           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
50695           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
50696           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
50697           FINT=1D0+FB*(1D0-ZDIV)
50698         ENDIF
50699  
50700 C...Choice of z, preweighted for peaks at low or high z.
50701   100   Z=PYR(0)
50702         FPRE=1D0
50703         IF(MMAX.EQ.1) THEN
50704           IF(FINT*PYR(0).LE.1D0) THEN
50705             Z=ZDIV*Z
50706           ELSEIF(MC.EQ.1) THEN
50707             Z=ZDIV**Z
50708             FPRE=ZDIV/Z
50709           ELSE
50710             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
50711             FPRE=(ZDIV/Z)**FC
50712           ENDIF
50713         ELSEIF(MMAX.EQ.3) THEN
50714           IF(FINT*PYR(0).LE.1D0) THEN
50715             Z=ZDIV+LOG(Z)/FB
50716             FPRE=EXP(FB*(Z-ZDIV))
50717           ELSE
50718             Z=ZDIV+Z*(1D0-ZDIV)
50719           ENDIF
50720         ENDIF
50721  
50722 C...Weighting according to correct formula.
50723         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
50724         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
50725         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
50726         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
50727         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
50728  
50729 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
50730       ELSE
50731         FC=PARJ(50+MAX(1,KFLH))
50732         IF(MSTJ(91).EQ.1) FC=PARJ(59)
50733   110   Z=PYR(0)
50734         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
50735           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
50736         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
50737           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
50738      &    GOTO 110
50739         ELSE
50740           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
50741           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
50742         ENDIF
50743       ENDIF
50744  
50745       RETURN
50746       END
50747  
50748 C*********************************************************************
50749  
50750 C...PYSHOW
50751 C...Generates timelike parton showers from given partons.
50752  
50753       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
50754  
50755 C...Double precision and integer declarations.
50756       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50757       IMPLICIT INTEGER(I-N)
50758       INTEGER PYK,PYCHGE,PYCOMP
50759 C...Parameter statement to help give large particle numbers.
50760       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50761      &KEXCIT=4000000,KDIMEN=5000000)
50762 C...Commonblocks.
50763       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
50764       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50765       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50766       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
50767 C...Local arrays.
50768       DIMENSION PMTH(5,50),PS(5),PMA(19),PMSD(10),IEP(10),IPA(10),
50769      &KFLA(10),KFLD(10),KFL(10),ITRY(10),ISI(10),ISL(10),DP(10),
50770      &DPT(5,4),KSH(0:40),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
50771      &PHIIIS(2,2),ISII(2),ISSET(3),ISCOL(0:40),ISCHG(0:40),
50772      &IREF(1000)
50773  
50774 C...Check that QMAX not too low.
50775       IF(MSTJ(41).LE.0) THEN
50776         RETURN
50777       ELSEIF(MSTJ(41).EQ.1) THEN
50778         IF(QMAX.LE.PARJ(82).AND.IP2.GT.-8) RETURN
50779       ELSE
50780         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GT.-8)
50781      &  RETURN
50782       ENDIF
50783  
50784 C...Initialization of cutoff masses etc.
50785       DO 100 IFL=0,40
50786         ISCOL(IFL)=0
50787         ISCHG(IFL)=0
50788         KSH(IFL)=0
50789   100 CONTINUE
50790       ISCOL(21)=1
50791       KSH(21)=1
50792       PMTH(1,21)=PYMASS(21)
50793       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
50794       PMTH(3,21)=2D0*PMTH(2,21)
50795       PMTH(4,21)=PMTH(3,21)
50796       PMTH(5,21)=PMTH(3,21)
50797       PMTH(1,22)=PYMASS(22)
50798       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
50799       PMTH(3,22)=2D0*PMTH(2,22)
50800       PMTH(4,22)=PMTH(3,22)
50801       PMTH(5,22)=PMTH(3,22)
50802       PMQTH1=PARJ(82)
50803       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
50804       PMQT1E=MIN(PMQTH1,PARJ(90))
50805       PMQTH2=PMTH(2,21)
50806       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
50807       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
50808       DO 110 IFL=1,5
50809         ISCOL(IFL)=1
50810         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
50811         KSH(IFL)=1
50812         PMTH(1,IFL)=PYMASS(IFL)
50813         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
50814         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
50815         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
50816         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
50817   110 CONTINUE
50818       DO 120 IFL=11,15,2
50819         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
50820         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
50821         PMTH(1,IFL)=PYMASS(IFL)
50822         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
50823         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
50824         PMTH(4,IFL)=PMTH(3,IFL)
50825         PMTH(5,IFL)=PMTH(3,IFL)
50826   120 CONTINUE
50827       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
50828       ALAMS=PARJ(81)**2
50829       ALFM=LOG(PT2MIN/ALAMS)
50830  
50831 C...Store positions of shower initiating partons.
50832       MPSPD=0
50833       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
50834         NPA=1
50835         IPA(1)=IP1
50836       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
50837      &  MSTU(32))) THEN
50838         NPA=2
50839         IPA(1)=IP1
50840         IPA(2)=IP2
50841       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
50842      &  .AND.IP2.GE.-7) THEN
50843         NPA=IABS(IP2)
50844         DO 130 I=1,NPA
50845           IPA(I)=IP1+I-1
50846   130   CONTINUE
50847       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
50848      &IP2.EQ.-8) THEN
50849         MPSPD=1
50850         NPA=2
50851         IPA(1)=IP1+6
50852         IPA(2)=IP1+7
50853       ELSE
50854         CALL PYERRM(12,
50855      &  '(PYSHOW:) failed to reconstruct showering system')
50856         IF(MSTU(21).GE.1) RETURN
50857       ENDIF
50858  
50859 C...Check on phase space available for emission.
50860       IREJ=0
50861       DO 140 J=1,5
50862         PS(J)=0D0
50863   140 CONTINUE
50864       PM=0D0
50865       KFLA(2)=0
50866       DO 160 I=1,NPA
50867         KFLA(I)=IABS(K(IPA(I),2))
50868         PMA(I)=P(IPA(I),5)
50869 C...Special cutoff masses for initial partons (may be a heavy quark,
50870 C...squark, ..., and need not be on the mass shell).
50871         IR=30+I
50872         IF(NPA.LE.1) IREF(I)=IR
50873         IF(NPA.GE.2) IREF(I+1)=IR
50874         IF(KFLA(I).LE.8) THEN
50875           ISCOL(IR)=1
50876           IF(MSTJ(41).GE.2) ISCHG(IR)=1
50877         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
50878      &  KFLA(I).EQ.17) THEN
50879           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
50880         ELSEIF(KFLA(I).EQ.21) THEN
50881           ISCOL(IR)=1
50882         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
50883      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
50884           ISCOL(IR)=1
50885         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
50886           ISCOL(IR)=1
50887         ENDIF
50888         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
50889         PMTH(1,IR)=PMA(I)
50890         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
50891           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
50892           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
50893           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
50894           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
50895         ELSEIF(ISCOL(IR).EQ.1) THEN
50896           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
50897           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
50898           PMTH(4,IR)=PMTH(3,IR)
50899           PMTH(5,IR)=PMTH(3,IR)
50900         ELSEIF(ISCHG(IR).EQ.1) THEN
50901           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
50902           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
50903           PMTH(4,IR)=PMTH(3,IR)
50904           PMTH(5,IR)=PMTH(3,IR)
50905         ENDIF
50906         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
50907         PM=PM+PMA(I)
50908         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
50909         DO 150 J=1,4
50910           PS(J)=PS(J)+P(IPA(I),J)
50911   150   CONTINUE
50912   160 CONTINUE
50913       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
50914       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
50915       IF(NPA.EQ.1) PS(5)=PS(4)
50916       IF(PS(5).LE.PM+PMQT1E) RETURN
50917  
50918 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
50919       KFSRCE=0
50920       IF(IP2.LE.0) THEN
50921       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
50922         KFSRCE=IABS(K(K(IP1,3),2))
50923       ELSE
50924         IPAR1=MAX(1,K(IP1,3))
50925         IPAR2=MAX(1,K(IP2,3))
50926         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
50927      &       KFSRCE=IABS(K(K(IPAR1,3),2))
50928       ENDIF
50929       ITYPES=0
50930       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
50931       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
50932       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
50933       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
50934       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
50935       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
50936       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
50937       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
50938  
50939 C...Identify two primary showerers.
50940       ITYPE1=0
50941       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
50942       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
50943       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
50944       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
50945       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
50946       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
50947       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
50948       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
50949       ITYPE2=0
50950       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
50951       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
50952       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
50953       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
50954       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
50955       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
50956       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
50957       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
50958  
50959 C...Order of showerers. Presence of gluino.
50960       ITYPMN=MIN(ITYPE1,ITYPE2)
50961       ITYPMX=MAX(ITYPE1,ITYPE2)
50962       IORD=1
50963       IF(ITYPE1.GT.ITYPE2) IORD=2
50964       IGLUI=0
50965       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
50966  
50967 C...Check if 3-jet matrix elements to be used.
50968       M3JC=0
50969       ALPHA=0.5D0
50970       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
50971         IF(MSTJ(38).NE.0) THEN
50972           M3JC=MSTJ(38)
50973           ALPHA=PARJ(80)
50974           MSTJ(38)=0
50975         ELSEIF(MSTJ(47).GE.6) THEN
50976           M3JC=MSTJ(47)
50977         ELSE
50978           ICLASS=1
50979           ICOMBI=4
50980  
50981 C...Vector/axial vector -> q + qbar; q -> q + V.
50982           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
50983      &    ITYPES.EQ.3)) THEN
50984             ICLASS=2
50985             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
50986               ICOMBI=1
50987             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
50988      &      K(IP1,2)+K(IP2,2).EQ.0)) THEN
50989 C...gamma*/Z0: assume e+e- initial state if unknown.
50990               EI=-1D0
50991               IF(KFSRCE.EQ.23) THEN
50992                 IANNFL=K(K(IP1,3),3)
50993                 IF(IANNFL.NE.0) THEN
50994                   KANNFL=IABS(K(IANNFL,2))
50995                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
50996                 ENDIF
50997               ENDIF
50998               AI=SIGN(1D0,EI+0.1D0)
50999               VI=AI-4D0*EI*PARU(102)
51000               EF=KCHG(KFLA(1),1)/3D0
51001               AF=SIGN(1D0,EF+0.1D0)
51002               VF=AF-4D0*EF*PARU(102)
51003               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
51004               SH=PS(5)**2
51005               SQMZ=PMAS(23,1)**2
51006               SQWZ=PS(5)*PMAS(23,2)
51007               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
51008               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
51009      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
51010               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
51011               ICOMBI=3
51012               ALPHA=VECT/(VECT+AXIV)
51013             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
51014               ICOMBI=4
51015             ENDIF
51016 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
51017           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
51018             ICLASS=2
51019           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
51020      &    ITYPES.EQ.1)) THEN
51021             ICLASS=3
51022  
51023 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
51024           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
51025             ICLASS=4
51026             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
51027               ICOMBI=1
51028             ELSEIF(KFSRCE.EQ.36) THEN
51029               ICOMBI=2
51030             ENDIF
51031           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
51032      &    ITYPES.EQ.1)) THEN
51033             ICLASS=5
51034  
51035 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
51036           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
51037      &    ITYPES.EQ.3)) THEN
51038             ICLASS=6
51039           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
51040      &    ITYPES.EQ.2)) THEN
51041             ICLASS=7
51042           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
51043             ICLASS=8
51044           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
51045      &    ITYPES.EQ.2)) THEN
51046             ICLASS=9
51047  
51048 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
51049           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
51050      &    ITYPES.EQ.5)) THEN
51051             ICLASS=10
51052           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
51053      &    ITYPES.EQ.2)) THEN
51054             ICLASS=11
51055           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
51056      &    ITYPES.EQ.1)) THEN
51057             ICLASS=12
51058  
51059 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
51060           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
51061             ICLASS=13
51062           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
51063      &    ITYPES.EQ.2)) THEN
51064             ICLASS=14
51065           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
51066      &    ITYPES.EQ.1)) THEN
51067             ICLASS=15
51068  
51069 C...g -> ~g + ~g (eikonal approximation).
51070           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
51071             ICLASS=16
51072           ENDIF
51073           M3JC=5*ICLASS+ICOMBI
51074         ENDIF
51075       ENDIF
51076  
51077 C...Find if interference with initial state partons.
51078       MIIS=0
51079       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
51080      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
51081       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
51082      &MIIS=MSTJ(50)-3
51083       IF(MIIS.NE.0) THEN
51084         DO 180 I=1,2
51085           KCII(I)=0
51086           KCA=PYCOMP(KFLA(I))
51087           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
51088           NIIS(I)=0
51089           IF(KCII(I).NE.0) THEN
51090             DO 170 J=1,2
51091               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
51092               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
51093      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
51094                 NIIS(I)=NIIS(I)+1
51095                 IIIS(I,NIIS(I))=ICSI
51096               ENDIF
51097   170       CONTINUE
51098           ENDIF
51099   180   CONTINUE
51100         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
51101       ENDIF
51102  
51103 C...Boost interfering initial partons to rest frame
51104 C...and reconstruct their polar and azimuthal angles.
51105       IF(MIIS.NE.0) THEN
51106         DO 200 I=1,2
51107           DO 190 J=1,5
51108             K(N+I,J)=K(IPA(I),J)
51109             P(N+I,J)=P(IPA(I),J)
51110             V(N+I,J)=0D0
51111   190     CONTINUE
51112   200   CONTINUE
51113         DO 220 I=3,2+NIIS(1)
51114           DO 210 J=1,5
51115             K(N+I,J)=K(IIIS(1,I-2),J)
51116             P(N+I,J)=P(IIIS(1,I-2),J)
51117             V(N+I,J)=0D0
51118   210     CONTINUE
51119   220   CONTINUE
51120         DO 240 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
51121           DO 230 J=1,5
51122             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
51123             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
51124             V(N+I,J)=0D0
51125   230     CONTINUE
51126   240   CONTINUE
51127         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
51128      &  -PS(2)/PS(4),-PS(3)/PS(4))
51129         PHI=PYANGL(P(N+1,1),P(N+1,2))
51130         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
51131         THE=PYANGL(P(N+1,3),P(N+1,1))
51132         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
51133         DO 250 I=3,2+NIIS(1)
51134           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
51135           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
51136   250   CONTINUE
51137         DO 260 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
51138           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
51139      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
51140           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
51141   260   CONTINUE
51142       ENDIF
51143  
51144 C...Boost 3 or more partons to their rest frame.
51145       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
51146      &-PS(2)/PS(4),-PS(3)/PS(4))
51147  
51148 C...Define imagined single initiator of shower for parton system.
51149       NS=N
51150       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
51151         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
51152         IF(MSTU(21).GE.1) RETURN
51153       ENDIF
51154   270 N=NS
51155       IF(NPA.GE.2) THEN
51156         K(N+1,1)=11
51157         K(N+1,2)=21
51158         K(N+1,3)=0
51159         K(N+1,4)=0
51160         K(N+1,5)=0
51161         P(N+1,1)=0D0
51162         P(N+1,2)=0D0
51163         P(N+1,3)=0D0
51164         P(N+1,4)=PS(5)
51165         P(N+1,5)=PS(5)
51166         V(N+1,5)=PS(5)**2
51167         N=N+1
51168         IREF(1)=21
51169       ENDIF
51170  
51171 C...Loop over partons that may branch.
51172       NEP=NPA
51173       IM=NS
51174       IF(NPA.EQ.1) IM=NS-1
51175   280 IM=IM+1
51176       IF(N.GT.NS) THEN
51177         IF(IM.GT.N) GOTO 590
51178         KFLM=IABS(K(IM,2))
51179         IR=IREF(IM-NS)
51180         IF(KSH(IR).EQ.0) GOTO 280
51181         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 280
51182         IGM=K(IM,3)
51183       ELSE
51184         IGM=-1
51185       ENDIF
51186       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
51187         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
51188         IF(MSTU(21).GE.1) RETURN
51189       ENDIF
51190  
51191 C...Position of aunt (sister to branching parton).
51192 C...Origin and flavour of daughters.
51193       IAU=0
51194       IF(IGM.GT.0) THEN
51195         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
51196         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
51197       ENDIF
51198       IF(IGM.GE.0) THEN
51199         K(IM,4)=N+1
51200         DO 290 I=1,NEP
51201           K(N+I,3)=IM
51202   290   CONTINUE
51203       ELSE
51204         K(N+1,3)=IPA(1)
51205       ENDIF
51206       IF(IGM.LE.0) THEN
51207         DO 300 I=1,NEP
51208           K(N+I,2)=K(IPA(I),2)
51209   300   CONTINUE
51210       ELSEIF(KFLM.NE.21) THEN
51211         K(N+1,2)=K(IM,2)
51212         K(N+2,2)=K(IM,5)
51213         IREF(N+1-NS)=IREF(IM-NS)
51214         IREF(N+2-NS)=IABS(K(N+2,2))
51215       ELSEIF(K(IM,5).EQ.21) THEN
51216         K(N+1,2)=21
51217         K(N+2,2)=21
51218         IREF(N+1-NS)=21
51219         IREF(N+2-NS)=21
51220       ELSE
51221         K(N+1,2)=K(IM,5)
51222         K(N+2,2)=-K(IM,5)
51223         IREF(N+1-NS)=IABS(K(N+1,2))
51224         IREF(N+2-NS)=IABS(K(N+2,2))
51225       ENDIF
51226  
51227 C...Reset flags on daughters and tries made.
51228       DO 310 IP=1,NEP
51229         K(N+IP,1)=3
51230         K(N+IP,4)=0
51231         K(N+IP,5)=0
51232         KFLD(IP)=IABS(K(N+IP,2))
51233         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
51234         ITRY(IP)=0
51235         ISL(IP)=0
51236         ISI(IP)=0
51237         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
51238   310 CONTINUE
51239       ISLM=0
51240  
51241 C...Maximum virtuality of daughters.
51242       IF(IGM.LE.0) THEN
51243         DO 320 I=1,NPA
51244           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
51245           P(N+I,5)=MIN(QMAX,PS(5))
51246           IR=IREF(N+I-NS)
51247           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
51248           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
51249   320   CONTINUE
51250       ELSE
51251         IF(MSTJ(43).LE.2) PEM=V(IM,2)
51252         IF(MSTJ(43).GE.3) PEM=P(IM,4)
51253         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
51254         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
51255         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
51256       ENDIF
51257       DO 330 I=1,NEP
51258         PMSD(I)=P(N+I,5)
51259         IF(ISI(I).EQ.1) THEN
51260           IR=IREF(N+I-NS)
51261           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
51262         ENDIF
51263         V(N+I,5)=P(N+I,5)**2
51264   330 CONTINUE
51265  
51266 C...Choose one of the daughters for evolution.
51267   340 INUM=0
51268       IF(NEP.EQ.1) INUM=1
51269       DO 350 I=1,NEP
51270         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
51271   350 CONTINUE
51272       DO 360 I=1,NEP
51273         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
51274           IR=IREF(N+I-NS)
51275           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
51276         ENDIF
51277   360 CONTINUE
51278       IF(INUM.EQ.0) THEN
51279         RMAX=0D0
51280         DO 370 I=1,NEP
51281           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
51282             RPM=P(N+I,5)/PMSD(I)
51283             IR=IREF(N+I-NS)
51284             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
51285               RMAX=RPM
51286               INUM=I
51287             ENDIF
51288           ENDIF
51289   370   CONTINUE
51290       ENDIF
51291  
51292 C...Cancel choice of predetermined daughter already treated.
51293       INUM=MAX(1,INUM)
51294       INUMT=INUM
51295       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
51296         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
51297       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
51298         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
51299         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
51300       ENDIF
51301  
51302 C...Store information on choice of evolving daughter.
51303       IEP(1)=N+INUM
51304       DO 380 I=2,NEP
51305         IEP(I)=IEP(I-1)+1
51306         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
51307   380 CONTINUE
51308       DO 390 I=1,NEP
51309         KFL(I)=IABS(K(IEP(I),2))
51310   390 CONTINUE
51311       ITRY(INUM)=ITRY(INUM)+1
51312       IF(ITRY(INUM).GT.200) THEN
51313         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
51314         IF(MSTU(21).GE.1) RETURN
51315       ENDIF
51316       Z=0.5D0
51317       IR=IREF(IEP(1)-NS)
51318       IF(KSH(IR).EQ.0) GOTO 440
51319       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 440
51320  
51321 C...Check if evolution already predetermined for daughter.
51322       IPSPD=0
51323       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
51324         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
51325       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
51326         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
51327         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
51328       ENDIF
51329       ISSET(INUM)=0
51330       IF(IPSPD.NE.0) ISSET(INUM)=1
51331  
51332 C...Select side for interference with initial state partons.
51333       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
51334         III=IEP(1)-NS-1
51335         ISII(III)=0
51336         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
51337           ISII(III)=1
51338         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
51339           IF(PYR(0).GT.0.5D0) ISII(III)=1
51340         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
51341           ISII(III)=1
51342           IF(PYR(0).GT.0.5D0) ISII(III)=2
51343         ENDIF
51344       ENDIF
51345  
51346 C...Calculate allowed z range.
51347       IF(NEP.EQ.1) THEN
51348         PMED=PS(4)
51349       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51350         PMED=P(IM,5)
51351       ELSE
51352         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
51353         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
51354       ENDIF
51355       IF(MOD(MSTJ(43),2).EQ.1) THEN
51356         ZC=PMTH(2,21)/PMED
51357         ZCE=PMTH(2,22)/PMED
51358         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
51359       ELSE
51360         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
51361         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
51362         PMTMPE=PMTH(2,22)
51363         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
51364         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
51365         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
51366       ENDIF
51367       ZC=MIN(ZC,0.491D0)
51368       ZCE=MIN(ZCE,0.49991D0)
51369       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
51370      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
51371         P(IEP(1),5)=PMTH(1,IR)
51372         V(IEP(1),5)=P(IEP(1),5)**2
51373         GOTO 440
51374       ENDIF
51375  
51376 C...Integral of Altarelli-Parisi z kernel for QCD.
51377 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
51378       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
51379         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
51380       ELSEIF(MSTJ(49).EQ.0) THEN
51381         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
51382         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
51383  
51384 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
51385       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
51386         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
51387       ELSEIF(MSTJ(49).EQ.1) THEN
51388         FBR=(1D0-2D0*ZC)/3D0
51389         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
51390  
51391 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
51392       ELSEIF(KFL(1).EQ.21) THEN
51393         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
51394       ELSE
51395         FBR=2D0*LOG((1D0-ZC)/ZC)
51396       ENDIF
51397  
51398 C...Reset QCD probability for colourless.
51399       IF(ISCOL(IR).EQ.0) FBR=0D0
51400  
51401 C...Integral of Altarelli-Parisi kernel for photon emission.
51402       FBRE=0D0
51403       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
51404         IF(KFL(1).LE.18) THEN
51405           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
51406         ENDIF
51407         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
51408       ENDIF
51409  
51410 C...Inner veto algorithm starts. Find maximum mass for evolution.
51411   400 PMS=V(IEP(1),5)
51412       IF(IGM.GE.0) THEN
51413         PM2=0D0
51414         DO 410 I=2,NEP
51415           PM=P(IEP(I),5)
51416           IRI=IREF(IEP(I)-NS)
51417           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
51418           PM2=PM2+PM
51419   410   CONTINUE
51420         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
51421       ENDIF
51422  
51423 C...Select mass for daughter in QCD evolution.
51424       B0=27D0/6D0
51425       DO 420 IFF=4,MSTJ(45)
51426         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
51427   420 CONTINUE
51428 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
51429       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
51430 C...Already predetermined choice.
51431       IF(IPSPD.NE.0) THEN
51432         PMSQCD=P(IPSPD,5)**2
51433       ELSEIF(FBR.LT.1D-3) THEN
51434         PMSQCD=0D0
51435       ELSEIF(MSTJ(44).LE.0) THEN
51436         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
51437       ELSEIF(MSTJ(44).EQ.1) THEN
51438         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
51439       ELSE
51440         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
51441       ENDIF
51442 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
51443       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
51444       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
51445       V(IEP(1),5)=PMSQCD
51446       MCE=1
51447  
51448 C...Select mass for daughter in QED evolution.
51449       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
51450 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
51451         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
51452         IF(FBRE.LT.1D-3) THEN
51453           PMSQED=0D0
51454         ELSE
51455           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
51456      &    (PARU(101)*FBRE)))
51457         ENDIF
51458 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
51459         PMSQED=PMSQED+PMTH(1,IR)**2
51460         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
51461      &  PMTH(2,IR)**2
51462         IF(PMSQED.GT.PMSQCD) THEN
51463           V(IEP(1),5)=PMSQED
51464           MCE=2
51465         ENDIF
51466       ENDIF
51467  
51468 C...Check whether daughter mass below cutoff.
51469       P(IEP(1),5)=SQRT(V(IEP(1),5))
51470       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
51471         P(IEP(1),5)=PMTH(1,IR)
51472         V(IEP(1),5)=P(IEP(1),5)**2
51473         GOTO 440
51474       ENDIF
51475  
51476 C...Already predetermined choice of z, and flavour in g -> qqbar.
51477       IF(IPSPD.NE.0) THEN
51478         IPSGD1=K(IPSPD,4)
51479         IPSGD2=K(IPSPD,5)
51480         PMSGD1=P(IPSGD1,5)**2
51481         PMSGD2=P(IPSGD2,5)**2
51482         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
51483      &  4D0*PMSGD1*PMSGD2))
51484         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
51485      &  PMSGD1+PMSGD2)/ALAMPS
51486         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
51487         IF(KFL(1).NE.21) THEN
51488           K(IEP(1),5)=21
51489         ELSE
51490           K(IEP(1),5)=IABS(K(IPSGD1,2))
51491         ENDIF
51492  
51493 C...Select z value of branching: q -> qgamma.
51494       ELSEIF(MCE.EQ.2) THEN
51495         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
51496         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 400
51497         K(IEP(1),5)=22
51498  
51499 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
51500       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
51501         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
51502 C...Only do z weighting when no ME correction afterwards.
51503         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 400
51504         K(IEP(1),5)=21
51505       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
51506         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
51507         IF(PYR(0).GT.0.5D0) Z=1D0-Z
51508         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 400
51509         K(IEP(1),5)=21
51510       ELSEIF(MSTJ(49).NE.1) THEN
51511         Z=PYR(0)
51512         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 400
51513         KFLB=1+INT(MSTJ(45)*PYR(0))
51514         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
51515         IF(PMQ.GE.1D0) GOTO 400
51516         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
51517           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 400
51518           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
51519           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
51520      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 400
51521         ELSE
51522           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 400
51523         ENDIF
51524         K(IEP(1),5)=KFLB
51525  
51526 C...Ditto for scalar gluon model.
51527       ELSEIF(KFL(1).NE.21) THEN
51528         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
51529         K(IEP(1),5)=21
51530       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
51531         Z=ZC+(1D0-2D0*ZC)*PYR(0)
51532         K(IEP(1),5)=21
51533       ELSE
51534         Z=ZC+(1D0-2D0*ZC)*PYR(0)
51535         KFLB=1+INT(MSTJ(45)*PYR(0))
51536         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
51537         IF(PMQ.GE.1D0) GOTO 400
51538         K(IEP(1),5)=KFLB
51539       ENDIF
51540  
51541 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
51542       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
51543         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
51544      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51545           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 400
51546         ELSE
51547           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
51548           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
51549      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
51550           IF(PT2APP.LT.PT2MIN) GOTO 400
51551           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 400
51552         ENDIF
51553       ENDIF
51554  
51555 C...Check if z consistent with chosen m.
51556       IF(KFL(1).EQ.21) THEN
51557         IRGD1=IABS(K(IEP(1),5))
51558         IRGD2=IRGD1
51559       ELSE
51560         IRGD1=IR
51561         IRGD2=IABS(K(IEP(1),5))
51562       ENDIF
51563       IF(NEP.EQ.1) THEN
51564         PED=PS(4)
51565       ELSEIF(NEP.GE.3) THEN
51566         PED=P(IEP(1),4)
51567       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51568         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
51569       ELSE
51570         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
51571         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
51572       ENDIF
51573       IF(MOD(MSTJ(43),2).EQ.1) THEN
51574         PMQTH3=0.5D0*PARJ(82)
51575         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
51576         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
51577         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
51578         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
51579         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
51580      &  4D0*PMQ1*PMQ2)))
51581         ZH=1D0+PMQ1-PMQ2
51582       ELSE
51583         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
51584         ZH=1D0
51585       ENDIF
51586       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
51587      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51588       ELSEIF(IPSPD.NE.0) THEN
51589       ELSE
51590         ZL=0.5D0*(ZH-ZD)
51591         ZU=0.5D0*(ZH+ZD)
51592         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 400
51593       ENDIF
51594       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
51595      &(1D0-ZU)))
51596       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
51597  
51598 C...Width suppression for q -> q + g.
51599       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
51600         IF(IGM.EQ.0) THEN
51601           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
51602         ELSE
51603           EGLU=PMED*(1D0-Z)
51604         ENDIF
51605         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
51606         IF(MSTJ(40).EQ.1) THEN
51607           IF(CHI.LT.PYR(0)) GOTO 400
51608         ELSEIF(MSTJ(40).EQ.2) THEN
51609           IF(1D0-CHI.LT.PYR(0)) GOTO 400
51610         ENDIF
51611       ENDIF
51612  
51613 C...Three-jet matrix element correction.
51614       IF(M3JC.GE.1) THEN
51615         WME=1D0
51616         WSHOW=1D0
51617  
51618 C...QED matrix elements: only for massless case so far.
51619         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
51620           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
51621           X2=1D0-V(IEP(1),5)/V(NS+1,5)
51622           X3=(1D0-X1)+(1D0-X2)
51623           KI1=K(IPA(INUM),2)
51624           KI2=K(IPA(3-INUM),2)
51625           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
51626           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
51627           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
51628      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
51629           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
51630         ELSEIF(MCE.EQ.2) THEN
51631  
51632 C...QCD matrix elements, including mass effects.
51633         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
51634           PS1ME=V(IEP(1),5)
51635           PM1ME=PMTH(1,IR)
51636           M3JCC=M3JC
51637           IF(IR.GE.31.AND.IGM.EQ.0) THEN
51638 C...QCD ME: original parton, first branching.
51639             PM2ME=PMTH(1,63-IR)
51640             ECMME=PS(5)
51641           ELSEIF(IR.GE.31) THEN
51642 C...QCD ME: original parton, subsequent branchings.
51643             PM2ME=PMTH(1,63-IR)
51644             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
51645             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51646           ELSEIF(K(IM,2).EQ.21) THEN
51647 C...QCD ME: secondary partons, first branching.
51648             PM2ME=PM1ME
51649             ZMME=V(IM,1)
51650             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
51651             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
51652      &      4D0*PS1ME*PM2ME**2))
51653             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
51654      &      V(IM,5)
51655             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51656             M3JCC=66
51657           ELSE
51658 C...QCD ME: secondary partons, subsequent branchings.
51659             PM2ME=PM1ME
51660             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
51661             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
51662             M3JCC=66
51663           ENDIF
51664 C...Construct ME variables.
51665           R1ME=PM1ME/ECMME
51666           R2ME=PM2ME/ECMME
51667           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
51668           X2=1D0+R2ME**2-PS1ME/ECMME**2
51669 C...Call ME, with right order important for two inequivalent showerers.
51670           IF(IR.EQ.IORD+30) THEN
51671             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
51672           ELSE
51673             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
51674           ENDIF
51675 C...Split up total ME when two radiating partons.
51676           ISPRAD=1
51677           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
51678      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
51679      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
51680      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
51681      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
51682           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
51683      &    MAX(1D-10,2D0-X1-X2)
51684 C...Evaluate shower rate to be compared with.
51685           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
51686      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
51687           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
51688         ELSEIF(MSTJ(49).NE.1) THEN
51689  
51690 C...Toy model scalar theory matrix elements; no mass effects.
51691         ELSE
51692           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
51693           X2=1D0-V(IEP(1),5)/V(NS+1,5)
51694           X3=(1D0-X1)+(1D0-X2)
51695           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
51696           WME=X3**2
51697           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
51698      &    PARJ(171)
51699         ENDIF
51700  
51701         IF(WME.LT.PYR(0)*WSHOW) GOTO 400
51702       ENDIF
51703  
51704 C...Impose angular ordering by rejection of nonordered emission.
51705       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
51706         PEMAO=V(IM,1)*P(IM,4)
51707         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
51708         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
51709           MAOD=0
51710         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
51711      &  .OR.MSTJ(42).EQ.7)) THEN
51712           MAOD=0
51713         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
51714      &  .OR.MSTJ(42).EQ.6)) THEN
51715           MAOD=1
51716           PMDAO=PMTH(2,K(IEP(1),5))
51717           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
51718         ELSE
51719           MAOD=1
51720           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
51721           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
51722      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
51723         ENDIF
51724         MAOM=1
51725         IAOM=IM
51726   430   IF(K(IAOM,5).EQ.22) THEN
51727           IAOM=K(IAOM,3)
51728           IF(K(IAOM,3).LE.NS) MAOM=0
51729           IF(MAOM.EQ.1) GOTO 430
51730         ENDIF
51731         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
51732           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
51733           IF(THE2ID.LT.THE2IM) GOTO 400
51734         ENDIF
51735       ENDIF
51736  
51737 C...Impose user-defined maximum angle at first branching.
51738       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
51739         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
51740           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
51741           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 400
51742         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
51743           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
51744           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 400
51745         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
51746           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
51747           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 400
51748         ENDIF
51749       ENDIF
51750  
51751 C...Impose angular constraint in first branching from interference
51752 C...with initial state partons.
51753       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
51754         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
51755         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
51756           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 400
51757         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
51758           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 400
51759         ENDIF
51760       ENDIF
51761  
51762 C...End of inner veto algorithm. Check if only one leg evolved so far.
51763   440 V(IEP(1),1)=Z
51764       ISL(1)=0
51765       ISL(2)=0
51766       IF(NEP.EQ.1) GOTO 480
51767       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 340
51768       DO 450 I=1,NEP
51769         IR=IREF(N+I-NS)
51770         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
51771           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 340
51772         ENDIF
51773   450 CONTINUE
51774  
51775 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
51776       IF(NEP.GE.3) THEN
51777         PMSUM=0D0
51778         DO 460 I=1,NEP
51779           PMSUM=PMSUM+P(N+I,5)
51780   460   CONTINUE
51781         IF(PMSUM.GE.PS(5)) GOTO 340
51782       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
51783         DO 470 I1=N+1,N+2
51784           IRDA=IREF(I1-NS)
51785           IF(KSH(IRDA).EQ.0) GOTO 470
51786           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 470
51787           IF(IRDA.EQ.21) THEN
51788             IRGD1=IABS(K(I1,5))
51789             IRGD2=IRGD1
51790           ELSE
51791             IRGD1=IRDA
51792             IRGD2=IABS(K(I1,5))
51793           ENDIF
51794           I2=2*N+3-I1
51795           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
51796             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
51797           ELSE
51798             IF(I1.EQ.N+1) ZM=V(IM,1)
51799             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
51800             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
51801      &      4D0*V(N+1,5)*V(N+2,5))
51802             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
51803      &      V(IM,5)
51804           ENDIF
51805           IF(MOD(MSTJ(43),2).EQ.1) THEN
51806             PMQTH3=0.5D0*PARJ(82)
51807             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
51808             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
51809             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
51810             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
51811             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
51812      &      4D0*PMQ1*PMQ2)))
51813             ZH=1D0+PMQ1-PMQ2
51814           ELSE
51815             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
51816             ZH=1D0
51817           ENDIF
51818           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
51819      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51820           ELSE
51821             ZL=0.5D0*(ZH-ZD)
51822             ZU=0.5D0*(ZH+ZD)
51823             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
51824      &      ISSET(1).EQ.0) THEN
51825               ISL(1)=1
51826             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
51827      &      ISSET(2).EQ.0) THEN
51828               ISL(2)=1
51829             ENDIF
51830           ENDIF
51831           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
51832      &    ZL*(1D0-ZU)))
51833           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
51834   470   CONTINUE
51835         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
51836           ISL(3-ISLM)=0
51837           ISLM=3-ISLM
51838         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
51839           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
51840           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
51841           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
51842           IF(ISL(1).EQ.1) ISL(2)=0
51843           IF(ISL(1).EQ.0) ISLM=1
51844           IF(ISL(2).EQ.0) ISLM=2
51845         ENDIF
51846         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 340
51847       ENDIF
51848       IRD1=IREF(N+1-NS)
51849       IRD2=IREF(N+2-NS)
51850       IF(IGM.GT.0) THEN
51851         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
51852      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
51853           PMQ1=V(N+1,5)/V(IM,5)
51854           PMQ2=V(N+2,5)/V(IM,5)
51855           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
51856      &    4D0*PMQ1*PMQ2)))
51857           ZH=1D0+PMQ1-PMQ2
51858           ZL=0.5D0*(ZH-ZD)
51859           ZU=0.5D0*(ZH+ZD)
51860           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 340
51861         ENDIF
51862       ENDIF
51863  
51864 C...Accepted branch. Construct four-momentum for initial partons.
51865   480 MAZIP=0
51866       MAZIC=0
51867       IF(NEP.EQ.1) THEN
51868         P(N+1,1)=0D0
51869         P(N+1,2)=0D0
51870         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
51871      &  P(N+1,5))))
51872         P(N+1,4)=P(IPA(1),4)
51873         V(N+1,2)=P(N+1,4)
51874       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
51875         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
51876         P(N+1,1)=0D0
51877         P(N+1,2)=0D0
51878         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
51879         P(N+1,4)=PED1
51880         P(N+2,1)=0D0
51881         P(N+2,2)=0D0
51882         P(N+2,3)=-P(N+1,3)
51883         P(N+2,4)=P(IM,5)-PED1
51884         V(N+1,2)=P(N+1,4)
51885         V(N+2,2)=P(N+2,4)
51886       ELSEIF(NEP.GE.3) THEN
51887 C...Rescale all momenta for energy conservation.
51888         LOOP=0
51889         PES=0D0
51890         PQS=0D0
51891         DO 500 I=1,NEP
51892           DO 490 J=1,4
51893             P(N+I,J)=P(IPA(I),J)
51894   490     CONTINUE
51895           PES=PES+P(N+I,4)
51896           PQS=PQS+P(N+I,5)**2/P(N+I,4)
51897   500   CONTINUE
51898   510   LOOP=LOOP+1
51899         FAC=(PS(5)-PQS)/(PES-PQS)
51900         PES=0D0
51901         PQS=0D0
51902         DO 530 I=1,NEP
51903           DO 520 J=1,3
51904             P(N+I,J)=FAC*P(N+I,J)
51905   520     CONTINUE
51906           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)
51907           V(N+I,2)=P(N+I,4)
51908           PES=PES+P(N+I,4)
51909           PQS=PQS+P(N+I,5)**2/P(N+I,4)
51910   530   CONTINUE
51911         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 510
51912  
51913 C...Construct transverse momentum for ordinary branching in shower.
51914       ELSE
51915         ZM=V(IM,1)
51916         LOOPPT=0
51917   540   LOOPPT=LOOPPT+1
51918         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
51919         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
51920         IF(PZM.LE.0D0) THEN
51921           PTS=0D0
51922         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
51923      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51924           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
51925         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
51926           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
51927      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
51928         ELSE
51929           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
51930         ENDIF
51931         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
51932           ZM=0.05D0+0.9D0*ZM
51933           GOTO 540
51934         ELSEIF(PTS.LT.0D0) THEN
51935           GOTO 270
51936         ENDIF
51937         PT=SQRT(MAX(0D0,PTS))
51938  
51939 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
51940         HAZIP=0D0
51941         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
51942      &  .AND.IAU.NE.0) THEN
51943           IF(K(IGM,3).NE.0) MAZIP=1
51944           ZAU=V(IGM,1)
51945           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
51946           IF(MAZIP.EQ.0) ZAU=0D0
51947           IF(K(IGM,2).NE.21) THEN
51948             HAZIP=2D0*ZAU/(1D0+ZAU**2)
51949           ELSE
51950             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
51951           ENDIF
51952           IF(K(N+1,2).NE.21) THEN
51953             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
51954           ELSE
51955             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
51956           ENDIF
51957         ENDIF
51958  
51959 C...Find coefficient of azimuthal asymmetry due to soft gluon
51960 C...interference.
51961         HAZIC=0D0
51962         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
51963      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
51964           IF(K(IGM,3).NE.0) MAZIC=N+1
51965           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
51966           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
51967      &    ZM.GT.0.5D0) MAZIC=N+2
51968           IF(K(IAU,2).EQ.22) MAZIC=0
51969           ZS=ZM
51970           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
51971           ZGM=V(IGM,1)
51972           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
51973           IF(MAZIC.EQ.0) ZGM=1D0
51974           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
51975      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
51976           HAZIC=MIN(0.95D0,HAZIC)
51977         ENDIF
51978       ENDIF
51979  
51980 C...Construct energies for ordinary branching in shower.
51981   550 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
51982         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
51983      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
51984           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
51985      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
51986         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
51987           P(N+1,4)=PEM*V(IM,1)
51988         ELSE
51989           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
51990      &    SQRT(PMLS)*ZM)/V(IM,5)
51991         ENDIF
51992  
51993 C...Already predetermined choice of phi angle or not
51994         PHI=PARU(2)*PYR(0)
51995         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
51996           IPSPD=IP1+IM-NS-2
51997           IF(K(IPSPD,4).GT.0) THEN
51998             IPSGD1=K(IPSPD,4)
51999             IF(IM.EQ.NS+2) THEN
52000               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
52001             ELSE
52002               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
52003             ENDIF
52004           ENDIF
52005         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
52006           IPSPD=IP1+IM-NS-2
52007           IF(K(IPSPD,4).GT.0) THEN
52008             IPSGD1=K(IPSPD,4)
52009             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
52010             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
52011             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
52012             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
52013             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
52014             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
52015           ENDIF
52016         ENDIF
52017  
52018 C...Construct momenta for ordinary branching in shower.
52019         P(N+1,1)=PT*COS(PHI)
52020         P(N+1,2)=PT*SIN(PHI)
52021         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
52022      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
52023           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
52024      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
52025         ELSEIF(PZM.GT.0D0) THEN
52026           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
52027      &    2D0*PEM*P(N+1,4))/PZM
52028         ELSE
52029           P(N+1,3)=0D0
52030         ENDIF
52031         P(N+2,1)=-P(N+1,1)
52032         P(N+2,2)=-P(N+1,2)
52033         P(N+2,3)=PZM-P(N+1,3)
52034         P(N+2,4)=PEM-P(N+1,4)
52035         IF(MSTJ(43).LE.2) THEN
52036           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
52037           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
52038         ENDIF
52039       ENDIF
52040  
52041 C...Rotate and boost daughters.
52042       IF(IGM.GT.0) THEN
52043         IF(MSTJ(43).LE.2) THEN
52044           BEX=P(IGM,1)/P(IGM,4)
52045           BEY=P(IGM,2)/P(IGM,4)
52046           BEZ=P(IGM,3)/P(IGM,4)
52047           GA=P(IGM,4)/P(IGM,5)
52048           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
52049      &    P(IM,4))
52050         ELSE
52051           BEX=0D0
52052           BEY=0D0
52053           BEZ=0D0
52054           GA=1D0
52055           GABEP=0D0
52056         ENDIF
52057         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
52058         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
52059         IF(PTIMB.GT.1D-4) THEN
52060           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
52061         ELSE
52062           PHI=0D0
52063         ENDIF
52064         DO 560 I=N+1,N+2
52065           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
52066      &    SIN(THE)*COS(PHI)*P(I,3)
52067           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
52068      &    SIN(THE)*SIN(PHI)*P(I,3)
52069           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
52070           DP(4)=P(I,4)
52071           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
52072           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
52073           P(I,1)=DP(1)+DGABP*BEX
52074           P(I,2)=DP(2)+DGABP*BEY
52075           P(I,3)=DP(3)+DGABP*BEZ
52076           P(I,4)=GA*(DP(4)+DBP)
52077   560   CONTINUE
52078       ENDIF
52079  
52080 C...Weight with azimuthal distribution, if required.
52081       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
52082         DO 570 J=1,3
52083           DPT(1,J)=P(IM,J)
52084           DPT(2,J)=P(IAU,J)
52085           DPT(3,J)=P(N+1,J)
52086   570   CONTINUE
52087         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
52088         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
52089         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
52090         DO 580 J=1,3
52091           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
52092           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
52093   580   CONTINUE
52094         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
52095         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
52096         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
52097           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
52098      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
52099           IF(MAZIP.NE.0) THEN
52100             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
52101      &      GOTO 550
52102           ENDIF
52103           IF(MAZIC.NE.0) THEN
52104             IF(MAZIC.EQ.N+2) CAD=-CAD
52105             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
52106      &      .LT.PYR(0)) GOTO 550
52107           ENDIF
52108         ENDIF
52109       ENDIF
52110  
52111 C...Azimuthal anisotropy due to interference with initial state partons.
52112       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
52113      &K(N+2,2).EQ.21)) THEN
52114         III=IM-NS-1
52115         IF(ISII(III).GE.1) THEN
52116           IAZIID=N+1
52117           IF(K(N+1,2).NE.21) IAZIID=N+2
52118           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
52119      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
52120           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
52121           IF(III.EQ.2) THEIID=PARU(1)-THEIID
52122           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
52123           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
52124           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
52125           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
52126           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
52127           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
52128      &    .LT.PYR(0)) GOTO 550
52129         ENDIF
52130       ENDIF
52131  
52132 C...Continue loop over partons that may branch, until none left.
52133       IF(IGM.GE.0) K(IM,1)=14
52134       N=N+NEP
52135       NEP=2
52136       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
52137         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
52138         IF(MSTU(21).GE.1) N=NS
52139         IF(MSTU(21).GE.1) RETURN
52140       ENDIF
52141       GOTO 280
52142  
52143 C...Set information on imagined shower initiator.
52144   590 IF(NPA.GE.2) THEN
52145         K(NS+1,1)=11
52146         K(NS+1,2)=94
52147         K(NS+1,3)=IP1
52148         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
52149         K(NS+1,4)=NS+2
52150         K(NS+1,5)=NS+1+NPA
52151         IIM=1
52152       ELSE
52153         IIM=0
52154       ENDIF
52155  
52156 C...Reconstruct string drawing information.
52157       DO 600 I=NS+1+IIM,N
52158         KQ=KCHG(PYCOMP(K(I,2)),2)
52159         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
52160           K(I,1)=1
52161         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
52162      &    IABS(K(I,2)).LE.18) THEN
52163           K(I,1)=1
52164         ELSEIF(K(I,1).LE.10) THEN
52165           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
52166           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
52167         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
52168           ID1=MOD(K(I,4),MSTU(5))
52169           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
52170           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
52171      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
52172           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
52173           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
52174           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
52175           K(ID1,4)=K(ID1,4)+MSTU(5)*I
52176           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
52177           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
52178           K(ID2,5)=K(ID2,5)+MSTU(5)*I
52179         ELSE
52180           ID1=MOD(K(I,4),MSTU(5))
52181           ID2=ID1+1
52182           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
52183           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
52184           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
52185             K(ID1,4)=K(ID1,4)+MSTU(5)*I
52186             K(ID1,5)=K(ID1,5)+MSTU(5)*I
52187           ELSE
52188             K(ID1,4)=0
52189             K(ID1,5)=0
52190           ENDIF
52191           K(ID2,4)=0
52192           K(ID2,5)=0
52193         ENDIF
52194   600 CONTINUE
52195  
52196 C...Transformation from CM frame.
52197       IF(NPA.EQ.1) THEN
52198         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
52199         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
52200         MSTU(33)=1
52201         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
52202       ELSEIF(NPA.EQ.2) THEN
52203         BEX=PS(1)/PS(4)
52204         BEY=PS(2)/PS(4)
52205         BEZ=PS(3)/PS(4)
52206         GA=PS(4)/PS(5)
52207         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
52208      &  /(1D0+GA)-P(IPA(1),4))
52209         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
52210      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
52211         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
52212         MSTU(33)=1
52213         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
52214       ELSE
52215         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
52216      &  PS(3)/PS(4))
52217         MSTU(33)=1
52218         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
52219       ENDIF
52220  
52221 C...Decay vertex of shower.
52222       DO 620 I=NS+1,N
52223         DO 610 J=1,5
52224           V(I,J)=V(IP1,J)
52225   610   CONTINUE
52226   620 CONTINUE
52227  
52228 C...Delete trivial shower, else connect initiators.
52229       IF(N.LE.NS+NPA+IIM) THEN
52230         N=NS
52231       ELSE
52232         DO 630 IP=1,NPA
52233           K(IPA(IP),1)=14
52234           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
52235           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
52236           K(NS+IIM+IP,3)=IPA(IP)
52237           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
52238           IF(K(NS+IIM+IP,1).NE.1) THEN
52239             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
52240             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
52241           ENDIF
52242   630   CONTINUE
52243       ENDIF
52244  
52245       RETURN
52246       END
52247  
52248 C*********************************************************************
52249  
52250 C...PYMAEL
52251 C...Auxiliary to PYSHOW.
52252 C...Matrix elements for gluon (or photon) emission from
52253 C...a two-body state; to be used by the parton shower routine.
52254 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
52255 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
52256 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
52257 C...i.e. normalization is such that one recovers the familiar
52258 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
52259 C...Coupling structure:
52260 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
52261 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
52262 C...   = 16-19 : q -> q V
52263 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
52264 C...   = 26-29 : q -> q S
52265 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
52266 C...   = 36-39 : ~q -> ~q V
52267 C...   = 41-44 : S -> ~q ~qbar
52268 C...   = 46-49 : ~q -> ~q S
52269 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
52270 C...   = 56-59 : ~q -> q chi
52271 C...   = 61-64 : q -> ~q chi
52272 C...   = 66-69 : ~g -> q ~qbar
52273 C...   = 71-74 : ~q -> q ~g
52274 C...   = 76-79 : q -> ~q ~g
52275 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
52276 C...Note that the order of the decay products is important.
52277 C...In each set of four, the variants are ordered as:
52278 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
52279 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
52280 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
52281 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
52282  
52283       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
52284  
52285 C...Double precision and integer declarations.
52286       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52287       IMPLICIT INTEGER(I-N)
52288  
52289 C...Check input values. Return zero outside allowed phase space.
52290       PYMAEL=0D0
52291       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
52292       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
52293       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
52294       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
52295      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
52296       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
52297  
52298 C...Initial values and flags.
52299       ICLASS=NI/5
52300       ICOMBI=NI-5*ICLASS
52301       ISSET1=0
52302       ISSET2=0
52303       ISSET4=0
52304  
52305 C... Phase space.
52306       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
52307  
52308 C...Eikonal expression; also acts as default.
52309       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
52310         RLO=PS
52311         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
52312           ANUM=0D0
52313         ELSEIF(ICOMBI.EQ.2) THEN
52314           ANUM=(2D0-X1-X2)**2
52315         ELSEIF(ICOMBI.EQ.3) THEN
52316           ANUM=ALPCOR*(2D0-X1-X2)**2
52317         ELSE
52318           ANUM=0.5D0*(2D0-X1-X2)**2
52319         ENDIF
52320         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
52321      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
52322      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
52323      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
52324         ICOMBI=0
52325  
52326 C...V -> q qbar (V = gamma*/Z0/W+-/...).
52327       ELSEIF(ICLASS.EQ.2) THEN
52328         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52329         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
52330         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
52331      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
52332      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
52333      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
52334      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
52335      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
52336      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
52337      &       (-1+R1**2-R2**2+X2)**2
52338         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
52339      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
52340      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
52341      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
52342      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
52343      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
52344      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52345         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
52346      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
52347      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
52348      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
52349      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
52350         RFO1=RFO1/2.D0
52351         ISSET1=1
52352         ENDIF
52353         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52354         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
52355         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
52356      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
52357      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
52358      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
52359      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
52360      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
52361      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
52362         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
52363      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
52364      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
52365      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
52366      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
52367      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
52368      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52369         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
52370      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
52371      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
52372      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
52373      &       +X2)/(-1-R1**2+R2**2+X1)**2
52374         RFO2=RFO2/2.D0
52375         ISSET2=1
52376         ENDIF
52377         IF(ICOMBI.EQ.4) THEN
52378         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
52379         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
52380      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
52381      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
52382      &       (-1-R1**2+R2**2+X1)**2
52383         RFO4=RFO4
52384      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
52385      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
52386      &       -R1**2*X2**2+X1*X2**2)/
52387      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52388         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
52389      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
52390      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
52391      &       (-1+R1**2-R2**2+X2)**2
52392         RFO4=RFO4/2.D0
52393         ISSET4=1
52394         ENDIF
52395  
52396 C...q -> q V.
52397       ELSEIF(ICLASS.EQ.3) THEN
52398         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52399         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
52400      &        +R1**2*R2**2-2D0*R2**4)
52401         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
52402      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
52403      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
52404      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
52405      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
52406      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
52407      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
52408         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
52409      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
52410      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
52411      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52412      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52413         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
52414      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
52415      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
52416      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
52417      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52418      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
52419      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
52420         ISSET1=1
52421         ENDIF
52422         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52423         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
52424      &        +R1**2*R2**2-2D0*R2**4)
52425         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
52426      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
52427      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
52428      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
52429      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
52430      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
52431      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52432         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
52433      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
52434      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
52435      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52436      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52437         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
52438      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
52439      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
52440      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
52441      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52442      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
52443      &       +X1*X2**2)/(-2+X1+X2)**2
52444         ISSET2=1
52445         ENDIF
52446         IF(ICOMBI.EQ.4) THEN
52447         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
52448         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
52449      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
52450      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
52451      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
52452      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52453         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
52454      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
52455      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
52456      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
52457         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
52458      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
52459      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
52460      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
52461      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
52462      &       +X1*X2**2)/(2-X1-X2)**2
52463         ISSET4=1
52464         ENDIF
52465  
52466 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
52467       ELSEIF(ICLASS.EQ.4) THEN
52468         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52469         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
52470         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52471      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52472      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52473      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
52474      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
52475      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52476      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52477      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52478      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52479         ISSET1=1
52480         ENDIF
52481         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52482         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
52483         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52484      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52485      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52486      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52487      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
52488      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52489      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
52490      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
52491      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
52492      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52493         ISSET2=1
52494         ENDIF
52495         IF(ICOMBI.EQ.4) THEN
52496         RLO4=PS*(1D0-R1**2-R2**2)
52497         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
52498      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52499      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
52500      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
52501      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52502      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
52503      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52504         ISSET4=1
52505         ENDIF
52506  
52507 C...q -> q S.
52508       ELSEIF(ICLASS.EQ.5) THEN
52509         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52510         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52511         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
52512      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52513      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
52514      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52515      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
52516      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
52517      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52518      &       (-1+R1**2-R2**2+X2)**2
52519         ISSET1=1
52520         ENDIF
52521         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52522         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
52523         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
52524      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52525      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
52526      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52527      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
52528      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
52529      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52530      &       (-1+R1**2-R2**2+X2)**2
52531         ISSET2=1
52532         ENDIF
52533         IF(ICOMBI.EQ.4) THEN
52534         RLO4=PS*(1D0+R1**2-R2**2)
52535         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
52536      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
52537      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
52538      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
52539      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
52540      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
52541         ISSET4=1
52542         ENDIF
52543  
52544 C...V -> ~q ~qbar  (~q = squark).
52545       ELSEIF(ICLASS.EQ.6) THEN
52546         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
52547         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
52548      &       (-1-R1**2+R2**2+X1)**2
52549      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
52550      &       (-1-R1**2+R2**2+X1)
52551      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
52552      &       /(-1+R1**2-R2**2+X2)**2
52553      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
52554      &       (-1+R1**2-R2**2+X2)
52555      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
52556      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
52557      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
52558      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52559         ISSET1=1
52560  
52561 C...~q -> ~q V.
52562       ELSEIF(ICLASS.EQ.7) THEN
52563         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
52564         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
52565      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
52566      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
52567      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
52568      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
52569      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
52570      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
52571      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
52572      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
52573      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
52574      &       (3*(-2+X1+X2))
52575         RFO1=3D0*RFO1/8D0
52576         ISSET1=1
52577  
52578 C...S -> ~q ~qbar.
52579       ELSEIF(ICLASS.EQ.8) THEN
52580         RLO1=PS
52581         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
52582      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
52583      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
52584      &       -R1**2*X2**2+X1*X2**2)/
52585      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
52586         RFO1=2D0*RFO1
52587         ISSET1=1
52588  
52589 C...~q -> ~q S.
52590       ELSEIF(ICLASS.EQ.9) THEN
52591         RLO1=PS
52592         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52593      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52594      &       -(X1+X2)/(-2+X1+X2)**2
52595         ISSET1=1
52596  
52597 C...chi -> q ~qbar   (chi = neutralino/chargino).
52598       ELSEIF(ICLASS.EQ.10) THEN
52599         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52600         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52601         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
52602      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
52603      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
52604      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52605      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
52606      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52607      &       (-1+R1**2-R2**2+X2)**2
52608         ISSET1=1
52609         ENDIF
52610         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52611         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
52612         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
52613      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
52614      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
52615      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52616      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
52617      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52618      &       (-1+R1**2-R2**2+X2)**2
52619         ISSET2=1
52620         ENDIF
52621         IF(ICOMBI.EQ.4) THEN
52622         RLO4=PS*(1+R1**2-R2**2)
52623         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
52624      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
52625      &       +X2+R1**2*X2-X1*X2/2)/
52626      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
52627      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
52628      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
52629         ISSET4=1
52630         ENDIF
52631  
52632 C...~q -> q chi.
52633       ELSEIF(ICLASS.EQ.11) THEN
52634         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52635         RLO1=PS*(1D0-(R1+R2)**2)
52636         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
52637      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52638      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52639      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52640      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
52641      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52642      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52643         ISSET1=1
52644         ENDIF
52645         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52646         RLO2=PS*(1D0-(R1-R2)**2)
52647         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
52648      &       (-2+X1+X2)**2
52649      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52650      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
52651      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
52652      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
52653      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52654      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
52655         ISSET2=1
52656         ENDIF
52657         IF(ICOMBI.EQ.4) THEN
52658         RLO4=PS*(1D0-R1**2-R2**2)
52659         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
52660      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
52661      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
52662      &       (-1+R1**2-R2**2+X2)**2
52663      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
52664      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
52665      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52666         ISSET4=1
52667         ENDIF
52668  
52669 C...q -> ~q chi.
52670       ELSEIF(ICLASS.EQ.12) THEN
52671         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52672         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
52673         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52674      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
52675      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
52676      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
52677      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52678      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52679         ISSET1=1
52680         END IF
52681         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52682         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
52683         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
52684      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
52685      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
52686      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
52687      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52688      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52689         ISSET2=1
52690         END IF
52691         IF(ICOMBI.EQ.4) THEN
52692         RLO4=PS*(1D0-R1**2+R2**2)
52693         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
52694      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
52695      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
52696      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
52697      &       +R1**2*X2-X1*X2/2-X2**2/2)/
52698      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
52699         ISSET4=1
52700         END IF
52701  
52702 C...~g -> q ~qbar.
52703       ELSEIF(ICLASS.EQ.13) THEN
52704         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52705         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
52706         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
52707      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
52708      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
52709      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
52710      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
52711      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
52712      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
52713      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
52714      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
52715      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
52716      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
52717      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52718      &       (3*(-1+R1**2-R2**2+X2)**2)
52719         RFO1=3D0*RFO1/4D0
52720         ISSET1=1
52721         ENDIF
52722         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52723         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
52724         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
52725      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
52726      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52727      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
52728      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
52729      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
52730      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
52731      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
52732      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
52733      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52734      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
52735      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
52736      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52737      &       (3*(-1+R1**2-R2**2+X2)**2)
52738         RFO2=3D0*RFO2/4D0
52739         ISSET2=1
52740         ENDIF
52741         IF(ICOMBI.EQ.4) THEN
52742         RLO4=PS*(1D0+R1**2-R2**2)
52743         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
52744      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
52745      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
52746      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
52747      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
52748      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52749      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
52750      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52751      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
52752      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
52753      &       (3*(-1+R1**2-R2**2+X2)**2)
52754         RFO4=3D0*RFO4/8D0
52755         ISSET4=1
52756         ENDIF
52757  
52758 C...~q -> q ~g.
52759       ELSEIF(ICLASS.EQ.14) THEN
52760         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52761         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
52762         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
52763      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52764      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52765      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
52766      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
52767      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
52768      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
52769      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
52770      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
52771      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
52772      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
52773      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
52774      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
52775         RFO1=RFO1
52776      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
52777      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
52778      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52779         RFO1=9D0*RFO1/64D0
52780         ISSET1=1
52781         ENDIF
52782         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52783         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
52784         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
52785      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
52786      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
52787      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
52788      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
52789      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
52790      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
52791      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
52792      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
52793      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
52794         RFO2=RFO2
52795      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
52796      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
52797      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
52798      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
52799      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
52800      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52801         RFO2=9D0*RFO2/64D0
52802         ISSET2=1
52803         ENDIF
52804         IF(ICOMBI.EQ.4) THEN
52805         RLO4=PS*(1-R1**2-R2**2)
52806         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
52807      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
52808      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
52809      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
52810      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
52811      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
52812      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
52813      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
52814      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
52815      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
52816      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
52817         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
52818      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
52819      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
52820         RFO4=9D0*RFO4/128D0
52821         ISSET4=1
52822         ENDIF
52823  
52824 C...q -> ~q ~g.
52825       ELSEIF(ICLASS.EQ.15) THEN
52826         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
52827         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
52828         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
52829      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
52830      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
52831      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
52832      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
52833      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
52834      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
52835      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
52836      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
52837         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
52838      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
52839      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
52840      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
52841      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52842         RFO1=9D0*RFO1/32D0
52843         ISSET1=1
52844         END IF
52845         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
52846         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
52847         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
52848      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
52849      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
52850      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
52851      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
52852      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
52853      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
52854      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
52855      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52856         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
52857      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
52858      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
52859      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
52860      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52861         RFO2=9D0*RFO2/32D0
52862         ISSET2=1
52863         END IF
52864         IF(ICOMBI.EQ.4) THEN
52865         RLO4=PS*(1D0-R1**2+R2**2)
52866         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
52867      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
52868      &       -R2**2*X2/2-X1*X2/2)/
52869      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
52870      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
52871      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
52872      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
52873      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
52874         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
52875      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
52876      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
52877      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
52878         RFO4=9D0*RFO4/64D0
52879         ISSET4=1
52880         END IF
52881  
52882 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
52883       ELSEIF(ICLASS.EQ.16) THEN
52884         RLO=PS
52885         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
52886           ANUM=0D0
52887         ELSEIF(ICOMBI.EQ.2) THEN
52888           ANUM=(2D0-X1-X2)**2
52889         ELSEIF(ICOMBI.EQ.3) THEN
52890           ANUM=ALPCOR*(2D0-X1-X2)**2
52891         ELSE
52892           ANUM=0.5D0*(2D0-X1-X2)**2
52893         ENDIF
52894         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
52895      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
52896      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
52897      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
52898         RFO=9D0*RFO/4D0
52899         ICOMBI=0
52900       ENDIF
52901  
52902 C...Find relevant LO and FO expression.
52903       IF(ICOMBI.EQ.0) THEN
52904       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
52905         RLO=RLO1
52906         RFO=RFO1
52907       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
52908         RLO=RLO2
52909         RFO=RFO2
52910       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
52911         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
52912         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
52913       ELSEIF(ISSET4.EQ.1) THEN
52914         RLO=RLO4
52915         RFO=RFO4
52916       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
52917         RLO=0.5D0*(RLO1+RLO2)
52918         RFO=0.5D0*(RFO1+RFO2)
52919       ELSEIF(ISSET1.EQ.1) THEN
52920         RLO=RLO1
52921         RFO=RFO1
52922       ELSE
52923         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
52924         RLO=1D0
52925         RFO=0D0
52926       ENDIF
52927  
52928 C...Output.
52929       PYMAEL=RFO/RLO
52930  
52931       RETURN
52932       END
52933  
52934 C*********************************************************************
52935  
52936 C...PYBOEI
52937 C...Modifies an event so as to approximately take into account
52938 C...Bose-Einstein effects according to a simple phenomenological
52939 C...parametrization.
52940  
52941       SUBROUTINE PYBOEI(NSAV)
52942  
52943 C...Double precision and integer declarations.
52944       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52945       IMPLICIT INTEGER(I-N)
52946       INTEGER PYK,PYCHGE,PYCOMP
52947 C...Parameter statement to help give large particle numbers.
52948       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52949      &KEXCIT=4000000,KDIMEN=5000000)
52950 C...Commonblocks.
52951       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
52952       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52953       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52954       COMMON/PYINT1/MINT(400),VINT(400)
52955       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
52956 C...Local arrays and data.
52957       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
52958      &BEIW(100),BEI3W(100)
52959       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
52960 C...Statement function: squared invariant mass.
52961       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
52962      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
52963  
52964 C...Boost event to overall CM frame. Calculate CM energy.
52965       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
52966       DO 100 J=1,4
52967         DPS(J)=0D0
52968   100 CONTINUE
52969       DO 120 I=1,N
52970         KFA=IABS(K(I,2))
52971         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
52972      &  .AND.K(I,3).GT.0) THEN
52973           KFMA=IABS(K(K(I,3),2))
52974           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
52975         ENDIF
52976         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
52977         DO 110 J=1,4
52978           DPS(J)=DPS(J)+P(I,J)
52979   110   CONTINUE
52980   120 CONTINUE
52981       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
52982      &-DPS(3)/DPS(4))
52983       PECM=0D0
52984       DO 130 I=1,N
52985         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
52986   130 CONTINUE
52987  
52988 C...Check if we have separated strings
52989  
52990 C...Reserve copy of particles by species at end of record.
52991       IWP=0
52992       IWN=0
52993       NBE(0)=N+MSTU(3)
52994       NMAX=NBE(0)
52995       SMMIN=PECM
52996       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
52997         NBE(IBE)=NBE(IBE-1)
52998         DO 180 I=NSAV+1,N
52999           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
53000             DO 140 IIBE=1,IBE-1
53001               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
53002   140       CONTINUE
53003           ELSE
53004             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
53005           ENDIF
53006           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
53007           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
53008             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
53009             RETURN
53010           ENDIF
53011           NBE(IBE)=NBE(IBE)+1
53012           NMAX=NBE(IBE)
53013           K(NBE(IBE),1)=I
53014           K(NBE(IBE),2)=0
53015           K(NBE(IBE),3)=0
53016           K(NBE(IBE),4)=0
53017           K(NBE(IBE),5)=0
53018           P(NBE(IBE),1)=0.0D0
53019           P(NBE(IBE),2)=0.0D0
53020           P(NBE(IBE),3)=0.0D0
53021           P(NBE(IBE),4)=0.0D0
53022           P(NBE(IBE),5)=0.0D0
53023           SMMIN=MIN(SMMIN,P(I,5))
53024 C...Check if particles comes from different W's or Z's
53025           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
53026             IM=I
53027   150       IF(K(IM,3).GT.0) THEN
53028               IM=K(IM,3)
53029               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
53030               K(NBE(IBE),5)=IM
53031               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
53032               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
53033               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
53034               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
53035             ENDIF
53036           ENDIF
53037 C...Check if particles comes from different strings.
53038           IF(PARJ(94).GT.0.0D0) THEN
53039             IM=I
53040   160       IF(K(IM,3).GT.0) THEN
53041               IM=K(IM,3)
53042               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
53043               K(NBE(IBE),5)=IM
53044             ENDIF
53045           ENDIF
53046           DO 170 J=1,3
53047             P(NBE(IBE),J)=0D0
53048             V(NBE(IBE),J)=0D0
53049   170     CONTINUE
53050           P(NBE(IBE),5)=-1.0D0
53051   180   CONTINUE
53052   190 CONTINUE
53053       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
53054  
53055 C...Calculate separation between W+ and W- or between two Z0's.
53056 C...No separation if there has been re-connections.
53057       SIGW=PARJ(93)
53058       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
53059         IF(K(IWP,2).EQ.23) THEN
53060           DMW=PMAS(23,1)
53061           DGW=PMAS(23,2)
53062         ELSE
53063           DMW=PMAS(24,1)
53064           DGW=PMAS(24,2)
53065         ENDIF
53066         DMP=P(IWP,5)
53067         DMN=P(IWN,5)
53068         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
53069         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
53070         TAUP=-TAUPD*LOG(PYR(IDUM))
53071         TAUN=-TAUND*LOG(PYR(IDUM))
53072         DXP=TAUP*PYP(IWP,8)/DMP
53073         DXN=TAUN*PYP(IWN,8)/DMN
53074         DX=DXP+DXN
53075         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
53076         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
53077       ENDIF
53078  
53079 C...Add separation between strings.
53080       IF(PARJ(94).GT.0.0D0) THEN
53081         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
53082         IWP=-1
53083         IWN=-1
53084       ENDIF
53085  
53086       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
53087         DO 220 IBE=1,MIN(9,MSTJ(52))
53088           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
53089             Q2MIN=PECM**2
53090             I1=K(I1M,1)
53091             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
53092               IF(I2M.EQ.I1M) GOTO 200
53093               I2=K(I2M,1)
53094               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
53095      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
53096      &        (P(I1,5)+P(I2,5))**2
53097               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
53098                 Q2MIN=Q2
53099               ENDIF
53100   200       CONTINUE
53101             P(I1M,5)=Q2MIN
53102   210     CONTINUE
53103   220   CONTINUE
53104       ENDIF
53105  
53106 C...Tabulate integral for subsequent momentum shift.
53107       DO 400 IBE=1,MIN(9,MSTJ(52))
53108         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
53109         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
53110      &  .LE.1) GOTO 270
53111         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
53112      &  NBE(7)-NBE(6)).LE.1) GOTO 270
53113         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
53114         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
53115         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
53116         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
53117         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
53118         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
53119         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
53120         QDELW=0.1D0*MIN(PMHQ,SIGW)
53121         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
53122         IF(MSTJ(51).EQ.1) THEN
53123           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
53124           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
53125           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
53126           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
53127           BEEX=EXP(0.5D0*QDEL/PARJ(93))
53128           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
53129           BEEXW=EXP(0.5D0*QDELW/SIGW)
53130           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
53131           BERT=EXP(-QDEL/PARJ(93))
53132           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
53133           BERTW=EXP(-QDELW/SIGW)
53134           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
53135         ELSE
53136           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
53137           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
53138           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
53139           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
53140         ENDIF
53141         DO 230 IBIN=1,NBIN
53142           QBIN=QDEL*(IBIN-0.5D0)
53143           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53144           IF(MSTJ(51).EQ.1) THEN
53145             BEEX=BEEX*BERT
53146             BEI(IBIN)=BEI(IBIN)*BEEX
53147           ELSE
53148             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
53149           ENDIF
53150           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
53151   230   CONTINUE
53152         DO 240 IBIN=1,NBIN3
53153           QBIN=QDEL3*(IBIN-0.5D0)
53154           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53155           IF(MSTJ(51).EQ.1) THEN
53156             BEEX3=BEEX3*BERT3
53157             BEI3(IBIN)=BEI3(IBIN)*BEEX3
53158           ELSE
53159             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
53160           ENDIF
53161           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
53162   240   CONTINUE
53163         DO 250 IBIN=1,NBINW
53164           QBIN=QDELW*(IBIN-0.5D0)
53165           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
53166           IF(MSTJ(51).EQ.1) THEN
53167             BEEXW=BEEXW*BERTW
53168             BEIW(IBIN)=BEIW(IBIN)*BEEXW
53169           ELSE
53170             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
53171           ENDIF
53172           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
53173   250   CONTINUE
53174         DO 260 IBIN=1,NBIN3W
53175           QBIN=QDEL3W*(IBIN-0.5D0)
53176           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
53177      &    SQRT(QBIN**2+PMHQ**2)
53178           IF(MSTJ(51).EQ.1) THEN
53179             BEEX3W=BEEX3W*BERT3W
53180             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
53181           ELSE
53182             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
53183           ENDIF
53184           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
53185   260   CONTINUE
53186  
53187 C...Loop through particle pairs and find old relative momentum.
53188   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
53189           I1=K(I1M,1)
53190           DO 380 I2M=I1M+1,NBE(IBE)
53191             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
53192             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
53193             I2=K(I2M,1)
53194             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
53195      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
53196             IF(Q2OLD.LE.0.0D0) GOTO 380
53197             QOLD=SQRT(Q2OLD)
53198  
53199 C...Calculate new relative momentum.
53200             QMOV=0.0D0
53201             QMOV3=0.0D0
53202             QMOVW=0.0D0
53203             QMOV3W=0.0D0
53204             IF(QOLD.LT.1D-3*QDEL) THEN
53205               GOTO 280
53206             ELSEIF(QOLD.LE.QDEL) THEN
53207               QMOV=QOLD/3D0
53208             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
53209               RBIN=QOLD/QDEL
53210               IBIN=RBIN
53211               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
53212               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
53213      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53214             ELSE
53215               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53216             ENDIF
53217   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
53218             IF(QOLD.LT.1D-3*QDEL3) THEN
53219               GOTO 290
53220             ELSEIF(QOLD.LE.QDEL3) THEN
53221               QMOV3=QOLD/3D0
53222             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
53223               RBIN3=QOLD/QDEL3
53224               IBIN3=RBIN3
53225               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
53226               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
53227      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53228             ELSE
53229               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53230             ENDIF
53231   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
53232             RSCALE=1.0D0
53233             IF(MSTJ(54).EQ.2)
53234      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
53235             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
53236      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
53237  
53238             IF(QOLD.LT.1D-3*QDELW) THEN
53239               GOTO 300
53240             ELSEIF(QOLD.LE.QDELW) THEN
53241               QMOVW=QOLD/3D0
53242             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
53243               RBINW=QOLD/QDELW
53244               IBINW=RBINW
53245               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
53246               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
53247      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
53248             ELSE
53249               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53250             ENDIF
53251   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
53252             IF(QOLD.LT.1D-3*QDEL3W) THEN
53253               GOTO 310
53254             ELSEIF(QOLD.LE.QDEL3W) THEN
53255               QMOV3W=QOLD/3D0
53256             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
53257               RBIN3W=QOLD/QDEL3W
53258               IBIN3W=RBIN3W
53259               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
53260               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
53261      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53262             ELSE
53263               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
53264             ENDIF
53265   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
53266             IF(MSTJ(54).EQ.2)
53267      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
53268  
53269   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
53270             DO 330 J=1,3
53271               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
53272               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
53273   330       CONTINUE
53274             IF(MSTJ(54).GE.1) THEN
53275               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
53276               DO 340 J=1,3
53277                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
53278                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
53279   340         CONTINUE
53280             ELSEIF(MSTJ(54).LE.-1) THEN
53281               EDEL=P(I1,4)+P(I2,4)-
53282      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
53283               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
53284      &        (P(I1,3)-P(I2,3))**2
53285               WMAX=-1.0D20
53286               MI3=0
53287               MI4=0
53288               S12=SDIP(I1,I2)
53289               SM1=(P(I1,5)+SMMIN)**2
53290               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53291                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
53292                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
53293                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
53294      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
53295                 I3=K(I3M,1)
53296                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
53297                 S13=SDIP(I1,I3)
53298                 S23=SDIP(I2,I3)
53299                 SM3=(P(I3,5)+SMMIN)**2
53300                 IF(MSTJ(54).EQ.-2) THEN
53301                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
53302      &            S23*MIN(SM1,SM3))*SM1)
53303                 ELSE
53304                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
53305      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
53306      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
53307      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
53308                 ENDIF
53309                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
53310                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
53311      &                 GOTO 360
53312                 ELSE
53313                   IF(WMAX*WI.GE.1.0) GOTO 360
53314                 ENDIF
53315                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
53316                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
53317                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
53318                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
53319      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
53320                   I4=K(I4M,1)
53321                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
53322      &            GOTO 350
53323                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
53324      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
53325      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
53326      &            GOTO 350
53327                   IF(MSTJ(54).EQ.-2) THEN
53328                     S14=SDIP(I1,I4)
53329                     S24=SDIP(I2,I4)
53330                     S34=SDIP(I3,I4)
53331                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
53332                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
53333                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
53334                     W=MIN(W,MIN(S23,S24)*S13*S14)
53335                     W=1.0D0/W
53336                   ELSE
53337 C...weight=1-cos(theta)/mtot2
53338                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
53339      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
53340      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
53341      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
53342                     W=1.0D0/S1234
53343                     IF(W.LE.WMAX) GOTO 350
53344                   ENDIF
53345                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
53346      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
53347                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
53348      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
53349                   IF(W.LE.WMAX) GOTO 350
53350                   MI3=I3M
53351                   MI4=I4M
53352                   WMAX=W
53353   350           CONTINUE
53354   360         CONTINUE
53355               IF(MI4.EQ.0) GOTO 380
53356               I3=K(MI3,1)
53357               I4=K(MI4,1)
53358               EOLD=P(I3,4)+P(I4,4)
53359               ENEW=EOLD+EDEL
53360               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
53361      &        (P(I3,3)+P(I4,3))**2
53362               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
53363               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
53364               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
53365               DO 370 J=1,3
53366                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
53367                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
53368   370         CONTINUE
53369             ENDIF
53370   380     CONTINUE
53371   390   CONTINUE
53372   400 CONTINUE
53373  
53374 C...Shift momenta and recalculate energies.
53375       ESUMP=0.0D0
53376       ESUM=0.0D0
53377       PROD=0.0D0
53378       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53379         I=K(IM,1)
53380         ESUMP=ESUMP+P(I,4)
53381         DO 410 J=1,3
53382           P(I,J)=P(I,J)+P(IM,J)
53383   410   CONTINUE
53384         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53385         ESUM=ESUM+P(I,4)
53386         DO 420 J=1,3
53387           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
53388   420   CONTINUE
53389   430 CONTINUE
53390  
53391       PARJ(96)=0.0D0
53392       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
53393   440   ALPHA=(ESUMP-ESUM)/PROD
53394         PARJ(96)=PARJ(96)+ALPHA
53395         PROD=0.0D0
53396         ESUM=0.0D0
53397         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
53398           I=K(IM,1)
53399           DO 450 J=1,3
53400             P(I,J)=P(I,J)+ALPHA*V(IM,J)
53401   450     CONTINUE
53402           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53403           ESUM=ESUM+P(I,4)
53404           DO 460 J=1,3
53405             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
53406   460     CONTINUE
53407   470   CONTINUE
53408         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
53409      &  GOTO 440
53410       ENDIF
53411  
53412 C...Rescale all momenta for energy conservation.
53413       PES=0D0
53414       PQS=0D0
53415       DO 480 I=1,N
53416         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
53417         PES=PES+P(I,4)
53418         PQS=PQS+P(I,5)**2/P(I,4)
53419   480 CONTINUE
53420       PARJ(95)=PES-PECM
53421       FAC=(PECM-PQS)/(PES-PQS)
53422       DO 500 I=1,N
53423         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
53424         DO 490 J=1,3
53425           P(I,J)=FAC*P(I,J)
53426   490   CONTINUE
53427         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
53428   500 CONTINUE
53429  
53430 C...Boost back to correct reference frame.
53431   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
53432       DO 520 I=1,N
53433         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
53434   520 CONTINUE
53435  
53436       RETURN
53437       END
53438  
53439 C*********************************************************************
53440  
53441 C...PYBESQ
53442 C...Calculates the momentum shift in a system of two particles assuming
53443 C...the relative momentum squared should be shifted to Q2NEW. NI is the
53444 C...last position occupied in /PYJETS/.
53445  
53446       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
53447  
53448 C...Double precision and integer declarations.
53449       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53450       IMPLICIT INTEGER(I-N)
53451       INTEGER PYK,PYCHGE,PYCOMP
53452 C...Parameter statement to help give large particle numbers.
53453       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53454      &KEXCIT=4000000,KDIMEN=5000000)
53455 C...Commonblocks.
53456       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53457       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53458       SAVE /PYJETS/,/PYDAT1/
53459 C...Local arrays and data.
53460       DIMENSION DP(5)
53461       SAVE HC1
53462  
53463       IF(MSTJ(55).EQ.0) THEN
53464         DQ2=Q2NEW-Q2OLD
53465         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
53466      &  (P(I1,3)-P(I2,3))**2
53467         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
53468      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
53469         SE=P(I1,4)+P(I2,4)
53470         DE=P(I1,4)-P(I2,4)
53471         DQ2SE=DQ2+SE**2
53472         DA=SE*DE*DP12-DP2*DQ2SE
53473         DB=DP2*DQ2SE-DP12**2
53474         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
53475         DO 100 J=1,3
53476           PD=HA*(P(I1,J)-P(I2,J))
53477           P(NI+1,J)=PD
53478           P(NI+2,J)=-PD
53479   100   CONTINUE
53480         RETURN
53481       ENDIF
53482  
53483       K(NI+1,1)=1
53484       K(NI+2,1)=1
53485       DO 110 J=1,5
53486         P(NI+1,J)=P(I1,J)
53487         P(NI+2,J)=P(I2,J)
53488         DP(J)=P(I1,J)+P(I2,J)
53489   110 CONTINUE
53490  
53491 C...Boost to cms and rotate first particle to z-axis
53492       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
53493      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
53494       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
53495       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
53496       S=Q2NEW+(P(I1,5)+P(I2,5))**2
53497       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
53498       P(NI+1,1)=0.0D0
53499       P(NI+1,2)=0.0D0
53500       P(NI+1,3)=PZ
53501       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
53502       P(NI+2,1)=0.0D0
53503       P(NI+2,2)=0.0D0
53504       P(NI+2,3)=-PZ
53505       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
53506       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
53507       CALL PYROBO(NI+1,NI+2,THE,PHI,
53508      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
53509  
53510       DO 120 J=1,3
53511         P(NI+1,J)=P(NI+1,J)-P(I1,J)
53512         P(NI+2,J)=P(NI+2,J)-P(I2,J)
53513   120 CONTINUE
53514  
53515       RETURN
53516       END
53517  
53518 C*********************************************************************
53519  
53520 C...PYMASS
53521 C...Gives the mass of a particle/parton.
53522  
53523       FUNCTION PYMASS(KF)
53524  
53525 C...Double precision and integer declarations.
53526       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53527       IMPLICIT INTEGER(I-N)
53528       INTEGER PYK,PYCHGE,PYCOMP
53529 C...Commonblocks.
53530       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53531       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53532       SAVE /PYDAT1/,/PYDAT2/
53533  
53534 C...Reset variables. Compressed code. Special case for popcorn diquarks.
53535       PYMASS=0D0
53536       KFA=IABS(KF)
53537       KC=PYCOMP(KF)
53538       IF(KC.EQ.0) THEN
53539         MSTJ(93)=0
53540         RETURN
53541       ENDIF
53542  
53543 C...Guarantee use of constituent masses for internal checks.
53544       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
53545      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
53546         IF(KFA.LE.5) THEN
53547           PYMASS=PARF(100+KFA)
53548           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
53549         ELSEIF(KFA.LE.10) THEN
53550           PYMASS=PMAS(KFA,1)
53551         ELSEIF(MSTJ(93).EQ.1) THEN
53552           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
53553         ELSE
53554           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
53555         ENDIF
53556  
53557 C...Other masses can be read directly off table.
53558       ELSE
53559         PYMASS=PMAS(KC,1)
53560       ENDIF
53561  
53562 C...Optional mass broadening according to truncated Breit-Wigner
53563 C...(either in m or in m^2).
53564       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
53565         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
53566           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
53567      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
53568         ELSE
53569           PM0=PYMASS
53570           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
53571      &    (PM0*PMAS(KC,2)))
53572           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
53573           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
53574      &    (PMUPP-PMLOW)*PYR(0))))
53575         ENDIF
53576       ENDIF
53577       MSTJ(93)=0
53578  
53579       RETURN
53580       END
53581  
53582 C*********************************************************************
53583  
53584 C...PYMRUN
53585 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
53586 C...for Higgs couplings. Everything else sent on to PYMASS.
53587  
53588       FUNCTION PYMRUN(KF,Q2)
53589  
53590 C...Double precision and integer declarations.
53591       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53592       IMPLICIT INTEGER(I-N)
53593       INTEGER PYK,PYCHGE,PYCOMP
53594 C...Commonblocks.
53595       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53596       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53597       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53598       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
53599  
53600 C...Most masses not handled here.
53601       KFA=IABS(KF)
53602       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
53603         PYMRUN=PYMASS(KF)
53604  
53605 C...Current-algebra masses, but no Q2 dependence.
53606       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
53607         PYMRUN=PARF(90+KFA)
53608  
53609 C...Running current-algebra masses.
53610       ELSE
53611         AS=PYALPS(Q2)
53612         PYMRUN=PARF(90+KFA)*
53613      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
53614      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
53615       ENDIF
53616  
53617       RETURN
53618       END
53619  
53620 C*********************************************************************
53621  
53622 C...PYNAME
53623 C...Gives the particle/parton name as a character string.
53624  
53625       SUBROUTINE PYNAME(KF,CHAU)
53626  
53627 C...Double precision and integer declarations.
53628       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53629       IMPLICIT INTEGER(I-N)
53630       INTEGER PYK,PYCHGE,PYCOMP
53631 C...Commonblocks.
53632       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53633       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53634       COMMON/PYDAT4/CHAF(500,2)
53635       CHARACTER CHAF*16
53636       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
53637 C...Local character variable.
53638       CHARACTER CHAU*16
53639  
53640 C...Read out code with distinction particle/antiparticle.
53641       CHAU=' '
53642       KC=PYCOMP(KF)
53643       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
53644  
53645  
53646       RETURN
53647       END
53648  
53649 C*********************************************************************
53650  
53651 C...PYCHGE
53652 C...Gives three times the charge for a particle/parton.
53653  
53654       FUNCTION PYCHGE(KF)
53655  
53656 C...Double precision and integer declarations.
53657       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53658       IMPLICIT INTEGER(I-N)
53659       INTEGER PYK,PYCHGE,PYCOMP
53660 C...Commonblocks.
53661       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53662       SAVE /PYDAT2/
53663  
53664 C...Read out charge and change sign for antiparticle.
53665       PYCHGE=0
53666       KC=PYCOMP(KF)
53667       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
53668  
53669       RETURN
53670       END
53671  
53672 C*********************************************************************
53673  
53674 C...PYCOMP
53675 C...Compress the standard KF codes for use in mass and decay arrays;
53676 C...also checks whether a given code actually is defined.
53677  
53678       FUNCTION PYCOMP(KF)
53679  
53680 C...Double precision and integer declarations.
53681       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53682       IMPLICIT INTEGER(I-N)
53683       INTEGER PYK,PYCHGE,PYCOMP
53684 C...Commonblocks.
53685       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53686       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53687       SAVE /PYDAT1/,/PYDAT2/
53688 C...Local arrays and saved data.
53689       DIMENSION KFORD(100:500),KCORD(101:500)
53690       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
53691  
53692 C...Whenever necessary reorder codes for faster search.
53693       IF(MSTU(20).EQ.0) THEN
53694         NFORD=100
53695         KFORD(100)=0
53696         DO 120 I=101,500
53697           KFA=KCHG(I,4)
53698           IF(KFA.LE.100) GOTO 120
53699           NFORD=NFORD+1
53700           DO 100 I1=NFORD-1,0,-1
53701             IF(KFA.GE.KFORD(I1)) GOTO 110
53702             KFORD(I1+1)=KFORD(I1)
53703             KCORD(I1+1)=KCORD(I1)
53704   100     CONTINUE
53705   110     KFORD(I1+1)=KFA
53706           KCORD(I1+1)=I
53707   120   CONTINUE
53708         MSTU(20)=1
53709         KFLAST=0
53710         KCLAST=0
53711       ENDIF
53712  
53713 C...Fast action if same code as in latest call.
53714       IF(KF.EQ.KFLAST) THEN
53715         PYCOMP=KCLAST
53716         RETURN
53717       ENDIF
53718  
53719 C...Starting values. Remove internal diquark flags.
53720       PYCOMP=0
53721       KFA=IABS(KF)
53722       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
53723      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
53724  
53725 C...Simple cases: direct translation.
53726       IF(KFA.GT.KFORD(NFORD)) THEN
53727       ELSEIF(KFA.LE.100) THEN
53728         PYCOMP=KFA
53729  
53730 C...Else binary search.
53731       ELSE
53732         IMIN=100
53733         IMAX=NFORD+1
53734   130   IAVG=(IMIN+IMAX)/2
53735         IF(KFORD(IAVG).GT.KFA) THEN
53736           IMAX=IAVG
53737           IF(IMAX.GT.IMIN+1) GOTO 130
53738         ELSEIF(KFORD(IAVG).LT.KFA) THEN
53739           IMIN=IAVG
53740           IF(IMAX.GT.IMIN+1) GOTO 130
53741         ELSE
53742           PYCOMP=KCORD(IAVG)
53743         ENDIF
53744       ENDIF
53745  
53746 C...Check if antiparticle allowed.
53747       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
53748         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
53749       ENDIF
53750  
53751 C...Save codes for possible future fast action.
53752       KFLAST=KF
53753       KCLAST=PYCOMP
53754  
53755       RETURN
53756       END
53757  
53758 C*********************************************************************
53759  
53760 C...PYERRM
53761 C...Informs user of errors in program execution.
53762  
53763       SUBROUTINE PYERRM(MERR,CHMESS)
53764  
53765 C...Double precision and integer declarations.
53766       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53767       IMPLICIT INTEGER(I-N)
53768       INTEGER PYK,PYCHGE,PYCOMP
53769 C...Commonblocks.
53770       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53771       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53772       SAVE /PYJETS/,/PYDAT1/
53773 C...Local character variable.
53774       CHARACTER CHMESS*(*)
53775  
53776 C...Write first few warnings, then be silent.
53777       IF(MERR.LE.10) THEN
53778         MSTU(27)=MSTU(27)+1
53779         MSTU(28)=MERR
53780         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
53781      &  MERR,MSTU(31),CHMESS
53782  
53783 C...Write first few errors, then be silent or stop program.
53784       ELSEIF(MERR.LE.20) THEN
53785         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
53786         MSTU(24)=MERR-10
53787         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
53788      &  MERR-10,MSTU(31),CHMESS
53789         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
53790           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
53791           WRITE(MSTU(11),5200)
53792           IF(MERR.NE.17) CALL PYLIST(2)
53793           STOP
53794         ENDIF
53795  
53796 C...Stop program in case of irreparable error.
53797       ELSE
53798         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
53799         STOP
53800       ENDIF
53801  
53802 C...Formats for output.
53803  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
53804      &' PYEXEC calls:'/5X,A)
53805  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
53806      &' PYEXEC calls:'/5X,A)
53807  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
53808      &'event!')
53809  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
53810      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
53811  
53812       RETURN
53813       END
53814  
53815 C*********************************************************************
53816  
53817 C...PYALEM
53818 C...Calculates the running alpha_electromagnetic.
53819  
53820       FUNCTION PYALEM(Q2)
53821  
53822 C...Double precision and integer declarations.
53823       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53824       IMPLICIT INTEGER(I-N)
53825       INTEGER PYK,PYCHGE,PYCOMP
53826 C...Commonblocks.
53827       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53828       SAVE /PYDAT1/
53829  
53830 C...Calculate real part of photon vacuum polarization.
53831 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
53832 C...For hadrons use parametrization of H. Burkhardt et al.
53833 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
53834       AEMPI=PARU(101)/(3D0*PARU(1))
53835       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
53836         RPIGG=0D0
53837       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
53838         RPIGG=0D0
53839       ELSEIF(MSTU(101).EQ.2) THEN
53840         RPIGG=1D0-PARU(101)/PARU(103)
53841       ELSEIF(Q2.LT.0.09D0) THEN
53842         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
53843       ELSEIF(Q2.LT.9D0) THEN
53844         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
53845      &  0.00238D0*LOG(1D0+3.927D0*Q2)
53846       ELSEIF(Q2.LT.1D4) THEN
53847         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
53848      &  0.00299D0*LOG(1D0+Q2)
53849       ELSE
53850         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
53851      &  0.00293D0*LOG(1D0+Q2)
53852       ENDIF
53853  
53854 C...Calculate running alpha_em.
53855       PYALEM=PARU(101)/(1D0-RPIGG)
53856       PARU(108)=PYALEM
53857  
53858       RETURN
53859       END
53860  
53861 C*********************************************************************
53862  
53863 C...PYALPS
53864 C...Gives the value of alpha_strong.
53865  
53866       FUNCTION PYALPS(Q2)
53867  
53868 C...Double precision and integer declarations.
53869       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53870       IMPLICIT INTEGER(I-N)
53871       INTEGER PYK,PYCHGE,PYCOMP
53872 C...Commonblocks.
53873       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53874       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53875       SAVE /PYDAT1/,/PYDAT2/
53876  
53877 C...Constant alpha_strong trivial. Pick artificial Lambda.
53878       IF(MSTU(111).LE.0) THEN
53879         PYALPS=PARU(111)
53880         MSTU(118)=MSTU(112)
53881         PARU(117)=0.2D0
53882         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
53883      &  ((33D0-2D0*MSTU(112))*PARU(111)))
53884         PARU(118)=PARU(111)
53885         RETURN
53886       ENDIF
53887  
53888 C...Find effective Q2, number of flavours and Lambda.
53889       Q2EFF=Q2
53890       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
53891       NF=MSTU(112)
53892       ALAM2=PARU(112)**2
53893   100 IF(NF.GT.MAX(2,MSTU(113))) THEN
53894         Q2THR=PARU(113)*PMAS(NF,1)**2
53895         IF(Q2EFF.LT.Q2THR) THEN
53896           NF=NF-1
53897           ALAM2=ALAM2*(Q2THR/ALAM2)**(2D0/(33D0-2D0*NF))
53898           GOTO 100
53899         ENDIF
53900       ENDIF
53901   110 IF(NF.LT.MIN(8,MSTU(114))) THEN
53902         Q2THR=PARU(113)*PMAS(NF+1,1)**2
53903         IF(Q2EFF.GT.Q2THR) THEN
53904           NF=NF+1
53905           ALAM2=ALAM2*(ALAM2/Q2THR)**(2D0/(33D0-2D0*NF))
53906           GOTO 110
53907         ENDIF
53908       ENDIF
53909       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
53910       PARU(117)=SQRT(ALAM2)
53911  
53912 C...Evaluate first or second order alpha_strong.
53913       B0=(33D0-2D0*NF)/6D0
53914       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
53915       IF(MSTU(111).EQ.1) THEN
53916         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
53917       ELSE
53918         B1=(153D0-19D0*NF)/6D0
53919         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
53920      &  (B0**2*ALGQ)))
53921       ENDIF
53922       MSTU(118)=NF
53923       PARU(118)=PYALPS
53924  
53925       RETURN
53926       END
53927  
53928 C*********************************************************************
53929  
53930 C...PYANGL
53931 C...Reconstructs an angle from given x and y coordinates.
53932  
53933       FUNCTION PYANGL(X,Y)
53934  
53935 C...Double precision and integer declarations.
53936       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53937       IMPLICIT INTEGER(I-N)
53938       INTEGER PYK,PYCHGE,PYCOMP
53939 C...Commonblocks.
53940       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53941       SAVE /PYDAT1/
53942  
53943       PYANGL=0D0
53944       R=SQRT(X**2+Y**2)
53945       IF(R.LT.1D-20) RETURN
53946       IF(ABS(X)/R.LT.0.8D0) THEN
53947         PYANGL=SIGN(ACOS(X/R),Y)
53948       ELSE
53949         PYANGL=ASIN(Y/R)
53950         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
53951           PYANGL=PARU(1)-PYANGL
53952         ELSEIF(X.LT.0D0) THEN
53953           PYANGL=-PARU(1)-PYANGL
53954         ENDIF
53955       ENDIF
53956  
53957       RETURN
53958       END
53959  
53960 C*********************************************************************
53961  
53962 C...PYROBO
53963 C...Performs rotations and boosts.
53964  
53965       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
53966  
53967 C...Double precision and integer declarations.
53968       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53969       IMPLICIT INTEGER(I-N)
53970       INTEGER PYK,PYCHGE,PYCOMP
53971 C...Commonblocks.
53972       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53973       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53974       SAVE /PYJETS/,/PYDAT1/
53975 C...Local arrays.
53976       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
53977  
53978 C...Find and check range of rotation/boost.
53979       IMIN=IMI
53980       IF(IMIN.LE.0) IMIN=1
53981       IF(MSTU(1).GT.0) IMIN=MSTU(1)
53982       IMAX=IMA
53983       IF(IMAX.LE.0) IMAX=N
53984       IF(MSTU(2).GT.0) IMAX=MSTU(2)
53985       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
53986         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
53987         RETURN
53988       ENDIF
53989  
53990 C...Optional resetting of V (when not set before.)
53991       IF(MSTU(33).NE.0) THEN
53992         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
53993           DO 100 J=1,5
53994             V(I,J)=0D0
53995   100     CONTINUE
53996   110   CONTINUE
53997         MSTU(33)=0
53998       ENDIF
53999  
54000 C...Rotate, typically from z axis to direction (theta,phi).
54001       IF(THE**2+PHI**2.GT.1D-20) THEN
54002         ROT(1,1)=COS(THE)*COS(PHI)
54003         ROT(1,2)=-SIN(PHI)
54004         ROT(1,3)=SIN(THE)*COS(PHI)
54005         ROT(2,1)=COS(THE)*SIN(PHI)
54006         ROT(2,2)=COS(PHI)
54007         ROT(2,3)=SIN(THE)*SIN(PHI)
54008         ROT(3,1)=-SIN(THE)
54009         ROT(3,2)=0D0
54010         ROT(3,3)=COS(THE)
54011         DO 140 I=IMIN,IMAX
54012           IF(K(I,1).LE.0) GOTO 140
54013           DO 120 J=1,3
54014             PR(J)=P(I,J)
54015             VR(J)=V(I,J)
54016   120     CONTINUE
54017           DO 130 J=1,3
54018             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
54019             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
54020   130     CONTINUE
54021   140   CONTINUE
54022       ENDIF
54023  
54024 C...Boost, typically from rest to momentum/energy=beta.
54025       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
54026         DBX=BEX
54027         DBY=BEY
54028         DBZ=BEZ
54029         DB=SQRT(DBX**2+DBY**2+DBZ**2)
54030         EPS1=1D0-1D-12
54031         IF(DB.GT.EPS1) THEN
54032 C...Rescale boost vector if too close to unity.
54033           CALL PYERRM(3,'(PYROBO:) boost vector too large')
54034           DBX=DBX*(EPS1/DB)
54035           DBY=DBY*(EPS1/DB)
54036           DBZ=DBZ*(EPS1/DB)
54037           DB=EPS1
54038         ENDIF
54039         DGA=1D0/SQRT(1D0-DB**2)
54040         DO 160 I=IMIN,IMAX
54041           IF(K(I,1).LE.0) GOTO 160
54042           DO 150 J=1,4
54043             DP(J)=P(I,J)
54044             DV(J)=V(I,J)
54045   150     CONTINUE
54046           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
54047           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
54048           P(I,1)=DP(1)+DGABP*DBX
54049           P(I,2)=DP(2)+DGABP*DBY
54050           P(I,3)=DP(3)+DGABP*DBZ
54051           P(I,4)=DGA*(DP(4)+DBP)
54052           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
54053           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
54054           V(I,1)=DV(1)+DGABV*DBX
54055           V(I,2)=DV(2)+DGABV*DBY
54056           V(I,3)=DV(3)+DGABV*DBZ
54057           V(I,4)=DGA*(DV(4)+DBV)
54058   160   CONTINUE
54059       ENDIF
54060  
54061       RETURN
54062       END
54063  
54064 C*********************************************************************
54065  
54066 C...PYEDIT
54067 C...Performs global manipulations on the event record, in particular
54068 C...to exclude unstable or undetectable partons/particles.
54069  
54070       SUBROUTINE PYEDIT(MEDIT)
54071  
54072 C...Double precision and integer declarations.
54073       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54074       IMPLICIT INTEGER(I-N)
54075       INTEGER PYK,PYCHGE,PYCOMP
54076 C...Commonblocks.
54077       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
54078       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54079       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54080       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
54081 C...Local arrays.
54082       DIMENSION NS(2),PTS(2),PLS(2)
54083  
54084 C...Remove unwanted partons/particles.
54085       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
54086         IMAX=N
54087         IF(MSTU(2).GT.0) IMAX=MSTU(2)
54088         I1=MAX(1,MSTU(1))-1
54089         DO 110 I=MAX(1,MSTU(1)),IMAX
54090           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
54091           IF(MEDIT.EQ.1) THEN
54092             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
54093           ELSEIF(MEDIT.EQ.2) THEN
54094             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
54095             KC=PYCOMP(K(I,2))
54096             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.KC.EQ.18)
54097      &      GOTO 110
54098           ELSEIF(MEDIT.EQ.3) 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) GOTO 110
54102             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
54103           ELSEIF(MEDIT.EQ.5) THEN
54104             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
54105             KC=PYCOMP(K(I,2))
54106             IF(KC.EQ.0) GOTO 110
54107             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
54108      &      KCHG(KC,2).EQ.0) GOTO 110
54109           ENDIF
54110  
54111 C...Pack remaining partons/particles. Origin no longer known.
54112           I1=I1+1
54113           DO 100 J=1,5
54114             K(I1,J)=K(I,J)
54115             P(I1,J)=P(I,J)
54116             V(I1,J)=V(I,J)
54117   100     CONTINUE
54118           K(I1,3)=0
54119   110   CONTINUE
54120         IF(I1.LT.N) MSTU(3)=0
54121         IF(I1.LT.N) MSTU(70)=0
54122         N=I1
54123  
54124 C...Selective removal of class of entries. New position of retained.
54125       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
54126         I1=0
54127         DO 120 I=1,N
54128           K(I,3)=MOD(K(I,3),MSTU(5))
54129           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
54130           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
54131           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
54132      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
54133           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
54134      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
54135           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
54136           I1=I1+1
54137           K(I,3)=K(I,3)+MSTU(5)*I1
54138   120   CONTINUE
54139  
54140 C...Find new event history information and replace old.
54141         DO 140 I=1,N
54142           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
54143      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
54144           ID=I
54145   130     IM=MOD(K(ID,3),MSTU(5))
54146           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
54147             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
54148      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
54149               ID=IM
54150               GOTO 130
54151             ENDIF
54152           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
54153             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
54154      &      K(IM,2).EQ.94) THEN
54155               ID=IM
54156               GOTO 130
54157             ENDIF
54158           ENDIF
54159           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
54160           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
54161           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
54162      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
54163             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
54164      &      K(K(I,4),3)/MSTU(5)
54165             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
54166      &      K(K(I,5),3)/MSTU(5)
54167           ELSE
54168             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
54169             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
54170      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
54171             KCD=MOD(K(I,4),MSTU(5))
54172             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
54173             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
54174             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
54175             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
54176             KCD=MOD(K(I,5),MSTU(5))
54177             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
54178             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
54179           ENDIF
54180   140   CONTINUE
54181  
54182 C...Pack remaining entries.
54183         I1=0
54184         MSTU90=MSTU(90)
54185         MSTU(90)=0
54186         DO 170 I=1,N
54187           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
54188           I1=I1+1
54189           DO 150 J=1,5
54190             K(I1,J)=K(I,J)
54191             P(I1,J)=P(I,J)
54192             V(I1,J)=V(I,J)
54193   150     CONTINUE
54194           K(I1,3)=MOD(K(I1,3),MSTU(5))
54195           DO 160 IZ=1,MSTU90
54196             IF(I.EQ.MSTU(90+IZ)) THEN
54197               MSTU(90)=MSTU(90)+1
54198               MSTU(90+MSTU(90))=I1
54199               PARU(90+MSTU(90))=PARU(90+IZ)
54200             ENDIF
54201   160     CONTINUE
54202   170   CONTINUE
54203         IF(I1.LT.N) MSTU(3)=0
54204         IF(I1.LT.N) MSTU(70)=0
54205         N=I1
54206  
54207 C...Fill in some missing daughter pointers (lost in colour flow).
54208       ELSEIF(MEDIT.EQ.16) THEN
54209         DO 220 I=1,N
54210           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
54211           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
54212 C...Find daughters who point to mother.
54213           DO 180 I1=I+1,N
54214             IF(K(I1,3).NE.I) THEN
54215             ELSEIF(K(I,4).EQ.0) THEN
54216               K(I,4)=I1
54217             ELSE
54218               K(I,5)=I1
54219             ENDIF
54220   180     CONTINUE
54221           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54222           IF(K(I,4).NE.0) GOTO 220
54223 C...Find daughters who point to documentation version of mother.
54224           IM=K(I,3)
54225           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
54226           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
54227           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
54228           DO 190 I1=I+1,N
54229             IF(K(I1,3).NE.IM) THEN
54230             ELSEIF(K(I,4).EQ.0) THEN
54231               K(I,4)=I1
54232             ELSE
54233               K(I,5)=I1
54234             ENDIF
54235   190     CONTINUE
54236           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54237           IF(K(I,4).NE.0) GOTO 220
54238 C...Find daughters who point to documentation daughters who,
54239 C...in their turn, point to documentation mother.
54240           ID1=IM
54241           ID2=IM
54242           DO 200 I1=IM+1,I-1
54243             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
54244               ID2=I1
54245               IF(ID1.EQ.IM) ID1=I1
54246             ENDIF
54247   200     CONTINUE
54248           DO 210 I1=I+1,N
54249             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
54250             ELSEIF(K(I,4).EQ.0) THEN
54251               K(I,4)=I1
54252             ELSE
54253               K(I,5)=I1
54254             ENDIF
54255   210     CONTINUE
54256           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
54257   220   CONTINUE
54258  
54259 C...Save top entries at bottom of PYJETS commonblock.
54260       ELSEIF(MEDIT.EQ.21) THEN
54261         IF(2*N.GE.MSTU(4)) THEN
54262           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
54263           RETURN
54264         ENDIF
54265         DO 240 I=1,N
54266           DO 230 J=1,5
54267             K(MSTU(4)-I,J)=K(I,J)
54268             P(MSTU(4)-I,J)=P(I,J)
54269             V(MSTU(4)-I,J)=V(I,J)
54270   230     CONTINUE
54271   240   CONTINUE
54272         MSTU(32)=N
54273  
54274 C...Restore bottom entries of commonblock PYJETS to top.
54275       ELSEIF(MEDIT.EQ.22) THEN
54276         DO 260 I=1,MSTU(32)
54277           DO 250 J=1,5
54278             K(I,J)=K(MSTU(4)-I,J)
54279             P(I,J)=P(MSTU(4)-I,J)
54280             V(I,J)=V(MSTU(4)-I,J)
54281   250     CONTINUE
54282   260   CONTINUE
54283         N=MSTU(32)
54284  
54285 C...Mark primary entries at top of commonblock PYJETS as untreated.
54286       ELSEIF(MEDIT.EQ.23) THEN
54287         I1=0
54288         DO 270 I=1,N
54289           KH=K(I,3)
54290           IF(KH.GE.1) THEN
54291             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
54292           ENDIF
54293           IF(KH.NE.0) GOTO 280
54294           I1=I1+1
54295           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
54296           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
54297   270   CONTINUE
54298   280   N=I1
54299  
54300 C...Place largest axis along z axis and second largest in xy plane.
54301       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
54302         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
54303      &  P(MSTU(61),2)),0D0,0D0,0D0)
54304         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
54305      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
54306         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
54307      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
54308         IF(MEDIT.EQ.31) RETURN
54309  
54310 C...Rotate to put slim jet along +z axis.
54311         DO 290 IS=1,2
54312           NS(IS)=0
54313           PTS(IS)=0D0
54314           PLS(IS)=0D0
54315   290   CONTINUE
54316         DO 300 I=1,N
54317           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
54318           IF(MSTU(41).GE.2) THEN
54319             KC=PYCOMP(K(I,2))
54320             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
54321      &      KC.EQ.18) GOTO 300
54322             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
54323      &      .EQ.0) GOTO 300
54324           ENDIF
54325           IS=2D0-SIGN(0.5D0,P(I,3))
54326           NS(IS)=NS(IS)+1
54327           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
54328   300   CONTINUE
54329         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
54330      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
54331  
54332 C...Rotate to put second largest jet into -z,+x quadrant.
54333         DO 310 I=1,N
54334           IF(P(I,3).GE.0D0) GOTO 310
54335           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
54336           IF(MSTU(41).GE.2) THEN
54337             KC=PYCOMP(K(I,2))
54338             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
54339      &      KC.EQ.18) GOTO 310
54340             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
54341      &      .EQ.0) GOTO 310
54342           ENDIF
54343           IS=2D0-SIGN(0.5D0,P(I,1))
54344           PLS(IS)=PLS(IS)-P(I,3)
54345   310   CONTINUE
54346         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
54347      &  0D0,0D0,0D0)
54348       ENDIF
54349  
54350       RETURN
54351       END
54352  
54353 C*********************************************************************
54354  
54355 C...PYLIST
54356 C...Gives program heading, or lists an event, or particle
54357 C...data, or current parameter values.
54358  
54359       SUBROUTINE PYLIST(MLIST)
54360  
54361 C...Double precision and integer declarations.
54362       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54363       IMPLICIT INTEGER(I-N)
54364       INTEGER PYK,PYCHGE,PYCOMP
54365 C...Parameter statement to help give large particle numbers.
54366       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54367      &KEXCIT=4000000,KDIMEN=5000000)
54368  
54369 C...HEPEVT commonblock.
54370       PARAMETER (NMXHEP=4000)
54371       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
54372      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
54373       DOUBLE PRECISION PHEP,VHEP
54374       SAVE /HEPEVT/
54375  
54376 C...User process event common block.
54377       INTEGER MAXNUP
54378       PARAMETER (MAXNUP=500)
54379       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
54380       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
54381       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
54382      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
54383      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
54384       SAVE /HEPEUP/
54385  
54386 C...Commonblocks.
54387       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
54388       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54389       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54390       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54391       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
54392 C...Local arrays, character variables and data.
54393       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
54394       DIMENSION PS(6)
54395       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
54396  
54397 C...Initialization printout: version number and date of last change.
54398       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
54399         CALL PYLOGO
54400         MSTU(12)=0
54401         IF(MLIST.EQ.0) RETURN
54402       ENDIF
54403  
54404 C...List event data, including additional lines after N.
54405       IF(MLIST.GE.1.AND.MLIST.LE.3) THEN
54406         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
54407         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
54408         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
54409         LMX=12
54410         IF(MLIST.GE.2) LMX=16
54411         ISTR=0
54412         IMAX=N
54413         IF(MSTU(2).GT.0) IMAX=MSTU(2)
54414         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
54415           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
54416           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
54417           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
54418  
54419 C...Get particle name, pad it and check it is not too long.
54420           CALL PYNAME(K(I,2),CHAP)
54421           LEN=0
54422           DO 100 LEM=1,16
54423             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
54424   100     CONTINUE
54425           MDL=(K(I,1)+19)/10
54426           LDL=0
54427           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
54428             CHAC=CHAP
54429             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
54430           ELSE
54431             LDL=1
54432             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
54433             IF(LEN.EQ.0) THEN
54434               CHAC=CHDL(MDL)(1:2*LDL)//' '
54435             ELSE
54436               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
54437      &        CHDL(MDL)(LDL+1:2*LDL)//' '
54438               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
54439             ENDIF
54440           ENDIF
54441  
54442 C...Add information on string connection.
54443           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
54444      &    THEN
54445             KC=PYCOMP(K(I,2))
54446             KCC=0
54447             IF(KC.NE.0) KCC=KCHG(KC,2)
54448             IF(IABS(K(I,2)).EQ.39) THEN
54449               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
54450             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
54451               ISTR=1
54452               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
54453             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
54454               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
54455             ELSEIF(KCC.NE.0) THEN
54456               ISTR=0
54457               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
54458             ENDIF
54459           ENDIF
54460           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
54461      &    CHAC(LMX-1:LMX-1)='I'
54462  
54463 C...Write data for particle/jet.
54464           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
54465             WRITE(MSTU(11),5400) I,CHAC(1:12),(K(I,J1),J1=1,3),
54466      &      (P(I,J2),J2=1,5)
54467           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
54468             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
54469      &      (P(I,J2),J2=1,5)
54470           ELSEIF(MLIST.EQ.1) THEN
54471             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
54472      &      (P(I,J2),J2=1,5)
54473           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
54474      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
54475             WRITE(MSTU(11),5700) I,CHAC,(K(I,J1),J1=1,3),
54476      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
54477      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
54478      &      (P(I,J2),J2=1,5)
54479           ELSE
54480             WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,5),
54481      &      (P(I,J2),J2=1,5)
54482           ENDIF
54483           IF(MLIST.EQ.3) WRITE(MSTU(11),5900) (V(I,J),J=1,5)
54484  
54485 C...Insert extra separator lines specified by user.
54486           IF(MSTU(70).GE.1) THEN
54487             ISEP=0
54488             DO 110 J=1,MIN(10,MSTU(70))
54489               IF(I.EQ.MSTU(70+J)) ISEP=1
54490   110       CONTINUE
54491             IF(ISEP.EQ.1.AND.MLIST.EQ.1) WRITE(MSTU(11),6000)
54492             IF(ISEP.EQ.1.AND.MLIST.GE.2) WRITE(MSTU(11),6100)
54493           ENDIF
54494   120   CONTINUE
54495  
54496 C...Sum of charges and momenta.
54497         DO 130 J=1,6
54498           PS(J)=PYP(0,J)
54499   130   CONTINUE
54500         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
54501           WRITE(MSTU(11),6200) PS(6),(PS(J),J=1,5)
54502         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
54503           WRITE(MSTU(11),6300) PS(6),(PS(J),J=1,5)
54504         ELSEIF(MLIST.EQ.1) THEN
54505           WRITE(MSTU(11),6400) PS(6),(PS(J),J=1,5)
54506         ELSE
54507           WRITE(MSTU(11),6500) PS(6),(PS(J),J=1,5)
54508         ENDIF
54509  
54510 C...Simple listing of HEPEVT entries (mainly for test purposes).
54511       ELSEIF(MLIST.EQ.5) THEN
54512         WRITE(MSTU(11),7500)
54513         DO 140 I=1,NHEP
54514           IF(ISTHEP(I).EQ.0) GOTO 140
54515           WRITE(MSTU(11),7600) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
54516      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
54517   140   CONTINUE
54518  
54519  
54520 C...Simple listing of user-process entries (mainly for test purposes).
54521       ELSEIF(MLIST.EQ.7) THEN
54522         WRITE(MSTU(11),7300)
54523         DO 150 I=1,NUP
54524           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
54525      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
54526   150   CONTINUE
54527  
54528 C...Give simple list of KF codes defined in program.
54529       ELSEIF(MLIST.EQ.11) THEN
54530         WRITE(MSTU(11),6600)
54531         DO 160 KF=1,80
54532           CALL PYNAME(KF,CHAP)
54533           CALL PYNAME(-KF,CHAN)
54534           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP
54535           IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54536   160   CONTINUE
54537         DO 190 KFLS=1,3,2
54538           DO 180 KFLA=1,5
54539             DO 170 KFLB=1,KFLA-(3-KFLS)/2
54540               KF=1000*KFLA+100*KFLB+KFLS
54541               CALL PYNAME(KF,CHAP)
54542               CALL PYNAME(-KF,CHAN)
54543               WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54544   170       CONTINUE
54545   180     CONTINUE
54546   190   CONTINUE
54547         DO 220 KMUL=0,5
54548           KFLS=3
54549           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
54550           IF(KMUL.EQ.5) KFLS=5
54551           KFLR=0
54552           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
54553           IF(KMUL.EQ.4) KFLR=2
54554           DO 210 KFLB=1,5
54555             DO 200 KFLC=1,KFLB-1
54556               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
54557               CALL PYNAME(KF,CHAP)
54558               CALL PYNAME(-KF,CHAN)
54559               WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54560               IF(KF.EQ.311) THEN
54561                 KFK=130
54562                 CALL PYNAME(KFK,CHAP)
54563                 WRITE(MSTU(11),6700) KFK,CHAP
54564                 KFK=310
54565                 CALL PYNAME(KFK,CHAP)
54566                 WRITE(MSTU(11),6700) KFK,CHAP
54567               ENDIF
54568   200       CONTINUE
54569             KF=10000*KFLR+110*KFLB+KFLS
54570             CALL PYNAME(KF,CHAP)
54571             WRITE(MSTU(11),6700) KF,CHAP
54572   210     CONTINUE
54573   220   CONTINUE
54574         KF=100443
54575         CALL PYNAME(KF,CHAP)
54576         WRITE(MSTU(11),6700) KF,CHAP
54577         KF=100553
54578         CALL PYNAME(KF,CHAP)
54579         WRITE(MSTU(11),6700) KF,CHAP
54580         DO 260 KFLSP=1,3
54581           KFLS=2+2*(KFLSP/3)
54582           DO 250 KFLA=1,5
54583             DO 240 KFLB=1,KFLA
54584               DO 230 KFLC=1,KFLB
54585                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
54586      &          GOTO 230
54587                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
54588                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
54589                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
54590                 CALL PYNAME(KF,CHAP)
54591                 CALL PYNAME(-KF,CHAN)
54592                 WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54593   230         CONTINUE
54594   240       CONTINUE
54595   250     CONTINUE
54596   260   CONTINUE
54597         DO 270 KC=1,500
54598           KF=KCHG(KC,4)
54599           IF(KF.LT.1000000) GOTO 270
54600           CALL PYNAME(KF,CHAP)
54601           CALL PYNAME(-KF,CHAN)
54602           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),6700) KF,CHAP
54603           IF(CHAN.NE.' ') WRITE(MSTU(11),6700) KF,CHAP,-KF,CHAN
54604   270   CONTINUE
54605  
54606 C...List parton/particle data table. Check whether to be listed.
54607       ELSEIF(MLIST.EQ.12) THEN
54608         WRITE(MSTU(11),6800)
54609         DO 300 KC=1,MSTU(6)
54610           KF=KCHG(KC,4)
54611           IF(KF.EQ.0) GOTO 300
54612           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
54613      &    GOTO 300
54614  
54615 C...Find particle name and mass. Print information.
54616           CALL PYNAME(KF,CHAP)
54617           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
54618           CALL PYNAME(-KF,CHAN)
54619           WRITE(MSTU(11),6900) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
54620      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
54621  
54622 C...Particle decay: channel number, branching ratios, matrix element,
54623 C...decay products.
54624           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
54625             DO 280 J=1,5
54626               CALL PYNAME(KFDP(IDC,J),CHAD(J))
54627   280       CONTINUE
54628             WRITE(MSTU(11),7000) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
54629      &      (CHAD(J),J=1,5)
54630   290     CONTINUE
54631   300   CONTINUE
54632  
54633 C...List parameter value table.
54634       ELSEIF(MLIST.EQ.13) THEN
54635         WRITE(MSTU(11),7100)
54636         DO 310 I=1,200
54637           WRITE(MSTU(11),7200) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
54638   310   CONTINUE
54639       ENDIF
54640  
54641 C...Format statements for output on unit MSTU(11) (by default 6).
54642  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
54643      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
54644  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
54645      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
54646      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
54647  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
54648      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
54649      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
54650      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
54651  5400 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
54652  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
54653  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
54654  5700 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
54655  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
54656  5900 FORMAT(66X,5(1X,F12.3))
54657  6000 FORMAT(1X,78('='))
54658  6100 FORMAT(1X,130('='))
54659  6200 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
54660  6300 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
54661  6400 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
54662  6500 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
54663      &5F13.5)
54664  6600 FORMAT(///20X,'List of KF codes in program'/)
54665  6700 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
54666  6800 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
54667      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
54668      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
54669      &1X,'ME',3X,'Br.rat.',4X,'decay products')
54670  6900 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
54671      &1X,1P,E13.5,3X,I2)
54672  7000 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
54673  7100 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
54674      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
54675  7200 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
54676  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
54677      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
54678      &'       E        m')
54679  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
54680  7500 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
54681      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
54682      &'       E        m')
54683  7600 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
54684  
54685       RETURN
54686       END
54687  
54688 C*********************************************************************
54689  
54690 C...PYLOGO
54691 C...Writes a logo for the program.
54692  
54693       SUBROUTINE PYLOGO
54694  
54695 C...Double precision and integer declarations.
54696       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54697       IMPLICIT INTEGER(I-N)
54698       INTEGER PYK,PYCHGE,PYCOMP
54699 C...Parameter for length of information block.
54700       PARAMETER (IREFER=24)
54701 C...Commonblocks.
54702       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54703       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54704       SAVE /PYDAT1/,/PYPARS/
54705 C...Local arrays and character variables.
54706       INTEGER IDATI(6)
54707       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
54708      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
54709  
54710 C...Data on months, logo, titles, and references.
54711       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
54712      &'Oct','Nov','Dec'/
54713       DATA (LOGO(J),J=1,19)/
54714      &'            *......*            ',
54715      &'       *:::!!:::::::::::*       ',
54716      &'    *::::::!!::::::::::::::*    ',
54717      &'  *::::::::!!::::::::::::::::*  ',
54718      &' *:::::::::!!:::::::::::::::::* ',
54719      &' *:::::::::!!:::::::::::::::::* ',
54720      &'  *::::::::!!::::::::::::::::*! ',
54721      &'    *::::::!!::::::::::::::* !! ',
54722      &'    !! *:::!!:::::::::::*    !! ',
54723      &'    !!     !* -><- *         !! ',
54724      &'    !!     !!                !! ',
54725      &'    !!     !!                !! ',
54726      &'    !!                       !! ',
54727      &'    !!        lh             !! ',
54728      &'    !!                       !! ',
54729      &'    !!                 hh    !! ',
54730      &'    !!    ll                 !! ',
54731      &'    !!                       !! ',
54732      &'    !!                          '/
54733       DATA (LOGO(J),J=20,38)/
54734      &'Welcome to the Lund Monte Carlo!',
54735      &'                                ',
54736      &'PPP  Y   Y TTTTT H   H III   A  ',
54737      &'P  P  Y Y    T   H   H  I   A A ',
54738      &'PPP    Y     T   HHHHH  I  AAAAA',
54739      &'P      Y     T   H   H  I  A   A',
54740      &'P      Y     T   H   H III A   A',
54741      &'                                ',
54742      &'This is PYTHIA version x.xxx    ',
54743      &'Last date of change: xx xxx 199x',
54744      &'                                ',
54745      &'Now is xx xxx 199x at xx:xx:xx  ',
54746      &'                                ',
54747      &'Disclaimer: this program comes  ',
54748      &'without any guarantees. Beware  ',
54749      &'of errors and use common sense  ',
54750      &'when interpreting results.      ',
54751      &'                                ',
54752      &'Copyright T. Sjostrand (2003)   '/
54753       DATA (REFER(J),J=1,18)/
54754      &'An archive of program versions and d',
54755      &'ocumentation is found on the web:   ',
54756      &'http://www.thep.lu.se/~torbjorn/Pyth',
54757      &'ia.html                             ',
54758      &'                                    ',
54759      &'                                    ',
54760      &'When you cite this program, currentl',
54761      &'y the official reference is         ',
54762      &'T. Sjostrand, P. Eden, C. Friberg, L',
54763      &'. Lonnblad, G. Miu, S. Mrenna and   ',
54764      &'E. Norrbin, Computer Physics Commun.',
54765      &' 135 (2001) 238.                    ',
54766      &'The large manual is                 ',
54767      &'                                    ',
54768      &'T. Sjostrand, L. Lonnblad and S. Mre',
54769      &'nna, LU TP 01-21 [hep-ph/0108264].  ',
54770      &'Also remember that the program, to a',
54771      &' large extent, represents original  '/
54772       DATA (REFER(J),J=19,36)/
54773      &'physics research. Other publications',
54774      &' of special relevance to your       ',
54775      &'studies may therefore deserve separa',
54776      &'te mention.                         ',
54777      &'                                    ',
54778      &'                                    ',
54779      &'Main author: Torbjorn Sjostrand; Dep',
54780      &'artment of Theoretical Physics 2,   ',
54781      &'  Lund University, Solvegatan 14A, S',
54782      &'-223 62 Lund, Sweden;               ',
54783      &'  phone: + 46 - 46 - 222 48 16; e-ma',
54784      &'il: torbjorn@thep.lu.se             ',
54785      &'Author: Leif Lonnblad; Department of',
54786      &' Theoretical Physics 2,             ',
54787      &'  Lund University, Solvegatan 14A, S',
54788      &'-223 62 Lund, Sweden;               ',
54789      &'  phone: + 46 - 46 - 222 77 80; e-ma',
54790      &'il: leif@thep.lu.se                 '/
54791       DATA (REFER(J),J=37,2*IREFER)/
54792      &'Author: Stephen Mrenna; Computing Di',
54793      &'vision, Simulations Group,          ',
54794      &'  Fermi National Accelerator Laborat',
54795      &'ory, MS 234, Batavia, IL 60510, USA;',
54796      &'  phone: + 1 - 630 - 840 - 2556; e-m',
54797      &'ail: mrenna@fnal.gov                ',
54798      &'Author: Peter Skands; Department of ',
54799      &'Theoretical Physics 2,              ',
54800      &'  Lund University, Solvegatan 14A, S',
54801      &'-223 62 Lund, Sweden;               ',
54802      &'  phone: + 46 - 46 - 222 31 92; e-ma',
54803      &'il: zeiler@thep.lu.se               '/
54804  
54805 C...Check that PYDATA linked.
54806       IF(MSTP(183)/10.NE.199.AND.MSTP(183)/10.NE.200) THEN
54807         WRITE(*,'(1X,A)')
54808      &  'Error: PYDATA has not been linked.'
54809         WRITE(*,'(1X,A)') 'Execution stopped!'
54810         STOP
54811  
54812 C...Write current version number and current date+time.
54813       ELSE
54814         WRITE(VERS,'(I1)') MSTP(181)
54815         LOGO(28)(24:24)=VERS
54816         WRITE(SUBV,'(I3)') MSTP(182)
54817         LOGO(28)(26:28)=SUBV
54818         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
54819         WRITE(DATE,'(I2)') MSTP(185)
54820         LOGO(29)(22:23)=DATE
54821         LOGO(29)(25:27)=MONTH(MSTP(184))
54822         WRITE(YEAR,'(I4)') MSTP(183)
54823         LOGO(29)(29:32)=YEAR
54824         CALL PYTIME(IDATI)
54825         IF(IDATI(1).LE.0) THEN
54826           LOGO(31)='                                '
54827         ELSE
54828           WRITE(DATE,'(I2)') IDATI(3)
54829           LOGO(31)(8:9)=DATE
54830           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
54831           WRITE(YEAR,'(I4)') IDATI(1)
54832           LOGO(31)(15:18)=YEAR
54833           WRITE(HOUR,'(I2)') IDATI(4)
54834           LOGO(31)(23:24)=HOUR
54835           WRITE(MINU,'(I2)') IDATI(5)
54836           LOGO(31)(26:27)=MINU
54837           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
54838           WRITE(SECO,'(I2)') IDATI(6)
54839           LOGO(31)(29:30)=SECO
54840           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
54841         ENDIF
54842       ENDIF
54843  
54844 C...Loop over lines in header. Define page feed and side borders.
54845       DO 100 ILIN=1,29+IREFER
54846         LINE=' '
54847         IF(ILIN.EQ.1) THEN
54848           LINE(1:1)='1'
54849         ELSE
54850           LINE(2:3)='**'
54851           LINE(78:79)='**'
54852         ENDIF
54853  
54854 C...Separator lines and logos.
54855         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
54856           LINE(4:77)='***********************************************'//
54857      &    '***************************'
54858         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
54859           LINE(6:37)=LOGO(ILIN-5)
54860           LINE(44:75)=LOGO(ILIN+14)
54861         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
54862           LINE(5:40)=REFER(2*ILIN-51)
54863           LINE(41:76)=REFER(2*ILIN-50)
54864         ENDIF
54865  
54866 C...Write lines to appropriate unit.
54867         WRITE(MSTU(11),'(A79)') LINE
54868   100 CONTINUE
54869  
54870       RETURN
54871       END
54872  
54873 C*********************************************************************
54874  
54875 C...PYUPDA
54876 C...Facilitates the updating of particle and decay data
54877 C...by allowing it to be done in an external file.
54878  
54879       SUBROUTINE PYUPDA(MUPDA,LFN)
54880  
54881 C...Double precision and integer declarations.
54882       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54883       IMPLICIT INTEGER(I-N)
54884       INTEGER PYK,PYCHGE,PYCOMP
54885 C...Commonblocks.
54886       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54887       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54888       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54889       COMMON/PYDAT4/CHAF(500,2)
54890       CHARACTER CHAF*16
54891       COMMON/PYINT4/MWID(500),WIDS(500,5)
54892       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
54893 C...Local arrays, character variables and data.
54894       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
54895      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
54896       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
54897      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
54898      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
54899      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
54900      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
54901  
54902 C...Write header if not yet done.
54903       IF(MSTU(12).GE.1) CALL PYLIST(0)
54904  
54905 C...Write information on file for editing.
54906       IF(MUPDA.EQ.1) THEN
54907         DO 110 KC=1,500
54908           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
54909      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
54910      &    MWID(KC),MDCY(KC,1)
54911           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
54912             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
54913      &      (KFDP(IDC,J),J=1,5)
54914   100     CONTINUE
54915   110   CONTINUE
54916  
54917 C...Read complete set of information from edited file or
54918 C...read partial set of new or updated information from edited file.
54919       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
54920  
54921 C...Reset counters.
54922         KCC=100
54923         NDC=0
54924         CHKF='         '
54925         IF(MUPDA.EQ.2) THEN
54926           DO 120 I=1,MSTU(6)
54927             KCHG(I,4)=0
54928   120     CONTINUE
54929         ELSE
54930           DO 130 KC=1,MSTU(6)
54931             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
54932             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
54933   130     CONTINUE
54934         ENDIF
54935  
54936 C...Begin of loop: read new line; unknown whether particle or
54937 C...decay data.
54938   140   READ(LFN,5200,END=190) CHINL
54939  
54940 C...Identify particle code and whether already defined  (for MUPDA=3).
54941         IF(CHINL(2:10).NE.'         ') THEN
54942           CHKF=CHINL(2:10)
54943           READ(CHKF,5300) KF
54944           IF(MUPDA.EQ.2) THEN
54945             IF(KF.LE.100) THEN
54946               KC=KF
54947             ELSE
54948               KCC=KCC+1
54949               KC=KCC
54950             ENDIF
54951           ELSE
54952             KCREP=0
54953             IF(KF.LE.100) THEN
54954               KCREP=KF
54955             ELSE
54956               DO 150 KCR=101,KCC
54957                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
54958   150         CONTINUE
54959             ENDIF
54960 C...Remove duplicate old decay data.
54961             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
54962               IDCREP=MDCY(KCREP,2)
54963               NDCREP=MDCY(KCREP,3)
54964               DO 160 I=1,KCC
54965                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
54966   160         CONTINUE
54967               DO 180 I=IDCREP,NDC-NDCREP
54968                 MDME(I,1)=MDME(I+NDCREP,1)
54969                 MDME(I,2)=MDME(I+NDCREP,2)
54970                 BRAT(I)=BRAT(I+NDCREP)
54971                 DO 170 J=1,5
54972                   KFDP(I,J)=KFDP(I+NDCREP,J)
54973   170           CONTINUE
54974   180         CONTINUE
54975               NDC=NDC-NDCREP
54976               KC=KCREP
54977             ELSEIF(KCREP.NE.0) THEN
54978               KC=KCREP
54979             ELSE
54980               KCC=KCC+1
54981               KC=KCC
54982             ENDIF
54983           ENDIF
54984  
54985 C...Study line with particle data.
54986           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
54987      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
54988           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
54989      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
54990      &    MWID(KC),MDCY(KC,1)
54991           MDCY(KC,2)=0
54992           MDCY(KC,3)=0
54993  
54994 C...Study line with decay data.
54995         ELSE
54996           NDC=NDC+1
54997           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
54998      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
54999           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
55000           MDCY(KC,3)=MDCY(KC,3)+1
55001           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
55002      &    (KFDP(NDC,J),J=1,5)
55003         ENDIF
55004  
55005 C...End of loop; ensure that PYCOMP tables are updated.
55006         GOTO 140
55007   190   CONTINUE
55008         MSTU(20)=0
55009  
55010 C...Perform possible tests that new information is consistent.
55011         DO 220 KC=1,MSTU(6)
55012           KF=KCHG(KC,4)
55013           IF(KF.EQ.0) GOTO 220
55014           WRITE(CHKF,5300) KF
55015           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
55016      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
55017      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
55018           BRSUM=0D0
55019           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
55020             IF(MDME(IDC,2).GT.80) GOTO 210
55021             KQ=KCHG(KC,1)
55022             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
55023             MERR=0
55024             DO 200 J=1,5
55025               KP=KFDP(IDC,J)
55026               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
55027                 IF(KP.EQ.81) KQ=0
55028               ELSEIF(PYCOMP(KP).EQ.0) THEN
55029                 MERR=3
55030               ELSE
55031                 KQ=KQ-PYCHGE(KP)
55032                 KPC=PYCOMP(KP)
55033                 PMS=PMS-PMAS(KPC,1)
55034                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
55035      &          PMAS(KPC,3))
55036               ENDIF
55037   200       CONTINUE
55038             IF(KQ.NE.0) MERR=MAX(2,MERR)
55039             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
55040      &      MERR=MAX(1,MERR)
55041             IF(MERR.EQ.3) CALL PYERRM(17,
55042      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
55043             IF(MERR.EQ.2) CALL PYERRM(17,
55044      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
55045             IF(MERR.EQ.1) CALL PYERRM(7,
55046      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
55047             BRSUM=BRSUM+BRAT(IDC)
55048   210     CONTINUE
55049           WRITE(CHTMP,5500) BRSUM
55050           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
55051      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
55052      &    CHTMP(9:16)//' for KF ='//CHKF)
55053   220   CONTINUE
55054  
55055 C...Write DATA statements for inclusion in program.
55056       ELSEIF(MUPDA.EQ.4) THEN
55057  
55058 C...Find out how many codes and decay channels are actually used.
55059         KCC=0
55060         NDC=0
55061         DO 230 I=1,MSTU(6)
55062           IF(KCHG(I,4).NE.0) THEN
55063             KCC=I
55064             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
55065           ENDIF
55066   230   CONTINUE
55067  
55068 C...Initialize writing of DATA statements for inclusion in program.
55069         DO 300 IVAR=1,22
55070           NDIM=MSTU(6)
55071           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
55072           NLIN=1
55073           CHLIN=' '
55074           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
55075           LLIN=35
55076           CHOLD='START'
55077  
55078 C...Loop through variables for conversion to characters.
55079           DO 280 IDIM=1,NDIM
55080             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
55081             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
55082             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
55083             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
55084             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
55085             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
55086             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
55087             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
55088             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
55089             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
55090             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
55091             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
55092             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
55093             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
55094             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
55095             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
55096             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
55097             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
55098             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
55099             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
55100             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
55101             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
55102  
55103 C...Replace variables beyond what is properly defined.
55104             IF(IVAR.LE.4) THEN
55105               IF(IDIM.GT.KCC) CHTMP='               0'
55106             ELSEIF(IVAR.LE.8) THEN
55107               IF(IDIM.GT.KCC) CHTMP='             0.0'
55108             ELSEIF(IVAR.LE.11) THEN
55109               IF(IDIM.GT.KCC) CHTMP='               0'
55110             ELSEIF(IVAR.LE.13) THEN
55111               IF(IDIM.GT.NDC) CHTMP='               0'
55112             ELSEIF(IVAR.LE.14) THEN
55113               IF(IDIM.GT.NDC) CHTMP='             0.0'
55114             ELSEIF(IVAR.LE.19) THEN
55115               IF(IDIM.GT.NDC) CHTMP='               0'
55116             ELSEIF(IVAR.LE.21) THEN
55117               IF(IDIM.GT.KCC) CHTMP='                '
55118             ELSE
55119               IF(IDIM.GT.KCC) CHTMP='               0'
55120             ENDIF
55121  
55122 C...Length of variable, trailing decimal zeros, quotation marks.
55123             LLOW=1
55124             LHIG=1
55125             DO 240 LL=1,16
55126               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
55127               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
55128   240       CONTINUE
55129             CHNEW=CHTMP(LLOW:LHIG)//' '
55130             LNEW=1+LHIG-LLOW
55131             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
55132               LNEW=LNEW+1
55133   250         LNEW=LNEW-1
55134               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
55135               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
55136               IF(LNEW.EQ.0) THEN
55137                 CHNEW(1:3)='0D0'
55138                 LNEW=3
55139               ELSE
55140                 CHNEW(LNEW+1:LNEW+2)='D0'
55141                 LNEW=LNEW+2
55142               ENDIF
55143             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
55144               DO 260 LL=LNEW,1,-1
55145                 IF(CHNEW(LL:LL).EQ.'''') THEN
55146                   CHTMP=CHNEW
55147                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
55148                   LNEW=LNEW+1
55149                 ENDIF
55150   260         CONTINUE
55151               LNEW=MIN(14,LNEW)
55152               CHTMP=CHNEW
55153               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
55154               LNEW=LNEW+2
55155             ENDIF
55156  
55157 C...Form composite character string, often including repetition counter.
55158             IF(CHNEW.NE.CHOLD) THEN
55159               NRPT=1
55160               CHOLD=CHNEW
55161               CHCOM=CHNEW
55162               LCOM=LNEW
55163             ELSE
55164               LRPT=LNEW+1
55165               IF(NRPT.GE.2) LRPT=LNEW+3
55166               IF(NRPT.GE.10) LRPT=LNEW+4
55167               IF(NRPT.GE.100) LRPT=LNEW+5
55168               IF(NRPT.GE.1000) LRPT=LNEW+6
55169               LLIN=LLIN-LRPT
55170               NRPT=NRPT+1
55171               WRITE(CHTMP,5400) NRPT
55172               LRPT=1
55173               IF(NRPT.GE.10) LRPT=2
55174               IF(NRPT.GE.100) LRPT=3
55175               IF(NRPT.GE.1000) LRPT=4
55176               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
55177               LCOM=LRPT+1+LNEW
55178             ENDIF
55179  
55180 C...Add characters to end of line, to new line (after storing old line),
55181 C...or to new block of lines (after writing old block).
55182             IF(LLIN+LCOM.LE.70) THEN
55183               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
55184               LLIN=LLIN+LCOM+1
55185             ELSEIF(NLIN.LE.19) THEN
55186               CHLIN(LLIN+1:72)=' '
55187               CHBLK(NLIN)=CHLIN
55188               NLIN=NLIN+1
55189               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
55190               LLIN=6+LCOM+1
55191             ELSE
55192               CHLIN(LLIN:72)='/'//' '
55193               CHBLK(NLIN)=CHLIN
55194               WRITE(CHTMP,5400) IDIM-NRPT
55195               CHBLK(1)(30:33)=CHTMP(13:16)
55196               DO 270 ILIN=1,NLIN
55197                 WRITE(LFN,5700) CHBLK(ILIN)
55198   270         CONTINUE
55199               NLIN=1
55200               CHLIN=' '
55201               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
55202      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
55203               WRITE(CHTMP,5400) IDIM-NRPT+1
55204               CHLIN(25:28)=CHTMP(13:16)
55205               LLIN=35+LCOM+1
55206             ENDIF
55207   280     CONTINUE
55208  
55209 C...Write final block of lines.
55210           CHLIN(LLIN:72)='/'//' '
55211           CHBLK(NLIN)=CHLIN
55212           WRITE(CHTMP,5400) NDIM
55213           CHBLK(1)(30:33)=CHTMP(13:16)
55214           DO 290 ILIN=1,NLIN
55215             WRITE(LFN,5700) CHBLK(ILIN)
55216   290     CONTINUE
55217   300   CONTINUE
55218       ENDIF
55219  
55220 C...Formats for reading and writing particle data.
55221  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
55222  5100 FORMAT(10X,2I5,F12.6,5I10)
55223  5200 FORMAT(A120)
55224  5300 FORMAT(I9)
55225  5400 FORMAT(I16)
55226  5500 FORMAT(F16.5)
55227  5600 FORMAT(F16.6)
55228  5700 FORMAT(A72)
55229  
55230       RETURN
55231       END
55232  
55233 C*********************************************************************
55234  
55235 C...PYK
55236 C...Provides various integer-valued event related data.
55237  
55238       FUNCTION PYK(I,J)
55239  
55240 C...Double precision and integer declarations.
55241       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55242       IMPLICIT INTEGER(I-N)
55243       INTEGER PYK,PYCHGE,PYCOMP
55244 C...Commonblocks.
55245       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55246       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55247       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55248       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55249  
55250 C...Default value. For I=0 number of entries, number of stable entries
55251 C...or 3 times total charge.
55252       PYK=0
55253       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
55254       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
55255         PYK=N
55256       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
55257         DO 100 I1=1,N
55258           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
55259           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
55260      &    PYCHGE(K(I1,2))
55261   100   CONTINUE
55262       ELSEIF(I.EQ.0) THEN
55263  
55264 C...For I > 0 direct readout of K matrix or charge.
55265       ELSEIF(J.LE.5) THEN
55266         PYK=K(I,J)
55267       ELSEIF(J.EQ.6) THEN
55268         PYK=PYCHGE(K(I,2))
55269  
55270 C...Status (existing/fragmented/decayed), parton/hadron separation.
55271       ELSEIF(J.LE.8) THEN
55272         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
55273         IF(J.EQ.8) PYK=PYK*K(I,2)
55274       ELSEIF(J.LE.12) THEN
55275         KFA=IABS(K(I,2))
55276         KC=PYCOMP(KFA)
55277         KQ=0
55278         IF(KC.NE.0) KQ=KCHG(KC,2)
55279         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
55280         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
55281         IF(J.EQ.11) PYK=KC
55282         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
55283  
55284 C...Heaviest flavour in hadron/diquark.
55285       ELSEIF(J.EQ.13) THEN
55286         KFA=IABS(K(I,2))
55287         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
55288         IF(KFA.LT.10) PYK=KFA
55289         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
55290         PYK=PYK*ISIGN(1,K(I,2))
55291  
55292 C...Particle history: generation, ancestor, rank.
55293       ELSEIF(J.LE.15) THEN
55294         I2=I
55295         I1=I
55296   110   PYK=PYK+1
55297         I2=I1
55298         I1=K(I1,3)
55299         IF(I1.GT.0) THEN
55300           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
55301         ENDIF
55302         IF(J.EQ.15) PYK=I2
55303       ELSEIF(J.EQ.16) THEN
55304         KFA=IABS(K(I,2))
55305         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
55306      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
55307           I1=I
55308   120     I2=I1
55309           I1=K(I1,3)
55310           IF(I1.GT.0) THEN
55311             KFAM=IABS(K(I1,2))
55312             ILP=1
55313             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
55314             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
55315      &      ILP=0
55316             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
55317             IF(ILP.EQ.1) GOTO 120
55318           ENDIF
55319           IF(K(I1,1).EQ.12) THEN
55320             DO 130 I3=I1+1,I2
55321               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
55322      &        .AND.K(I3,2).NE.93) PYK=PYK+1
55323   130       CONTINUE
55324           ELSE
55325             I3=I2
55326   140       PYK=PYK+1
55327             I3=I3+1
55328             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
55329           ENDIF
55330         ENDIF
55331  
55332 C...Particle coming from collapsing jet system or not.
55333       ELSEIF(J.EQ.17) THEN
55334         I1=I
55335   150   PYK=PYK+1
55336         I3=I1
55337         I1=K(I1,3)
55338         I0=MAX(1,I1)
55339         KC=PYCOMP(K(I0,2))
55340         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
55341           IF(PYK.EQ.1) PYK=-1
55342           IF(PYK.GT.1) PYK=0
55343           RETURN
55344         ENDIF
55345         IF(KCHG(KC,2).EQ.0) GOTO 150
55346         IF(K(I1,1).NE.12) PYK=0
55347         IF(K(I1,1).NE.12) RETURN
55348         I2=I1
55349   160   I2=I2+1
55350         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
55351         K3M=K(I3-1,3)
55352         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
55353         K3P=K(I3+1,3)
55354         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
55355  
55356 C...Number of decay products. Colour flow.
55357       ELSEIF(J.EQ.18) THEN
55358         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
55359         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
55360       ELSEIF(J.LE.22) THEN
55361         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
55362         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
55363         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
55364         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
55365         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
55366       ELSE
55367       ENDIF
55368  
55369       RETURN
55370       END
55371  
55372 C*********************************************************************
55373  
55374 C...PYP
55375 C...Provides various real-valued event related data.
55376  
55377       FUNCTION PYP(I,J)
55378  
55379 C...Double precision and integer declarations.
55380       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55381       IMPLICIT INTEGER(I-N)
55382       INTEGER PYK,PYCHGE,PYCOMP
55383 C...Commonblocks.
55384       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55385       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55386       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55387       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55388 C...Local array.
55389       DIMENSION PSUM(4)
55390  
55391 C...Set default value. For I = 0 sum of momenta or charges,
55392 C...or invariant mass of system.
55393       PYP=0D0
55394       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
55395       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
55396         DO 100 I1=1,N
55397           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
55398   100   CONTINUE
55399       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
55400         DO 120 J1=1,4
55401           PSUM(J1)=0D0
55402           DO 110 I1=1,N
55403             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
55404      &      P(I1,J1)
55405   110     CONTINUE
55406   120   CONTINUE
55407         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
55408       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
55409         DO 130 I1=1,N
55410           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
55411   130   CONTINUE
55412       ELSEIF(I.EQ.0) THEN
55413  
55414 C...Direct readout of P matrix.
55415       ELSEIF(J.LE.5) THEN
55416         PYP=P(I,J)
55417  
55418 C...Charge, total momentum, transverse momentum, transverse mass.
55419       ELSEIF(J.LE.12) THEN
55420         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
55421         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
55422         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
55423         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
55424         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
55425  
55426 C...Theta and phi angle in radians or degrees.
55427       ELSEIF(J.LE.16) THEN
55428         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
55429         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
55430         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
55431  
55432 C...True rapidity, rapidity with pion mass, pseudorapidity.
55433       ELSEIF(J.LE.19) THEN
55434         PMR=0D0
55435         IF(J.EQ.17) PMR=P(I,5)
55436         IF(J.EQ.18) PMR=PYMASS(211)
55437         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
55438         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
55439      &  1D20)),P(I,3))
55440  
55441 C...Energy and momentum fractions (only to be used in CM frame).
55442       ELSEIF(J.LE.25) THEN
55443         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
55444         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
55445         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
55446         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
55447         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
55448         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
55449       ENDIF
55450  
55451       RETURN
55452       END
55453  
55454 C*********************************************************************
55455  
55456 C...PYSPHE
55457 C...Performs sphericity tensor analysis to give sphericity,
55458 C...aplanarity and the related event axes.
55459  
55460       SUBROUTINE PYSPHE(SPH,APL)
55461  
55462 C...Double precision and integer declarations.
55463       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55464       IMPLICIT INTEGER(I-N)
55465       INTEGER PYK,PYCHGE,PYCOMP
55466 C...Commonblocks.
55467       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55468       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55469       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55470       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55471 C...Local arrays.
55472       DIMENSION SM(3,3),SV(3,3)
55473  
55474 C...Calculate matrix to be diagonalized.
55475       NP=0
55476       DO 110 J1=1,3
55477         DO 100 J2=J1,3
55478           SM(J1,J2)=0D0
55479   100   CONTINUE
55480   110 CONTINUE
55481       PS=0D0
55482       DO 140 I=1,N
55483         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
55484         IF(MSTU(41).GE.2) THEN
55485           KC=PYCOMP(K(I,2))
55486           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55487      &    KC.EQ.18) GOTO 140
55488           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55489      &    GOTO 140
55490         ENDIF
55491         NP=NP+1
55492         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55493         PWT=1D0
55494         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
55495      &  MAX(1D-10,PA)**(PARU(41)-2D0)
55496         DO 130 J1=1,3
55497           DO 120 J2=J1,3
55498             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
55499   120     CONTINUE
55500   130   CONTINUE
55501         PS=PS+PWT*PA**2
55502   140 CONTINUE
55503  
55504 C...Very low multiplicities (0 or 1) not considered.
55505       IF(NP.LE.1) THEN
55506         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
55507         SPH=-1D0
55508         APL=-1D0
55509         RETURN
55510       ENDIF
55511       DO 160 J1=1,3
55512         DO 150 J2=J1,3
55513           SM(J1,J2)=SM(J1,J2)/PS
55514   150   CONTINUE
55515   160 CONTINUE
55516  
55517 C...Find eigenvalues to matrix (third degree equation).
55518       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
55519      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
55520       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
55521      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
55522      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
55523       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
55524       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
55525       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
55526       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
55527       IF(P(N+2,4).LT.1D-5) THEN
55528         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
55529         SPH=-1D0
55530         APL=-1D0
55531         RETURN
55532       ENDIF
55533  
55534 C...Find first and last eigenvector by solving equation system.
55535       DO 240 I=1,3,2
55536         DO 180 J1=1,3
55537           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
55538           DO 170 J2=J1+1,3
55539             SV(J1,J2)=SM(J1,J2)
55540             SV(J2,J1)=SM(J1,J2)
55541   170     CONTINUE
55542   180   CONTINUE
55543         SMAX=0D0
55544         DO 200 J1=1,3
55545           DO 190 J2=1,3
55546             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
55547             JA=J1
55548             JB=J2
55549             SMAX=ABS(SV(J1,J2))
55550   190     CONTINUE
55551   200   CONTINUE
55552         SMAX=0D0
55553         DO 220 J3=JA+1,JA+2
55554           J1=J3-3*((J3-1)/3)
55555           RL=SV(J1,JB)/SV(JA,JB)
55556           DO 210 J2=1,3
55557             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
55558             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
55559             JC=J1
55560             SMAX=ABS(SV(J1,J2))
55561   210     CONTINUE
55562   220   CONTINUE
55563         JB1=JB+1-3*(JB/3)
55564         JB2=JB+2-3*((JB+1)/3)
55565         P(N+I,JB1)=-SV(JC,JB2)
55566         P(N+I,JB2)=SV(JC,JB1)
55567         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
55568      &  SV(JA,JB)
55569         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
55570         SGN=(-1D0)**INT(PYR(0)+0.5D0)
55571         DO 230 J=1,3
55572           P(N+I,J)=SGN*P(N+I,J)/PA
55573   230   CONTINUE
55574   240 CONTINUE
55575  
55576 C...Middle axis orthogonal to other two. Fill other codes.
55577       SGN=(-1D0)**INT(PYR(0)+0.5D0)
55578       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
55579       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
55580       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
55581       DO 260 I=1,3
55582         K(N+I,1)=31
55583         K(N+I,2)=95
55584         K(N+I,3)=I
55585         K(N+I,4)=0
55586         K(N+I,5)=0
55587         P(N+I,5)=0D0
55588         DO 250 J=1,5
55589           V(I,J)=0D0
55590   250   CONTINUE
55591   260 CONTINUE
55592  
55593 C...Calculate sphericity and aplanarity. Select storing option.
55594       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
55595       APL=1.5D0*P(N+3,4)
55596       MSTU(61)=N+1
55597       MSTU(62)=NP
55598       IF(MSTU(43).LE.1) MSTU(3)=3
55599       IF(MSTU(43).GE.2) N=N+3
55600  
55601       RETURN
55602       END
55603  
55604 C*********************************************************************
55605  
55606 C...PYTHRU
55607 C...Performs thrust analysis to give thrust, oblateness
55608 C...and the related event axes.
55609  
55610       SUBROUTINE PYTHRU(THR,OBL)
55611  
55612 C...Double precision and integer declarations.
55613       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55614       IMPLICIT INTEGER(I-N)
55615       INTEGER PYK,PYCHGE,PYCOMP
55616 C...Commonblocks.
55617       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55618       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55619       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55620       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55621 C...Local arrays.
55622       DIMENSION TDI(3),TPR(3)
55623  
55624 C...Take copy of particles that are to be considered in thrust analysis.
55625       NP=0
55626       PS=0D0
55627       DO 100 I=1,N
55628         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
55629         IF(MSTU(41).GE.2) THEN
55630           KC=PYCOMP(K(I,2))
55631           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55632      &    KC.EQ.18) GOTO 100
55633           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55634      &    GOTO 100
55635         ENDIF
55636         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
55637           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
55638           THR=-2D0
55639           OBL=-2D0
55640           RETURN
55641         ENDIF
55642         NP=NP+1
55643         K(N+NP,1)=23
55644         P(N+NP,1)=P(I,1)
55645         P(N+NP,2)=P(I,2)
55646         P(N+NP,3)=P(I,3)
55647         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55648         P(N+NP,5)=1D0
55649         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
55650      &  P(N+NP,4)**(PARU(42)-1D0)
55651         PS=PS+P(N+NP,4)*P(N+NP,5)
55652   100 CONTINUE
55653  
55654 C...Very low multiplicities (0 or 1) not considered.
55655       IF(NP.LE.1) THEN
55656         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
55657         THR=-1D0
55658         OBL=-1D0
55659         RETURN
55660       ENDIF
55661  
55662 C...Loop over thrust and major. T axis along z direction in latter case.
55663       DO 320 ILD=1,2
55664         IF(ILD.EQ.2) THEN
55665           K(N+NP+1,1)=31
55666           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
55667           MSTU(33)=1
55668           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
55669           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
55670           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
55671         ENDIF
55672  
55673 C...Find and order particles with highest p (pT for major).
55674         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
55675           P(ILF,4)=0D0
55676   110   CONTINUE
55677         DO 160 I=N+1,N+NP
55678           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
55679           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
55680             IF(P(I,4).LE.P(ILF,4)) GOTO 140
55681             DO 120 J=1,5
55682               P(ILF+1,J)=P(ILF,J)
55683   120       CONTINUE
55684   130     CONTINUE
55685           ILF=N+NP+3
55686   140     DO 150 J=1,5
55687             P(ILF+1,J)=P(I,J)
55688   150     CONTINUE
55689   160   CONTINUE
55690  
55691 C...Find and order initial axes with highest thrust (major).
55692         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
55693           P(ILG,4)=0D0
55694   170   CONTINUE
55695         NC=2**(MIN(MSTU(44),NP)-1)
55696         DO 250 ILC=1,NC
55697           DO 180 J=1,3
55698             TDI(J)=0D0
55699   180     CONTINUE
55700           DO 200 ILF=1,MIN(MSTU(44),NP)
55701             SGN=P(N+NP+ILF+3,5)
55702             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
55703             DO 190 J=1,4-ILD
55704               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
55705   190       CONTINUE
55706   200     CONTINUE
55707           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
55708           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
55709             IF(TDS.LE.P(ILG,4)) GOTO 230
55710             DO 210 J=1,4
55711               P(ILG+1,J)=P(ILG,J)
55712   210       CONTINUE
55713   220     CONTINUE
55714           ILG=N+NP+MSTU(44)+4
55715   230     DO 240 J=1,3
55716             P(ILG+1,J)=TDI(J)
55717   240     CONTINUE
55718           P(ILG+1,4)=TDS
55719   250   CONTINUE
55720  
55721 C...Iterate direction of axis until stable maximum.
55722         P(N+NP+ILD,4)=0D0
55723         ILG=0
55724   260   ILG=ILG+1
55725         THP=0D0
55726   270   THPS=THP
55727         DO 280 J=1,3
55728           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
55729           IF(THP.GT.1D-10) TDI(J)=TPR(J)
55730           TPR(J)=0D0
55731   280   CONTINUE
55732         DO 300 I=N+1,N+NP
55733           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
55734           DO 290 J=1,4-ILD
55735             TPR(J)=TPR(J)+SGN*P(I,J)
55736   290     CONTINUE
55737   300   CONTINUE
55738         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
55739         IF(THP.GE.THPS+PARU(48)) GOTO 270
55740  
55741 C...Save good axis. Try new initial axis until a number of tries agree.
55742         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
55743         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
55744           IAGR=0
55745           SGN=(-1D0)**INT(PYR(0)+0.5D0)
55746           DO 310 J=1,3
55747             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
55748   310     CONTINUE
55749           P(N+NP+ILD,4)=THP
55750           P(N+NP+ILD,5)=0D0
55751         ENDIF
55752         IAGR=IAGR+1
55753         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
55754   320 CONTINUE
55755  
55756 C...Find minor axis and value by orthogonality.
55757       SGN=(-1D0)**INT(PYR(0)+0.5D0)
55758       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
55759       P(N+NP+3,2)=SGN*P(N+NP+2,1)
55760       P(N+NP+3,3)=0D0
55761       THP=0D0
55762       DO 330 I=N+1,N+NP
55763         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
55764   330 CONTINUE
55765       P(N+NP+3,4)=THP/PS
55766       P(N+NP+3,5)=0D0
55767  
55768 C...Fill axis information. Rotate back to original coordinate system.
55769       DO 350 ILD=1,3
55770         K(N+ILD,1)=31
55771         K(N+ILD,2)=96
55772         K(N+ILD,3)=ILD
55773         K(N+ILD,4)=0
55774         K(N+ILD,5)=0
55775         DO 340 J=1,5
55776           P(N+ILD,J)=P(N+NP+ILD,J)
55777           V(N+ILD,J)=0D0
55778   340   CONTINUE
55779   350 CONTINUE
55780       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
55781  
55782 C...Calculate thrust and oblateness. Select storing option.
55783       THR=P(N+1,4)
55784       OBL=P(N+2,4)-P(N+3,4)
55785       MSTU(61)=N+1
55786       MSTU(62)=NP
55787       IF(MSTU(43).LE.1) MSTU(3)=3
55788       IF(MSTU(43).GE.2) N=N+3
55789  
55790       RETURN
55791       END
55792  
55793 C*********************************************************************
55794  
55795 C...PYCLUS
55796 C...Subdivides the particle content of an event into jets/clusters.
55797  
55798       SUBROUTINE PYCLUS(NJET)
55799  
55800 C...Double precision and integer declarations.
55801       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55802       IMPLICIT INTEGER(I-N)
55803       INTEGER PYK,PYCHGE,PYCOMP
55804 C...Commonblocks.
55805       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
55806       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55807       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55808       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
55809 C...Local arrays and saved variables.
55810       DIMENSION PS(5)
55811       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
55812  
55813 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
55814       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
55815      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
55816       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
55817      &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
55818       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
55819      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
55820  
55821 C...If first time, reset. If reentering, skip preliminaries.
55822       IF(MSTU(48).LE.0) THEN
55823         NP=0
55824         DO 100 J=1,5
55825           PS(J)=0D0
55826   100   CONTINUE
55827         PSS=0D0
55828         PIMASS=PMAS(PYCOMP(211),1)
55829       ELSE
55830         NJET=NSAV
55831         IF(MSTU(43).GE.2) N=N-NJET
55832         DO 110 I=N+1,N+NJET
55833           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55834   110   CONTINUE
55835         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
55836           R2ACC=PARU(44)**2
55837         ELSE
55838           R2ACC=PARU(45)*PS(5)**2
55839         ENDIF
55840         NLOOP=0
55841         GOTO 300
55842       ENDIF
55843  
55844 C...Find which particles are to be considered in cluster search.
55845       DO 140 I=1,N
55846         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
55847         IF(MSTU(41).GE.2) THEN
55848           KC=PYCOMP(K(I,2))
55849           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
55850      &    KC.EQ.18) GOTO 140
55851           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
55852      &    GOTO 140
55853         ENDIF
55854         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
55855           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
55856           NJET=-1
55857           RETURN
55858         ENDIF
55859  
55860 C...Take copy of these particles, with space left for jets later on.
55861         NP=NP+1
55862         K(N+NP,3)=I
55863         DO 120 J=1,5
55864           P(N+NP,J)=P(I,J)
55865   120   CONTINUE
55866         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
55867         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
55868         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
55869         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
55870         DO 130 J=1,4
55871           PS(J)=PS(J)+P(N+NP,J)
55872   130   CONTINUE
55873         PSS=PSS+P(N+NP,5)
55874   140 CONTINUE
55875       DO 160 I=N+1,N+NP
55876         K(I+NP,3)=K(I,3)
55877         DO 150 J=1,5
55878           P(I+NP,J)=P(I,J)
55879   150   CONTINUE
55880   160 CONTINUE
55881       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
55882  
55883 C...Very low multiplicities not considered.
55884       IF(NP.LT.MSTU(47)) THEN
55885         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
55886         NJET=-1
55887         RETURN
55888       ENDIF
55889  
55890 C...Find precluster configuration. If too few jets, make harder cuts.
55891       NLOOP=0
55892       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
55893         R2ACC=PARU(44)**2
55894       ELSE
55895         R2ACC=PARU(45)*PS(5)**2
55896       ENDIF
55897       RINIT=1.25D0*PARU(43)
55898       IF(NP.LE.MSTU(47)+2) RINIT=0D0
55899   170 RINIT=0.8D0*RINIT
55900       NPRE=0
55901       NREM=NP
55902       DO 180 I=N+NP+1,N+2*NP
55903         K(I,4)=0
55904   180 CONTINUE
55905  
55906 C...Sum up small momentum region. Jet if enough absolute momentum.
55907       IF(MSTU(46).LE.2) THEN
55908         DO 190 J=1,4
55909           P(N+1,J)=0D0
55910   190   CONTINUE
55911         DO 210 I=N+NP+1,N+2*NP
55912           IF(P(I,5).GT.2D0*RINIT) GOTO 210
55913           NREM=NREM-1
55914           K(I,4)=1
55915           DO 200 J=1,4
55916             P(N+1,J)=P(N+1,J)+P(I,J)
55917   200     CONTINUE
55918   210   CONTINUE
55919         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
55920         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
55921         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
55922         IF(NREM.EQ.0) GOTO 170
55923       ENDIF
55924  
55925 C...Find fastest remaining particle.
55926   220 NPRE=NPRE+1
55927       PMAX=0D0
55928       DO 230 I=N+NP+1,N+2*NP
55929         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
55930         IMAX=I
55931         PMAX=P(I,5)
55932   230 CONTINUE
55933       DO 240 J=1,5
55934         P(N+NPRE,J)=P(IMAX,J)
55935   240 CONTINUE
55936       NREM=NREM-1
55937       K(IMAX,4)=NPRE
55938  
55939 C...Sum up precluster around it according to pT separation.
55940       IF(MSTU(46).LE.2) THEN
55941         DO 260 I=N+NP+1,N+2*NP
55942           IF(K(I,4).NE.0) GOTO 260
55943           R2=R2T(I,IMAX)
55944           IF(R2.GT.RINIT**2) GOTO 260
55945           NREM=NREM-1
55946           K(I,4)=NPRE
55947           DO 250 J=1,4
55948             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
55949   250     CONTINUE
55950   260   CONTINUE
55951         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
55952  
55953 C...Sum up precluster around it according to mass or
55954 C...Durham pT separation.
55955       ELSE
55956   270   IMIN=0
55957         R2MIN=RINIT**2
55958         DO 280 I=N+NP+1,N+2*NP
55959           IF(K(I,4).NE.0) GOTO 280
55960           IF(MSTU(46).LE.4) THEN
55961             R2=R2M(I,N+NPRE)
55962           ELSE
55963             R2=R2D(I,N+NPRE)
55964           ENDIF
55965           IF(R2.GE.R2MIN) GOTO 280
55966           IMIN=I
55967           R2MIN=R2
55968   280   CONTINUE
55969         IF(IMIN.NE.0) THEN
55970           DO 290 J=1,4
55971             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
55972   290     CONTINUE
55973           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
55974           NREM=NREM-1
55975           K(IMIN,4)=NPRE
55976           GOTO 270
55977         ENDIF
55978       ENDIF
55979  
55980 C...Check if more preclusters to be found. Start over if too few.
55981       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
55982       IF(NREM.GT.0) GOTO 220
55983       NJET=NPRE
55984  
55985 C...Reassign all particles to nearest jet. Sum up new jet momenta.
55986   300 TSAV=0D0
55987       PSJT=0D0
55988   310 IF(MSTU(46).LE.1) THEN
55989         DO 330 I=N+1,N+NJET
55990           DO 320 J=1,4
55991             V(I,J)=0D0
55992   320     CONTINUE
55993   330   CONTINUE
55994         DO 360 I=N+NP+1,N+2*NP
55995           R2MIN=PSS**2
55996           DO 340 IJET=N+1,N+NJET
55997             IF(P(IJET,5).LT.RINIT) GOTO 340
55998             R2=R2T(I,IJET)
55999             IF(R2.GE.R2MIN) GOTO 340
56000             IMIN=IJET
56001             R2MIN=R2
56002   340     CONTINUE
56003           K(I,4)=IMIN-N
56004           DO 350 J=1,4
56005             V(IMIN,J)=V(IMIN,J)+P(I,J)
56006   350     CONTINUE
56007   360   CONTINUE
56008         PSJT=0D0
56009         DO 380 I=N+1,N+NJET
56010           DO 370 J=1,4
56011             P(I,J)=V(I,J)
56012   370     CONTINUE
56013           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56014           PSJT=PSJT+P(I,5)
56015   380   CONTINUE
56016       ENDIF
56017  
56018 C...Find two closest jets.
56019       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
56020       DO 400 ITRY1=N+1,N+NJET-1
56021         DO 390 ITRY2=ITRY1+1,N+NJET
56022           IF(MSTU(46).LE.2) THEN
56023             R2=R2T(ITRY1,ITRY2)
56024           ELSEIF(MSTU(46).LE.4) THEN
56025             R2=R2M(ITRY1,ITRY2)
56026           ELSE
56027             R2=R2D(ITRY1,ITRY2)
56028           ENDIF
56029           IF(R2.GE.R2MIN) GOTO 390
56030           IMIN1=ITRY1
56031           IMIN2=ITRY2
56032           R2MIN=R2
56033   390   CONTINUE
56034   400 CONTINUE
56035  
56036 C...If allowed, join two closest jets and start over.
56037       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
56038         IREC=MIN(IMIN1,IMIN2)
56039         IDEL=MAX(IMIN1,IMIN2)
56040         DO 410 J=1,4
56041           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
56042   410   CONTINUE
56043         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
56044         DO 430 I=IDEL+1,N+NJET
56045           DO 420 J=1,5
56046             P(I-1,J)=P(I,J)
56047   420     CONTINUE
56048   430   CONTINUE
56049         IF(MSTU(46).GE.2) THEN
56050           DO 440 I=N+NP+1,N+2*NP
56051             IORI=N+K(I,4)
56052             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
56053             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
56054   440     CONTINUE
56055         ENDIF
56056         NJET=NJET-1
56057         GOTO 300
56058  
56059 C...Divide up broad jet if empty cluster in list of final ones.
56060       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
56061         DO 450 I=N+1,N+NJET
56062           K(I,5)=0
56063   450   CONTINUE
56064         DO 460 I=N+NP+1,N+2*NP
56065           K(N+K(I,4),5)=K(N+K(I,4),5)+1
56066   460   CONTINUE
56067         IEMP=0
56068         DO 470 I=N+1,N+NJET
56069           IF(K(I,5).EQ.0) IEMP=I
56070   470   CONTINUE
56071         IF(IEMP.NE.0) THEN
56072           NLOOP=NLOOP+1
56073           ISPL=0
56074           R2MAX=0D0
56075           DO 480 I=N+NP+1,N+2*NP
56076             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
56077             IJET=N+K(I,4)
56078             R2=R2T(I,IJET)
56079             IF(R2.LE.R2MAX) GOTO 480
56080             ISPL=I
56081             R2MAX=R2
56082   480     CONTINUE
56083           IF(ISPL.NE.0) THEN
56084             IJET=N+K(ISPL,4)
56085             DO 490 J=1,4
56086               P(IEMP,J)=P(ISPL,J)
56087               P(IJET,J)=P(IJET,J)-P(ISPL,J)
56088   490       CONTINUE
56089             P(IEMP,5)=P(ISPL,5)
56090             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
56091             IF(NLOOP.LE.2) GOTO 300
56092           ENDIF
56093         ENDIF
56094       ENDIF
56095  
56096 C...If generalized thrust has not yet converged, continue iteration.
56097       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
56098      &THEN
56099         TSAV=PSJT/PSS
56100         GOTO 310
56101       ENDIF
56102  
56103 C...Reorder jets according to energy.
56104       DO 510 I=N+1,N+NJET
56105         DO 500 J=1,5
56106           V(I,J)=P(I,J)
56107   500   CONTINUE
56108   510 CONTINUE
56109       DO 540 INEW=N+1,N+NJET
56110         PEMAX=0D0
56111         DO 520 ITRY=N+1,N+NJET
56112           IF(V(ITRY,4).LE.PEMAX) GOTO 520
56113           IMAX=ITRY
56114           PEMAX=V(ITRY,4)
56115   520   CONTINUE
56116         K(INEW,1)=31
56117         K(INEW,2)=97
56118         K(INEW,3)=INEW-N
56119         K(INEW,4)=0
56120         DO 530 J=1,5
56121           P(INEW,J)=V(IMAX,J)
56122   530   CONTINUE
56123         V(IMAX,4)=-1D0
56124         K(IMAX,5)=INEW
56125   540 CONTINUE
56126  
56127 C...Clean up particle-jet assignments and jet information.
56128       DO 550 I=N+NP+1,N+2*NP
56129         IORI=K(N+K(I,4),5)
56130         K(I,4)=IORI-N
56131         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
56132         K(IORI,4)=K(IORI,4)+1
56133   550 CONTINUE
56134       IEMP=0
56135       PSJT=0D0
56136       DO 570 I=N+1,N+NJET
56137         K(I,5)=0
56138         PSJT=PSJT+P(I,5)
56139         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
56140         DO 560 J=1,5
56141           V(I,J)=0D0
56142   560   CONTINUE
56143         IF(K(I,4).EQ.0) IEMP=I
56144   570 CONTINUE
56145  
56146 C...Select storing option. Output variables. Check for failure.
56147       MSTU(61)=N+1
56148       MSTU(62)=NP
56149       MSTU(63)=NPRE
56150       PARU(61)=PS(5)
56151       PARU(62)=PSJT/PSS
56152       PARU(63)=SQRT(R2MIN)
56153       IF(NJET.LE.1) PARU(63)=0D0
56154       IF(IEMP.NE.0) THEN
56155         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
56156         NJET=-1
56157         RETURN
56158       ENDIF
56159       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
56160       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
56161       NSAV=NJET
56162  
56163       RETURN
56164       END
56165  
56166 C*********************************************************************
56167  
56168 C...PYCELL
56169 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
56170 C...as used for calorimeters at hadron colliders.
56171  
56172       SUBROUTINE PYCELL(NJET)
56173  
56174 C...Double precision and integer declarations.
56175       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56176       IMPLICIT INTEGER(I-N)
56177       INTEGER PYK,PYCHGE,PYCOMP
56178 C...Commonblocks.
56179       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56180       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56181       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56182       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56183  
56184 C...Loop over all particles. Find cell that was hit by given particle.
56185       PTLRAT=1D0/SINH(PARU(51))**2
56186       NP=0
56187       NC=N
56188       DO 110 I=1,N
56189         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
56190         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
56191         IF(MSTU(41).GE.2) THEN
56192           KC=PYCOMP(K(I,2))
56193           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56194      &    KC.EQ.18) GOTO 110
56195           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56196      &    GOTO 110
56197         ENDIF
56198         NP=NP+1
56199         PT=SQRT(P(I,1)**2+P(I,2)**2)
56200         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
56201         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
56202      &  (ETA/PARU(51)+1D0))))
56203         PHI=PYANGL(P(I,1),P(I,2))
56204         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
56205      &  (PHI/PARU(1)+1D0))))
56206         IETPH=MSTU(52)*IETA+IPHI
56207  
56208 C...Add to cell already hit, or book new cell.
56209         DO 100 IC=N+1,NC
56210           IF(IETPH.EQ.K(IC,3)) THEN
56211             K(IC,4)=K(IC,4)+1
56212             P(IC,5)=P(IC,5)+PT
56213             GOTO 110
56214           ENDIF
56215   100   CONTINUE
56216         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
56217           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
56218           NJET=-2
56219           RETURN
56220         ENDIF
56221         NC=NC+1
56222         K(NC,3)=IETPH
56223         K(NC,4)=1
56224         K(NC,5)=2
56225         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
56226         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
56227         P(NC,5)=PT
56228   110 CONTINUE
56229  
56230 C...Smear true bin content by calorimeter resolution.
56231       IF(MSTU(53).GE.1) THEN
56232         DO 130 IC=N+1,NC
56233           PEI=P(IC,5)
56234           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
56235   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
56236      &    COS(PARU(2)*PYR(0))
56237           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
56238           P(IC,5)=PEF
56239           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
56240   130   CONTINUE
56241       ENDIF
56242  
56243 C...Remove cells below threshold.
56244       IF(PARU(58).GT.0D0) THEN
56245         NCC=NC
56246         NC=N
56247         DO 140 IC=N+1,NCC
56248           IF(P(IC,5).GT.PARU(58)) THEN
56249             NC=NC+1
56250             K(NC,3)=K(IC,3)
56251             K(NC,4)=K(IC,4)
56252             K(NC,5)=K(IC,5)
56253             P(NC,1)=P(IC,1)
56254             P(NC,2)=P(IC,2)
56255             P(NC,5)=P(IC,5)
56256           ENDIF
56257   140   CONTINUE
56258       ENDIF
56259  
56260 C...Find initiator cell: the one with highest pT of not yet used ones.
56261       NJ=NC
56262   150 ETMAX=0D0
56263       DO 160 IC=N+1,NC
56264         IF(K(IC,5).NE.2) GOTO 160
56265         IF(P(IC,5).LE.ETMAX) GOTO 160
56266         ICMAX=IC
56267         ETA=P(IC,1)
56268         PHI=P(IC,2)
56269         ETMAX=P(IC,5)
56270   160 CONTINUE
56271       IF(ETMAX.LT.PARU(52)) GOTO 220
56272       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
56273         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
56274         NJET=-2
56275         RETURN
56276       ENDIF
56277       K(ICMAX,5)=1
56278       NJ=NJ+1
56279       K(NJ,4)=0
56280       K(NJ,5)=1
56281       P(NJ,1)=ETA
56282       P(NJ,2)=PHI
56283       P(NJ,3)=0D0
56284       P(NJ,4)=0D0
56285       P(NJ,5)=0D0
56286  
56287 C...Sum up unused cells within required distance of initiator.
56288       DO 170 IC=N+1,NC
56289         IF(K(IC,5).EQ.0) GOTO 170
56290         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
56291         DPHIA=ABS(P(IC,2)-PHI)
56292         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
56293         PHIC=P(IC,2)
56294         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
56295         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
56296         K(IC,5)=-K(IC,5)
56297         K(NJ,4)=K(NJ,4)+K(IC,4)
56298         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
56299         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
56300         P(NJ,5)=P(NJ,5)+P(IC,5)
56301   170 CONTINUE
56302  
56303 C...Reject cluster below minimum ET, else accept.
56304       IF(P(NJ,5).LT.PARU(53)) THEN
56305         NJ=NJ-1
56306         DO 180 IC=N+1,NC
56307           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
56308   180   CONTINUE
56309       ELSEIF(MSTU(54).LE.2) THEN
56310         P(NJ,3)=P(NJ,3)/P(NJ,5)
56311         P(NJ,4)=P(NJ,4)/P(NJ,5)
56312         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
56313      &  P(NJ,4))
56314         DO 190 IC=N+1,NC
56315           IF(K(IC,5).LT.0) K(IC,5)=0
56316   190   CONTINUE
56317       ELSE
56318         DO 200 J=1,4
56319           P(NJ,J)=0D0
56320   200   CONTINUE
56321         DO 210 IC=N+1,NC
56322           IF(K(IC,5).GE.0) GOTO 210
56323           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
56324           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
56325           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
56326           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
56327           K(IC,5)=0
56328   210   CONTINUE
56329       ENDIF
56330       GOTO 150
56331  
56332 C...Arrange clusters in falling ET sequence.
56333   220 DO 250 I=1,NJ-NC
56334         ETMAX=0D0
56335         DO 230 IJ=NC+1,NJ
56336           IF(K(IJ,5).EQ.0) GOTO 230
56337           IF(P(IJ,5).LT.ETMAX) GOTO 230
56338           IJMAX=IJ
56339           ETMAX=P(IJ,5)
56340   230   CONTINUE
56341         K(IJMAX,5)=0
56342         K(N+I,1)=31
56343         K(N+I,2)=98
56344         K(N+I,3)=I
56345         K(N+I,4)=K(IJMAX,4)
56346         K(N+I,5)=0
56347         DO 240 J=1,5
56348           P(N+I,J)=P(IJMAX,J)
56349           V(N+I,J)=0D0
56350   240   CONTINUE
56351   250 CONTINUE
56352       NJET=NJ-NC
56353  
56354 C...Convert to massless or massive four-vectors.
56355       IF(MSTU(54).EQ.2) THEN
56356         DO 260 I=N+1,N+NJET
56357           ETA=P(I,3)
56358           P(I,1)=P(I,5)*COS(P(I,4))
56359           P(I,2)=P(I,5)*SIN(P(I,4))
56360           P(I,3)=P(I,5)*SINH(ETA)
56361           P(I,4)=P(I,5)*COSH(ETA)
56362           P(I,5)=0D0
56363   260   CONTINUE
56364       ELSEIF(MSTU(54).GE.3) THEN
56365         DO 270 I=N+1,N+NJET
56366           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
56367   270   CONTINUE
56368       ENDIF
56369  
56370 C...Information about storage.
56371       MSTU(61)=N+1
56372       MSTU(62)=NP
56373       MSTU(63)=NC-N
56374       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
56375       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
56376  
56377       RETURN
56378       END
56379  
56380 C*********************************************************************
56381  
56382 C...PYJMAS
56383 C...Determines, approximately, the two jet masses that minimize
56384 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
56385  
56386       SUBROUTINE PYJMAS(PMH,PML)
56387  
56388 C...Double precision and integer declarations.
56389       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56390       IMPLICIT INTEGER(I-N)
56391       INTEGER PYK,PYCHGE,PYCOMP
56392 C...Commonblocks.
56393       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56394       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56395       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56396       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56397 C...Local arrays.
56398       DIMENSION SM(3,3),SAX(3),PS(3,5)
56399  
56400 C...Reset.
56401       NP=0
56402       DO 120 J1=1,3
56403         DO 100 J2=J1,3
56404           SM(J1,J2)=0D0
56405   100   CONTINUE
56406         DO 110 J2=1,4
56407           PS(J1,J2)=0D0
56408   110   CONTINUE
56409   120 CONTINUE
56410       PSS=0D0
56411       PIMASS=PMAS(PYCOMP(211),1)
56412  
56413 C...Take copy of particles that are to be considered in mass analysis.
56414       DO 170 I=1,N
56415         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
56416         IF(MSTU(41).GE.2) THEN
56417           KC=PYCOMP(K(I,2))
56418           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56419      &    KC.EQ.18) GOTO 170
56420           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56421      &    GOTO 170
56422         ENDIF
56423         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
56424           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
56425           PMH=-2D0
56426           PML=-2D0
56427           RETURN
56428         ENDIF
56429         NP=NP+1
56430         DO 130 J=1,5
56431           P(N+NP,J)=P(I,J)
56432   130   CONTINUE
56433         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
56434         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
56435         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
56436  
56437 C...Fill information in sphericity tensor and total momentum vector.
56438         DO 150 J1=1,3
56439           DO 140 J2=J1,3
56440             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
56441   140     CONTINUE
56442   150   CONTINUE
56443         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56444         DO 160 J=1,4
56445           PS(3,J)=PS(3,J)+P(N+NP,J)
56446   160   CONTINUE
56447   170 CONTINUE
56448  
56449 C...Very low multiplicities (0 or 1) not considered.
56450       IF(NP.LE.1) THEN
56451         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
56452         PMH=-1D0
56453         PML=-1D0
56454         RETURN
56455       ENDIF
56456       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
56457      &PS(3,3)**2))
56458  
56459 C...Find largest eigenvalue to matrix (third degree equation).
56460       DO 190 J1=1,3
56461         DO 180 J2=J1,3
56462           SM(J1,J2)=SM(J1,J2)/PSS
56463   180   CONTINUE
56464   190 CONTINUE
56465       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
56466      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
56467       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
56468      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
56469      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
56470       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
56471       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
56472  
56473 C...Find largest eigenvector by solving equation system.
56474       DO 210 J1=1,3
56475         SM(J1,J1)=SM(J1,J1)-SMA
56476         DO 200 J2=J1+1,3
56477           SM(J2,J1)=SM(J1,J2)
56478   200   CONTINUE
56479   210 CONTINUE
56480       SMAX=0D0
56481       DO 230 J1=1,3
56482         DO 220 J2=1,3
56483           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
56484           JA=J1
56485           JB=J2
56486           SMAX=ABS(SM(J1,J2))
56487   220   CONTINUE
56488   230 CONTINUE
56489       SMAX=0D0
56490       DO 250 J3=JA+1,JA+2
56491         J1=J3-3*((J3-1)/3)
56492         RL=SM(J1,JB)/SM(JA,JB)
56493         DO 240 J2=1,3
56494           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
56495           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
56496           JC=J1
56497           SMAX=ABS(SM(J1,J2))
56498   240   CONTINUE
56499   250 CONTINUE
56500       JB1=JB+1-3*(JB/3)
56501       JB2=JB+2-3*((JB+1)/3)
56502       SAX(JB1)=-SM(JC,JB2)
56503       SAX(JB2)=SM(JC,JB1)
56504       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
56505  
56506 C...Divide particles into two initial clusters by hemisphere.
56507       DO 270 I=N+1,N+NP
56508         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
56509         IS=1
56510         IF(PSAX.LT.0D0) IS=2
56511         K(I,3)=IS
56512         DO 260 J=1,4
56513           PS(IS,J)=PS(IS,J)+P(I,J)
56514   260   CONTINUE
56515   270 CONTINUE
56516       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
56517      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
56518  
56519 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
56520   280 PMD=0D0
56521       IM=0
56522       DO 290 J=1,4
56523         PS(3,J)=PS(1,J)-PS(2,J)
56524   290 CONTINUE
56525       DO 300 I=N+1,N+NP
56526         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)
56527         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
56528         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
56529         IF(PMDI.LT.PMD) THEN
56530           PMD=PMDI
56531           IM=I
56532         ENDIF
56533   300 CONTINUE
56534  
56535 C...Loop back if significant reduction in sum of m^2.
56536       IF(PMD.LT.-PARU(48)*PMS) THEN
56537         PMS=PMS+PMD
56538         IS=K(IM,3)
56539         DO 310 J=1,4
56540           PS(IS,J)=PS(IS,J)-P(IM,J)
56541           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
56542   310   CONTINUE
56543         K(IM,3)=3-IS
56544         GOTO 280
56545       ENDIF
56546  
56547 C...Final masses and output.
56548       MSTU(61)=N+1
56549       MSTU(62)=NP
56550       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
56551       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
56552       PMH=MAX(PS(1,5),PS(2,5))
56553       PML=MIN(PS(1,5),PS(2,5))
56554  
56555       RETURN
56556       END
56557  
56558 C*********************************************************************
56559  
56560 C...PYFOWO
56561 C...Calculates the first few Fox-Wolfram moments.
56562  
56563       SUBROUTINE PYFOWO(H10,H20,H30,H40)
56564  
56565 C...Double precision and integer declarations.
56566       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56567       IMPLICIT INTEGER(I-N)
56568       INTEGER PYK,PYCHGE,PYCOMP
56569 C...Commonblocks.
56570       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56571       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56572       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56573       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56574  
56575 C...Copy momenta for particles and calculate H0.
56576       NP=0
56577       H0=0D0
56578       HD=0D0
56579       DO 110 I=1,N
56580         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
56581         IF(MSTU(41).GE.2) THEN
56582           KC=PYCOMP(K(I,2))
56583           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56584      &    KC.EQ.18) GOTO 110
56585           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
56586      &    GOTO 110
56587         ENDIF
56588         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
56589           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
56590           H10=-1D0
56591           H20=-1D0
56592           H30=-1D0
56593           H40=-1D0
56594           RETURN
56595         ENDIF
56596         NP=NP+1
56597         DO 100 J=1,3
56598           P(N+NP,J)=P(I,J)
56599   100   CONTINUE
56600         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
56601         H0=H0+P(N+NP,4)
56602         HD=HD+P(N+NP,4)**2
56603   110 CONTINUE
56604       H0=H0**2
56605  
56606 C...Very low multiplicities (0 or 1) not considered.
56607       IF(NP.LE.1) THEN
56608         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
56609         H10=-1D0
56610         H20=-1D0
56611         H30=-1D0
56612         H40=-1D0
56613         RETURN
56614       ENDIF
56615  
56616 C...Calculate H1 - H4.
56617       H10=0D0
56618       H20=0D0
56619       H30=0D0
56620       H40=0D0
56621       DO 130 I1=N+1,N+NP
56622         DO 120 I2=I1+1,N+NP
56623           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
56624      &    (P(I1,4)*P(I2,4))
56625           H10=H10+P(I1,4)*P(I2,4)*CTHE
56626           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
56627           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
56628           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
56629      &    0.375D0)
56630   120   CONTINUE
56631   130 CONTINUE
56632  
56633 C...Calculate H1/H0 - H4/H0. Output.
56634       MSTU(61)=N+1
56635       MSTU(62)=NP
56636       H10=(HD+2D0*H10)/H0
56637       H20=(HD+2D0*H20)/H0
56638       H30=(HD+2D0*H30)/H0
56639       H40=(HD+2D0*H40)/H0
56640  
56641       RETURN
56642       END
56643  
56644 C*********************************************************************
56645  
56646 C...PYTABU
56647 C...Evaluates various properties of an event, with statistics
56648 C...accumulated during the course of the run and
56649 C...printed at the end.
56650  
56651       SUBROUTINE PYTABU(MTABU)
56652  
56653 C...Double precision and integer declarations.
56654       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56655       IMPLICIT INTEGER(I-N)
56656       INTEGER PYK,PYCHGE,PYCOMP
56657 C...Commonblocks.
56658       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56659       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56660       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56661       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
56662       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
56663 C...Local arrays, character variables, saved variables and data.
56664       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
56665      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
56666      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
56667      &KFDM(8),KFDC(200,0:8),NPDC(200)
56668       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
56669      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
56670      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
56671       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
56672       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
56673      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
56674      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
56675      &NEVDC/0/,NKFDC/0/,NREDC/0/
56676  
56677 C...Reset statistics on initial parton state.
56678       IF(MTABU.EQ.10) THEN
56679         NEVIS=0
56680         NKFIS=0
56681  
56682 C...Identify and order flavour content of initial state.
56683       ELSEIF(MTABU.EQ.11) THEN
56684         NEVIS=NEVIS+1
56685         KFM1=2*IABS(MSTU(161))
56686         IF(MSTU(161).GT.0) KFM1=KFM1-1
56687         KFM2=2*IABS(MSTU(162))
56688         IF(MSTU(162).GT.0) KFM2=KFM2-1
56689         KFMN=MIN(KFM1,KFM2)
56690         KFMX=MAX(KFM1,KFM2)
56691         DO 100 I=1,NKFIS
56692           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
56693             IKFIS=-I
56694             GOTO 110
56695           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
56696      &      KFMX.LT.KFIS(I,2))) THEN
56697             IKFIS=I
56698             GOTO 110
56699           ENDIF
56700   100   CONTINUE
56701         IKFIS=NKFIS+1
56702   110   IF(IKFIS.LT.0) THEN
56703           IKFIS=-IKFIS
56704         ELSE
56705           IF(NKFIS.GE.100) RETURN
56706           DO 130 I=NKFIS,IKFIS,-1
56707             KFIS(I+1,1)=KFIS(I,1)
56708             KFIS(I+1,2)=KFIS(I,2)
56709             DO 120 J=0,10
56710               NPIS(I+1,J)=NPIS(I,J)
56711   120       CONTINUE
56712   130     CONTINUE
56713           NKFIS=NKFIS+1
56714           KFIS(IKFIS,1)=KFMN
56715           KFIS(IKFIS,2)=KFMX
56716           DO 140 J=0,10
56717             NPIS(IKFIS,J)=0
56718   140     CONTINUE
56719         ENDIF
56720         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
56721  
56722 C...Count number of partons in initial state.
56723         NP=0
56724         DO 160 I=1,N
56725           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
56726           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
56727           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
56728      &      THEN
56729           ELSE
56730             IM=I
56731   150       IM=K(IM,3)
56732             IF(IM.LE.0.OR.IM.GT.N) THEN
56733               NP=NP+1
56734             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
56735               NP=NP+1
56736             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
56737             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
56738      &        .NE.0) THEN
56739             ELSE
56740               GOTO 150
56741             ENDIF
56742           ENDIF
56743   160   CONTINUE
56744         NPCO=MAX(NP,1)
56745         IF(NP.GE.6) NPCO=6
56746         IF(NP.GE.8) NPCO=7
56747         IF(NP.GE.11) NPCO=8
56748         IF(NP.GE.16) NPCO=9
56749         IF(NP.GE.26) NPCO=10
56750         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
56751         MSTU(62)=NP
56752  
56753 C...Write statistics on initial parton state.
56754       ELSEIF(MTABU.EQ.12) THEN
56755         FAC=1D0/MAX(1,NEVIS)
56756         WRITE(MSTU(11),5000) NEVIS
56757         DO 170 I=1,NKFIS
56758           KFMN=KFIS(I,1)
56759           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
56760           KFM1=(KFMN+1)/2
56761           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
56762           CALL PYNAME(KFM1,CHAU)
56763           CHIS(1)=CHAU(1:12)
56764           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
56765           KFMX=KFIS(I,2)
56766           IF(KFIS(I,1).EQ.0) KFMX=0
56767           KFM2=(KFMX+1)/2
56768           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
56769           CALL PYNAME(KFM2,CHAU)
56770           CHIS(2)=CHAU(1:12)
56771           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
56772           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
56773      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
56774   170   CONTINUE
56775  
56776 C...Copy statistics on initial parton state into /PYJETS/.
56777       ELSEIF(MTABU.EQ.13) THEN
56778         FAC=1D0/MAX(1,NEVIS)
56779         DO 190 I=1,NKFIS
56780           KFMN=KFIS(I,1)
56781           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
56782           KFM1=(KFMN+1)/2
56783           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
56784           KFMX=KFIS(I,2)
56785           IF(KFIS(I,1).EQ.0) KFMX=0
56786           KFM2=(KFMX+1)/2
56787           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
56788           K(I,1)=32
56789           K(I,2)=99
56790           K(I,3)=KFM1
56791           K(I,4)=KFM2
56792           K(I,5)=NPIS(I,0)
56793           DO 180 J=1,5
56794             P(I,J)=FAC*NPIS(I,J)
56795             V(I,J)=FAC*NPIS(I,J+5)
56796   180     CONTINUE
56797   190   CONTINUE
56798         N=NKFIS
56799         DO 200 J=1,5
56800           K(N+1,J)=0
56801           P(N+1,J)=0D0
56802           V(N+1,J)=0D0
56803   200   CONTINUE
56804         K(N+1,1)=32
56805         K(N+1,2)=99
56806         K(N+1,5)=NEVIS
56807         MSTU(3)=1
56808  
56809 C...Reset statistics on number of particles/partons.
56810       ELSEIF(MTABU.EQ.20) THEN
56811         NEVFS=0
56812         NPRFS=0
56813         NFIFS=0
56814         NCHFS=0
56815         NKFFS=0
56816  
56817 C...Identify whether particle/parton is primary or not.
56818       ELSEIF(MTABU.EQ.21) THEN
56819         NEVFS=NEVFS+1
56820         MSTU(62)=0
56821         DO 260 I=1,N
56822           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
56823           MSTU(62)=MSTU(62)+1
56824           KC=PYCOMP(K(I,2))
56825           MPRI=0
56826           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
56827             MPRI=1
56828           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
56829             MPRI=1
56830           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
56831             MPRI=1
56832           ELSEIF(KC.EQ.0) THEN
56833           ELSEIF(K(K(I,3),1).EQ.13) THEN
56834             IM=K(K(I,3),3)
56835             IF(IM.LE.0.OR.IM.GT.N) THEN
56836               MPRI=1
56837             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
56838               MPRI=1
56839             ENDIF
56840           ELSEIF(KCHG(KC,2).EQ.0) THEN
56841             KCM=PYCOMP(K(K(I,3),2))
56842             IF(KCM.NE.0) THEN
56843               IF(KCHG(KCM,2).NE.0) MPRI=1
56844             ENDIF
56845           ENDIF
56846           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
56847             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
56848           ENDIF
56849           IF(K(I,1).LE.10) THEN
56850             NFIFS=NFIFS+1
56851             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
56852           ENDIF
56853  
56854 C...Fill statistics on number of particles/partons in event.
56855           KFA=IABS(K(I,2))
56856           KFS=3-ISIGN(1,K(I,2))-MPRI
56857           DO 210 IP=1,NKFFS
56858             IF(KFA.EQ.KFFS(IP)) THEN
56859               IKFFS=-IP
56860               GOTO 220
56861             ELSEIF(KFA.LT.KFFS(IP)) THEN
56862               IKFFS=IP
56863               GOTO 220
56864             ENDIF
56865   210     CONTINUE
56866           IKFFS=NKFFS+1
56867   220     IF(IKFFS.LT.0) THEN
56868             IKFFS=-IKFFS
56869           ELSE
56870             IF(NKFFS.GE.400) RETURN
56871             DO 240 IP=NKFFS,IKFFS,-1
56872               KFFS(IP+1)=KFFS(IP)
56873               DO 230 J=1,4
56874                 NPFS(IP+1,J)=NPFS(IP,J)
56875   230         CONTINUE
56876   240       CONTINUE
56877             NKFFS=NKFFS+1
56878             KFFS(IKFFS)=KFA
56879             DO 250 J=1,4
56880               NPFS(IKFFS,J)=0
56881   250       CONTINUE
56882           ENDIF
56883           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
56884   260   CONTINUE
56885  
56886 C...Write statistics on particle/parton composition of events.
56887       ELSEIF(MTABU.EQ.22) THEN
56888         FAC=1D0/MAX(1,NEVFS)
56889         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
56890         DO 270 I=1,NKFFS
56891           CALL PYNAME(KFFS(I),CHAU)
56892           KC=PYCOMP(KFFS(I))
56893           MDCYF=0
56894           IF(KC.NE.0) MDCYF=MDCY(KC,1)
56895           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
56896      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
56897   270   CONTINUE
56898  
56899 C...Copy particle/parton composition information into /PYJETS/.
56900       ELSEIF(MTABU.EQ.23) THEN
56901         FAC=1D0/MAX(1,NEVFS)
56902         DO 290 I=1,NKFFS
56903           K(I,1)=32
56904           K(I,2)=99
56905           K(I,3)=KFFS(I)
56906           K(I,4)=0
56907           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
56908           DO 280 J=1,4
56909             P(I,J)=FAC*NPFS(I,J)
56910             V(I,J)=0D0
56911   280     CONTINUE
56912           P(I,5)=FAC*K(I,5)
56913           V(I,5)=0D0
56914   290   CONTINUE
56915         N=NKFFS
56916         DO 300 J=1,5
56917           K(N+1,J)=0
56918           P(N+1,J)=0D0
56919           V(N+1,J)=0D0
56920   300   CONTINUE
56921         K(N+1,1)=32
56922         K(N+1,2)=99
56923         K(N+1,5)=NEVFS
56924         P(N+1,1)=FAC*NPRFS
56925         P(N+1,2)=FAC*NFIFS
56926         P(N+1,3)=FAC*NCHFS
56927         MSTU(3)=1
56928  
56929 C...Reset factorial moments statistics.
56930       ELSEIF(MTABU.EQ.30) THEN
56931         NEVFM=0
56932         NMUFM=0
56933         DO 330 IM=1,3
56934           DO 320 IB=1,10
56935             DO 310 IP=1,4
56936               FM1FM(IM,IB,IP)=0D0
56937               FM2FM(IM,IB,IP)=0D0
56938   310       CONTINUE
56939   320     CONTINUE
56940   330   CONTINUE
56941  
56942 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
56943       ELSEIF(MTABU.EQ.31) THEN
56944         NEVFM=NEVFM+1
56945         NLOW=N+MSTU(3)
56946         NUPP=NLOW
56947         DO 410 I=1,N
56948           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
56949           IF(MSTU(41).GE.2) THEN
56950             KC=PYCOMP(K(I,2))
56951             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
56952      &      KC.EQ.18) GOTO 410
56953             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
56954      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
56955           ENDIF
56956           PMR=0D0
56957           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
56958           IF(MSTU(42).GE.2) PMR=P(I,5)
56959           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
56960           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
56961      &    1D20)),P(I,3))
56962           IF(ABS(YETA).GT.PARU(57)) GOTO 410
56963           PHI=PYANGL(P(I,1),P(I,2))
56964           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
56965           IYETA=MAX(0,MIN(511,IYETA))
56966           IPHI=512D0*(PHI+PARU(1))/PARU(2)
56967           IPHI=MAX(0,MIN(511,IPHI))
56968           IYEP=0
56969           DO 340 IB=0,9
56970             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
56971   340     CONTINUE
56972  
56973 C...Order particles in (pseudo)rapidity and/or azimuth.
56974           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
56975             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
56976             RETURN
56977           ENDIF
56978           NUPP=NUPP+1
56979           IF(NUPP.EQ.NLOW+1) THEN
56980             K(NUPP,1)=IYETA
56981             K(NUPP,2)=IPHI
56982             K(NUPP,3)=IYEP
56983           ELSE
56984             DO 350 I1=NUPP-1,NLOW+1,-1
56985               IF(IYETA.GE.K(I1,1)) GOTO 360
56986               K(I1+1,1)=K(I1,1)
56987   350       CONTINUE
56988   360       K(I1+1,1)=IYETA
56989             DO 370 I1=NUPP-1,NLOW+1,-1
56990               IF(IPHI.GE.K(I1,2)) GOTO 380
56991               K(I1+1,2)=K(I1,2)
56992   370       CONTINUE
56993   380       K(I1+1,2)=IPHI
56994             DO 390 I1=NUPP-1,NLOW+1,-1
56995               IF(IYEP.GE.K(I1,3)) GOTO 400
56996               K(I1+1,3)=K(I1,3)
56997   390       CONTINUE
56998   400       K(I1+1,3)=IYEP
56999           ENDIF
57000   410   CONTINUE
57001         K(NUPP+1,1)=2**10
57002         K(NUPP+1,2)=2**10
57003         K(NUPP+1,3)=4**10
57004  
57005 C...Calculate sum of factorial moments in event.
57006         DO 480 IM=1,3
57007           DO 430 IB=1,10
57008             DO 420 IP=1,4
57009               FEVFM(IB,IP)=0D0
57010   420       CONTINUE
57011   430     CONTINUE
57012           DO 450 IB=1,10
57013             IF(IM.LE.2) IBIN=2**(10-IB)
57014             IF(IM.EQ.3) IBIN=4**(10-IB)
57015             IAGR=K(NLOW+1,IM)/IBIN
57016             NAGR=1
57017             DO 440 I=NLOW+2,NUPP+1
57018               ICUT=K(I,IM)/IBIN
57019               IF(ICUT.EQ.IAGR) THEN
57020                 NAGR=NAGR+1
57021               ELSE
57022                 IF(NAGR.EQ.1) THEN
57023                 ELSEIF(NAGR.EQ.2) THEN
57024                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
57025                 ELSEIF(NAGR.EQ.3) THEN
57026                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
57027                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
57028                 ELSEIF(NAGR.EQ.4) THEN
57029                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
57030                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
57031                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
57032                 ELSE
57033                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
57034                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
57035                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
57036      &            (NAGR-3D0)
57037                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
57038      &            (NAGR-3D0)*(NAGR-4D0)
57039                 ENDIF
57040                 IAGR=ICUT
57041                 NAGR=1
57042               ENDIF
57043   440       CONTINUE
57044   450     CONTINUE
57045  
57046 C...Add results to total statistics.
57047           DO 470 IB=10,1,-1
57048             DO 460 IP=1,4
57049               IF(FEVFM(1,IP).LT.0.5D0) THEN
57050                 FEVFM(IB,IP)=0D0
57051               ELSEIF(IM.LE.2) THEN
57052                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
57053               ELSE
57054                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
57055               ENDIF
57056               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
57057               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
57058   460       CONTINUE
57059   470     CONTINUE
57060   480   CONTINUE
57061         NMUFM=NMUFM+(NUPP-NLOW)
57062         MSTU(62)=NUPP-NLOW
57063  
57064 C...Write accumulated statistics on factorial moments.
57065       ELSEIF(MTABU.EQ.32) THEN
57066         FAC=1D0/MAX(1,NEVFM)
57067         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
57068         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
57069         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
57070         DO 510 IM=1,3
57071           WRITE(MSTU(11),5500)
57072           DO 500 IB=1,10
57073             BYETA=2D0*PARU(57)
57074             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
57075             BPHI=PARU(2)
57076             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
57077             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
57078             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
57079             DO 490 IP=1,4
57080               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
57081               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
57082      &        FMOMA(IP)**2)))
57083   490       CONTINUE
57084             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
57085      &      IP=1,4)
57086   500     CONTINUE
57087   510   CONTINUE
57088  
57089 C...Copy statistics on factorial moments into /PYJETS/.
57090       ELSEIF(MTABU.EQ.33) THEN
57091         FAC=1D0/MAX(1,NEVFM)
57092         DO 540 IM=1,3
57093           DO 530 IB=1,10
57094             I=10*(IM-1)+IB
57095             K(I,1)=32
57096             K(I,2)=99
57097             K(I,3)=1
57098             IF(IM.NE.2) K(I,3)=2**(IB-1)
57099             K(I,4)=1
57100             IF(IM.NE.1) K(I,4)=2**(IB-1)
57101             K(I,5)=0
57102             P(I,1)=2D0*PARU(57)/K(I,3)
57103             V(I,1)=PARU(2)/K(I,4)
57104             DO 520 IP=1,4
57105               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
57106               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
57107      &        P(I,IP+1)**2)))
57108   520       CONTINUE
57109   530     CONTINUE
57110   540   CONTINUE
57111         N=30
57112         DO 550 J=1,5
57113           K(N+1,J)=0
57114           P(N+1,J)=0D0
57115           V(N+1,J)=0D0
57116   550   CONTINUE
57117         K(N+1,1)=32
57118         K(N+1,2)=99
57119         K(N+1,5)=NEVFM
57120         MSTU(3)=1
57121  
57122 C...Reset statistics on Energy-Energy Correlation.
57123       ELSEIF(MTABU.EQ.40) THEN
57124         NEVEE=0
57125         DO 560 J=1,25
57126           FE1EC(J)=0D0
57127           FE2EC(J)=0D0
57128           FE1EC(51-J)=0D0
57129           FE2EC(51-J)=0D0
57130           FE1EA(J)=0D0
57131           FE2EA(J)=0D0
57132   560   CONTINUE
57133  
57134 C...Find particles to include, with proper assumed mass.
57135       ELSEIF(MTABU.EQ.41) THEN
57136         NEVEE=NEVEE+1
57137         NLOW=N+MSTU(3)
57138         NUPP=NLOW
57139         ECM=0D0
57140         DO 570 I=1,N
57141           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
57142           IF(MSTU(41).GE.2) THEN
57143             KC=PYCOMP(K(I,2))
57144             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
57145      &      KC.EQ.18) GOTO 570
57146             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
57147      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
57148           ENDIF
57149           PMR=0D0
57150           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
57151           IF(MSTU(42).GE.2) PMR=P(I,5)
57152           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
57153             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
57154             RETURN
57155           ENDIF
57156           NUPP=NUPP+1
57157           P(NUPP,1)=P(I,1)
57158           P(NUPP,2)=P(I,2)
57159           P(NUPP,3)=P(I,3)
57160           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
57161           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
57162           ECM=ECM+P(NUPP,4)
57163   570   CONTINUE
57164         IF(NUPP.EQ.NLOW) RETURN
57165  
57166 C...Analyze Energy-Energy Correlation in event.
57167         FAC=(2D0/ECM**2)*50D0/PARU(1)
57168         DO 580 J=1,50
57169           FEVEE(J)=0D0
57170   580   CONTINUE
57171         DO 600 I1=NLOW+2,NUPP
57172           DO 590 I2=NLOW+1,I1-1
57173             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
57174      &      (P(I1,5)*P(I2,5))
57175             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
57176             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
57177             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
57178   590     CONTINUE
57179   600   CONTINUE
57180         DO 610 J=1,25
57181           FE1EC(J)=FE1EC(J)+FEVEE(J)
57182           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
57183           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
57184           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
57185           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
57186           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
57187   610   CONTINUE
57188         MSTU(62)=NUPP-NLOW
57189  
57190 C...Write statistics on Energy-Energy Correlation.
57191       ELSEIF(MTABU.EQ.42) THEN
57192         FAC=1D0/MAX(1,NEVEE)
57193         WRITE(MSTU(11),5700) NEVEE
57194         DO 620 J=1,25
57195           FEEC1=FAC*FE1EC(J)
57196           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
57197           FEEC2=FAC*FE1EC(51-J)
57198           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
57199           FEECA=FAC*FE1EA(J)
57200           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
57201           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
57202      &    FEEC2,FEES2,FEECA,FEESA
57203   620   CONTINUE
57204  
57205 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
57206       ELSEIF(MTABU.EQ.43) THEN
57207         FAC=1D0/MAX(1,NEVEE)
57208         DO 630 I=1,25
57209           K(I,1)=32
57210           K(I,2)=99
57211           K(I,3)=0
57212           K(I,4)=0
57213           K(I,5)=0
57214           P(I,1)=FAC*FE1EC(I)
57215           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
57216           P(I,2)=FAC*FE1EC(51-I)
57217           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
57218           P(I,3)=FAC*FE1EA(I)
57219           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
57220           P(I,4)=PARU(1)*(I-1)/50D0
57221           P(I,5)=PARU(1)*I/50D0
57222           V(I,4)=3.6D0*(I-1)
57223           V(I,5)=3.6D0*I
57224   630   CONTINUE
57225         N=25
57226         DO 640 J=1,5
57227           K(N+1,J)=0
57228           P(N+1,J)=0D0
57229           V(N+1,J)=0D0
57230   640   CONTINUE
57231         K(N+1,1)=32
57232         K(N+1,2)=99
57233         K(N+1,5)=NEVEE
57234         MSTU(3)=1
57235  
57236 C...Reset statistics on decay channels.
57237       ELSEIF(MTABU.EQ.50) THEN
57238         NEVDC=0
57239         NKFDC=0
57240         NREDC=0
57241  
57242 C...Identify and order flavour content of final state.
57243       ELSEIF(MTABU.EQ.51) THEN
57244         NEVDC=NEVDC+1
57245         NDS=0
57246         DO 670 I=1,N
57247           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
57248           NDS=NDS+1
57249           IF(NDS.GT.8) THEN
57250             NREDC=NREDC+1
57251             RETURN
57252           ENDIF
57253           KFM=2*IABS(K(I,2))
57254           IF(K(I,2).LT.0) KFM=KFM-1
57255           DO 650 IDS=NDS-1,1,-1
57256             IIN=IDS+1
57257             IF(KFM.LT.KFDM(IDS)) GOTO 660
57258             KFDM(IDS+1)=KFDM(IDS)
57259   650     CONTINUE
57260           IIN=1
57261   660     KFDM(IIN)=KFM
57262   670   CONTINUE
57263  
57264 C...Find whether old or new final state.
57265         DO 690 IDC=1,NKFDC
57266           IF(NDS.LT.KFDC(IDC,0)) THEN
57267             IKFDC=IDC
57268             GOTO 700
57269           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
57270             DO 680 I=1,NDS
57271               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
57272                 IKFDC=IDC
57273                 GOTO 700
57274               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
57275                 GOTO 690
57276               ENDIF
57277   680       CONTINUE
57278             IKFDC=-IDC
57279             GOTO 700
57280           ENDIF
57281   690   CONTINUE
57282         IKFDC=NKFDC+1
57283   700   IF(IKFDC.LT.0) THEN
57284           IKFDC=-IKFDC
57285         ELSEIF(NKFDC.GE.200) THEN
57286           NREDC=NREDC+1
57287           RETURN
57288         ELSE
57289           DO 720 IDC=NKFDC,IKFDC,-1
57290             NPDC(IDC+1)=NPDC(IDC)
57291             DO 710 I=0,8
57292               KFDC(IDC+1,I)=KFDC(IDC,I)
57293   710       CONTINUE
57294   720     CONTINUE
57295           NKFDC=NKFDC+1
57296           KFDC(IKFDC,0)=NDS
57297           DO 730 I=1,NDS
57298             KFDC(IKFDC,I)=KFDM(I)
57299   730     CONTINUE
57300           NPDC(IKFDC)=0
57301         ENDIF
57302         NPDC(IKFDC)=NPDC(IKFDC)+1
57303  
57304 C...Write statistics on decay channels.
57305       ELSEIF(MTABU.EQ.52) THEN
57306         FAC=1D0/MAX(1,NEVDC)
57307         WRITE(MSTU(11),5900) NEVDC
57308         DO 750 IDC=1,NKFDC
57309           DO 740 I=1,KFDC(IDC,0)
57310             KFM=KFDC(IDC,I)
57311             KF=(KFM+1)/2
57312             IF(2*KF.NE.KFM) KF=-KF
57313             CALL PYNAME(KF,CHAU)
57314             CHDC(I)=CHAU(1:12)
57315             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
57316   740     CONTINUE
57317           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
57318   750   CONTINUE
57319         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
57320  
57321 C...Copy statistics on decay channels into /PYJETS/.
57322       ELSEIF(MTABU.EQ.53) THEN
57323         FAC=1D0/MAX(1,NEVDC)
57324         DO 780 IDC=1,NKFDC
57325           K(IDC,1)=32
57326           K(IDC,2)=99
57327           K(IDC,3)=0
57328           K(IDC,4)=0
57329           K(IDC,5)=KFDC(IDC,0)
57330           DO 760 J=1,5
57331             P(IDC,J)=0D0
57332             V(IDC,J)=0D0
57333   760     CONTINUE
57334           DO 770 I=1,KFDC(IDC,0)
57335             KFM=KFDC(IDC,I)
57336             KF=(KFM+1)/2
57337             IF(2*KF.NE.KFM) KF=-KF
57338             IF(I.LE.5) P(IDC,I)=KF
57339             IF(I.GE.6) V(IDC,I-5)=KF
57340   770     CONTINUE
57341           V(IDC,5)=FAC*NPDC(IDC)
57342   780   CONTINUE
57343         N=NKFDC
57344         DO 790 J=1,5
57345           K(N+1,J)=0
57346           P(N+1,J)=0D0
57347           V(N+1,J)=0D0
57348   790   CONTINUE
57349         K(N+1,1)=32
57350         K(N+1,2)=99
57351         K(N+1,5)=NEVDC
57352         V(N+1,5)=FAC*NREDC
57353         MSTU(3)=1
57354       ENDIF
57355  
57356 C...Format statements for output on unit MSTU(11) (default 6).
57357  5000 FORMAT(///20X,'Event statistics - initial state'/
57358      &20X,'based on an analysis of ',I6,' events'//
57359      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
57360      &'according to fragmenting system multiplicity'/
57361      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
57362      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
57363  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
57364  5200 FORMAT(///20X,'Event statistics - final state'/
57365      &20X,'based on an analysis of ',I7,' events'//
57366      &5X,'Mean primary multiplicity =',F10.4/
57367      &5X,'Mean final   multiplicity =',F10.4/
57368      &5X,'Mean charged multiplicity =',F10.4//
57369      &5X,'Number of particles produced per event (directly and via ',
57370      &'decays/branchings)'/
57371      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
57372      &8X,'Total'/35X,'prim        seco        prim        seco'/)
57373  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
57374  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
57375      &20X,'based on an analysis of ',I6,' events'//
57376      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
57377      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
57378  5500 FORMAT(10X)
57379  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
57380  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
57381      &20X,'based on an analysis of ',I6,' events'//
57382      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
57383      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
57384  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
57385  5900 FORMAT(///20X,'Decay channel analysis - final state'/
57386      &20X,'based on an analysis of ',I6,' events'//
57387      &2X,'Probability',10X,'Complete final state'/)
57388  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
57389  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
57390      &'or table overflow)')
57391  
57392       RETURN
57393       END
57394  
57395 C*********************************************************************
57396  
57397 C...PYEEVT
57398 C...Handles the generation of an e+e- annihilation jet event.
57399  
57400       SUBROUTINE PYEEVT(KFL,ECM)
57401  
57402 C...Double precision and integer declarations.
57403       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57404       IMPLICIT INTEGER(I-N)
57405       INTEGER PYK,PYCHGE,PYCOMP
57406 C...Commonblocks.
57407       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57408       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57409       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57410       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
57411  
57412 C...Check input parameters.
57413       IF(MSTU(12).GE.1) CALL PYLIST(0)
57414       IF(KFL.LT.0.OR.KFL.GT.8) THEN
57415         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
57416         IF(MSTU(21).GE.1) RETURN
57417       ENDIF
57418       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
57419       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
57420       IF(ECM.LT.ECMMIN) THEN
57421         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
57422         IF(MSTU(21).GE.1) RETURN
57423       ENDIF
57424  
57425 C...Check consistency of MSTJ options set.
57426       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
57427         CALL PYERRM(6,
57428      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
57429         MSTJ(110)=1
57430       ENDIF
57431       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
57432         CALL PYERRM(6,
57433      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
57434         MSTJ(111)=0
57435       ENDIF
57436  
57437 C...Initialize alpha_strong and total cross-section.
57438       MSTU(111)=MSTJ(108)
57439       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
57440      &MSTU(111)=1
57441       PARU(112)=PARJ(121)
57442       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
57443       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
57444      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
57445      &XTOT)
57446       IF(MSTJ(116).GE.3) MSTJ(116)=1
57447       PARJ(171)=0D0
57448  
57449 C...Add initial e+e- to event record (documentation only).
57450       NTRY=0
57451   100 NTRY=NTRY+1
57452       IF(NTRY.GT.100) THEN
57453         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
57454         RETURN
57455       ENDIF
57456       MSTU(24)=0
57457       NC=0
57458       IF(MSTJ(115).GE.2) THEN
57459         NC=NC+2
57460         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
57461         K(NC-1,1)=21
57462         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
57463         K(NC,1)=21
57464       ENDIF
57465  
57466 C...Radiative photon (in initial state).
57467       MK=0
57468       ECMC=ECM
57469       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
57470      &THEK,PHIK,ALPK)
57471       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
57472       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
57473         NC=NC+1
57474         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
57475         K(NC,3)=MIN(MSTJ(115)/2,1)
57476       ENDIF
57477  
57478 C...Virtual exchange boson (gamma or Z0).
57479       IF(MSTJ(115).GE.3) THEN
57480         NC=NC+1
57481         KF=22
57482         IF(MSTJ(102).EQ.2) KF=23
57483         MSTU10=MSTU(10)
57484         MSTU(10)=1
57485         P(NC,5)=ECMC
57486         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
57487         K(NC,1)=21
57488         K(NC,3)=1
57489         MSTU(10)=MSTU10
57490       ENDIF
57491  
57492 C...Choice of flavour and jet configuration.
57493       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
57494       IF(KFLC.EQ.0) GOTO 100
57495       CALL PYXJET(ECMC,NJET,CUT)
57496       KFLN=21
57497       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
57498      &X12,X14)
57499       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
57500       IF(NJET.EQ.2) MSTJ(120)=1
57501  
57502 C...Fill jet configuration and origin.
57503       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
57504       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
57505      &ECMC)
57506       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
57507       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
57508      &-KFLC,ECMC,X1,X2,X4,X12,X14)
57509       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
57510      &-KFLC,ECMC,X1,X2,X4,X12,X14)
57511       IF(MSTU(24).NE.0) GOTO 100
57512       DO 110 IP=NC+1,N
57513         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
57514   110 CONTINUE
57515  
57516 C...Angular orientation according to matrix element.
57517       IF(MSTJ(106).EQ.1) THEN
57518         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
57519         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
57520         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
57521       ENDIF
57522  
57523 C...Rotation and boost from radiative photon.
57524       IF(MK.EQ.1) THEN
57525         DBEK=-PAK/(ECM-PAK)
57526         NMIN=NC+1-MSTJ(115)/3
57527         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
57528         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
57529         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
57530       ENDIF
57531  
57532 C...Generate parton shower. Rearrange along strings and check.
57533       IF(MSTJ(101).EQ.5) THEN
57534         CALL PYSHOW(N-1,N,ECMC)
57535         MSTJ14=MSTJ(14)
57536         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
57537         IF(MSTJ(105).GE.0) MSTU(28)=0
57538         CALL PYPREP(0)
57539         MSTJ(14)=MSTJ14
57540         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
57541       ENDIF
57542  
57543 C...Fragmentation/decay generation. Information for PYTABU.
57544       IF(MSTJ(105).EQ.1) CALL PYEXEC
57545       MSTU(161)=KFLC
57546       MSTU(162)=-KFLC
57547  
57548       RETURN
57549       END
57550  
57551 C*********************************************************************
57552  
57553 C...PYXTEE
57554 C...Calculates total cross-section, including initial state
57555 C...radiation effects.
57556  
57557       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
57558  
57559 C...Double precision and integer declarations.
57560       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57561       IMPLICIT INTEGER(I-N)
57562       INTEGER PYK,PYCHGE,PYCOMP
57563 C...Commonblocks.
57564       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57565       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57566       SAVE /PYDAT1/,/PYDAT2/
57567  
57568 C...Status, (optimized) Q^2 scale, alpha_strong.
57569       PARJ(151)=ECM
57570       MSTJ(119)=10*MSTJ(102)+KFL
57571       IF(MSTJ(111).EQ.0) THEN
57572         Q2R=ECM**2
57573       ELSEIF(MSTU(111).EQ.0) THEN
57574         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
57575      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
57576         Q2R=PARJ(168)*ECM**2
57577       ELSE
57578         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
57579      &  (2D0*PARU(112)/ECM)**2))
57580         Q2R=PARJ(168)*ECM**2
57581       ENDIF
57582       ALSPI=PYALPS(Q2R)/PARU(1)
57583  
57584 C...QCD corrections factor in R.
57585       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
57586         RQCD=1D0
57587       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
57588         RQCD=1D0+ALSPI
57589       ELSEIF(MSTJ(109).EQ.0) THEN
57590         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
57591         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
57592      &  LOG(PARJ(168))*ALSPI**2)
57593       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
57594         RQCD=1D0+(3D0/4D0)*ALSPI
57595       ELSE
57596         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
57597       ENDIF
57598  
57599 C...Calculate Z0 width if default value not acceptable.
57600       IF(MSTJ(102).GE.3) THEN
57601         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
57602      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
57603         DO 100 KFLC=5,6
57604           VQ=1D0
57605           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
57606      &    (2D0*PYMASS(KFLC)/ ECM)**2))
57607           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
57608           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
57609           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
57610   100   CONTINUE
57611         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
57612      &  (1D0-PARU(102)))
57613       ENDIF
57614  
57615 C...Calculate propagator and related constants for QFD case.
57616       POLL=1D0-PARJ(131)*PARJ(132)
57617       IF(MSTJ(102).GE.2) THEN
57618         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
57619         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
57620         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
57621         VE=4D0*PARU(102)-1D0
57622         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
57623         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
57624         HF1I=SFI*SF1I
57625         HF1W=SFW*SF1W
57626       ENDIF
57627  
57628 C...Loop over different flavours: charge, velocity.
57629       RTOT=0D0
57630       RQQ=0D0
57631       RQV=0D0
57632       RVA=0D0
57633       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
57634         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
57635         MSTJ(93)=1
57636         PMQ=PYMASS(KFLC)
57637         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
57638         QF=KCHG(KFLC,1)/3D0
57639         VQ=1D0
57640         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
57641  
57642 C...Calculate R and sum of charges for QED or QFD case.
57643         RQQ=RQQ+3D0*QF**2*POLL
57644         IF(MSTJ(102).LE.1) THEN
57645           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
57646         ELSE
57647           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
57648           RQV=RQV-6D0*QF*VF*SF1I
57649           RVA=RVA+3D0*(VF**2+1D0)*SF1W
57650           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
57651      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
57652         ENDIF
57653   110 CONTINUE
57654       RSUM=RQQ
57655       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
57656  
57657 C...Calculate cross-section, including QCD corrections.
57658       PARJ(141)=RQQ
57659       PARJ(142)=RTOT
57660       PARJ(143)=RTOT*RQCD
57661       PARJ(144)=PARJ(143)
57662       PARJ(145)=PARJ(141)*86.8D0/ECM**2
57663       PARJ(146)=PARJ(142)*86.8D0/ECM**2
57664       PARJ(147)=PARJ(143)*86.8D0/ECM**2
57665       PARJ(148)=PARJ(147)
57666       PARJ(157)=RSUM*RQCD
57667       PARJ(158)=0D0
57668       PARJ(159)=0D0
57669       XTOT=PARJ(147)
57670       IF(MSTJ(107).LE.0) RETURN
57671  
57672 C...Virtual cross-section.
57673       XKL=PARJ(135)
57674       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
57675       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
57676       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
57677      &1.526D0*LOG(ECM**2/0.932D0)
57678  
57679 C...Soft and hard radiative cross-section in QED case.
57680       IF(MSTJ(102).LE.1) THEN
57681         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
57682         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
57683         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
57684  
57685 C...Soft and hard radiative cross-section in QFD case.
57686       ELSE
57687         SZM=1D0-(PARJ(123)/ECM)**2
57688         SZW=PARJ(123)*PARJ(124)/ECM**2
57689         PARJ(161)=-RQQ/RSUM
57690         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
57691         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
57692         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
57693      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
57694         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
57695      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
57696         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
57697      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
57698      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
57699         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
57700      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
57701      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
57702      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
57703       ENDIF
57704  
57705 C...Total cross-section and fraction of hard photon events.
57706       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
57707       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
57708       PARJ(144)=PARJ(157)
57709       PARJ(148)=PARJ(144)*86.8D0/ECM**2
57710       XTOT=PARJ(148)
57711  
57712       RETURN
57713       END
57714  
57715 C*********************************************************************
57716  
57717 C...PYRADK
57718 C...Generates initial state photon radiation.
57719  
57720       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
57721  
57722 C...Double precision and integer declarations.
57723       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57724       IMPLICIT INTEGER(I-N)
57725       INTEGER PYK,PYCHGE,PYCOMP
57726 C...Commonblocks.
57727       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57728       SAVE /PYDAT1/
57729  
57730 C...Function: cumulative hard photon spectrum in QFD case.
57731       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
57732      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
57733  
57734 C...Determine whether radiative photon or not.
57735       MK=0
57736       PAK=0D0
57737       IF(PARJ(160).LT.PYR(0)) RETURN
57738       MK=1
57739  
57740 C...Photon energy range. Find photon momentum in QED case.
57741       XKL=PARJ(135)
57742       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
57743       IF(MSTJ(102).LE.1) THEN
57744   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
57745         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
57746  
57747 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
57748       ELSE
57749         SZM=1D0-(PARJ(123)/ECM)**2
57750         SZW=PARJ(123)*PARJ(124)/ECM**2
57751         FXKL=FXK(XKL)
57752         FXKU=FXK(XKU)
57753         FXKD=1D-4*(FXKU-FXKL)
57754         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
57755         NXK=0
57756   110   NXK=NXK+1
57757         XK=0.5D0*(XKL+XKU)
57758         FXKV=FXK(XK)
57759         IF(FXKV.GT.FXKR) THEN
57760           XKU=XK
57761           FXKU=FXKV
57762         ELSE
57763           XKL=XK
57764           FXKL=FXKV
57765         ENDIF
57766         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
57767         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
57768       ENDIF
57769       PAK=0.5D0*ECM*XK
57770  
57771 C...Photon polar and azimuthal angle.
57772       PME=2D0*(PYMASS(11)/ECM)**2
57773   120 CTHM=PME*(2D0/PME)**PYR(0)
57774       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
57775      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
57776       CTHE=1D0-CTHM
57777       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
57778       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
57779       THEK=PYANGL(CTHE,STHE)
57780       PHIK=PARU(2)*PYR(0)
57781  
57782 C...Rotation angle for hadronic system.
57783       SGN=1D0
57784       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
57785      &PYR(0)) SGN=-1D0
57786       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
57787      &(2D0-XK*(1D0-SGN*CTHE)))
57788  
57789       RETURN
57790       END
57791  
57792 C*********************************************************************
57793  
57794 C...PYXKFL
57795 C...Selects flavour for produced qqbar pair.
57796  
57797       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
57798  
57799 C...Double precision and integer declarations.
57800       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57801       IMPLICIT INTEGER(I-N)
57802       INTEGER PYK,PYCHGE,PYCOMP
57803 C...Commonblocks.
57804       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57805       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57806       SAVE /PYDAT1/,/PYDAT2/
57807  
57808 C...Calculate maximum weight in QED or QFD case.
57809       IF(MSTJ(102).LE.1) THEN
57810         RFMAX=4D0/9D0
57811       ELSE
57812         POLL=1D0-PARJ(131)*PARJ(132)
57813         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
57814         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
57815         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
57816         VE=4D0*PARU(102)-1D0
57817         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
57818         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
57819         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
57820      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
57821      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
57822      &  1D0)*HF1W)
57823       ENDIF
57824  
57825 C...Choose flavour. Gives charge and velocity.
57826       NTRY=0
57827   100 NTRY=NTRY+1
57828       IF(NTRY.GT.100) THEN
57829         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
57830         KFLC=0
57831         RETURN
57832       ENDIF
57833       KFLC=KFL
57834       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
57835       MSTJ(93)=1
57836       PMQ=PYMASS(KFLC)
57837       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
57838       QF=KCHG(KFLC,1)/3D0
57839       VQ=1D0
57840       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
57841  
57842 C...Calculate weight in QED or QFD case.
57843       IF(MSTJ(102).LE.1) THEN
57844         RF=QF**2
57845         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
57846       ELSE
57847         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
57848         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
57849         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
57850      &  VQ**3*HF1W
57851         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
57852       ENDIF
57853  
57854 C...Weighting or new event (radiative photon). Cross-section update.
57855       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
57856       PARJ(158)=PARJ(158)+1D0
57857       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
57858       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
57859       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
57860       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
57861       PARJ(148)=PARJ(144)*86.8D0/ECM**2
57862  
57863       RETURN
57864       END
57865  
57866 C*********************************************************************
57867  
57868 C...PYXJET
57869 C...Selects number of jets in matrix element approach.
57870  
57871       SUBROUTINE PYXJET(ECM,NJET,CUT)
57872  
57873 C...Double precision and integer declarations.
57874       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57875       IMPLICIT INTEGER(I-N)
57876       INTEGER PYK,PYCHGE,PYCOMP
57877 C...Commonblocks.
57878       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57879       SAVE /PYDAT1/
57880 C...Local array and data.
57881       DIMENSION ZHUT(5)
57882       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
57883  
57884 C...Trivial result for two-jets only, including parton shower.
57885       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
57886         CUT=0D0
57887  
57888 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
57889       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
57890         CF=4D0/3D0
57891         IF(MSTJ(109).EQ.2) CF=1D0
57892         IF(MSTJ(111).EQ.0) THEN
57893           Q2=ECM**2
57894           Q2R=ECM**2
57895         ELSEIF(MSTU(111).EQ.0) THEN
57896           PARJ(169)=MIN(1D0,PARJ(129))
57897           Q2=PARJ(169)*ECM**2
57898           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
57899      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
57900           Q2R=PARJ(168)*ECM**2
57901         ELSE
57902           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
57903           Q2=PARJ(169)*ECM**2
57904           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
57905      &    (2D0*PARU(112)/ECM)**2))
57906           Q2R=PARJ(168)*ECM**2
57907         ENDIF
57908  
57909 C...alpha_strong for R and R itself.
57910         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
57911         IF(IABS(MSTJ(101)).EQ.1) THEN
57912           RQCD=1D0+ALSPI
57913         ELSEIF(MSTJ(109).EQ.0) THEN
57914           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
57915           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
57916      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
57917         ELSE
57918           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
57919         ENDIF
57920  
57921 C...alpha_strong for jet rate. Initial value for y cut.
57922         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
57923         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
57924         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
57925      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
57926         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
57927  
57928 C...Parametrization of first order three-jet cross-section.
57929   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
57930           PARJ(152)=0D0
57931         ELSE
57932           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
57933      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
57934      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
57935      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
57936           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
57937      &    PARJ(152)=0D0
57938         ENDIF
57939  
57940 C...Parametrization of second order three-jet cross-section.
57941         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
57942      &  CUT.GE.0.25D0) THEN
57943           PARJ(153)=0D0
57944         ELSEIF(MSTJ(110).LE.1) THEN
57945           CT=LOG(1D0/CUT-2D0)
57946           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
57947      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
57948  
57949 C...Interpolation in second/first order ratio for Zhu parametrization.
57950         ELSEIF(MSTJ(110).EQ.2) THEN
57951           IZA=0
57952           DO 110 IY=1,5
57953             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
57954   110     CONTINUE
57955           IF(IZA.NE.0) THEN
57956             ZHURAT=ZHUT(IZA)
57957           ELSE
57958             IZ=100D0*CUT
57959             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
57960           ENDIF
57961           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
57962         ENDIF
57963  
57964 C...Shift in second order three-jet cross-section with optimized Q^2.
57965         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
57966      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
57967      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
57968  
57969 C...Parametrization of second order four-jet cross-section.
57970         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
57971           PARJ(154)=0D0
57972         ELSE
57973           CT=LOG(1D0/CUT-5D0)
57974           IF(CUT.LE.0.018D0) THEN
57975             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
57976             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
57977      &      0.4059D0*CT**2)
57978             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
57979             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
57980           ELSE
57981             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
57982             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
57983      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
57984             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
57985      &      0.002093D0*CT**3)
57986             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
57987           ENDIF
57988           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
57989           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
57990         ENDIF
57991  
57992 C...If negative three-jet rate, change y' optimization parameter.
57993         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
57994      &  PARJ(169).LT.0.99D0) THEN
57995           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
57996           Q2=PARJ(169)*ECM**2
57997           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
57998           GOTO 100
57999         ENDIF
58000  
58001 C...If too high cross-section, use harder cuts, or fail.
58002         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
58003           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
58004      &    PARJ(169).LT.0.99D0) THEN
58005             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
58006             Q2=PARJ(169)*ECM**2
58007             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
58008             GOTO 100
58009           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
58010             CALL PYERRM(26,
58011      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
58012           ENDIF
58013           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
58014      &    PARJ(154))**(-1D0/3D0)
58015           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
58016           GOTO 100
58017         ENDIF
58018  
58019 C...Scalar gluon (first order only).
58020       ELSE
58021         ALSPI=PYALPS(ECM**2)/PARU(1)
58022         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
58023         PARJ(152)=0D0
58024         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
58025      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
58026         PARJ(153)=0D0
58027         PARJ(154)=0D0
58028       ENDIF
58029  
58030 C...Select number of jets.
58031       PARJ(150)=CUT
58032       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
58033         NJET=2
58034       ELSEIF(MSTJ(101).LE.0) THEN
58035         NJET=MIN(4,2-MSTJ(101))
58036       ELSE
58037         RNJ=PYR(0)
58038         NJET=2
58039         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
58040         IF(PARJ(154).GT.RNJ) NJET=4
58041       ENDIF
58042  
58043       RETURN
58044       END
58045  
58046 C*********************************************************************
58047  
58048 C...PYX3JT
58049 C...Selects the kinematical variables of three-jet events.
58050  
58051       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
58052  
58053 C...Double precision and integer declarations.
58054       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58055       IMPLICIT INTEGER(I-N)
58056       INTEGER PYK,PYCHGE,PYCOMP
58057 C...Commonblocks.
58058       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58059       SAVE /PYDAT1/
58060 C...Local array.
58061       DIMENSION ZHUP(5,12)
58062  
58063 C...Coefficients of Zhu second order parametrization.
58064       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
58065      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
58066      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
58067      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
58068      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
58069      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
58070      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
58071      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
58072      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
58073      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
58074      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
58075  
58076 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
58077       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
58078      &X**7/49D0
58079  
58080 C...Event type. Mass effect factors and other common constants.
58081       MSTJ(120)=2
58082       MSTJ(121)=0
58083       PMQ=PYMASS(KFL)
58084       QME=(2D0*PMQ/ECM)**2
58085       IF(MSTJ(109).NE.1) THEN
58086         CUTL=LOG(CUT)
58087         CUTD=LOG(1D0/CUT-2D0)
58088         IF(MSTJ(109).EQ.0) THEN
58089           CF=4D0/3D0
58090           CN=3D0
58091           TR=2D0
58092           WTMX=MIN(20D0,37D0-6D0*CUTD)
58093           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
58094         ELSE
58095           CF=1D0
58096           CN=0D0
58097           TR=12D0
58098           WTMX=0D0
58099         ENDIF
58100  
58101 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
58102         ALS2PI=PARU(118)/PARU(2)
58103         WTOPT=0D0
58104         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
58105      &  LOG(PARJ(169))*ALS2PI
58106         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
58107  
58108 C...Choose three-jet events in allowed region.
58109   100   NJET=3
58110   110   Y13L=CUTL+CUTD*PYR(0)
58111         Y23L=CUTL+CUTD*PYR(0)
58112         Y13=EXP(Y13L)
58113         Y23=EXP(Y23L)
58114         Y12=1D0-Y13-Y23
58115         IF(Y12.LE.CUT) GOTO 110
58116         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
58117  
58118 C...Second order corrections.
58119         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
58120           Y12L=LOG(Y12)
58121           Y13M=LOG(1D0-Y13)
58122           Y23M=LOG(1D0-Y23)
58123           Y12M=LOG(1D0-Y12)
58124           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
58125           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
58126           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
58127           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
58128           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
58129           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
58130           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
58131           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
58132      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
58133      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
58134      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
58135      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
58136      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
58137      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
58138      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
58139      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
58140      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
58141      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
58142      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
58143      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
58144      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
58145      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
58146      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
58147      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
58148           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
58149           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
58150           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
58151  
58152         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
58153 C...Second order corrections; Zhu parametrization of ERT.
58154           ZX=(Y23-Y13)**2
58155           ZY=1D0-Y12
58156           IZA=0
58157           DO 120 IY=1,5
58158             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
58159   120     CONTINUE
58160           IF(IZA.NE.0) THEN
58161             IZ=IZA
58162             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
58163      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
58164      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
58165      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
58166           ELSE
58167             IZ=100D0*CUT
58168             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
58169      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
58170      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
58171      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
58172             IZ=IZ+1
58173             WTU=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             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
58178           ENDIF
58179           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
58180           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
58181           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
58182         ENDIF
58183  
58184 C...Impose mass cuts (gives two jets). For fixed jet number new try.
58185         X1=1D0-Y23
58186         X2=1D0-Y13
58187         X3=1D0-Y12
58188         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
58189         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
58190      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
58191      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
58192         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
58193  
58194 C...Scalar gluon model (first order only, no mass effects).
58195       ELSE
58196   130   NJET=3
58197   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
58198         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
58199         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
58200         X1=1D0-0.5D0*(X3+YD)
58201         X2=1D0-0.5D0*(X3-YD)
58202         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
58203         IF(MSTJ(102).GE.2) THEN
58204           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
58205      &    X3**2*PYR(0)) NJET=2
58206         ENDIF
58207         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
58208       ENDIF
58209  
58210       RETURN
58211       END
58212  
58213 C*********************************************************************
58214  
58215 C...PYX4JT
58216 C...Selects the kinematical variables of four-jet events.
58217  
58218       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
58219  
58220 C...Double precision and integer declarations.
58221       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58222       IMPLICIT INTEGER(I-N)
58223       INTEGER PYK,PYCHGE,PYCOMP
58224 C...Commonblocks.
58225       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58226       SAVE /PYDAT1/
58227 C...Local arrays.
58228       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
58229  
58230 C...Common constants. Colour factors for QCD and Abelian gluon theory.
58231       PMQ=PYMASS(KFL)
58232       QME=(2D0*PMQ/ECM)**2
58233       CT=LOG(1D0/CUT-5D0)
58234       IF(MSTJ(109).EQ.0) THEN
58235         CF=4D0/3D0
58236         CN=3D0
58237         TR=2.5D0
58238       ELSE
58239         CF=1D0
58240         CN=0D0
58241         TR=15D0
58242       ENDIF
58243  
58244 C...Choice of process (qqbargg or qqbarqqbar).
58245   100 NJET=4
58246       IT=1
58247       IF(PARJ(155).GT.PYR(0)) IT=2
58248       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
58249       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
58250       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
58251       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
58252       ID=1
58253  
58254 C...Sample the five kinematical variables (for qqgg preweighted in y34).
58255   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
58256       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
58257       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
58258       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
58259       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
58260       VT=PYR(0)
58261       CP=COS(PARU(1)*PYR(0))
58262       Y14=(Y134-Y34)*VT
58263       Y13=Y134-Y14-Y34
58264       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
58265       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
58266      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
58267       Y23=Y234-Y34-Y24
58268       Y12=1D0-Y134-Y23-Y24
58269       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
58270       Y123=Y12+Y13+Y23
58271       Y124=Y12+Y14+Y24
58272  
58273 C...Calculate matrix elements for qqgg or qqqq process.
58274       IC=0
58275       WTTOT=0D0
58276   120 IC=IC+1
58277       IF(IT.EQ.1) THEN
58278         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
58279      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
58280      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
58281      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
58282      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
58283      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
58284      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
58285      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
58286         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
58287      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
58288      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
58289      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
58290         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
58291      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
58292      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
58293      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
58294      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
58295      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
58296      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
58297      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
58298      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
58299      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
58300      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
58301      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
58302         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
58303      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
58304      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
58305      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
58306      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
58307      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
58308      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
58309      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
58310      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
58311      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
58312      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
58313      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
58314      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
58315      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
58316      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
58317      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
58318         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
58319      &  CN*WTC(IC))/8D0
58320       ELSE
58321         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
58322      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
58323      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
58324      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
58325      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
58326      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
58327      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
58328      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
58329      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
58330         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
58331      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
58332      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
58333      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
58334      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
58335      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
58336      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
58337      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
58338         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
58339       ENDIF
58340  
58341 C...Permutations of momenta in matrix element. Weighting.
58342   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
58343         YSAV=Y13
58344         Y13=Y14
58345         Y14=YSAV
58346         YSAV=Y23
58347         Y23=Y24
58348         Y24=YSAV
58349         YSAV=Y123
58350         Y123=Y124
58351         Y124=YSAV
58352       ENDIF
58353       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
58354         YSAV=Y13
58355         Y13=Y23
58356         Y23=YSAV
58357         YSAV=Y14
58358         Y14=Y24
58359         Y24=YSAV
58360         YSAV=Y134
58361         Y134=Y234
58362         Y234=YSAV
58363       ENDIF
58364       IF(IC.LE.3) GOTO 120
58365       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
58366       IC=5
58367  
58368 C...qqgg events: string configuration and event type.
58369       IF(IT.EQ.1) THEN
58370         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
58371           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
58372      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
58373           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
58374      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
58375           IF(ID.EQ.2) GOTO 130
58376         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
58377           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
58378           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
58379           IF(ID.EQ.2) GOTO 130
58380         ENDIF
58381         MSTJ(120)=3
58382         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
58383      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
58384         KFLN=21
58385  
58386 C...Mass cuts. Kinematical variables out.
58387         IF(Y12.LE.CUT+QME) NJET=2
58388         IF(NJET.EQ.2) GOTO 150
58389         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
58390         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
58391         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
58392         X2=1D0-Y124
58393         X12=(1D0-Q12)*Y13+Q12*Y23
58394         X14=Y12-0.5D0*QME
58395         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
58396  
58397 C...qqbarqqbar events: string configuration, choose new flavour.
58398       ELSE
58399         IF(ID.EQ.1) THEN
58400           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
58401           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
58402           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
58403           IF(WTR.LT.WTD(4)) ID=4
58404           IF(ID.GE.2) GOTO 130
58405         ENDIF
58406         MSTJ(120)=5
58407         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
58408   140   KFLN=1+INT(5D0*PYR(0))
58409         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
58410         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
58411         IF(KFLN.GT.MSTJ(104)) NJET=2
58412         PMQN=PYMASS(KFLN)
58413         QMEN=(2D0*PMQN/ECM)**2
58414  
58415 C...Mass cuts. Kinematical variables out.
58416         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
58417         IF(NJET.EQ.2) GOTO 150
58418         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
58419         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
58420         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
58421         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
58422         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
58423         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
58424      &  Q13*Y23)
58425         X14=Y24-0.5D0*QME
58426         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
58427      &  Q13*Y14)
58428         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
58429      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
58430         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
58431       ENDIF
58432   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
58433  
58434       RETURN
58435       END
58436  
58437 C*********************************************************************
58438  
58439 C...PYXDIF
58440 C...Gives the angular orientation of events.
58441  
58442       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
58443  
58444 C...Double precision and integer declarations.
58445       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58446       IMPLICIT INTEGER(I-N)
58447       INTEGER PYK,PYCHGE,PYCOMP
58448 C...Commonblocks.
58449       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58450       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58451       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58452       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58453  
58454 C...Charge. Factors depending on polarization for QED case.
58455       QF=KCHG(KFL,1)/3D0
58456       POLL=1D0-PARJ(131)*PARJ(132)
58457       POLD=PARJ(132)-PARJ(131)
58458       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
58459         HF1=POLL
58460         HF2=0D0
58461         HF3=PARJ(133)**2
58462         HF4=0D0
58463  
58464 C...Factors depending on flavour, energy and polarization for QFD case.
58465       ELSE
58466         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
58467         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
58468         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
58469         AE=-1D0
58470         VE=4D0*PARU(102)-1D0
58471         AF=SIGN(1D0,QF)
58472         VF=AF-4D0*QF*PARU(102)
58473         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
58474      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
58475         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
58476      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
58477         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
58478      &  SFW*SFF**2*(VE**2-AE**2))
58479         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
58480      &  SFF*AE
58481       ENDIF
58482  
58483 C...Mass factor. Differential cross-sections for two-jet events.
58484       SQ2=SQRT(2D0)
58485       QME=0D0
58486       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
58487      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
58488       IF(NJET.EQ.2) THEN
58489         SIGU=4D0*SQRT(1D0-QME)
58490         SIGL=2D0*QME*SQRT(1D0-QME)
58491         SIGT=0D0
58492         SIGI=0D0
58493         SIGA=0D0
58494         SIGP=4D0
58495  
58496 C...Kinematical variables. Reduce four-jet event to three-jet one.
58497       ELSE
58498         IF(NJET.EQ.3) THEN
58499           X1=2D0*P(NC+1,4)/ECM
58500           X2=2D0*P(NC+3,4)/ECM
58501         ELSE
58502           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
58503      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
58504           X1=2D0*P(NC+1,4)/ECMR
58505           X2=2D0*P(NC+4,4)/ECMR
58506         ENDIF
58507  
58508 C...Differential cross-sections for three-jet (or reduced four-jet).
58509         XQ=(1D0-X1)/(1D0-X2)
58510         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
58511         ST12=SQRT(1D0-CT12**2)
58512         IF(MSTJ(109).NE.1) THEN
58513           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
58514      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
58515           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
58516      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
58517      &    X2)*XQ
58518           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
58519           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
58520      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
58521           SIGA=X2**2*ST12/SQ2
58522           SIGP=2D0*(X1**2-X2**2*CT12)
58523  
58524 C...Differential cross-sect for scalar gluons (no mass effects).
58525         ELSE
58526           X3=2D0-X1-X2
58527           XT=X2*ST12
58528           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
58529           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
58530      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
58531           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
58532      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
58533           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
58534      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
58535           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
58536      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
58537           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
58538           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
58539         ENDIF
58540       ENDIF
58541  
58542 C...Upper bounds for differential cross-section.
58543       HF1A=ABS(HF1)
58544       HF2A=ABS(HF2)
58545       HF3A=ABS(HF3)
58546       HF4A=ABS(HF4)
58547       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
58548      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
58549      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
58550      &2D0*HF2A*ABS(SIGP)
58551  
58552 C...Generate angular orientation according to differential cross-sect.
58553   100 CHI=PARU(2)*PYR(0)
58554       CTHE=2D0*PYR(0)-1D0
58555       PHI=PARU(2)*PYR(0)
58556       CCHI=COS(CHI)
58557       SCHI=SIN(CHI)
58558       C2CHI=COS(2D0*CHI)
58559       S2CHI=SIN(2D0*CHI)
58560       THE=ACOS(CTHE)
58561       STHE=SIN(THE)
58562       C2PHI=COS(2D0*(PHI-PARJ(134)))
58563       S2PHI=SIN(2D0*(PHI-PARJ(134)))
58564       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
58565      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
58566      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
58567      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
58568      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
58569      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
58570      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
58571       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
58572  
58573       RETURN
58574       END
58575  
58576 C*********************************************************************
58577  
58578 C...PYONIA
58579 C...Generates Upsilon and toponium decays into three gluons
58580 C...or two gluons and a photon.
58581  
58582       SUBROUTINE PYONIA(KFL,ECM)
58583  
58584 C...Double precision and integer declarations.
58585       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58586       IMPLICIT INTEGER(I-N)
58587       INTEGER PYK,PYCHGE,PYCOMP
58588 C...Commonblocks.
58589       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58590       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58591       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58592       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58593  
58594 C...Printout. Check input parameters.
58595       IF(MSTU(12).GE.1) CALL PYLIST(0)
58596       IF(KFL.LT.0.OR.KFL.GT.8) THEN
58597         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
58598         IF(MSTU(21).GE.1) RETURN
58599       ENDIF
58600       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
58601         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
58602         IF(MSTU(21).GE.1) RETURN
58603       ENDIF
58604  
58605 C...Initial e+e- and onium state (optional).
58606       NC=0
58607       IF(MSTJ(115).GE.2) THEN
58608         NC=NC+2
58609         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
58610         K(NC-1,1)=21
58611         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
58612         K(NC,1)=21
58613       ENDIF
58614       KFLC=IABS(KFL)
58615       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
58616         NC=NC+1
58617         KF=110*KFLC+3
58618         MSTU10=MSTU(10)
58619         MSTU(10)=1
58620         P(NC,5)=ECM
58621         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
58622         K(NC,1)=21
58623         K(NC,3)=1
58624         MSTU(10)=MSTU10
58625       ENDIF
58626  
58627 C...Choose x1 and x2 according to matrix element.
58628       NTRY=0
58629   100 X1=PYR(0)
58630       X2=PYR(0)
58631       X3=2D0-X1-X2
58632       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
58633      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
58634       NTRY=NTRY+1
58635       NJET=3
58636       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
58637       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
58638  
58639 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
58640       MSTU(111)=MSTJ(108)
58641       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
58642      &MSTU(111)=1
58643       PARU(112)=PARJ(121)
58644       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
58645       QF=0D0
58646       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
58647       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
58648       MK=0
58649       ECMC=ECM
58650       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
58651         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
58652      &  NJET=2
58653         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
58654         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
58655       ELSE
58656         MK=1
58657         ECMC=SQRT(1D0-X1)*ECM
58658         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
58659         K(NC+1,1)=1
58660         K(NC+1,2)=22
58661         K(NC+1,4)=0
58662         K(NC+1,5)=0
58663         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
58664         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
58665         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
58666         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
58667         NJET=2
58668         IF(ECMC.LT.4D0*PARJ(127)) THEN
58669           MSTU10=MSTU(10)
58670           MSTU(10)=1
58671           P(NC+2,5)=ECMC
58672           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
58673           MSTU(10)=MSTU10
58674           NJET=0
58675         ENDIF
58676       ENDIF
58677       DO 110 IP=NC+1,N
58678         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
58679   110 CONTINUE
58680  
58681 C...Differential cross-sections. Upper limit for cross-section.
58682       IF(MSTJ(106).EQ.1) THEN
58683         SQ2=SQRT(2D0)
58684         HF1=1D0-PARJ(131)*PARJ(132)
58685         HF3=PARJ(133)**2
58686         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
58687         ST13=SQRT(1D0-CT13**2)
58688         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
58689         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
58690         SIGT=0.5D0*SIGL
58691         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
58692         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
58693      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
58694  
58695 C...Angular orientation of event.
58696   120   CHI=PARU(2)*PYR(0)
58697         CTHE=2D0*PYR(0)-1D0
58698         PHI=PARU(2)*PYR(0)
58699         CCHI=COS(CHI)
58700         SCHI=SIN(CHI)
58701         C2CHI=COS(2D0*CHI)
58702         S2CHI=SIN(2D0*CHI)
58703         THE=ACOS(CTHE)
58704         STHE=SIN(THE)
58705         C2PHI=COS(2D0*(PHI-PARJ(134)))
58706         S2PHI=SIN(2D0*(PHI-PARJ(134)))
58707         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
58708      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
58709      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
58710      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
58711      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
58712         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
58713         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
58714         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
58715       ENDIF
58716  
58717 C...Generate parton shower. Rearrange along strings and check.
58718       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
58719         CALL PYSHOW(NC+MK+1,-NJET,ECMC)
58720         MSTJ14=MSTJ(14)
58721         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
58722         IF(MSTJ(105).GE.0) MSTU(28)=0
58723         CALL PYPREP(0)
58724         MSTJ(14)=MSTJ14
58725         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
58726       ENDIF
58727  
58728 C...Generate fragmentation. Information for PYTABU:
58729       IF(MSTJ(105).EQ.1) CALL PYEXEC
58730       MSTU(161)=110*KFLC+3
58731       MSTU(162)=0
58732  
58733       RETURN
58734       END
58735  
58736 C*********************************************************************
58737  
58738 C...PYBOOK
58739 C...Books a histogram.
58740  
58741       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
58742  
58743 C...Double precision declaration.
58744       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58745       IMPLICIT INTEGER(I-N)
58746 C...Commonblock.
58747       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58748       SAVE /PYBINS/
58749 C...Local character variables.
58750       CHARACTER TITLE*(*), TITFX*60
58751  
58752 C...Check that input is sensible. Find initial address in memory.
58753       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58754      &'(PYBOOK:) not allowed histogram number')
58755       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
58756      &'(PYBOOK:) not allowed number of bins')
58757       IF(XL.GE.XU) CALL PYERRM(28,
58758      &'(PYBOOK:) x limits in wrong order')
58759       INDX(ID)=IHIST(4)
58760       IHIST(4)=IHIST(4)+28+NX
58761       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
58762      &'(PYBOOK:) out of histogram space')
58763       IS=INDX(ID)
58764  
58765 C...Store histogram size and reset contents.
58766       BIN(IS+1)=NX
58767       BIN(IS+2)=XL
58768       BIN(IS+3)=XU
58769       BIN(IS+4)=(XU-XL)/NX
58770       CALL PYNULL(ID)
58771  
58772 C...Store title by conversion to integer to double precision.
58773       TITFX=TITLE//' '
58774       DO 100 IT=1,20
58775         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
58776      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
58777   100 CONTINUE
58778  
58779       RETURN
58780       END
58781  
58782 C*********************************************************************
58783  
58784 C...PYFILL
58785 C...Fills entry in histogram.
58786  
58787       SUBROUTINE PYFILL(ID,X,W)
58788  
58789 C...Double precision declaration.
58790       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58791       IMPLICIT INTEGER(I-N)
58792 C...Commonblock.
58793       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58794       SAVE /PYBINS/
58795  
58796 C...Find initial address in memory. Increase number of entries.
58797       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58798      &'(PYFILL:) not allowed histogram number')
58799       IS=INDX(ID)
58800       IF(IS.EQ.0) CALL PYERRM(28,
58801      &'(PYFILL:) filling unbooked histogram')
58802       BIN(IS+5)=BIN(IS+5)+1D0
58803  
58804 C...Find bin in x, including under/overflow, and fill.
58805       IF(X.LT.BIN(IS+2)) THEN
58806         BIN(IS+6)=BIN(IS+6)+W
58807       ELSEIF(X.GE.BIN(IS+3)) THEN
58808         BIN(IS+8)=BIN(IS+8)+W
58809       ELSE
58810         BIN(IS+7)=BIN(IS+7)+W
58811         IX=(X-BIN(IS+2))/BIN(IS+4)
58812         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
58813         BIN(IS+9+IX)=BIN(IS+9+IX)+W
58814       ENDIF
58815  
58816       RETURN
58817       END
58818  
58819 C*********************************************************************
58820  
58821 C...PYFACT
58822 C...Multiplies histogram contents by factor.
58823  
58824       SUBROUTINE PYFACT(ID,F)
58825  
58826 C...Double precision declaration.
58827       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58828       IMPLICIT INTEGER(I-N)
58829 C...Commonblock.
58830       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58831       SAVE /PYBINS/
58832  
58833 C...Find initial address in memory. Multiply all contents bins.
58834       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
58835      &'(PYFACT:) not allowed histogram number')
58836       IS=INDX(ID)
58837       IF(IS.EQ.0) CALL PYERRM(28,
58838      &'(PYFACT:) scaling unbooked histogram')
58839       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
58840         BIN(IX)=F*BIN(IX)
58841   100 CONTINUE
58842  
58843       RETURN
58844       END
58845  
58846 C*********************************************************************
58847  
58848 C...PYOPER
58849 C...Performs operations between histograms.
58850  
58851       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
58852  
58853 C...Double precision declaration.
58854       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58855       IMPLICIT INTEGER(I-N)
58856 C...Commonblock.
58857       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58858       SAVE /PYBINS/
58859 C...Character variable.
58860       CHARACTER OPER*(*)
58861  
58862 C...Find initial addresses in memory, and histogram size.
58863       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
58864      &'(PYFACT:) not allowed histogram number')
58865       IS1=INDX(ID1)
58866       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
58867       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
58868       NX=NINT(BIN(IS3+1))
58869       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
58870  
58871 C...Update info on number of histogram entries.
58872       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
58873         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
58874       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
58875         BIN(IS3+5)=BIN(IS1+5)
58876       ENDIF
58877  
58878 C...Operations on pair of histograms: addition, subtraction,
58879 C...multiplication, division.
58880       IF(OPER.EQ.'+') THEN
58881         DO 100 IX=6,8+NX
58882           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
58883   100   CONTINUE
58884       ELSEIF(OPER.EQ.'-') THEN
58885         DO 110 IX=6,8+NX
58886           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
58887   110   CONTINUE
58888       ELSEIF(OPER.EQ.'*') THEN
58889         DO 120 IX=6,8+NX
58890           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
58891   120   CONTINUE
58892       ELSEIF(OPER.EQ.'/') THEN
58893         DO 130 IX=6,8+NX
58894           FA2=F2*BIN(IS2+IX)
58895           IF(ABS(FA2).LE.1D-20) THEN
58896             BIN(IS3+IX)=0D0
58897           ELSE
58898             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
58899           ENDIF
58900   130   CONTINUE
58901  
58902 C...Operations on single histogram: multiplication+addition,
58903 C...square root+addition, logarithm+addition.
58904       ELSEIF(OPER.EQ.'A') THEN
58905         DO 140 IX=6,8+NX
58906           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
58907   140   CONTINUE
58908       ELSEIF(OPER.EQ.'S') THEN
58909         DO 150 IX=6,8+NX
58910           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
58911   150   CONTINUE
58912       ELSEIF(OPER.EQ.'L') THEN
58913         ZMIN=1D20
58914         DO 160 IX=9,8+NX
58915           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
58916      &    ZMIN=0.8D0*BIN(IS1+IX)
58917   160   CONTINUE
58918         DO 170 IX=6,8+NX
58919           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
58920   170   CONTINUE
58921  
58922 C...Operation on two or three histograms: average and
58923 C...standard deviation.
58924       ELSEIF(OPER.EQ.'M') THEN
58925         DO 180 IX=6,8+NX
58926           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
58927             BIN(IS2+IX)=0D0
58928           ELSE
58929             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
58930           ENDIF
58931           IF(ID3.NE.0) THEN
58932             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
58933               BIN(IS3+IX)=0D0
58934             ELSE
58935               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
58936      &        BIN(IS2+IX)**2))
58937             ENDIF
58938           ENDIF
58939           BIN(IS1+IX)=F1*BIN(IS1+IX)
58940   180   CONTINUE
58941       ENDIF
58942  
58943       RETURN
58944       END
58945  
58946 C*********************************************************************
58947  
58948 C...PYHIST
58949 C...Prints and resets all histograms.
58950  
58951       SUBROUTINE PYHIST
58952  
58953 C...Double precision declaration.
58954       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58955       IMPLICIT INTEGER(I-N)
58956 C...Commonblock.
58957       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58958       SAVE /PYBINS/
58959  
58960 C...Loop over histograms, print and reset used ones.
58961       DO 100 ID=1,IHIST(1)
58962         IS=INDX(ID)
58963         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
58964           CALL PYPLOT(ID)
58965           CALL PYNULL(ID)
58966         ENDIF
58967   100 CONTINUE
58968  
58969       RETURN
58970       END
58971  
58972 C*********************************************************************
58973  
58974 C...PYPLOT
58975 C...Prints a histogram (but does not reset it).
58976  
58977       SUBROUTINE PYPLOT(ID)
58978  
58979 C...Double precision declaration.
58980       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58981       IMPLICIT INTEGER(I-N)
58982 C...Commonblocks.
58983       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58984       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
58985       SAVE /PYDAT1/,/PYBINS/
58986 C...Local arrays and character variables.
58987       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
58988       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
58989  
58990 C...Steps in histogram scale. Character sequence.
58991       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
58992       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
58993  
58994 C...Find initial address in memory; skip if empty histogram.
58995       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
58996       IS=INDX(ID)
58997       IF(IS.EQ.0) RETURN
58998       IF(NINT(BIN(IS+5)).LE.0) THEN
58999         WRITE(MSTU(11),5000) ID
59000         RETURN
59001       ENDIF
59002  
59003 C...Number of histogram lines and x bins.
59004       LIN=IHIST(3)-18
59005       NX=NINT(BIN(IS+1))
59006  
59007 C...Extract title by conversion from double precision via integer.
59008       DO 100 IT=1,20
59009         IEQ=NINT(BIN(IS+8+NX+IT))
59010         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
59011      &  //CHAR(MOD(IEQ,256))
59012   100 CONTINUE
59013  
59014 C...Find time; print title.
59015       CALL PYTIME(IDATI)
59016       IF(IDATI(1).GT.0) THEN
59017         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
59018       ELSE
59019         WRITE(MSTU(11),5200) ID, TITLE
59020       ENDIF
59021  
59022 C...Find minimum and maximum bin content.
59023       YMIN=BIN(IS+9)
59024       YMAX=BIN(IS+9)
59025       DO 110 IX=IS+10,IS+8+NX
59026         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
59027         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
59028   110 CONTINUE
59029  
59030 C...Determine scale and step size for y axis.
59031       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
59032         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
59033         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
59034         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
59035         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
59036         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
59037         DELY=DYAC(1)
59038         DO 120 IDEL=1,9
59039           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
59040   120   CONTINUE
59041         DY=DELY*10D0**IPOT
59042  
59043 C...Convert bin contents to integer form; fractional fill in top row.
59044         DO 130 IX=1,NX
59045           CTA=ABS(BIN(IS+8+IX))/DY
59046           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
59047           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
59048   130   CONTINUE
59049         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
59050         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
59051  
59052 C...Print histogram row by row.
59053         DO 150 IR=IRMA,IRMI,-1
59054           IF(IR.EQ.0) GOTO 150
59055           OUT=' '
59056           DO 140 IX=1,NX
59057             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
59058             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
59059   140     CONTINUE
59060           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
59061   150   CONTINUE
59062  
59063 C...Print sign and value of bin contents.
59064         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
59065         OUT=' '
59066         DO 160 IX=1,NX
59067           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
59068           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
59069   160   CONTINUE
59070         WRITE(MSTU(11),5400) OUT
59071         DO 180 IR=4,1,-1
59072           DO 170 IX=1,NX
59073             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
59074   170     CONTINUE
59075           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
59076   180   CONTINUE
59077  
59078 C...Print sign and value of lower bin edge.
59079         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
59080      &  10.0001D0)-10
59081         OUT=' '
59082         DO 190 IX=1,NX
59083           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
59084      &    OUT(IX:IX)=CHA(11)
59085           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
59086   190   CONTINUE
59087         WRITE(MSTU(11),5600) OUT
59088         DO 210 IR=3,1,-1
59089           DO 200 IX=1,NX
59090             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
59091   200     CONTINUE
59092           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
59093   210   CONTINUE
59094       ENDIF
59095  
59096 C...Calculate and print statistics.
59097       CSUM=0D0
59098       CXSUM=0D0
59099       CXXSUM=0D0
59100       DO 220 IX=1,NX
59101         CTA=ABS(BIN(IS+8+IX))
59102         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
59103         CSUM=CSUM+CTA
59104         CXSUM=CXSUM+CTA*X
59105         CXXSUM=CXXSUM+CTA*X**2
59106   220 CONTINUE
59107       XMEAN=CXSUM/MAX(CSUM,1D-20)
59108       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
59109       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
59110      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
59111  
59112 C...Formats for output.
59113  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
59114  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
59115      &I2,':',I2/)
59116  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
59117  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
59118  5400 FORMAT(/8X,'Contents',3X,A100)
59119  5500 FORMAT(9X,'*10**',I2,3X,A100)
59120  5600 FORMAT(/8X,'Low edge',3X,A100)
59121  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
59122      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
59123      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
59124  
59125       RETURN
59126       END
59127  
59128 C*********************************************************************
59129  
59130 C...PYNULL
59131 C...Resets bin contents of a histogram.
59132  
59133       SUBROUTINE PYNULL(ID)
59134  
59135 C...Double precision declaration.
59136       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59137       IMPLICIT INTEGER(I-N)
59138 C...Commonblock.
59139       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
59140       SAVE /PYBINS/
59141  
59142       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
59143       IS=INDX(ID)
59144       IF(IS.EQ.0) RETURN
59145       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
59146         BIN(IX)=0D0
59147   100 CONTINUE
59148  
59149       RETURN
59150       END
59151  
59152 C*********************************************************************
59153  
59154 C...PYDUMP
59155 C...Dumps histogram contents on file for reading by other program.
59156 C...Can also read back own dump.
59157  
59158       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
59159  
59160 C...Double precision declaration.
59161       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59162       IMPLICIT INTEGER(I-N)
59163 C...Commonblock.
59164       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
59165       SAVE /PYBINS/
59166 C...Local arrays and character variables.
59167       DIMENSION IHI(*),ISS(100),VAL(5)
59168       CHARACTER TITLE*60,FORMAT*13
59169  
59170 C...Dump all histograms that have been booked,
59171 C...including titles and ranges, one after the other.
59172       IF(MDUMP.EQ.1) THEN
59173  
59174 C...Loop over histograms and find which are wanted and booked.
59175         IF(NHI.LE.0) THEN
59176           NW=IHIST(1)
59177         ELSE
59178           NW=NHI
59179         ENDIF
59180         DO 130 IW=1,NW
59181           IF(NHI.EQ.0) THEN
59182             ID=IW
59183           ELSE
59184             ID=IHI(IW)
59185           ENDIF
59186           IS=INDX(ID)
59187           IF(IS.NE.0) THEN
59188  
59189 C...Write title, histogram size, filling statistics.
59190             NX=NINT(BIN(IS+1))
59191             DO 100 IT=1,20
59192               IEQ=NINT(BIN(IS+8+NX+IT))
59193               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
59194      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
59195   100       CONTINUE
59196             WRITE(LFN,5100) ID,TITLE
59197             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
59198             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
59199      &      BIN(IS+8)
59200  
59201  
59202 C...Write histogram contents, in groups of five.
59203             DO 120 IXG=1,(NX+4)/5
59204               DO 110 IXV=1,5
59205                 IX=5*IXG+IXV-5
59206                 IF(IX.LE.NX) THEN
59207                   VAL(IXV)=BIN(IS+8+IX)
59208                 ELSE
59209                   VAL(IXV)=0D0
59210                 ENDIF
59211   110         CONTINUE
59212               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
59213   120       CONTINUE
59214  
59215 C...Go to next histogram; finish.
59216           ELSEIF(NHI.GT.0) THEN
59217             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
59218           ENDIF
59219   130   CONTINUE
59220  
59221 C...Read back in histograms dumped MDUMP=1.
59222       ELSEIF(MDUMP.EQ.2) THEN
59223  
59224 C...Read histogram number, title and range, and book.
59225   140   READ(LFN,5100,END=170) ID,TITLE
59226         READ(LFN,5200) NX,XL,XU
59227         CALL PYBOOK(ID,TITLE,NX,XL,XU)
59228         IS=INDX(ID)
59229  
59230 C...Read filling statistics.
59231         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
59232         BIN(IS+5)=DBLE(NENTRY)
59233  
59234 C...Read histogram contents, in groups of five.
59235         DO 160 IXG=1,(NX+4)/5
59236           READ(LFN,5400) (VAL(IXV),IXV=1,5)
59237           DO 150 IXV=1,5
59238             IX=5*IXG+IXV-5
59239             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
59240   150     CONTINUE
59241   160   CONTINUE
59242  
59243 C...Go to next histogram; finish.
59244         GOTO 140
59245   170   CONTINUE
59246  
59247 C...Write histogram contents in column format,
59248 C...convenient e.g. for GNUPLOT input.
59249       ELSEIF(MDUMP.EQ.3) THEN
59250  
59251 C...Find addresses to wanted histograms.
59252         NSS=0
59253         IF(NHI.LE.0) THEN
59254           NW=IHIST(1)
59255         ELSE
59256           NW=NHI
59257         ENDIF
59258         DO 180 IW=1,NW
59259           IF(NHI.EQ.0) THEN
59260             ID=IW
59261           ELSE
59262             ID=IHI(IW)
59263           ENDIF
59264           IS=INDX(ID)
59265           IF(IS.NE.0.AND.NSS.LT.100) THEN
59266             NSS=NSS+1
59267             ISS(NSS)=IS
59268           ELSEIF(NSS.GE.100) THEN
59269             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
59270           ELSEIF(NHI.GT.0) THEN
59271             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
59272           ENDIF
59273   180   CONTINUE
59274  
59275 C...Check that they have common number of x bins. Fix format.
59276         NX=NINT(BIN(ISS(1)+1))
59277         DO 190 IW=2,NSS
59278           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
59279             CALL PYERRM(8,'(PYDUMP:) different number of bins')
59280             RETURN
59281           ENDIF
59282   190   CONTINUE
59283         FORMAT='(1P,000E12.4)'
59284         WRITE(FORMAT(5:7),'(I3)') NSS+1
59285  
59286 C...Write histogram contents; first column x values.
59287         DO 200 IX=1,NX
59288           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
59289           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
59290   200   CONTINUE
59291  
59292       ENDIF
59293  
59294 C...Formats for output.
59295  5100 FORMAT(I5,5X,A60)
59296  5200 FORMAT(I5,1P,2D12.4)
59297  5300 FORMAT(I12,1P,3D12.4)
59298  5400 FORMAT(1P,5D12.4)
59299  
59300       RETURN
59301       END
59302  
59303 C*********************************************************************
59304  
59305 C...PYKCUT
59306 C...Dummy routine, which the user can replace in order to make cuts on
59307 C...the kinematics on the parton level before the matrix elements are
59308 C...evaluated and the event is generated. The cross-section estimates
59309 C...will automatically take these cuts into account, so the given
59310 C...values are for the allowed phase space region only. MCUT=0 means
59311 C...that the event has passed the cuts, MCUT=1 that it has failed.
59312  
59313       SUBROUTINE PYKCUT(MCUT)
59314  
59315 C...Double precision and integer declarations.
59316       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59317       IMPLICIT INTEGER(I-N)
59318       INTEGER PYK,PYCHGE,PYCOMP
59319 C...Commonblocks.
59320       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59321       COMMON/PYINT1/MINT(400),VINT(400)
59322       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
59323       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
59324  
59325 C...Set default value (accepting event) for MCUT.
59326       MCUT=0
59327  
59328 C...Read out subprocess number.
59329       ISUB=MINT(1)
59330       ISTSB=ISET(ISUB)
59331  
59332 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
59333       TAU=VINT(21)
59334       YST=VINT(22)
59335       CTH=0D0
59336       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
59337       TAUP=0D0
59338       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
59339  
59340 C...Calculate x_1, x_2, x_F.
59341       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
59342         X1=SQRT(TAU)*EXP(YST)
59343         X2=SQRT(TAU)*EXP(-YST)
59344       ELSE
59345         X1=SQRT(TAUP)*EXP(YST)
59346         X2=SQRT(TAUP)*EXP(-YST)
59347       ENDIF
59348       XF=X1-X2
59349  
59350 C...Calculate shat, that, uhat, p_T^2.
59351       SHAT=TAU*VINT(2)
59352       SQM3=VINT(63)
59353       SQM4=VINT(64)
59354       RM3=SQM3/SHAT
59355       RM4=SQM4/SHAT
59356       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
59357       RPTS=4D0*VINT(71)**2/SHAT
59358       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
59359       RM34=2D0*RM3*RM4
59360       RSQM=1D0+RM34
59361       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
59362       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
59363       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
59364       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
59365  
59366 C...Decisions by user to be put here.
59367  
59368 C...Stop program if this routine is ever called.
59369 C...You should not copy these lines to your own routine.
59370       WRITE(MSTU(11),5000)
59371       IF(PYR(0).LT.10D0) STOP
59372  
59373 C...Format for error printout.
59374  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
59375      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59376      &1X,'Execution stopped!')
59377  
59378       RETURN
59379       END
59380  
59381 C*********************************************************************
59382  
59383 C...PYEVWT
59384 C...Dummy routine, which the user can replace in order to multiply the
59385 C...standard PYTHIA differential cross-section by a process- and
59386 C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
59387 C...to generation of weighted events, with weight 1/WTXS, while for
59388 C...MSTP(142)=2 it corresponds to a modification of the underlying
59389 C...physics.
59390  
59391       SUBROUTINE PYEVWT(WTXS)
59392  
59393 C...Double precision and integer declarations.
59394       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59395       IMPLICIT INTEGER(I-N)
59396       INTEGER PYK,PYCHGE,PYCOMP
59397 C...Commonblocks.
59398       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59399       COMMON/PYINT1/MINT(400),VINT(400)
59400       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
59401       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
59402  
59403 C...Set default weight for WTXS.
59404       WTXS=1D0
59405  
59406 C...Read out subprocess number.
59407       ISUB=MINT(1)
59408       ISTSB=ISET(ISUB)
59409  
59410 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
59411       TAU=VINT(21)
59412       YST=VINT(22)
59413       CTH=0D0
59414       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
59415       TAUP=0D0
59416       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
59417  
59418 C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
59419       X1=VINT(41)
59420       X2=VINT(42)
59421       XF=X1-X2
59422       SHAT=VINT(44)
59423       THAT=VINT(45)
59424       UHAT=VINT(46)
59425       PT2=VINT(48)
59426  
59427 C...Modifications by user to be put here.
59428  
59429 C...Stop program if this routine is ever called.
59430 C...You should not copy these lines to your own routine.
59431       WRITE(MSTU(11),5000)
59432       IF(PYR(0).LT.10D0) STOP
59433  
59434 C...Format for error printout.
59435  5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
59436      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59437      &1X,'Execution stopped!')
59438  
59439       RETURN
59440       END
59441  
59442 C*********************************************************************
59443  
59444 C...UPINIT
59445 C...Dummy routine, to be replaced by a user implementing external
59446 C...processes. Is supposed to fill the HEPRUP commonblock with info
59447 C...on incoming beams and allowed processes.
59448  
59449       SUBROUTINE UPINIT
59450  
59451 C...Double precision and integer declarations.
59452       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59453       IMPLICIT INTEGER(I-N)
59454  
59455 C...User process initialization commonblock.
59456       INTEGER MAXPUP
59457       PARAMETER (MAXPUP=100)
59458       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
59459       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
59460       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
59461      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
59462      &LPRUP(MAXPUP)
59463       SAVE /HEPRUP/
59464  
59465       RETURN
59466       END
59467  
59468 C*********************************************************************
59469  
59470 C...UPEVNT
59471 C...Dummy routine, to be replaced by a user implementing external
59472 C...processes. Depending on cross section model chosen, it either has
59473 C...to generate a process of the type IDPRUP requested, or pick a type
59474 C...itself and generate this event. The event is to be stored in the
59475 C...HEPEUP commonblock, including (often) an event weight.
59476  
59477       SUBROUTINE UPEVNT
59478  
59479 C...Double precision and integer declarations.
59480       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59481       IMPLICIT INTEGER(I-N)
59482  
59483 C...User process event common block.
59484       INTEGER MAXNUP
59485       PARAMETER (MAXNUP=500)
59486       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
59487       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
59488       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
59489      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
59490      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
59491       SAVE /HEPEUP/
59492  
59493       RETURN
59494       END
59495  
59496 C*********************************************************************
59497 C...SUGRA
59498 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
59499  
59500       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
59501        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59502       IMPLICIT INTEGER(I-N)
59503       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
59504       INTEGER IMODL
59505 C...Commonblocks.
59506       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59507       SAVE /PYDAT1/
59508  
59509 C...Stop program if this routine is ever called.
59510       WRITE(MSTU(11),5000)
59511       IF(PYR(0).LT.10D0) STOP
59512  
59513 C...Format for error printout.
59514  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
59515      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
59516      &1X,'Execution stopped!')
59517  
59518       RETURN
59519       END
59520  
59521 C*********************************************************************
59522  
59523 C...VISAJE
59524 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
59525  
59526       FUNCTION VISAJE()
59527       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59528       IMPLICIT INTEGER(I-N)
59529       CHARACTER*40 VISAJE
59530  
59531 C...Commonblocks.
59532       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59533       SAVE /PYDAT1/
59534  
59535 C...Assign default value.
59536       VISAJE='Undefined'
59537  
59538 C...Stop program if this routine is ever called.
59539       WRITE(MSTU(11),5000)
59540       IF(PYR(0).LT.10D0) STOP
59541  
59542 C...Format for error printout.
59543  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
59544      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
59545      &1X,'Execution stopped!')
59546  
59547       RETURN
59548       END
59549  
59550 C*********************************************************************
59551  
59552 C...PYTAUD
59553 C...Dummy routine, to be replaced by user, to handle the decay of a
59554 C...polarized tau lepton.
59555 C...Input:
59556 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
59557 C...IORIG is the position where the mother of the tau is stored;
59558 C...     is 0 when the mother is not stored.
59559 C...KFORIG is the flavour of the mother of the tau;
59560 C...     is 0 when the mother is not known.
59561 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
59562 C...     e.g. in B hadron semileptonic decays the W  propagator
59563 C...     is not explicitly stored but the W code is still unambiguous.
59564 C...Output:
59565 C...NDECAY is the number of decay products in the current tau decay.
59566 C...These decay products should be added to the /PYJETS/ common block,
59567 C...in positions N+1 through N+NDECAY. For each product I you must
59568 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
59569 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
59570  
59571       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
59572  
59573 C...Double precision and integer declarations.
59574       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59575       IMPLICIT INTEGER(I-N)
59576       INTEGER PYK,PYCHGE,PYCOMP
59577 C...Commonblocks.
59578       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59579       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59580       SAVE /PYJETS/,/PYDAT1/
59581  
59582 C...Stop program if this routine is ever called.
59583 C...You should not copy these lines to your own routine.
59584       NDECAY=ITAU+IORIG+KFORIG
59585       WRITE(MSTU(11),5000)
59586       IF(PYR(0).LT.10D0) STOP
59587  
59588 C...Format for error printout.
59589  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
59590      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
59591      &1X,'Execution stopped!')
59592  
59593       RETURN
59594       END
59595  
59596 C*********************************************************************
59597  
59598 C...PYTIME
59599 C...Finds current date and time.
59600 C...Since this task is not standardized in Fortran 77, the routine
59601 C...is dummy, to be replaced by the user. Examples are given for
59602 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
59603 C...you do not have access to suitable routines.
59604  
59605       SUBROUTINE PYTIME(IDATI)
59606  
59607 C...Double precision and integer declarations.
59608       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59609       IMPLICIT INTEGER(I-N)
59610       INTEGER PYK,PYCHGE,PYCOMP
59611       CHARACTER*8 ATIME
59612 C...Local array.
59613       INTEGER IDATI(6),IDTEMP(3)
59614  
59615 C...Example 0: if you do not have suitable routines.
59616       DO 100 J=1,6
59617       IDATI(J)=0
59618   100 CONTINUE
59619  
59620 C...Example 1: Fortran 90 routine.
59621 C      INTEGER IVAL(8)
59622 C      CALL DATE_AND_TIME(VALUES=IVAL)
59623 C      IDATI(1)=IVAL(1)
59624 C      IDATI(2)=IVAL(2)
59625 C      IDATI(3)=IVAL(3)
59626 C      IDATI(4)=IVAL(5)
59627 C      IDATI(5)=IVAL(6)
59628 C      IDATI(6)=IVAL(7)
59629  
59630 C...Example 2: DEC Fortran 77. AIX.
59631 C      CALL IDATE(IMON,IDAY,IYEAR)
59632 C      IDATI(1)=IYEAR
59633 C      IDATI(2)=IMON
59634 C      IDATI(3)=IDAY
59635 C      CALL ITIME(IHOUR,IMIN,ISEC)
59636 C      IDATI(4)=IHOUR
59637 C      IDATI(5)=IMIN
59638 C      IDATI(6)=ISEC
59639  
59640 C...Example 3: DEC Fortran, IRIX, IRIX64.
59641 C      CALL IDATE(IMON,IDAY,IYEAR)
59642 C      IDATI(1)=IYEAR
59643 C      IDATI(2)=IMON
59644 C      IDATI(3)=IDAY
59645 C      CALL TIME(ATIME)
59646 C      IHOUR=0
59647 C      IMIN=0
59648 C      ISEC=0
59649 C      READ(ATIME(1:2),'(I2)') IHOUR
59650 C      READ(ATIME(4:5),'(I2)') IMIN
59651 C      READ(ATIME(7:8),'(I2)') ISEC
59652 C      IDATI(4)=IHOUR
59653 C      IDATI(5)=IMIN
59654 C      IDATI(6)=ISEC
59655  
59656 C...Example 4: GNU LINUX libU77, SunOS.
59657       CALL IDATE(IDTEMP)
59658       IDATI(1)=IDTEMP(3)
59659       IDATI(2)=IDTEMP(2)
59660       IDATI(3)=IDTEMP(1)
59661       CALL ITIME(IDTEMP)
59662       IDATI(4)=IDTEMP(1)
59663       IDATI(5)=IDTEMP(2)
59664       IDATI(6)=IDTEMP(3)
59665  
59666 C...Common code to ensure right century.
59667       IDATI(1)=2000+MOD(IDATI(1),100)
59668  
59669       RETURN
59670       END