]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA6/QPYTHIA/pythia-6.4.14.f
Implement setters for weighted event generation and pyevwt
[u/mrichter/AliRoot.git] / PYTHIA6 / QPYTHIA / pythia-6.4.14.f
1 C*********************************************************************
2 C*********************************************************************
3 C*                                                                  **
4 C*                                                  November 2007   **
5 C*                                                                  **
6 C*                       The Lund Monte Carlo                       **
7 C*                                                                  **
8 C*                        PYTHIA version 6.4                        **
9 C*                                                                  **
10 C*                        Torbjorn Sjostrand                        **
11 C*               CERN/PH, CH-1211 Geneva, Switzerland               **
12 C*                    phone +41 - 22 - 767 82 27                    **
13 C*                               and                                **
14 C*                 Department of Theoretical Physics                **
15 C*                         Lund University                          **
16 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
17 C*                    E-mail torbjorn@thep.lu.se                    **
18 C*                                                                  **
19 C*                  SUSY and Technicolor parts by                   **
20 C*                         Stephen Mrenna                           **
21 C*                       Computing Division                         ** 
22 C*            Generators and Detector Simulation Group              **
23 C*              Fermi National Accelerator Laboratory               **
24 C*                 MS 234, Batavia, IL  60510, USA                  **
25 C*                   phone + 1 - 630 - 840 - 2556                   **
26 C*                      E-mail mrenna@fnal.gov                      **
27 C*                                                                  **
28 C*         New multiple interactions and more SUSY parts by         **
29 C*                          Peter Skands                            **
30 C*                  Theoretical Physics Department                  **
31 C*              Fermi National Accelerator Laboratory               **
32 C*                 MS 106, Batavia, IL  60510, USA                  **
33 C*                               and                                **
34 C*               CERN/PH, CH-1211 Geneva, Switzerland               **
35 C*                    phone +41 - 22 - 767 24 59                    **
36 C*                      E-mail skands@fnal.gov                      **
37 C*                                                                  **
38 C*         Several parts are written by Hans-Uno Bengtsson          **
39 C*          PYSHOW is written together with Mats Bengtsson          **
40 C*               PYMAEL is written by Emanuel Norrbin               **
41 C*     advanced popcorn baryon production written by Patrik Eden    **
42 C*    code for virtual photons mainly written by Christer Friberg   **
43 C*    code for low-mass strings mainly written by Emanuel Norrbin   **
44 C*        Bose-Einstein code mainly written by Leif Lonnblad        **
45 C*      CTEQ  parton distributions are by the CTEQ collaboration    **
46 C*      GRV 94 parton distributions are by Glueck, Reya and Vogt    **
47 C*   SaS photon parton distributions together with Gerhard Schuler  **
48 C*     g + g and q + qbar -> t + tbar + H code by Zoltan Kunszt     **
49 C*         MSSM Higgs mass calculation code by M. Carena,           **
50 C*           J.R. Espinosa, M. Quiros and C.E.M. Wagner             **
51 C*         PYGAUS adapted from CERN library (K.S. Kolbig)           **
52 C*        NRQCD/colour octet production of onium by S. Wolf         **
53 C*                                                                  **
54 C*   The latest program version and documentation is found on WWW   **
55 C*            http://www.thep.lu.se/~torbjorn/Pythia.html           **
56 C*                                                                  **
57 C*        Copyright Torbjorn Sjostrand, Lund (and CERN) 2007        **
58 C*                                                                  **
59 C*********************************************************************
60 C*********************************************************************
61 C                                                                    *
62 C  List of subprograms in order of appearance, with main purpose     *
63 C  (S = subroutine, F = function, B = block data)                    *
64 C                                                                    *
65 C  B   PYDATA   to contain all default values                        *
66 C  S   PYCKBD   to check that BLOCK DATA has been correctly loaded   *
67 C  S   PYTEST   to test the proper functioning of the package        *
68 C  S   PYHEPC   to convert between /PYJETS/ and /HEPEVT/ records     *
69 C                                                                    *
70 C  S   PYINIT   to administer the initialization procedure           *
71 C  S   PYEVNT   to administer the generation of an event             *
72 C  S   PYEVNW   ditto, for new multiple interactions scenario        *
73 C  S   PYSTAT   to print cross-section and other information         *
74 C  S   PYUPEV   to administer the generation of an LHA hard process  *
75 C  S   PYUPIN   to provide initialization needed for LHA input       *
76 C  S   PYLHEF   to produce a Les Houches Event File from run         *
77 C  S   PYINRE   to initialize treatment of resonances                *
78 C  S   PYINBM   to read in beam, target and frame choices            *
79 C  S   PYINKI   to initialize kinematics of incoming particles       *
80 C  S   PYINPR   to set up the selection of included processes        *
81 C  S   PYXTOT   to give total, elastic and diffractive cross-sect.   *
82 C  S   PYMAXI   to find differential cross-section maxima            *
83 C  S   PYPILE   to select multiplicity of pileup events              *
84 C  S   PYSAVE   to save alternatives for gamma-p and gamma-gamma     *
85 C  S   PYGAGA   to handle lepton -> lepton + gamma branchings        *
86 C  S   PYRAND   to select subprocess and kinematics for event        *
87 C  S   PYSCAT   to set up kinematics and colour flow of event        *
88 C  S   PYEVOL   handler for pT-ordered ISR and multiple interactions *
89 C  S   PYSSPA   to simulate initial state spacelike showers          *
90 C  S   PYPTIS   to do pT-ordered initial state spacelike showers     *
91 C  S   PYMEMX   auxiliary to PYSSPA/PYPTIS for ME correction maximum *
92 C  S   PYMEWT   auxiliary to PYSSPA/.. for matrix element correction *
93 C  S   PYPTMI   to do pT-ordered multiple interactions               *
94 C  F   PYFCMP   to give companion quark x*f distribution             *
95 C  F   PYPCMP   to calculate momentum integral for companion quarks  *
96 C  S   PYUPRE   to rearranges contents of the HEPEUP commonblock     *
97 C  S   PYADSH   to administrate sequential final-state showers       *
98 C  S   PYVETO   to allow the generation of an event to be aborted    *
99 C  S   PYRESD   to perform resonance decays                          *
100 C  S   PYMULT   to generate multiple interactions - old scheme       *
101 C  S   PYREMN   to add on target remnants - old scheme               *
102 C  S   PYMIGN   to generate multiple interactions - new scheme       *
103 C  S   PYMIHK   to connect colours in mult. int. - new scheme        *
104 C  S   PYCTTR   to translate PYTHIA colour information to LHA1 tags  *
105 C  S   PYMIHG   to collapse two pairs of LHA1 colour tags.           *
106 C  S   PYMIRM   to add on target remnants in mult. int.- new scheme  *
107 C  S   PYFSCR   to perform final state colour reconnections - -"-    *
108 C  S   PYDIFF   to set up kinematics for diffractive events          *
109 C  S   PYDISG   to set up kinematics, remnant and showers for DIS    *
110 C  S   PYDOCU   to compute cross-sections and handle documentation   *
111 C  S   PYFRAM   to perform boosts between different frames           *
112 C  S   PYWIDT   to calculate full and partial widths of resonances   *
113 C  S   PYOFSH   to calculate partial width into off-shell channels   *
114 C  S   PYRECO   to handle colour reconnection in W+W- events         *
115 C  S   PYKLIM   to calculate borders of allowed kinematical region   *
116 C  S   PYKMAP   to construct value of kinematical variable           *
117 C  S   PYSIGH   to calculate differential cross-sections             *
118 C  S   PYSGQC   auxiliary to PYSIGH for QCD processes                *
119 C  S   PYSGHF   auxiliary to PYSIGH for heavy flavour processes      *
120 C  S   PYSGWZ   auxiliary to PYSIGH for W and Z processes            *
121 C  S   PYSGHG   auxiliary to PYSIGH for Higgs processes              *
122 C  S   PYSGSU   auxiliary to PYSIGH for supersymmetry processes      *
123 C  S   PYSGTC   auxiliary to PYSIGH for technicolor processes        *
124 C  S   PYSGEX   auxiliary to PYSIGH for various exotic processes     *
125 C  S   PYPDFU   to evaluate parton distributions                     *
126 C  S   PYPDFL   to evaluate parton distributions at low x and Q^2    *
127 C  S   PYPDEL   to evaluate electron parton distributions            *
128 C  S   PYPDGA   to evaluate photon parton distributions (generic)    *
129 C  S   PYGGAM   to evaluate photon parton distributions (SaS sets)   *
130 C  S   PYGVMD   to evaluate VMD part of photon parton distributions  *
131 C  S   PYGANO   to evaluate anomalous part of photon PDFs            *
132 C  S   PYGBEH   to evaluate Bethe-Heitler part of photon PDFs        *
133 C  S   PYGDIR   to evaluate direct contribution to photon PDFs       *
134 C  S   PYPDPI   to evaluate pion parton distributions                *
135 C  S   PYPDPR   to evaluate proton parton distributions              *
136 C  F   PYCTEQ   to evaluate the CTEQ 3 proton parton distributions   *
137 C  S   PYGRVL   to evaluate the GRV 94L proton parton distributions  *
138 C  S   PYGRVM   to evaluate the GRV 94M proton parton distributions  *
139 C  S   PYGRVD   to evaluate the GRV 94D proton parton distributions  *
140 C  F   PYGRVV   auxiliary to the PYGRV* routines                     *
141 C  F   PYGRVW   auxiliary to the PYGRV* routines                     *
142 C  F   PYGRVS   auxiliary to the PYGRV* routines                     *
143 C  F   PYCT5L   to evaluate the CTEQ 5L proton parton distributions  *
144 C  F   PYCT5M   to evaluate the CTEQ 5M1 proton parton distributions *
145 C  S   PYPDPO   to evaluate old proton parton distributions          *
146 C  F   PYHFTH   to evaluate threshold factor for heavy flavour       *
147 C  S   PYSPLI   to find flavours left in hadron when one removed     *
148 C  F   PYGAMM   to evaluate ordinary Gamma function Gamma(x)         *
149 C  S   PYWAUX   to evaluate auxiliary functions W1(s) and W2(s)      *
150 C  S   PYI3AU   to evaluate auxiliary function I3(s,t,u,v)           *
151 C  F   PYSPEN   to evaluate Spence (dilogarithm) function Sp(x)      *
152 C  S   PYQQBH   to evaluate matrix element for g + g -> Q + Qbar + H *
153 C  S   PYSTBH   to evaluate matrix element for t + b + H processes   *
154 C  S   PYTBHB   auxiliary to PYSTBH                                  *
155 C  S   PYTBHG   auxiliary to PYSTBH                                  *
156 C  S   PYTBHQ   auxiliary to PYSTBH                                  *
157 C  F   PYTBHS   auxiliary to PYSTBH                                  *
158 C                                                                    *
159 C  S   PYMSIN   to initialize the supersymmetry simulation           *
160 C  S   PYSLHA   to interface to SUSY spectrum and decay calculators  *
161 C  S   PYAPPS   to determine MSSM parameters from SUGRA input        *
162 C  S   PYSUGI   to determine MSSM parameters using ISASUSY           *
163 C  S   PYFEYN   to determine MSSM Higgs parameters using FEYNHIGGS   *
164 C  F   PYRNMQ   to determine running squark masses                   *
165 C  S   PYTHRG   to calculate sfermion third-gen. mass eigenstates    *
166 C  S   PYINOM   to calculate neutralino/chargino mass eigenstates    *
167 C  F   PYRNM3   to determine running M3, gluino mass                 *
168 C  S   PYEIG4   to calculate eigenvalues and -vectors in 4*4 matrix  *
169 C  S   PYHGGM   to determine Higgs mass spectrum                     *
170 C  S   PYSUBH   to determine Higgs masses in the MSSM                *
171 C  S   PYPOLE   to determine Higgs masses in the MSSM                *
172 C  S   PYRGHM   auxiliary to PYPOLE                                  *
173 C  S   PYGFXX   auxiliary to PYRGHM                                  *
174 C  F   PYFINT   auxiliary to PYPOLE                                  *
175 C  F   PYFISB   auxiliary to PYFINT                                  *
176 C  S   PYSFDC   to calculate sfermion decay partial widths           *
177 C  S   PYGLUI   to calculate gluino decay partial widths             *
178 C  S   PYTBBN   to calculate 3-body decay of gluino to neutralino    *
179 C  S   PYTBBC   to calculate 3-body decay of gluino to chargino      *
180 C  S   PYNJDC   to calculate neutralino decay partial widths         *
181 C  S   PYCJDC   to calculate chargino decay partial widths           *
182 C  F   PYXXZ6   auxiliary for ino 3-body decays                      *
183 C  F   PYXXGA   auxiliary for ino -> ino + gamma decay               *
184 C  F   PYX2XG   auxiliary for ino -> ino + gauge boson decay         *
185 C  F   PYX2XH   auxiliary for ino -> ino + Higgs decay               *
186 C  S   PYHEXT   to calculate non-SM Higgs decay partial widths       *
187 C  F   PYH2XX   auxiliary for H -> ino + ino decay                   *
188 C  F   PYGAUS   to perform Gaussian integration                      *
189 C  F   PYGAU2   copy of PYGAUS to allow two-dimensional integration  *
190 C  F   PYSIMP   to perform Simpson integration                       *
191 C  F   PYLAMF   to evaluate the lambda kinematics function           *
192 C  S   PYTBDY   to perform 3-body decay of gauginos                  *
193 C  S   PYTECM   to calculate techni_rho/omega masses                 *
194 C  S   PYEICG   to calculate eigenvalues of a 4*4 complex matrix     *
195 C  S   PYCMQR   auxiliary to PYEICG                                  *
196 C  S   PYCMQ2   auxiliary to PYEICG                                  *
197 C  S   PYCDIV   auxiliary to PYCMQR                                  *
198 C  S   PYCSRT   auxiliary to PYCMQR                                  *
199 C  S   PYTHAG   auxiliary to PYCMQR                                  *
200 C  S   PYCBAL   auxiliary to PYEICG                                  *
201 C  S   PYCBA2   auxiliary to PYEICG                                  *
202 C  S   PYCRTH   auxiliary to PYEICG                                  *
203 C  S   PYLDCM   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
204 C  S   PYBKSB   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
205 C  S   PYWIDX   to calculate decay widths from within PYWIDT         *
206 C  S   PYRVSF   to calculate R-violating sfermion decay widths       *
207 C  S   PYRVNE   to calculate R-violating neutralino decay widths     *
208 C  S   PYRVCH   to calculate R-violating chargino decay widths       *
209 C  S   PYRVGL   to calculate R-violating gluino decay widths         *
210 C  F   PYRVSB   auxiliary to PYRVSF                                  *
211 C  S   PYRVGW   to calculate R-Violating 3-body widths               *
212 C  F   PYRVI1   auxiliary to PYRVGW, to do PS integration for res.   *
213 C  F   PYRVI2   auxiliary to PYRVGW, to do PS integration for LR-int.*
214 C  F   PYRVI3   auxiliary to PYRVGW, to do PS X integral for int.    *
215 C  F   PYRVG1   auxiliary to PYRVI1, general matrix element, res.    *
216 C  F   PYRVG2   auxiliary to PYRVI2, general matrix element, LR-int. *
217 C  F   PYRVG3   auxiliary to PYRVI3, to do PS Y integral for int.    *
218 C  F   PYRVG4   auxiliary to PYRVG3, general matrix element, int.    *
219 C  F   PYRVR    auxiliary to PYRVG1, Breit-Wigner                    *
220 C  F   PYRVS    auxiliary to PYRVG2 & PYRVG4                         *
221 C                                                                    *
222 C  S   PY1ENT   to fill one entry (= parton or particle)             *
223 C  S   PY2ENT   to fill two entries                                  *
224 C  S   PY3ENT   to fill three entries                                *
225 C  S   PY4ENT   to fill four entries                                 *
226 C  S   PY2FRM   to interface to generic two-fermion generator        *
227 C  S   PY4FRM   to interface to generic four-fermion generator       *
228 C  S   PY6FRM   to interface to generic six-fermion generator        *
229 C  S   PY4JET   to generate a shower from a given 4-parton config    *
230 C  S   PY4JTW   to evaluate the weight od a shower history for above *
231 C  S   PY4JTS   to set up the parton configuration for above         *
232 C  S   PYJOIN   to connect entries with colour flow information      *
233 C  S   PYGIVE   to fill (or query) commonblock variables             *
234 C  S   PYONOF   to allow easy control of particle decay modes        *
235 C  S   PYTUNE   to select a predefined 'tune' for min-bias and UE    *
236 C  S   PYEXEC   to administrate fragmentation and decay chain        *
237 C  S   PYPREP   to rearrange showered partons along strings          *
238 C  S   PYSTRF   to do string fragmentation of jet system             *
239 C  S   PYJURF   to find boost to string junction rest frame          *
240 C  S   PYINDF   to do independent fragmentation of one or many jets  *
241 C  S   PYDECY   to do the decay of a particle                        *
242 C  S   PYDCYK   to select parton and hadron flavours in decays       *
243 C  S   PYKFDI   to select parton and hadron flavours in fragm        *
244 C  S   PYNMES   to select number of popcorn mesons                   *
245 C  S   PYKFIN   to calculate falvour prod. ratios from input params. *
246 C  S   PYPTDI   to select transverse momenta in fragm                *
247 C  S   PYZDIS   to select longitudinal scaling variable in fragm     *
248 C  S   PYSHOW   to do m-ordered timelike parton shower evolution     *
249 C  S   PYPTFS   to do pT-ordered timelike parton shower evolution    *
250 C  F   PYMAEL   auxiliary to PYSHOW & PYPTFS: gluon emission ME's    *
251 C  S   PYBOEI   to include Bose-Einstein effects (crudely)           *
252 C  S   PYBESQ   auxiliary to PYBOEI                                  *
253 C  F   PYMASS   to give the mass of a particle or parton             *
254 C  F   PYMRUN   to give the running MSbar mass of a quark            *
255 C  S   PYNAME   to give the name of a particle or parton             *
256 C  F   PYCHGE   to give three times the electric charge              *
257 C  F   PYCOMP   to compress standard KF flavour code to internal KC  *
258 C  S   PYERRM   to write error messages and abort faulty run         *
259 C  F   PYALEM   to give the alpha_electromagnetic value              *
260 C  F   PYALPS   to give the alpha_strong value                       *
261 C  F   PYANGL   to give the angle from known x and y components      *
262 C  F   PYR      to provide a random number generator                 *
263 C  S   PYRGET   to save the state of the random number generator     *
264 C  S   PYRSET   to set the state of the random number generator      *
265 C  S   PYROBO   to rotate and/or boost an event                      *
266 C  S   PYEDIT   to remove unwanted entries from record               *
267 C  S   PYLIST   to list event record or particle data                *
268 C  S   PYLOGO   to write a logo                                      *
269 C  S   PYUPDA   to update particle data                              *
270 C  F   PYK      to provide integer-valued event information          *
271 C  F   PYP      to provide real-valued event information             *
272 C  S   PYSPHE   to perform sphericity analysis                       *
273 C  S   PYTHRU   to perform thrust analysis                           *
274 C  S   PYCLUS   to perform three-dimensional cluster analysis        *
275 C  S   PYCELL   to perform cluster analysis in (eta, phi, E_T)       *
276 C  S   PYJMAS   to give high and low jet mass of event               *
277 C  S   PYFOWO   to give Fox-Wolfram moments                          *
278 C  S   PYTABU   to analyze events, with tabular output               *
279 C                                                                    *
280 C  S   PYEEVT   to administrate the generation of an e+e- event      *
281 C  S   PYXTEE   to give the total cross-section at given CM energy   *
282 C  S   PYRADK   to generate initial state photon radiation           *
283 C  S   PYXKFL   to select flavour of primary qqbar pair              *
284 C  S   PYXJET   to select (matrix element) jet multiplicity          *
285 C  S   PYX3JT   to select kinematics of three-jet event              *
286 C  S   PYX4JT   to select kinematics of four-jet event               *
287 C  S   PYXDIF   to select angular orientation of event               *
288 C  S   PYONIA   to perform generation of onium decay to gluons       *
289 C                                                                    *
290 C  S   PYBOOK   to book a histogram                                  *
291 C  S   PYFILL   to fill an entry in a histogram                      *
292 C  S   PYFACT   to multiply histogram contents by a factor           *
293 C  S   PYOPER   to perform operations between histograms             *
294 C  S   PYHIST   to print and reset all histograms                    *
295 C  S   PYPLOT   to print a single histogram                          *
296 C  S   PYNULL   to reset contents of a single histogram              *
297 C  S   PYDUMP   to dump histogram contents onto a file               *
298 C                                                                    *
299 C  S   PYSTOP   routine to handle Fortran STOP condition             *
300 C                                                                    *
301 C  S   PYKCUT   dummy routine for user kinematical cuts              *
302 C  S   PYEVWT   dummy routine for weighting events                   *
303 C  S   UPINIT   dummy routine to initialize user processes           *
304 C  S   UPEVNT   dummy routine to generate a user process event       *
305 C  S   UPVETO   dummy routine to abort event at parton level         *
306 C  S   PDFSET   dummy routine to be removed when using PDFLIB        *
307 C  S   STRUCTM  dummy routine to be removed when using PDFLIB        *
308 C  S   STRUCTP  dummy routine to be removed when using PDFLIB        *
309 C  S   SUGRA    dummy routine to be removed when linking with ISAJET *
310 C  F   VISAJE   dummy functn. to be removed when linking with ISAJET *
311 C  S   SSMSSM   dummy routine to be removed when linking with ISAJET *
312 C  S   FHSETFLAGS  dummy routine          -"-              FEYNHIGGS *
313 C  S   FHSETPARA   dummy routine          -"-              FEYNHIGGS *
314 C  S   FHHIGGSCORR dummy routine          -"-              FEYNHIGGS *
315 C  S   PYTAUD   dummy routine for interface to tau decay libraries   *
316 C  S   PYTIME   dummy routine for giving date and time               *
317 C                                                                    *
318 C*********************************************************************
319  
320 C...PYDATA
321 C...Default values for switches and parameters,
322 C...and particle, decay and process data.
323  
324       BLOCK DATA PYDATA
325  
326 C...Double precision and integer declarations.
327       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
328       IMPLICIT INTEGER(I-N)
329       INTEGER PYK,PYCHGE,PYCOMP
330 C...Commonblocks.
331       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
332       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
333       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
334       COMMON/PYDAT4/CHAF(500,2)
335       CHARACTER CHAF*16
336       COMMON/PYDATR/MRPY(6),RRPY(100)
337       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
338       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
339       COMMON/PYINT1/MINT(400),VINT(400)
340       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
341       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
342       COMMON/PYINT4/MWID(500),WIDS(500,5)
343       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
344       COMMON/PYINT6/PROC(0:500)
345       CHARACTER PROC*28
346       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
347       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
348       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
349      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
350       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
351       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
352       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
353       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
354      &     AU(3,3),AD(3,3),AE(3,3)
355       COMMON/PYLH3C/CPRO(2),CVER(2)
356       CHARACTER CPRO*12,CVER*12
357       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/,
358      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
359      &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYTCSM/,
360      &/PYBINS/,/PYLH3P/,/PYLH3C/
361  
362 C...PYDAT1, containing status codes and most parameters.
363       DATA MSTU/
364      &   0,    0,    0, 4000,10000,  500, 8000,    0,    0,    2,
365      1   6,    0,    1,    0,    0,    1,    0,    0,    0,    0,
366      2   2,   10,    0,    0,    1,   10,    0,    0,    0,    0,
367      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
368      4   2,    2,    1,    4,    2,    1,    1,    0,    0,    0,
369      5  25,   24,    0,    1,    0,    0,    0,    0,    0,    0,
370      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
371      7  30*0,
372      1   1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
373      2   1,    5,    3,    5,    0,    0,    0,    0,    0,    0,
374      &  80*0/
375       DATA (PARU(I),I=1,100)/
376      &  3.141592653589793D0, 6.283185307179586D0,
377      &  0.197327D0, 5.06773D0, 0.389380D0, 2.56819D0,  4*0D0,
378      1  0.001D0, 0.09D0, 0.01D0, 2D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
379      2  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
380      3  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
381      4  2.0D0,  1.0D0, 0.25D0,  2.5D0, 0.05D0,
382      4  0D0,   0D0, 0.0001D0, 0D0,   0D0,
383      5  2.5D0,1.5D0,7.0D0,1.0D0,0.5D0,2.0D0,3.2D0, 0D0, 0D0, 0D0,
384      6  40*0D0/
385       DATA (PARU(I),I=101,200)/
386      &  0.00729735D0, 0.232D0, 0.007764D0, 1.0D0, 1.16639D-5,
387      &  0D0, 0D0, 0D0, 0D0,  0D0,
388      1  0.20D0, 0.25D0, 1.0D0, 4.0D0, 10D0, 0D0, 0D0,  0D0, 0D0, 0D0,
389      2 -0.693D0, -1.0D0, 0.387D0, 1.0D0, -0.08D0,
390      2 -1.0D0,  1.0D0,  1.0D0,  1.0D0,  0D0,
391      3  1.0D0,-1.0D0, 1.0D0,-1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
392      4  5.0D0, 1.0D0, 1.0D0,  0D0, 1.0D0, 1.0D0,  0D0, 0D0, 0D0, 0D0,
393      5  1.0D0,   0D0,   0D0,   0D0,   0D0,   0D0, 0D0, 0D0, 0D0, 0D0,
394      6  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
395      7  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
396      8  1.0D0, 1.0D0, 1.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
397      9  0D0,  0D0,  0D0,  0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0/
398       DATA MSTJ/
399      &  1,    3,    0,    0,    0,    0,    0,    0,    0,    0,
400      1  4,    2,    0,    1,    0,    2,    2,   20,    0,    0,
401      2  2,    1,    1,    2,    1,    2,    2,    0,    0,    0,
402      3  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
403      4  2,    2,    4,    2,    5,    3,    3,    0,    0,    3,
404      5  0,    3,    0,    2,    0,    0,    1,    0,    0,    0,
405      6  40*0,
406      &  5,    2,    7,    5,    1,    1,    0,    2,    0,    2,
407      1  0,    0,    0,    0,    1,    1,    0,    0,    0,    0,
408      2  80*0/
409       DATA PARJ/
410      &  0.10D0, 0.30D0, 0.40D0, 0.05D0, 0.50D0,
411      &  0.50D0, 0.50D0,   0.6D0,   1.2D0,   0.6D0,
412      1  0.50D0,0.60D0,0.75D0, 0D0, 0D0, 0D0, 0D0, 1.0D0, 1.0D0, 0D0,
413      2  0.36D0, 1.0D0,0.01D0, 2.0D0,1.0D0,0.4D0, 0D0, 0D0, 0D0, 0D0,
414      3  0.10D0, 1.0D0, 0.8D0, 1.5D0,0D0,2.0D0,0.2D0, 0D0,0.08D0,1D0,
415      4  0.3D0, 0.58D0, 0.5D0, 0.9D0,0.5D0,1.0D0,1.0D0,1.5D0,1D0,10D0,
416      5  0.77D0, 0.77D0, 0.77D0, -0.05D0, -0.005D0,
417      5  0D0, 0D0, 0D0, 1.0D0, 0D0,
418      6  4.5D0, 0.7D0, 0D0,0.003D0, 0.5D0, 0.5D0, 0D0, 0D0, 0D0, 0D0,
419      7  10D0, 1000D0, 100D0, 1000D0, 0D0, 0.7D0,10D0, 0D0,0D0,0.5D0,
420      8  0.29D0, 1.0D0, 1.0D0,  0D0,  10D0, 10D0, 0D0, 0D0, 0D0,1D-4,
421      9  0.02D0, 1.0D0, 0.2D0,  0D0,  0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
422      &  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
423      1  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
424      2  1.0D0, 0.25D0,91.187D0,2.489D0, 0.01D0,
425      2  2.0D0,  1.0D0, 0.25D0,0.002D0,   0D0,
426      3  0D0, 0D0, 0D0, 0D0, 0.01D0, 0.99D0, 0D0, 0D0,  0.2D0,   0D0,
427      4  10*0D0,
428      5  10*0D0,
429      6  10*0D0,
430      7  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, -0.693D0,
431      8 -1.0D0, 0.387D0, 1.0D0, -0.08D0, -1.0D0,
432      8  1.0D0,  1.0D0, -0.693D0, -1.0D0, 0.387D0,
433      9  1.0D0, -0.08D0, -1.0D0,   1.0D0, 1.0D0,
434      9  5*0D0/
435  
436 C...PYDAT2, with particle data and flavour treatment parameters.
437       DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0,   
438      &-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,  
439      &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,  
440      &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,   
441      &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,    
442      &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,  
443      &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,  
444      &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,  
445      &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,  
446      &7*0,3,131*0/                                                      
447       DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,20*0,1,107*0,-1,0,2*-1,   
448      &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,   
449      &-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, 
450      &6*1,9*0,2,3*0,2,0,5*2,2*1,17*0,6*2,133*0/                         
451       DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,3*0,   
452      &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, 
453      &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, 
454      &1,2*0,1,0,12*1,0,1,3*0,1,8*0,4*1,5*0,3*1,0,1,3*0,2*1,7*0,1,131*0/ 
455       DATA (KCHG(I,4),I=   1, 290)/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 
456      &16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,   
457      &37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,   
458      &58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,   
459      &79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,   
460      &100,110,111,113,115,130,211,213,215,221,223,225,310,311,313,315,  
461      &321,323,325,331,333,335,411,413,415,421,423,425,431,433,435,441,  
462      &443,445,511,513,515,521,523,525,531,533,535,541,543,545,551,553,  
463      &555,990,1103,1114,2101,2103,2112,2114,2203,2212,2214,2224,3101,   
464      &3103,3112,3114,3122,3201,3203,3212,3214,3222,3224,3303,3312,3314, 
465      &3322,3324,3334,4101,4103,4112,4114,4122,4132,4201,4203,4212,4214, 
466      &4222,4224,4232,4301,4303,4312,4314,4322,4324,4332,4334,4403,4412, 
467      &4414,4422,4424,4432,4434,4444,5101,5103,5112,5114,5122,5132,5142, 
468      &5201,5203,5212,5214,5222,5224,5232,5242,5301,5303,5312,5314,5322, 
469      &5324,5332,5334,5342,5401,5403,5412,5414,5422,5424,5432,5434,5442, 
470      &5444,5503,5512,5514,5522,5524,5532,5534,5542,5544,5554,10111,     
471      &10113,10211,10213,10221,10223,10311,10313,10321,10323,10331,      
472      &10333,10411,10413,10421,10423,10431,10433,10441,10443,10511,      
473      &10513,10521,10523,10531,10533,10541,10543,10551,10553,20113,      
474      &20213,20223,20313,20323,20333,20413,20423,20433,20443,20513/      
475       DATA (KCHG(I,4),I= 291, 500)/20523,20533,20543,20553,100443,      
476      &100553,1000001,1000002,1000003,1000004,1000005,1000006,1000011,   
477      &1000012,1000013,1000014,1000015,1000016,1000021,1000022,1000023,  
478      &1000024,1000025,1000035,1000037,1000039,2000001,2000002,2000003,  
479      &2000004,2000005,2000006,2000011,2000012,2000013,2000014,2000015,  
480      &2000016,3000111,3000211,3000221,3000331,3000113,3000213,3000223,  
481      &3100021,3100111,3200111,3100113,3200113,3300113,3400113,4000001,  
482      &4000002,4000011,4000012,5000039,9900012,9900014,9900016,9900023,  
483      &9900024,9900041,9900042,9900110,9900210,9900220,9900330,9900440,  
484      &9902110,9902210,9900443,9900441,9910441,9900553,9900551,9910551,  
485      &3000115,3000215,131*0/                                            
486       DATA (PMAS(I,1),I=   1, 217)/2*0.33D0,0.5D0,1.5D0,4.8D0,175D0,    
487      &2*400D0,2*0D0,0.00051D0,0D0,0.10566D0,0D0,1.777D0,0D0,400D0,      
488      &5*0D0,91.188D0,80.45D0,115D0,6*0D0,500D0,900D0,500D0,3*300D0,     
489      &3*0D0,5000D0,200D0,40*0D0,1D0,2D0,5D0,16*0D0,0.13498D0,0.7685D0,  
490      &1.318D0,0.49767D0,0.13957D0,0.7669D0,1.318D0,0.54745D0,0.78194D0, 
491      &1.275D0,2*0.49767D0,0.8961D0,1.432D0,0.4936D0,0.8916D0,1.425D0,   
492      &0.95777D0,1.0194D0,1.525D0,1.8693D0,2.01D0,2.46D0,1.8645D0,       
493      &2.0067D0,2.46D0,1.9685D0,2.1124D0,2.5735D0,2.9798D0,3.09688D0,    
494      &3.5562D0,5.2792D0,5.3248D0,5.83D0,5.2789D0,5.3248D0,5.83D0,       
495      &5.3693D0,5.4163D0,6.07D0,6.594D0,6.602D0,7.35D0,9.4D0,9.4603D0,   
496      &9.9132D0,0D0,0.77133D0,1.234D0,0.57933D0,0.77133D0,0.93957D0,     
497      &1.233D0,0.77133D0,0.93827D0,1.232D0,1.231D0,0.80473D0,0.92953D0,  
498      &1.19744D0,1.3872D0,1.11568D0,0.80473D0,0.92953D0,1.19255D0,       
499      &1.3837D0,1.18937D0,1.3828D0,1.09361D0,1.3213D0,1.535D0,1.3149D0,  
500      &1.5318D0,1.67245D0,1.96908D0,2.00808D0,2.4521D0,2.5D0,2.2849D0,   
501      &2.4703D0,1.96908D0,2.00808D0,2.4535D0,2.5D0,2.4529D0,2.5D0,       
502      &2.4656D0,2.15432D0,2.17967D0,2.55D0,2.63D0,2.55D0,2.63D0,2.704D0, 
503      &2.8D0,3.27531D0,3.59798D0,3.65648D0,3.59798D0,3.65648D0,          
504      &3.78663D0,3.82466D0,4.91594D0,5.38897D0,5.40145D0,5.8D0,5.81D0,   
505      &5.641D0,5.84D0,7.00575D0,5.38897D0,5.40145D0,5.8D0,5.81D0,5.8D0/  
506       DATA (PMAS(I,1),I= 218, 500)/5.81D0,5.84D0,7.00575D0,5.56725D0,   
507      &5.57536D0,5.96D0,5.97D0,5.96D0,5.97D0,6.12D0,6.13D0,7.19099D0,    
508      &6.67143D0,6.67397D0,7.03724D0,7.0485D0,7.03724D0,7.0485D0,        
509      &7.21101D0,7.219D0,8.30945D0,8.31325D0,10.07354D0,10.42272D0,      
510      &10.44144D0,10.42272D0,10.44144D0,10.60209D0,10.61426D0,           
511      &11.70767D0,11.71147D0,15.11061D0,0.9835D0,1.231D0,0.9835D0,       
512      &1.231D0,1D0,1.17D0,1.429D0,1.29D0,1.429D0,1.29D0,2*1.4D0,2.272D0, 
513      &2.424D0,2.272D0,2.424D0,2.5D0,2.536D0,3.4151D0,3.46D0,5.68D0,     
514      &5.73D0,5.68D0,5.73D0,5.92D0,5.97D0,7.25D0,7.3D0,9.8598D0,9.875D0, 
515      &2*1.23D0,1.282D0,2*1.402D0,1.427D0,2*2.372D0,2.56D0,3.5106D0,     
516      &2*5.78D0,6.02D0,7.3D0,9.8919D0,3.686D0,10.0233D0,32*500D0,        
517      &3*110D0,350D0,3*210D0,500D0,125D0,250D0,400D0,2*350D0,300D0,      
518      &4*400D0,1000D0,3*500D0,1200D0,750D0,2*200D0,7*0D0,3*3.1D0,        
519      &3*9.5D0,2*250D0,131*0D0/                                          
520       DATA (PMAS(I,2),I=   1, 500)/5*0D0,1.39816D0,16*0D0,2.47813D0,    
521      &2.07115D0,0.00367D0,6*0D0,14.54029D0,0D0,16.66099D0,8.38842D0,    
522      &3.3752D0,4.17669D0,3*0D0,417.29147D0,0.39162D0,60*0D0,0.151D0,   
523      &0.107D0,2*0D0,0.149D0,0.107D0,0D0,0.00843D0,0.185D0,2*0D0,        
524      &0.0505D0,0.109D0,0D0,0.0498D0,0.098D0,0.0002D0,0.00443D0,0.076D0, 
525      &2*0D0,0.023D0,2*0D0,0.023D0,2*0D0,0.015D0,0.0013D0,0D0,0.002D0,   
526      &2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,5*0D0,0.12D0, 
527      &3*0D0,0.12D0,2*0D0,2*0.12D0,3*0D0,0.0394D0,4*0D0,0.036D0,0D0,     
528      &0.0358D0,2*0D0,0.0099D0,0D0,0.0091D0,74*0D0,0.06D0,0.142D0,       
529      &0.06D0,0.142D0,0D0,0.36D0,0.287D0,0.09D0,0.287D0,0.09D0,0.25D0,   
530      &0.08D0,0.05D0,0.02D0,0.05D0,0.02D0,0.05D0,0D0,0.014D0,0.01D0,     
531      &8*0.05D0,0D0,0.01D0,2*0.4D0,0.025D0,2*0.174D0,0.053D0,3*0.05D0,   
532      &0.0009D0,4*0.05D0,3*0D0,19*1D0,0D0,7*1D0,0D0,1D0,0D0,1D0,0D0,     
533      &0.0208D0,0.01195D0,0.03705D0,0.09511D0,1.89978D0,1.60746D0,       
534      &0.13396D0,200.47294D0,0.02296D0,0.18886D0,94.66794D0,6.08718D0,   
535      &0D0,2.17482D0,2.59359D0,2.59687D0,0.42896D0,0.41912D0,0.14153D0,  
536      &2*0.00098D0,0.00097D0,26.7245D0,21.74916D0,0.88159D0,0.88001D0,   
537      &7*0D0,6*0.01D0,0.25499D0,0.28446D0,131*0D0/                       
538       DATA (PMAS(I,3),I=   1, 500)/5*0D0,13.98156D0,16*0D0,24.78129D0,  
539      &20.71149D0,0.03669D0,6*0D0,145.40294D0,0D0,166.60993D0,           
540      &83.88423D0,33.75195D0,41.76694D0,3*0D0,4172.91467D0,3.91621D0,    
541      &60*0D0,0.4D0,0.25D0,2*0D0,0.4D0,0.25D0,0D0,0.1D0,0.17D0,2*0D0,    
542      &0.2D0,0.12D0,0D0,0.2D0,0.12D0,0.002D0,0.015D0,0.2D0,2*0D0,0.12D0, 
543      &2*0D0,0.12D0,2*0D0,0.05D0,0.005D0,0D0,0.01D0,2*0D0,0.05D0,2*0D0,  
544      &0.05D0,2*0D0,0.05D0,2*0D0,0.05D0,5*0D0,0.14D0,3*0D0,0.14D0,2*0D0, 
545      &2*0.14D0,3*0D0,0.04D0,4*0D0,0.035D0,0D0,0.035D0,2*0D0,0.05D0,0D0, 
546      &0.05D0,74*0D0,0.05D0,0.25D0,0.05D0,0.25D0,0D0,0.2D0,0.4D0,        
547      &0.005D0,0.4D0,0.01D0,0.35D0,0.001D0,0.1D0,0.08D0,0.1D0,0.08D0,    
548      &0.1D0,0D0,0.05D0,0.02D0,6*0.1D0,0.05D0,0.1D0,0D0,0.02D0,2*0.3D0,  
549      &0.05D0,2*0.3D0,0.02D0,2*0.1D0,0.03D0,0.001D0,4*0.1D0,3*0D0,       
550      &19*10D0,0.00001D0,7*10D0,0.00001D0,10D0,0.00001D0,10D0,0.00001D0, 
551      &0.20797D0,0.11949D0,0.37048D0,0.95114D0,18.99785D0,16.07463D0,    
552      &1.33964D0,450D0,0.22959D0,1.88863D0,360D0,60.8718D0,0D0,          
553      &21.74824D0,25.93594D0,25.96873D0,4.28961D0,4.19124D0,1.41528D0,   
554      &0.00977D0,0.00976D0,0.00973D0,267.24501D0,217.49162D0,8.81592D0,  
555      &8.80013D0,13*0D0,2.54987D0,2.84456D0,131*0D0/                     
556       DATA (PMAS(I,4),I=   1, 500)/12*0D0,658654D0,0D0,0.0872D0,68*0D0, 
557      &0.1D0,0.387D0,16*0D0,0.00003D0,2*0D0,15500D0,7804.5D0,5*0D0,      
558      &26.762D0,3*0D0,3709D0,5*0D0,0.317D0,2*0D0,0.1244D0,2*0D0,0.14D0,  
559      &5*0D0,0.468D0,2*0D0,0.462D0,2*0D0,0.483D0,2*0D0,0.15D0,18*0D0,    
560      &44.34D0,0D0,78.88D0,4*0D0,23.96D0,2*0D0,49.1D0,0D0,87.1D0,0D0,    
561      &24.6D0,4*0D0,0.0618D0,0.029D0,6*0D0,0.106D0,6*0D0,0.019D0,2*0D0,  
562      &7*0.1D0,4*0D0,0.342D0,2*0.387D0,6*0D0,2*0.387D0,6*0D0,0.387D0,    
563      &0D0,0.387D0,2*0D0,8*0.387D0,0D0,9*0.387D0,120*0D0,131*0D0/        
564
565       DATA PARF/
566      &  0.5D0,0.25D0, 0.5D0,0.25D0, 1D0, 0.5D0,  0D0,  0D0,  0D0, 0D0,
567      1  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
568      2  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
569      3  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
570      4  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
571      5  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
572      6  0.75D0, 0.5D0, 0D0,0.1667D0,0.0833D0,0.1667D0,0D0,0D0,0D0, 0D0,
573      7  0D0,  0D0,  1D0,0.3333D0,0.6667D0,0.3333D0,0D0,0D0,0D0, 0D0,
574      8  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
575      9  0.0099D0, 0.0056D0, 0.199D0, 1.23D0, 4.17D0, 165D0,  4*0D0,
576      & 0.325D0,0.325D0,0.5D0,1.6D0, 5.0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
577      1 0D0,0.11D0,0.16D0,0.048D0,0.50D0,0.45D0,0.55D0,0.60D0,0D0,0D0,
578      2 0.2D0, 0.1D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
579      3 60*0D0,
580      4 0.2D0,  0.5D0,  8*0D0,
581      5 1800*0D0/
582       DATA ((VCKM(I,J),J=1,4),I=1,4)/
583      &  0.95113D0,  0.04884D0,  0.00003D0,  0.00000D0,
584      &  0.04884D0,  0.94940D0,  0.00176D0,  0.00000D0,
585      &  0.00003D0,  0.00176D0,  0.99821D0,  0.00000D0,
586      &  0.00000D0,  0.00000D0,  0.00000D0,  1.00000D0/
587  
588 C...PYDAT3, with particle decay parameters and data.
589       DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,   
590      &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, 
591      &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,  
592      &6*1,2*0,7*1,2*0,8*1,0,75*1,0,7*1,0,1,0,1,0,26*1,7*0,8*1,131*0/    
593       DATA (MDCY(I,2),I=   1, 351)/1,9,17,25,33,41,56,66,2*0,76,80,82,  
594      &87,89,143,145,150,2*0,153,162,174,190,210,6*0,289,0,311,334,420,  
595      &503,3*0,530,539,40*0,540,541,545,16*0,554,556,561,570,579,581,    
596      &583,590,598,604,613,615,617,620,630,636,639,650,656,667,673,736,  
597      &739,747,808,810,818,851,853,857,858,861,863,899,900,908,944,945,  
598      &953,992,993,997,1028,1029,1033,1034,1043,2*0,1045,3*0,1046,2*0,   
599      &1049,1052,2*0,1053,1055,1058,2*0,1062,1063,1066,1069,0,1072,1077, 
600      &1079,1082,1084,2*0,1088,1089,1090,1166,2*0,1170,1171,1172,1173,   
601      &1174,2*0,1178,1179,1181,1182,1184,1188,0,1189,1193,1197,1201,     
602      &1205,1209,1213,2*0,1217,1218,1219,1236,1245,2*0,1254,1255,1256,   
603      &1257,1258,1267,2*0,1276,1277,1278,1279,1280,1289,1290,2*0,1299,   
604      &1308,1317,1326,1335,1344,1353,1362,0,1371,1380,1389,1398,1407,    
605      &1416,1425,1434,1443,1452,1453,1454,1455,1456,1461,1464,1466,1471, 
606      &1473,1478,1485,1489,1491,1493,1495,1497,1499,1501,1503,1504,1506, 
607      &1508,1510,1512,1514,1516,1518,1520,1522,1523,1525,1527,1541,1543, 
608      &1545,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1578,1592, 
609      &1637,1661,1706,1730,1775,1802,1833,1859,1891,1917,1949,1975,2162, 
610      &2331,2595,2826,3106,3402,0,3657,3706,3734,3783,3811,3860,3888,0,  
611      &3924,0,3960,0,3996,4004,4012,4020,4217,4243,4270,4023,4029,4036,  
612      &4043,4050,4056,4062,4071,4075,4079,4082,4084,4104,4126,4148,4170/ 
613       DATA (MDCY(I,2),I= 352, 500)/4185,4197,4204,7*0,4211,4212,4213,   
614      &4214,4215,4216,4296,4322,131*0/                                   
615       DATA (MDCY(I,3),I=   1, 500)/5*8,15,2*10,2*0,4,2,5,2,54,2,5,3,    
616      &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, 
617      &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,  
618      &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,  
619      &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, 
620      &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, 
621      &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,   
622      &45,27,31,26,32,26,32,26,187,169,264,231,280,296,255,0,49,28,49,   
623      &28,49,28,36,0,36,0,36,0,3*8,3,26,27,26,6,3*7,2*6,9,2*4,3,2,20,    
624      &3*22,15,12,2*7,7*0,6*1,26,30,131*0/                               
625       DATA (MDME(I,1),I=   1,8000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1,  
626      &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,  
627      &2*-1,3*1,-1,6*1,2*-1,6*1,2*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,-1,6*1,  
628      &2*-1,3*1,-1,5*1,62*1,6*1,2*-1,6*1,8*-1,3*1,-1,3*1,-1,3*1,5*-1,   
629      &3*1,4*-1,6*1,2*-1,3*1,-1,12*1,62*1,6*1,2*-1,3*1,-1,9*1,62*1,    
630      &3*1,-1,3*1,-1,1,18*1,4*1,2*-1,2*1,-1,1249*1,2*-1,377*1,2*-1,     
631      &1921*1,2*-1,6*1,2*-1,133*1,2*-1,6*1,2*-1,10*1,-1,3*1,-1,3*1,5*-1, 
632      &3*1,-1,16*1,2*-1,6*1,2*-1,16*1,2*-1,6*1,2*-1,13*1,-1,3*1,-1,3*1,  
633      &5*-1,3*1,-1,3649*0/                                               
634       DATA (MDME(I,2),I=   1,8000)/43*102,4*0,102,0,6*53,3*102,4*0,102, 
635      &2*0,3*102,4*0,102,2*0,6*102,42,6*102,2*42,2*0,8*41,2*0,36*41,     
636      &8*102,0,102,0,102,2*0,21*102,8*32,8*0,16*32,4*0,8*32,9*0,62*53,   
637      &8*32,14*0,16*32,7*0,8*32,16*0,62*53,8*32,13*0,62*53,4*32,5*0,     
638      &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,    
639      &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,  
640      &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,     
641      &14*42,16*0,48,3*13,2*42,9*0,14*42,16*0,48,3*13,2*42,9*0,14*42,    
642      &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,   
643      &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,    
644      &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, 
645      &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, 
646      &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,   
647      &3*0,6*32,3*0,4*32,3*0,50*32,3*53,12*0,8*32,12*0,66*51,6*32,9*0,   
648      &9*32,17*0,6*51,10*0,8*32,15*0,16*32,14*0,8*32,18*0,8*32,18*0,     
649      &16*32,3653*0/                                                     
650       DATA (BRAT(I)  ,I=   1, 348)/43*0D0,0.00003D0,0.001765D0,         
651      &0.998205D0,35*0D0,1D0,6*0D0,0.1783D0,0.1735D0,0.1131D0,0.2494D0,  
652      &0.003D0,0.09D0,0.0027D0,0.01D0,0.0014D0,0.0012D0,2*0.00025D0,     
653      &0.0071D0,0.012D0,0.0004D0,0.00075D0,0.00006D0,2*0.00078D0,        
654      &0.0034D0,0.08D0,0.011D0,0.0191D0,0.00006D0,0.005D0,0.0133D0,      
655      &0.0067D0,0.0005D0,0.0035D0,0.0006D0,0.0015D0,0.00021D0,0.0002D0,  
656      &0.00075D0,0.0001D0,0.0002D0,0.0011D0,3*0.0002D0,0.00022D0,        
657      &0.0004D0,0.0001D0,2*0.00205D0,2*0.00069D0,0.00025D0,0.00051D0,    
658      &0.00025D0,35*0D0,0.153995D0,0.11942D0,0.153984D0,0.119259D0,      
659      &0.152272D0,3*0D0,0.033576D0,0.066806D0,0.033576D0,0.066806D0,     
660      &0.0335D0,0.066806D0,2*0D0,0.321369D0,0.016494D0,2*0D0,0.016502D0, 
661      &0.320615D0,2*0D0,0.00001D0,0.000591D0,6*0D0,2*0.108166D0,         
662      &0.108087D0,0D0,0.000001D0,0D0,0.000353D0,0.04359D0,0.795274D0,    
663      &4*0D0,0.000339D0,0.095746D0,0D0,0.060724D0,0.003054D0,0.000919D0, 
664      &64*0D0,0.145835D0,0.113276D0,0.145835D0,0.113271D0,0.145781D0,    
665      &0.049002D0,2*0D0,0.032025D0,0.063642D0,0.032025D0,0.063642D0,     
666      &0.032022D0,0.063642D0,8*0D0,0.251225D0,0.0129D0,0.000006D0,0D0,   
667      &0.0129D0,0.250764D0,0.00038D0,0D0,0.000008D0,0.000465D0,          
668      &0.215418D0,5*0D0,2*0.085312D0,0.08531D0,7*0D0,0.000029D0,         
669      &0.000536D0,5*0D0,0.000074D0,0D0,0.000417D0,0.000015D0,0.000061D0/ 
670       DATA (BRAT(I)  ,I= 349, 655)/0.306789D0,0.689189D0,0D0,0.00289D0, 
671      &69*0D0,0.000001D0,0.000072D0,0.001333D0,4*0D0,0.000001D0,         
672      &0.000184D0,0D0,0.003108D0,0.000015D0,0.000003D0,2*0D0,0.995284D0, 
673      &66*0D0,0.000014D0,0.082234D0,2*0D0,0.000013D0,0.003746D0,0D0,     
674      &0.913992D0,18*0D0,3*0.215119D0,0.214724D0,2*0D0,0.06996D0,        
675      &0.069959D0,0D0,2*1D0,2*0.08D0,0.76D0,0.08D0,2*0.105D0,0.04D0,     
676      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,0.988D0,0.012D0,       
677      &0.998739D0,0.00079D0,0.00038D0,0.000046D0,0.000045D0,2*0.34725D0, 
678      &0.144D0,0.104D0,0.0245D0,2*0.01225D0,0.0028D0,0.0057D0,0.2112D0,  
679      &0.1256D0,2*0.1939D0,2*0.1359D0,0.002D0,0.001D0,0.0006D0,          
680      &0.999877D0,0.000123D0,0.99955D0,0.00045D0,2*0.34725D0,0.144D0,    
681      &0.104D0,0.049D0,0.0028D0,0.0057D0,0.3923D0,0.321D0,0.2317D0,      
682      &0.0478D0,0.0049D0,0.0013D0,0.0003D0,0.0007D0,0.89D0,0.08693D0,    
683      &0.0221D0,0.00083D0,2*0.00007D0,0.564D0,0.282D0,0.072D0,0.028D0,   
684      &0.023D0,2*0.0115D0,0.005D0,0.003D0,0.6861D0,0.3139D0,2*0.5D0,     
685      &0.665D0,0.333D0,0.002D0,0.333D0,0.166D0,0.168D0,0.084D0,0.087D0,  
686      &0.043D0,0.059D0,2*0.029D0,0.002D0,0.6352D0,0.2116D0,0.0559D0,     
687      &0.0173D0,0.0482D0,0.0318D0,0.666D0,0.333D0,0.001D0,0.332D0,       
688      &0.166D0,0.168D0,0.084D0,0.086D0,0.043D0,0.059D0,2*0.029D0,        
689      &2*0.002D0,0.437D0,0.208D0,0.302D0,0.0302D0,0.0212D0,0.0016D0/     
690       DATA (BRAT(I)  ,I= 656, 831)/0.48947D0,0.34D0,3*0.043D0,0.027D0,  
691      &0.0126D0,0.0013D0,0.0003D0,0.00025D0,0.00008D0,0.444D0,2*0.222D0, 
692      &0.104D0,2*0.004D0,0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,   
693      &0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,0.026D0,0.019D0,     
694      &0.066D0,0.041D0,0.045D0,0.076D0,0.0073D0,2*0.0047D0,0.026D0,      
695      &0.001D0,0.0006D0,0.0066D0,0.005D0,2*0.003D0,2*0.0006D0,2*0.001D0, 
696      &0.006D0,0.005D0,0.012D0,0.0057D0,0.067D0,0.008D0,0.0022D0,        
697      &0.027D0,0.004D0,0.019D0,0.012D0,0.002D0,0.009D0,0.0218D0,0.001D0, 
698      &0.022D0,0.087D0,0.001D0,0.0019D0,0.0015D0,0.0028D0,0.683D0,       
699      &0.306D0,0.011D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,  
700      &0.04D0,0.034D0,0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.034D0,     
701      &0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.0365D0,0.045D0,0.073D0,   
702      &0.062D0,3*0.021D0,0.0061D0,0.015D0,0.025D0,0.0088D0,0.074D0,      
703      &0.0109D0,0.0041D0,0.002D0,0.0035D0,0.0011D0,0.001D0,0.0027D0,     
704      &2*0.0016D0,0.0018D0,0.011D0,0.0063D0,0.0052D0,0.018D0,0.016D0,    
705      &0.0034D0,0.0036D0,0.0009D0,0.0006D0,0.015D0,0.0923D0,0.018D0,     
706      &0.022D0,0.0077D0,0.009D0,0.0075D0,0.024D0,0.0085D0,0.067D0,       
707      &0.0511D0,0.017D0,0.0004D0,0.0028D0,0.619D0,0.381D0,0.3D0,0.15D0,  
708      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.01D0,2*0.02D0,0.03D0, 
709      &2*0.005D0,2*0.02D0,0.03D0,2*0.005D0,0.015D0,0.037D0,0.028D0/      
710       DATA (BRAT(I)  ,I= 832, 997)/0.079D0,0.095D0,0.052D0,0.0078D0,    
711      &4*0.001D0,0.028D0,0.033D0,0.026D0,0.05D0,0.01D0,4*0.005D0,0.25D0, 
712      &0.0952D0,0.94D0,0.06D0,2*0.4D0,2*0.1D0,1D0,0.0602D0,0.0601D0,     
713      &0.8797D0,0.135D0,0.865D0,0.02D0,0.055D0,2*0.005D0,0.008D0,        
714      &0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,   
715      &0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,       
716      &0.0185D0,0.0135D0,0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,    
717      &0.0019D0,0.0025D0,0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,  
718      &1D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,       
719      &0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,          
720      &2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,         
721      &0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,0.0185D0,0.0135D0,      
722      &0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,0.0019D0,0.0025D0,    
723      &0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,1D0,0.3D0,0.15D0,   
724      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.02D0,0.055D0,         
725      &2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,       
726      &0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0, 
727      &0.018D0,0.015D0,0.0185D0,0.0135D0,0.025D0,2*0.0002D0,0.0007D0,    
728      &2*0.0004D0,0.0014D0,0.001D0,0.0009D0,0.0025D0,0.4291D0,0.08D0,    
729      &0.07D0,0.02D0,0.015D0,0.005D0,1D0,2*0.3D0,2*0.2D0,0.047D0/        
730       DATA (BRAT(I)  ,I= 998,1188)/0.122D0,0.006D0,0.012D0,0.035D0,     
731      &0.012D0,0.035D0,0.003D0,0.007D0,0.15D0,0.037D0,0.008D0,0.002D0,   
732      &0.05D0,0.015D0,0.003D0,0.001D0,0.014D0,0.042D0,0.014D0,0.042D0,   
733      &0.24D0,0.065D0,0.012D0,0.003D0,0.001D0,0.002D0,0.001D0,0.002D0,   
734      &0.014D0,0.003D0,1D0,2*0.3D0,2*0.2D0,1D0,0.0252D0,0.0248D0,        
735      &0.0267D0,0.015D0,0.045D0,0.015D0,0.045D0,0.7743D0,0.029D0,0.22D0, 
736      &0.78D0,1D0,0.331D0,0.663D0,0.006D0,0.663D0,0.331D0,0.006D0,1D0,   
737      &0.999D0,0.001D0,0.88D0,2*0.06D0,0.639D0,0.358D0,0.002D0,0.001D0,  
738      &1D0,0.88D0,2*0.06D0,0.516D0,0.483D0,0.001D0,0.88D0,2*0.06D0,      
739      &0.9988D0,0.0001D0,0.0006D0,0.0004D0,0.0001D0,0.667D0,0.333D0,     
740      &0.9954D0,0.0011D0,0.0035D0,0.333D0,0.667D0,0.676D0,0.234D0,       
741      &0.085D0,0.005D0,2*1D0,0.018D0,2*0.005D0,0.003D0,0.002D0,          
742      &2*0.006D0,0.018D0,2*0.005D0,0.003D0,0.002D0,2*0.006D0,0.0066D0,   
743      &0.025D0,0.016D0,0.0088D0,2*0.005D0,0.0058D0,0.005D0,0.0055D0,     
744      &4*0.004D0,2*0.002D0,2*0.004D0,0.003D0,0.002D0,2*0.003D0,          
745      &3*0.002D0,2*0.001D0,0.002D0,2*0.001D0,2*0.002D0,0.0013D0,         
746      &0.0018D0,5*0.001D0,4*0.003D0,2*0.005D0,2*0.002D0,2*0.001D0,       
747      &2*0.002D0,2*0.001D0,0.2432D0,0.057D0,2*0.035D0,0.15D0,2*0.075D0,  
748      &0.03D0,2*0.015D0,2*0.08D0,0.76D0,0.08D0,4*1D0,2*0.08D0,0.76D0,    
749      &0.08D0,1D0,2*0.5D0,1D0,2*0.5D0,2*0.08D0,0.76D0,0.08D0,1D0/        
750       DATA (BRAT(I)  ,I=1189,1381)/2*0.08D0,0.76D0,3*0.08D0,0.76D0,     
751      &3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,  
752      &3*0.08D0,0.76D0,0.08D0,2*1D0,2*0.105D0,0.04D0,0.0077D0,0.02D0,    
753      &0.0235D0,0.0285D0,0.0435D0,0.0011D0,0.0022D0,0.0044D0,0.4291D0,   
754      &0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
755      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
756      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,0.04D0,      
757      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,      
758      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,       
759      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,1D0,2*0.105D0,  
760      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
761      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
762      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
763      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
764      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
765      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
766      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
767      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
768      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
769      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0/      
770       DATA (BRAT(I)  ,I=1382,1582)/0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,   
771      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
772      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
773      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
774      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
775      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
776      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
777      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
778      &0.015D0,0.005D0,4*1D0,0.52D0,0.26D0,0.11D0,2*0.055D0,0.333D0,     
779      &0.334D0,0.333D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,    
780      &0.11D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,0.11D0,      
781      &0.36D0,0.18D0,0.03D0,2*0.015D0,2*0.2D0,4*0.25D0,0.667D0,0.333D0,  
782      &0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.007D0,  
783      &0.993D0,1D0,0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,      
784      &0.667D0,0.333D0,8*0.5D0,0.02D0,0.98D0,1D0,4*0.5D0,3*0.146D0,      
785      &3*0.05D0,0.15D0,2*0.05D0,4*0.024D0,0.066D0,0.667D0,0.333D0,       
786      &0.667D0,0.333D0,4*0.25D0,0.667D0,0.333D0,0.667D0,0.333D0,2*0.5D0, 
787      &0.273D0,0.727D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.35D0,   
788      &0.65D0,2*0.0083D0,0.1866D0,0.324D0,0.184D0,0.027D0,0.001D0,       
789      &0.093D0,0.087D0,0.078D0,0.0028D0,3*0.014D0,0.008D0,0.024D0/       
790       DATA (BRAT(I)  ,I=1583,4150)/0.008D0,0.024D0,0.425D0,0.02D0,      
791      &0.185D0,0.088D0,0.043D0,0.067D0,0.066D0,2404*0D0,0.024396D0,      
792      &0.045285D0,0.83119D0,2*0D0,0.000349D0,0.09878D0,0D0,0.019884D0,   
793      &0.02341D0,0.362776D0,0.550787D0,2*0D0,0.000152D0,0.042991D0,      
794      &0.013695D0,0.025421D0,0.466595D0,2*0D0,0.000196D0,0.055451D0,     
795      &0.438642D0,0.445781D0,0D0,0.554219D0,4*0.00335D0,0.522257D0,      
796      &0.464343D0,6*0D0,1D0,6*0D0,1D0,4*0.013853D0,0.562703D0,           
797      &0.376702D0,0.00518D0,4*0.006254D0,0.974985D0,7*0D0,4*0.148299D0,  
798      &0.015351D0,0D0,0.182109D0,0.167099D0,0.042247D0,0.850973D0,       
799      &0.005411D0,0.045025D0,0.098591D0,0.849898D0,0.021617D0,           
800      &0.030018D0,0.098466D0,0.294448D0,0.10945D0,0.596102D0,0.389906D0, 
801      &0.610094D0,3*0.0633D0,0.063299D0,0.063295D0,0.056281D0,2*0D0,     
802      &6*0.020495D0,2*0D0,0.327919D0,0.04099D0,0.045236D0,0.090112D0,    
803      &0.19874D0,0.010204D0,0.000003D0,0.010205D0,0.198356D0,0.000151D0, 
804      &0.000006D0,0.000367D0,0.081967D0,0.19874D0,0.010204D0,0.000003D0, 
805      &0.010205D0,0.198356D0,0.000151D0,0.000006D0,0.000367D0,           
806      &0.081967D0,4*0D0,0.198776D0,0.010206D0,0.000003D0,0.010207D0,     
807      &0.19839D0,0.000151D0,0.000006D0,0.000367D0,0.081893D0,0.198776D0, 
808      &0.010206D0,0.000003D0,0.010207D0,0.19839D0,0.000151D0,0.000006D0, 
809      &0.000367D0,0.081893D0,4*0D0,0.199344D0,0.010234D0,0.000003D0/     
810       DATA (BRAT(I)  ,I=4151,4281)/0.010236D0,0.198928D0,0.000149D0,    
811      &0.000006D0,0.000368D0,0.080733D0,0.199344D0,0.010234D0,           
812      &0.000003D0,0.010236D0,0.198928D0,0.000149D0,0.000006D0,           
813      &0.000368D0,0.080733D0,4*0D0,0.184738D0,0.104588D0,0.184738D0,     
814      &0.104587D0,0.184731D0,0.09582D0,0.022902D0,0.008429D0,0.015602D0, 
815      &0.022902D0,0.008429D0,0.015602D0,0.022902D0,0.008429D0,           
816      &0.015602D0,0.28959D0,0.01487D0,0.000008D0,0.01487D0,0.289061D0,   
817      &0.000492D0,0.000009D0,0.000536D0,0.27911D0,2*0.037151D0,          
818      &0.03715D0,0.090266D0,2*0.001805D0,0.090266D0,0.001805D0,          
819      &0.812263D0,0.00179D0,0.090428D0,0.001809D0,0.001808D0,0.090428D0, 
820      &0.001808D0,0.81372D0,0D0,6*1D0,0.095602D0,2*0.338272D0,           
821      &0.156896D0,0.019193D0,0.017993D0,0.001168D0,0.001462D0,           
822      &0.009608D0,0.003306D0,0.002132D0,0.003127D0,0.002132D0,           
823      &0.003127D0,0.00213D0,3*0D0,0.001411D0,0.00045D0,0.001411D0,       
824      &0.00045D0,0.001411D0,0.00045D0,2*0D0,0.097996D0,0.399787D0,       
825      &0.262464D0,0.185427D0,0.022683D0,0.007648D0,0.004259D0,           
826      &0.005925D0,0.000304D0,2*0D0,0.000304D0,0.005914D0,0.000002D0,     
827      &2*0D0,0.000011D0,0.001258D0,5*0D0,3*0.002005D0,0D0,0.272178D0,    
828      &0.022112D0,0.255165D0,0.015534D0,2*0.108965D0,0.031557D0,         
829      &0.005562D0,0.044965D0,0.004674D0,0.007637D0,0.020597D0/           
830       DATA (BRAT(I)  ,I=4282,8000)/0.007636D0,0.020595D0,0.007616D0,    
831      &3*0D0,0.017298D0,0.004782D0,0.017298D0,0.004782D0,0.017297D0,     
832      &0.004782D0,2*0D0,0.055332D0,2*0.319757D0,0.121576D0,2*0.001556D0, 
833      &4*0D0,0.0277D0,0.021481D0,0.027699D0,0.021477D0,0.027658D0,3*0D0, 
834      &0.006071D0,0.01208D0,0.006071D0,0.01208D0,0.006069D0,0.01208D0,   
835      &2*0D0,0.035891D0,0.209476D0,0.129084D0,0.286631D0,0.10742D0,      
836      &0.109486D0,4*0D0,0.035282D0,0.001812D0,2*0D0,0.001812D0,          
837      &0.035215D0,0.000021D0,0D0,0.000001D0,0.000065D0,0.011965D0,5*0D0, 
838      &2*0.011947D0,0.011946D0,0D0,3649*0D0/                             
839       DATA (KFDP(I,1),I=   1, 377)/21,22,23,4*-24,25,21,22,23,4*24,25,  
840      &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23,    
841      &4*24,25,37,1000022,1000023,1000025,1000035,1000021,1000039,21,22, 
842      &23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23,-24,25,23,24,-12,   
843      &22,23,-24,25,23,24,-12,-14,48*16,22,23,-24,25,23,24,22,23,-24,25, 
844      &-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,  
845      &3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1,4*-3,4*-5,4*-7,-11,-13,  
846      &-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,1000022,        
847      &2*1000023,3*1000025,4*1000035,2*1000024,2*1000037,1000001,        
848      &2000001,1000001,-1000001,1000002,2000002,1000002,-1000002,        
849      &1000003,2000003,1000003,-1000003,1000004,2000004,1000004,         
850      &-1000004,1000005,2000005,1000005,-1000005,1000006,2000006,        
851      &1000006,-1000006,1000011,2000011,1000011,-1000011,1000012,        
852      &2000012,1000012,-1000012,1000013,2000013,1000013,-1000013,        
853      &1000014,2000014,1000014,-1000014,1000015,2000015,1000015,         
854      &-1000015,1000016,2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,12,  
855      &13,14,15,16,17,18,24,37,2*23,25,35,4*-1,4*-3,4*-5,4*-7,-11,-13,   
856      &-15,-17,3*24,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,23,25,24,  
857      &37,23,25,36,1000022,2*1000023,3*1000025,4*1000035,2*1000024,      
858      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002/       
859       DATA (KFDP(I,1),I= 378, 580)/1000002,-1000002,1000003,2000003,    
860      &1000003,-1000003,1000004,2000004,1000004,-1000004,1000005,        
861      &2000005,1000005,-1000005,1000006,2000006,1000006,-1000006,        
862      &1000011,2000011,1000011,-1000011,1000012,2000012,1000012,         
863      &-1000012,1000013,2000013,1000013,-1000013,1000014,2000014,        
864      &1000014,-1000014,1000015,2000015,1000015,-1000015,1000016,        
865      &2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,  
866      &24,23,25,24,37,1000022,2*1000023,3*1000025,4*1000035,2*1000024,   
867      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002,       
868      &1000002,-1000002,1000003,2000003,1000003,-1000003,1000004,        
869      &2000004,1000004,-1000004,1000005,2000005,1000005,-1000005,        
870      &1000006,2000006,1000006,-1000006,1000011,2000011,1000011,         
871      &-1000011,1000012,2000012,1000012,-1000012,1000013,2000013,        
872      &1000013,-1000013,1000014,2000014,1000014,-1000014,1000015,        
873      &2000015,1000015,-1000015,1000016,2000016,1000016,-1000016,-1,-3,  
874      &-5,-7,-11,-13,-15,-17,24,2*1000022,2*1000023,2*1000025,2*1000035, 
875      &1000006,2000006,1000006,2000006,-1000001,-1000003,-1000011,       
876      &-1000013,-1000015,-2000015,1,2,3,4,5,6,11,13,15,2,82,-11,-13,2*2, 
877      &-12,-14,-16,2*-2,2*-4,-2,-4,2*22,211,111,221,13,11,213,-213,221,  
878      &223,321,130,310,111,331,111,211,-12,12,-14,14,211,111,22,-13,-11/ 
879       DATA (KFDP(I,1),I= 581, 992)/2*211,213,113,221,223,321,211,331,   
880      &22,111,211,2*22,211,22,111,211,22,211,221,111,11,211,111,2*211,   
881      &321,130,310,221,111,211,111,130,310,321,2*311,321,311,323,313,    
882      &323,313,321,3*311,-13,3*211,12,14,311,2*321,311,321,313,323,313,  
883      &323,311,4*321,211,111,3*22,111,321,130,-213,113,213,211,22,111,   
884      &11,13,211,321,130,310,221,211,111,11*-11,11*-13,-311,-313,-311,   
885      &-313,-20313,2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,  
886      &2*333,-311,-313,2*-321,211,-311,-321,333,-311,-313,-321,211,      
887      &2*-321,2*-311,-321,211,113,421,2*411,421,411,423,413,423,413,421, 
888      &411,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311,-313,2*-311, 
889      &-321,-10323,-321,-323,-321,-311,2*-313,211,111,333,3*-321,-311,   
890      &-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211,-321,3*-311, 
891      &211,113,321,2*421,411,421,413,423,413,423,411,421,-15,5*-11,      
892      &5*-13,221,331,333,221,331,333,10221,211,213,211,213,321,323,321,  
893      &323,2212,221,331,333,221,2*2,2*431,421,411,423,413,82,11,13,82,   
894      &443,82,6*12,6*14,2*16,3*-411,3*-413,2*-411,2*-413,2*441,2*443,    
895      &2*20443,2*2,2*4,2,4,511,521,511,523,513,523,513,521,511,6*12,     
896      &6*14,2*16,3*-421,3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,    
897      &2*4,2,4,521,511,521,513,523,513,523,511,521,6*12,6*14,2*16,       
898      &3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4,531/  
899       DATA (KFDP(I,1),I= 993,1402)/521,511,523,513,16,2*4,2*12,2*14,    
900      &2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13,2*-1,541,511,521,  
901      &513,523,21,11,13,15,1,2,3,4,21,22,553,21,2112,2212,2*2112,2212,   
902      &2112,2*2212,2112,-12,3122,3212,3112,2212,2*2112,-12,2*3122,3222,  
903      &3112,2212,2112,2212,3122,3222,3212,3122,3112,-12,-14,-12,3322,    
904      &3312,2*3122,3212,3322,3312,3122,3322,3312,-12,2*4122,7*-11,7*-13, 
905      &2*2224,2*2212,2*2214,2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,   
906      &3324,2*2224,7*2212,5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,     
907      &2*3222,2*3224,4*2,3,2*2,1,2*2,-11,-13,2*2,4*4122,-11,-13,2*2,     
908      &3*4132,3*4232,-11,-13,2*2,4332,-11,-13,2*2,-11,-13,2*2,-11,-13,   
909      &2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,2*5122,-12,   
910      &-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,    
911      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,4*5122,-12,-14,-16,2*-2,   
912      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,2*5132,2*5232,-12,-14,-16, 
913      &2*-2,2*-4,-2,-4,5332,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,     
914      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,     
915      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,  
916      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
917      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,  
918      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2/     
919       DATA (KFDP(I,1),I=1403,1713)/2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2, 
920      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
921      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,221,223,221,  
922      &223,211,111,321,130,310,213,113,-213,321,311,321,311,323,313,     
923      &2*311,321,311,321,313,323,321,211,111,321,130,310,2*211,313,-313, 
924      &323,-323,421,411,423,413,411,421,413,423,411,421,423,413,443,     
925      &2*82,521,511,523,513,511,521,513,523,521,511,523,513,511,521,513, 
926      &523,553,2*21,213,-213,113,213,10211,10111,-10211,2*221,213,2*113, 
927      &-213,2*321,2*311,113,323,2*313,323,313,-313,323,-323,423,2*413,   
928      &2*423,413,443,82,523,2*513,2*523,2*513,523,553,21,11,13,82,4*443, 
929      &10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553,10551,20553,555, 
930      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
931      &1000002,2000002,1000002,2000002,1000021,3*-12,3*-14,3*-16,12,11,  
932      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
933      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000001,  
934      &2000001,1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,        
935      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
936      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
937      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
938      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000003/  
939       DATA (KFDP(I,1),I=1714,1984)/2000003,1000003,2000003,1000021,     
940      &3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,-1000037,1000022,      
941      &1000023,1000025,1000035,1000006,2000006,1000006,2000006,1000021,  
942      &3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,14,13,16,15,16,   
943      &15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,1000022,1000023,  
944      &1000025,1000035,1000005,2000005,1000005,2000005,1000021,1000022,  
945      &1000016,-1000015,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,      
946      &-1000037,1000022,1000023,1000025,1000035,1000012,2000012,1000012, 
947      &2*12,2*14,2*16,3*-14,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
948      &1000037,1000022,1000023,1000025,1000035,1000011,2000011,1000011,  
949      &2000011,3*-13,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
950      &1000022,1000023,1000025,1000035,1000014,2000014,1000014,2000014,  
951      &2*12,2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
952      &1000037,1000022,1000023,1000025,1000035,1000013,2000013,1000013,  
953      &2000013,3*-11,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
954      &1000022,1000023,1000025,1000035,1000016,2000016,1000016,2000016,  
955      &2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,1000039,1000024,        
956      &1000037,1000022,1000023,1000025,1000035,1000015,2000015,1000015,  
957      &2000015,3*-11,3*-13,3*-1,3*-3,3*-5,1000039,1000001,-1000001,      
958      &2000001,-2000001,1000002,-1000002,2000002,-2000002,1000003/       
959       DATA (KFDP(I,1),I=1985,2321)/-1000003,2000003,-2000003,1000004,   
960      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
961      &1000006,-1000006,2000006,-2000006,6*1000022,6*1000023,6*1000025,  
962      &6*1000035,1000024,-1000024,1000024,-1000024,1000024,-1000024,     
963      &1000037,-1000037,1000037,-1000037,1000037,-1000037,-12,12,-11,11, 
964      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,   
965      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,   
966      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,   
967      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,   
968      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,   
969      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,  
970      &-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039,4,1,-12,12,-12,12,-12,12, 
971      &-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,14,-14,14,-14,14,   
972      &-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,12,-11,11,-12,12,   
973      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,   
974      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,-14,14,   
975      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,   
976      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,-16,16,   
977      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,   
978      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,-4,4,-4/ 
979       DATA (KFDP(I,1),I=2322,2573)/4,-4,4,-6,6,-6,6,-6,6,5*1000039,     
980      &16*1000022,1000024,-1000024,1000024,-1000024,1000024,-1000024,    
981      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000037,       
982      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037,      
983      &1000037,-1000037,1000037,-1000037,1000024,-1000024,1000037,       
984      &-1000037,1000001,-1000001,2000001,-2000001,1000002,-1000002,      
985      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
986      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
987      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
988      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
989      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
990      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
991      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
992      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
993      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
994      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
995      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
996      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
997      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
998      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16/   
999       DATA (KFDP(I,1),I=2574,2892)/16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,  
1000      &-4,4,-6,6,-6,6,-6,6,2*1000039,6*1000022,6*1000023,6*1000025,      
1001      &6*1000035,1000022,1000023,1000025,1000035,1000002,2000002,        
1002      &-1000001,-2000001,1000004,2000004,-1000003,-2000003,1000006,      
1003      &2000006,-1000005,-2000005,1000012,2000012,-1000011,-2000011,      
1004      &1000014,2000014,-1000013,-2000013,1000016,2000016,-1000015,       
1005      &-2000015,2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,   
1006      &-12,12,-11,-12,12,-11,-14,-13,-14,-13,-14,-13,-14,14,-13,-14,14,  
1007      &-13,-14,14,-13,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,   
1008      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12, 
1009      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-14,2*-13,14, 
1010      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14, 
1011      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16,2*-15,16,-16,2*-15,16, 
1012      &-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16, 
1013      &-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1,2,-1,3*2,-1,2*4,-3,    
1014      &3*4,-3,2*6,5*1000039,16*1000022,16*1000023,1000024,-1000024,      
1015      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000024,       
1016      &-1000024,1000024,-1000024,1000037,-1000037,1000037,-1000037,      
1017      &1000037,-1000037,1000037,-1000037,1000037,-1000037,1000037,       
1018      &-1000037,1000024,-1000024,1000037,-1000037,1000001,-1000001/      
1019       DATA (KFDP(I,1),I=2893,3182)/2000001,-2000001,1000002,-1000002,   
1020      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
1021      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
1022      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
1023      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
1024      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
1025      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
1026      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
1027      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
1028      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
1029      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
1030      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
1031      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
1032      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
1033      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,   
1034      &16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039, 
1035      &16*1000022,16*1000023,16*1000025,1000024,-1000024,1000024,        
1036      &-1000024,1000024,-1000024,1000024,-1000024,1000024,-1000024,      
1037      &1000024,-1000024,1000037,-1000037,1000037,-1000037,1000037,       
1038      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037/      
1039       DATA (KFDP(I,1),I=3183,3459)/1000024,-1000024,1000037,-1000037,   
1040      &1000001,-1000001,2000001,-2000001,1000002,-1000002,2000002,       
1041      &-2000002,1000003,-1000003,2000003,-2000003,1000004,-1000004,      
1042      &2000004,-2000004,1000005,-1000005,2000005,-2000005,1000006,       
1043      &-1000006,2000006,-2000006,1000011,-1000011,2000011,-2000011,      
1044      &1000012,-1000012,2000012,-2000012,1000013,-1000013,2000013,       
1045      &-2000013,1000014,-1000014,2000014,-2000014,1000015,-1000015,      
1046      &2000015,-2000015,1000016,-1000016,2000016,-2000016,5*1000021,-12, 
1047      &12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,   
1048      &14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,   
1049      &12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
1050      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,   
1051      &14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
1052      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,   
1053      &16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
1054      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,  
1055      &-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,2*1000039,15*1000024,     
1056      &6*1000022,6*1000023,6*1000025,6*1000035,1000022,1000023,1000025,  
1057      &1000035,1000002,2000002,-1000001,-2000001,1000004,2000004,        
1058      &-1000003,-2000003,1000006,2000006,-1000005,-2000005,1000012/      
1059       DATA (KFDP(I,1),I=3460,3782)/2000012,-1000011,-2000011,1000014,   
1060      &2000014,-1000013,-2000013,1000016,2000016,-1000015,-2000015,      
1061      &2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11, 
1062      &-12,12,-11,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,    
1063      &-13,-14,14,-13,-16,16,-15,-16,16,-15,-16,16,-15,-16,16,-15,-16,   
1064      &16,-15,-16,16,-15,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,     
1065      &2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12, 
1066      &2*-11,12,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14, 
1067      &2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16, 
1068      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16, 
1069      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1, 
1070      &2,-1,3*2,-1,2*4,-3,3*4,-3,2*6,1000039,-1000024,-1000037,1000022,  
1071      &1000023,1000025,1000035,4*1000001,1000002,2000002,1000002,        
1072      &2000002,1000021,3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,  
1073      &14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,   
1074      &1000022,1000023,1000025,1000035,4*1000002,1000001,2000001,        
1075      &1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,        
1076      &-1000024,-1000037,1000022,1000023,1000025,1000035,4*1000003,      
1077      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
1078      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6/   
1079       DATA (KFDP(I,1),I=3783,4156)/1000039,1000024,1000037,1000022,     
1080      &1000023,1000025,1000035,4*1000004,1000003,2000003,1000003,        
1081      &2000003,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,       
1082      &-1000037,1000022,1000023,1000025,1000035,4*1000005,1000006,       
1083      &2000006,1000006,2000006,1000021,3*-12,3*-14,3*-16,12,11,12,11,12, 
1084      &11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,    
1085      &1000024,1000037,1000022,1000023,1000025,1000035,4*1000006,        
1086      &1000005,2000005,1000005,2000005,1000021,3*-11,3*-13,3*-15,2*-1,   
1087      &-3,1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,     
1088      &4*1000011,1000012,2000012,1000012,2000012,2*12,2*14,2*16,3*-14,   
1089      &3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,1000022,1000023,   
1090      &1000025,1000035,4*1000013,1000014,2000014,1000014,2000014,2*12,   
1091      &2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,   
1092      &1000022,1000023,1000025,1000035,4*1000015,1000016,2000016,        
1093      &1000016,2000016,2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,3,4,5,  
1094      &6,11,13,15,21,2*4,2,4,24,-11,-13,-15,3,4,5,6,11,13,15,21,5,6,21,  
1095      &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, 
1096      &5,6,1,2,3,4,5,6,1,2,3,4,5,6,21,3100111,3200111,21,22,23,-24,21,   
1097      &22,23,24,22,23,-24,23,24,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18, 
1098      &21,22,23,24,9*11,9*-11,2*11,2*-11,9*13,9*-13,2*13,2*-13,9*15/     
1099       DATA (KFDP(I,1),I=4157,8000)/9*-15,2*15,2*-15,1,2,3,4,5,6,11,12,  
1100      &9900012,13,14,9900014,15,16,9900016,3*-1,3*-3,3*-5,-11,-13,-15,   
1101      &3*-11,2*-13,-15,24,3*-11,2*-13,-15,9900024,3*443,3*553,2*24,      
1102      &2*3000211,2*22,2*23,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,   
1103      &18,2*24,3*3000211,2*24,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,22,23, 
1104      &22,23,24,3000211,24,3000211,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15, 
1105      &16,17,18,2*24,-24,23,2*22,24,-24,2*23,1,2,3,4,5,6,7,8,11,12,13,   
1106      &14,15,16,17,18,2*22,23,2*24,23,22,2*24,23,4*-1,4*-3,4*-5,4*-7,    
1107      &-11,-13,-15,-17,3649*0/                                           
1108       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, 
1109      &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,  
1110      &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, 
1111      &13,11,13,-211,-213,-211,-213,-211,-213,-211,-213,2*-211,-321,     
1112      &-323,-321,2*-323,3*-321,4*-211,-213,-211,-213,-211,-213,-211,     
1113      &-213,-211,-213,3*-211,-213,4*-211,-323,-321,2*-211,2*-321,3*-211, 
1114      &2*15,16,15,16,15,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
1115      &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8,  
1116      &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,  
1117      &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,   
1118      &-24,2*1000022,1000023,1000022,1000023,1000025,1000022,1000023,    
1119      &1000025,1000035,-1000024,-1000037,-1000024,-1000037,-1000001,     
1120      &2*-2000001,2000001,-1000002,2*-2000002,2000002,-1000003,          
1121      &2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005,          
1122      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
1123      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
1124      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
1125      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
1126      &-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24,-37,22,25,2*36,2,4,6,8, 
1127      &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/   
1128       DATA (KFDP(I,2),I= 340, 533)/-7,-8,-11,-13,-15,-17,21,22,2*23,    
1129      &-24,2*25,-37,-24,3*36,2*1000022,1000023,1000022,1000023,1000025,  
1130      &1000022,1000023,1000025,1000035,-1000024,-1000037,-1000024,       
1131      &-1000037,-1000001,2*-2000001,2000001,-1000002,2*-2000002,2000002, 
1132      &-1000003,2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005, 
1133      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
1134      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
1135      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
1136      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
1137      &-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25,-37,-24,2*1000022,      
1138      &1000023,1000022,1000023,1000025,1000022,1000023,1000025,1000035,  
1139      &-1000024,-1000037,-1000024,-1000037,-1000001,2*-2000001,2000001,  
1140      &-1000002,2*-2000002,2000002,-1000003,2*-2000003,2000003,-1000004, 
1141      &2*-2000004,2000004,-1000005,2*-2000005,2000005,-1000006,          
1142      &2*-2000006,2000006,-1000011,2*-2000011,2000011,-1000012,          
1143      &2*-2000012,2000012,-1000013,2*-2000013,2000013,-1000014,          
1144      &2*-2000014,2000014,-1000015,2*-2000015,2000015,-1000016,          
1145      &2*-2000016,2000016,2,4,6,8,12,14,16,18,25,1000024,1000037,        
1146      &1000024,1000037,1000024,1000037,1000024,1000037,2*-1000005,       
1147      &2*-2000005,1000002,1000004,1000012,1000014,2*1000016,-3,-4,-5,-6/ 
1148       DATA (KFDP(I,2),I= 534, 938)/-7,-8,-13,-15,-17,11,-82,12,14,-1,   
1149      &-3,11,13,15,1,4,3,4,1,3,22,11,-211,2*22,-13,-11,-211,211,111,211, 
1150      &-321,130,310,22,2*111,-211,11,-11,13,-13,-211,111,22,14,12,111,   
1151      &22,111,3*211,-311,22,211,22,111,-211,211,11,-211,13,22,-211,111,  
1152      &-211,22,111,-11,-211,111,2*-211,-321,130,310,221,111,-211,111,    
1153      &2*0,-211,111,22,-211,111,-211,111,-211,211,-213,113,223,221,14,   
1154      &111,211,111,-11,-13,211,111,22,211,111,211,111,2*211,213,113,223, 
1155      &221,22,-211,111,113,223,22,111,-321,310,211,111,2*-211,221,22,    
1156      &-11,-13,-211,-321,130,310,221,-211,111,11*12,11*14,2*211,2*213,   
1157      &211,20213,2*321,2*323,211,213,211,213,211,213,211,213,211,213,    
1158      &211,213,3*211,213,211,2*321,8*211,2*113,3*211,111,22,211,111,211, 
1159      &111,4*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,    
1160      &211,2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310, 
1161      &211,-211,4*211,321,4*211,113,2*211,-321,111,22,-211,111,-211,111, 
1162      &-211,211,-211,211,16,5*12,5*14,3*211,3*213,211,2*111,2*113,       
1163      &2*-311,2*-313,-2112,3*321,323,2*-1,22,111,321,311,321,311,-82,    
1164      &-11,-13,-82,22,-82,6*-11,6*-13,2*-15,211,213,20213,211,213,20213, 
1165      &431,433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,22,     
1166      &-211,111,-211,111,-211,211,-211,211,6*-11,6*-13,2*-15,211,213,    
1167      &20213,211,213,20213,431,433,431,433,321,323,321,323,321,323,-1/   
1168       DATA (KFDP(I,2),I= 939,1352)/-4,-3,-4,-1,-3,22,211,111,211,111,   
1169      &4*211,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,  
1170      &433,221,331,333,221,331,333,221,331,333,-1,-4,-3,-4,-1,-3,22,     
1171      &-321,-311,-321,-311,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3,-4,-3,   
1172      &-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,411,421,411,421,21,   
1173      &-11,-13,-15,-1,-2,-3,-4,2*21,22,21,2*-211,111,22,111,211,22,211,  
1174      &-211,11,2*-211,111,-211,111,22,11,22,111,-211,211,111,211,22,211, 
1175      &111,211,-211,22,11,13,11,-211,2*111,2*22,111,211,-321,-211,111,   
1176      &11,2*-211,7*12,7*14,-321,-323,-311,-313,-311,-313,211,213,211,    
1177      &213,211,213,111,221,331,113,223,111,221,113,223,321,323,321,-211, 
1178      &-213,111,221,331,113,223,333,10221,111,221,331,113,223,211,213,   
1179      &211,213,321,323,321,323,321,323,311,313,311,313,2*-1,-3,-1,2203,  
1180      &3201,3203,2203,2101,2103,12,14,-1,-3,2*111,2*211,12,14,-1,-3,22,  
1181      &111,2*22,111,22,12,14,-1,-3,22,12,14,-1,-3,12,14,-1,-3,12,14,-1,  
1182      &-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,2*-211,11,13,  
1183      &15,-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,11,13,15,1,4,3,  
1184      &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,   
1185      &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,  
1186      &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, 
1187      &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/ 
1188       DATA (KFDP(I,2),I=1353,1815)/11,13,15,1,4,3,4,1,3,11,13,15,1,4,3, 
1189      &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, 
1190      &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, 
1191      &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, 
1192      &2*111,2*211,-211,111,-321,130,310,-211,111,211,-211,111,-213,113, 
1193      &-211,111,223,211,111,213,113,211,111,223,-211,111,-321,130,310,   
1194      &2*-211,-311,311,-321,321,211,111,211,111,-211,111,-211,111,311,   
1195      &2*321,311,22,2*-82,-211,111,-211,111,211,111,211,111,-321,-311,   
1196      &-321,-311,411,421,411,421,22,2*21,-211,2*211,111,-211,111,2*211,  
1197      &111,-211,211,111,211,-321,2*-311,-321,22,-211,111,211,111,-311,   
1198      &311,-321,321,211,111,-211,111,321,311,22,-82,-211,111,211,111,    
1199      &-321,-311,411,421,22,21,-11,-13,-82,211,111,221,111,4*22,-11,-13, 
1200      &-15,-1,-2,-3,-4,2*21,211,111,3*22,1,2*2,4*1,2*-24,2*-37,2*1,3,5,  
1201      &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,   
1202      &-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,     
1203      &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,  
1204      &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, 
1205      &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, 
1206      &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,  
1207      &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/  
1208       DATA (KFDP(I,2),I=1816,2317)/11,13,11,13,15,11,13,15,1,3,5,1,3,5, 
1209      &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, 
1210      &13,2*14,4*13,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3, 
1211      &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, 
1212      &5,1,3,5,15,2*16,4*15,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,   
1213      &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, 
1214      &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,  
1215      &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, 
1216      &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, 
1217      &-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, 
1218      &-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, 
1219      &-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, 
1220      &-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, 
1221      &-3,3,-1,1,-1,1,-3,3,22,23,25,35,36,-1,-3,-13,13,-13,13,-13,13,    
1222      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
1223      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
1224      &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, 
1225      &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, 
1226      &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, 
1227      &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/ 
1228       DATA (KFDP(I,2),I=2318,2770)/3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,22,  
1229      &23,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,-24,24,11, 
1230      &-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,-15,1,-1,3,   
1231      &-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,-4,4,-5,5,-5, 
1232      &5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13,13,-14,14,-14, 
1233      &14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,    
1234      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
1235      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
1236      &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, 
1237      &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, 
1238      &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, 
1239      &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, 
1240      &3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,24,37,24,-11,-13,-15,-1,-3,24,    
1241      &-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,4*37, 
1242      &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,   
1243      &-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,16,2*-15,16,-15,     
1244      &6*-11,-15,16,2*-15,16,2*-15,16,-15,6*-11,6*-13,-1,-2,-1,2,-1,-2,  
1245      &-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,   
1246      &-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,   
1247      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1/  
1248       DATA (KFDP(I,2),I=2771,3221)/2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,  
1249      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1, 
1250      &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,  
1251      &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, 
1252      &25,35,36,-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,  
1253      &-13,15,-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3, 
1254      &-4,4,-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13, 
1255      &-13,13,-14,14,-14,14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,   
1256      &13,-13,13,-13,13,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,   
1257      &15,-15,15,-15,15,-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,  
1258      &-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, 
1259      &-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, 
1260      &-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, 
1261      &-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, 
1262      &-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, 
1263      &22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,  
1264      &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, 
1265      &-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,    
1266      &-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,   
1267      &-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13/  
1268       DATA (KFDP(I,2),I=3222,3669)/13,-14,14,-14,14,-15,15,-15,15,-16,  
1269      &16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,-15,15,-15,15,-15,15,    
1270      &-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,   
1271      &-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,  
1272      &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, 
1273      &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, 
1274      &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, 
1275      &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, 
1276      &1,-1,1,-3,3,24,37,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,24,-11, 
1277      &-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,   
1278      &-13,-15,-1,-3,4*37,2*-1,2*2,2*-3,2*4,2*-5,2*6,2*-11,2*12,2*-13,   
1279      &2*14,2*-15,2*16,-1,-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,  
1280      &16,2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-15,16,2*-15,16,     
1281      &2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-13,14,2*-13,14,2*-13,  
1282      &14,-13,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3, 
1283      &-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,   
1284      &-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,  
1285      &6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,   
1286      &-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1,2*4,   
1287      &-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/     
1288       DATA (KFDP(I,2),I=3670,4183)/2*-37,2*1,3,5,1,3,5,1,3,5,1,2,3,4,5, 
1289      &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,   
1290      &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,   
1291      &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,  
1292      &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,  
1293      &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,  
1294      &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,  
1295      &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,     
1296      &2*12,4*11,23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,  
1297      &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,  
1298      &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,  
1299      &23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3,  
1300      &5,1,3,5,1,3,5,-3,-4,-5,-6,-11,-13,-15,21,-1,-3,2*-5,5,12,14,16,   
1301      &-3,-4,-5,-6,-11,-13,-15,21,-5,-6,21,-1,-2,-3,-4,-5,-6,-1,-2,-3,   
1302      &-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,   
1303      &-4,-5,-6,-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,3*21,3*1,4*2,1,2*11, 
1304      &2*12,11,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,  
1305      &21,22,23,-24,3*-1,3*-3,3*-5,3*1,3*3,3*5,2*-13,2*15,3*-1,3*-3,     
1306      &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,     
1307      &2*13,-1,-2,-3,-4,-5,-6,-11,-12,9900012,-13,-14,9900014,-15,-16/   
1308       DATA (KFDP(I,2),I=4184,8000)/9900016,2,4,6,2,4,6,2,4,6,9900012,   
1309      &9900014,9900016,-11,-13,-15,-13,2*-15,24,-11,-13,-15,-13,2*-15,   
1310      &9900024,6*21,-24,-3000211,-24,-3000211,3000111,3000221,3000111,   
1311      &3000221,2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17, 
1312      &-18,23,3000111,23,3000111,22,3000221,22,2,4,6,8,2,4,6,8,2,4,6,8,  
1313      &2,4,6,8,12,14,16,18,2*3000111,2*3000221,-3000211,2*-24,-3000211,  
1314      &2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
1315      &-3000211,3000211,3000221,3000113,3000223,-3000213,3000213,        
1316      &3000113,3000223,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,  
1317      &-17,-18,24,3000211,24,3000111,3000221,3000211,3000213,3000113,    
1318      &3000223,3000213,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,      
1319      &3649*0/                                                           
1320       DATA (KFDP(I,3),I=   1,1021)/81*0,14,6*0,2*16,2*0,6*111,310,130,  
1321      &2*0,3*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221,    
1322      &2*113,221,2*113,2*213,-213,113,2*111,310,130,310,130,2*310,130,   
1323      &402*0,4*3,4*4,1,4,3,2*2,0,-11,8*0,-211,5*0,2*111,211,-211,211,    
1324      &-211,10*0,111,4*0,2*111,-211,-11,11,-13,22,111,3*0,22,3*0,111,    
1325      &211,4*0,111,11*0,111,-211,6*0,-211,3*111,7*0,111,-211,5*0,2*221,  
1326      &3*0,111,5*0,111,11*0,-311,-313,-311,-321,-313,-323,111,221,331,   
1327      &113,223,-311,-313,-311,-321,-313,-323,111,221,331,113,223,22*0,   
1328      &111,113,2*211,-211,-311,211,111,3*211,-211,7*211,7*0,111,-211,    
1329      &111,-211,-321,-323,-311,-321,-313,-323,-211,-213,-321,-323,-311,  
1330      &-321,-313,-323,-211,-213,22*0,111,113,-311,2*-211,211,-211,310,   
1331      &-211,2*111,211,2*-211,-321,-211,2*211,-211,111,-211,2*211,6*0,    
1332      &111,-211,111,-211,0,221,331,333,321,311,221,331,333,321,311,20*0, 
1333      &3,13*0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413,      
1334      &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
1335      &111,-211,-421,-423,-10423,-10421,-20423,-425,-421,-423,-10423,    
1336      &-10421,-20423,-425,-421,-423,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
1337      &111,-211,-431,-433,-10433,-10431,-20433,-435,-431,-433,-10433,    
1338      &-10431,-20433,-435,-431,-433,19*0,-4,-1,-4,-3,2*-2,8*0,441,443,   
1339      &441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531,533,531,533,3,2,3,2/  
1340       DATA (KFDP(I,3),I=1022,2223)/511,513,511,513,1,2,13*0,2*21,11*0,  
1341      &2112,6*0,2212,12*0,2*3122,3212,10*0,3322,2*0,3122,3212,3214,2112, 
1342      &2114,2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,6*0, 
1343      &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,  
1344      &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,  
1345      &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,    
1346      &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,  
1347      &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,    
1348      &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,  
1349      &3,2*2,31*0,211,111,45*0,-211,2*111,-211,3*111,-211,111,211,30*0,  
1350      &-211,111,13*0,2*21,-211,111,199*0,2*5,210*0,-1,-3,-5,-2,-4,-6,-1, 
1351      &-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-2,2,-4,4,-6,  
1352      &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,  
1353      &-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, 
1354      &-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, 
1355      &-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, 
1356      &-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,   
1357      &-5,5,-5,5,5*0,11,12,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11, 
1358      &-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,   
1359      &-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3/ 
1360       DATA (KFDP(I,3),I=2224,2783)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
1361      &-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, 
1362      &-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, 
1363      &-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,   
1364      &-5,5,-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,  
1365      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
1366      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
1367      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1368      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
1369      &-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, 
1370      &-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, 
1371      &-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, 
1372      &-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,   
1373      &-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, 
1374      &4,0,12,14,16,2,4,0,12,14,16,2,4,28*0,2,4,12,-11,11,14,-13,13,16,  
1375      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,11,14,13,16,15,12,-11,11, 
1376      &14,-13,13,16,-15,15,12,11,14,13,16,15,12,11,14,13,16,15,2*2,1,-1, 
1377      &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,   
1378      &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,   
1379      &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/   
1380       DATA (KFDP(I,3),I=2784,3354)/2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3, 
1381      &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,  
1382      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,   
1383      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
1384      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
1385      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1386      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
1387      &-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, 
1388      &-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, 
1389      &-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, 
1390      &-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,   
1391      &-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,-16,   
1392      &-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,    
1393      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,  
1394      &-2,2,-4,4,2*0,-12,12,-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4, 
1395      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1396      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1, 
1397      &-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, 
1398      &-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, 
1399      &-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/ 
1400       DATA (KFDP(I,3),I=3355,8000)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
1401      &-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,   
1402      &-5,5,-3,3,-5,5,-5,5,3*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,   
1403      &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,    
1404      &28*0,2,4,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,    
1405      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,  
1406      &15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,15,   
1407      &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,   
1408      &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,   
1409      &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,   
1410      &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,  
1411      &1,3,-3,5,-5,1,3,5,-5,1,5,-5,1,3,5,-5,1,3,351*0,-5,95*0,2,4,6,2,4, 
1412      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900014,2*9900016,2,4,6,2,4, 
1413      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900016,2,4,6,2,4, 
1414      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900014,3831*0/    
1415       DATA (KFDP(I,4),I=   1,8000)/94*0,4*111,6*0,111,2*0,-211,0,-211,  
1416      &3*0,111,2*-211,0,111,0,2*111,113,221,2*111,-213,-211,211,113,     
1417      &6*111,310,2*130,402*0,13*81,41*0,-11,10*0,111,-211,4*0,111,62*0,  
1418      &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111,    
1419      &-211,2*211,2*-211,13*0,-211,111,-211,111,4*0,-211,111,-211,111,   
1420      &34*0,111,-211,3*111,3*-211,2*111,3*-211,14*0,-321,-311,3*0,-321,  
1421      &-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,    
1422      &2*-5,67*0,-211,111,5*0,-211,111,52*0,2101,2103,2*2101,6*0,4*81,   
1423      &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, 
1424      &162*81,31*0,-211,111,6516*0/                                      
1425       DATA (KFDP(I,5),I=   1,8000)/96*0,2*111,17*0,111,7*0,2*111,0,     
1426      &3*111,0,111,597*0,-211,2*111,-211,111,-211,111,65*0,111,-211,     
1427      &3*111,-211,111,7193*0/                                            
1428  
1429 C...PYDAT4, with particle names (character strings).
1430       DATA (CHAF(I,1),I=   1, 202)/'d','u','s','c','b','t','b''','t''', 
1431      &2*' ','e-','nu_e','mu-','nu_mu','tau-','nu_tau','tau''-',         
1432      &'nu''_tau',2*' ','g','gamma','Z0','W+','h0',6*' ','Z''0','Z"0',   
1433      &'W''+','H0','A0','H+',' ','Graviton',' ','R0','LQ_ue',38*' ',     
1434      &'specflav','rndmflav','phasespa','c-hadron','b-hadron',2*' ',     
1435      &'junction',' ','system','cluster','string','indep.','CMshower',   
1436      &'SPHEaxis','THRUaxis','CLUSjet','CELLjet','table',' ','reggeon',  
1437      &'pi0','rho0','a_20','K_L0','pi+','rho+','a_2+','eta','omega',     
1438      &'f_2','K_S0','K0','K*0','K*_20','K+','K*+','K*_2+','eta''','phi', 
1439      &'f''_2','D+','D*+','D*_2+','D0','D*0','D*_20','D_s+','D*_s+',     
1440      &'D*_2s+','eta_c','J/psi','chi_2c','B0','B*0','B*_20','B+','B*+',  
1441      &'B*_2+','B_s0','B*_s0','B*_2s0','B_c+','B*_c+','B*_2c+','eta_b',  
1442      &'Upsilon','chi_2b','pomeron','dd_1','Delta-','ud_0','ud_1','n0',  
1443      &'Delta0','uu_1','p+','Delta+','Delta++','sd_0','sd_1','Sigma-',   
1444      &'Sigma*-','Lambda0','su_0','su_1','Sigma0','Sigma*0','Sigma+',    
1445      &'Sigma*+','ss_1','Xi-','Xi*-','Xi0','Xi*0','Omega-','cd_0',       
1446      &'cd_1','Sigma_c0','Sigma*_c0','Lambda_c+','Xi_c0','cu_0','cu_1',  
1447      &'Sigma_c+','Sigma*_c+','Sigma_c++','Sigma*_c++','Xi_c+','cs_0',   
1448      &'cs_1','Xi''_c0','Xi*_c0','Xi''_c+','Xi*_c+','Omega_c0',          
1449      &'Omega*_c0','cc_1','Xi_cc+','Xi*_cc+','Xi_cc++','Xi*_cc++'/       
1450       DATA (CHAF(I,1),I= 203, 332)/'Omega_cc+','Omega*_cc+',            
1451      &'Omega*_ccc++','bd_0','bd_1','Sigma_b-','Sigma*_b-','Lambda_b0',  
1452      &'Xi_b-','Xi_bc0','bu_0','bu_1','Sigma_b0','Sigma*_b0','Sigma_b+', 
1453      &'Sigma*_b+','Xi_b0','Xi_bc+','bs_0','bs_1','Xi''_b-','Xi*_b-',    
1454      &'Xi''_b0','Xi*_b0','Omega_b-','Omega*_b-','Omega_bc0','bc_0',     
1455      &'bc_1','Xi''_bc0','Xi*_bc0','Xi''_bc+','Xi*_bc+','Omega''_bc0',   
1456      &'Omega*_bc0','Omega_bcc+','Omega*_bcc+','bb_1','Xi_bb-',          
1457      &'Xi*_bb-','Xi_bb0','Xi*_bb0','Omega_bb-','Omega*_bb-',            
1458      &'Omega_bbc0','Omega*_bbc0','Omega*_bbb-','a_00','b_10','a_0+',    
1459      &'b_1+','f_0','h_1','K*_00','K_10','K*_0+','K_1+','f''_0','h''_1', 
1460      &'D*_0+','D_1+','D*_00','D_10','D*_0s+','D_1s+','chi_0c','h_1c',   
1461      &'B*_00','B_10','B*_0+','B_1+','B*_0s0','B_1s0','B*_0c+','B_1c+',  
1462      &'chi_0b','h_1b','a_10','a_1+','f_1','K*_10','K*_1+','f''_1',      
1463      &'D*_1+','D*_10','D*_1s+','chi_1c','B*_10','B*_1+','B*_1s0',       
1464      &'B*_1c+','chi_1b','psi''','Upsilon''','~d_L','~u_L','~s_L',       
1465      &'~c_L','~b_1','~t_1','~e_L-','~nu_eL','~mu_L-','~nu_muL',         
1466      &'~tau_1-','~nu_tauL','~g','~chi_10','~chi_20','~chi_1+',          
1467      &'~chi_30','~chi_40','~chi_2+','~Gravitino','~d_R','~u_R','~s_R',  
1468      &'~c_R','~b_2','~t_2','~e_R-','~nu_eR','~mu_R-','~nu_muR',         
1469      &'~tau_2-','~nu_tauR','pi_tc0','pi_tc+','pi''_tc0','eta_tc0'/      
1470       DATA (CHAF(I,1),I= 333, 500)/'rho_tc0','rho_tc+','omega_tc',      
1471      &'V8_tc','pi_22_1_tc','pi_22_8_tc','rho_11_tc','rho_12_tc',        
1472      &'rho_21_tc','rho_22_tc','d*','u*','e*-','nu*_e0','Graviton*',     
1473      &'nu_Re','nu_Rmu','nu_Rtau','Z_R0','W_R+','H_L++','H_R++',         
1474      &'rho_diff0','pi_diffr+','omega_di','phi_diff','J/psi_di',         
1475      &'n_diffr0','p_diffr+','cc~[3S18]','cc~[1S08]','cc~[3P08]',        
1476      &'bb~[3S18]','bb~[1S08]','bb~[3P08]','a_tc0','a_tc+',131*' '/    
1477       DATA (CHAF(I,2),I=   1, 205)/'dbar','ubar','sbar','cbar','bbar',  
1478      &'tbar','b''bar','t''bar',2*' ','e+','nu_ebar','mu+','nu_mubar',   
1479      &'tau+','nu_taubar','tau''+','nu''_taubar',5*' ','W-',9*' ',       
1480      &'W''-',2*' ','H-',3*' ','Rbar0','LQ_uebar',39*' ','rndmflavbar',  
1481      &' ','c-hadronbar','b-hadronbar',20*' ','pi-','rho-','a_2-',4*' ', 
1482      &'Kbar0','K*bar0','K*_2bar0','K-','K*-','K*_2-',3*' ','D-','D*-',  
1483      &'D*_2-','Dbar0','D*bar0','D*_2bar0','D_s-','D*_s-','D*_2s-',      
1484      &3*' ','Bbar0','B*bar0','B*_2bar0','B-','B*-','B*_2-','B_sbar0',   
1485      &'B*_sbar0','B*_2sbar0','B_c-','B*_c-','B*_2c-',4*' ','dd_1bar',   
1486      &'Deltabar+','ud_0bar','ud_1bar','nbar0','Deltabar0','uu_1bar',    
1487      &'pbar-','Deltabar-','Deltabar--','sd_0bar','sd_1bar','Sigmabar+', 
1488      &'Sigma*bar+','Lambdabar0','su_0bar','su_1bar','Sigmabar0',        
1489      &'Sigma*bar0','Sigmabar-','Sigma*bar-','ss_1bar','Xibar+',         
1490      &'Xi*bar+','Xibar0','Xi*bar0','Omegabar+','cd_0bar','cd_1bar',     
1491      &'Sigma_cbar0','Sigma*_cbar0','Lambda_cbar-','Xi_cbar0','cu_0bar', 
1492      &'cu_1bar','Sigma_cbar-','Sigma*_cbar-','Sigma_cbar--',            
1493      &'Sigma*_cbar--','Xi_cbar-','cs_0bar','cs_1bar','Xi''_cbar0',      
1494      &'Xi*_cbar0','Xi''_cbar-','Xi*_cbar-','Omega_cbar0',               
1495      &'Omega*_cbar0','cc_1bar','Xi_ccbar-','Xi*_ccbar-','Xi_ccbar--',   
1496      &'Xi*_ccbar--','Omega_ccbar-','Omega*_ccbar-','Omega*_cccbar-'/    
1497       DATA (CHAF(I,2),I= 206, 325)/'bd_0bar','bd_1bar','Sigma_bbar+',   
1498      &'Sigma*_bbar+','Lambda_bbar0','Xi_bbar+','Xi_bcbar0','bu_0bar',   
1499      &'bu_1bar','Sigma_bbar0','Sigma*_bbar0','Sigma_bbar-',             
1500      &'Sigma*_bbar-','Xi_bbar0','Xi_bcbar-','bs_0bar','bs_1bar',        
1501      &'Xi''_bbar+','Xi*_bbar+','Xi''_bbar0','Xi*_bbar0','Omega_bbar+',  
1502      &'Omega*_bbar+','Omega_bcbar0','bc_0bar','bc_1bar','Xi''_bcbar0',  
1503      &'Xi*_bcbar0','Xi''_bcbar-','Xi*_bcbar-','Omega''_bcba',           
1504      &'Omega*_bcbar0','Omega_bccbar-','Omega*_bccbar-','bb_1bar',       
1505      &'Xi_bbbar+','Xi*_bbbar+','Xi_bbbar0','Xi*_bbbar0','Omega_bbbar+', 
1506      &'Omega*_bbbar+','Omega_bbcbar0','Omega*_bbcbar0',                 
1507      &'Omega*_bbbbar+',2*' ','a_0-','b_1-',2*' ','K*_0bar0','K_1bar0',  
1508      &'K*_0-','K_1-',2*' ','D*_0-','D_1-','D*_0bar0','D_1bar0',         
1509      &'D*_0s-','D_1s-',2*' ','B*_0bar0','B_1bar0','B*_0-','B_1-',       
1510      &'B*_0sbar0','B_1sbar0','B*_0c-','B_1c-',3*' ','a_1-',' ',         
1511      &'K*_1bar0','K*_1-',' ','D*_1-','D*_1bar0','D*_1s-',' ',           
1512      &'B*_1bar0','B*_1-','B*_1sbar0','B*_1c-',3*' ','~d_Lbar',          
1513      &'~u_Lbar','~s_Lbar','~c_Lbar','~b_1bar','~t_1bar','~e_L+',        
1514      &'~nu_eLbar','~mu_L+','~nu_muLbar','~tau_1+','~nu_tauLbar',3*' ',  
1515      &'~chi_1-',2*' ','~chi_2-',' ','~d_Rbar','~u_Rbar','~s_Rbar',      
1516      &'~c_Rbar','~b_2bar','~t_2bar','~e_R+','~nu_eRbar','~mu_R+'/       
1517       DATA (CHAF(I,2),I= 326, 500)/'~nu_muRbar','~tau_2+',              
1518      &'~nu_tauRbar',' ','pi_tc-',3*' ','rho_tc-',8*' ','d*bar','u*bar', 
1519      &'e*bar+','nu*_ebar0',5*' ','W_R-','H_L--','H_R--',' ',            
1520      &'pi_diffr-',3*' ','n_diffrbar0','p_diffrbar-',7*' ','a_tc-',     
1521      &131*' '/                                                          
1522  
1523 C...PYDATR, with initial values for the random number generator.
1524       DATA MRPY/19780503,0,0,97,33,0/
1525  
1526 C...Default values for allowed processes and kinematics constraints.
1527       DATA MSEL/1/
1528       DATA MSUB/500*0/
1529       DATA ((KFIN(I,J),J=-40,40),I=1,2)/16*0,4*1,4*0,6*1,5*0,5*1,0,
1530      &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,
1531      &6*1,4*0,4*1,16*0/
1532       DATA CKIN/
1533      &  2.0D0, -1.0D0,  0.0D0, -1.0D0,  1.0D0,
1534      &  1.0D0,  -10D0,   10D0,  -40D0,   40D0,
1535      1  -40D0,   40D0,  -40D0,   40D0,  -40D0,
1536      1   40D0, -1.0D0,  1.0D0, -1.0D0,  1.0D0,
1537      2  0.0D0,  1.0D0,  0.0D0,  1.0D0, -1.0D0,
1538      2  1.0D0, -1.0D0,  1.0D0,    0D0,    0D0,
1539      3  2.0D0, -1.0D0,    0D0,    0D0,  0.0D0,
1540      3 -1.0D0,  0.0D0, -1.0D0,  4.0D0, -1.0D0,
1541      4 12.0D0, -1.0D0, 12.0D0, -1.0D0, 12.0D0,
1542      4 -1.0D0, 12.0D0, -1.0D0,    0D0,    0D0,
1543      5  0.0D0, -1.0D0,  0.0D0, -1.0D0,  0.0D0,
1544      5 -1.0D0,    0D0,    0D0,    0D0,    0D0,
1545      6 0.0001D0, 0.99D0, 0.0001D0, 0.99D0,    0D0,
1546      6   -1D0,    0D0,   -1D0,    0D0,   -1D0,
1547      7    0D0,   -1D0, 0.0001D0, 0.99D0, 0.0001D0,
1548      7 0.99D0,    2D0,   -1D0,    0D0,    0D0,
1549      8  120*0D0/
1550  
1551 C...Default values for main switches and parameters. Reset information.
1552       DATA (MSTP(I),I=1,100)/
1553      &  3,    1,    2,    0,    0,    0,    0,    0,    0,    0,
1554      1  1,    0,    1,   30,    0,    1,    4,    3,    4,    3,
1555      2  1,    0,    1,    0,    0,    0,    0,    0,    0,    1,
1556      3  1,    8,    0,    1,    0,    2,    1,    5,    2,    0,
1557      4  2,    1,    3,    7,    3,    1,    1,    0,    1,    0,
1558      5  7,    1,    3,    1,    5,    1,    1,    5,    1,    7,
1559      6  2,    3,    2,    2,    1,    5,    2,    3,    0,    0,
1560      7  1,    1,    0,    0,    0,    0,    0,    0,    0,    0,
1561      8  1,    4,  100,    1,    1,    2,    4,    1,    1,    0,
1562      9  1,    3,    1,    3,    1,    0,    0,    0,    0,    0/
1563       DATA (MSTP(I),I=101,200)/
1564      &  3,    1,    0,    0,    0,    0,    0,    0,    0,    0,
1565      1  1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
1566      2  0,    1,    2,    1,    1,  100,    0,    0,   10,    0,
1567      3  0,    4,    0,    1,    0,    0,    0,    0,    0,    0,
1568      4  0,    0,    0,    0,    0,    1,    0,    0,    0,    0,
1569      5  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1570      6  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1571      7  0,    2,    0,    0,    0,    0,    0,    0,    0,    0,
1572      8  6,  414, 2007,   11,   19,    0,    0,    0,    0,    0,
1573      9  0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1574       DATA (PARP(I),I=1,100)/
1575      &  0.25D0,  10D0, 8*0D0,
1576      1  0D0, 0D0, 1.0D0, 0.01D0, 0.5D0, 1.0D0, 1.0D0, 0.4D0, 2*0D0,
1577      2  10*0D0,
1578      3  1.5D0,2.0D0,0.075D0,1.0D0,0.2D0,0D0,1.0D0,0.70D0,0.006D0,0D0,
1579      4  0.02D0,2.0D0,0.10D0,1000D0,2054D0,123D0,246D0,50D0,0D0,0.054D0,
1580      5  10*0D0,
1581      6  0.25D0, 1.0D0,0.25D0, 1.0D0, 2.0D0,1D-3, 4.0D0,1D-3,2*0D0,
1582      7  4.0D0, 0.25D0, 5*0D0, 0.025D0, 2.0D0, 0.1D0,
1583      8  1.90D0, 2.0D0, 0.5D0, 0.4D0, 0.90D0,
1584      8  0.95D0, 0.7D0, 0.5D0, 1800D0, 0.16D0,
1585      9  2.0D0,0.40D0,5.0D0,1.0D0,0.0D0,3.0D0,1.0D0,0.75D0,1.0D0,5.0D0/
1586       DATA (PARP(I),I=101,200)/
1587      &  0.5D0, 0.28D0,  1.0D0, 0.8D0, 0D0, 0D0, 0D0, 0D0, 0D0, 1D0,
1588      1  2.0D0, 3*0D0, 1.5D0, 0.5D0, 0.6D0, 2.5D0, 2.0D0, 1.0D0,
1589      2  1.0D0,  0.4D0, 8*0D0,
1590      3  0.01D0, 9*0D0,
1591      4  1.16D0, 0.0119D0, 0.01D0, 0.01D0, 0.05D0, 
1592      4  9.28D0, 0.15D0, 0.02D0, 0.48D0, 0.09D0,
1593      5  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
1594      6  2.20D0, 23.6D0, 18.4D0, 11.5D0, 0.5D0, 0D0, 0D0, 0D0, 2*0D0,
1595      7  0D0,   0D0,   0D0,  1.0D0, 6*0D0,
1596      8  0.1D0, 0.01D0, 0.01D0, 0.01D0, 0.1D0, 0.01D0, 0.01D0, 0.01D0,
1597      8  0.3D0, 0.64D0,
1598      9  0.64D0, 5.0D0, 1.0D4, 1.0D4, 6*0D0/
1599       DATA MSTI/200*0/
1600       DATA PARI/200*0D0/
1601       DATA MINT/400*0/
1602       DATA VINT/400*0D0/
1603  
1604 C...Constants for the generation of the various processes.
1605       DATA (ISET(I),I=1,100)/
1606      &  1,    1,    1,   -1,    3,   -1,   -1,    3,   -2,    2,
1607      1  2,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1608      2 -1,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1609      3  2,    2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,
1610      4 -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1611      5 -1,   -1,    2,    2,   -1,   -1,   -1,    2,   -1,   -1,
1612      6 -1,   -1,   -1,   -1,   -1,   -1,   -1,    2,    2,    2,
1613      7  4,    4,    4,   -1,   -1,    4,    4,   -1,   -1,    2,
1614      8  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1615      9  0,    0,    0,    0,    0,    9,   -2,   -2,    8,   -2/
1616       DATA (ISET(I),I=101,200)/
1617      & -1,    1,    1,    1,    1,    2,    2,    2,   -2,    2,
1618      1  2,    2,    2,    2,    2,   -1,   -1,   -1,   -2,   -2,
1619      2  5,    5,    5,    5,   -2,   -2,   -2,   -2,   -2,   -2,
1620      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1621      4  1,    1,    1,    1,    1,    1,    1,    1,    1,   -2,
1622      5  1,    1,    1,   -2,   -2,    1,    1,    1,   -2,   -2,
1623      6  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1624      7  2,    2,    5,    5,   -2,    2,    2,    5,    5,   -2,
1625      8  5,    5,    2,    2,    2,    5,    5,    2,    2,    2,
1626      9  1,    1,    1,    2,    2,   -2,   -2,   -2,   -2,   -2/
1627       DATA (ISET(I),I=201,300)/
1628      &  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1629      1  2,    2,    2,    2,   -2,    2,    2,    2,    2,    2,
1630      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1631      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1632      4  2,    2,    2,    2,   -1,    2,    2,    2,    2,    2,
1633      5  2,    2,    2,    2,   -1,    2,   -1,    2,    2,   -2,
1634      6  2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,   -1,
1635      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1636      8  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1637      9  2,    2,    2,    2,    2,    2,    2,    2,    2,    2/
1638       DATA (ISET(I),I=301,500)/
1639      &  2,   39*-2,
1640      4  1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
1641      5  5,    5,    1,    1,   -1,   -1,   -1,   -1,   -1,   -1,
1642      6  2,    2,    2,    2,    2,    2,    2,    2,   -1,    2,
1643      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1644      8  2,    2,    2,    2,    2,    2,    2,    2,   -2,   -2,
1645      9  1,    1,    2,    2,    2, 5*-2,
1646      &  5,    5, 18*-2,
1647      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1648      3  2,    2,    2,    2,    2,    2,    2,    2,    2, 21*-2,
1649      6  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1650      7  2,    2,    2,    2,    2,    2,    2,    2,    2, 21*-2/
1651       DATA ((KFPR(I,J),J=1,2),I=1,50)/
1652      &  23,    0,   24,    0,   25,    0,   24,    0,   25,    0,
1653      &  24,    0,   23,    0,   25,    0,    0,    0,    0,    0,
1654      1   0,    0,    0,    0,   21,   21,   21,   22,   21,   23,
1655      1  21,   24,   21,   25,   22,   22,   22,   23,   22,   24,
1656      2  22,   25,   23,   23,   23,   24,   23,   25,   24,   24,
1657      2  24,   25,   25,   25,    0,   21,    0,   22,    0,   23,
1658      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1659      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1660      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1661      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23/
1662       DATA ((KFPR(I,J),J=1,2),I=51,100)/
1663      5   0,   24,    0,   25,    0,    0,    0,    0,    0,    0,
1664      5   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1665      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1666      6   0,    0,    0,    0,   21,   21,   24,   24,   23,   24,
1667      7  23,   23,   24,   24,   23,   24,   23,   25,   22,   22,
1668      7  23,   23,   24,   24,   24,   25,   25,   25,    0,  211,
1669      8   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1670      8 443,   21,10441,   21,20443,   21,  445,   21,    0,    0,
1671      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1672      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1673       DATA ((KFPR(I,J),J=1,2),I=101,150)/
1674      &  23,    0,   25,    0,   25,    0,10441,    0,  445,    0,
1675      & 443,   22,  443,   21,  443,   22,    0,    0,   22,   25,
1676      1  21,   25,    0,   25,   21,   25,   22,   22,   21,   22,
1677      1  22,   23,   23,   23,   24,   24,    0,    0,    0,    0,
1678      2  25,    6,   25,    6,   25,    0,   25,    0,    0,    0,
1679      2   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1680      3   0,   21,    0,   21,    0,   22,    0,   22,    0,    0,
1681      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1682      4  32,    0,   34,    0,   37,    0,   41,    0,   42,    0,
1683      4 4000011, 0, 4000001, 0, 4000002, 0, 3000331, 0,   0,    0/
1684       DATA ((KFPR(I,J),J=1,2),I=151,200)/
1685      5  35,    0,   35,    0,   35,    0,    0,    0,    0,    0,
1686      5  36,    0,   36,    0,   36,    0,    0,    0,    0,    0,
1687      6   6,   37,   42,    0,   42,   42,   42,   42,   11,    0,
1688      6  11,    0, 0, 4000001, 0, 4000002, 0, 4000011,    0,    0,
1689      7  23,   35,   24,   35,   35,    0,   35,    0,    0,    0,
1690      7  23,   36,   24,   36,   36,    0,   36,    0,    0,    0,
1691      8  35,    6,   35,    6,   21,   35,    0,   35,   21,   35,
1692      8  36,    6,   36,    6,   21,   36,    0,   36,   21,   36,
1693      9  3000113, 0, 3000213, 0, 3000223, 0, 11,    0,   11,    0,
1694      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1695       DATA ((KFPR(I,J),J=1,2),I=201,240)/
1696      &  1000011,   1000011,   2000011,   2000011,   1000011,
1697      &  2000011,   1000013,   1000013,   2000013,   2000013,
1698      &  1000013,   2000013,   1000015,   1000015,   2000015,
1699      &  2000015,   1000015,   2000015,   1000011,   1000012,
1700      1  1000015,   1000016,   2000015,   1000016,   1000012,
1701      1  1000012,   1000016,   1000016,         0,         0,
1702      1  1000022,   1000022,   1000023,   1000023,   1000025,
1703      1  1000025,   1000035,   1000035,   1000022,   1000023,
1704      2  1000022,   1000025,   1000022,   1000035,   1000023,
1705      2  1000025,   1000023,   1000035,   1000025,   1000035,
1706      2  1000024,   1000024,   1000037,   1000037,   1000024,
1707      2  1000037,   1000022,   1000024,   1000023,   1000024,
1708      3  1000025,   1000024,   1000035,   1000024,   1000022,
1709      3  1000037,   1000023,   1000037,   1000025,   1000037,
1710      3  1000035,   1000037,   1000021,   1000022,   1000021,
1711      3  1000023,   1000021,   1000025,   1000021,   1000035/
1712       DATA ((KFPR(I,J),J=1,2),I=241,280)/
1713      4  1000021,   1000024,   1000021,   1000037,   1000021,
1714      4  1000021,   1000021,   1000021,         0,         0,
1715      4  1000002,   1000022,   2000002,   1000022,   1000002,
1716      4  1000023,   2000002,   1000023,   1000002,   1000025,
1717      5  2000002,   1000025,   1000002,   1000035,   2000002,
1718      5  1000035,   1000001,   1000024,   2000005,   1000024,
1719      5  1000001,   1000037,   2000005,   1000037,   1000002,
1720      5  1000021,   2000002,   1000021,         0,         0,
1721      6  1000006,   1000006,   2000006,   2000006,   1000006,
1722      6  2000006,   1000006,   1000006,   2000006,   2000006,
1723      6        0,         0,         0,         0,         0,
1724      6        0,         0,         0,         0,         0,
1725      7  1000002,   1000002,   2000002,   2000002,   1000002,
1726      7  2000002,   1000002,   1000002,   2000002,   2000002,
1727      7  1000002,   2000002,   1000002,   1000002,   2000002,
1728      7  2000002,   1000002,   1000002,   2000002,   2000002/
1729       DATA ((KFPR(I,J),J=1,2),I=281,350)/
1730      8  1000005,   1000002,   2000005,   2000002,   1000005,
1731      8  2000002,   1000005,   1000002,   2000005,   2000002,
1732      8  1000005,   2000002,   1000005,   1000005,   2000005,
1733      8  2000005,   1000005,   1000005,   2000005,   2000005,
1734      9  1000005,   1000005,   2000005,   2000005,   1000005,
1735      9  2000005,   1000005,   1000021,   2000005,   1000021,
1736      9  1000005,   2000005,        37,        25,        37,
1737      9       35,        36,        25,        36,        35,
1738      &       37,        37,      78*0,
1739      4  9900041,         0,   9900042,         0,   9900041,
1740      4       11,   9900042,        11,   9900041,        13,
1741      4  9900042,        13,   9900041,        15,   9900042,
1742      4       15,   9900041,   9900041,   9900042,   9900042/
1743       DATA ((KFPR(I,J),J=1,2),I=351,400)/
1744      5  9900041,         0,   9900042,         0,   9900023,
1745      5        0,   9900024,         0,         0,         0,
1746      5        0,         0,         0,         0,         0,
1747      5        0,         0,         0,         0,         0,
1748      6       24,        24,        24,   3000211,   3000211,
1749      6  3000211,        22,   3000111,        22,   3000221,
1750      6       23,   3000111,        23,   3000221,        24,
1751      6  3000211,         0,         0,        24,        23,
1752      7       24,   3000111,   3000211,        23,   3000211,
1753      7  3000111,        22,   3000211,        23,   3000211,
1754      7       24,   3000111,        24,   3000221,        22,
1755      7       24,        22,        23,        23,        23,
1756      8   0,    0,    0,    0,   21,   21,    0,   21,    0,    0,
1757      8  21,   21,    0,    0,    0,    0,    0,    0,    0,    0,
1758      9  5000039,         0,   5000039,         0,        21,
1759      9  5000039,         0,   5000039,        21,   5000039,
1760      9     10*0/
1761       DATA ((KFPR(I,J),J=1,2),I=401,500)/
1762      &  37,    6,   37,    6,    36*0,
1763      2      443,        21,   9900443,        21,   9900441,
1764      2       21,   9910441,        21,         0,   9900443,
1765      2        0,   9900441,         0,   9910441,        21,
1766      2  9900443,        21,   9900441,        21,   9910441,
1767      3 10441, 21, 20443,  21,  445,   21,    0, 10441,   0, 20443,
1768      3   0,  445,   21, 10441,  21, 20443,  21,  445,  42*0,
1769      6      553,        21,   9900553,        21,   9900551,
1770      6       21,   9910551,        21,         0,   9900553,
1771      6        0,   9900551,         0,   9910551,        21,
1772      6  9900553,        21,   9900551,        21,   9910551,
1773      7 10551, 21, 20553,  21,  555,   21,    0, 10551,   0, 20553,
1774      7   0,  555,   21, 10551,  21, 20553,  21,  555, 42*0/
1775       DATA COEF/10000*0D0/
1776       DATA (((ICOL(I,J,K),K=1,2),J=1,4),I=1,40)/
1777      &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,
1778      &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,
1779      &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,
1780      &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,
1781      &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,
1782      &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,
1783      &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,
1784      &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,
1785      &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,
1786      &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/
1787  
1788 C...Treatment of resonances.
1789       DATA (MWID(I)  ,I=   1, 500)/5*0,3*1,8*0,1,5*0,3*1,6*0,1,0,4*1,   
1790      &3*0,2*1,254*0,19*2,0,7*2,0,2,0,2,0,26*1,7*0,6*2,2*1,131*0/        
1791  
1792 C...Character constants: name of processes.
1793       DATA PROC(0)/                    'All included subprocesses   '/
1794       DATA (PROC(I),I=1,20)/
1795      &'f + fbar -> gamma*/Z0       ',  'f + fbar'' -> W+/-           ',
1796      &'f + fbar -> h0              ',  'gamma + W+/- -> W+/-        ',
1797      &'Z0 + Z0 -> h0               ',  'Z0 + W+/- -> W+/-           ',
1798      &'                            ',  'W+ + W- -> h0               ',
1799      &'                            ',  'f + f'' -> f + f'' (QFD)      ',
1800      1'f + f'' -> f + f'' (QCD)      ','f + fbar -> f'' + fbar''      ',
1801      1'f + fbar -> g + g           ',  'f + fbar -> g + gamma       ',
1802      1'f + fbar -> g + Z0          ',  'f + fbar'' -> g + W+/-       ',
1803      1'f + fbar -> g + h0          ',  'f + fbar -> gamma + gamma   ',
1804      1'f + fbar -> gamma + Z0      ',  'f + fbar'' -> gamma + W+/-   '/
1805       DATA (PROC(I),I=21,40)/
1806      2'f + fbar -> gamma + h0      ',  'f + fbar -> Z0 + Z0         ',
1807      2'f + fbar'' -> Z0 + W+/-      ', 'f + fbar -> Z0 + h0         ',
1808      2'f + fbar -> W+ + W-         ',  'f + fbar'' -> W+/- + h0      ',
1809      2'f + fbar -> h0 + h0         ',  'f + g -> f + g              ',
1810      2'f + g -> f + gamma          ',  'f + g -> f + Z0             ',
1811      3'f + g -> f'' + W+/-          ', 'f + g -> f + h0             ',
1812      3'f + gamma -> f + g          ',  'f + gamma -> f + gamma      ',
1813      3'f + gamma -> f + Z0         ',  'f + gamma -> f'' + W+/-      ',
1814      3'f + gamma -> f + h0         ',  'f + Z0 -> f + g             ',
1815      3'f + Z0 -> f + gamma         ',  'f + Z0 -> f + Z0            '/
1816       DATA (PROC(I),I=41,60)/
1817      4'f + Z0 -> f'' + W+/-         ', 'f + Z0 -> f + h0            ',
1818      4'f + W+/- -> f'' + g          ', 'f + W+/- -> f'' + gamma      ',
1819      4'f + W+/- -> f'' + Z0         ', 'f + W+/- -> f'' + W+/-       ',
1820      4'f + W+/- -> f'' + h0         ', 'f + h0 -> f + g             ',
1821      4'f + h0 -> f + gamma         ',  'f + h0 -> f + Z0            ',
1822      5'f + h0 -> f'' + W+/-         ', 'f + h0 -> f + h0            ',
1823      5'g + g -> f + fbar           ',  'g + gamma -> f + fbar       ',
1824      5'g + Z0 -> f + fbar          ',  'g + W+/- -> f + fbar''       ',
1825      5'g + h0 -> f + fbar          ',  'gamma + gamma -> f + fbar   ',
1826      5'gamma + Z0 -> f + fbar      ',  'gamma + W+/- -> f + fbar''   '/
1827       DATA (PROC(I),I=61,80)/
1828      6'gamma + h0 -> f + fbar      ',  'Z0 + Z0 -> f + fbar         ',
1829      6'Z0 + W+/- -> f + fbar''      ', 'Z0 + h0 -> f + fbar         ',
1830      6'W+ + W- -> f + fbar         ',  'W+/- + h0 -> f + fbar''      ',
1831      6'h0 + h0 -> f + fbar         ',  'g + g -> g + g              ',
1832      6'gamma + gamma -> W+ + W-    ',  'gamma + W+/- -> Z0 + W+/-   ',
1833      7'Z0 + Z0 -> Z0 + Z0          ',  'Z0 + Z0 -> W+ + W-          ',
1834      7'Z0 + W+/- -> Z0 + W+/-      ',  'Z0 + Z0 -> Z0 + h0          ',
1835      7'W+ + W- -> gamma + gamma    ',  'W+ + W- -> Z0 + Z0          ',
1836      7'W+/- + W+/- -> W+/- + W+/-  ',  'W+/- + h0 -> W+/- + h0      ',
1837      7'h0 + h0 -> h0 + h0          ',  'q + gamma -> q'' + pi+/-     '/
1838       DATA (PROC(I),I=81,100)/
1839      8'q + qbar -> Q + Qbar, mass  ',  'g + g -> Q + Qbar, massive  ',
1840      8'f + q -> f'' + Q, massive    ', 'g + gamma -> Q + Qbar, mass ',
1841      8'gamma + gamma -> F + Fbar, m',  'g + g -> J/Psi + g          ',
1842      8'g + g -> chi_0c + g         ',  'g + g -> chi_1c + g         ',
1843      8'g + g -> chi_2c + g         ',  '                            ',
1844      9'Elastic scattering          ',  'Single diffractive (XB)     ',
1845      9'Single diffractive (AX)     ',  'Double  diffractive         ',
1846      9'Low-pT scattering           ',  'Semihard QCD 2 -> 2         ',
1847      9'                            ',  '                            ',
1848      9'q + gamma* -> q             ',  '                            '/
1849       DATA (PROC(I),I=101,120)/
1850      &'g + g -> gamma*/Z0          ',  'g + g -> h0                 ',
1851      &'gamma + gamma -> h0         ',  'g + g -> chi_0c             ',
1852      &'g + g -> chi_2c             ',  'g + g -> J/Psi + gamma      ',
1853      &'gamma + g -> J/Psi + g      ',  'gamma+gamma -> J/Psi + gamma',
1854      &'                            ',  'f + fbar -> gamma + h0      ',
1855      1'q + qbar -> g + h0          ',  'q + g -> q + h0             ',
1856      1'g + g -> g + h0             ',  'g + g -> gamma + gamma      ',
1857      1'g + g -> g + gamma          ',  'g + g -> gamma + Z0         ',
1858      1'g + g -> Z0 + Z0            ',  'g + g -> W+ + W-            ',
1859      1'                            ',  '                            '/
1860       DATA (PROC(I),I=121,140)/
1861      2'g + g -> Q + Qbar + h0      ',  'q + qbar -> Q + Qbar + h0   ',
1862      2'f + f'' -> f + f'' + h0       ',
1863      2'f + f'' -> f" + f"'' + h0     ',
1864      2'                            ',  '                            ',
1865      2'                            ',  '                            ',
1866      2'                            ',  '                            ',
1867      3'f + gamma*_T -> f + g       ',  'f + gamma*_L -> f + g       ',
1868      3'f + gamma*_T -> f + gamma   ',  'f + gamma*_L -> f + gamma   ',
1869      3'g + gamma*_T -> f + fbar    ',  'g + gamma*_L -> f + fbar    ',
1870      3'gamma*_T+gamma*_T -> f+fbar ',  'gamma*_T+gamma*_L -> f+fbar ',
1871      3'gamma*_L+gamma*_T -> f+fbar ',  'gamma*_L+gamma*_L -> f+fbar '/
1872       DATA (PROC(I),I=141,160)/
1873      4'f + fbar -> gamma*/Z0/Z''0   ', 'f + fbar'' -> W''+/-          ',
1874      4'f + fbar'' -> H+/-           ', 'f + fbar'' -> R              ',
1875      4'q + l -> LQ                 ',  'e + gamma -> e*             ',
1876      4'd + g -> d*                 ',  'u + g -> u*                 ',
1877      4'g + g -> eta_tc             ',  '                            ',
1878      5'f + fbar -> H0              ',  'g + g -> H0                 ',
1879      5'gamma + gamma -> H0         ',  '                            ',
1880      5'                            ',  'f + fbar -> A0              ',
1881      5'g + g -> A0                 ',  'gamma + gamma -> A0         ',
1882      5'                            ',  '                            '/
1883       DATA (PROC(I),I=161,180)/
1884      6'f + g -> f'' + H+/-          ', 'q + g -> LQ + lbar          ',
1885      6'g + g -> LQ + LQbar         ',  'q + qbar -> LQ + LQbar      ',
1886      6'f + fbar -> f'' + fbar'' (g/Z)',
1887      6'f +fbar'' -> f" + fbar"'' (W) ',
1888      6'q + q'' -> q" + d*           ',  'q + q'' -> q" + u*           ',
1889      6'q + qbar -> e + e*          ',  '                            ',
1890      7'f + fbar -> Z0 + H0         ', 'f + fbar'' -> W+/- + H0      ',
1891      7'f + f'' -> f + f'' + H0       ',
1892      7'f + f'' -> f" + f"'' + H0     ',
1893      7'                            ',  'f + fbar -> Z0 + A0         ',
1894      7'f + fbar'' -> W+/- + A0      ',
1895      7'f + f'' -> f + f'' + A0       ',
1896      7'f + f'' -> f" + f"'' + A0     ',
1897      7'                            '/
1898       DATA (PROC(I),I=181,200)/
1899      8'g + g -> Q + Qbar + H0      ',  'q + qbar -> Q + Qbar + H0   ',
1900      8'q + qbar -> g + H0          ',  'q + g -> q + H0             ',
1901      8'g + g -> g + H0             ',  'g + g -> Q + Qbar + A0      ',
1902      8'q + qbar -> Q + Qbar + A0   ',  'q + qbar -> g + A0          ',
1903      8'q + g -> q + A0             ',  'g + g -> g + A0             ',
1904      9'f + fbar -> rho_tc0         ',  'f + f'' -> rho_tc+/-         ',
1905      9'f + fbar -> omega_tc0      ',  'f+fbar -> f''+fbar'' (ETC)  ',
1906      9'f+fbar'' -> f"+fbar"'' (ETC)','                          ',
1907      9'                            ',  '                            ',
1908      9'                            ',  '                            '/
1909       DATA (PROC(I),I=201,220)/
1910      &'f + fbar -> ~e_L + ~e_Lbar  ',  'f + fbar -> ~e_R + ~e_Rbar  ',
1911      &'f + fbar -> ~e_R + ~e_Lbar  ',  'f + fbar -> ~mu_L + ~mu_Lbar',
1912      &'f + fbar -> ~mu_R + ~mu_Rbar',  'f + fbar -> ~mu_L + ~mu_Rbar',
1913      &'f+fbar -> ~tau_1 + ~tau_1bar',  'f+fbar -> ~tau_2 + ~tau_2bar',
1914      &'f+fbar -> ~tau_1 + ~tau_2bar',  'q + qbar'' -> ~l_L + ~nulbar ',
1915      1'q+qbar''-> ~tau_1 + ~nutaubar', 'q+qbar''-> ~tau_2 + ~nutaubar',
1916      1'f + fbar -> ~nul + ~nulbar  ',  'f+fbar -> ~nutau + ~nutaubar',
1917      1'                            ',  'f + fbar -> ~chi1 + ~chi1   ',
1918      1'f + fbar -> ~chi2 + ~chi2   ',  'f + fbar -> ~chi3 + ~chi3   ',
1919      1'f + fbar -> ~chi4 + ~chi4   ',  'f + fbar -> ~chi1 + ~chi2   '/
1920       DATA (PROC(I),I=221,240)/
1921      2'f + fbar -> ~chi1 + ~chi3   ',  'f + fbar -> ~chi1 + ~chi4   ',
1922      2'f + fbar -> ~chi2 + ~chi3   ',  'f + fbar -> ~chi2 + ~chi4   ',
1923      2'f + fbar -> ~chi3 + ~chi4   ',  'f+fbar -> ~chi+-1 + ~chi-+1 ',
1924      2'f+fbar -> ~chi+-2 + ~chi-+2 ',  'f+fbar -> ~chi+-1 + ~chi-+2 ',
1925      2'q + qbar'' -> ~chi1 + ~chi+-1', 'q + qbar'' -> ~chi2 + ~chi+-1',
1926      3'q + qbar'' -> ~chi3 + ~chi+-1', 'q + qbar'' -> ~chi4 + ~chi+-1',
1927      3'q + qbar'' -> ~chi1 + ~chi+-2', 'q + qbar'' -> ~chi2 + ~chi+-2',
1928      3'q + qbar'' -> ~chi3 + ~chi+-2', 'q + qbar'' -> ~chi4 + ~chi+-2',
1929      3'q + qbar -> ~chi1 + ~g      ',  'q + qbar -> ~chi2 + ~g      ',
1930      3'q + qbar -> ~chi3 + ~g      ',  'q + qbar -> ~chi4 + ~g      '/
1931       DATA (PROC(I),I=241,260)/
1932      4'q + qbar'' -> ~chi+-1 + ~g   ', 'q + qbar'' -> ~chi+-2 + ~g  ',
1933      4'q + qbar -> ~g + ~g         ',  'g + g -> ~g + ~g            ',
1934      4'                            ',  'qj + g -> ~qj_L + ~chi1     ',
1935      4'qj + g -> ~qj_R + ~chi1     ',  'qj + g -> ~qj_L + ~chi2     ',
1936      4'qj + g -> ~qj_R + ~chi2     ',  'qj + g -> ~qj_L + ~chi3     ',
1937      5'qj + g -> ~qj_R + ~chi3     ',  'qj + g -> ~qj_L + ~chi4     ',
1938      5'qj + g -> ~qj_R + ~chi4     ',  'qj + g -> ~qk_L + ~chi+-1   ',
1939      5'qj + g -> ~qk_R + ~chi+-1   ',  'qj + g -> ~qk_L + ~chi+-2   ',
1940      5'qj + g -> ~qk_R + ~chi+-2   ',  'qj + g -> ~qj_L + ~g        ',
1941      5'qj + g -> ~qj_R + ~g        ',  '                            '/
1942       DATA (PROC(I),I=261,300)/
1943      6'f + fbar -> ~t_1 + ~t_1bar  ',  'f + fbar -> ~t_2 + ~t_2bar  ',
1944      6'f + fbar -> ~t_1 + ~t_2bar  ',  'g + g -> ~t_1 + ~t_1bar     ',
1945      6'g + g -> ~t_2 + ~t_2bar     ',  '                            ',
1946      6'                            ',  '                            ',
1947      6'                            ',  '                            ',
1948      7'qi + qj -> ~qi_L + ~qj_L    ',  'qi + qj -> ~qi_R + ~qj_R    ',
1949      7'qi + qj -> ~qi_L + ~qj_R    ',  'qi+qjbar -> ~qi_L + ~qj_Lbar',
1950      7'qi+qjbar -> ~qi_R + ~qj_Rbar',  'qi+qjbar -> ~qi_L + ~qj_Rbar',
1951      7'f + fbar -> ~qi_L + ~qi_Lbar',  'f + fbar -> ~qi_R + ~qi_Rbar',
1952      7'g + g -> ~qi_L + ~qi_Lbar   ',  'g + g -> ~qi_R + ~qi_Rbar   ',
1953      8'b + qj -> ~b_1 + ~qj_L      ',  'b + qj -> ~b_2 + ~qj_R      ',
1954      8'b + qj -> ~b_1 + ~qj_R      ',  'b + qjbar -> ~b_1 + ~qj_Lbar',
1955      8'b + qjbar -> ~b_2 + ~qj_Rbar',  'b + qjbar -> ~b_1 + ~qj_Rbar',
1956      8'f + fbar -> ~b_1 + ~b_1bar  ',  'f + fbar -> ~b_2 + ~b_2bar  ',
1957      8'g + g -> ~b_1 + ~b_1bar     ',  'g + g -> ~b_2 + ~b_2bar     ',
1958      9'b + b -> ~b_1 + ~b_1        ',  'b + b -> ~b_2 + ~b_2        ',
1959      9'b + b -> ~b_1 + ~b_2        ',  'b + g -> ~b_1 + ~g          ',
1960      9'b + g -> ~b_2 + ~g          ',  'b + bbar -> ~b_1 + ~b_2bar  ',
1961      9'f + fbar'' -> H+/- + h0     ',  'f + fbar -> H+/- + H0       ',
1962      9'f + fbar -> A0 + h0         ',  'f + fbar -> A0 + H0         '/
1963       DATA (PROC(I),I=301,340)/
1964      &'f + fbar -> H+ + H-         ', 39*'                          '/
1965       DATA (PROC(I),I=341,380)/
1966      4'l + l -> H_L++/--           ',  'l + l -> H_R++/--           ',
1967      4'l + gamma -> H_L++/-- e-/+  ',  'l + gamma -> H_R++/-- e-/+  ',
1968      4'l + gamma -> H_L++/-- mu-/+ ',  'l + gamma -> H_R++/-- mu-/+ ',
1969      4'l + gamma -> H_L++/-- tau-/+',  'l + gamma -> H_R++/-- tau-/+',
1970      4'f + fbar -> H_L++ + H_L--   ',  'f + fbar -> H_R++ + H_R--   ',
1971      5'f + f -> f'' + f'' + H_L++/-- ',
1972      5'f + f -> f'' + f'' + H_R++/-- ','f + fbar -> Z_R0            ',
1973      5'f + fbar'' -> W_R+/-         ',5*'                            ',
1974      6'                            ',  'f + fbar -> W_L+ W_L-       ',
1975      6'f + fbar -> W_L+/- pi_T-/+  ',  'f + fbar -> pi_T+ pi_T-     ',
1976      6'f + fbar -> gamma pi_T0     ',  'f + fbar -> gamma pi_T0''    ',
1977      6'f + fbar -> Z0 pi_T0        ',  'f + fbar -> Z0 pi_T0''       ',
1978      6'f + fbar -> W+/- pi_T-/+    ',  '                            ',
1979      7'f + fbar'' -> W_L+/- Z_L0    ', 'f + fbar'' -> W_L+/- pi_T0   ',
1980      7'f + fbar'' -> pi_T+/- Z_L0   ', 'f + fbar'' -> pi_T+/- pi_T0  ',
1981      7'f + fbar'' -> gamma pi_T+/-  ', 'f + fbar'' -> Z0 pi_T+/-     ',
1982      7'f + fbar'' -> W+/- pi_T0     ',
1983      7'f + fbar'' -> W+/- pi_T0''    ',
1984      7'f + fbar'' -> gamma W+/- (ETC)','f + fbar -> gamma Z0 (ETC)',
1985      7'f + fbar -> Z0 Z0 (ETC)'/
1986       DATA (PROC(I),I=381,420)/
1987      8'f + f'' -> f + f'' (ETC)      ','f + fbar -> f'' + fbar'' (ETC)',
1988      8'f + fbar -> g + g (ETC)     ',  'f + g -> f + g (ETC)        ',
1989      8'g + g -> f + fbar (ETC)     ',  'g + g -> g + g (ETC)        ',
1990      8'q + qbar -> Q + Qbar (ETC)  ',  'g + g -> Q + Qbar (ETC)     ',
1991      8'                            ',  '                            ',
1992      9'f + fbar -> G*              ',  'g + g -> G*                 ',
1993      9'q + qbar -> g + G*          ',  'q + g -> q + G*             ',
1994      9'g + g -> g + G*             ',  '                            ',
1995      9 4*'                         ',
1996      &'g + g -> t + b + H+/-       ',  'q + qbar -> t + b + H+/-    ',
1997      & 18*'                            '/
1998       DATA (PROC(I),I=421,460)/
1999      2'g + g  -> cc~[3S1(1)] + g   ',  'g + g  -> cc~[3S1(8)] + g   ',
2000      2'g + g  -> cc~[1S0(8)] + g   ',  'g + g  -> cc~[3PJ(8)] + g   ',
2001      2'g + q  -> q + cc~[3S1(8)]   ',  'g + q  -> q + cc~[1S0(8)]   ',
2002      2'g + q  -> q + cc~[3PJ(8)]   ',  'q + q~ -> g + cc~[3S1(8)]   ',
2003      2'q + q~ -> g + cc~[1S0(8)]   ',  'q + q~ -> g + cc~[3PJ(8)]   ',
2004      3'g + g  -> cc~[3P0(1)] + g   ',  'g + g  -> cc~[3P1(1)] + g   ',
2005      3'g + g  -> cc~[3P2(1)] + g   ',  'q + g  -> q + cc~[3P0(1)]   ',
2006      3'q + g  -> q + cc~[3P1(1)]   ',  'q + g  -> q + cc~[3P2(1)]   ',
2007      3'q + q~ -> g + cc~[3P0(1)]   ',  'q + q~ -> g + cc~[3P1(1)]   ',
2008      3'q + q~ -> g + cc~[3P2(1)]   ',
2009      3     21 *'                            '/
2010       DATA (PROC(I),I=461,500)/
2011      6'g + g  -> bb~[3S1(1)] + g   ',  'g + g  -> bb~[3S1(8)] + g   ',
2012      6'g + g  -> bb~[1S0(8)] + g   ',  'g + g  -> bb~[3PJ(8)] + g   ',
2013      6'g + q  -> q + bb~[3S1(8)]   ',  'g + q  -> q + bb~[1S0(8)]   ',
2014      6'g + q  -> q + bb~[3PJ(8)]   ',  'q + q~ -> g + bb~[3S1(8)]   ',
2015      6'q + q~ -> g + bb~[1S0(8)]   ',  'q + q~ -> g + bb~[3PJ(8)]   ',
2016      7'g + g  -> bb~[3P0(1)] + g   ',  'g + g  -> bb~[3P1(1)] + g   ',
2017      7'g + g  -> bb~[3P2(1)] + g   ',  'q + g  -> q + bb~[3P0(1)]   ',
2018      7'q + g  -> q + bb~[3P1(1)]   ',  'q + g  -> q + bb~[3P2(1)]   ',
2019      7'q + q~ -> g + bb~[3P0(1)]   ',  'q + q~ -> g + bb~[3P1(1)]   ',
2020      7'q + q~ -> g + bb~[3P2(1)]   ',
2021      7     21 *'                            '/
2022  
2023 C...Cross sections and slope offsets.
2024       DATA SIGT/294*0D0/
2025  
2026 C...Supersymmetry switches and parameters.
2027       DATA IMSS/0,
2028      &  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
2029      1  89*0/
2030       DATA RMSS/0D0,
2031      &  80D0,160D0,500D0,800D0,2D0,250D0,200D0,800D0,700D0,800D0,
2032      1  700D0,500D0,250D0,200D0,800D0,400D0,0D0,0.1D0,850D0,0.041D0,
2033      2   1D0,800D0,1D4,1D4,1D4,0D0,0D0,0D0,24D17,0D0,
2034      3  10*0D0,  
2035      4  0D0,1D0,8*0D0,  
2036      5  49*0D0/
2037 C...Initial values for R-violating SUSY couplings.
2038 C...Should not be changed here. See PYMSIN.
2039       DATA RVLAM/27*0D0/
2040       DATA RVLAMP/27*0D0/
2041       DATA RVLAMB/27*0D0/
2042  
2043 C...Technicolor switches and parameters
2044       DATA ITCM/0,
2045      &  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
2046      1  89*0/
2047       DATA RTCM/0D0,
2048      &  82D0,1.333D0,.333D0,0.408D0,1D0,1D0,.0182D0,1D0,0D0,1.333D0,
2049      1  .05D0,200D0,200D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
2050      2  .283D0,.707D0,0D0,0D0,0D0,1.667D0,250D0,250D0,.707D0,0D0,
2051      3  .707D0,0D0,1D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
2052      4  1000D0, 1D0, 1D0, 1D0, 1D0, 0D0, 1D0, 3*200D0,
2053      4  200D0, 48*0D0/
2054  
2055 C...Data for histogramming routines.
2056       DATA IHIST/1000,20000,55,1/
2057       DATA INDX/1000*0/
2058
2059 C...Data for SUSY Les Houches Accord.
2060       DATA CPRO/'PYTHIA      ','PYTHIA      '/
2061       DATA CVER/'6.4         ','6.4         '/
2062       DATA MODSEL/200*0/
2063       DATA PARMIN/100*0D0/
2064       DATA RMSOFT/101*0D0/
2065       DATA AU/9*0D0/
2066       DATA AD/9*0D0/
2067       DATA AE/9*0D0/
2068  
2069       END
2070  
2071 C*********************************************************************
2072  
2073 C...PYCKBD
2074 C...Check that BLOCK DATA PYDATA has been loaded.
2075 C...Should not be required, except that some compilers/linkers
2076 C...are pretty buggy in this respect.
2077  
2078       SUBROUTINE PYCKBD
2079  
2080 C...Double precision and integer declarations.
2081       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2082       IMPLICIT INTEGER(I-N)
2083       INTEGER PYK,PYCHGE,PYCOMP
2084 C...Commonblocks.
2085       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
2086       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2087       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2088       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2089       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2090       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2091       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
2092  
2093 C...Check a few variables to see they have been sensibly initialized.
2094       IF(MSTU(4).LT.10.OR.MSTU(4).GT.900000.OR.PMAS(2,1).LT.0.001D0
2095      &.OR.PMAS(2,1).GT.1D0.OR.CKIN(5).LT.0.01D0.OR.MSTP(1).LT.1.OR.
2096      &MSTP(1).GT.5) THEN
2097 C...If not, abort the run right away.
2098         WRITE(*,*) 'Fatal error: BLOCK DATA PYDATA has not been loaded!'
2099         WRITE(*,*) 'The program execution is stopped now!'
2100         CALL PYSTOP(8)
2101       ENDIF
2102  
2103       RETURN
2104       END
2105  
2106 C*********************************************************************
2107  
2108 C...PYTEST
2109 C...A simple program (disguised as subroutine) to run at installation
2110 C...as a check that the program works as intended.
2111  
2112       SUBROUTINE PYTEST(MTEST)
2113  
2114 C...Double precision and integer declarations.
2115       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2116       IMPLICIT INTEGER(I-N)
2117       INTEGER PYK,PYCHGE,PYCOMP
2118 C...Commonblocks.
2119       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
2120       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2121       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2122       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2123       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2124       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2125       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
2126 C...Local arrays.
2127       DIMENSION PSUM(5),PINI(6),PFIN(6)
2128  
2129 C...Save defaults for values that are changed.
2130       MSTJ1=MSTJ(1)
2131       MSTJ3=MSTJ(3)
2132       MSTJ11=MSTJ(11)
2133       MSTJ42=MSTJ(42)
2134       MSTJ43=MSTJ(43)
2135       MSTJ44=MSTJ(44)
2136       PARJ17=PARJ(17)
2137       PARJ22=PARJ(22)
2138       PARJ43=PARJ(43)
2139       PARJ54=PARJ(54)
2140       MST101=MSTJ(101)
2141       MST104=MSTJ(104)
2142       MST105=MSTJ(105)
2143       MST107=MSTJ(107)
2144       MST116=MSTJ(116)
2145  
2146 C...First part: loop over simple events to be generated.
2147       IF(MTEST.GE.1) CALL PYTABU(20)
2148       NERR=0
2149       DO 180 IEV=1,500
2150  
2151 C...Reset parameter values. Switch on some nonstandard features.
2152         MSTJ(1)=1
2153         MSTJ(3)=0
2154         MSTJ(11)=1
2155         MSTJ(42)=2
2156         MSTJ(43)=4
2157         MSTJ(44)=2
2158         PARJ(17)=0.1D0
2159         PARJ(22)=1.5D0
2160         PARJ(43)=1D0
2161         PARJ(54)=-0.05D0
2162         MSTJ(101)=5
2163         MSTJ(104)=5
2164         MSTJ(105)=0
2165         MSTJ(107)=1
2166         IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3
2167  
2168 C...Ten events each for some single jets configurations.
2169         IF(IEV.LE.50) THEN
2170           ITY=(IEV+9)/10
2171           MSTJ(3)=-1
2172           IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2
2173           IF(ITY.EQ.1) CALL PY1ENT(1,1,15D0,0D0,0D0)
2174           IF(ITY.EQ.2) CALL PY1ENT(1,3101,15D0,0D0,0D0)
2175           IF(ITY.EQ.3) CALL PY1ENT(1,-2203,15D0,0D0,0D0)
2176           IF(ITY.EQ.4) CALL PY1ENT(1,-4,30D0,0D0,0D0)
2177           IF(ITY.EQ.5) CALL PY1ENT(1,21,15D0,0D0,0D0)
2178  
2179 C...Ten events each for some simple jet systems; string fragmentation.
2180         ELSEIF(IEV.LE.130) THEN
2181           ITY=(IEV-41)/10
2182           IF(ITY.EQ.1) CALL PY2ENT(1,1,-1,40D0)
2183           IF(ITY.EQ.2) CALL PY2ENT(1,4,-4,30D0)
2184           IF(ITY.EQ.3) CALL PY2ENT(1,2,2103,100D0)
2185           IF(ITY.EQ.4) CALL PY2ENT(1,21,21,40D0)
2186           IF(ITY.EQ.5) CALL PY3ENT(1,2101,21,-3203,30D0,0.6D0,0.8D0)
2187           IF(ITY.EQ.6) CALL PY3ENT(1,5,21,-5,40D0,0.9D0,0.8D0)
2188           IF(ITY.EQ.7) CALL PY3ENT(1,21,21,21,60D0,0.7D0,0.5D0)
2189           IF(ITY.EQ.8) CALL PY4ENT(1,2,21,21,-2,40D0,
2190      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2191  
2192 C...Seventy events with independent fragmentation and momentum cons.
2193         ELSEIF(IEV.LE.200) THEN
2194           ITY=1+(IEV-131)/16
2195           MSTJ(2)=1+MOD(IEV-131,4)
2196           MSTJ(3)=1+MOD((IEV-131)/4,4)
2197           IF(ITY.EQ.1) CALL PY2ENT(1,4,-5,40D0)
2198           IF(ITY.EQ.2) CALL PY3ENT(1,3,21,-3,40D0,0.9D0,0.4D0)
2199           IF(ITY.EQ.3) CALL PY4ENT(1,2,21,21,-2,40D0,
2200      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2201           IF(ITY.GE.4) CALL PY4ENT(1,2,-3,3,-2,40D0,
2202      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2203  
2204 C...A hundred events with random jets (check invariant mass).
2205         ELSEIF(IEV.LE.300) THEN
2206   100     DO 110 J=1,5
2207             PSUM(J)=0D0
2208   110     CONTINUE
2209           NJET=2D0+6D0*PYR(0)
2210           DO 130 I=1,NJET
2211             KFL=21
2212             IF(I.EQ.1) KFL=INT(1D0+4D0*PYR(0))
2213             IF(I.EQ.NJET) KFL=-INT(1D0+4D0*PYR(0))
2214             EJET=5D0+20D0*PYR(0)
2215             THETA=ACOS(2D0*PYR(0)-1D0)
2216             PHI=6.2832D0*PYR(0)
2217             IF(I.LT.NJET) CALL PY1ENT(-I,KFL,EJET,THETA,PHI)
2218             IF(I.EQ.NJET) CALL PY1ENT(I,KFL,EJET,THETA,PHI)
2219             IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1
2220             IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+PYMASS(KFL)
2221             DO 120 J=1,4
2222               PSUM(J)=PSUM(J)+P(I,J)
2223   120       CONTINUE
2224   130     CONTINUE
2225           IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT.
2226      &    (PSUM(5)+PARJ(32))**2) GOTO 100
2227  
2228 C...Fifty e+e- continuum events with matrix elements.
2229         ELSEIF(IEV.LE.350) THEN
2230           MSTJ(101)=2
2231           CALL PYEEVT(0,40D0)
2232  
2233 C...Fifty e+e- continuum event with varying shower options.
2234         ELSEIF(IEV.LE.400) THEN
2235           MSTJ(42)=1+MOD(IEV,2)
2236           MSTJ(43)=1+MOD(IEV/2,4)
2237           MSTJ(44)=MOD(IEV/8,3)
2238           CALL PYEEVT(0,90D0)
2239  
2240 C...Fifty e+e- continuum events with coherent shower.
2241         ELSEIF(IEV.LE.450) THEN
2242           CALL PYEEVT(0,500D0)
2243  
2244 C...Fifty Upsilon decays to ggg or gammagg with coherent shower.
2245         ELSE
2246           CALL PYONIA(5,9.46D0)
2247         ENDIF
2248  
2249 C...Generate event. Find total momentum, energy and charge.
2250         DO 140 J=1,4
2251           PINI(J)=PYP(0,J)
2252   140   CONTINUE
2253         PINI(6)=PYP(0,6)
2254         CALL PYEXEC
2255         DO 150 J=1,4
2256           PFIN(J)=PYP(0,J)
2257   150   CONTINUE
2258         PFIN(6)=PYP(0,6)
2259  
2260 C...Check conservation of energy, momentum and charge;
2261 C...usually exact, but only approximate for single jets.
2262         MERR=0
2263         IF(IEV.LE.50) THEN
2264           IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.10D0)
2265      &    MERR=MERR+1
2266           EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3)
2267           IF(EPZREM.LT.0D0.OR.EPZREM.GT.2D0*PARJ(31)) MERR=MERR+1
2268           IF(ABS(PFIN(6)-PINI(6)).GT.2.1D0) MERR=MERR+1
2269         ELSE
2270           DO 160 J=1,4
2271             IF(ABS(PFIN(J)-PINI(J)).GT.0.0001D0*PINI(4)) MERR=MERR+1
2272   160     CONTINUE
2273           IF(ABS(PFIN(6)-PINI(6)).GT.0.1D0) MERR=MERR+1
2274         ENDIF
2275         IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2276      &  (PFIN(J),J=1,4),PFIN(6)
2277  
2278 C...Check that all KF codes are known ones, and that partons/particles
2279 C...satisfy energy-momentum-mass relation. Store particle statistics.
2280         DO 170 I=1,N
2281           IF(K(I,1).GT.20) GOTO 170
2282           IF(PYCOMP(K(I,2)).EQ.0) THEN
2283             WRITE(MSTU(11),5100) I
2284             MERR=MERR+1
2285           ENDIF
2286           PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
2287           IF(ABS(PD).GT.MAX(0.1D0,0.001D0*P(I,4)**2).OR.P(I,4).LT.0D0)
2288      &    THEN
2289             WRITE(MSTU(11),5200) I
2290             MERR=MERR+1
2291           ENDIF
2292   170   CONTINUE
2293         IF(MTEST.GE.1) CALL PYTABU(21)
2294  
2295 C...List all erroneous events and some normal ones.
2296         IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN
2297           IF(MERR.GE.1) WRITE(MSTU(11),6400)
2298           CALL PYLIST(2)
2299         ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN
2300           CALL PYLIST(1)
2301         ENDIF
2302  
2303 C...Stop execution if too many errors.
2304         IF(MERR.NE.0) NERR=NERR+1
2305         IF(NERR.GE.10) THEN
2306           WRITE(MSTU(11),6300)
2307           CALL PYLIST(1)
2308           CALL PYSTOP(9)
2309         ENDIF
2310   180 CONTINUE
2311  
2312 C...Summarize result of run.
2313       IF(MTEST.GE.1) CALL PYTABU(22)
2314  
2315 C...Reset commonblock variables changed during run.
2316       MSTJ(1)=MSTJ1
2317       MSTJ(3)=MSTJ3
2318       MSTJ(11)=MSTJ11
2319       MSTJ(42)=MSTJ42
2320       MSTJ(43)=MSTJ43
2321       MSTJ(44)=MSTJ44
2322       PARJ(17)=PARJ17
2323       PARJ(22)=PARJ22
2324       PARJ(43)=PARJ43
2325       PARJ(54)=PARJ54
2326       MSTJ(101)=MST101
2327       MSTJ(104)=MST104
2328       MSTJ(105)=MST105
2329       MSTJ(107)=MST107
2330       MSTJ(116)=MST116
2331  
2332 C...Second part: complete events of various kinds.
2333 C...Common initial values. Loop over initiating conditions.
2334       MSTP(122)=MAX(0,MIN(2,MTEST))
2335       MDCY(PYCOMP(111),1)=0
2336       DO 230 IPROC=1,8
2337  
2338 C...Reset process type, kinematics cuts, and the flags used.
2339         MSEL=0
2340         DO 190 ISUB=1,500
2341           MSUB(ISUB)=0
2342   190   CONTINUE
2343         CKIN(1)=2D0
2344         CKIN(3)=0D0
2345         MSTP(2)=1
2346         MSTP(11)=0
2347         MSTP(33)=0
2348         MSTP(81)=1
2349         MSTP(82)=1
2350         MSTP(111)=1
2351         MSTP(131)=0
2352         MSTP(133)=0
2353         PARP(131)=0.01D0
2354  
2355 C...Prompt photon production at fixed target.
2356         IF(IPROC.EQ.1) THEN
2357           PZSUM=300D0
2358           PESUM=SQRT(PZSUM**2+PYMASS(211)**2)+PYMASS(2212)
2359           PQSUM=2D0
2360           MSEL=10
2361           CKIN(3)=5D0
2362           CALL PYINIT('FIXT','pi+','p',PZSUM)
2363  
2364 C...QCD processes at ISR energies.
2365         ELSEIF(IPROC.EQ.2) THEN
2366           PESUM=63D0
2367           PZSUM=0D0
2368           PQSUM=2D0
2369           MSEL=1
2370           CKIN(3)=5D0
2371           CALL PYINIT('CMS','p','p',PESUM)
2372  
2373 C...W production + multiple interactions at CERN Collider.
2374         ELSEIF(IPROC.EQ.3) THEN
2375           PESUM=630D0
2376           PZSUM=0D0
2377           PQSUM=0D0
2378           MSEL=12
2379           CKIN(1)=20D0
2380           MSTP(82)=4
2381           MSTP(2)=2
2382           MSTP(33)=3
2383           CALL PYINIT('CMS','p','pbar',PESUM)
2384  
2385 C...W/Z gauge boson pairs + pileup events at the Tevatron.
2386         ELSEIF(IPROC.EQ.4) THEN
2387           PESUM=1800D0
2388           PZSUM=0D0
2389           PQSUM=0D0
2390           MSUB(22)=1
2391           MSUB(23)=1
2392           MSUB(25)=1
2393           CKIN(1)=200D0
2394           MSTP(111)=0
2395           MSTP(131)=1
2396           MSTP(133)=2
2397           PARP(131)=0.04D0
2398           CALL PYINIT('CMS','p','pbar',PESUM)
2399  
2400 C...Higgs production at LHC.
2401         ELSEIF(IPROC.EQ.5) THEN
2402           PESUM=15400D0
2403           PZSUM=0D0
2404           PQSUM=2D0
2405           MSUB(3)=1
2406           MSUB(102)=1
2407           MSUB(123)=1
2408           MSUB(124)=1
2409           PMAS(25,1)=300D0
2410           CKIN(1)=200D0
2411           MSTP(81)=0
2412           MSTP(111)=0
2413           CALL PYINIT('CMS','p','p',PESUM)
2414  
2415 C...Z' production at SSC.
2416         ELSEIF(IPROC.EQ.6) THEN
2417           PESUM=40000D0
2418           PZSUM=0D0
2419           PQSUM=2D0
2420           MSEL=21
2421           PMAS(32,1)=600D0
2422           CKIN(1)=400D0
2423           MSTP(81)=0
2424           MSTP(111)=0
2425           CALL PYINIT('CMS','p','p',PESUM)
2426  
2427 C...W pair production at 1 TeV e+e- collider.
2428         ELSEIF(IPROC.EQ.7) THEN
2429           PESUM=1000D0
2430           PZSUM=0D0
2431           PQSUM=0D0
2432           MSUB(25)=1
2433           MSUB(69)=1
2434           MSTP(11)=1
2435           CALL PYINIT('CMS','e+','e-',PESUM)
2436  
2437 C...Deep inelastic scattering at a LEP+LHC ep collider.
2438         ELSEIF(IPROC.EQ.8) THEN
2439           P(1,1)=0D0
2440           P(1,2)=0D0
2441           P(1,3)=8000D0
2442           P(2,1)=0D0
2443           P(2,2)=0D0
2444           P(2,3)=-80D0
2445           PESUM=8080D0
2446           PZSUM=7920D0
2447           PQSUM=0D0
2448           MSUB(10)=1
2449           CKIN(3)=50D0
2450           MSTP(111)=0
2451           CALL PYINIT('3MOM','p','e-',PESUM)
2452         ENDIF
2453  
2454 C...Generate 20 events of each required type.
2455         DO 220 IEV=1,20
2456           CALL PYEVNT
2457           PESUMM=PESUM
2458           IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
2459  
2460 C...Check conservation of energy/momentum/flavour.
2461           PINI(1)=0D0
2462           PINI(2)=0D0
2463           PINI(3)=PZSUM
2464           PINI(4)=PESUMM
2465           PINI(6)=PQSUM
2466           DO 200 J=1,4
2467             PFIN(J)=PYP(0,J)
2468   200     CONTINUE
2469           PFIN(6)=PYP(0,6)
2470           MERR=0
2471           DEVE=ABS(PFIN(4)-PINI(4))+ABS(PFIN(3)-PINI(3))
2472           DEVT=ABS(PFIN(1)-PINI(1))+ABS(PFIN(2)-PINI(2))
2473           DEVQ=ABS(PFIN(6)-PINI(6))
2474           IF(DEVE.GT.2D-3*PESUM.OR.DEVT.GT.MAX(0.01D0,1D-4*PESUM).OR.
2475      &    DEVQ.GT.0.1D0) MERR=1
2476           IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2477      &    (PFIN(J),J=1,4),PFIN(6)
2478  
2479 C...Check that all KF codes are known ones, and that partons/particles
2480 C...satisfy energy-momentum-mass relation.
2481           DO 210 I=1,N
2482             IF(K(I,1).GT.20) GOTO 210
2483             IF(PYCOMP(K(I,2)).EQ.0) THEN
2484               WRITE(MSTU(11),5100) I
2485               MERR=MERR+1
2486             ENDIF
2487             PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
2488      &      SIGN(1D0,P(I,5))
2489             IF(ABS(PD).GT.MAX(0.1D0,0.002D0*P(I,4)**2,0.002D0*P(I,5)**2)
2490      &      .OR.(P(I,5).GE.0D0.AND.P(I,4).LT.0D0)) THEN
2491               WRITE(MSTU(11),5200) I
2492               MERR=MERR+1
2493             ENDIF
2494   210     CONTINUE
2495  
2496 C...Listing of erroneous events, and first event of each type.
2497           IF(MERR.GE.1) NERR=NERR+1
2498           IF(NERR.GE.10) THEN
2499             WRITE(MSTU(11),6300)
2500             CALL PYLIST(1)
2501             CALL PYSTOP(9)
2502           ENDIF
2503           IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
2504             IF(MERR.GE.1) WRITE(MSTU(11),6400)
2505             CALL PYLIST(1)
2506           ENDIF
2507   220   CONTINUE
2508  
2509 C...List statistics for each process type.
2510         IF(MTEST.GE.1) CALL PYSTAT(1)
2511   230 CONTINUE
2512  
2513 C...Summarize result of run.
2514       IF(NERR.EQ.0) WRITE(MSTU(11),6500)
2515       IF(NERR.GT.0) WRITE(MSTU(11),6600) NERR
2516  
2517 C...Format statements for output.
2518  5000 FORMAT(/' Momentum, energy and/or charge were not conserved ',
2519      &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X,
2520      &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X,
2521      &4(1X,F12.5),1X,F8.2)
2522  5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
2523  5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
2524      &'kinematics')
2525  6300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
2526      &'wrong.'/5X,'Execution will be stopped after listing of event.')
2527  6400 FORMAT(5X,'Faulty event follows:')
2528  6500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
2529  6600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
2530      &5X,'This should not have happened!')
2531  
2532       RETURN
2533       END
2534  
2535 C*********************************************************************
2536  
2537 C...PYHEPC
2538 C...Converts PYTHIA event record contents to or from
2539 C...the standard event record commonblock.
2540  
2541       SUBROUTINE PYHEPC(MCONV)
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/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
2549       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2550       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2551       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
2552 C...HEPEVT commonblock.
2553       PARAMETER (NMXHEP=4000)
2554       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
2555      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
2556       DOUBLE PRECISION PHEP,VHEP
2557       SAVE /HEPEVT/
2558
2559 C...Store HEPEVT commonblock size (for interfacing issues).
2560       MSTU(8)=NMXHEP
2561  
2562 C...Conversion from PYTHIA to standard, the easy part.
2563       IF(MCONV.EQ.1) THEN
2564         NEVHEP=0
2565         IF(N.GT.NMXHEP) CALL PYERRM(8,
2566      &  '(PYHEPC:) no more space in /HEPEVT/')
2567         NHEP=MIN(N,NMXHEP)
2568         DO 150 I=1,NHEP
2569           ISTHEP(I)=0
2570           IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1
2571           IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2
2572           IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3
2573           IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1)
2574           IDHEP(I)=K(I,2)
2575           JMOHEP(1,I)=K(I,3)
2576           JMOHEP(2,I)=0
2577           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN
2578             JDAHEP(1,I)=K(I,4)
2579             JDAHEP(2,I)=K(I,5)
2580           ELSE
2581             JDAHEP(1,I)=0
2582             JDAHEP(2,I)=0
2583           ENDIF
2584           DO 100 J=1,5
2585             PHEP(J,I)=P(I,J)
2586   100     CONTINUE
2587           DO 110 J=1,4
2588             VHEP(J,I)=V(I,J)
2589   110     CONTINUE
2590  
2591 C...Check if new event (from pileup).
2592           IF(I.EQ.1) THEN
2593             INEW=1
2594           ELSE
2595             IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I
2596           ENDIF
2597  
2598 C...Fill in missing mother information.
2599           IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN
2600             IMO1=I-2
2601   120       IF(IMO1.GT.INEW.AND.K(IMO1+1,1).EQ.21.AND.K(IMO1+1,3).EQ.0)
2602      &      THEN
2603               IMO1=IMO1-1
2604               GOTO 120
2605             ENDIF
2606             JMOHEP(1,I)=IMO1
2607             JMOHEP(2,I)=IMO1+1
2608           ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN
2609             I1=K(I,3)-1
2610   130       I1=I1+1
2611             IF(I1.GE.I) CALL PYERRM(8,
2612      &      '(PYHEPC:) translation of inconsistent event history')
2613             IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 130
2614             KC=PYCOMP(K(I1,2))
2615             IF(I1.LT.I.AND.KC.EQ.0) GOTO 130
2616             IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 130
2617             JMOHEP(2,I)=I1
2618           ELSEIF(K(I,2).EQ.94) THEN
2619             NJET=2
2620             IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3
2621             IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4
2622             JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5))
2623             IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)=
2624      &      MOD(K(I+1,4)/MSTU(5),MSTU(5))
2625           ENDIF
2626  
2627 C...Fill in missing daughter information.
2628           IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN
2629             DO 140 I1=JDAHEP(1,I),JDAHEP(2,I)
2630               I2=MOD(K(I1,4)/MSTU(5),MSTU(5))
2631               JDAHEP(1,I2)=I
2632   140       CONTINUE
2633           ENDIF
2634           IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 150
2635           I1=JMOHEP(1,I)
2636           IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 150
2637           IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 150
2638           IF(JDAHEP(1,I1).EQ.0) THEN
2639             JDAHEP(1,I1)=I
2640           ELSE
2641             JDAHEP(2,I1)=I
2642           ENDIF
2643   150   CONTINUE
2644         DO 160 I=1,NHEP
2645           IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 160
2646           IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I)
2647   160   CONTINUE
2648  
2649 C...Conversion from standard to PYTHIA, the easy part.
2650       ELSE
2651         IF(NHEP.GT.MSTU(4)) CALL PYERRM(8,
2652      &  '(PYHEPC:) no more space in /PYJETS/')
2653         N=MIN(NHEP,MSTU(4))
2654         NKQ=0
2655         KQSUM=0
2656         DO 190 I=1,N
2657           K(I,1)=0
2658           IF(ISTHEP(I).EQ.1) K(I,1)=1
2659           IF(ISTHEP(I).EQ.2) K(I,1)=11
2660           IF(ISTHEP(I).EQ.3) K(I,1)=21
2661           K(I,2)=IDHEP(I)
2662           K(I,3)=JMOHEP(1,I)
2663           K(I,4)=JDAHEP(1,I)
2664           K(I,5)=JDAHEP(2,I)
2665           DO 170 J=1,5
2666             P(I,J)=PHEP(J,I)
2667   170     CONTINUE
2668           DO 180 J=1,4
2669             V(I,J)=VHEP(J,I)
2670   180     CONTINUE
2671           V(I,5)=0D0
2672           IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN
2673             I1=JDAHEP(1,I)
2674             IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))*
2675      &      PHEP(5,I)/PHEP(4,I)
2676           ENDIF
2677  
2678 C...Fill in missing information on colour connection in jet systems.
2679           IF(ISTHEP(I).EQ.1) THEN
2680             KC=PYCOMP(K(I,2))
2681             KQ=0
2682             IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
2683             IF(KQ.NE.0) NKQ=NKQ+1
2684             IF(KQ.NE.2) KQSUM=KQSUM+KQ
2685             IF(KQ.NE.0.AND.KQSUM.NE.0) THEN
2686               K(I,1)=2
2687             ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN
2688               IF(K(I+1,2).EQ.21) K(I,1)=2
2689             ENDIF
2690           ENDIF
2691   190   CONTINUE
2692         IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL PYERRM(8,
2693      &  '(PYHEPC:) input parton configuration not colour singlet')
2694       ENDIF
2695  
2696       END
2697  
2698 C*********************************************************************
2699  
2700 C...PYINIT
2701 C...Initializes the generation procedure; finds maxima of the
2702 C...differential cross-sections to be used for weighting.
2703  
2704       SUBROUTINE PYINIT(FRAME,BEAM,TARGET,WIN)
2705  
2706 C...Double precision and integer declarations.
2707       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2708       IMPLICIT INTEGER(I-N)
2709       INTEGER PYK,PYCHGE,PYCOMP
2710 C...Commonblocks.
2711       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2712       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2713       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2714       COMMON/PYDAT4/CHAF(500,2)
2715       CHARACTER CHAF*16
2716       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2717       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2718       COMMON/PYINT1/MINT(400),VINT(400)
2719       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
2720       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
2721       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
2722      &/PYINT1/,/PYINT2/,/PYINT5/
2723 C...Local arrays and character variables.
2724       DIMENSION ALAMIN(20),NFIN(20)
2725       CHARACTER*(*) FRAME,BEAM,TARGET
2726       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHLH(2)*6
2727  
2728 C...Interface to PDFLIB.
2729       COMMON/W50511/NPTYPE,NGROUP,NSET,MODE,NFL,LO,TMAS
2730       COMMON/LW50512/QCDL4,QCDL5
2731       SAVE /W50511/
2732       SAVE /LW50512/
2733       DOUBLE PRECISION VALUE(20),TMAS,QCDL4,QCDL5
2734       CHARACTER*20 PARM(20)
2735       DATA VALUE/20*0D0/,PARM/20*' '/
2736  
2737 C...Data:Lambda and n_f values for parton distributions..
2738       DATA ALAMIN/0.177D0,0.239D0,0.247D0,0.2322D0,0.248D0,0.248D0,
2739      &0.192D0,0.326D0,2*0.2D0,0.2D0,0.2D0,0.29D0,0.2D0,0.4D0,5*0.2D0/,
2740      &NFIN/20*4/
2741       DATA CHLH/'lepton','hadron'/
2742  
2743 C...Check that BLOCK DATA PYDATA has been loaded.
2744       CALL PYCKBD
2745  
2746 C...Reset MINT and VINT arrays. Write headers.
2747       MSTI(53)=0
2748       DO 100 J=1,400
2749         MINT(J)=0
2750         VINT(J)=0D0
2751   100 CONTINUE
2752       IF(MSTU(12).NE.12345) CALL PYLIST(0)
2753       IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
2754  
2755 C...Reset error counters.
2756       MSTU(23)=0
2757       MSTU(27)=0
2758       MSTU(30)=0
2759  
2760 C...Reset processes that should not be on.
2761       MSUB(96)=0
2762       MSUB(97)=0
2763  
2764 C...Select global FSR/ISR/UE parameter set = 'tune' 
2765 C...See routine PYTUNE for details
2766       IF (MSTP(5).NE.0) THEN
2767         MSTP5=MSTP(5)
2768         CALL PYTUNE(MSTP5)
2769       ENDIF
2770
2771 C...Call user process initialization routine.
2772       IF(FRAME(1:1).EQ.'u'.OR.FRAME(1:1).EQ.'U') THEN
2773         MSEL=0
2774         CALL UPINIT
2775         MSEL=0
2776       ENDIF
2777  
2778 C...Maximum 4 generations; set maximum number of allowed flavours.
2779       MSTP(1)=MIN(4,MSTP(1))
2780       MSTU(114)=MIN(MSTU(114),2*MSTP(1))
2781       MSTP(58)=MIN(MSTP(58),2*MSTP(1))
2782  
2783 C...Sum up Cabibbo-Kobayashi-Maskawa factors for each quark/lepton.
2784       DO 120 I=-20,20
2785         VINT(180+I)=0D0
2786         IA=IABS(I)
2787         IF(IA.GE.1.AND.IA.LE.2*MSTP(1)) THEN
2788           DO 110 J=1,MSTP(1)
2789             IB=2*J-1+MOD(IA,2)
2790             IF(IB.GE.6.AND.MSTP(9).EQ.0) GOTO 110
2791             IPM=(5-ISIGN(1,I))/2
2792             IDC=J+MDCY(IA,2)+2
2793             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) VINT(180+I)=
2794      &      VINT(180+I)+VCKM((IA+1)/2,(IB+1)/2)
2795   110     CONTINUE
2796         ELSEIF(IA.GE.11.AND.IA.LE.10+2*MSTP(1)) THEN
2797           VINT(180+I)=1D0
2798         ENDIF
2799   120 CONTINUE
2800  
2801 C...Initialize parton distributions: PDFLIB.
2802       IF(MSTP(52).EQ.2) THEN
2803         PARM(1)='NPTYPE'
2804         VALUE(1)=1
2805         PARM(2)='NGROUP'
2806         VALUE(2)=MSTP(51)/1000
2807         PARM(3)='NSET'
2808         VALUE(3)=MOD(MSTP(51),1000)
2809         PARM(4)='TMAS'
2810         VALUE(4)=PMAS(6,1)
2811         CALL PDFSET_ALICE(PARM,VALUE)
2812         MINT(93)=1000000+MSTP(51)
2813       ENDIF
2814  
2815 C...Choose Lambda value to use in alpha-strong.
2816       MSTU(111)=MSTP(2)
2817       IF(MSTP(3).GE.2) THEN
2818         ALAM=0.2D0
2819         NF=4
2820         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
2821           ALAM=ALAMIN(MSTP(51))
2822           NF=NFIN(MSTP(51))
2823         ELSEIF(MSTP(52).EQ.2.AND.NFL.EQ.5) THEN
2824           ALAM=QCDL5
2825           NF=5
2826         ELSEIF(MSTP(52).EQ.2) THEN
2827           ALAM=QCDL4
2828           NF=4
2829         ENDIF
2830         PARP(1)=ALAM
2831         PARP(61)=ALAM
2832         PARP(72)=ALAM
2833         PARU(112)=ALAM
2834         MSTU(112)=NF
2835         IF(MSTP(3).EQ.3) PARJ(81)=ALAM
2836       ENDIF
2837  
2838 C...Initialize the SUSY generation: couplings, masses,
2839 C...decay modes, branching ratios, and so on.
2840       CALL PYMSIN
2841 C...Initialize widths and partial widths for resonances.
2842       CALL PYINRE
2843 C...Set Z0 mass and width for e+e- routines.
2844       PARJ(123)=PMAS(23,1)
2845       PARJ(124)=PMAS(23,2)
2846  
2847 C...Identify beam and target particles and frame of process.
2848       CHFRAM=FRAME//' '
2849       CHBEAM=BEAM//' '
2850       CHTARG=TARGET//' '
2851       CALL PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
2852       IF(MINT(65).EQ.1) GOTO 170
2853  
2854 C...For gamma-p or gamma-gamma allow many (3 or 6) alternatives.
2855 C...For e-gamma allow 2 alternatives.
2856       MINT(121)=1
2857       IF(MSTP(14).EQ.10.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2858         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2859      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
2860         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=6
2861         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2862      &  (IABS(MINT(11)).EQ.11.OR.IABS(MINT(12)).EQ.11)) MINT(121)=2
2863       ELSEIF(MSTP(14).EQ.20.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2864         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2865      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
2866         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=9
2867       ELSEIF(MSTP(14).EQ.25.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2868         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2869      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=2
2870         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=4
2871       ELSEIF(MSTP(14).EQ.30.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
2872         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
2873      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=4
2874         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=13
2875       ENDIF
2876       MINT(123)=MSTP(14)
2877       IF((MSTP(14).EQ.10.OR.MSTP(14).EQ.20.OR.MSTP(14).EQ.25.OR.
2878      &MSTP(14).EQ.30).AND.MSEL.NE.1.AND.MSEL.NE.2) MINT(123)=0
2879       IF(MSTP(14).GE.11.AND.MSTP(14).LE.19) THEN
2880         IF(MSTP(14).EQ.11) MINT(123)=0
2881         IF(MSTP(14).EQ.12.OR.MSTP(14).EQ.14) MINT(123)=5
2882         IF(MSTP(14).EQ.13.OR.MSTP(14).EQ.17) MINT(123)=6
2883         IF(MSTP(14).EQ.15) MINT(123)=2
2884         IF(MSTP(14).EQ.16.OR.MSTP(14).EQ.18) MINT(123)=7
2885         IF(MSTP(14).EQ.19) MINT(123)=3
2886       ELSEIF(MSTP(14).GE.21.AND.MSTP(14).LE.24) THEN
2887         IF(MSTP(14).EQ.21) MINT(123)=0
2888         IF(MSTP(14).EQ.22.OR.MSTP(14).EQ.23) MINT(123)=4
2889         IF(MSTP(14).EQ.24) MINT(123)=1
2890       ELSEIF(MSTP(14).GE.26.AND.MSTP(14).LE.29) THEN
2891         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28) MINT(123)=8
2892         IF(MSTP(14).EQ.27.OR.MSTP(14).EQ.29) MINT(123)=9
2893       ENDIF
2894  
2895 C...Set up kinematics of process.
2896       CALL PYINKI(0)
2897  
2898 C...Set up kinematics for photons inside leptons.
2899       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(1,WTGAGA)
2900  
2901 C...Precalculate flavour selection weights.
2902       CALL PYKFIN
2903  
2904 C...Loop over gamma-p or gamma-gamma alternatives.
2905       CKIN3=CKIN(3)
2906       MSAV48=0
2907       DO 160 IGA=1,MINT(121)
2908         CKIN(3)=CKIN3
2909         MINT(122)=IGA
2910  
2911 C...Select partonic subprocesses to be included in the simulation.
2912         CALL PYINPR
2913         MINT(101)=1
2914         MINT(102)=1
2915         MINT(103)=MINT(11)
2916         MINT(104)=MINT(12)
2917  
2918 C...Count number of subprocesses on.
2919         MINT(48)=0
2920         DO 130 ISUB=1,500
2921           IF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
2922      &    MSUB(ISUB).EQ.1.AND.MINT(121).GT.1) THEN
2923             MSUB(ISUB)=0
2924           ELSEIF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
2925      &    MSUB(ISUB).EQ.1) THEN
2926             WRITE(MSTU(11),5200) ISUB,CHLH(MINT(41)),CHLH(MINT(42))
2927             CALL PYSTOP(1)
2928           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).EQ.-1) THEN
2929             WRITE(MSTU(11),5300) ISUB
2930             CALL PYSTOP(1)
2931           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).LE.-2) THEN
2932             WRITE(MSTU(11),5400) ISUB
2933             CALL PYSTOP(1)
2934           ELSEIF(MSUB(ISUB).EQ.1) THEN
2935             MINT(48)=MINT(48)+1
2936           ENDIF
2937   130   CONTINUE
2938  
2939 C...Stop or raise warning flag if no subprocesses on.
2940         IF(MINT(121).EQ.1.AND.MINT(48).EQ.0) THEN
2941           IF(MSTP(127).NE.1) THEN
2942             WRITE(MSTU(11),5500)
2943             CALL PYSTOP(1)
2944           ELSE
2945             WRITE(MSTU(11),5700)
2946             MSTI(53)=1
2947           ENDIF
2948         ENDIF
2949         MINT(49)=MINT(48)-MSUB(91)-MSUB(92)-MSUB(93)-MSUB(94)
2950         MSAV48=MSAV48+MINT(48)
2951  
2952 C...Reset variables for cross-section calculation.
2953         DO 150 I=0,500
2954           DO 140 J=1,3
2955             NGEN(I,J)=0
2956             XSEC(I,J)=0D0
2957   140     CONTINUE
2958   150   CONTINUE
2959  
2960 C...Find parametrized total cross-sections.
2961         CALL PYXTOT
2962         VINT(318)=VINT(317)
2963  
2964 C...Maxima of differential cross-sections.
2965         IF(MSTP(121).LE.1) CALL PYMAXI
2966  
2967 C...Initialize possibility of pileup events.
2968         IF(MINT(121).GT.1) MSTP(131)=0
2969         IF(MSTP(131).NE.0) CALL PYPILE(1)
2970  
2971 C...Initialize multiple interactions with variable impact parameter.
2972         IF(MINT(50).EQ.1) THEN
2973           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
2974           IF(MOD(MSTP(81),10).EQ.0.AND.(CKIN(3).GT.PTMN.OR.
2975      &    ((MSEL.NE.1.AND.MSEL.NE.2)))) MSTP(82)=MIN(1,MSTP(82))
2976           IF((MINT(49).NE.0.OR.MSTP(131).NE.0).AND.MSTP(82).GE.2) THEN
2977             MINT(35)=1
2978             CALL PYMULT(1)
2979             MINT(35)=3
2980             CALL PYMIGN(1)
2981           ENDIF
2982         ENDIF
2983  
2984 C...Save results for gamma-p and gamma-gamma alternatives.
2985         IF(MINT(121).GT.1) CALL PYSAVE(1,IGA)
2986   160 CONTINUE
2987  
2988 C...Initialization finished.
2989       IF(MSAV48.EQ.0) THEN
2990         IF(MSTP(127).NE.1) THEN
2991           WRITE(MSTU(11),5500)
2992           CALL PYSTOP(1)
2993         ELSE
2994           WRITE(MSTU(11),5700)
2995           MSTI(53)=1
2996         ENDIF
2997       ENDIF
2998   170 IF(MSTP(122).GE.1) WRITE(MSTU(11),5600)
2999  
3000 C...Formats for initialization information.
3001  5100 FORMAT('1',18('*'),1X,'PYINIT: initialization of PYTHIA ',
3002      &'routines',1X,17('*'))
3003  5200 FORMAT(1X,'Error: process number ',I3,' not meaningful for ',A6,
3004      &'-',A6,' interactions.'/1X,'Execution stopped!')
3005  5300 FORMAT(1X,'Error: requested subprocess',I4,' not implemented.'/
3006      &1X,'Execution stopped!')
3007  5400 FORMAT(1X,'Error: requested subprocess',I4,' not existing.'/
3008      &1X,'Execution stopped!')
3009  5500 FORMAT(1X,'Error: no subprocess switched on.'/
3010      &1X,'Execution stopped.')
3011  5600 FORMAT(/1X,22('*'),1X,'PYINIT: initialization completed',1X,
3012      &22('*'))
3013  5700 FORMAT(1X,'Error: no subprocess switched on.'/
3014      &1X,'Execution will stop if you try to generate events.')
3015  
3016       RETURN
3017       END
3018  
3019 C*********************************************************************
3020  
3021 C...PYEVNT
3022 C...Administers the generation of a high-pT event via calls to
3023 C...a number of subroutines.
3024  
3025       SUBROUTINE PYEVNT
3026  
3027 C...Double precision and integer declarations.
3028       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3029       IMPLICIT INTEGER(I-N)
3030       INTEGER PYK,PYCHGE,PYCOMP
3031 C...Commonblocks.
3032       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
3033       COMMON/PYCTAG/NCT,MCT(4000,2)
3034       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3035       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3036       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3037       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3038       COMMON/PYINT1/MINT(400),VINT(400)
3039       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3040       COMMON/PYINT4/MWID(500),WIDS(500,5)
3041       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3042       SAVE /PYJETS/,/PYDAT1/,/PYCTAG/,/PYDAT2/,/PYDAT3/,/PYPARS/,
3043      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/
3044 C...Local array.
3045       DIMENSION VTX(4)
3046  
3047 C...Optionally let PYEVNW do the whole job.
3048       IF(MSTP(81).GE.20) THEN
3049         CALL PYEVNW
3050         RETURN
3051       ENDIF
3052  
3053 C...Stop if no subprocesses on.
3054       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
3055         WRITE(MSTU(11),5100)
3056         CALL PYSTOP(1)
3057       ENDIF
3058  
3059 C...Initial values for some counters.
3060       MSTU(1)=0
3061       MSTU(2)=0
3062       N=0
3063       MINT(5)=MINT(5)+1
3064       MINT(7)=0
3065       MINT(8)=0
3066       MINT(30)=0
3067       MINT(83)=0
3068       MINT(84)=MSTP(126)
3069       MSTU(24)=0
3070       MSTU70=0
3071       MSTJ14=MSTJ(14)
3072 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
3073       NCT=0
3074       MINT(33)=0
3075  
3076 C...Let called routines know call is from PYEVNT (not PYEVNW).
3077       MINT(35)=1
3078       IF (MSTP(81).GE.10) MINT(35)=2
3079  
3080 C...If variable energies: redo incoming kinematics and cross-section.
3081       MSTI(61)=0
3082       IF(MSTP(171).EQ.1) THEN
3083         CALL PYINKI(1)
3084         IF(MSTI(61).EQ.1) THEN
3085           MINT(5)=MINT(5)-1
3086           RETURN
3087         ENDIF
3088         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
3089         CALL PYXTOT
3090       ENDIF
3091  
3092 C...Loop over number of pileup events; check space left.
3093       IF(MSTP(131).LE.0) THEN
3094         NPILE=1
3095       ELSE
3096         CALL PYPILE(2)
3097         NPILE=MINT(81)
3098       ENDIF
3099       DO 270 IPILE=1,NPILE
3100         IF(MINT(84)+100.GE.MSTU(4)) THEN
3101           CALL PYERRM(11,
3102      &    '(PYEVNT:) no more space in PYJETS for pileup events')
3103           IF(MSTU(21).GE.1) GOTO 280
3104         ENDIF
3105         MINT(82)=IPILE
3106  
3107 C...Generate variables of hard scattering.
3108         MINT(51)=0
3109         MSTI(52)=0
3110   100   CONTINUE
3111         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
3112         MINT(31)=0
3113         MINT(39)=0
3114         MINT(51)=0
3115         MINT(57)=0
3116         CALL PYRAND
3117         IF(MSTI(61).EQ.1) THEN
3118           MINT(5)=MINT(5)-1
3119           RETURN
3120         ENDIF
3121         IF(MINT(51).EQ.2) RETURN
3122         ISUB=MINT(1)
3123         IF(MSTP(111).EQ.-1) GOTO 260
3124  
3125 C...Loopback point if PYPREP fails, especially for junction topologies.
3126         NPREP=0
3127         MNT31S=MINT(31)
3128   110   NPREP=NPREP+1
3129         MINT(31)=MNT31S
3130  
3131         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
3132 C...Hard scattering (including low-pT):
3133 C...reconstruct kinematics and colour flow of hard scattering.
3134           MINT31=MINT(31)
3135   120     MINT(31)=MINT31
3136           MINT(51)=0
3137           CALL PYSCAT
3138           IF(MINT(51).EQ.1) GOTO 100
3139           IPU1=MINT(84)+1
3140           IPU2=MINT(84)+2
3141           IF(ISUB.EQ.95) GOTO 140
3142  
3143 C...Reset statistics on activity in event.
3144         DO 130 J=351,359
3145           MINT(J)=0
3146           VINT(J)=0D0
3147   130   CONTINUE
3148  
3149 C...Showering of initial state partons (optional).
3150           NFIN=N
3151           ALAMSV=PARJ(81)
3152           PARJ(81)=PARP(72)
3153           IF(MSTP(61).GE.1.AND.MINT(47).GE.2.AND.MINT(111).NE.12)
3154      &    CALL PYSSPA(IPU1,IPU2)
3155           PARJ(81)=ALAMSV
3156           IF(MINT(51).EQ.1) GOTO 100
3157  
3158 C...Showering of final state partons (optional).
3159           ALAMSV=PARJ(81)
3160           PARJ(81)=PARP(72)
3161           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10)
3162      &    THEN
3163             IPU3=MINT(84)+3
3164             IPU4=MINT(84)+4
3165             IF(ISET(ISUB).EQ.5) IPU4=-3
3166             QMAX=VINT(55)
3167             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
3168           if(parj(200).eq.1.) then
3169               CALL PYSHOWQ(IPU3,IPU4,QMAX)
3170           
3171           else
3172               CALL PYSHOW(IPU3,IPU4,QMAX)
3173           endif  
3174           ELSEIF(ISET(ISUB).EQ.11) THEN
3175             CALL PYADSH(NFIN)
3176           ENDIF
3177           PARJ(81)=ALAMSV
3178  
3179 C...Allow possibility for user to abort event generation.
3180           IVETO=0
3181           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO)
3182           IF(IVETO.EQ.1) GOTO 100
3183  
3184 C...Decay of final state resonances.
3185           MINT(32)=0
3186           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0)
3187           IF(MINT(51).EQ.1) GOTO 100
3188           MINT(52)=N
3189  
3190  
3191 C...Multiple interactions - PYTHIA 6.3 intermediate style.
3192   140     IF(MSTP(81).GE.10.AND.MINT(50).EQ.1) THEN
3193             IF(ISUB.EQ.95) MINT(31)=MINT(31)+1
3194             CALL PYMIGN(6)
3195             IF(MINT(51).EQ.1) GOTO 100
3196             MINT(53)=N
3197  
3198 C...Beam remnant flavour and colour assignments - new scheme.
3199             CALL PYMIHK
3200             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3201      &      GOTO 120
3202             IF(MINT(51).EQ.1) GOTO 100
3203  
3204 C...Primordial kT and beam remnant momentum sharing - new scheme.
3205             CALL PYMIRM
3206             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3207      &      GOTO 120
3208             IF(MINT(51).EQ.1) GOTO 100
3209             IF(ISUB.EQ.95) MINT(31)=MINT(31)-1
3210  
3211 C...Multiple interactions - PYTHIA 6.2 style.
3212           ELSEIF(MINT(111).NE.12) THEN
3213             IF (MSTP(81).GE.1.AND.MINT(50).EQ.1.AND.ISUB.NE.95) THEN
3214               CALL PYMULT(6)
3215               MINT(53)=N
3216             ENDIF
3217  
3218 C...Hadron remnants and primordial kT.
3219             CALL PYREMN(IPU1,IPU2)
3220             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3221      &           110
3222             IF(MINT(51).EQ.1) GOTO 100
3223           ENDIF
3224  
3225         ELSEIF(ISUB.NE.99) THEN
3226 C...Diffractive and elastic scattering.
3227           CALL PYDIFF
3228  
3229         ELSE
3230 C...DIS scattering (photon flux external).
3231           CALL PYDISG
3232           IF(MINT(51).EQ.1) GOTO 100
3233         ENDIF
3234  
3235 C...Check that no odd resonance left undecayed.
3236         MINT(54)=N
3237         IF(MSTP(111).GE.1) THEN
3238           NFIX=N
3239           DO 150 I=MINT(84)+1,NFIX
3240             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3241      &      K(I,2).NE.22) THEN
3242               KCA=PYCOMP(K(I,2))
3243               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3244                 CALL PYRESD(I)
3245                 IF(MINT(51).EQ.1) GOTO 100
3246               ENDIF
3247             ENDIF
3248   150     CONTINUE
3249         ENDIF
3250  
3251 C...Boost hadronic subsystem to overall rest frame.
3252 C..(Only relevant when photon inside lepton beam.)
3253         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3254  
3255 C...Recalculate energies from momenta and masses (if desired).
3256         IF(MSTP(113).GE.1) THEN
3257           DO 160 I=MINT(83)+1,N
3258             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3259      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3260   160     CONTINUE
3261           NRECAL=N
3262         ENDIF
3263  
3264 C...Colour reconnection before string formation
3265         IF (MSTP(95).GE.2) CALL PYFSCR(MINT(84)+1)
3266
3267 C...Rearrange partons along strings, check invariant mass cuts.
3268         MSTU(28)=0
3269         IF(MSTP(111).LE.0) MSTJ(14)=-1
3270         CALL PYPREP(MINT(84)+1)
3271         MSTJ(14)=MSTJ14
3272         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3273           MSTU(24)=0
3274           GOTO 100
3275         ENDIF
3276         IF (MINT(51).EQ.1.AND.NPREP.LE.5) GOTO 110
3277         IF (MINT(51).EQ.1) GOTO 100
3278         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3279         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3280           DO 190 I=MINT(84)+1,N
3281             IF(K(I,2).EQ.94) THEN
3282               DO 180 I1=I+1,MIN(N,I+10)
3283                 IF(K(I1,3).EQ.I) THEN
3284                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3285                   IF(K(I1,3).EQ.0) THEN
3286                     DO 170 II=MINT(84)+1,I-1
3287                         IF(K(II,2).EQ.K(I1,2)) THEN
3288                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3289      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3290                         ENDIF
3291   170               CONTINUE
3292                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3293                   ENDIF
3294                 ENDIF
3295   180         CONTINUE
3296             ENDIF
3297   190     CONTINUE
3298           CALL PYEDIT(12)
3299           CALL PYEDIT(14)
3300           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3301           IF(MSTP(125).EQ.0) MINT(4)=0
3302           DO 210 I=MINT(83)+1,N
3303             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3304               DO 200 I1=I+1,N
3305                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3306                 IF(K(I1,3).EQ.I) K(I,5)=I1
3307   200         CONTINUE
3308             ENDIF
3309   210     CONTINUE
3310         ENDIF
3311  
3312 C...Introduce separators between sections in PYLIST event listing.
3313         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3314           MSTU70=1
3315           MSTU(71)=N
3316         ELSEIF(IPILE.EQ.1) THEN
3317           MSTU70=3
3318           MSTU(71)=2
3319           MSTU(72)=MINT(4)
3320           MSTU(73)=N
3321         ENDIF
3322  
3323 C...Go back to lab frame (needed for vertices, also in fragmentation).
3324         CALL PYFRAM(1)
3325  
3326 C...Set nonvanishing production vertex (optional).
3327         IF(MSTP(151).EQ.1) THEN
3328           DO 220 J=1,4
3329             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3330      &      SIN(PARU(2)*PYR(0))
3331   220     CONTINUE
3332           DO 240 I=MINT(83)+1,N
3333             DO 230 J=1,4
3334               V(I,J)=V(I,J)+VTX(J)
3335   230       CONTINUE
3336   240     CONTINUE
3337         ENDIF
3338  
3339 C...Perform hadronization (if desired).
3340         IF(MSTP(111).GE.1) THEN
3341           CALL PYEXEC
3342           IF(MSTU(24).NE.0) GOTO 100
3343         ENDIF
3344         IF(MSTP(113).GE.1) THEN
3345           DO 250 I=NRECAL,N
3346             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3347      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3348   250     CONTINUE
3349         ENDIF
3350         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3351  
3352 C...Store event information and calculate Monte Carlo estimates of
3353 C...subprocess cross-sections.
3354   260   IF(IPILE.EQ.1) CALL PYDOCU
3355  
3356 C...Set counters for current pileup event and loop to next one.
3357         MSTI(41)=IPILE
3358         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3359         IF(MSTU70.LT.10) THEN
3360           MSTU70=MSTU70+1
3361           MSTU(70+MSTU70)=N
3362         ENDIF
3363         MINT(83)=N
3364         MINT(84)=N+MSTP(126)
3365         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3366   270 CONTINUE
3367  
3368 C...Generic information on pileup events. Reconstruct missing history.
3369       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3370         PARI(91)=VINT(132)
3371         PARI(92)=VINT(133)
3372         PARI(93)=VINT(134)
3373         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3374       ENDIF
3375       CALL PYEDIT(16)
3376  
3377 C...Transform to the desired coordinate frame.
3378   280 CALL PYFRAM(MSTP(124))
3379       MSTU(70)=MSTU70
3380       PARU(21)=VINT(1)
3381  
3382 C...Error messages
3383  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3384      &1X,'Execution stopped.')
3385  
3386       RETURN
3387       END
3388  
3389 C*********************************************************************
3390  
3391 C...PYEVNW
3392 C...Administers the generation of a high-pT event via calls to
3393 C...a number of subroutines for the new multiple interactions and
3394 C...showering framework.
3395  
3396       SUBROUTINE PYEVNW
3397  
3398 C...Double precision and integer declarations.
3399       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3400       IMPLICIT INTEGER(I-N)
3401       INTEGER PYK,PYCHGE,PYCOMP
3402 C...Commonblocks.
3403       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
3404       COMMON/PYCTAG/NCT,MCT(4000,2)
3405       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3406       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3407       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3408       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3409       COMMON/PYINT1/MINT(400),VINT(400)
3410       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3411       COMMON/PYINT4/MWID(500),WIDS(500,5)
3412       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3413       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
3414      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
3415      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
3416       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
3417      &     /PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/,/PYINTM/
3418 C...Local arrays.
3419       DIMENSION VTX(4)
3420  
3421 C...Stop if no subprocesses on.
3422       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
3423         WRITE(MSTU(11),5100)
3424         CALL PYSTOP(1)
3425       ENDIF
3426  
3427 C...Initial values for some counters.
3428       MSTU(1)=0
3429       MSTU(2)=0
3430       N=0
3431       MINT(5)=MINT(5)+1
3432       MINT(7)=0
3433       MINT(8)=0
3434       MINT(30)=0
3435       MINT(83)=0
3436       MINT(84)=MSTP(126)
3437       MSTU(24)=0
3438       MSTU70=0
3439       MSTJ14=MSTJ(14)
3440 C...Normally, use K(I,4:5) colour info rather than /PYCT/.
3441       NCT=0
3442       MINT(33)=0
3443  
3444 C...Let called routines know call is from PYEVNW (not PYEVNT).
3445       MINT(35)=3
3446  
3447 C...If variable energies: redo incoming kinematics and cross-section.
3448       MSTI(61)=0
3449       IF(MSTP(171).EQ.1) THEN
3450         CALL PYINKI(1)
3451         IF(MSTI(61).EQ.1) THEN
3452           MINT(5)=MINT(5)-1
3453           RETURN
3454         ENDIF
3455         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
3456         CALL PYXTOT
3457       ENDIF
3458  
3459 C...Loop over number of pileup events; check space left.
3460       IF(MSTP(131).LE.0) THEN
3461         NPILE=1
3462       ELSE
3463         CALL PYPILE(2)
3464         NPILE=MINT(81)
3465       ENDIF
3466       DO 300 IPILE=1,NPILE
3467         IF(MINT(84)+100.GE.MSTU(4)) THEN
3468           CALL PYERRM(11,
3469      &    '(PYEVNW:) no more space in PYJETS for pileup events')
3470           IF(MSTU(21).GE.1) GOTO 310
3471         ENDIF
3472         MINT(82)=IPILE
3473  
3474 C...Generate variables of hard scattering.
3475         MINT(51)=0
3476         MSTI(52)=0
3477   100   CONTINUE
3478         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
3479         MINT(31)=0
3480         MINT(39)=0
3481         MINT(36)=0
3482         MINT(51)=0
3483         MINT(57)=0
3484         CALL PYRAND
3485         IF(MSTI(61).EQ.1) THEN
3486           MINT(5)=MINT(5)-1
3487           RETURN
3488         ENDIF
3489         IF(MINT(51).EQ.2) RETURN
3490         ISUB=MINT(1)
3491         IF(MSTP(111).EQ.-1) GOTO 290
3492  
3493 C...Loopback point if PYPREP fails, especially for junction topologies.
3494         NPREP=0
3495         MNT31S=MINT(31)
3496   110   NPREP=NPREP+1
3497         MINT(31)=MNT31S
3498  
3499         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
3500 C...Hard scattering (including low-pT):
3501 C...reconstruct kinematics and colour flow of hard scattering.
3502           MINT31=MINT(31)
3503   120     MINT(31)=MINT31
3504           MINT(51)=0
3505           CALL PYSCAT
3506           IF(MINT(51).EQ.1) GOTO 100
3507           NPARTD=N
3508           NFIN=N
3509  
3510 C...Intertwined initial state showers and multiple interactions.
3511 C...Force no IS showers if no pdfs defined: MSTP(61) -> 0 for PYEVOL.
3512 C...Force no MI if cross section not known: MSTP(81) -> 0 for PYEVOL.
3513           MSTP61=MSTP(61)
3514           IF (MINT(47).LT.2) MSTP(61)=0
3515           MSTP81=MSTP(81)
3516           IF (MINT(50).EQ.0) MSTP(81)=0
3517           IF ((MSTP(61).GE.1.OR.MOD(MSTP(81),10).GE.0).AND.
3518      &    MINT(111).NE.12) THEN
3519 C...Absolute max pT2 scale for evolution: phase space limit.
3520             PT2MXS=0.25D0*VINT(2)
3521 C...Check if more constrained by ISR and MI max scales:
3522             PT2MXS=MIN(PT2MXS,MAX(VINT(56),VINT(62)))
3523 C...Loopback point in case of failure in evolution.
3524             LOOP=0
3525   130       LOOP=LOOP+1
3526             MINT(51)=0
3527             IF(LOOP.GT.100) THEN
3528               CALL PYERRM(9,'(PYEVNW:) failed to evolve shower or '
3529      &             //'multiple interactions.')
3530               MINT(51)=1
3531               RETURN
3532             ENDIF
3533  
3534 C...Pre-initialization of interleaved MI/ISR/JI evolution, only done
3535 C...once per event. (E.g. compute constants and save variables to be
3536 C...restored later in case of failure.)
3537             IF (LOOP.EQ.1) CALL PYEVOL(-1,DUMMY1,DUMMY2)
3538  
3539 C...Initialize interleaved MI/ISR/JI evolution.
3540 C...PT2MAX: absolute upper limit for evolution - Initialization may
3541 C...        return a PT2MAX which is lower than this.
3542 C...PT2MIN: absolute lower limit for evolution - Initialization may
3543 C...        return a PT2MIN which is larger than this (e.g. Lambda_QCD).
3544             PT2MAX=PT2MXS
3545             PT2MIN=0D0
3546             CALL PYEVOL(0,PT2MAX,PT2MIN)
3547             IF (MINT(51).EQ.1) GOTO 130
3548  
3549 C...Perform interleaved MI/ISR/JI evolution from PT2MAX to PT2MIN.
3550 C...In principle factorized, so can be stopped and restarted.
3551 C...Example: stop/start at pT=10 GeV. (Commented out for now.)
3552 C            PT2MED=MAX(10D0**2,PT2MIN)
3553 C            CALL PYEVOL(1,PT2MAX,PT2MED)
3554 C            IF (MINT(51).EQ.1) GOTO 160
3555 C            PT2MAX=PT2MED
3556             CALL PYEVOL(1,PT2MAX,PT2MIN)
3557             IF (MINT(51).EQ.1) GOTO 130
3558  
3559 C...Finalize interleaved MI/ISR/JI evolution.
3560             CALL PYEVOL(2,PT2MAX,PT2MIN)
3561             IF (MINT(51).EQ.1) GOTO 130
3562  
3563           ENDIF
3564           MSTP(61)=MSTP61
3565           MSTP(81)=MSTP81
3566           IF(MINT(51).EQ.1) GOTO 100
3567 C...(MINT(52) is actually obsolete in this routine. Set anyway
3568 C...to ensure PYDOCU stable.)
3569           MINT(52)=N
3570           MINT(53)=N
3571  
3572 C...Beam remnants - new scheme.
3573   140     IF(MINT(50).EQ.1) THEN
3574             IF (ISUB.EQ.95) MINT(31)=1
3575  
3576 C...Beam remnant flavour and colour assignments - new scheme.
3577             CALL PYMIHK
3578             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3579      &           GOTO 120
3580             IF(MINT(51).EQ.1) GOTO 100
3581  
3582 C...Primordial kT and beam remnant momentum sharing - new scheme.
3583             CALL PYMIRM
3584             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3585      &      GOTO 120
3586             IF(MINT(51).EQ.1) GOTO 100
3587             IF (ISUB.EQ.95) MINT(31)=0
3588           ELSEIF(MINT(111).NE.12) THEN
3589 C...Hadron remnants and primordial kT - old model.
3590 C...Happens e.g. for direct photon on one side.
3591             IPU1=IMI(1,1,1)
3592             IPU2=IMI(2,1,1)
3593             CALL PYREMN(IPU1,IPU2)
3594             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3595      &           110
3596             IF(MINT(51).EQ.1) GOTO 100
3597 C...PYREMN does not set colour tags for BRs, so needs to be done now.
3598             DO 160 I=MINT(53)+1,N
3599               DO 150 KCS=4,5
3600                 IDA=MOD(K(I,KCS),MSTU(5))
3601                 IF (IDA.NE.0) THEN
3602                   MCT(I,KCS-3)=MCT(IDA,6-KCS)
3603                 ELSE
3604                   MCT(I,KCS-3)=0
3605                 ENDIF
3606   150         CONTINUE
3607   160       CONTINUE
3608 C...Instruct PYPREP to use colour tags
3609             MINT(33)=1
3610
3611             DO 360 MQGST=1,2
3612               DO 350 I=MINT(84)+1,N
3613   
3614 C...Look for coloured string endpoint, or (later) leftover gluon.
3615                 IF (K(I,1).NE.3) GOTO 350
3616                 KC=PYCOMP(K(I,2))
3617                 IF(KC.EQ.0) GOTO 350
3618                 KQ=KCHG(KC,2)
3619                 IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
3620   
3621 C...  Pick up loose string end with no previous tag.
3622                 KCS=4
3623                 IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
3624                 IF(MCT(I,KCS-3).NE.0) GOTO 350
3625                   
3626                 CALL PYCTTR(I,KCS,I)
3627                 IF(MINT(51).NE.0) RETURN
3628   
3629  350          CONTINUE
3630  360        CONTINUE
3631 C...Now delete any colour processing information if set (since partons
3632 C...otherwise not FS showered!)
3633             DO 170 I=MINT(84)+1,N
3634               IF (I.LE.N) THEN
3635                 K(I,4)=MOD(K(I,4),MSTU(5)**2)
3636                 K(I,5)=MOD(K(I,5),MSTU(5)**2)
3637               ENDIF
3638   170       CONTINUE
3639           ENDIF
3640  
3641 C...Showering of final state partons (optional).
3642           ALAMSV=PARJ(81)
3643           PARJ(81)=PARP(72)
3644           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.1.AND.ISET(ISUB).LE.10)
3645      &    THEN
3646             QMAX=VINT(55)
3647             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
3648             CALL PYPTFS(1,QMAX,0D0,PTGEN)
3649 C...External processes: handle successive showers.
3650           ELSEIF(ISET(ISUB).EQ.11) THEN
3651             CALL PYADSH(NFIN)
3652           ENDIF
3653           PARJ(81)=ALAMSV
3654
3655 C...Allow possibility for user to abort event generation.
3656           IVETO=0
3657           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO) ! sm
3658           IF(IVETO.EQ.1) GOTO 100
3659
3660  
3661 C...Decay of final state resonances.
3662           MINT(32)=0
3663           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) THEN
3664             CALL PYRESD(0)
3665             IF(MINT(51).NE.0) GOTO 100
3666           ENDIF
3667  
3668           IF(MINT(51).EQ.1) GOTO 100
3669  
3670         ELSEIF(ISUB.NE.99) THEN
3671 C...Diffractive and elastic scattering.
3672           CALL PYDIFF
3673  
3674         ELSE
3675 C...DIS scattering (photon flux external).
3676           CALL PYDISG
3677           IF(MINT(51).EQ.1) GOTO 100
3678         ENDIF
3679  
3680 C...Check that no odd resonance left undecayed.
3681         MINT(54)=N
3682         IF(MSTP(111).GE.1) THEN
3683           NFIX=N
3684           DO 180 I=MINT(84)+1,NFIX
3685             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3686      &      K(I,2).NE.22) THEN
3687               KCA=PYCOMP(K(I,2))
3688               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3689                 CALL PYRESD(I)
3690                 IF(MINT(51).EQ.1) GOTO 100
3691               ENDIF
3692             ENDIF
3693   180     CONTINUE
3694         ENDIF
3695  
3696 C...Boost hadronic subsystem to overall rest frame.
3697 C..(Only relevant when photon inside lepton beam.)
3698         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3699  
3700 C...Recalculate energies from momenta and masses (if desired).
3701         IF(MSTP(113).GE.1) THEN
3702           DO 190 I=MINT(83)+1,N
3703             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3704      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3705   190     CONTINUE
3706           NRECAL=N
3707         ENDIF
3708  
3709 C...Colour reconnection before string formation
3710         CALL PYFSCR(MINT(84)+1)
3711  
3712 C...Rearrange partons along strings, check invariant mass cuts.
3713         MSTU(28)=0
3714         IF(MSTP(111).LE.0) MSTJ(14)=-1
3715         CALL PYPREP(MINT(84)+1)
3716         MSTJ(14)=MSTJ14
3717         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3718           MSTU(24)=0
3719           GOTO 100
3720         ENDIF
3721         IF(MINT(51).EQ.1) GOTO 110
3722         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3723         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3724           DO 220 I=MINT(84)+1,N
3725             IF(K(I,2).EQ.94) THEN
3726               DO 210 I1=I+1,MIN(N,I+10)
3727                 IF(K(I1,3).EQ.I) THEN
3728                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3729                   IF(K(I1,3).EQ.0) THEN
3730                     DO 200 II=MINT(84)+1,I-1
3731                         IF(K(II,2).EQ.K(I1,2)) THEN
3732                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3733      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3734                         ENDIF
3735   200               CONTINUE
3736                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3737                   ENDIF
3738                 ENDIF
3739   210         CONTINUE
3740             ENDIF
3741   220     CONTINUE
3742           CALL PYEDIT(12)
3743           CALL PYEDIT(14)
3744           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3745           IF(MSTP(125).EQ.0) MINT(4)=0
3746           DO 240 I=MINT(83)+1,N
3747             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3748               DO 230 I1=I+1,N
3749                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3750                 IF(K(I1,3).EQ.I) K(I,5)=I1
3751   230         CONTINUE
3752             ENDIF
3753   240     CONTINUE
3754         ENDIF
3755  
3756 C...Introduce separators between sections in PYLIST event listing.
3757         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3758           MSTU70=1
3759           MSTU(71)=N
3760         ELSEIF(IPILE.EQ.1) THEN
3761           MSTU70=3
3762           MSTU(71)=2
3763           MSTU(72)=MINT(4)
3764           MSTU(73)=N
3765         ENDIF
3766  
3767 C...Go back to lab frame (needed for vertices, also in fragmentation).
3768         CALL PYFRAM(1)
3769  
3770 C...Set nonvanishing production vertex (optional).
3771         IF(MSTP(151).EQ.1) THEN
3772           DO 250 J=1,4
3773             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3774      &      SIN(PARU(2)*PYR(0))
3775   250     CONTINUE
3776           DO 270 I=MINT(83)+1,N
3777             DO 260 J=1,4
3778               V(I,J)=V(I,J)+VTX(J)
3779   260       CONTINUE
3780   270     CONTINUE
3781         ENDIF
3782  
3783 C...Perform hadronization (if desired).
3784         IF(MSTP(111).GE.1) THEN
3785           CALL PYEXEC
3786           IF(MSTU(24).NE.0) GOTO 100
3787         ENDIF
3788         IF(MSTP(113).GE.1) THEN
3789           DO 280 I=NRECAL,N
3790             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3791      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3792   280     CONTINUE
3793         ENDIF
3794         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3795  
3796 C...Store event information and calculate Monte Carlo estimates of
3797 C...subprocess cross-sections.
3798   290   IF(IPILE.EQ.1) CALL PYDOCU
3799  
3800 C...Set counters for current pileup event and loop to next one.
3801         MSTI(41)=IPILE
3802         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3803         IF(MSTU70.LT.10) THEN
3804           MSTU70=MSTU70+1
3805           MSTU(70+MSTU70)=N
3806         ENDIF
3807         MINT(83)=N
3808         MINT(84)=N+MSTP(126)
3809         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3810   300 CONTINUE
3811  
3812 C...Generic information on pileup events. Reconstruct missing history.
3813       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3814         PARI(91)=VINT(132)
3815         PARI(92)=VINT(133)
3816         PARI(93)=VINT(134)
3817         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3818       ENDIF
3819       CALL PYEDIT(16)
3820  
3821 C...Transform to the desired coordinate frame.
3822   310 CALL PYFRAM(MSTP(124))
3823       MSTU(70)=MSTU70
3824       PARU(21)=VINT(1)
3825  
3826 C...Error messages
3827  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3828      &1X,'Execution stopped.')
3829  
3830       RETURN
3831       END
3832  
3833  
3834 C***********************************************************************
3835  
3836 C...PYSTAT
3837 C...Prints out information about cross-sections, decay widths, branching
3838 C...ratios, kinematical limits, status codes and parameter values.
3839  
3840       SUBROUTINE PYSTAT(MSTAT)
3841  
3842 C...Double precision and integer declarations.
3843       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3844       IMPLICIT INTEGER(I-N)
3845       INTEGER PYK,PYCHGE,PYCOMP
3846 C...Parameter statement to help give large particle numbers.
3847       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
3848      &KEXCIT=4000000,KDIMEN=5000000)
3849       PARAMETER (EPS=1D-3)
3850 C...Commonblocks.
3851       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3852       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3853       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3854       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
3855       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3856       COMMON/PYINT1/MINT(400),VINT(400)
3857       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3858       COMMON/PYINT4/MWID(500),WIDS(500,5)
3859       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3860       COMMON/PYINT6/PROC(0:500)
3861       CHARACTER PROC*28, CHTMP*16
3862       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
3863       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
3864       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
3865      &/PYINT2/,/PYINT4/,/PYINT5/,/PYINT6/,/PYMSSM/,/PYMSRV/
3866 C...Local arrays, character variables and data.
3867       DIMENSION WDTP(0:400),WDTE(0:400,0:5),NMODES(0:20),PBRAT(10)
3868       CHARACTER PROGA(6)*28,CHAU*16,CHKF*16,CHD1*16,CHD2*16,CHD3*16,
3869      &CHIN(2)*12,STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28,
3870      &PROGG9(13)*28,PROGG4(4)*28,PROGG2(2)*28,PROGP4(4)*28
3871       CHARACTER*24 CHD0, CHDC(10)
3872       CHARACTER*6 DNAME(3)
3873       DATA PROGA/
3874      &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
3875      &'VMD/hadron * anomalous      ','direct * direct             ',
3876      &'direct * anomalous          ','anomalous * anomalous       '/
3877       DATA DISGA/'e * VMD','e * anomalous'/
3878       DATA PROGG9/
3879      &'direct * direct             ','direct * VMD                ',
3880      &'direct * anomalous          ','VMD * direct                ',
3881      &'VMD * VMD                   ','VMD * anomalous             ',
3882      &'anomalous * direct          ','anomalous * VMD             ',
3883      &'anomalous * anomalous       ','DIS * VMD                   ',
3884      &'DIS * anomalous             ','VMD * DIS                   ',
3885      &'anomalous * DIS             '/
3886       DATA PROGG4/
3887      &'direct * direct             ','direct * resolved           ',
3888      &'resolved * direct           ','resolved * resolved         '/
3889       DATA PROGG2/
3890      &'direct * hadron             ','resolved * hadron           '/
3891       DATA PROGP4/
3892      &'VMD * hadron                ','direct * hadron             ',
3893      &'anomalous * hadron          ','DIS * hadron                '/
3894       DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
3895      &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
3896      &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
3897      &'     y*_small     ','    eta*_large    ','    eta*_small    ',
3898      &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
3899      &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
3900      &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
3901      &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
3902      &'       tau''       '/
3903       DATA DNAME /'q     ','lepton','nu    '/
3904  
3905 C...Cross-sections.
3906       IF(MSTAT.LE.1) THEN
3907         IF(MINT(121).GT.1) CALL PYSAVE(5,0)
3908         WRITE(MSTU(11),5000)
3909         WRITE(MSTU(11),5100)
3910         WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
3911         DO 100 I=1,500
3912           IF(MSUB(I).NE.1) GOTO 100
3913           WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
3914   100   CONTINUE
3915         IF(MINT(121).GT.1) THEN
3916           WRITE(MSTU(11),5300)
3917           DO 110 IGA=1,MINT(121)
3918             CALL PYSAVE(3,IGA)
3919             IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
3920               WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
3921      &        XSEC(0,3)
3922             ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
3923               WRITE(MSTU(11),5200) IGA,PROGG9(IGA),NGEN(0,3),NGEN(0,1),
3924      &        XSEC(0,3)
3925             ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.30) THEN
3926               WRITE(MSTU(11),5200) IGA,PROGP4(IGA),NGEN(0,3),NGEN(0,1),
3927      &        XSEC(0,3)
3928             ELSEIF(MINT(121).EQ.4) THEN
3929               WRITE(MSTU(11),5200) IGA,PROGG4(IGA),NGEN(0,3),NGEN(0,1),
3930      &        XSEC(0,3)
3931             ELSEIF(MINT(121).EQ.2) THEN
3932               WRITE(MSTU(11),5200) IGA,PROGG2(IGA),NGEN(0,3),NGEN(0,1),
3933      &        XSEC(0,3)
3934             ELSE
3935               WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
3936      &        XSEC(0,3)
3937             ENDIF
3938   110     CONTINUE
3939           CALL PYSAVE(5,0)
3940         ENDIF
3941         WRITE(MSTU(11),5400) MSTU(23),MSTU(30),MSTU(27),
3942      &  1D0-DBLE(NGEN(0,3))/MAX(1D0,DBLE(NGEN(0,2)))
3943  
3944 C...Decay widths and branching ratios.
3945       ELSEIF(MSTAT.EQ.2) THEN
3946         WRITE(MSTU(11),5500)
3947         WRITE(MSTU(11),5600)
3948         DO 140 KC=1,500
3949           KF=KCHG(KC,4)
3950           CALL PYNAME(KF,CHKF)
3951           IOFF=0
3952           IF(KC.LE.22) THEN
3953             IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 140
3954             IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 140
3955             IF(KC.LE.5.OR.(KC.GE.11.AND.KC.LE.16)) IOFF=1
3956             IF(KC.EQ.18.AND.PMAS(18,1).LT.1D0) IOFF=1
3957             IF(KC.EQ.21.OR.KC.EQ.22) IOFF=1
3958           ELSE
3959             IF(MWID(KC).LE.0) GOTO 140
3960             IF(IMSS(1).LE.0.AND.(KF/KSUSY1.EQ.1.OR.
3961      &      KF/KSUSY1.EQ.2)) GOTO 140
3962           ENDIF
3963 C...Off-shell branchings.
3964           IF(IOFF.EQ.1) THEN
3965             NGP=0
3966             IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
3967             IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KF,CHKF(1:10),
3968      &      PMAS(KC,1),0D0,0D0,STATE(MDCY(KC,1)),0D0
3969             DO 120 J=1,MDCY(KC,3)
3970               IDC=J+MDCY(KC,2)-1
3971               NGP1=0
3972               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
3973      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
3974               NGP2=0
3975               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
3976      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
3977               CALL PYNAME(KFDP(IDC,1),CHD1)
3978               CALL PYNAME(KFDP(IDC,2),CHD2)
3979               IF(KFDP(IDC,3).EQ.0) THEN
3980                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3981      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800) IDC,CHD1(1:10),
3982      &          CHD2(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3983               ELSE
3984                 CALL PYNAME(KFDP(IDC,3),CHD3)
3985                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
3986      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5900) IDC,CHD1(1:10),
3987      &          CHD2(1:10),CHD3(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
3988               ENDIF
3989   120       CONTINUE
3990 C...On-shell decays.
3991           ELSE
3992             CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
3993             BRFIN=1D0
3994             IF(WDTE(0,0).LE.0D0) BRFIN=0D0
3995             WRITE(MSTU(11),5700) KF,CHKF(1:10),PMAS(KC,1),WDTP(0),1D0,
3996      &      STATE(MDCY(KC,1)),BRFIN
3997             DO 130 J=1,MDCY(KC,3)
3998               IDC=J+MDCY(KC,2)-1
3999               NGP1=0
4000               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
4001      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
4002               NGP2=0
4003               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
4004      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
4005               BRPRI=0D0
4006               IF(WDTP(0).GT.0D0) BRPRI=WDTP(J)/WDTP(0)
4007               BRFIN=0D0
4008               IF(WDTE(0,0).GT.0D0) BRFIN=WDTE(J,0)/WDTE(0,0)
4009               CALL PYNAME(KFDP(IDC,1),CHD1)
4010               CALL PYNAME(KFDP(IDC,2),CHD2)
4011               IF(KFDP(IDC,3).EQ.0) THEN
4012                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4013      &          WRITE(MSTU(11),5800) IDC,CHD1(1:10),
4014      &          CHD2(1:10),WDTP(J),BRPRI,
4015      &          STATE(MDME(IDC,1)),BRFIN
4016               ELSE
4017                 CALL PYNAME(KFDP(IDC,3),CHD3)
4018                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4019      &          WRITE(MSTU(11),5900) IDC,CHD1(1:10),
4020      &          CHD2(1:10),CHD3(1:10),WDTP(J),BRPRI,
4021      &          STATE(MDME(IDC,1)),BRFIN
4022               ENDIF
4023   130       CONTINUE
4024           ENDIF
4025   140   CONTINUE
4026         WRITE(MSTU(11),6000)
4027  
4028 C...Allowed incoming partons/particles at hard interaction.
4029       ELSEIF(MSTAT.EQ.3) THEN
4030         WRITE(MSTU(11),6100)
4031         CALL PYNAME(MINT(11),CHAU)
4032         CHIN(1)=CHAU(1:12)
4033         CALL PYNAME(MINT(12),CHAU)
4034         CHIN(2)=CHAU(1:12)
4035         WRITE(MSTU(11),6200) CHIN(1),CHIN(2)
4036         DO 150 I=-20,22
4037           IF(I.EQ.0) GOTO 150
4038           IA=IABS(I)
4039           IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 150
4040           IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 150
4041           CALL PYNAME(I,CHAU)
4042           WRITE(MSTU(11),6300) CHAU,STATE(KFIN(1,I)),CHAU,
4043      &    STATE(KFIN(2,I))
4044   150   CONTINUE
4045         WRITE(MSTU(11),6400)
4046  
4047 C...User-defined limits on kinematical variables.
4048       ELSEIF(MSTAT.EQ.4) THEN
4049         WRITE(MSTU(11),6500)
4050         WRITE(MSTU(11),6600)
4051         SHRMAX=CKIN(2)
4052         IF(SHRMAX.LT.0D0) SHRMAX=VINT(1)
4053         WRITE(MSTU(11),6700) CKIN(1),CHKIN(1),SHRMAX
4054         PTHMIN=MAX(CKIN(3),CKIN(5))
4055         PTHMAX=CKIN(4)
4056         IF(PTHMAX.LT.0D0) PTHMAX=0.5D0*SHRMAX
4057         WRITE(MSTU(11),6800) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
4058         WRITE(MSTU(11),6900) CHKIN(3),CKIN(6)
4059         DO 160 I=4,14
4060           WRITE(MSTU(11),6700) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
4061   160   CONTINUE
4062         SPRMAX=CKIN(32)
4063         IF(SPRMAX.LT.0D0) SPRMAX=VINT(1)
4064         WRITE(MSTU(11),6700) CKIN(31),CHKIN(15),SPRMAX
4065         WRITE(MSTU(11),7000)
4066  
4067 C...Status codes and parameter values.
4068       ELSEIF(MSTAT.EQ.5) THEN
4069         WRITE(MSTU(11),7100)
4070         WRITE(MSTU(11),7200)
4071         DO 170 I=1,100
4072           WRITE(MSTU(11),7300) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
4073      &    PARP(100+I)
4074   170   CONTINUE
4075  
4076 C...List of all processes implemented in the program.
4077       ELSEIF(MSTAT.EQ.6) THEN
4078         WRITE(MSTU(11),7400)
4079         WRITE(MSTU(11),7500)
4080         DO 180 I=1,500
4081           IF(ISET(I).LT.0) GOTO 180
4082           WRITE(MSTU(11),7600) I,PROC(I),ISET(I),KFPR(I,1),KFPR(I,2)
4083   180   CONTINUE
4084         WRITE(MSTU(11),7700)
4085  
4086       ELSEIF(MSTAT.EQ.7) THEN
4087       WRITE (MSTU(11),8000)
4088       NMODES(0)=0
4089       NMODES(10)=0
4090       NMODES(9)=0
4091       DO 290 ILR=1,2
4092         DO 280 KFSM=1,16
4093           KFSUSY=ILR*KSUSY1+KFSM
4094           NRVDC=0
4095 C...SDOWN DECAYS
4096           IF (KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5) THEN
4097             NRVDC=3
4098             DO 190 I=1,NRVDC
4099               PBRAT(I)=0D0
4100               NMODES(I)=0
4101   190       CONTINUE
4102             CALL PYNAME(KFSUSY,CHTMP)
4103             CHD0=CHTMP//' '
4104             CHDC(1)=DNAME(3) // ' + ' // DNAME(1)
4105             CHDC(2)=DNAME(2) // ' + ' // DNAME(1)
4106             CHDC(3)=DNAME(1) // ' + ' // DNAME(1)
4107             KC=PYCOMP(KFSUSY)
4108             DO 200 J=1,MDCY(KC,3)
4109               IDC=J+MDCY(KC,2)-1
4110               ID1=IABS(KFDP(IDC,1))
4111               ID2=IABS(KFDP(IDC,2))
4112               IF (KFDP(IDC,3).EQ.0) THEN
4113                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4114      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4115                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4116                   NMODES(1)=NMODES(1)+1
4117                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4118                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4119                 ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4120      &                 .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6)) THEN
4121                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4122                   NMODES(2)=NMODES(2)+1
4123                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4124                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4125                 ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4126      &                 .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4127                   PBRAT(3)=PBRAT(3)+BRAT(IDC)
4128                   NMODES(3)=NMODES(3)+1
4129                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4130                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4131                 ENDIF
4132               ENDIF
4133   200       CONTINUE
4134           ENDIF
4135 C...SUP DECAYS
4136           IF (KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6) THEN
4137             NRVDC=2
4138             DO 210 I=1,NRVDC
4139               NMODES(I)=0
4140               PBRAT(I)=0D0
4141   210       CONTINUE
4142             CALL PYNAME(KFSUSY,CHTMP)
4143             CHD0=CHTMP//' '
4144             CHDC(1)=DNAME(2) // ' + ' // DNAME(1)
4145             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4146             KC=PYCOMP(KFSUSY)
4147             DO 220 J=1,MDCY(KC,3)
4148               IDC=J+MDCY(KC,2)-1
4149               ID1=IABS(KFDP(IDC,1))
4150               ID2=IABS(KFDP(IDC,2))
4151               IF (KFDP(IDC,3).EQ.0) THEN
4152                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4153      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4154                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4155                   NMODES(1)=NMODES(1)+1
4156                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4157                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4158                 ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4159      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4160                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4161                   NMODES(2)=NMODES(2)+1
4162                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4163                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4164                 ENDIF
4165               ENDIF
4166   220       CONTINUE
4167           ENDIF
4168 C...SLEPTON DECAYS
4169           IF (KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15) THEN
4170             NRVDC=2
4171             DO 230 I=1,NRVDC
4172               PBRAT(I)=0D0
4173               NMODES(I)=0
4174   230       CONTINUE
4175             CALL PYNAME(KFSUSY,CHTMP)
4176             CHD0=CHTMP//' '
4177             CHDC(1)=DNAME(3) // ' + ' // DNAME(2)
4178             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4179             KC=PYCOMP(KFSUSY)
4180             DO 240 J=1,MDCY(KC,3)
4181               IDC=J+MDCY(KC,2)-1
4182               ID1=IABS(KFDP(IDC,1))
4183               ID2=IABS(KFDP(IDC,2))
4184               IF (KFDP(IDC,3).EQ.0) THEN
4185                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4186      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4187                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4188                   NMODES(1)=NMODES(1)+1
4189                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4190                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4191                 ENDIF
4192                 IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND.(ID2
4193      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4194                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4195                   NMODES(2)=NMODES(2)+1
4196                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4197                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4198                 ENDIF
4199               ENDIF
4200   240       CONTINUE
4201           ENDIF
4202 C...SNEUTRINO DECAYS
4203           IF ((KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16).AND.ILR.EQ.1)
4204      &         THEN
4205             NRVDC=2
4206             DO 250 I=1,NRVDC
4207               PBRAT(I)=0D0
4208               NMODES(I)=0
4209   250       CONTINUE
4210             CALL PYNAME(KFSUSY,CHTMP)
4211             CHD0=CHTMP//' '
4212             CHDC(1)=DNAME(2) // ' + ' // DNAME(2)
4213             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4214             KC=PYCOMP(KFSUSY)
4215             DO 260 J=1,MDCY(KC,3)
4216               IDC=J+MDCY(KC,2)-1
4217               ID1=IABS(KFDP(IDC,1))
4218               ID2=IABS(KFDP(IDC,2))
4219               IF (KFDP(IDC,3).EQ.0) THEN
4220                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4221      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4222                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4223                   NMODES(1)=NMODES(1)+1
4224                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4225                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4226                 ENDIF
4227                 IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4228      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4229                   NMODES(2)=NMODES(2)+1
4230                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4231                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4232                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4233                 ENDIF
4234               ENDIF
4235   260       CONTINUE
4236           ENDIF
4237           IF (NRVDC.NE.0) THEN
4238             DO 270 I=1,NRVDC
4239               WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4240               NMODES(0)=NMODES(0)+NMODES(I)
4241   270       CONTINUE
4242           ENDIF
4243   280   CONTINUE
4244   290 CONTINUE
4245       DO 370 KFSM=21,37
4246         KFSUSY=KSUSY1+KFSM
4247         NRVDC=0
4248 C...NEUTRALINO DECAYS
4249         IF (KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
4250           NRVDC=4
4251           DO 300 I=1,NRVDC
4252             PBRAT(I)=0D0
4253             NMODES(I)=0
4254   300     CONTINUE
4255           CALL PYNAME(KFSUSY,CHTMP)
4256           CHD0=CHTMP//' '
4257           CHDC(1)=DNAME(3) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4258           CHDC(2)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4259           CHDC(3)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4260           CHDC(4)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4261           KC=PYCOMP(KFSUSY)
4262           DO 310 J=1,MDCY(KC,3)
4263             IDC=J+MDCY(KC,2)-1
4264             ID1=IABS(KFDP(IDC,1))
4265             ID2=IABS(KFDP(IDC,2))
4266             ID3=IABS(KFDP(IDC,3))
4267             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4268      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.11.OR
4269      &           .ID3.EQ.13.OR.ID3.EQ.15)) THEN
4270               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4271               NMODES(1)=NMODES(1)+1
4272               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4273               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4274             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4275      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4276      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4277               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4278               NMODES(2)=NMODES(2)+1
4279               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4280               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4281             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4282      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4283      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4284               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4285               NMODES(3)=NMODES(3)+1
4286               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4287               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4288             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4289      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4290      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4291               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4292               NMODES(4)=NMODES(4)+1
4293               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4294               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4295             ENDIF
4296   310     CONTINUE
4297         ENDIF
4298 C...CHARGINO DECAYS
4299         IF (KFSM.EQ.24.OR.KFSM.EQ.37) THEN
4300           NRVDC=5
4301           DO 320 I=1,NRVDC
4302             PBRAT(I)=0D0
4303             NMODES(I)=0
4304   320     CONTINUE
4305           CALL PYNAME(KFSUSY,CHTMP)
4306           CHD0=CHTMP//' '
4307           CHDC(1)=DNAME(3) // ' + ' // DNAME(3) // ' + ' // DNAME(2)
4308           CHDC(2)=DNAME(2) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4309           CHDC(3)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4310           CHDC(4)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4311           CHDC(5)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4312           KC=PYCOMP(KFSUSY)
4313           DO 330 J=1,MDCY(KC,3)
4314             IDC=J+MDCY(KC,2)-1
4315             ID1=IABS(KFDP(IDC,1))
4316             ID2=IABS(KFDP(IDC,2))
4317             ID3=IABS(KFDP(IDC,3))
4318             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4319      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.12.OR
4320      &           .ID3.EQ.14.OR.ID3.EQ.16)) THEN
4321               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4322               NMODES(1)=NMODES(1)+1
4323               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4324               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4325             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4326      &             .(ID2.EQ.12.OR.ID2.EQ.14.OR.ID2.EQ.16).AND.(ID3.EQ
4327      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4328               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4329               NMODES(1)=NMODES(1)+1
4330               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4331               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4332             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4333      &             .(ID2.EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ
4334      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4335               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4336               NMODES(2)=NMODES(2)+1
4337               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4338               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4339             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4340      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4341      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4342               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4343               NMODES(3)=NMODES(3)+1
4344               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4345               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4346             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4347      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4348      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4349               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4350               NMODES(3)=NMODES(3)+1
4351               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4352               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4353             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4354      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4355      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4356               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4357               NMODES(4)=NMODES(4)+1
4358               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4359               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4360             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4361      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4362      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4363               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4364               NMODES(4)=NMODES(4)+1
4365               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4366               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4367             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4368      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4369      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4370               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4371               NMODES(5)=NMODES(5)+1
4372               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4373               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4374             ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND
4375      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4376      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4377               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4378               NMODES(5)=NMODES(5)+1
4379               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4380               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4381             ENDIF
4382   330     CONTINUE
4383         ENDIF
4384 C...GLUINO DECAYS
4385         IF (KFSM.EQ.21) THEN
4386           NRVDC=3
4387           DO 340 I=1,NRVDC
4388             PBRAT(I)=0D0
4389             NMODES(I)=0
4390   340     CONTINUE
4391           CALL PYNAME(KFSUSY,CHTMP)
4392           CHD0=CHTMP//' '
4393           CHDC(1)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4394           CHDC(2)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4395           CHDC(3)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4396           KC=PYCOMP(KFSUSY)
4397           DO 350 J=1,MDCY(KC,3)
4398             IDC=J+MDCY(KC,2)-1
4399             ID1=IABS(KFDP(IDC,1))
4400             ID2=IABS(KFDP(IDC,2))
4401             ID3=IABS(KFDP(IDC,3))
4402             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4403      &           .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1.OR
4404      &           .ID3.EQ.3.OR.ID3.EQ.5)) THEN
4405               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4406               NMODES(1)=NMODES(1)+1
4407               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4408               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4409             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4410      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4411      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4412               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4413               NMODES(2)=NMODES(2)+1
4414               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4415               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4416             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4417      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4418      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4419               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4420               NMODES(3)=NMODES(3)+1
4421               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4422               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4423             ENDIF
4424   350     CONTINUE
4425         ENDIF
4426  
4427         IF (NRVDC.NE.0) THEN
4428           DO 360 I=1,NRVDC
4429             WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4430             NMODES(0)=NMODES(0)+NMODES(I)
4431   360     CONTINUE
4432         ENDIF
4433   370 CONTINUE
4434       WRITE (MSTU(11),8100) NMODES(0), NMODES(10), NMODES(9)
4435  
4436       IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
4437         WRITE (MSTU(11),8500)
4438         DO 400 IRV=1,3
4439           DO 390 JRV=1,3
4440             DO 380 KRV=1,3
4441               WRITE (MSTU(11),8700) IRV,JRV,KRV,RVLAM(IRV,JRV,KRV)
4442      &             ,RVLAMP(IRV,JRV,KRV),RVLAMB(IRV,JRV,KRV)
4443   380       CONTINUE
4444   390     CONTINUE
4445   400   CONTINUE
4446         WRITE (MSTU(11),8600)
4447       ENDIF
4448       ENDIF
4449  
4450 C...Formats for printouts.
4451  5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
4452      &'Events and Cross-sections',1X,9('*'))
4453  5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
4454      &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
4455      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
4456      &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
4457      &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
4458      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
4459      &'I',12X,'I')
4460  5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
4461      &D10.3,1X,'I')
4462  5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
4463      &1X,'I',34X,'I',28X,'I',12X,'I')
4464  5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
4465      &1X,'********* Total number of errors, excluding junctions =',
4466      &1X,I8,' *************'/
4467      &1X,'********* Total number of errors, including junctions =',
4468      &1X,I8,' *************'/
4469      &1X,'********* Total number of warnings =                   ',
4470      &1X,I8,' *************'/
4471      &1X,'********* Fraction of events that fail fragmentation ',
4472      &'cuts =',1X,F8.5,' *********'/)
4473  5500 FORMAT('1',27('*'),1X,'PYSTAT:  Decay Widths and Branching ',
4474      &'Ratios',1X,27('*'))
4475  5600 FORMAT(/1X,98('=')/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4476      &1X,'I',5X,'Mother  -->  Branching/Decay Channel',8X,'I',1X,
4477      &'Width (GeV)',1X,'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,
4478      &'Eff. B.R.',1X,'I'/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4479      &1X,98('='))
4480  5700 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
4481      &I8,2X,A10,3X,'(m =',F10.3,')',2X,'-->',5X,'I',2X,1P,D10.3,0P,1X,
4482      &'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,D10.3,0P,1X,'I')
4483  5800 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,15X,'I',2X,
4484      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4485      &1P,D10.3,0P,1X,'I')
4486  5900 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,1X,'+',1X,A10,2X,'I',2X,
4487      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4488      &1P,D10.3,0P,1X,'I')
4489  6000 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,98('='))
4490  6100 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
4491      &'Particles at Hard Interaction',1X,7('*'))
4492  6200 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
4493      &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
4494      &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
4495      &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
4496      &78('=')/1X,'I',38X,'I',37X,'I')
4497  6300 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
4498  6400 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
4499  6500 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
4500      &'Kinematical Variables',1X,12('*'))
4501  6600 FORMAT(/1X,78('=')/1X,'I',76X,'I')
4502  6700 FORMAT(1X,'I',16X,1P,D10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,D10.3,0P,
4503      &16X,'I')
4504  6800 FORMAT(1X,'I',3X,1P,D10.3,0P,1X,'(',1P,D10.3,0P,')',1X,'<',1X,A,
4505      &1X,'<',1X,1P,D10.3,0P,16X,'I')
4506  6900 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,D10.3,0P,16X,'I')
4507  7000 FORMAT(1X,'I',76X,'I'/1X,78('='))
4508  7100 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
4509      &'Parameter Values',1X,12('*'))
4510  7200 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
4511      &'PARP(I)'/)
4512  7300 FORMAT(1X,I3,5X,I6,6X,1P,D10.3,0P,18X,I3,5X,I6,6X,1P,D10.3)
4513  7400 FORMAT('1',13('*'),1X,'PYSTAT: List of implemented processes',
4514      &1X,13('*'))
4515  7500 FORMAT(/1X,65('=')/1X,'I',34X,'I',28X,'I'/1X,'I',12X,
4516      &'Subprocess',12X,'I',1X,'ISET',2X,'KFPR(I,1)',2X,'KFPR(I,2)',1X,
4517      &'I'/1X,'I',34X,'I',28X,'I'/1X,65('=')/1X,'I',34X,'I',28X,'I')
4518  7600 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I4,1X,I10,1X,I10,1X,'I')
4519  7700 FORMAT(1X,'I',34X,'I',28X,'I'/1X,65('='))
4520  8000 FORMAT(1X/ 1X/
4521      &     17X,'Sums over R-Violating branching ratios',1X/ 1X
4522      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I'/1X,'I',4X
4523      &     ,'Mother  -->  Sum over final state flavours',4X,'I',2X
4524      &     ,'BR(sum)',2X,'I',2X,'N',2X,'I'/1X,'I',50X,'I',11X,'I',5X,'I'
4525      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I')
4526  8100 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I'/1X,70('=')/1X,'I',1X
4527      &     ,'Total number of R-Violating modes :',3X,I5,24X,'I'/
4528      &     1X,'I',1X,'Total number with non-vanishing BR :',2X,I5,24X
4529      &     ,'I'/1X,'I',1X,'Total number with BR > 0.001 :',8X,I5,24X,'I'
4530      &     /1X,70('='))
4531  8200 FORMAT(1X,'I',1X,A9,1X,'-->',1X,A24,11X,
4532      &     'I',2X,1P,D8.2,0P,1X,'I',2X,I2,1X,'I')
4533  8300 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I')
4534  8500 FORMAT(1X/ 1X/
4535      &     1X,'R-Violating couplings',1X/ 1X /
4536      &     1X,55('=')/
4537      &     1X,'I',1X,'IJK',1X,'I',2X,'LAMBDA(IJK)',2X,'I',2X
4538      &     ,'LAMBDA''(IJK)',1X,'I',1X,"LAMBDA''(IJK)",1X,'I'/1X,'I',5X
4539      &     ,'I',15X,'I',15X,'I',15X,'I')
4540  8600 FORMAT(1X,55('='))
4541  8700 FORMAT(1X,'I',1X,I1,I1,I1,1X,'I',1X,1P,D13.3,0P,1X,'I',1X,1P
4542      &     ,D13.3,0P,1X,'I',1X,1P,D13.3,0P,1X,'I')
4543  
4544       RETURN
4545       END
4546  
4547 C*********************************************************************
4548  
4549 C...PYUPEV
4550 C...Administers the hard-process generation required for output to the
4551 C...Les Houches event record.
4552  
4553       SUBROUTINE PYUPEV
4554  
4555 C...Double precision and integer declarations.
4556       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4557       IMPLICIT INTEGER(I-N)
4558       INTEGER PYK,PYCHGE,PYCOMP
4559  
4560 C...Commonblocks.
4561       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4562       COMMON/PYCTAG/NCT,MCT(4000,2)
4563       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4564       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4565       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4566       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4567       COMMON/PYINT1/MINT(400),VINT(400)
4568       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4569       COMMON/PYINT4/MWID(500),WIDS(500,5)
4570       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
4571      &/PYINT1/,/PYINT2/,/PYINT4/
4572  
4573 C...HEPEUP for output.
4574       INTEGER MAXNUP
4575       PARAMETER (MAXNUP=500)
4576       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
4577       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
4578       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
4579      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
4580      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
4581       SAVE /HEPEUP/
4582  
4583 C...Stop if no subprocesses on.
4584       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
4585         WRITE(MSTU(11),5100)
4586         STOP
4587       ENDIF
4588  
4589 C...Special flags for hard-process generation only.
4590       MSTP71=MSTP(71)
4591       MSTP(71)=0
4592       MST128=MSTP(128)
4593       MSTP(128)=1
4594  
4595 C...Initial values for some counters.
4596       N=0
4597       MINT(5)=MINT(5)+1
4598       MINT(7)=0
4599       MINT(8)=0
4600       MINT(30)=0
4601       MINT(83)=0
4602       MINT(84)=MSTP(126)
4603       MSTU(24)=0
4604       MSTU70=0
4605       MSTJ14=MSTJ(14)
4606 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
4607       MINT(33)=0
4608  
4609 C...If variable energies: redo incoming kinematics and cross-section.
4610       MSTI(61)=0
4611       IF(MSTP(171).EQ.1) THEN
4612         CALL PYINKI(1)
4613         IF(MSTI(61).EQ.1) THEN
4614           MINT(5)=MINT(5)-1
4615           RETURN
4616         ENDIF
4617         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
4618         CALL PYXTOT
4619       ENDIF
4620  
4621 C...Do not allow pileup events.
4622       MINT(82)=1
4623  
4624 C...Generate variables of hard scattering.
4625       MINT(51)=0
4626       MSTI(52)=0
4627   100 CONTINUE
4628       IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
4629       MINT(31)=0
4630       MINT(51)=0
4631       MINT(57)=0
4632       CALL PYRAND
4633       IF(MSTI(61).EQ.1) THEN
4634         MINT(5)=MINT(5)-1
4635         RETURN
4636       ENDIF
4637       IF(MINT(51).EQ.2) RETURN
4638       ISUB=MINT(1)
4639  
4640       IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
4641 C...Hard scattering (including low-pT):
4642 C...reconstruct kinematics and colour flow of hard scattering.
4643         MINT31=MINT(31)
4644   110   MINT(31)=MINT31
4645         MINT(51)=0
4646         CALL PYSCAT
4647         IF(MINT(51).EQ.1) GOTO 100
4648         IPU1=MINT(84)+1
4649         IPU2=MINT(84)+2
4650  
4651 C...Decay of final state resonances.
4652         MINT(32)=0
4653         IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10.AND.ISUB.NE.95)
4654      &  CALL PYRESD(0)
4655         IF(MINT(51).EQ.1) GOTO 100
4656         MINT(52)=N
4657  
4658 C...Longitudinal boost of hard scattering.
4659         BETAZ=(VINT(41)-VINT(42))/(VINT(41)+VINT(42))
4660         CALL PYROBO(MINT(84)+1,N,0D0,0D0,0D0,0D0,BETAZ)
4661  
4662       ELSEIF(ISUB.NE.99) THEN
4663 C...Diffractive and elastic scattering.
4664         CALL PYDIFF
4665  
4666       ELSE
4667 C...DIS scattering (photon flux external).
4668         CALL PYDISG
4669         IF(MINT(51).EQ.1) GOTO 100
4670       ENDIF
4671  
4672 C...Check that no odd resonance left undecayed.
4673       MINT(54)=N
4674       NFIX=N
4675       DO 120 I=MINT(84)+1,NFIX
4676         IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
4677      &  K(I,2).NE.22) THEN
4678           KCA=PYCOMP(K(I,2))
4679           IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
4680             CALL PYRESD(I)
4681             IF(MINT(51).EQ.1) GOTO 100
4682           ENDIF
4683         ENDIF
4684   120 CONTINUE
4685  
4686 C...Boost hadronic subsystem to overall rest frame.
4687 C..(Only relevant when photon inside lepton beam.)
4688       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
4689  
4690 C...Store event information and calculate Monte Carlo estimates of
4691 C...subprocess cross-sections.
4692   130 CALL PYDOCU
4693  
4694 C...Transform to the desired coordinate frame.
4695   140 CALL PYFRAM(MSTP(124))
4696       MSTU(70)=MSTU70
4697       PARU(21)=VINT(1)
4698  
4699 C...Restore special flags for hard-process generation only.
4700       MSTP(71)=MSTP71
4701       MSTP(128)=MST128
4702  
4703 C...Trace colour tags; convert to LHA style labels.
4704       NCT=100
4705       DO 150 I=MINT(84)+1,N
4706         MCT(I,1)=0
4707         MCT(I,2)=0
4708   150 CONTINUE
4709       DO 160 I=MINT(84)+1,N
4710         KQ=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
4711         IF(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
4712           IF(K(I,4).NE.0.AND.(KQ.EQ.1.OR.KQ.EQ.2).AND.MCT(I,1).EQ.0)
4713      &    THEN
4714             IMO=MOD(K(I,4)/MSTU(5),MSTU(5))
4715             IDA=MOD(K(I,4),MSTU(5))
4716             IF(IMO.NE.0.AND.MOD(K(IMO,5)/MSTU(5),MSTU(5)).EQ.I.AND.
4717      &      MCT(IMO,2).NE.0) THEN
4718               MCT(I,1)=MCT(IMO,2)
4719             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,4),MSTU(5)).EQ.I.AND.
4720      &      MCT(IMO,1).NE.0) THEN
4721               MCT(I,1)=MCT(IMO,1)
4722             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,5),MSTU(5)).EQ.I.AND.
4723      &      MCT(IDA,2).NE.0) THEN
4724               MCT(I,1)=MCT(IDA,2)
4725             ELSE
4726               NCT=NCT+1
4727               MCT(I,1)=NCT
4728             ENDIF
4729           ENDIF
4730           IF(K(I,5).NE.0.AND.(KQ.EQ.-1.OR.KQ.EQ.2).AND.MCT(I,2).EQ.0)
4731      &    THEN
4732             IMO=MOD(K(I,5)/MSTU(5),MSTU(5))
4733             IDA=MOD(K(I,5),MSTU(5))
4734             IF(IMO.NE.0.AND.MOD(K(IMO,4)/MSTU(5),MSTU(5)).EQ.I.AND.
4735      &      MCT(IMO,1).NE.0) THEN
4736               MCT(I,2)=MCT(IMO,1)
4737             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,5),MSTU(5)).EQ.I.AND.
4738      &      MCT(IMO,2).NE.0) THEN
4739               MCT(I,2)=MCT(IMO,2)
4740             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,4),MSTU(5)).EQ.I.AND.
4741      &      MCT(IDA,1).NE.0) THEN
4742               MCT(I,2)=MCT(IDA,1)
4743             ELSE
4744               NCT=NCT+1
4745               MCT(I,2)=NCT
4746             ENDIF
4747           ENDIF
4748         ENDIF
4749   160 CONTINUE
4750  
4751 C...Put event in HEPEUP commonblock.
4752       NUP=N-MINT(84)
4753       IDPRUP=MINT(1)
4754       XWGTUP=1D0
4755       SCALUP=VINT(53)
4756       AQEDUP=VINT(57)
4757       AQCDUP=VINT(58)
4758       DO 180 I=1,NUP
4759         IDUP(I)=K(I+MINT(84),2)
4760         IF(I.LE.2) THEN
4761           ISTUP(I)=-1
4762           MOTHUP(1,I)=0
4763           MOTHUP(2,I)=0
4764         ELSEIF(K(I+4,3).EQ.0) THEN
4765           ISTUP(I)=1
4766           MOTHUP(1,I)=1
4767           MOTHUP(2,I)=2
4768         ELSE
4769           ISTUP(I)=1
4770           MOTHUP(1,I)=K(I+MINT(84),3)-MINT(84)
4771           MOTHUP(2,I)=0
4772         ENDIF
4773         IF(I.GE.3.AND.K(I+MINT(84),3).GT.0)
4774      &  ISTUP(K(I+MINT(84),3)-MINT(84))=2
4775         ICOLUP(1,I)=MCT(I+MINT(84),1)
4776         ICOLUP(2,I)=MCT(I+MINT(84),2)
4777         DO 170 J=1,5
4778           PUP(J,I)=P(I+MINT(84),J)
4779   170   CONTINUE
4780         VTIMUP(I)=V(I,5)
4781         SPINUP(I)=9D0
4782   180 CONTINUE
4783  
4784 C...Optionally write out event to disk. Minimal size for time/spin fields.
4785       IF(MSTP(162).GT.0) THEN
4786         WRITE(MSTP(162),5200) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
4787         DO 190 I=1,NUP
4788           IF(VTIMUP(I).EQ.0D0) THEN
4789             WRITE(MSTP(162),5300) IDUP(I),ISTUP(I),MOTHUP(1,I),
4790      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
4791      &      ' 0. 9.'
4792           ELSE
4793             WRITE(MSTP(162),5400) IDUP(I),ISTUP(I),MOTHUP(1,I),
4794      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
4795      &      VTIMUP(I),' 9.'
4796           ENDIF
4797   190   CONTINUE
4798
4799 C...Optional extra line with parton-density information.
4800         IF(MSTP(165).GE.1) WRITE(MSTP(162),5500) MSTI(15),MSTI(16),
4801      &  PARI(33),PARI(34),PARI(23),PARI(29),PARI(30) 
4802       ENDIF
4803  
4804 C...Error messages and other print formats.
4805  5100 FORMAT(1X,'Error: no subprocess switched on.'/
4806      &1X,'Execution stopped.')
4807  5200 FORMAT(1P,2I6,4E14.6)
4808  5300 FORMAT(1P,I8,5I5,5E18.10,A6)
4809  5400 FORMAT(1P,I8,5I5,5E18.10,E12.4,A3)
4810  5500 FORMAT(1P,'#pdf ',2I5,5E18.10)
4811  
4812       RETURN
4813       END
4814  
4815 C*********************************************************************
4816  
4817 C...PYUPIN
4818 C...Fills the HEPRUP commonblock with info on incoming beams and allowed
4819 C...processes, and optionally stores that information on file.
4820  
4821       SUBROUTINE PYUPIN
4822  
4823 C...Double precision and integer declarations.
4824       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4825       IMPLICIT INTEGER(I-N)
4826  
4827 C...Commonblocks.
4828       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
4829       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4830       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4831       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
4832       SAVE /PYJETS/,/PYSUBS/,/PYPARS/,/PYINT5/
4833  
4834 C...User process initialization commonblock.
4835       INTEGER MAXPUP
4836       PARAMETER (MAXPUP=100)
4837       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4838       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4839       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4840      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4841      &LPRUP(MAXPUP)
4842       SAVE /HEPRUP/
4843  
4844 C...Store info on incoming beams.
4845       IDBMUP(1)=K(1,2)
4846       IDBMUP(2)=K(2,2)
4847       EBMUP(1)=P(1,4)
4848       EBMUP(2)=P(2,4)
4849       PDFGUP(1)=0
4850       PDFGUP(2)=0
4851       PDFSUP(1)=MSTP(51)
4852       PDFSUP(2)=MSTP(51)
4853  
4854 C...Event weighting strategy.
4855       IDWTUP=3
4856  
4857 C...Info on individual processes.
4858       NPRUP=0
4859       DO 100 ISUB=1,500
4860         IF(MSUB(ISUB).EQ.1) THEN
4861           NPRUP=NPRUP+1
4862           XSECUP(NPRUP)=1D9*XSEC(ISUB,3)
4863           XERRUP(NPRUP)=XSECUP(NPRUP)/SQRT(MAX(1D0,DBLE(NGEN(ISUB,3))))
4864           XMAXUP(NPRUP)=1D0
4865           LPRUP(NPRUP)=ISUB
4866         ENDIF
4867   100 CONTINUE
4868  
4869 C...Write info to file.
4870       IF(MSTP(161).GT.0) THEN
4871         WRITE(MSTP(161),5100) IDBMUP(1),IDBMUP(2),EBMUP(1),EBMUP(2),
4872      &  PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
4873         DO 110 IPR=1,NPRUP
4874           WRITE(MSTP(161),5200) XSECUP(IPR),XERRUP(IPR),XMAXUP(IPR),
4875      &    LPRUP(IPR)
4876   110   CONTINUE
4877       ENDIF
4878  
4879 C...Formats for printout.
4880  5100 FORMAT(1P,2I8,2E14.6,6I6)
4881  5200 FORMAT(1P,3E14.6,I6)
4882  
4883       RETURN
4884       END
4885
4886
4887 C*********************************************************************
4888
4889 C...Combine the two old-style Pythia initialization and event files
4890 C...into a single Les Houches Event File.
4891
4892       SUBROUTINE PYLHEF
4893  
4894 C...Double precision and integer declarations.
4895       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4896       IMPLICIT INTEGER(I-N)
4897  
4898 C...PYTHIA commonblock: only used to provide read/write units and version.
4899       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4900       SAVE /PYPARS/
4901  
4902 C...User process initialization commonblock.
4903       INTEGER MAXPUP
4904       PARAMETER (MAXPUP=100)
4905       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
4906       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
4907       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
4908      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
4909      &LPRUP(MAXPUP)
4910       SAVE /HEPRUP/
4911  
4912 C...User process event common block.
4913       INTEGER MAXNUP
4914       PARAMETER (MAXNUP=500)
4915       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
4916       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
4917       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
4918      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
4919      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
4920       SAVE /HEPEUP/
4921
4922 C...Lines to read in assumed never longer than 200 characters. 
4923       PARAMETER (MAXLEN=200)
4924       CHARACTER*(MAXLEN) STRING
4925
4926 C...Format for reading lines.
4927       CHARACTER*6 STRFMT
4928       STRFMT='(A000)'
4929       WRITE(STRFMT(3:5),'(I3)') MAXLEN
4930
4931 C...Rewind initialization and event files. 
4932       REWIND MSTP(161)
4933       REWIND MSTP(162)
4934
4935 C...Write header info.
4936       WRITE(MSTP(163),'(A)') '<LesHouchesEvents version="1.0">'
4937       WRITE(MSTP(163),'(A)') '<!--'
4938       WRITE(MSTP(163),'(A,I1,A1,I3)') 'File generated with PYTHIA ',
4939      &MSTP(181),'.',MSTP(182)
4940       WRITE(MSTP(163),'(A)') '-->'       
4941
4942 C...Read first line of initialization info and get number of processes.
4943       READ(MSTP(161),'(A)',END=400,ERR=400) STRING                  
4944       READ(STRING,*,ERR=400) IDBMUP(1),IDBMUP(2),EBMUP(1),
4945      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
4946
4947 C...Copy initialization lines, omitting trailing blanks. 
4948 C...Embed in <init> ... </init> block.
4949       WRITE(MSTP(163),'(A)') '<init>' 
4950       DO 140 IPR=0,NPRUP
4951         IF(IPR.GT.0) READ(MSTP(161),'(A)',END=400,ERR=400) STRING
4952         LEN=MAXLEN+1  
4953   120   LEN=LEN-1
4954         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 120
4955         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4956   140 CONTINUE
4957       WRITE(MSTP(163),'(A)') '</init>' 
4958
4959 C...Begin event loop. Read first line of event info or already done.
4960       READ(MSTP(162),'(A)',END=320,ERR=400) STRING    
4961   200 CONTINUE
4962
4963 C...Look at first line to know number of particles in event.
4964       READ(STRING,*,ERR=400) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
4965
4966 C...Begin an <event> block. Copy event lines, omitting trailing blanks. 
4967       WRITE(MSTP(163),'(A)') '<event>' 
4968       DO 240 I=0,NUP
4969         IF(I.GT.0) READ(MSTP(162),'(A)',END=400,ERR=400) STRING
4970         LEN=MAXLEN+1  
4971   220   LEN=LEN-1
4972         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 220
4973         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4974   240 CONTINUE
4975               
4976 C...Copy trailing comment lines - with a # in the first column - as is.
4977   260 READ(MSTP(162),'(A)',END=300,ERR=400) STRING    
4978       IF(STRING(1:1).EQ.'#') THEN
4979         LEN=MAXLEN+1  
4980   280   LEN=LEN-1
4981         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 280
4982         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
4983         GOTO 260
4984       ENDIF
4985
4986 C..End the <event> block. Loop back to look for next event.
4987       WRITE(MSTP(163),'(A)') '</event>' 
4988       GOTO 200
4989
4990 C...Successfully reached end of event loop: write closing tag
4991 C...and remove temporary intermediate files (unless asked not to).
4992   300 WRITE(MSTP(163),'(A)') '</event>' 
4993   320 WRITE(MSTP(163),'(A)') '</LesHouchesEvents>' 
4994       IF(MSTP(164).EQ.1) RETURN
4995       CLOSE(MSTP(161),ERR=400,STATUS='DELETE')
4996       CLOSE(MSTP(162),ERR=400,STATUS='DELETE')
4997       RETURN
4998
4999 C...Error exit.
5000   400 WRITE(*,*) ' PYLHEF file joining failed!'
5001
5002       RETURN
5003       END
5004  
5005 C*********************************************************************
5006  
5007 C...PYINRE
5008 C...Calculates full and effective widths of gauge bosons, stores
5009 C...masses and widths, rescales coefficients to be used for
5010 C...resonance production generation.
5011  
5012       SUBROUTINE PYINRE
5013  
5014 C...Double precision and integer declarations.
5015       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5016       IMPLICIT INTEGER(I-N)
5017       INTEGER PYK,PYCHGE,PYCOMP
5018 C...Parameter statement to help give large particle numbers.
5019       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
5020      &KEXCIT=4000000,KDIMEN=5000000)
5021 C...Commonblocks.
5022       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5023       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5024       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5025       COMMON/PYDAT4/CHAF(500,2)
5026       CHARACTER CHAF*16
5027       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5028       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5029       COMMON/PYINT1/MINT(400),VINT(400)
5030       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5031       COMMON/PYINT4/MWID(500),WIDS(500,5)
5032       COMMON/PYINT6/PROC(0:500)
5033       CHARACTER PROC*28
5034       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
5035       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
5036      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/,/PYMSSM/
5037 C...Local arrays and data.
5038       DIMENSION WDTP(0:400),WDTE(0:400,0:5),WDTPM(0:400),
5039      &WDTEM(0:400,0:5),KCORD(500),PMORD(500)
5040  
5041 C...Born level couplings in MSSM Higgs doublet sector.
5042       XW=PARU(102)
5043       XWV=XW
5044       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
5045       XW1=1D0-XW
5046       IF(MSTP(4).EQ.2) THEN
5047         TANBE=PARU(141)
5048         RATBE=((1D0-TANBE**2)/(1D0+TANBE**2))**2
5049         SQMZ=PMAS(23,1)**2
5050         SQMW=PMAS(24,1)**2
5051         SQMH=PMAS(25,1)**2
5052         SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
5053         SQMHP=0.5D0*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4D0*SQMA*SQMZ*RATBE))
5054         SQMHC=SQMA+SQMW
5055         IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0D0) THEN
5056           WRITE(MSTU(11),5000)
5057           CALL PYSTOP(101)
5058         ENDIF
5059         PMAS(35,1)=SQRT(SQMHP)
5060         PMAS(36,1)=SQRT(SQMA)
5061         PMAS(37,1)=SQRT(SQMHC)
5062         ALSU=0.5D0*ATAN(2D0*TANBE*(SQMA+SQMZ)/((1D0-TANBE**2)*
5063      &  (SQMA-SQMZ)))
5064         BESU=ATAN(TANBE)
5065         PARU(142)=1D0
5066         PARU(143)=1D0
5067         PARU(161)=-SIN(ALSU)/COS(BESU)
5068         PARU(162)=COS(ALSU)/SIN(BESU)
5069         PARU(163)=PARU(161)
5070         PARU(164)=SIN(BESU-ALSU)
5071         PARU(165)=PARU(164)
5072         PARU(168)=SIN(BESU-ALSU)+0.5D0*COS(2D0*BESU)*SIN(BESU+ALSU)/XW
5073         PARU(171)=COS(ALSU)/COS(BESU)
5074         PARU(172)=SIN(ALSU)/SIN(BESU)
5075         PARU(173)=PARU(171)
5076         PARU(174)=COS(BESU-ALSU)
5077         PARU(175)=PARU(174)
5078         PARU(176)=COS(2D0*ALSU)*COS(BESU+ALSU)-2D0*SIN(2D0*ALSU)*
5079      &  SIN(BESU+ALSU)
5080         PARU(177)=COS(2D0*BESU)*COS(BESU+ALSU)
5081         PARU(178)=COS(BESU-ALSU)-0.5D0*COS(2D0*BESU)*COS(BESU+ALSU)/XW
5082         PARU(181)=TANBE
5083         PARU(182)=1D0/TANBE
5084         PARU(183)=PARU(181)
5085         PARU(184)=0D0
5086         PARU(185)=PARU(184)
5087         PARU(186)=COS(BESU-ALSU)
5088         PARU(187)=SIN(BESU-ALSU)
5089         PARU(188)=PARU(186)
5090         PARU(189)=PARU(187)
5091         PARU(190)=0D0
5092         PARU(195)=COS(BESU-ALSU)
5093       ENDIF
5094  
5095 C...Reset effective widths of gauge bosons.
5096       DO 110 I=1,500
5097         DO 100 J=1,5
5098           WIDS(I,J)=1D0
5099   100   CONTINUE
5100   110 CONTINUE
5101  
5102 C...Order resonances by increasing mass (except Z0 and W+/-).
5103       NRES=0
5104       DO 140 KC=1,500
5105         KF=KCHG(KC,4)
5106         IF(KF.EQ.0) GOTO 140
5107         IF(MWID(KC).EQ.0) GOTO 140
5108         IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
5109           IF(MSTP(1).LE.3) GOTO 140
5110         ENDIF
5111         IF(KF/KSUSY1.EQ.1.OR.KF/KSUSY1.EQ.2) THEN
5112           IF(IMSS(1).LE.0) GOTO 140
5113         ENDIF
5114         NRES=NRES+1
5115         PMRES=PMAS(KC,1)
5116         IF(KC.EQ.23.OR.KC.EQ.24) PMRES=0D0
5117         DO 120 I1=NRES-1,1,-1
5118           IF(PMRES.GE.PMORD(I1)) GOTO 130
5119           KCORD(I1+1)=KCORD(I1)
5120           PMORD(I1+1)=PMORD(I1)
5121   120   CONTINUE
5122   130   KCORD(I1+1)=KC
5123         PMORD(I1+1)=PMRES
5124   140 CONTINUE
5125  
5126 C...Loop over possible resonances.
5127       DO 180 I=1,NRES
5128         KC=KCORD(I)
5129         KF=KCHG(KC,4)
5130  
5131 C...Check that no fourth generation channels on by mistake.
5132         IF(MSTP(1).LE.3) THEN
5133           DO 150 J=1,MDCY(KC,3)
5134             IDC=J+MDCY(KC,2)-1
5135             KFA1=IABS(KFDP(IDC,1))
5136             KFA2=IABS(KFDP(IDC,2))
5137             IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.
5138      &      KFA2.EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18)
5139      &      MDME(IDC,1)=-1
5140   150     CONTINUE
5141         ENDIF
5142  
5143 C...Check that no supersymmetric channels on by mistake.
5144         IF(IMSS(1).LE.0) THEN
5145           DO 160 J=1,MDCY(KC,3)
5146             IDC=J+MDCY(KC,2)-1
5147             KFA1S=IABS(KFDP(IDC,1))/KSUSY1
5148             KFA2S=IABS(KFDP(IDC,2))/KSUSY1
5149             IF(KFA1S.EQ.1.OR.KFA1S.EQ.2.OR.KFA2S.EQ.1.OR.KFA2S.EQ.2)
5150      &      MDME(IDC,1)=-1
5151   160     CONTINUE
5152         ENDIF
5153  
5154 C...Find mass and evaluate width.
5155         PMR=PMAS(KC,1)
5156         IF(KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) MINT(62)=1
5157         IF(MWID(KC).EQ.3) MINT(63)=1
5158         CALL PYWIDT(KF,PMR**2,WDTP,WDTE)
5159         MINT(51)=0
5160  
5161 C...Evaluate suppression factors due to non-simulated channels.
5162         IF(KCHG(KC,3).EQ.0) THEN
5163           WDTP0I=0D0
5164           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5165           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
5166      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5167      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5168           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5169           WIDS(KC,3)=0D0
5170           WIDS(KC,4)=0D0
5171           WIDS(KC,5)=0D0
5172         ELSE
5173           IF(MWID(KC).EQ.3) MINT(63)=1
5174           CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
5175           MINT(51)=0
5176           WDTP0I=0D0
5177           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5178           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
5179      &    (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
5180      &    (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
5181      &    WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))*WDTP0I**2
5182           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5183           WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))*WDTP0I
5184           WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
5185      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5186      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5187           WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
5188      &    2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
5189      &    2D0*WDTEM(0,4)*WDTEM(0,5))*WDTP0I**2
5190         ENDIF
5191  
5192 C...Set resonance widths and branching ratios;
5193 C...also on/off switch for decays.
5194         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
5195           PMAS(KC,2)=WDTP(0)
5196           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
5197           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
5198           DO 170 J=1,MDCY(KC,3)
5199             IDC=J+MDCY(KC,2)-1
5200             BRAT(IDC)=0D0
5201             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
5202   170     CONTINUE
5203         ENDIF
5204   180 CONTINUE
5205  
5206 C...Flavours of leptoquark: redefine charge and name.
5207       KFLQQ=KFDP(MDCY(42,2),1)
5208       KFLQL=KFDP(MDCY(42,2),2)
5209       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
5210      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
5211       LL=1
5212       IF(IABS(KFLQL).EQ.13) LL=2
5213       IF(IABS(KFLQL).EQ.15) LL=3
5214       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
5215      &CHAF(IABS(KFLQL),1)(1:LL)//' '
5216       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
5217  
5218 C...Special cases in treatment of gamma*/Z0: redefine process name.
5219       IF(MSTP(43).EQ.1) THEN
5220         PROC(1)='f + fbar -> gamma*'
5221         PROC(15)='f + fbar -> g + gamma*'
5222         PROC(19)='f + fbar -> gamma + gamma*'
5223         PROC(30)='f + g -> f + gamma*'
5224         PROC(35)='f + gamma -> f + gamma*'
5225       ELSEIF(MSTP(43).EQ.2) THEN
5226         PROC(1)='f + fbar -> Z0'
5227         PROC(15)='f + fbar -> g + Z0'
5228         PROC(19)='f + fbar -> gamma + Z0'
5229         PROC(30)='f + g -> f + Z0'
5230         PROC(35)='f + gamma -> f + Z0'
5231       ELSEIF(MSTP(43).EQ.3) THEN
5232         PROC(1)='f + fbar -> gamma*/Z0'
5233         PROC(15)='f + fbar -> g + gamma*/Z0'
5234         PROC(19)='f+ fbar -> gamma + gamma*/Z0'
5235         PROC(30)='f + g -> f + gamma*/Z0'
5236         PROC(35)='f + gamma -> f + gamma*/Z0'
5237       ENDIF
5238  
5239 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
5240       IF(MSTP(44).EQ.1) THEN
5241         PROC(141)='f + fbar -> gamma*'
5242       ELSEIF(MSTP(44).EQ.2) THEN
5243         PROC(141)='f + fbar -> Z0'
5244       ELSEIF(MSTP(44).EQ.3) THEN
5245         PROC(141)='f + fbar -> Z''0'
5246       ELSEIF(MSTP(44).EQ.4) THEN
5247         PROC(141)='f + fbar -> gamma*/Z0'
5248       ELSEIF(MSTP(44).EQ.5) THEN
5249         PROC(141)='f + fbar -> gamma*/Z''0'
5250       ELSEIF(MSTP(44).EQ.6) THEN
5251         PROC(141)='f + fbar -> Z0/Z''0'
5252       ELSEIF(MSTP(44).EQ.7) THEN
5253         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
5254       ENDIF
5255  
5256 C...Special cases in treatment of WW -> WW: redefine process name.
5257       IF(MSTP(45).EQ.1) THEN
5258         PROC(77)='W+ + W+ -> W+ + W+'
5259       ELSEIF(MSTP(45).EQ.2) THEN
5260         PROC(77)='W+ + W- -> W+ + W-'
5261       ELSEIF(MSTP(45).EQ.3) THEN
5262         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
5263       ENDIF
5264  
5265 C...Format for error information.
5266  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
5267      &'combination'/1X,'Execution stopped!')
5268  
5269       RETURN
5270       END
5271  
5272 C*********************************************************************
5273  
5274 C...PYINBM
5275 C...Identifies the two incoming particles and the choice of frame.
5276  
5277        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
5278  
5279 C...Double precision and integer declarations.
5280       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5281       IMPLICIT INTEGER(I-N)
5282       INTEGER PYK,PYCHGE,PYCOMP
5283  
5284 C...User process initialization commonblock.
5285       INTEGER MAXPUP
5286       PARAMETER (MAXPUP=100)
5287       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5288       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5289       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5290      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5291      &LPRUP(MAXPUP)
5292       SAVE /HEPRUP/
5293  
5294 C...Commonblocks.
5295       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
5296       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5297       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5298       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5299       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5300       COMMON/PYINT1/MINT(400),VINT(400)
5301       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5302  
5303 C...Local arrays, character variables and data.
5304       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
5305      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
5306       DIMENSION LEN(3),KCDE(39),PM(2)
5307       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
5308      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
5309       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
5310      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
5311      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
5312      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
5313      &'nbar0       ','p+          ','pbar-       ','gamma       ',
5314      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
5315      &'xi-         ','xi0         ','omega-      ','pi0         ',
5316      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
5317      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
5318      &'k+          ','k-          ','ks0         ','kl0         '/
5319       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
5320      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
5321      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
5322  
5323 C...Store initial energy. Default frame.
5324       VINT(290)=WIN
5325       MINT(111)=0
5326  
5327 C...Special user process initialization; convert to normal input.
5328       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
5329         MINT(111)=11
5330         IF(PDFGUP(1).EQ.-9.OR.PDFGUP(2).EQ.-9) MINT(111)=12
5331         CALL PYNAME(IDBMUP(1),CHNAME)
5332         CHBEAM=CHNAME(1:12)
5333         CALL PYNAME(IDBMUP(2),CHNAME)
5334         CHTARG=CHNAME(1:12)
5335       ENDIF
5336  
5337 C...Convert character variables to lowercase and find their length.
5338       CHCOM(1)=CHFRAM
5339       CHCOM(2)=CHBEAM
5340       CHCOM(3)=CHTARG
5341       DO 130 I=1,3
5342         LEN(I)=12
5343         DO 110 LL=12,1,-1
5344           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
5345           DO 100 LA=1,26
5346             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
5347      &      CHALP(1)(LA:LA)
5348   100     CONTINUE
5349   110   CONTINUE
5350         CHIDNT(I)=CHCOM(I)
5351  
5352 C...Fix up bar, underscore and charge in particle name (if needed).
5353         DO 120 LL=1,10
5354           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
5355             CHTEMP=CHIDNT(I)
5356             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
5357           ENDIF
5358   120   CONTINUE
5359         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
5360           CHTEMP=CHIDNT(I)
5361           CHIDNT(I)='nu_'//CHTEMP(3:7)
5362         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
5363           CHIDNT(I)(1:3)='n0 '
5364         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
5365           CHIDNT(I)(1:5)='nbar0'
5366         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
5367           CHIDNT(I)(1:3)='p+ '
5368         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
5369      &    CHIDNT(I)(1:2).EQ.'p-') THEN
5370           CHIDNT(I)(1:5)='pbar-'
5371         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
5372           CHIDNT(I)(7:7)='0'
5373         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
5374           CHIDNT(I)(1:7)='reggeon'
5375         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
5376           CHIDNT(I)(1:7)='pomeron'
5377         ENDIF
5378   130 CONTINUE
5379  
5380 C...Identify free initialization.
5381       IF(CHCOM(1)(1:2).EQ.'no') THEN
5382         MINT(65)=1
5383         RETURN
5384       ENDIF
5385  
5386 C...Identify incoming beam and target particles.
5387       DO 160 I=1,2
5388         DO 140 J=1,39
5389           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
5390   140   CONTINUE
5391         PM(I)=PYMASS(MINT(10+I))
5392         VINT(2+I)=PM(I)
5393         MINT(140+I)=0
5394         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
5395           CHTEMP=CHIDNT(I+1)(7:12)//' '
5396           DO 150 J=1,12
5397             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
5398   150     CONTINUE
5399           PM(I)=PYMASS(MINT(140+I))
5400           VINT(302+I)=PM(I)
5401         ENDIF
5402   160 CONTINUE
5403       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
5404       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
5405       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) CALL PYSTOP(7)
5406  
5407 C...Identify choice of frame and input energies.
5408       CHINIT=' '
5409  
5410 C...Events defined in the CM frame.
5411       IF(CHCOM(1)(1:2).EQ.'cm') THEN
5412         MINT(111)=1
5413         S=WIN**2
5414         IF(MSTP(122).GE.1) THEN
5415           IF(CHCOM(2)(1:1).NE.'e') THEN
5416             LOFFS=(31-(LEN(2)+LEN(3)))/2
5417             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
5418      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5419      &      ' collider'//' '
5420           ELSE
5421             LOFFS=(30-(LEN(2)+LEN(3)))/2
5422             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
5423      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5424      &      ' collider'//' '
5425           ENDIF
5426           WRITE(MSTU(11),5200) CHINIT
5427           WRITE(MSTU(11),5300) WIN
5428         ENDIF
5429  
5430 C...Events defined in fixed target frame.
5431       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
5432         MINT(111)=2
5433         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
5434         IF(MSTP(122).GE.1) THEN
5435           LOFFS=(29-(LEN(2)+LEN(3)))/2
5436           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5437      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5438      &    ' fixed target'//' '
5439           WRITE(MSTU(11),5200) CHINIT
5440           WRITE(MSTU(11),5400) WIN
5441           WRITE(MSTU(11),5500) SQRT(S)
5442         ENDIF
5443  
5444 C...Frame defined by user three-vectors.
5445       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
5446         MINT(111)=3
5447         P(1,5)=PM(1)
5448         P(2,5)=PM(2)
5449         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5450         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5451         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5452      &  (P(1,3)+P(2,3))**2
5453         IF(MSTP(122).GE.1) THEN
5454           LOFFS=(22-(LEN(2)+LEN(3)))/2
5455           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5456      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5457      &    ' user configuration'//' '
5458           WRITE(MSTU(11),5200) CHINIT
5459           WRITE(MSTU(11),5600)
5460           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5461           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5462           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5463         ENDIF
5464  
5465 C...Frame defined by user four-vectors.
5466       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
5467         MINT(111)=4
5468         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5469         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5470         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5471         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5472         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5473      &  (P(1,3)+P(2,3))**2
5474         IF(MSTP(122).GE.1) THEN
5475           LOFFS=(22-(LEN(2)+LEN(3)))/2
5476           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5477      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5478      &    ' user configuration'//' '
5479           WRITE(MSTU(11),5200) CHINIT
5480           WRITE(MSTU(11),5600)
5481           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5482           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5483           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5484         ENDIF
5485  
5486 C...Frame defined by user five-vectors.
5487       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
5488         MINT(111)=5
5489         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5490      &  (P(1,3)+P(2,3))**2
5491         IF(MSTP(122).GE.1) THEN
5492           LOFFS=(22-(LEN(2)+LEN(3)))/2
5493           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5494      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5495      &    ' user configuration'//' '
5496           WRITE(MSTU(11),5200) CHINIT
5497           WRITE(MSTU(11),5600)
5498           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5499           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5500           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5501         ENDIF
5502  
5503 C...Frame defined by HEPRUP common block.
5504       ELSEIF(MINT(111).GE.11) THEN
5505         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
5506      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
5507         IF(MSTP(122).GE.1) THEN
5508           LOFFS=(22-(LEN(2)+LEN(3)))/2
5509           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5510      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5511      &    ' user configuration'//' '
5512           WRITE(MSTU(11),5200) CHINIT
5513           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
5514           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5515         ENDIF
5516  
5517 C...Unknown frame. Error for too low CM energy.
5518       ELSE
5519         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
5520         CALL PYSTOP(7)
5521       ENDIF
5522       IF(S.LT.PARP(2)**2) THEN
5523         WRITE(MSTU(11),5900) SQRT(S)
5524         CALL PYSTOP(7)
5525       ENDIF
5526  
5527 C...Formats for initialization and error information.
5528  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
5529      &1X,'Execution stopped!')
5530  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
5531      &1X,'Execution stopped!')
5532  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
5533  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
5534      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
5535  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
5536  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
5537      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
5538  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
5539      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
5540  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
5541  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
5542      &1X,'Execution stopped!')
5543  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
5544      &'generation.'/1X,'Execution stopped!')
5545  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
5546      &'GeV beam energies',13X,'I')
5547  
5548       RETURN
5549       END
5550  
5551 C*********************************************************************
5552  
5553 C...PYINKI
5554 C...Sets up kinematics, including rotations and boosts to/from CM frame.
5555  
5556       SUBROUTINE PYINKI(MODKI)
5557  
5558 C...Double precision and integer declarations.
5559       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5560       IMPLICIT INTEGER(I-N)
5561       INTEGER PYK,PYCHGE,PYCOMP
5562  
5563 C...User process initialization commonblock.
5564       INTEGER MAXPUP
5565       PARAMETER (MAXPUP=100)
5566       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5567       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5568       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5569      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5570      &LPRUP(MAXPUP)
5571       SAVE /HEPRUP/
5572  
5573 C...Commonblocks.
5574       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
5575       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5576       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5577       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5578       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5579       COMMON/PYINT1/MINT(400),VINT(400)
5580       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5581  
5582 C...Set initial flavour state.
5583       N=2
5584       DO 100 I=1,2
5585         K(I,1)=1
5586         K(I,2)=MINT(10+I)
5587         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
5588   100 CONTINUE
5589  
5590 C...Reset boost. Do kinematics for various cases.
5591       DO 110 J=6,10
5592         VINT(J)=0D0
5593   110 CONTINUE
5594  
5595 C...Set up kinematics for events defined in CM frame.
5596       IF(MINT(111).EQ.1) THEN
5597         WIN=VINT(290)
5598         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5599         S=WIN**2
5600         P(1,5)=VINT(3)
5601         P(2,5)=VINT(4)
5602         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5603         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5604         P(1,1)=0D0
5605         P(1,2)=0D0
5606         P(2,1)=0D0
5607         P(2,2)=0D0
5608         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
5609      &  (4D0*S))
5610         P(2,3)=-P(1,3)
5611         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5612         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
5613  
5614 C...Set up kinematics for fixed target events.
5615       ELSEIF(MINT(111).EQ.2) THEN
5616         WIN=VINT(290)
5617         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5618         P(1,5)=VINT(3)
5619         P(2,5)=VINT(4)
5620         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5621         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5622         P(1,1)=0D0
5623         P(1,2)=0D0
5624         P(2,1)=0D0
5625         P(2,2)=0D0
5626         P(1,3)=WIN
5627         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5628         P(2,3)=0D0
5629         P(2,4)=P(2,5)
5630         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
5631         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
5632         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5633  
5634 C...Set up kinematics for events in user-defined frame.
5635       ELSEIF(MINT(111).EQ.3) THEN
5636         P(1,5)=VINT(3)
5637         P(2,5)=VINT(4)
5638         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5639         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5640         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5641         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5642         DO 120 J=1,3
5643           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5644   120   CONTINUE
5645         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5646         VINT(7)=PYANGL(P(1,1),P(1,2))
5647         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5648         VINT(6)=PYANGL(P(1,3),P(1,1))
5649         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5650         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
5651  
5652 C...Set up kinematics for events with user-defined four-vectors.
5653       ELSEIF(MINT(111).EQ.4) THEN
5654         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5655         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5656         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5657         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5658         DO 130 J=1,3
5659           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5660   130   CONTINUE
5661         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5662         VINT(7)=PYANGL(P(1,1),P(1,2))
5663         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5664         VINT(6)=PYANGL(P(1,3),P(1,1))
5665         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5666         S=(P(1,4)+P(2,4))**2
5667  
5668 C...Set up kinematics for events with user-defined five-vectors.
5669       ELSEIF(MINT(111).EQ.5) THEN
5670         DO 140 J=1,3
5671           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5672   140   CONTINUE
5673         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5674         VINT(7)=PYANGL(P(1,1),P(1,2))
5675         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5676         VINT(6)=PYANGL(P(1,3),P(1,1))
5677         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5678         S=(P(1,4)+P(2,4))**2
5679  
5680 C...Set up kinematics for events with external user processes.
5681       ELSEIF(MINT(111).GE.11) THEN
5682         P(1,5)=VINT(3)
5683         P(2,5)=VINT(4)
5684         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5685         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5686         P(1,1)=0D0
5687         P(1,2)=0D0
5688         P(2,1)=0D0
5689         P(2,2)=0D0
5690         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
5691         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
5692         P(1,4)=EBMUP(1)
5693         P(2,4)=EBMUP(2)
5694         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
5695         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5696         S=(P(1,4)+P(2,4))**2
5697       ENDIF
5698  
5699 C...Return or error for too low CM energy.
5700       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
5701         IF(MSTP(172).LE.1) THEN
5702           CALL PYERRM(23,
5703      &    '(PYINKI:) too low invariant mass in this event')
5704         ELSE
5705           MSTI(61)=1
5706           RETURN
5707         ENDIF
5708       ENDIF
5709  
5710 C...Save information on incoming particles.
5711       VINT(1)=SQRT(S)
5712       VINT(2)=S
5713       IF(MINT(111).GE.4) THEN
5714         IF(MINT(141).EQ.0) THEN
5715           VINT(3)=P(1,5)
5716           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
5717         ELSE
5718           VINT(303)=P(1,5)
5719         ENDIF
5720         IF(MINT(142).EQ.0) THEN
5721           VINT(4)=P(2,5)
5722           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
5723         ELSE
5724           VINT(304)=P(2,5)
5725         ENDIF
5726       ENDIF
5727       VINT(5)=P(1,3)
5728       IF(MODKI.EQ.0) VINT(289)=S
5729       DO 150 J=1,5
5730         V(1,J)=0D0
5731         V(2,J)=0D0
5732         VINT(290+J)=P(1,J)
5733         VINT(295+J)=P(2,J)
5734   150 CONTINUE
5735  
5736 C...Store pT cut-off and related constants to be used in generation.
5737       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
5738       IF(MSTP(82).LE.1) THEN
5739         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
5740       ELSE
5741         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
5742       ENDIF
5743       VINT(149)=4D0*PTMN**2/S
5744       VINT(154)=PTMN
5745  
5746       RETURN
5747       END
5748  
5749 C*********************************************************************
5750  
5751 C...PYINPR
5752 C...Selects partonic subprocesses to be included in the simulation.
5753  
5754       SUBROUTINE PYINPR
5755  
5756 C...Double precision and integer declarations.
5757       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5758       IMPLICIT INTEGER(I-N)
5759       INTEGER PYK,PYCHGE,PYCOMP
5760  
5761 C...User process initialization commonblock.
5762       INTEGER MAXPUP
5763       PARAMETER (MAXPUP=100)
5764       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5765       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5766       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5767      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5768      &LPRUP(MAXPUP)
5769       SAVE /HEPRUP/
5770  
5771 C...Commonblocks and character variables.
5772       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5773       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5774       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5775       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5776       COMMON/PYINT1/MINT(400),VINT(400)
5777       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5778       COMMON/PYINT6/PROC(0:500)
5779       CHARACTER PROC*28
5780       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
5781      &/PYINT6/
5782       CHARACTER CHIPR*10
5783  
5784 C...Reset processes to be included.
5785       IF(MSEL.NE.0) THEN
5786         DO 100 I=1,500
5787           MSUB(I)=0
5788   100   CONTINUE
5789       ENDIF
5790  
5791 C...Set running pTmin scale.
5792       IF(MSTP(82).LE.1) THEN
5793         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
5794       ELSE
5795         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
5796       ENDIF
5797  
5798 C...Begin by assuming incoming photon to enter subprocess.
5799       IF(MINT(11).EQ.22) MINT(15)=22
5800       IF(MINT(12).EQ.22) MINT(16)=22
5801  
5802 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
5803       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
5804         MSUB(10)=1
5805         MINT(123)=MINT(122)+1
5806  
5807 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
5808 C...allow mixture.
5809 C...Here also set a few parameters otherwise normally not touched.
5810       ELSEIF(MINT(121).GT.1) THEN
5811  
5812 C...Parton distributions dampened at small Q2; go to low energies,
5813 C...alpha_s <1; no minimum pT cut-off a priori.
5814         IF(MSTP(18).EQ.2) THEN
5815           MSTP(57)=3
5816           PARP(2)=2D0
5817           PARU(115)=1D0
5818           CKIN(5)=0.2D0
5819           CKIN(6)=0.2D0
5820         ENDIF
5821  
5822 C...Define pT cut-off parameters and whether run involves low-pT.
5823         PTMVMD=PTMRUN
5824         VINT(154)=PTMVMD
5825         PTMDIR=PTMVMD
5826         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
5827         PTMANO=PTMVMD
5828         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
5829      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
5830         IPTL=1
5831         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
5832         IF(MSEL.EQ.2) IPTL=1
5833  
5834 C...Set up for p/gamma * gamma; real or virtual photons.
5835         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
5836      &  MSTP(14).EQ.30)) THEN
5837  
5838 C...Set up for p/VMD * VMD.
5839         IF(MINT(122).EQ.1) THEN
5840           MINT(123)=2
5841           MSUB(11)=1
5842           MSUB(12)=1
5843           MSUB(13)=1
5844           MSUB(28)=1
5845           MSUB(53)=1
5846           MSUB(68)=1
5847           IF(IPTL.EQ.1) MSUB(95)=1
5848           IF(MSEL.EQ.2) THEN
5849             MSUB(91)=1
5850             MSUB(92)=1
5851             MSUB(93)=1
5852             MSUB(94)=1
5853           ENDIF
5854           IF(IPTL.EQ.1) CKIN(3)=0D0
5855  
5856 C...Set up for p/VMD * direct gamma.
5857         ELSEIF(MINT(122).EQ.2) THEN
5858           MINT(123)=0
5859           IF(MINT(121).EQ.6) MINT(123)=5
5860           MSUB(131)=1
5861           MSUB(132)=1
5862           MSUB(135)=1
5863           MSUB(136)=1
5864           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5865  
5866 C...Set up for p/VMD * anomalous gamma.
5867         ELSEIF(MINT(122).EQ.3) THEN
5868           MINT(123)=3
5869           IF(MINT(121).EQ.6) MINT(123)=7
5870           MSUB(11)=1
5871           MSUB(12)=1
5872           MSUB(13)=1
5873           MSUB(28)=1
5874           MSUB(53)=1
5875           MSUB(68)=1
5876           IF(IPTL.EQ.1) MSUB(95)=1
5877           IF(MSEL.EQ.2) THEN
5878             MSUB(91)=1
5879             MSUB(92)=1
5880             MSUB(93)=1
5881             MSUB(94)=1
5882           ENDIF
5883           IF(IPTL.EQ.1) CKIN(3)=0D0
5884  
5885 C...Set up for DIS * p.
5886         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
5887      &  IABS(MINT(12)).GT.100)) THEN
5888           MINT(123)=8
5889           IF(IPTL.EQ.1) MSUB(99)=1
5890  
5891 C...Set up for direct * direct gamma (switch off leptons).
5892         ELSEIF(MINT(122).EQ.4) THEN
5893           MINT(123)=0
5894           MSUB(137)=1
5895           MSUB(138)=1
5896           MSUB(139)=1
5897           MSUB(140)=1
5898           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5899             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5900   110     CONTINUE
5901           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5902  
5903 C...Set up for direct * anomalous gamma.
5904         ELSEIF(MINT(122).EQ.5) THEN
5905           MINT(123)=6
5906           MSUB(131)=1
5907           MSUB(132)=1
5908           MSUB(135)=1
5909           MSUB(136)=1
5910           IF(IPTL.EQ.1) CKIN(3)=PTMANO
5911  
5912 C...Set up for anomalous * anomalous gamma.
5913         ELSEIF(MINT(122).EQ.6) THEN
5914           MINT(123)=3
5915           MSUB(11)=1
5916           MSUB(12)=1
5917           MSUB(13)=1
5918           MSUB(28)=1
5919           MSUB(53)=1
5920           MSUB(68)=1
5921           IF(IPTL.EQ.1) MSUB(95)=1
5922           IF(MSEL.EQ.2) THEN
5923             MSUB(91)=1
5924             MSUB(92)=1
5925             MSUB(93)=1
5926             MSUB(94)=1
5927           ENDIF
5928           IF(IPTL.EQ.1) CKIN(3)=0D0
5929         ENDIF
5930  
5931 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
5932         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
5933  
5934 C...Set up for direct * direct gamma (switch off leptons).
5935         IF(MINT(122).EQ.1) THEN
5936           MINT(123)=0
5937           MSUB(137)=1
5938           MSUB(138)=1
5939           MSUB(139)=1
5940           MSUB(140)=1
5941           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
5942             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
5943   120     CONTINUE
5944           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5945  
5946 C...Set up for direct * VMD and VMD * direct gamma.
5947         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
5948           MINT(123)=5
5949           MSUB(131)=1
5950           MSUB(132)=1
5951           MSUB(135)=1
5952           MSUB(136)=1
5953           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
5954  
5955 C...Set up for direct * anomalous and anomalous * direct gamma.
5956         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
5957           MINT(123)=6
5958           MSUB(131)=1
5959           MSUB(132)=1
5960           MSUB(135)=1
5961           MSUB(136)=1
5962           IF(IPTL.EQ.1) CKIN(3)=PTMANO
5963  
5964 C...Set up for VMD*VMD.
5965         ELSEIF(MINT(122).EQ.5) THEN
5966           MINT(123)=2
5967           MSUB(11)=1
5968           MSUB(12)=1
5969           MSUB(13)=1
5970           MSUB(28)=1
5971           MSUB(53)=1
5972           MSUB(68)=1
5973           IF(IPTL.EQ.1) MSUB(95)=1
5974           IF(MSEL.EQ.2) THEN
5975             MSUB(91)=1
5976             MSUB(92)=1
5977             MSUB(93)=1
5978             MSUB(94)=1
5979           ENDIF
5980           IF(IPTL.EQ.1) CKIN(3)=0D0
5981  
5982 C...Set up for VMD * anomalous and anomalous * VMD gamma.
5983         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
5984           MINT(123)=7
5985           MSUB(11)=1
5986           MSUB(12)=1
5987           MSUB(13)=1
5988           MSUB(28)=1
5989           MSUB(53)=1
5990           MSUB(68)=1
5991           IF(IPTL.EQ.1) MSUB(95)=1
5992           IF(MSEL.EQ.2) THEN
5993             MSUB(91)=1
5994             MSUB(92)=1
5995             MSUB(93)=1
5996             MSUB(94)=1
5997           ENDIF
5998           IF(IPTL.EQ.1) CKIN(3)=0D0
5999  
6000 C...Set up for anomalous * anomalous gamma.
6001         ELSEIF(MINT(122).EQ.9) THEN
6002           MINT(123)=3
6003           MSUB(11)=1
6004           MSUB(12)=1
6005           MSUB(13)=1
6006           MSUB(28)=1
6007           MSUB(53)=1
6008           MSUB(68)=1
6009           IF(IPTL.EQ.1) MSUB(95)=1
6010           IF(MSEL.EQ.2) THEN
6011             MSUB(91)=1
6012             MSUB(92)=1
6013             MSUB(93)=1
6014             MSUB(94)=1
6015           ENDIF
6016           IF(IPTL.EQ.1) CKIN(3)=0D0
6017  
6018 C...Set up for DIS * VMD and VMD * DIS gamma.
6019         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
6020           MINT(123)=8
6021           IF(IPTL.EQ.1) MSUB(99)=1
6022  
6023 C...Set up for DIS * anomalous and anomalous * DIS gamma.
6024         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
6025           MINT(123)=9
6026           IF(IPTL.EQ.1) MSUB(99)=1
6027         ENDIF
6028  
6029 C...Set up for gamma* * p; virtual photons = dir, res.
6030         ELSEIF(MINT(121).EQ.2) THEN
6031  
6032 C...Set up for direct * p.
6033         IF(MINT(122).EQ.1) THEN
6034           MINT(123)=0
6035           MSUB(131)=1
6036           MSUB(132)=1
6037           MSUB(135)=1
6038           MSUB(136)=1
6039           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6040  
6041 C...Set up for resolved * p.
6042         ELSEIF(MINT(122).EQ.2) THEN
6043           MINT(123)=1
6044           MSUB(11)=1
6045           MSUB(12)=1
6046           MSUB(13)=1
6047           MSUB(28)=1
6048           MSUB(53)=1
6049           MSUB(68)=1
6050           IF(IPTL.EQ.1) MSUB(95)=1
6051           IF(MSEL.EQ.2) THEN
6052             MSUB(91)=1
6053             MSUB(92)=1
6054             MSUB(93)=1
6055             MSUB(94)=1
6056           ENDIF
6057           IF(IPTL.EQ.1) CKIN(3)=0D0
6058         ENDIF
6059  
6060 C...Set up for gamma* * gamma*; virtual photons = dir, res.
6061         ELSEIF(MINT(121).EQ.4) THEN
6062  
6063 C...Set up for direct * direct gamma (switch off leptons).
6064         IF(MINT(122).EQ.1) THEN
6065           MINT(123)=0
6066           MSUB(137)=1
6067           MSUB(138)=1
6068           MSUB(139)=1
6069           MSUB(140)=1
6070           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6071             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6072   130     CONTINUE
6073           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6074  
6075 C...Set up for direct * resolved and resolved * direct gamma.
6076         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
6077           MINT(123)=5
6078           MSUB(131)=1
6079           MSUB(132)=1
6080           MSUB(135)=1
6081           MSUB(136)=1
6082           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6083  
6084 C...Set up for resolved * resolved gamma.
6085         ELSEIF(MINT(122).EQ.4) THEN
6086           MINT(123)=2
6087           MSUB(11)=1
6088           MSUB(12)=1
6089           MSUB(13)=1
6090           MSUB(28)=1
6091           MSUB(53)=1
6092           MSUB(68)=1
6093           IF(IPTL.EQ.1) MSUB(95)=1
6094           IF(MSEL.EQ.2) THEN
6095             MSUB(91)=1
6096             MSUB(92)=1
6097             MSUB(93)=1
6098             MSUB(94)=1
6099           ENDIF
6100           IF(IPTL.EQ.1) CKIN(3)=0D0
6101         ENDIF
6102  
6103 C...End of special set up for gamma-p and gamma-gamma.
6104         ENDIF
6105         CKIN(1)=2D0*CKIN(3)
6106       ENDIF
6107  
6108 C...Flavour information for individual beams.
6109       DO 140 I=1,2
6110         MINT(40+I)=1
6111         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
6112         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
6113         MINT(44+I)=MINT(40+I)
6114         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
6115      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
6116   140 CONTINUE
6117  
6118 C...If two real gammas, whereof one direct, pick the first.
6119 C...For two virtual photons, keep requested order.
6120       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6121         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
6122           MINT(41)=1
6123           MINT(45)=1
6124         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
6125      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
6126           MINT(41)=1
6127           MINT(45)=1
6128         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
6129      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
6130           MINT(42)=1
6131           MINT(46)=1
6132         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
6133      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
6134           MINT(41)=1
6135           MINT(45)=1
6136         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
6137      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
6138           MINT(42)=1
6139           MINT(46)=1
6140         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
6141           MINT(41)=1
6142           MINT(45)=1
6143         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
6144           MINT(42)=1
6145           MINT(46)=1
6146         ENDIF
6147       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
6148         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
6149           IF(MINT(11).EQ.22) THEN
6150             MINT(41)=1
6151             MINT(45)=1
6152           ELSE
6153             MINT(42)=1
6154             MINT(46)=1
6155           ENDIF
6156         ENDIF
6157         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
6158      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
6159       ENDIF
6160  
6161 C...Flavour information on combination of incoming particles.
6162       MINT(43)=2*MINT(41)+MINT(42)-2
6163       MINT(44)=MINT(43)
6164       IF(MINT(123).LE.0) THEN
6165         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
6166         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
6167       ELSEIF(MINT(123).LE.3) THEN
6168         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
6169         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
6170       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6171         MINT(43)=4
6172         MINT(44)=1
6173       ENDIF
6174       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
6175       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
6176       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
6177       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
6178       MINT(50)=0
6179       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2.AND.MINT(111).NE.12) MINT(50)=1
6180       MINT(107)=0
6181       MINT(108)=0
6182       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
6183         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
6184      &  MINT(107)=2
6185         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
6186      &  MINT(107)=3
6187         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
6188         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
6189      &  MINT(122).EQ.10) MINT(108)=2
6190         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
6191      &  MINT(122).EQ.11) MINT(108)=3
6192         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
6193       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
6194         IF(MINT(122).GE.3) MINT(107)=1
6195         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
6196       ELSEIF(MINT(121).EQ.2) THEN
6197         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
6198         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
6199       ELSE
6200         IF(MINT(11).EQ.22) THEN
6201           MINT(107)=MINT(123)
6202           IF(MINT(123).GE.4) MINT(107)=0
6203           IF(MINT(123).EQ.7) MINT(107)=2
6204           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
6205           IF(MSTP(14).EQ.28) MINT(107)=2
6206           IF(MSTP(14).EQ.29) MINT(107)=3
6207           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6208      &    MINT(107)=4
6209         ENDIF
6210         IF(MINT(12).EQ.22) THEN
6211           MINT(108)=MINT(123)
6212           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
6213           IF(MINT(123).EQ.7) MINT(108)=3
6214           IF(MSTP(14).EQ.26) MINT(108)=2
6215           IF(MSTP(14).EQ.27) MINT(108)=3
6216           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
6217           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6218      &    MINT(108)=4
6219         ENDIF
6220         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
6221      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
6222           MINTTP=MINT(107)
6223           MINT(107)=MINT(108)
6224           MINT(108)=MINTTP
6225         ENDIF
6226       ENDIF
6227       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
6228       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
6229  
6230 C...Select default processes according to incoming beams
6231 C...(already done for gamma-p and gamma-gamma with
6232 C...MSTP(14) = 10, 20, 25 or 30).
6233       IF(MINT(121).GT.1) THEN
6234       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
6235  
6236         IF(MINT(43).EQ.1) THEN
6237 C...Lepton + lepton -> gamma/Z0 or W.
6238           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
6239           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
6240  
6241         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
6242      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
6243 C...Unresolved photon + lepton: Compton scattering.
6244           MSUB(133)=1
6245           MSUB(134)=1
6246  
6247         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
6248      &  .OR.MINT(12).EQ.22)) THEN
6249 C...DIS as pure gamma* + f -> f process.
6250           MSUB(99)=1
6251  
6252         ELSEIF(MINT(43).LE.3) THEN
6253 C...Lepton + hadron: deep inelastic scattering.
6254           MSUB(10)=1
6255  
6256         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
6257      &    MINT(12).EQ.22) THEN
6258 C...Two unresolved photons: fermion pair production,
6259 C...exclude lepton pairs.
6260           DO 150 ISUB=137,140
6261             MSUB(ISUB)=1
6262   150     CONTINUE
6263           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6264             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6265   160     CONTINUE
6266           PTMDIR=PTMRUN
6267           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
6268           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
6269           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
6270  
6271         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
6272      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
6273      &    MINT(12).EQ.22)) THEN
6274 C...Unresolved photon + hadron: photon-parton scattering.
6275           DO 170 ISUB=131,136
6276             MSUB(ISUB)=1
6277   170     CONTINUE
6278  
6279         ELSEIF(MSEL.EQ.1) THEN
6280 C...High-pT QCD processes:
6281           MSUB(11)=1
6282           MSUB(12)=1
6283           MSUB(13)=1
6284           MSUB(28)=1
6285           MSUB(53)=1
6286           MSUB(68)=1
6287           PTMN=PTMRUN
6288           VINT(154)=PTMN
6289           IF(CKIN(3).LT.PTMN) MSUB(95)=1
6290           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
6291  
6292         ELSE
6293 C...All QCD processes:
6294           MSUB(11)=1
6295           MSUB(12)=1
6296           MSUB(13)=1
6297           MSUB(28)=1
6298           MSUB(53)=1
6299           MSUB(68)=1
6300           MSUB(91)=1
6301           MSUB(92)=1
6302           MSUB(93)=1
6303           MSUB(94)=1
6304           MSUB(95)=1
6305         ENDIF
6306  
6307       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
6308 C...Heavy quark production.
6309         MSUB(81)=1
6310         MSUB(82)=1
6311         MSUB(84)=1
6312         DO 180 J=1,MIN(8,MDCY(21,3))
6313           MDME(MDCY(21,2)+J-1,1)=0
6314   180   CONTINUE
6315         MDME(MDCY(21,2)+MSEL-1,1)=1
6316         MSUB(85)=1
6317         DO 190 J=1,MIN(12,MDCY(22,3))
6318           MDME(MDCY(22,2)+J-1,1)=0
6319   190   CONTINUE
6320         MDME(MDCY(22,2)+MSEL-1,1)=1
6321  
6322       ELSEIF(MSEL.EQ.10) THEN
6323 C...Prompt photon production:
6324         MSUB(14)=1
6325         MSUB(18)=1
6326         MSUB(29)=1
6327  
6328       ELSEIF(MSEL.EQ.11) THEN
6329 C...Z0/gamma* production:
6330         MSUB(1)=1
6331  
6332       ELSEIF(MSEL.EQ.12) THEN
6333 C...W+/- production:
6334         MSUB(2)=1
6335  
6336       ELSEIF(MSEL.EQ.13) THEN
6337 C...Z0 + jet:
6338         MSUB(15)=1
6339         MSUB(30)=1
6340  
6341       ELSEIF(MSEL.EQ.14) THEN
6342 C...W+/- + jet:
6343         MSUB(16)=1
6344         MSUB(31)=1
6345  
6346       ELSEIF(MSEL.EQ.15) THEN
6347 C...Z0 & W+/- pair production:
6348         MSUB(19)=1
6349         MSUB(20)=1
6350         MSUB(22)=1
6351         MSUB(23)=1
6352         MSUB(25)=1
6353  
6354       ELSEIF(MSEL.EQ.16) THEN
6355 C...h0 production:
6356         MSUB(3)=1
6357         MSUB(102)=1
6358         MSUB(103)=1
6359         MSUB(123)=1
6360         MSUB(124)=1
6361  
6362       ELSEIF(MSEL.EQ.17) THEN
6363 C...h0 & Z0 or W+/- pair production:
6364         MSUB(24)=1
6365         MSUB(26)=1
6366  
6367       ELSEIF(MSEL.EQ.18) THEN
6368 C...h0 production; interesting processes in e+e-.
6369         MSUB(24)=1
6370         MSUB(103)=1
6371         MSUB(123)=1
6372         MSUB(124)=1
6373  
6374       ELSEIF(MSEL.EQ.19) THEN
6375 C...h0, H0 and A0 production; interesting processes in e+e-.
6376         MSUB(24)=1
6377         MSUB(103)=1
6378         MSUB(123)=1
6379         MSUB(124)=1
6380         MSUB(153)=1
6381         MSUB(171)=1
6382         MSUB(173)=1
6383         MSUB(174)=1
6384         MSUB(158)=1
6385         MSUB(176)=1
6386         MSUB(178)=1
6387         MSUB(179)=1
6388  
6389       ELSEIF(MSEL.EQ.21) THEN
6390 C...Z'0 production:
6391         MSUB(141)=1
6392  
6393       ELSEIF(MSEL.EQ.22) THEN
6394 C...W'+/- production:
6395         MSUB(142)=1
6396  
6397       ELSEIF(MSEL.EQ.23) THEN
6398 C...H+/- production:
6399         MSUB(143)=1
6400  
6401       ELSEIF(MSEL.EQ.24) THEN
6402 C...R production:
6403         MSUB(144)=1
6404  
6405       ELSEIF(MSEL.EQ.25) THEN
6406 C...LQ (leptoquark) production.
6407         MSUB(145)=1
6408         MSUB(162)=1
6409         MSUB(163)=1
6410         MSUB(164)=1
6411  
6412       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
6413 C...Production of one heavy quark (W exchange):
6414         MSUB(83)=1
6415         DO 200 J=1,MIN(8,MDCY(21,3))
6416           MDME(MDCY(21,2)+J-1,1)=0
6417   200   CONTINUE
6418         MDME(MDCY(21,2)+MSEL-31,1)=1
6419  
6420 CMRENNA++Define SUSY alternatives.
6421       ELSEIF(MSEL.EQ.39) THEN
6422 C...Turn on all SUSY processes.
6423         IF(MINT(43).EQ.4) THEN
6424 C...Hadron-hadron processes.
6425           DO 210 I=201,301
6426             IF(ISET(I).GE.0) MSUB(I)=1
6427   210     CONTINUE
6428         ELSEIF(MINT(43).EQ.1) THEN
6429 C...Lepton-lepton processes: QED production of squarks.
6430           DO 220 I=201,214
6431             MSUB(I)=1
6432   220     CONTINUE
6433           MSUB(210)=0
6434           MSUB(211)=0
6435           MSUB(212)=0
6436           DO 230 I=216,228
6437             MSUB(I)=1
6438   230     CONTINUE
6439           DO 240 I=261,263
6440             MSUB(I)=1
6441   240     CONTINUE
6442           MSUB(277)=1
6443           MSUB(278)=1
6444         ENDIF
6445  
6446       ELSEIF(MSEL.EQ.40) THEN
6447 C...Gluinos and squarks.
6448         IF(MINT(43).EQ.4) THEN
6449           MSUB(243)=1
6450           MSUB(244)=1
6451           MSUB(258)=1
6452           MSUB(259)=1
6453           MSUB(261)=1
6454           MSUB(262)=1
6455           MSUB(264)=1
6456           MSUB(265)=1
6457           DO 250 I=271,296
6458             MSUB(I)=1
6459   250     CONTINUE
6460         ELSEIF(MINT(43).EQ.1) THEN
6461           MSUB(277)=1
6462           MSUB(278)=1
6463         ENDIF
6464  
6465       ELSEIF(MSEL.EQ.41) THEN
6466 C...Stop production.
6467         MSUB(261)=1
6468         MSUB(262)=1
6469         MSUB(263)=1
6470         IF(MINT(43).EQ.4) THEN
6471           MSUB(264)=1
6472           MSUB(265)=1
6473         ENDIF
6474  
6475       ELSEIF(MSEL.EQ.42) THEN
6476 C...Slepton production.
6477         DO 260 I=201,214
6478           MSUB(I)=1
6479   260   CONTINUE
6480         IF(MINT(43).NE.4) THEN
6481           MSUB(210)=0
6482           MSUB(211)=0
6483           MSUB(212)=0
6484         ENDIF
6485  
6486       ELSEIF(MSEL.EQ.43) THEN
6487 C...Neutralino/Chargino + Gluino/Squark.
6488         IF(MINT(43).EQ.4) THEN
6489           DO 270 I=237,242
6490             MSUB(I)=1
6491   270     CONTINUE
6492           DO 280 I=246,254
6493             MSUB(I)=1
6494   280     CONTINUE
6495           MSUB(256)=1
6496         ENDIF
6497  
6498       ELSEIF(MSEL.EQ.44) THEN
6499 C...Neutralino/Chargino pair production.
6500         IF(MINT(43).EQ.4) THEN
6501           DO 290 I=216,236
6502             MSUB(I)=1
6503   290     CONTINUE
6504         ELSEIF(MINT(43).EQ.1) THEN
6505           DO 300 I=216,228
6506             MSUB(I)=1
6507   300     CONTINUE
6508         ENDIF
6509  
6510       ELSEIF(MSEL.EQ.45) THEN
6511 C...Sbottom production.
6512         MSUB(287)=1
6513         MSUB(288)=1
6514         IF(MINT(43).EQ.4) THEN
6515           DO 310 I=281,296
6516             MSUB(I)=1
6517   310     CONTINUE
6518         ENDIF
6519  
6520       ELSEIF(MSEL.EQ.50) THEN
6521 C...Pair production of technipions and gauge bosons.
6522         DO 320 I=361,368
6523           MSUB(I)=1
6524   320   CONTINUE
6525         IF(MINT(43).EQ.4) THEN
6526           DO 330 I=370,377
6527             MSUB(I)=1
6528   330     CONTINUE
6529         ENDIF
6530  
6531       ELSEIF(MSEL.EQ.51) THEN
6532 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
6533         DO 340 I=381,386
6534           MSUB(I)=1
6535   340   CONTINUE
6536  
6537       ELSEIF(MSEL.EQ.61) THEN
6538 C...Charmonium production in colour octet model, with recoiling parton.
6539         DO 342 I=421,439
6540           MSUB(I)=1
6541  342   CONTINUE
6542  
6543       ELSEIF(MSEL.EQ.62) THEN
6544 C...Bottomonium production in colour octet model, with recoiling parton.
6545         DO 344 I=461,479
6546           MSUB(I)=1
6547  344   CONTINUE
6548  
6549       ELSEIF(MSEL.EQ.63) THEN
6550 C...Charmonium and bottomonium production in colour octet model.
6551         DO 346 I=421,439
6552           MSUB(I)=1
6553           MSUB(I+40)=1
6554  346   CONTINUE
6555       ENDIF
6556  
6557 C...Find heaviest new quark flavour allowed in processes 81-84.
6558       KFLQM=1
6559       DO 350 I=1,MIN(8,MDCY(21,3))
6560         IDC=I+MDCY(21,2)-1
6561         IF(MDME(IDC,1).LE.0) GOTO 350
6562         KFLQM=I
6563   350 CONTINUE
6564       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
6565      &KFLQM=MSTP(7)
6566       MINT(55)=KFLQM
6567       KFPR(81,1)=KFLQM
6568       KFPR(81,2)=KFLQM
6569       KFPR(82,1)=KFLQM
6570       KFPR(82,2)=KFLQM
6571       KFPR(83,1)=KFLQM
6572       KFPR(84,1)=KFLQM
6573       KFPR(84,2)=KFLQM
6574  
6575 C...Find heaviest new fermion flavour allowed in process 85.
6576       KFLFM=1
6577       DO 360 I=1,MIN(12,MDCY(22,3))
6578         IDC=I+MDCY(22,2)-1
6579         IF(MDME(IDC,1).LE.0) GOTO 360
6580         KFLFM=KFDP(IDC,1)
6581   360 CONTINUE
6582       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
6583      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
6584       MINT(56)=KFLFM
6585       KFPR(85,1)=KFLFM
6586       KFPR(85,2)=KFLFM
6587  
6588 C...Import relevant information on external user processes.
6589       IF(MINT(111).GE.11) THEN
6590         IPYPR=0
6591         DO 390 IUP=1,NPRUP
6592 C...Find next empty PYTHIA process number slot and enable it.
6593   370     IPYPR=IPYPR+1
6594           IF(IPYPR.GT.500) CALL PYERRM(26,
6595      &    '(PYINPR.) no more empty slots for user processes')
6596           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
6597           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
6598           ISET(IPYPR)=11
6599 C...Overwrite KFPR with references back to process number and ID.
6600           KFPR(IPYPR,1)=IUP
6601           KFPR(IPYPR,2)=LPRUP(IUP)
6602 C...Process title.
6603           WRITE(CHIPR,'(I10)') LPRUP(IUP)
6604           ICHIN=1
6605           DO 380 ICH=1,9
6606             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
6607   380     CONTINUE
6608           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
6609 C...Switch on process.
6610           MSUB(IPYPR)=1
6611   390   CONTINUE
6612       ENDIF
6613  
6614       RETURN
6615       END
6616  
6617 C*********************************************************************
6618  
6619 C...PYXTOT
6620 C...Parametrizes total, elastic and diffractive cross-sections
6621 C...for different energies and beams. Donnachie-Landshoff for
6622 C...total and Schuler-Sjostrand for elastic and diffractive.
6623 C...Process code IPROC:
6624 C...=  1 : p + p;
6625 C...=  2 : pbar + p;
6626 C...=  3 : pi+ + p;
6627 C...=  4 : pi- + p;
6628 C...=  5 : pi0 + p;
6629 C...=  6 : phi + p;
6630 C...=  7 : J/psi + p;
6631 C...= 11 : rho + rho;
6632 C...= 12 : rho + phi;
6633 C...= 13 : rho + J/psi;
6634 C...= 14 : phi + phi;
6635 C...= 15 : phi + J/psi;
6636 C...= 16 : J/psi + J/psi;
6637 C...= 21 : gamma + p (DL);
6638 C...= 22 : gamma + p (VDM).
6639 C...= 23 : gamma + pi (DL);
6640 C...= 24 : gamma + pi (VDM);
6641 C...= 25 : gamma + gamma (DL);
6642 C...= 26 : gamma + gamma (VDM).
6643  
6644       SUBROUTINE PYXTOT
6645  
6646 C...Double precision and integer declarations.
6647       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6648       IMPLICIT INTEGER(I-N)
6649       INTEGER PYK,PYCHGE,PYCOMP
6650 C...Commonblocks.
6651       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6652       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6653       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6654       COMMON/PYINT1/MINT(400),VINT(400)
6655       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6656       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6657       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
6658 C...Local arrays.
6659       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
6660      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
6661      &CEFFD(10,9),SIGTMP(6,0:5)
6662  
6663 C...Common constants.
6664       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
6665      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
6666      &FACDD/0.0084D0/
6667  
6668 C...Number of multiple processes to be evaluated (= 0 : undefined).
6669       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
6670 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
6671       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
6672      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
6673      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
6674       DATA YPAR/
6675      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
6676      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
6677      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
6678  
6679 C...Beam and target hadron class:
6680 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
6681       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
6682       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
6683 C...Characteristic class masses, slope parameters, beta = sqrt(X).
6684       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
6685       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
6686       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
6687  
6688 C...Fitting constants used in parametrizations of diffractive results.
6689       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6690       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6691       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
6692      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
6693      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
6694      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
6695      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
6696      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
6697      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
6698      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
6699      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
6700      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
6701      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
6702       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
6703      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
6704      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
6705      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
6706      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
6707      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
6708      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
6709      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
6710      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
6711      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
6712      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
6713      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
6714      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
6715      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
6716      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
6717      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
6718  
6719 C...Parameters. Combinations of the energy.
6720       AEM=PARU(101)
6721       PMTH=PARP(102)
6722       S=VINT(2)
6723       SRT=VINT(1)
6724       SEPS=S**EPS
6725       SETA=S**ETA
6726       SLOG=LOG(S)
6727  
6728 C...Ratio of gamma/pi (for rescaling in parton distributions).
6729       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
6730      &(XPAR(5)*SEPS+YPAR(5)*SETA)
6731       VINT(317)=1D0
6732       IF(MINT(50).NE.1) RETURN
6733  
6734 C...Order flavours of incoming particles: KF1 < KF2.
6735       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
6736         KF1=IABS(MINT(11))
6737         KF2=IABS(MINT(12))
6738         IORD=1
6739       ELSE
6740         KF1=IABS(MINT(12))
6741         KF2=IABS(MINT(11))
6742         IORD=2
6743       ENDIF
6744       ISGN12=ISIGN(1,MINT(11)*MINT(12))
6745  
6746 C...Find process number (for lookup tables).
6747       IF(KF1.GT.1000) THEN
6748         IPROC=1
6749         IF(ISGN12.LT.0) IPROC=2
6750       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
6751         IPROC=3
6752         IF(ISGN12.LT.0) IPROC=4
6753         IF(KF1.EQ.111) IPROC=5
6754       ELSEIF(KF1.GT.100) THEN
6755         IPROC=11
6756       ELSEIF(KF2.GT.1000) THEN
6757         IPROC=21
6758         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
6759       ELSEIF(KF2.GT.100) THEN
6760         IPROC=23
6761         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
6762       ELSE
6763         IPROC=25
6764         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
6765       ENDIF
6766  
6767 C... Number of multiple processes to be stored; beam/target side.
6768       NPR=NPROC(IPROC)
6769       MINT(101)=1
6770       MINT(102)=1
6771       IF(NPR.EQ.3) THEN
6772         MINT(100+IORD)=4
6773       ELSEIF(NPR.EQ.6) THEN
6774         MINT(101)=4
6775         MINT(102)=4
6776       ENDIF
6777       N1=0
6778       IF(MINT(101).EQ.4) N1=4
6779       N2=0
6780       IF(MINT(102).EQ.4) N2=4
6781  
6782 C...Do not do any more for user-set or undefined cross-sections.
6783       IF(MSTP(31).LE.0) RETURN
6784       IF(NPR.EQ.0) CALL PYERRM(26,
6785      &'(PYXTOT:) cross section for this process not yet implemented')
6786  
6787 C...Parameters. Combinations of the energy.
6788       AEM=PARU(101)
6789       PMTH=PARP(102)
6790       S=VINT(2)
6791       SRT=VINT(1)
6792       SEPS=S**EPS
6793       SETA=S**ETA
6794       SLOG=LOG(S)
6795  
6796 C...Loop over multiple processes (for VDM).
6797       DO 110 I=1,NPR
6798         IF(NPR.EQ.1) THEN
6799           IPR=IPROC
6800         ELSEIF(NPR.EQ.3) THEN
6801           IPR=I+4
6802           IF(KF2.LT.1000) IPR=I+10
6803         ELSEIF(NPR.EQ.6) THEN
6804           IPR=I+10
6805         ENDIF
6806  
6807 C...Evaluate hadron species, mass, slope contribution and fit number.
6808         IHA=IHADA(IPR)
6809         IHB=IHADB(IPR)
6810         PMA=PMHAD(IHA)
6811         PMB=PMHAD(IHB)
6812         BHA=BHAD(IHA)
6813         BHB=BHAD(IHB)
6814         ISD=IFITSD(IPR)
6815         IDD=IFITDD(IPR)
6816  
6817 C...Skip if energy too low relative to masses.
6818         DO 100 J=0,5
6819           SIGTMP(I,J)=0D0
6820   100   CONTINUE
6821         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
6822  
6823 C...Total cross-section. Elastic slope parameter and cross-section.
6824         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
6825         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
6826         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
6827  
6828 C...Diffractive scattering A + B -> X + B.
6829         BSD=2D0*BHB
6830         SQML=(PMA+PMTH)**2
6831         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
6832         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
6833      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
6834         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
6835         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
6836      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
6837         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
6838  
6839 C...Diffractive scattering A + B -> A + X.
6840         BSD=2D0*BHA
6841         SQML=(PMB+PMTH)**2
6842         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
6843         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
6844      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
6845         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
6846         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
6847      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
6848         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
6849  
6850 C...Order single diffractive correctly.
6851         IF(IORD.EQ.2) THEN
6852           SIGSAV=SIGTMP(I,2)
6853           SIGTMP(I,2)=SIGTMP(I,3)
6854           SIGTMP(I,3)=SIGSAV
6855         ENDIF
6856  
6857 C...Double diffractive scattering A + B -> X1 + X2.
6858         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
6859         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
6860         SUM1=(DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0))/(2D0*ALP)
6861         IF(YEFF.LE.0) SUM1=0D0
6862         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
6863         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
6864         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
6865         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
6866      &  (2D0*ALP)
6867         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
6868         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
6869         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
6870      &  (2D0*ALP)
6871         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
6872         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB+PMRC)))
6873         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
6874      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
6875         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
6876  
6877 C...Non-diffractive by unitarity.
6878         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
6879      &  SIGTMP(I,4)
6880   110 CONTINUE
6881  
6882 C...Put temporary results in output array: only one process.
6883       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
6884         DO 120 J=0,5
6885           SIGT(0,0,J)=SIGTMP(1,J)
6886   120   CONTINUE
6887  
6888 C...Beam multiple processes.
6889       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
6890         IF(MINT(107).EQ.2) THEN
6891           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
6892         ELSE
6893           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6894      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
6895         ENDIF
6896         IF(MSTP(20).GT.0) THEN
6897           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
6898         ENDIF
6899         DO 140 I=1,4
6900           IF(MINT(107).EQ.2) THEN
6901             CONV=(AEM/PARP(160+I))*VINT(317)
6902           ELSEIF(VINT(154).GT.PARP(15)) THEN
6903             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
6904      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6905           ELSE
6906             CONV=0D0
6907           ENDIF
6908           I1=MAX(1,I-1)
6909           DO 130 J=0,5
6910             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
6911   130     CONTINUE
6912   140   CONTINUE
6913         DO 150 J=0,5
6914           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
6915   150   CONTINUE
6916  
6917 C...Target multiple processes.
6918       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
6919         IF(MINT(108).EQ.2) THEN
6920           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
6921         ELSE
6922           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6923      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
6924         ENDIF
6925         IF(MSTP(20).GT.0) THEN
6926           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
6927         ENDIF
6928         DO 170 I=1,4
6929           IF(MINT(108).EQ.2) THEN
6930             CONV=(AEM/PARP(160+I))*VINT(317)
6931           ELSEIF(VINT(154).GT.PARP(15)) THEN
6932             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
6933      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6934           ELSE
6935             CONV=0D0
6936           ENDIF
6937           IV=MAX(1,I-1)
6938           DO 160 J=0,5
6939             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
6940   160     CONTINUE
6941   170   CONTINUE
6942         DO 180 J=0,5
6943           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
6944   180   CONTINUE
6945  
6946 C...Both beam and target multiple processes.
6947       ELSE
6948         IF(MINT(107).EQ.2) THEN
6949           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
6950         ELSE
6951           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
6952      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
6953         ENDIF
6954         IF(MINT(108).EQ.2) THEN
6955           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
6956         ELSE
6957           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
6958      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
6959         ENDIF
6960         IF(MSTP(20).GT.0) THEN
6961           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
6962      &    VINT(308)))**MSTP(20)
6963         ENDIF
6964         DO 210 I1=1,4
6965           DO 200 I2=1,4
6966             IF(MINT(107).EQ.2) THEN
6967               CONV=(AEM/PARP(160+I1))*VINT(317)
6968             ELSEIF(VINT(154).GT.PARP(15)) THEN
6969               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
6970      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
6971             ELSE
6972               CONV=0D0
6973             ENDIF
6974             IF(MINT(108).EQ.2) THEN
6975               CONV=CONV*(AEM/PARP(160+I2))
6976             ELSEIF(VINT(154).GT.PARP(15)) THEN
6977               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
6978      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
6979             ELSE
6980               CONV=0D0
6981             ENDIF
6982             IF(I1.LE.2) THEN
6983               IV=MAX(1,I2-1)
6984             ELSEIF(I2.LE.2) THEN
6985               IV=MAX(1,I1-1)
6986             ELSEIF(I1.EQ.I2) THEN
6987               IV=2*I1-2
6988             ELSE
6989               IV=5
6990             ENDIF
6991             DO 190 J=0,5
6992               JV=J
6993               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
6994               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
6995   190       CONTINUE
6996   200     CONTINUE
6997   210   CONTINUE
6998         DO 230 J=0,5
6999           DO 220 I=1,4
7000             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
7001             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
7002   220     CONTINUE
7003           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
7004   230   CONTINUE
7005       ENDIF
7006  
7007 C...Scale up uniformly for Donnachie-Landshoff parametrization.
7008       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
7009         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
7010         DO 260 I1=0,N1
7011           DO 250 I2=0,N2
7012             DO 240 J=0,5
7013               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
7014   240       CONTINUE
7015   250     CONTINUE
7016   260   CONTINUE
7017       ENDIF
7018  
7019       RETURN
7020       END
7021  
7022 C*********************************************************************
7023  
7024 C...PYMAXI
7025 C...Finds optimal set of coefficients for kinematical variable selection
7026 C...and the maximum of the part of the differential cross-section used
7027 C...in the event weighting.
7028  
7029       SUBROUTINE PYMAXI
7030  
7031 C...Double precision and integer declarations.
7032       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
7033       IMPLICIT INTEGER(I-N)
7034       INTEGER PYK,PYCHGE,PYCOMP
7035 C...Parameter statement to help give large particle numbers.
7036       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
7037      &KEXCIT=4000000,KDIMEN=5000000)
7038  
7039 C...User process initialization commonblock.
7040       INTEGER MAXPUP
7041       PARAMETER (MAXPUP=100)
7042       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
7043       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
7044       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
7045      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
7046      &LPRUP(MAXPUP)
7047       SAVE /HEPRUP/
7048  
7049 C...Commonblocks.
7050       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
7051       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
7052       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
7053       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
7054       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
7055       COMMON/PYINT1/MINT(400),VINT(400)
7056       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
7057       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
7058       COMMON/PYINT4/MWID(500),WIDS(500,5)
7059       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
7060       COMMON/PYINT6/PROC(0:500)
7061       CHARACTER PROC*28
7062       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
7063       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
7064       COMMON/PYTCCO/COEFX(194:380,2)
7065       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
7066       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
7067      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/,/PYTCCO/,
7068      &/PYTCSM/,/TCPARA/
7069 C...Local arrays, character variables and data.
7070       LOGICAL IOK
7071       CHARACTER CVAR(4)*4
7072       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
7073      &NAREL(9),WTREL(9),WTMAT(9,9),WTRELN(9),COEFU(9),COEFO(9),
7074      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2)
7075       DATA CVAR/'tau ','tau''','y*  ','cth '/
7076       DATA SIGSSM/3*0D0/
7077  
7078 C...Initial values and loop over subprocesses.
7079       NPOSI=0
7080       VINT(143)=1D0
7081       VINT(144)=1D0
7082       XSEC(0,1)=0D0
7083       ITECH=0
7084       DO 460 ISUB=1,500
7085         MINT(1)=ISUB
7086         MINT(51)=0
7087  
7088 C...Find maximum weight factors for photon flux.
7089         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
7090           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
7091         ENDIF
7092  
7093 C...Select subprocess to study: skip cases not applicable.
7094         IF(ISET(ISUB).EQ.11) THEN
7095           IF(MSUB(ISUB).NE.1) GOTO 460
7096 C...User process intialization: cross section model dependent.
7097           IF(IABS(IDWTUP).EQ.1) THEN
7098             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7099      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7100             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
7101           ELSE
7102             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
7103      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
7104      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
7105             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7106      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7107             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
7108           ENDIF
7109           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7110      &    WTGAGA*XSEC(ISUB,1)
7111           NPOSI=NPOSI+1
7112           GOTO 450
7113         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
7114           CALL PYSIGH(NCHN,SIGS)
7115           XSEC(ISUB,1)=SIGS
7116           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7117      &    WTGAGA*XSEC(ISUB,1)
7118           IF(MSUB(ISUB).NE.1) GOTO 460
7119           NPOSI=NPOSI+1
7120           GOTO 450
7121         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
7122           CALL PYSIGH(NCHN,SIGS)
7123           XSEC(ISUB,1)=SIGS
7124           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7125      &    WTGAGA*XSEC(ISUB,1)
7126           IF(XSEC(ISUB,1).EQ.0D0) THEN
7127             MSUB(ISUB)=0
7128           ELSE
7129             NPOSI=NPOSI+1
7130           ENDIF
7131           GOTO 450
7132         ELSEIF(ISUB.EQ.96) THEN
7133           IF(MINT(50).EQ.0) GOTO 460
7134           IF(MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0.AND.MSTP(131).LE.0)
7135      &    GOTO 460
7136           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
7137         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
7138      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
7139           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7140         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
7141           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7142         ELSE
7143           IF(MSUB(ISUB).NE.1) GOTO 460
7144         ENDIF
7145         ISTSB=ISET(ISUB)
7146         IF(ISUB.EQ.96) ISTSB=2
7147         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
7148         MWTXS=0
7149         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
7150      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
7151  
7152 C...Find resonances (explicit or implicit in cross-section).
7153         MINT(72)=0
7154         KFR1=0
7155         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
7156           KFR1=KFPR(ISUB,1)
7157         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
7158      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
7159           KFR1=23
7160         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
7161      &    .OR.ISUB.EQ.177) THEN
7162           KFR1=24
7163         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
7164           KFR1=25
7165           IF(MSTP(46).EQ.5) THEN
7166             KFR1=89
7167             PMAS(89,1)=PARP(45)
7168             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
7169           ENDIF
7170         ENDIF
7171         CKMX=CKIN(2)
7172         IF(CKMX.LE.0D0) CKMX=VINT(1)
7173         KCR1=PYCOMP(KFR1)
7174         IF(KFR1.NE.0) THEN
7175           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
7176      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
7177         ENDIF
7178         IF(KFR1.NE.0) THEN
7179           TAUR1=PMAS(KCR1,1)**2/VINT(2)
7180           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
7181           MINT(72)=1
7182           MINT(73)=KFR1
7183           VINT(73)=TAUR1
7184           VINT(74)=GAMR1
7185         ENDIF
7186         KFR2=0
7187         KFR3=0
7188         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
7189      $  (ISUB.GE.361.AND.ISUB.LE.380))
7190      $  THEN
7191           KFR2=23
7192           IF(ISUB.EQ.141) THEN
7193             KCR2=PYCOMP(KFR2)
7194             IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
7195      &       CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
7196               KFR2=0
7197             ELSE
7198               TAUR2=PMAS(KCR2,1)**2/VINT(2)            
7199               GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
7200               MINT(72)=2
7201               MINT(74)=KFR2
7202               VINT(75)=TAUR2
7203               VINT(76)=GAMR2
7204             ENDIF
7205           ELSEIF(ITECH.EQ.0) THEN
7206             ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
7207             ITECH=1
7208             KFR1=KTECHN+113              
7209             KCR1=PYCOMP(KFR1)
7210             KFR2=KTECHN+223
7211             KCR2=PYCOMP(KFR2)
7212             KFR3=KTECHN+115
7213             KCR3=PYCOMP(KFR3)
7214             IRES=0
7215 C...Order the resonances
7216             IF(PMAS(KCR3,1).LT.PMAS(KCR2,1)) THEN
7217               KCT=KCR3
7218               KCR3=KCR2
7219               KCR2=KCT
7220             ENDIF
7221             IF(PMAS(KCR3,1).LT.PMAS(KCR1,1)) THEN
7222               KCT=KCR3
7223               KCR3=KCR1
7224               KCR1=KCT
7225             ENDIF
7226             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7227               KCT=KCR2
7228               KCR2=KCR1
7229               KCR1=KCT
7230             ENDIF
7231             DO 101 I=1,3
7232               IF(I.EQ.1) THEN
7233                 SHN0=PMAS(KCR1,1)**2
7234               ELSEIF(I.EQ.2) THEN
7235                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 101
7236                 SHN0=PMAS(KCR2,1)**2
7237               ELSEIF(I.EQ.3) THEN
7238                 IF(ABS(PMAS(KCR3,1)-PMAS(KCR3,1)).LE.1D-6) GOTO 101
7239                 SHN0=PMAS(KCR3,1)**2
7240               ENDIF
7241               AEM=PYALEM(SHN0)
7242               FAR=SQRT(AEM/ALPRHT)              
7243               SHN=SHN0*(1D0-FAR)
7244               CALL PYTECM(SHN,S1,WIDO,1)
7245               RES=SHN-S1
7246               SHN=S1*.99D0
7247               SHSTEP=2D0
7248  102          SHN=SHN+SHSTEP
7249               CALL PYTECM(SHN,S1,WIDO,1)
7250               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7251                 IOK=.FALSE.
7252                 IF(IRES.GT.0) THEN
7253                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7254                 ELSEIF(IRES.EQ.0) THEN
7255                   IOK=.TRUE.
7256                 ENDIF
7257                 IF(IOK) THEN
7258                   IRES=IRES+1
7259                   XMAS(IRES)=SQRT(S1)
7260                   XWID(IRES)=WIDO
7261                 ENDIF
7262               ENDIF
7263               RES=SHN-S1
7264               IF(IRES.LT.3.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 102
7265  101        CONTINUE
7266             JRES=0
7267             KFR1=KTECHN+213              
7268             KCR1=PYCOMP(KFR1)
7269             KFR2=KTECHN+215
7270             KCR2=PYCOMP(KFR2)
7271             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7272               KCT=KCR2
7273               KCR2=KCR1
7274               KCR1=KCT
7275             ENDIF
7276             DO 103 I=1,2
7277               IF(I.EQ.1) THEN
7278                 SHN0=PMAS(KCR1,1)**2
7279               ELSEIF(I.EQ.2) THEN
7280                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 103
7281                 SHN0=PMAS(KCR2,1)**2
7282               ENDIF
7283               AEM=PYALEM(SHN0)
7284               FAR=SQRT(AEM/ALPRHT)              
7285               SHN=SHN0*(1D0-FAR)
7286               CALL PYTECM(SHN,S1,WIDO,2)
7287               RES=SHN-S1
7288               SHN=S1*.99D0
7289               SHSTEP=2D0
7290  104          SHN=SHN+SHSTEP
7291               CALL PYTECM(SHN,S1,WIDO,2)
7292               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7293                 IOK=.FALSE.
7294                 IF(JRES.GT.0) THEN
7295                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7296                 ELSEIF(JRES.EQ.0) THEN
7297                   IOK=.TRUE.
7298                 ENDIF
7299                 IF(IOK) THEN
7300                   JRES=JRES+1
7301                   YMAS(JRES)=SQRT(S1)
7302                   YWID(JRES)=WIDO
7303                 ENDIF
7304               ENDIF
7305               RES=SHN-S1
7306               IF(JRES.LT.2.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 104
7307  103        CONTINUE
7308           ENDIF
7309           IF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368).OR.
7310      &     ISUB.EQ.379.OR.ISUB.EQ.380) THEN
7311             MINT(72)=IRES
7312             IF(IRES.GE.1) THEN
7313               VINT(73)=XMAS(1)**2/VINT(2)
7314               VINT(74)=XMAS(1)*XWID(1)/VINT(2)
7315               TAUR1=VINT(73)
7316               GAMR1=VINT(74)
7317               XM1=XMAS(1)
7318               XG1=XWID(1)
7319               KFR1=1
7320             ENDIF
7321             IF(IRES.GE.2) THEN
7322               VINT(75)=XMAS(2)**2/VINT(2)
7323               VINT(76)=XMAS(2)*XWID(2)/VINT(2)
7324               TAUR2=VINT(75)
7325               GAMR2=VINT(76)
7326               XM2=XMAS(2)
7327               XG2=XWID(2)
7328               KFR2=2
7329             ENDIF
7330             IF(IRES.EQ.3) THEN
7331               VINT(77)=XMAS(3)**2/VINT(2)
7332               VINT(78)=XMAS(3)*XWID(3)/VINT(2)
7333               TAUR3=VINT(77)
7334               GAMR3=VINT(78)
7335               XM3=XMAS(3)
7336               XG3=XWID(3)
7337               KFR3=3
7338             ENDIF
7339 C...Charged current:  rho+- and a+-
7340           ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
7341             MINT(72)=IRES
7342             IF(JRES.GE.1) THEN
7343               VINT(73)=YMAS(1)**2/VINT(2)
7344               VINT(74)=YMAS(1)*YWID(1)/VINT(2)
7345               KFR1=1
7346               TAUR1=VINT(73)
7347               GAMR1=VINT(74)
7348               XM1=YMAS(1)
7349               XG1=YWID(1)
7350             ENDIF
7351             IF(JRES.GE.2) THEN
7352               VINT(75)=YMAS(2)**2/VINT(2)
7353               VINT(76)=YMAS(2)*YWID(2)/VINT(2)
7354               KFR2=2
7355               TAUR2=VINT(73)
7356               GAMR2=VINT(74)
7357               XM2=YMAS(2)
7358               XG2=YWID(2)
7359             ENDIF
7360             KFR3=0
7361           ENDIF
7362           IF(ISUB.NE.141) THEN
7363             IF(KFR1.NE.0.AND.(CKIN(1).GT.(XM1+20D0*XG1)
7364      &       .OR.CKMX.LT.(XM1-20D0*XG1))) KFR1=0
7365             IF(KFR2.NE.0.AND.(CKIN(1).GT.(XM2+20D0*XG2)
7366      &       .OR.CKMX.LT.(XM2-20D0*XG2))) KFR2=0
7367             IF(KFR3.NE.0.AND.(CKIN(1).GT.(XM3+20D0*XG3)
7368      &       .OR.CKMX.LT.(XM3-20D0*XG3))) KFR3=0
7369             IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
7370
7371             ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
7372               MINT(72)=2
7373             ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
7374               MINT(72)=2
7375               MINT(74)=KFR3
7376               VINT(75)=TAUR3
7377               VINT(76)=GAMR3
7378             ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
7379               MINT(72)=2
7380               MINT(73)=KFR2
7381               VINT(73)=TAUR2
7382               VINT(74)=GAMR2
7383               MINT(74)=KFR3
7384               VINT(75)=TAUR3
7385               VINT(76)=GAMR3
7386             ELSEIF(KFR1.NE.0) THEN
7387               MINT(72)=1
7388             ELSEIF(KFR2.NE.0) THEN
7389               MINT(72)=1
7390               MINT(73)=KFR2
7391               VINT(73)=TAUR2
7392               VINT(74)=GAMR2
7393             ELSEIF(KFR3.NE.0) THEN
7394               MINT(72)=1
7395               MINT(73)=KFR3
7396               VINT(73)=TAUR3
7397               VINT(74)=GAMR3
7398             ELSE
7399               MINT(72)=0
7400             ENDIF
7401           ELSE
7402             IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
7403
7404             ELSEIF(KFR2.NE.0) THEN
7405               KFR1=KFR2
7406               TAUR1=TAUR2
7407               GAMR1=GAMR2
7408               MINT(72)=1
7409               MINT(73)=KFR1
7410               VINT(73)=TAUR1
7411               VINT(74)=GAMR1
7412               KFR2=0
7413             ELSE
7414               MINT(72)=0
7415             ENDIF
7416           ENDIF
7417         ENDIF
7418  
7419 C...Find product masses and minimum pT of process.
7420         SQM3=0D0
7421         SQM4=0D0
7422         MINT(71)=0
7423         VINT(71)=CKIN(3)
7424         VINT(80)=1D0
7425         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7426           NBW=0
7427           DO 110 I=1,2
7428             PMMN(I)=0D0
7429             IF(KFPR(ISUB,I).EQ.0) THEN
7430             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
7431      &        PARP(41)) THEN
7432               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7433               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7434             ELSE
7435               NBW=NBW+1
7436 C...This prevents SUSY/t particles from becoming too light.
7437               KFLW=KFPR(ISUB,I)
7438               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
7439                 KCW=PYCOMP(KFLW)
7440                 PMMN(I)=PMAS(KCW,1)
7441                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
7442                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
7443                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
7444      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
7445                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
7446      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
7447                     PMMN(I)=MIN(PMMN(I),PMSUM)
7448                   ENDIF
7449   100           CONTINUE
7450               ELSEIF(KFLW.EQ.6) THEN
7451                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
7452               ENDIF
7453             ENDIF
7454   110     CONTINUE
7455           IF(NBW.GE.1) THEN
7456             CKIN41=CKIN(41)
7457             CKIN43=CKIN(43)
7458             CKIN(41)=MAX(PMMN(1),CKIN(41))
7459             CKIN(43)=MAX(PMMN(2),CKIN(43))
7460             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
7461             CKIN(41)=CKIN41
7462             CKIN(43)=CKIN43
7463             IF(MINT(51).EQ.1) THEN
7464               WRITE(MSTU(11),5100) ISUB
7465               MSUB(ISUB)=0
7466               GOTO 460
7467             ENDIF
7468             SQM3=PQM3**2
7469             SQM4=PQM4**2
7470           ENDIF
7471           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
7472           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
7473           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
7474             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7475           ELSEIF(ISUB.EQ.96) THEN
7476             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7477           ENDIF
7478         ENDIF
7479         VINT(63)=SQM3
7480         VINT(64)=SQM4
7481  
7482 C...Prepare for additional variable choices in 2 -> 3.
7483         IF(ISTSB.EQ.5) THEN
7484           VINT(201)=0D0
7485           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
7486           VINT(206)=VINT(201)
7487           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
7488           VINT(204)=PMAS(23,1)
7489           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
7490           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
7491           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
7492      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
7493      &         VINT(204)=VINT(201)
7494           VINT(209)=VINT(204)
7495           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
7496         ENDIF
7497  
7498 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
7499         IPEAK7=0
7500         NPTS(1)=2+2*MINT(72)
7501         IF(MINT(47).EQ.1) THEN
7502           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
7503         ELSEIF(MINT(47).GE.5) THEN
7504           IF(ISTSB.LE.2.OR.ISTSB.GT.5) THEN
7505             NPTS(1)=NPTS(1)+1
7506             IPEAK7=1
7507           ENDIF
7508         ENDIF
7509         NPTS(2)=1
7510         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
7511           IF(MINT(47).GE.2) NPTS(2)=2
7512           IF(MINT(47).GE.5) NPTS(2)=3
7513         ENDIF
7514         NPTS(3)=1
7515         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
7516           NPTS(3)=3
7517           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
7518           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
7519         ENDIF
7520         NPTS(4)=1
7521         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
7522         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
7523  
7524 C...Reset coefficients of cross-section weighting.
7525         DO 120 J=1,20
7526           COEF(ISUB,J)=0D0
7527   120   CONTINUE
7528         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361
7529      &   .AND.ISUB.LE.380)) THEN
7530           DO 125 J=1,2
7531             COEFX(ISUB,J)=0D0
7532  125      CONTINUE
7533         ENDIF
7534         COEF(ISUB,1)=1D0
7535         COEF(ISUB,8)=0.5D0
7536         COEF(ISUB,9)=0.5D0
7537         COEF(ISUB,13)=1D0
7538         COEF(ISUB,18)=1D0
7539         MCTH=0
7540         MTAUP=0
7541         METAUP=0
7542         VINT(23)=0D0
7543         VINT(26)=0D0
7544         SIGSAM=0D0
7545  
7546 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
7547 C...in grid of phase space points.
7548         CALL PYKLIM(1)
7549         METAU=MINT(51)
7550         NACC=0
7551         DO 150 ITRY=1,NTRY
7552           MINT(51)=0
7553           IF(METAU.EQ.1) GOTO 150
7554           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
7555             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
7556             IF(MINT(72).LE.2.AND.MTAU.GT.2+2*MINT(72)) THEN
7557               MTAU=7
7558             ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.0.AND.MTAU.GE.7) THEN
7559               MTAU=MTAU+1              
7560             ENDIF
7561             RTAU=0.5D0
7562 C...Special case when both resonances have same mass,
7563 C...as is often the case in process 194.
7564 c           IF(MINT(72).GE.2) THEN
7565 c             IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
7566 c    &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
7567 c               IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
7568 c                 RTAU=0.4D0
7569 c               ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
7570 c                 RTAU=0.6D0
7571 c               ENDIF
7572 c             ENDIF
7573 c           ENDIF
7574             CALL PYKMAP(1,MTAU,RTAU)
7575             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
7576             METAUP=MINT(51)
7577           ENDIF
7578           IF(METAUP.EQ.1) GOTO 150
7579           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
7580      &    .EQ.0) THEN
7581             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
7582             CALL PYKMAP(4,MTAUP,0.5D0)
7583           ENDIF
7584           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
7585             CALL PYKLIM(2)
7586             MEYST=MINT(51)
7587           ENDIF
7588           IF(MEYST.EQ.1) GOTO 150
7589           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
7590             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
7591             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
7592             CALL PYKMAP(2,MYST,0.5D0)
7593             CALL PYKLIM(3)
7594             MECTH=MINT(51)
7595           ENDIF
7596           IF(MECTH.EQ.1) GOTO 150
7597           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7598             MCTH=1+MOD(ITRY-1,NPTS(4))
7599             CALL PYKMAP(3,MCTH,0.5D0)
7600           ENDIF
7601           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
7602  
7603 C...Store position and limits.
7604           MINT(51)=0
7605           CALL PYKLIM(0)
7606           IF(MINT(51).EQ.1) GOTO 150
7607           NACC=NACC+1
7608           MVARPT(NACC,1)=MTAU
7609           MVARPT(NACC,2)=MTAUP
7610           MVARPT(NACC,3)=MYST
7611           MVARPT(NACC,4)=MCTH
7612           DO 130 J=1,30
7613             VINTPT(NACC,J)=VINT(10+J)
7614   130     CONTINUE
7615  
7616 C...Normal case: calculate cross-section.
7617           IF(ISTSB.NE.5) THEN
7618             CALL PYSIGH(NCHN,SIGS)
7619             IF(MWTXS.EQ.1) THEN
7620               CALL PYEVWT(WTXS)
7621               SIGS=WTXS*SIGS
7622             ENDIF
7623  
7624 C..2 -> 3: find highest value out of a number of tries.
7625           ELSE
7626             SIGS=0D0
7627             DO 140 IKIN3=1,MSTP(129)
7628               CALL PYKMAP(5,0,0D0)
7629               IF(MINT(51).EQ.1) GOTO 140
7630               CALL PYSIGH(NCHN,SIGTMP)
7631               IF(MWTXS.EQ.1) THEN
7632                 CALL PYEVWT(WTXS)
7633                 SIGTMP=WTXS*SIGTMP
7634               ENDIF
7635               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
7636   140       CONTINUE
7637           ENDIF
7638  
7639 C...Store cross-section.
7640           SIGSPT(NACC)=SIGS
7641           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
7642           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
7643      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
7644   150   CONTINUE
7645         IF(NACC.EQ.0) THEN
7646           WRITE(MSTU(11),5100) ISUB
7647           MSUB(ISUB)=0
7648           GOTO 460
7649         ELSEIF(SIGSAM.EQ.0D0) THEN
7650           WRITE(MSTU(11),5300) ISUB
7651           MSUB(ISUB)=0
7652           GOTO 460
7653         ENDIF
7654         IF(ISUB.NE.96) NPOSI=NPOSI+1
7655  
7656 C...Calculate integrals in tau over maximal phase space limits.
7657         TAUMIN=VINT(11)
7658         TAUMAX=VINT(31)
7659         ATAU1=LOG(TAUMAX/TAUMIN)
7660         IF(NPTS(1).GE.2) THEN
7661           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
7662         ENDIF
7663         IF(NPTS(1).GE.4) THEN
7664           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
7665           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
7666      &    GAMR1
7667         ENDIF
7668         IF(NPTS(1).GE.6) THEN
7669           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
7670           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
7671      &    GAMR2
7672         ENDIF
7673         IF(NPTS(1).GE.8) THEN
7674           ATAU8=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))/TAUR3
7675           ATAU9=(ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3))/
7676      &    GAMR3
7677         ENDIF
7678         IF(IPEAK7.EQ.1) THEN
7679           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
7680         ENDIF
7681  
7682 C...Reset. Sum up cross-sections in points calculated.
7683         DO 320 IVAR=1,4
7684           IF(NPTS(IVAR).EQ.1) GOTO 320
7685           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
7686           NBIN=NPTS(IVAR)
7687           DO 170 J1=1,NBIN
7688             NAREL(J1)=0
7689             WTREL(J1)=0D0
7690             COEFU(J1)=0D0
7691             DO 160 J2=1,NBIN
7692               WTMAT(J1,J2)=0D0
7693   160       CONTINUE
7694   170     CONTINUE
7695           DO 180 IACC=1,NACC
7696             IBIN=MVARPT(IACC,IVAR)
7697             IF(IVAR.EQ.1) THEN
7698               IF(IBIN.GT.7.AND.IPEAK7.EQ.0) THEN
7699                 IBIN=IBIN-1
7700               ELSEIF(IBIN.EQ.7.AND.IPEAK7.EQ.1.AND.MSTP(72).LT.3) THEN
7701                 IBIN=3+2*MINT(72)
7702               ENDIF
7703             ENDIF
7704             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
7705             NAREL(IBIN)=NAREL(IBIN)+1
7706             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
7707  
7708 C...Sum up tau cross-section pieces in points used.
7709             IF(IVAR.EQ.1) THEN
7710               TAU=VINTPT(IACC,11)
7711               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7712               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
7713               IF(NBIN.GE.4) THEN
7714                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
7715                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
7716      &          ((TAU-TAUR1)**2+GAMR1**2)
7717               ENDIF
7718               IF(NBIN.GE.6) THEN
7719                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
7720                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
7721      &          ((TAU-TAUR2)**2+GAMR2**2)
7722               ENDIF
7723               IF(MINT(72).LE.2.AND.IPEAK7.EQ.1) THEN
7724                 WTMAT(IBIN,3+2*MINT(72))=WTMAT(IBIN,3+2*MINT(72))
7725      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
7726               ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.1) THEN
7727                 WTMAT(IBIN,7)=WTMAT(IBIN,7)
7728      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
7729               ENDIF
7730               IF(MINT(72).EQ.3) THEN
7731                 WTMAT(IBIN,7+IPEAK7)=WTMAT(IBIN,7+IPEAK7)
7732      &           +(ATAU1/ATAU8)/(TAU+TAUR3)
7733                 WTMAT(IBIN,8+IPEAK7)=WTMAT(IBIN,8+IPEAK7)
7734      &           +(ATAU1/ATAU9)*TAU/((TAU-TAUR3)**2+GAMR3**2)
7735               ENDIF
7736 C...Sum up tau' cross-section pieces in points used.
7737             ELSEIF(IVAR.EQ.2) THEN
7738               TAU=VINTPT(IACC,11)
7739               TAUP=VINTPT(IACC,16)
7740               TAUPMN=VINTPT(IACC,6)
7741               TAUPMX=VINTPT(IACC,26)
7742               ATAUP1=LOG(TAUPMX/TAUPMN)
7743               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
7744               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7745               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
7746      &        (1D0-TAU/TAUP)**3/TAUP
7747               IF(NBIN.GE.3) THEN
7748                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
7749                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
7750      &          TAUP/MAX(2D-10,1D0-TAUP)
7751               ENDIF
7752  
7753 C...Sum up y* cross-section pieces in points used.
7754             ELSEIF(IVAR.EQ.3) THEN
7755               YST=VINTPT(IACC,12)
7756               YSTMIN=VINTPT(IACC,2)
7757               YSTMAX=VINTPT(IACC,22)
7758               AYST0=YSTMAX-YSTMIN
7759               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
7760               AYST2=AYST1
7761               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
7762               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
7763               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
7764               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
7765               IF(MINT(45).EQ.3) THEN
7766                 TAUE=VINTPT(IACC,11)
7767                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
7768                 YST0=-0.5D0*LOG(TAUE)
7769                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
7770      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
7771                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
7772      &          MAX(1D-10,1D0-EXP(YST-YST0))
7773               ENDIF
7774               IF(MINT(46).EQ.3) THEN
7775                 TAUE=VINTPT(IACC,11)
7776                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
7777                 YST0=-0.5D0*LOG(TAUE)
7778                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
7779      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
7780                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
7781      &          MAX(1D-10,1D0-EXP(-YST-YST0))
7782               ENDIF
7783  
7784 C...Sum up cos(theta-hat) cross-section pieces in points used.
7785             ELSE
7786               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
7787               RSQM=1D0+RM34
7788               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
7789               CTHMIN=-CTHMAX
7790               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
7791      &        (TAUMAX*VINT(2)))
7792               ACTH1=CTHMAX-CTHMIN
7793               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
7794               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
7795               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
7796               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
7797               CTH=VINTPT(IACC,13)
7798               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
7799               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
7800      &        MAX(RM34,RSQM-CTH)
7801               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
7802      &        MAX(RM34,RSQM+CTH)
7803               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
7804      &        MAX(RM34,RSQM-CTH)**2
7805               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
7806      &        MAX(RM34,RSQM+CTH)**2
7807             ENDIF
7808   180     CONTINUE
7809  
7810 C...Check that equation system solvable.
7811           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
7812           MSOLV=1
7813           WTRELS=0D0
7814           DO 190 IBIN=1,NBIN
7815             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
7816      &      IRED=1,NBIN),WTREL(IBIN)
7817             IF(NAREL(IBIN).EQ.0) MSOLV=0
7818             WTRELS=WTRELS+WTREL(IBIN)
7819   190     CONTINUE
7820           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
7821  
7822 C...Solve to find relative importance of cross-section pieces.
7823           IF(MSOLV.EQ.1) THEN
7824             DO 200 IBIN=1,NBIN
7825               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
7826   200       CONTINUE
7827             DO 230 IRED=1,NBIN-1
7828               DO 220 IBIN=IRED+1,NBIN
7829                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
7830                   MSOLV=0
7831                   GOTO 260
7832                 ENDIF
7833                 RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
7834                 WTREL(IBIN)=WTREL(IBIN)-RQT*WTREL(IRED)
7835                 DO 210 ICOE=IRED,NBIN
7836                   WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-RQT*WTMAT(IRED,ICOE)
7837   210           CONTINUE
7838   220         CONTINUE
7839   230       CONTINUE
7840             DO 250 IRED=NBIN,1,-1
7841               DO 240 ICOE=IRED+1,NBIN
7842                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
7843   240         CONTINUE
7844               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
7845   250       CONTINUE
7846           ENDIF
7847  
7848 C...Share evenly if failure.
7849   260     IF(MSOLV.EQ.0) THEN
7850             DO 270 IBIN=1,NBIN
7851               COEFU(IBIN)=1D0
7852               WTRELN(IBIN)=0.1D0
7853               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
7854      &        WTREL(IBIN)/WTRELS)
7855   270       CONTINUE
7856           ENDIF
7857  
7858 C...Normalize coefficients, with piece shared democratically.
7859           COEFSU=0D0
7860           WTRELS=0D0
7861           DO 280 IBIN=1,NBIN
7862             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
7863             COEFSU=COEFSU+COEFU(IBIN)
7864             WTRELS=WTRELS+WTRELN(IBIN)
7865   280     CONTINUE
7866           IF(COEFSU.GT.0D0) THEN
7867             DO 290 IBIN=1,NBIN
7868               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
7869      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
7870   290       CONTINUE
7871           ELSE
7872             DO 300 IBIN=1,NBIN
7873               COEFO(IBIN)=1D0/NBIN
7874   300       CONTINUE
7875           ENDIF
7876           IF(IVAR.EQ.1) IOFF=0
7877           IF(IVAR.EQ.2) IOFF=17
7878           IF(IVAR.EQ.3) IOFF=7
7879           IF(IVAR.EQ.4) IOFF=12
7880           DO 310 IBIN=1,NBIN
7881             ICOF=IOFF+IBIN
7882             IF(IVAR.EQ.1) THEN
7883               IF(IBIN.EQ.NBIN.AND.(MINT(72).LE.2.AND.IPEAK7.EQ.1)) THEN
7884                 ICOF=7
7885               ENDIF
7886             ENDIF
7887             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
7888             IF(IVAR.EQ.1.AND.IBIN.GE.7+IPEAK7.AND.MINT(72).EQ.3) THEN
7889               COEFX(ISUB,IBIN-6-IPEAK7)=COEFO(IBIN)
7890             ELSE
7891               COEF(ISUB,ICOF)=COEFO(IBIN)
7892             ENDIF
7893   310     CONTINUE
7894           
7895           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
7896      &       (COEFO(IBIN),IBIN=1,NBIN)
7897
7898   320   CONTINUE
7899  
7900 C...Find two most promising maxima among points previously determined.
7901         DO 330 J=1,4
7902           IACCMX(J)=0
7903           SIGSMX(J)=0D0
7904   330   CONTINUE
7905         NMAX=0
7906         DO 390 IACC=1,NACC
7907           DO 340 J=1,30
7908             VINT(10+J)=VINTPT(IACC,J)
7909   340     CONTINUE
7910           IF(ISTSB.NE.5) THEN
7911             CALL PYSIGH(NCHN,SIGS)
7912             IF(MWTXS.EQ.1) THEN
7913               CALL PYEVWT(WTXS)
7914               SIGS=WTXS*SIGS
7915             ENDIF
7916           ELSE
7917             SIGS=0D0
7918             DO 350 IKIN3=1,MSTP(129)
7919               CALL PYKMAP(5,0,0D0)
7920               IF(MINT(51).EQ.1) GOTO 350
7921               CALL PYSIGH(NCHN,SIGTMP)
7922               IF(MWTXS.EQ.1) THEN
7923                 CALL PYEVWT(WTXS)
7924                 SIGTMP=WTXS*SIGTMP
7925               ENDIF
7926               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
7927   350       CONTINUE
7928           ENDIF
7929           IEQ=0
7930           DO 360 IMV=1,NMAX
7931             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
7932   360     CONTINUE
7933           IF(IEQ.EQ.0) THEN
7934             DO 370 IMV=NMAX,1,-1
7935               IIN=IMV+1
7936               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
7937               IACCMX(IMV+1)=IACCMX(IMV)
7938               SIGSMX(IMV+1)=SIGSMX(IMV)
7939   370       CONTINUE
7940             IIN=1
7941   380       IACCMX(IIN)=IACC
7942             SIGSMX(IIN)=SIGS
7943             IF(NMAX.LE.1) NMAX=NMAX+1
7944           ENDIF
7945   390   CONTINUE
7946  
7947 C...Read out starting position for search.
7948         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
7949         SIGSAM=SIGSMX(1)
7950         DO 440 IMAX=1,NMAX
7951           IACC=IACCMX(IMAX)
7952           MTAU=MVARPT(IACC,1)
7953           MTAUP=MVARPT(IACC,2)
7954           MYST=MVARPT(IACC,3)
7955           MCTH=MVARPT(IACC,4)
7956           VTAU=0.5D0
7957           VYST=0.5D0
7958           VCTH=0.5D0
7959           VTAUP=0.5D0
7960  
7961 C...Starting point and step size in parameter space.
7962           DO 430 IRPT=1,2
7963             DO 420 IVAR=1,4
7964               IF(NPTS(IVAR).EQ.1) GOTO 420
7965               IF(IVAR.EQ.1) VVAR=VTAU
7966               IF(IVAR.EQ.2) VVAR=VTAUP
7967               IF(IVAR.EQ.3) VVAR=VYST
7968               IF(IVAR.EQ.4) VVAR=VCTH
7969               IF(IVAR.EQ.1) MVAR=MTAU
7970               IF(IVAR.EQ.2) MVAR=MTAUP
7971               IF(IVAR.EQ.3) MVAR=MYST
7972               IF(IVAR.EQ.4) MVAR=MCTH
7973               IF(IRPT.EQ.1) VDEL=0.1D0
7974               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
7975      &        0.98D0-VVAR))
7976               IF(IRPT.EQ.1) VMAR=0.02D0
7977               IF(IRPT.EQ.2) VMAR=0.002D0
7978               IMOV0=1
7979               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
7980               DO 410 IMOV=IMOV0,8
7981  
7982 C...Define new point in parameter space.
7983                 IF(IMOV.EQ.0) THEN
7984                   INEW=2
7985                   VNEW=VVAR
7986                 ELSEIF(IMOV.EQ.1) THEN
7987                   INEW=3
7988                   VNEW=VVAR+VDEL
7989                 ELSEIF(IMOV.EQ.2) THEN
7990                   INEW=1
7991                   VNEW=VVAR-VDEL
7992                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
7993      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
7994                   VVAR=VVAR+VDEL
7995                   SIGSSM(1)=SIGSSM(2)
7996                   SIGSSM(2)=SIGSSM(3)
7997                   INEW=3
7998                   VNEW=VVAR+VDEL
7999                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
8000      &            VVAR-2D0*VDEL.GT.VMAR) THEN
8001                   VVAR=VVAR-VDEL
8002                   SIGSSM(3)=SIGSSM(2)
8003                   SIGSSM(2)=SIGSSM(1)
8004                   INEW=1
8005                   VNEW=VVAR-VDEL
8006                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
8007                   VDEL=0.5D0*VDEL
8008                   VVAR=VVAR+VDEL
8009                   SIGSSM(1)=SIGSSM(2)
8010                   INEW=2
8011                   VNEW=VVAR
8012                 ELSE
8013                   VDEL=0.5D0*VDEL
8014                   VVAR=VVAR-VDEL
8015                   SIGSSM(3)=SIGSSM(2)
8016                   INEW=2
8017                   VNEW=VVAR
8018                 ENDIF
8019  
8020 C...Convert to relevant variables and find derived new limits.
8021                 ILERR=0
8022                 IF(IVAR.EQ.1) THEN
8023                   VTAU=VNEW
8024                   CALL PYKMAP(1,MTAU,VTAU)
8025                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
8026                     CALL PYKLIM(4)
8027                     IF(MINT(51).EQ.1) ILERR=1
8028                   ENDIF
8029                 ENDIF
8030                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
8031      &          ILERR.EQ.0) THEN
8032                   IF(IVAR.EQ.2) VTAUP=VNEW
8033                   CALL PYKMAP(4,MTAUP,VTAUP)
8034                 ENDIF
8035                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
8036                   CALL PYKLIM(2)
8037                   IF(MINT(51).EQ.1) ILERR=1
8038                 ENDIF
8039                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
8040                   IF(IVAR.EQ.3) VYST=VNEW
8041                   CALL PYKMAP(2,MYST,VYST)
8042                   CALL PYKLIM(3)
8043                   IF(MINT(51).EQ.1) ILERR=1
8044                 ENDIF
8045                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
8046      &          ILERR.EQ.0) THEN
8047                   IF(IVAR.EQ.4) VCTH=VNEW
8048                   CALL PYKMAP(3,MCTH,VCTH)
8049                 ENDIF
8050                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
8051  
8052 C...Evaluate cross-section. Save new maximum. Final maximum.
8053                 IF(ILERR.NE.0) THEN
8054                    SIGS=0.
8055                 ELSEIF(ISTSB.NE.5) THEN
8056                   CALL PYSIGH(NCHN,SIGS)
8057                   IF(MWTXS.EQ.1) THEN
8058                     CALL PYEVWT(WTXS)
8059                     SIGS=WTXS*SIGS
8060                   ENDIF
8061                 ELSE
8062                   SIGS=0D0
8063                   DO 400 IKIN3=1,MSTP(129)
8064                     CALL PYKMAP(5,0,0D0)
8065                     IF(MINT(51).EQ.1) GOTO 400
8066                     CALL PYSIGH(NCHN,SIGTMP)
8067                     IF(MWTXS.EQ.1) THEN
8068                         CALL PYEVWT(WTXS)
8069                         SIGTMP=WTXS*SIGTMP
8070                     ENDIF
8071                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
8072   400             CONTINUE
8073                 ENDIF
8074                 SIGSSM(INEW)=SIGS
8075                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
8076                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
8077      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
8078   410         CONTINUE
8079   420       CONTINUE
8080   430     CONTINUE
8081   440   CONTINUE
8082         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
8083         XSEC(ISUB,1)=1.05D0*SIGSAM
8084         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
8085      &  WTGAGA*XSEC(ISUB,1)
8086   450   CONTINUE
8087         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
8088      &  PARP(174)*XSEC(ISUB,1)
8089         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
8090   460 CONTINUE
8091       MINT(51)=0
8092  
8093 C...Print summary table.
8094       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
8095         IF(MSTP(127).NE.1) THEN
8096           WRITE(MSTU(11),5900)
8097           CALL PYSTOP(1)
8098         ELSE
8099           WRITE(MSTU(11),6400)
8100           MSTI(53)=1
8101         ENDIF
8102       ENDIF
8103       IF(MSTP(122).GE.1) THEN
8104         WRITE(MSTU(11),6000)
8105         WRITE(MSTU(11),6100)
8106         DO 470 ISUB=1,500
8107           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
8108           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
8109           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0)
8110      &    GOTO 470
8111           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
8112           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
8113      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
8114           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
8115           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
8116   470   CONTINUE
8117         WRITE(MSTU(11),6300)
8118       ENDIF
8119  
8120 C...Format statements for maximization results.
8121  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
8122      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
8123      &'cth',9X,'tau''',7X,'sigma')
8124  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
8125      &'phase space.'/1X,'Process switched off!')
8126  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
8127  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
8128      &'cross-section.'/1X,'Process switched off!')
8129  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
8130  5500 FORMAT(1X,1P,10D11.3)
8131  5600 FORMAT(1X,'Result for ',A4,':',9F9.4)
8132  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
8133      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
8134  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
8135  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
8136      &'cross-section.'/1X,'Execution stopped!')
8137  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
8138      &'cross-section maximum search',1X,8('*'))
8139  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
8140      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
8141      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
8142  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
8143  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
8144  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
8145      &'cross-section.'/
8146      &1X,'Execution will stop if you try to generate events.')
8147  
8148       RETURN
8149       END
8150  
8151 C*********************************************************************
8152  
8153 C...PYPILE
8154 C...Initializes multiplicity distribution and selects mutliplicity
8155 C...of pileup events, i.e. several events occuring at the same
8156 C...beam crossing.
8157  
8158       SUBROUTINE PYPILE(MPILE)
8159  
8160 C...Double precision and integer declarations.
8161       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8162       IMPLICIT INTEGER(I-N)
8163       INTEGER PYK,PYCHGE,PYCOMP
8164 C...Commonblocks.
8165       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8166       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8167       COMMON/PYINT1/MINT(400),VINT(400)
8168       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8169       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
8170 C...Local arrays and saved variables.
8171       DIMENSION WTI(0:200)
8172       SAVE IMIN,IMAX,WTI,WTS
8173  
8174 C...Sum of allowed cross-sections for pileup events.
8175       IF(MPILE.EQ.1) THEN
8176         VINT(131)=SIGT(0,0,5)
8177         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
8178         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
8179         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
8180         IF(MSTP(133).LE.0) RETURN
8181  
8182 C...Initialize multiplicity distribution at maximum.
8183         XNAVE=VINT(131)*PARP(131)
8184         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
8185         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
8186         WTI(INAVE)=1D0
8187         WTS=WTI(INAVE)
8188         WTN=WTI(INAVE)*INAVE
8189  
8190 C...Find shape of multiplicity distribution below maximum.
8191         IMIN=INAVE
8192         DO 100 I=INAVE-1,1,-1
8193           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
8194           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
8195           IF(WTI(I).LT.1D-6) GOTO 110
8196           WTS=WTS+WTI(I)
8197           WTN=WTN+WTI(I)*I
8198           IMIN=I
8199   100   CONTINUE
8200  
8201 C...Find shape of multiplicity distribution above maximum.
8202   110   IMAX=INAVE
8203         DO 120 I=INAVE+1,200
8204           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
8205           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
8206           IF(WTI(I).LT.1D-6) GOTO 130
8207           WTS=WTS+WTI(I)
8208           WTN=WTN+WTI(I)*I
8209           IMAX=I
8210   120   CONTINUE
8211   130   VINT(132)=XNAVE
8212         VINT(133)=WTN/WTS
8213         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
8214      &  WTS/(WTS+WTI(1)/XNAVE)
8215         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
8216         IF(MSTP(133).GE.2) VINT(134)=XNAVE
8217  
8218 C...Pick multiplicity of pileup events.
8219       ELSE
8220         IF(MSTP(133).LE.0) THEN
8221           MINT(81)=MAX(1,MSTP(134))
8222         ELSE
8223           WTR=WTS*PYR(0)
8224           DO 140 I=IMIN,IMAX
8225             MINT(81)=I
8226             WTR=WTR-WTI(I)
8227             IF(WTR.LE.0D0) GOTO 150
8228   140     CONTINUE
8229   150     CONTINUE
8230         ENDIF
8231       ENDIF
8232  
8233 C...Format statement for error message.
8234  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
8235      &'crossing too large, ',1P,D12.4)
8236  
8237       RETURN
8238       END
8239  
8240 C*********************************************************************
8241  
8242 C...PYSAVE
8243 C...Saves and restores parameter and cross section values for the
8244 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
8245 C...Also makes random choice between alternatives.
8246  
8247       SUBROUTINE PYSAVE(ISAVE,IGA)
8248  
8249 C...Double precision and integer declarations.
8250       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8251       IMPLICIT INTEGER(I-N)
8252       INTEGER PYK,PYCHGE,PYCOMP
8253 C...Commonblocks.
8254       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8255       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8256       COMMON/PYINT1/MINT(400),VINT(400)
8257       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8258       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8259       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8260       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
8261 C...Local arrays and saved variables.
8262       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
8263      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
8264      &INTCP(15,20),RECP(15,20)
8265       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
8266  
8267 C...Save list of subprocesses and cross-section information.
8268       IF(ISAVE.EQ.1) THEN
8269         ICP=0
8270         DO 120 I=1,500
8271           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
8272           ICP=ICP+1
8273           NSUBCP(IGA,ICP)=I
8274           MSUBCP(IGA,ICP)=MSUB(I)
8275           DO 100 J=1,20
8276             COEFCP(IGA,ICP,J)=COEF(I,J)
8277   100     CONTINUE
8278           DO 110 J=1,3
8279             NGENCP(IGA,ICP,J)=NGEN(I,J)
8280             XSECCP(IGA,ICP,J)=XSEC(I,J)
8281   110     CONTINUE
8282   120   CONTINUE
8283         NCP(IGA)=ICP
8284         DO 130 J=1,3
8285           NGENCP(IGA,0,J)=NGEN(0,J)
8286           XSECCP(IGA,0,J)=XSEC(0,J)
8287   130   CONTINUE
8288         DO 160 I1=0,6
8289           DO 150 I2=0,6
8290             DO 140 J=0,5
8291               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
8292   140       CONTINUE
8293   150     CONTINUE
8294   160   CONTINUE
8295  
8296 C...Save various common process variables.
8297         DO 170 J=1,10
8298           INTCP(IGA,J)=MINT(40+J)
8299   170   CONTINUE
8300         INTCP(IGA,11)=MINT(101)
8301         INTCP(IGA,12)=MINT(102)
8302         INTCP(IGA,13)=MINT(107)
8303         INTCP(IGA,14)=MINT(108)
8304         INTCP(IGA,15)=MINT(123)
8305         RECP(IGA,1)=CKIN(3)
8306         RECP(IGA,2)=VINT(318)
8307  
8308 C...Save cross-section information only.
8309       ELSEIF(ISAVE.EQ.2) THEN
8310         DO 190 ICP=1,NCP(IGA)
8311           I=NSUBCP(IGA,ICP)
8312           DO 180 J=1,3
8313             NGENCP(IGA,ICP,J)=NGEN(I,J)
8314             XSECCP(IGA,ICP,J)=XSEC(I,J)
8315   180     CONTINUE
8316   190   CONTINUE
8317         DO 200 J=1,3
8318           NGENCP(IGA,0,J)=NGEN(0,J)
8319           XSECCP(IGA,0,J)=XSEC(0,J)
8320   200   CONTINUE
8321  
8322 C...Choose between allowed alternatives.
8323       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
8324         IF(ISAVE.EQ.4) THEN
8325           XSUMCP=0D0
8326           DO 210 IG=1,MINT(121)
8327             XSUMCP=XSUMCP+XSECCP(IG,0,1)
8328   210     CONTINUE
8329           XSUMCP=XSUMCP*PYR(0)
8330           DO 220 IG=1,MINT(121)
8331             IGA=IG
8332             XSUMCP=XSUMCP-XSECCP(IG,0,1)
8333             IF(XSUMCP.LE.0D0) GOTO 230
8334   220     CONTINUE
8335   230     CONTINUE
8336         ENDIF
8337  
8338 C...Restore cross-section information.
8339         DO 240 I=1,500
8340           MSUB(I)=0
8341   240   CONTINUE
8342         DO 270 ICP=1,NCP(IGA)
8343           I=NSUBCP(IGA,ICP)
8344           MSUB(I)=MSUBCP(IGA,ICP)
8345           DO 250 J=1,20
8346             COEF(I,J)=COEFCP(IGA,ICP,J)
8347   250     CONTINUE
8348           DO 260 J=1,3
8349             NGEN(I,J)=NGENCP(IGA,ICP,J)
8350             XSEC(I,J)=XSECCP(IGA,ICP,J)
8351   260     CONTINUE
8352   270   CONTINUE
8353         DO 280 J=1,3
8354           NGEN(0,J)=NGENCP(IGA,0,J)
8355           XSEC(0,J)=XSECCP(IGA,0,J)
8356   280   CONTINUE
8357         DO 310 I1=0,6
8358           DO 300 I2=0,6
8359             DO 290 J=0,5
8360               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
8361   290       CONTINUE
8362   300     CONTINUE
8363   310   CONTINUE
8364  
8365 C...Restore various common process variables.
8366         DO 320 J=1,10
8367           MINT(40+J)=INTCP(IGA,J)
8368   320   CONTINUE
8369         MINT(101)=INTCP(IGA,11)
8370         MINT(102)=INTCP(IGA,12)
8371         MINT(107)=INTCP(IGA,13)
8372         MINT(108)=INTCP(IGA,14)
8373         MINT(123)=INTCP(IGA,15)
8374         CKIN(3)=RECP(IGA,1)
8375         CKIN(1)=2D0*CKIN(3)
8376         VINT(318)=RECP(IGA,2)
8377  
8378 C...Sum up cross-section info (for PYSTAT).
8379       ELSEIF(ISAVE.EQ.5) THEN
8380         DO 330 I=1,500
8381           MSUB(I)=0
8382           NGEN(I,1)=0
8383           NGEN(I,3)=0
8384           XSEC(I,3)=0D0
8385   330   CONTINUE
8386         NGEN(0,1)=0
8387         NGEN(0,2)=0
8388         NGEN(0,3)=0
8389         XSEC(0,3)=0
8390         DO 350 IG=1,MINT(121)
8391           DO 340 ICP=1,NCP(IG)
8392             I=NSUBCP(IG,ICP)
8393             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
8394             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
8395             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
8396             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
8397   340     CONTINUE
8398           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
8399           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
8400           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
8401           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
8402   350   CONTINUE
8403       ENDIF
8404  
8405       RETURN
8406       END
8407  
8408 C*********************************************************************
8409  
8410 C...PYGAGA
8411 C...For lepton beams it gives photon-hadron or photon-photon systems
8412 C...to be treated with the ordinary machinery and combines this with a
8413 C...description of the lepton -> lepton + photon branching.
8414  
8415       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
8416  
8417 C...Double precision and integer declarations.
8418       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8419       IMPLICIT INTEGER(I-N)
8420       INTEGER PYK,PYCHGE,PYCOMP
8421 C...Commonblocks.
8422       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
8423       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8424       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8425       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8426       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8427       COMMON/PYINT1/MINT(400),VINT(400)
8428       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8429       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
8430      &/PYINT5/
8431 C...Local variables and data statement.
8432       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
8433      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
8434       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
8435       DATA EPS/1D-4/
8436  
8437 C...Initialize generation of photons inside leptons.
8438       IF(IGAGA.EQ.1) THEN
8439  
8440 C...Save quantities on incoming lepton system.
8441         VINT(301)=VINT(1)
8442         VINT(302)=VINT(2)
8443         PMS(1)=VINT(303)**2
8444         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
8445         PMS(2)=VINT(304)**2
8446         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
8447         PMC(3)=VINT(302)-PMS(1)-PMS(2)
8448         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
8449  
8450 C...Calculate range of x and Q2 values allowed in generation.
8451         DO 100 I=1,2
8452           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
8453           IF(MINT(140+I).NE.0) THEN
8454             XMIN(I)=MAX(CKIN(59+2*I),EPS)
8455             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
8456      &      PMC(I),1D0-EPS)
8457             YMIN=MAX(CKIN(71+2*I),EPS)
8458             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
8459             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
8460      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
8461             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
8462             THEMIN=MAX(CKIN(67+2*I),0D0)
8463             THEMAX=MIN(CKIN(68+2*I),PARU(1))
8464             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
8465             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
8466      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
8467      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
8468             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
8469      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
8470      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
8471             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
8472 C...W limits when lepton on one side only.
8473             IF(MINT(143-I).EQ.0) THEN
8474               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
8475               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
8476      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
8477             ENDIF
8478           ENDIF
8479   100   CONTINUE
8480  
8481 C...W limits when lepton on both sides.
8482         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8483           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
8484      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
8485           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
8486      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
8487           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
8488             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
8489      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
8490             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
8491      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
8492           ELSE
8493             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
8494             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
8495           ENDIF
8496         ENDIF
8497  
8498 C...Q2 and W values and photon flux weight factors for initialization.
8499       ELSEIF(IGAGA.EQ.2) THEN
8500         ISUB=MINT(1)
8501         MINT(15)=0
8502         MINT(16)=0
8503  
8504 C...W value for photon on one or both sides, and for processes
8505 C...with gamma-gamma cross section peaked at small shat.
8506         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
8507           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
8508         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
8509           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
8510         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
8511           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
8512           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8513         ELSE
8514           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
8515           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8516         ENDIF
8517         VINT(1)=SQRT(MAX(0D0,VINT(2)))
8518  
8519 C...Upper estimate of photon flux weight factor.
8520 C...Initialization Q2 scale. Flag incoming unresolved photon.
8521         WTGAGA=1D0
8522         DO 110 I=1,2
8523           IF(MINT(140+I).NE.0) THEN
8524             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
8525      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
8526             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
8527      &      THEN
8528               Q2INIT=5D0+Q2MIN(3-I)
8529             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
8530               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
8531             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
8532               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
8533             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
8534      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
8535               Q2INIT=VINT(2)/3D0
8536             ELSEIF(ISUB.EQ.140) THEN
8537               Q2INIT=VINT(2)/2D0
8538             ELSE
8539               Q2INIT=Q2MIN(I)
8540             ENDIF
8541             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
8542             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
8543      &      MINT(14+I)=22
8544             VINT(306+I)=VINT(2+I)**2
8545           ENDIF
8546   110   CONTINUE
8547         VINT(320)=WTGAGA
8548  
8549 C...Update pTmin and cross section information.
8550         IF(MSTP(82).LE.1) THEN
8551           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
8552         ELSE
8553           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
8554         ENDIF
8555         VINT(149)=4D0*PTMN**2/VINT(2)
8556         VINT(154)=PTMN
8557         CALL PYXTOT
8558         VINT(318)=VINT(317)
8559  
8560 C...Generate photons inside leptons and
8561 C...calculate photon flux weight factors.
8562       ELSEIF(IGAGA.EQ.3) THEN
8563         ISUB=MINT(1)
8564         MINT(15)=0
8565         MINT(16)=0
8566  
8567 C...Generate phase space point and check against cuts.
8568         LOOP=0
8569   120   LOOP=LOOP+1
8570         DO 130 I=1,2
8571           IF(MINT(140+I).NE.0) THEN
8572 C...Pick x and Q2
8573             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
8574             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
8575 C...Cuts on internal consistency in x and Q2.
8576             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
8577             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
8578      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
8579 C...Cuts on y and theta.
8580             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
8581             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
8582             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
8583      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
8584             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
8585             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
8586             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
8587      &      GOTO 120
8588  
8589 C...Phi angle isotropic. Reconstruct pT.
8590             PHI(I)=PARU(2)*PYR(0)
8591             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
8592      &      PMS(I))*SIN(THETA(I))
8593  
8594 C...Store info on variables selected, for documentation purposes.
8595             VINT(2+I)=-SQRT(Q2(I))
8596             VINT(304+I)=X(I)
8597             VINT(306+I)=Q2(I)
8598             VINT(308+I)=Y(I)
8599             VINT(310+I)=THETA(I)
8600             VINT(312+I)=PHI(I)
8601           ELSE
8602             VINT(304+I)=1D0
8603             VINT(306+I)=0D0
8604             VINT(308+I)=1D0
8605             VINT(310+I)=0D0
8606             VINT(312+I)=0D0
8607           ENDIF
8608   130   CONTINUE
8609  
8610 C...Cut on W combines info from two sides.
8611         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8612           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
8613      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
8614      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
8615      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
8616           IF(W2.LT.W2MIN) GOTO 120
8617           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
8618           PMS1=-Q2(1)
8619           PMS2=-Q2(2)
8620         ELSEIF(MINT(141).NE.0) THEN
8621           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
8622           PMS1=-Q2(1)
8623           PMS2=PMS(2)
8624         ELSEIF(MINT(142).NE.0) THEN
8625           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
8626           PMS1=PMS(1)
8627           PMS2=-Q2(2)
8628         ENDIF
8629  
8630 C...Store kinematics info for photon(s) in subsystem cm frame.
8631         VINT(2)=W2
8632         VINT(1)=SQRT(W2)
8633         VINT(291)=0D0
8634         VINT(292)=0D0
8635         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
8636         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
8637         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
8638         VINT(296)=0D0
8639         VINT(297)=0D0
8640         VINT(298)=-VINT(293)
8641         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
8642         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
8643  
8644 C...Assign weight for photon flux; different for transverse and
8645 C...longitudinal photons. Flag incoming unresolved photon.
8646         WTGAGA=1D0
8647         DO 140 I=1,2
8648           IF(MINT(140+I).NE.0) THEN
8649             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
8650      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
8651             IF(MSTP(16).EQ.0) THEN
8652               XY=X(I)
8653             ELSE
8654               WTGAGA=WTGAGA*X(I)/Y(I)
8655               XY=Y(I)
8656             ENDIF
8657             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
8658               WTGAGA=WTGAGA*(1D0-XY)
8659             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
8660               WTGAGA=WTGAGA*(1D0-XY)
8661             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
8662               WTGAGA=WTGAGA*(1D0-XY)
8663             ELSE
8664               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
8665      &        PMS(I)*XY**2/Q2(I))
8666             ENDIF
8667             IF(MINT(106+I).EQ.0) MINT(14+I)=22
8668           ENDIF
8669   140   CONTINUE
8670         VINT(319)=WTGAGA
8671         MINT(143)=LOOP
8672  
8673 C...Update pTmin and cross section information.
8674         IF(MSTP(82).LE.1) THEN
8675           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
8676         ELSE
8677           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
8678         ENDIF
8679         VINT(149)=4D0*PTMN**2/VINT(2)
8680         VINT(154)=PTMN
8681         CALL PYXTOT
8682  
8683 C...Reconstruct kinematics of photons inside leptons.
8684       ELSEIF(IGAGA.EQ.4) THEN
8685  
8686 C...Make place for incoming particles and scattered leptons.
8687         MOVE=3
8688         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
8689         MINT(4)=MINT(4)+MOVE
8690         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
8691           IF(K(I,1).EQ.21) THEN
8692             DO 150 J=1,5
8693               K(I+MOVE,J)=K(I,J)
8694               P(I+MOVE,J)=P(I,J)
8695               V(I+MOVE,J)=V(I,J)
8696   150       CONTINUE
8697             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
8698      &      K(I+MOVE,3)=K(I,3)+MOVE
8699             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
8700      &      K(I+MOVE,4)=K(I,4)+MOVE
8701             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
8702      &      K(I+MOVE,5)=K(I,5)+MOVE
8703           ENDIF
8704   160   CONTINUE
8705         DO 170 I=MINT(84)+1,N
8706           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
8707      &    K(I,3)=K(I,3)+MOVE
8708   170   CONTINUE
8709  
8710 C...Fill in incoming particles.
8711         DO 190 I=MINT(83)+1,MINT(83)+MOVE
8712           DO 180 J=1,5
8713             K(I,J)=0
8714             P(I,J)=0D0
8715             V(I,J)=0D0
8716   180     CONTINUE
8717   190   CONTINUE
8718         DO 200 I=1,2
8719           K(MINT(83)+I,1)=21
8720           IF(MINT(140+I).NE.0) THEN
8721             K(MINT(83)+I,2)=MINT(140+I)
8722             P(MINT(83)+I,5)=VINT(302+I)
8723           ELSE
8724             K(MINT(83)+I,2)=MINT(10+I)
8725             P(MINT(83)+I,5)=VINT(2+I)
8726           ENDIF
8727           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
8728      &    VINT(302))*(-1D0)**(I+1)
8729           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
8730   200   CONTINUE
8731  
8732 C...New mother-daughter relations in documentation section.
8733         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8734           K(MINT(83)+1,4)=MINT(83)+3
8735           K(MINT(83)+1,5)=MINT(83)+5
8736           K(MINT(83)+2,4)=MINT(83)+4
8737           K(MINT(83)+2,5)=MINT(83)+6
8738           K(MINT(83)+3,3)=MINT(83)+1
8739           K(MINT(83)+5,3)=MINT(83)+1
8740           K(MINT(83)+4,3)=MINT(83)+2
8741           K(MINT(83)+6,3)=MINT(83)+2
8742         ELSEIF(MINT(141).NE.0) THEN
8743           K(MINT(83)+1,4)=MINT(83)+3
8744           K(MINT(83)+1,5)=MINT(83)+4
8745           K(MINT(83)+2,4)=MINT(83)+5
8746           K(MINT(83)+3,3)=MINT(83)+1
8747           K(MINT(83)+4,3)=MINT(83)+1
8748           K(MINT(83)+5,3)=MINT(83)+2
8749         ELSEIF(MINT(142).NE.0) THEN
8750           K(MINT(83)+1,4)=MINT(83)+4
8751           K(MINT(83)+2,4)=MINT(83)+3
8752           K(MINT(83)+2,5)=MINT(83)+5
8753           K(MINT(83)+3,3)=MINT(83)+2
8754           K(MINT(83)+4,3)=MINT(83)+1
8755           K(MINT(83)+5,3)=MINT(83)+2
8756         ENDIF
8757  
8758 C...Fill scattered lepton(s).
8759         DO 210 I=1,2
8760           IF(MINT(140+I).NE.0) THEN
8761             LSC=MINT(83)+MIN(I+2,MOVE)
8762             K(LSC,1)=21
8763             K(LSC,2)=MINT(140+I)
8764             P(LSC,1)=PT(I)*COS(PHI(I))
8765             P(LSC,2)=PT(I)*SIN(PHI(I))
8766             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
8767             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
8768      &      (-1D0)**(I-1)
8769             P(LSC,5)=VINT(302+I)
8770           ENDIF
8771   210   CONTINUE
8772  
8773 C...Find incoming four-vectors to subprocess.
8774         K(N+1,1)=21
8775         IF(MINT(141).NE.0) THEN
8776           DO 220 J=1,4
8777             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
8778   220     CONTINUE
8779         ELSE
8780           DO 230 J=1,4
8781             P(N+1,J)=P(MINT(83)+1,J)
8782   230     CONTINUE
8783         ENDIF
8784         K(N+2,1)=21
8785         IF(MINT(142).NE.0) THEN
8786           DO 240 J=1,4
8787             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
8788   240     CONTINUE
8789         ELSE
8790           DO 250 J=1,4
8791             P(N+2,J)=P(MINT(83)+2,J)
8792   250     CONTINUE
8793         ENDIF
8794  
8795 C...Define boost and rotation between hadronic subsystem and
8796 C...collision rest frame; boost hadronic subsystem to this frame.
8797         DO 260 J=1,3
8798           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
8799   260   CONTINUE
8800         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
8801         BPHI=PYANGL(P(N+1,1),P(N+1,2))
8802         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
8803         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
8804         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
8805      &  BETA(3))
8806  
8807 C...Add on scattered leptons to final state.
8808         DO 280 I=1,2
8809           IF(MINT(140+I).NE.0) THEN
8810             LSC=MINT(83)+MIN(I+2,MOVE)
8811             N=N+1
8812             DO 270 J=1,5
8813               K(N,J)=K(LSC,J)
8814               P(N,J)=P(LSC,J)
8815               V(N,J)=V(LSC,J)
8816   270       CONTINUE
8817             K(N,1)=1
8818             K(N,3)=LSC
8819           ENDIF
8820   280   CONTINUE
8821       ENDIF
8822  
8823       RETURN
8824       END
8825  
8826 C*********************************************************************
8827  
8828 C...PYRAND
8829 C...Generates quantities characterizing the high-pT scattering at the
8830 C...parton level according to the matrix elements. Chooses incoming,
8831 C...reacting partons, their momentum fractions and one of the possible
8832 C...subprocesses.
8833  
8834       SUBROUTINE PYRAND
8835  
8836 C...Double precision and integer declarations.
8837       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8838       IMPLICIT INTEGER(I-N)
8839       INTEGER PYK,PYCHGE,PYCOMP
8840 C...Parameter statement to help give large particle numbers.
8841       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
8842      &KEXCIT=4000000,KDIMEN=5000000)
8843  
8844 C...User process initialization and event commonblocks.
8845       INTEGER MAXPUP
8846       PARAMETER (MAXPUP=100)
8847       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
8848       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
8849       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
8850      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
8851      &LPRUP(MAXPUP)
8852       INTEGER MAXNUP
8853       PARAMETER (MAXNUP=500)
8854       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
8855       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
8856       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
8857      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
8858      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
8859       SAVE /HEPRUP/,/HEPEUP/
8860  
8861 C...Commonblocks.
8862       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8863       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8864       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
8865       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8866       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8867       COMMON/PYINT1/MINT(400),VINT(400)
8868       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8869       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
8870       COMMON/PYINT4/MWID(500),WIDS(500,5)
8871       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8872       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8873       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
8874       COMMON/PYTCCO/COEFX(194:380,2)
8875       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
8876       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
8877      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/,/PYTCCO/,
8878      &/TCPARA/
8879 C...Local arrays.
8880       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
8881  
8882 C...Parameters and data used in elastic/diffractive treatment.
8883       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
8884      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
8885  
8886 C...Initial values, specifically for (first) semihard interaction.
8887       MINT(10)=0
8888       MINT(17)=0
8889       MINT(18)=0
8890       VINT(143)=1D0
8891       VINT(144)=1D0
8892       VINT(157)=0D0
8893       VINT(158)=0D0
8894       MFAIL=0
8895       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
8896       ISUB=0
8897       ISTSB=0
8898       LOOP=0
8899   100 LOOP=LOOP+1
8900       MINT(51)=0
8901       MINT(143)=1
8902       VINT(97)=1D0
8903  
8904 C...Start by assuming incoming photon is entering subprocess.
8905       IF(MINT(11).EQ.22) THEN
8906          MINT(15)=22
8907          VINT(307)=VINT(3)**2
8908       ENDIF
8909       IF(MINT(12).EQ.22) THEN
8910          MINT(16)=22
8911          VINT(308)=VINT(4)**2
8912       ENDIF
8913       MINT(103)=MINT(11)
8914       MINT(104)=MINT(12)
8915  
8916 C...Choice of process type - first event of pileup.
8917       INMULT=0
8918       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
8919       ELSEIF(MINT(82).EQ.1) THEN
8920  
8921 C...For gamma-p or gamma-gamma first pick between alternatives.
8922         IGA=0
8923         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
8924         MINT(122)=IGA
8925  
8926 C...For real gamma + gamma with different nature, flip at random.
8927         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
8928      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
8929           MINTSV=MINT(41)
8930           MINT(41)=MINT(42)
8931           MINT(42)=MINTSV
8932           MINTSV=MINT(45)
8933           MINT(45)=MINT(46)
8934           MINT(46)=MINTSV
8935           MINTSV=MINT(107)
8936           MINT(107)=MINT(108)
8937           MINT(108)=MINTSV
8938           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
8939         ENDIF
8940  
8941 C...Pick process type, possibly by user process machinery.
8942 C...(If the latter, also event will be picked here.)
8943         IF(MINT(111).GE.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
8944           CALL UPEVNT
8945           CALL PYUPRE
8946         ELSEIF(MINT(111).GE.11.AND.IABS(IDWTUP).GE.3) THEN
8947           CALL UPEVNT
8948           CALL PYUPRE
8949           ISUB=0
8950   110     ISUB=ISUB+1
8951           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
8952      &    ISUB.LT.500) GOTO 110
8953         ELSE
8954           RSUB=XSEC(0,1)*PYR(0)
8955           DO 120 I=1,500
8956             IF(MSUB(I).NE.1.OR.I.EQ.96) GOTO 120
8957             ISUB=I
8958             RSUB=RSUB-XSEC(I,1)
8959             IF(RSUB.LE.0D0) GOTO 130
8960   120     CONTINUE
8961   130     IF(ISUB.EQ.95) ISUB=96
8962           IF(ISUB.EQ.96) INMULT=1
8963           IF(ISET(ISUB).EQ.11) THEN
8964             IDPRUP=KFPR(ISUB,2)
8965             CALL UPEVNT
8966             CALL PYUPRE
8967           ENDIF
8968         ENDIF
8969  
8970 C...Choice of inclusive process type - pileup events.
8971       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
8972         RSUB=VINT(131)*PYR(0)
8973         ISUB=96
8974         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
8975         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
8976         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
8977         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
8978      &  ISUB=91
8979         IF(ISUB.EQ.96) INMULT=1
8980       ENDIF
8981  
8982 C...Choice of photon energy and flux factor inside lepton.
8983       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
8984         CALL PYGAGA(3,WTGAGA)
8985         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
8986           CKIN(3)=MAX(VINT(285),VINT(154))
8987           CKIN(1)=2D0*CKIN(3)
8988         ENDIF
8989 C...When necessary set direct/resolved photon by hand.
8990       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
8991         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
8992         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
8993       ENDIF
8994  
8995 C...Restrict direct*resolved processes to pTmin >= Q,
8996 C...to avoid doublecounting  with DIS.
8997       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
8998         IF(MINT(15).EQ.22) THEN
8999           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
9000         ELSE
9001           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
9002         ENDIF
9003         CKIN(1)=2D0*CKIN(3)
9004       ENDIF
9005  
9006 C...Set up for multiple interactions (may include impact parameter).
9007       IF(INMULT.EQ.1) THEN
9008         IF(MINT(35).LE.1) CALL PYMULT(2)
9009         IF(MINT(35).GE.2) CALL PYMIGN(2)
9010       ENDIF
9011  
9012 C...Loopback point for minimum bias in photon physics.
9013       LOOP2=0
9014   140 LOOP2=LOOP2+1
9015       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
9016       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
9017       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
9018      &NGEN(97,1)=NGEN(97,1)+MINT(143)
9019       MINT(1)=ISUB
9020       ISTSB=ISET(ISUB)
9021  
9022 C...Random choice of flavour for some SUSY processes.
9023       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
9024 C...~e_L ~nu_e or ~mu_L ~nu_mu.
9025         IF(ISUB.EQ.210) THEN
9026           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
9027           KFPR(ISUB,2)=KFPR(ISUB,1)+1
9028 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
9029         ELSEIF(ISUB.EQ.213) THEN
9030           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
9031           KFPR(ISUB,2)=KFPR(ISUB,1)
9032 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
9033         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259.AND.ISUB.NE.255.AND.
9034      &  ISUB.NE.257) THEN
9035           IF(ISUB.GE.258) THEN
9036             RKF=4D0
9037           ELSE
9038             RKF=5D0
9039           ENDIF
9040           IF(MOD(ISUB,2).EQ.0) THEN
9041             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
9042           ELSE
9043             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
9044           ENDIF
9045 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9046         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
9047           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
9048             KSU1=KSUSY1
9049             KSU2=KSUSY1
9050           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
9051             KSU1=KSUSY2
9052             KSU2=KSUSY2
9053           ELSEIF(PYR(0).LT.0.5D0) THEN
9054             KSU1=KSUSY1
9055             KSU2=KSUSY2
9056           ELSE
9057             KSU1=KSUSY2
9058             KSU2=KSUSY1
9059           ENDIF
9060           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
9061           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
9062 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
9063         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
9064           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
9065           KFPR(ISUB,2)=KFPR(ISUB,1)
9066         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
9067           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
9068           KFPR(ISUB,2)=KFPR(ISUB,1)
9069 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9070         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
9071           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
9072             KSU1=KSUSY1
9073             KSU2=KSUSY1
9074           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
9075             KSU1=KSUSY2
9076             KSU2=KSUSY2
9077           ELSEIF(PYR(0).LT.0.5D0) THEN
9078             KSU1=KSUSY1
9079             KSU2=KSUSY2
9080           ELSE
9081             KSU1=KSUSY2
9082             KSU2=KSUSY1
9083           ENDIF
9084           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
9085             RKF=5D0
9086           ELSE
9087             RKF=4D0
9088           ENDIF
9089           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
9090         ENDIF
9091       ENDIF
9092  
9093 C...Find resonances (explicit or implicit in cross-section).
9094       MINT(72)=0
9095       KFR1=0
9096       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
9097         KFR1=KFPR(ISUB,1)
9098       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
9099      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
9100         KFR1=23
9101       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
9102      &  ISUB.EQ.177) THEN
9103         KFR1=24
9104       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
9105         KFR1=25
9106         IF(MSTP(46).EQ.5) THEN
9107           KFR1=89
9108           PMAS(89,1)=PARP(45)
9109           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
9110         ENDIF
9111       ENDIF
9112       CKMX=CKIN(2)
9113       IF(CKMX.LE.0D0) CKMX=VINT(1)
9114       KCR1=PYCOMP(KFR1)
9115       IF(KFR1.NE.0) THEN
9116         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
9117      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
9118       ENDIF
9119       IF(KFR1.NE.0) THEN
9120         TAUR1=PMAS(KCR1,1)**2/VINT(2)
9121         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
9122         MINT(72)=1
9123         MINT(73)=KFR1
9124         VINT(73)=TAUR1
9125         VINT(74)=GAMR1
9126       ENDIF
9127       KFR2=0
9128       KFR3=0
9129       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
9130      $(ISUB.GE.361.AND.ISUB.LE.380))
9131      $THEN
9132         KFR2=23
9133         IF(ISUB.EQ.141) THEN
9134           KCR2=PYCOMP(KFR2)
9135           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
9136      &     CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
9137             KFR2=0
9138           ELSE
9139             TAUR2=PMAS(KCR2,1)**2/VINT(2)            
9140             GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
9141             MINT(72)=2
9142             MINT(74)=KFR2
9143             VINT(75)=TAUR2
9144             VINT(76)=GAMR2
9145           ENDIF
9146 C...3 resonances at work:   rho, omega, a
9147         ELSEIF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368)
9148      &     .OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
9149           MINT(72)=IRES
9150           IF(IRES.GE.1) THEN
9151             VINT(73)=XMAS(1)**2/VINT(2)
9152             VINT(74)=XMAS(1)*XWID(1)/VINT(2)
9153             TAUR1=VINT(73)
9154             GAMR1=VINT(74)
9155             KFR1=1
9156           ENDIF
9157           IF(IRES.GE.2) THEN
9158             VINT(75)=XMAS(2)**2/VINT(2)
9159             VINT(76)=XMAS(2)*XWID(2)/VINT(2)
9160             TAUR2=VINT(75)
9161             GAMR2=VINT(76)
9162             KFR2=2
9163           ENDIF
9164           IF(IRES.EQ.3) THEN
9165             VINT(77)=XMAS(3)**2/VINT(2)
9166             VINT(78)=XMAS(3)*XWID(3)/VINT(2)
9167             TAUR3=VINT(77)
9168             GAMR3=VINT(78)
9169             KFR3=3
9170           ENDIF
9171 C...Charged current:  rho+- and a+-
9172         ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
9173           MINT(72)=IRES
9174           IF(JRES.GE.1) THEN
9175             VINT(73)=YMAS(1)**2/VINT(2)
9176             VINT(74)=YMAS(1)*YWID(1)/VINT(2)
9177             KFR1=1
9178             TAUR1=VINT(73)
9179             GAMR1=VINT(74)
9180           ENDIF
9181           IF(JRES.GE.2) THEN
9182             VINT(75)=YMAS(2)**2/VINT(2)
9183             VINT(76)=YMAS(2)*YWID(2)/VINT(2)
9184             KFR2=2
9185             TAUR2=VINT(73)
9186             GAMR2=VINT(74)
9187           ENDIF
9188           KFR3=0
9189         ENDIF
9190         IF(ISUB.NE.141) THEN
9191           IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
9192
9193           ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
9194             MINT(72)=2
9195           ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
9196             MINT(72)=2
9197             MINT(74)=KFR3
9198             VINT(75)=TAUR3
9199             VINT(76)=GAMR3
9200           ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
9201             MINT(72)=2
9202             MINT(73)=KFR2
9203             VINT(73)=TAUR2
9204             VINT(74)=GAMR2
9205             MINT(74)=KFR3
9206             VINT(75)=TAUR3
9207             VINT(76)=GAMR3
9208           ELSEIF(KFR1.NE.0) THEN
9209             MINT(72)=1
9210           ELSEIF(KFR2.NE.0) THEN
9211             MINT(72)=1
9212             MINT(73)=KFR2
9213             VINT(73)=TAUR2
9214             VINT(74)=GAMR2
9215           ELSEIF(KFR3.NE.0) THEN
9216             MINT(72)=1
9217             MINT(73)=KFR3
9218             VINT(73)=TAUR3
9219             VINT(74)=GAMR3
9220           ELSE
9221             MINT(72)=0
9222           ENDIF
9223         ELSE
9224           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
9225
9226           ELSEIF(KFR2.NE.0) THEN
9227             KFR1=KFR2
9228             TAUR1=TAUR2
9229             GAMR1=GAMR2
9230             MINT(72)=1
9231             MINT(73)=KFR1
9232             VINT(73)=TAUR1
9233             VINT(74)=GAMR1
9234             KFR2=0
9235           ELSE
9236             MINT(72)=0
9237           ENDIF
9238         ENDIF
9239       ENDIF
9240  
9241 C...Find product masses and minimum pT of process,
9242 C...optionally with broadening according to a truncated Breit-Wigner.
9243       VINT(63)=0D0
9244       VINT(64)=0D0
9245       MINT(71)=0
9246       VINT(71)=CKIN(3)
9247       IF(MINT(82).GE.2) VINT(71)=0D0
9248       VINT(80)=1D0
9249       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
9250         NBW=0
9251         DO 160 I=1,2
9252           PMMN(I)=0D0
9253           IF(KFPR(ISUB,I).EQ.0) THEN
9254           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
9255      &      PARP(41)) THEN
9256             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
9257           ELSE
9258             NBW=NBW+1
9259 C...This prevents SUSY/t particles from becoming too light.
9260             KFLW=KFPR(ISUB,I)
9261             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
9262               KCW=PYCOMP(KFLW)
9263               PMMN(I)=PMAS(KCW,1)
9264               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
9265                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
9266                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
9267      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
9268                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
9269      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
9270                   PMMN(I)=MIN(PMMN(I),PMSUM)
9271                 ENDIF
9272   150         CONTINUE
9273             ELSEIF(KFLW.EQ.6) THEN
9274               PMMN(I)=PMAS(24,1)+PMAS(5,1)
9275             ENDIF
9276           ENDIF
9277   160   CONTINUE
9278         IF(NBW.GE.1) THEN
9279           CKIN41=CKIN(41)
9280           CKIN43=CKIN(43)
9281           CKIN(41)=MAX(PMMN(1),CKIN(41))
9282           CKIN(43)=MAX(PMMN(2),CKIN(43))
9283           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
9284           CKIN(41)=CKIN41
9285           CKIN(43)=CKIN43
9286           IF(MINT(51).EQ.1) THEN
9287             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9288             IF(MFAIL.EQ.1) THEN
9289               MSTI(61)=1
9290               RETURN
9291             ENDIF
9292             GOTO 100
9293           ENDIF
9294           VINT(63)=PQM3**2
9295           VINT(64)=PQM4**2
9296         ENDIF
9297         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
9298         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
9299       ENDIF
9300  
9301 C...Prepare for additional variable choices in 2 -> 3.
9302       IF(ISTSB.EQ.5) THEN
9303         VINT(201)=0D0
9304         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
9305         VINT(206)=VINT(201)
9306         IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
9307         VINT(204)=PMAS(23,1)
9308         IF(ISUB.EQ.124.OR.ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351)
9309      &   VINT(204)=PMAS(24,1) 
9310         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
9311         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
9312      &    ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
9313      &         VINT(204)=VINT(201)
9314         VINT(209)=VINT(204)
9315           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
9316       ENDIF
9317  
9318 C...Select incoming VDM particle (rho/omega/phi/J/psi).
9319       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
9320      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
9321         VRN=PYR(0)*SIGT(0,0,5)
9322         IF(MINT(101).LE.1) THEN
9323           I1MN=0
9324           I1MX=0
9325         ELSE
9326           I1MN=1
9327           I1MX=MINT(101)
9328         ENDIF
9329         IF(MINT(102).LE.1) THEN
9330           I2MN=0
9331           I2MX=0
9332         ELSE
9333           I2MN=1
9334           I2MX=MINT(102)
9335         ENDIF
9336         DO 180 I1=I1MN,I1MX
9337           KFV1=110*I1+3
9338           DO 170 I2=I2MN,I2MX
9339             KFV2=110*I2+3
9340             VRN=VRN-SIGT(I1,I2,5)
9341             IF(VRN.LE.0D0) GOTO 190
9342   170     CONTINUE
9343   180   CONTINUE
9344   190   IF(MINT(101).GE.2) MINT(103)=KFV1
9345         IF(MINT(102).GE.2) MINT(104)=KFV2
9346       ENDIF
9347  
9348       IF(ISTSB.EQ.0) THEN
9349 C...Elastic scattering or single or double diffractive scattering.
9350  
9351 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
9352         MINT(103)=MINT(11)
9353         MINT(104)=MINT(12)
9354         PMM(1)=VINT(3)
9355         PMM(2)=VINT(4)
9356         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
9357           JJ=ISUB-90
9358           VRN=PYR(0)*SIGT(0,0,JJ)
9359           IF(MINT(101).LE.1) THEN
9360             I1MN=0
9361             I1MX=0
9362           ELSE
9363             I1MN=1
9364             I1MX=MINT(101)
9365           ENDIF
9366           IF(MINT(102).LE.1) THEN
9367             I2MN=0
9368             I2MX=0
9369           ELSE
9370             I2MN=1
9371             I2MX=MINT(102)
9372           ENDIF
9373           DO 210 I1=I1MN,I1MX
9374             KFV1=110*I1+3
9375             DO 200 I2=I2MN,I2MX
9376               KFV2=110*I2+3
9377               VRN=VRN-SIGT(I1,I2,JJ)
9378               IF(VRN.LE.0D0) GOTO 220
9379   200       CONTINUE
9380   210     CONTINUE
9381   220     IF(MINT(101).GE.2) THEN
9382             MINT(103)=KFV1
9383             PMM(1)=PYMASS(KFV1)
9384           ENDIF
9385           IF(MINT(102).GE.2) THEN
9386             MINT(104)=KFV2
9387             PMM(2)=PYMASS(KFV2)
9388           ENDIF
9389         ENDIF
9390         VINT(67)=PMM(1)
9391         VINT(68)=PMM(2)
9392  
9393 C...Select mass for GVMD states (rejecting previous assignment).
9394         Q0S=4D0*PARP(15)**2
9395         Q1S=4D0*VINT(154)**2
9396         LOOP3=0
9397   230   LOOP3=LOOP3+1
9398         DO 240 JT=1,2
9399           IF(MINT(106+JT).EQ.3) THEN
9400             PS=VINT(2+JT)**2
9401             PMM(JT)=(Q0S+PS)*(Q1S+PS)/
9402      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
9403             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
9404      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
9405           ENDIF
9406   240   CONTINUE
9407         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
9408           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
9409      &    GOTO 230
9410           GOTO 100
9411         ENDIF
9412  
9413 C...Side/sides of diffractive system.
9414         MINT(17)=0
9415         MINT(18)=0
9416         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
9417         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
9418  
9419 C...Find masses of particles and minimal masses of diffractive states.
9420         DO 250 JT=1,2
9421           PDIF(JT)=PMM(JT)
9422           VINT(68+JT)=PDIF(JT)
9423           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
9424   250   CONTINUE
9425         SH=VINT(2)
9426         SQM1=PMM(1)**2
9427         SQM2=PMM(2)**2
9428         SQM3=PDIF(1)**2
9429         SQM4=PDIF(2)**2
9430         SMRES1=(PMM(1)+PMRC)**2
9431         SMRES2=(PMM(2)+PMRC)**2
9432  
9433 C...Find elastic slope and lower limit diffractive slope.
9434         IHA=MAX(2,IABS(MINT(103))/110)
9435         IF(IHA.GE.5) IHA=1
9436         IHB=MAX(2,IABS(MINT(104))/110)
9437         IF(IHB.GE.5) IHB=1
9438         IF(ISUB.EQ.91) THEN
9439           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
9440         ELSEIF(ISUB.EQ.92) THEN
9441           BMN=MAX(2D0,2D0*BHAD(IHB))
9442         ELSEIF(ISUB.EQ.93) THEN
9443           BMN=MAX(2D0,2D0*BHAD(IHA))
9444         ELSEIF(ISUB.EQ.94) THEN
9445           BMN=2D0*ALP*4D0
9446         ENDIF
9447  
9448 C...Determine maximum possible t range and coefficient of generation.
9449         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
9450         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9451         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9452         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9453         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9454      &  (SQM1*SQM4-SQM2*SQM3)/SH
9455         THL=-0.5D0*(THA+THB)
9456         THU=THC/THL
9457         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
9458  
9459 C...Select diffractive mass/masses according to dm^2/m^2.
9460         LOOP3=0
9461   260   LOOP3=LOOP3+1
9462         DO 270 JT=1,2
9463           IF(MINT(16+JT).EQ.0) THEN
9464             PDIF(2+JT)=PDIF(JT)
9465           ELSE
9466             PMMIN=PDIF(JT)
9467             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
9468             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
9469           ENDIF
9470   270   CONTINUE
9471         SQM3=PDIF(3)**2
9472         SQM4=PDIF(4)**2
9473  
9474 C..Additional mass factors, including resonance enhancement.
9475         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
9476           IF(LOOP3.LT.100) GOTO 260
9477           GOTO 100
9478         ENDIF
9479         IF(ISUB.EQ.92) THEN
9480           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
9481           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9482         ELSEIF(ISUB.EQ.93) THEN
9483           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
9484           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9485         ELSEIF(ISUB.EQ.94) THEN
9486           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
9487      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
9488      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
9489           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
9490         ENDIF
9491  
9492 C...Select t according to exp(Bmn*t) and correct to right slope.
9493         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
9494         IF(ISUB.GE.92) THEN
9495           IF(ISUB.EQ.92) THEN
9496             BADD=2D0*ALP*LOG(SH/SQM3)
9497             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
9498           ELSEIF(ISUB.EQ.93) THEN
9499             BADD=2D0*ALP*LOG(SH/SQM4)
9500             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
9501           ELSEIF(ISUB.EQ.94) THEN
9502             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
9503           ENDIF
9504           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
9505         ENDIF
9506  
9507 C...Check whether m^2 and t choices are consistent.
9508         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9509         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9510         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9511         IF(THB.LE.1D-8) GOTO 260
9512         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9513      &  (SQM1*SQM4-SQM2*SQM3)/SH
9514         THLM=-0.5D0*(THA+THB)
9515         THUM=THC/THLM
9516         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
9517  
9518 C...Information to output.
9519         VINT(21)=1D0
9520         VINT(22)=0D0
9521         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
9522         VINT(45)=TH
9523         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
9524         VINT(63)=PDIF(3)**2
9525         VINT(64)=PDIF(4)**2
9526         VINT(283)=PMM(1)**2/4D0
9527         VINT(284)=PMM(2)**2/4D0
9528  
9529 C...Note: in the following, by In is meant the integral over the
9530 C...quantity multiplying coefficient cn.
9531 C...Choose tau according to h1(tau)/tau, where
9532 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
9533 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
9534 C...I1/I5*c5*1/(tau+tau_R') +
9535 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
9536 C...I1/I7*c7*tau/(1.-tau), and
9537 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
9538       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
9539         CALL PYKLIM(1)
9540         IF(MINT(51).NE.0) THEN
9541           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9542           IF(MFAIL.EQ.1) THEN
9543             MSTI(61)=1
9544             RETURN
9545           ENDIF
9546           GOTO 100
9547         ENDIF
9548         RTAU=PYR(0)
9549         MTAU=1
9550         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
9551         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
9552         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
9553         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
9554      &  MTAU=5
9555         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9556      &  COEF(ISUB,5)) MTAU=6
9557         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9558      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
9559 C...Additional check to handle techni-processes with extra resonance
9560 C....Only modify tau treatment
9561         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361.AND.ISUB.LE.380))
9562      &   THEN
9563           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9564      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)) MTAU=8
9565           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9566      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)
9567      &     +COEFX(ISUB,1)) MTAU=9
9568         ENDIF
9569         CALL PYKMAP(1,MTAU,PYR(0))
9570  
9571 C...2 -> 3, 4 processes:
9572 C...Choose tau' according to h4(tau,tau')/tau', where
9573 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
9574 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
9575         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
9576           CALL PYKLIM(4)
9577           IF(MINT(51).NE.0) THEN
9578             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9579             IF(MFAIL.EQ.1) THEN
9580               MSTI(61)=1
9581               RETURN
9582             ENDIF
9583             GOTO 100
9584           ENDIF
9585           RTAUP=PYR(0)
9586           MTAUP=1
9587           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
9588           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
9589           CALL PYKMAP(4,MTAUP,PYR(0))
9590         ENDIF
9591  
9592 C...Choose y* according to h2(y*), where
9593 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
9594 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
9595 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
9596 C...and c1 + c2 + c3 + c4 + c5 = 1.
9597         CALL PYKLIM(2)
9598         IF(MINT(51).NE.0) THEN
9599           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9600           IF(MFAIL.EQ.1) THEN
9601             MSTI(61)=1
9602             RETURN
9603           ENDIF
9604           GOTO 100
9605         ENDIF
9606         RYST=PYR(0)
9607         MYST=1
9608         IF(RYST.GT.COEF(ISUB,8)) MYST=2
9609         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
9610         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
9611         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
9612      &  COEF(ISUB,11)) MYST=5
9613         CALL PYKMAP(2,MYST,PYR(0))
9614  
9615 C...2 -> 2 processes:
9616 C...Choose cos(theta-hat) (cth) according to h3(cth), where
9617 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
9618 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
9619 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
9620 C...and c0 + c1 + c2 + c3 + c4 = 1.
9621         CALL PYKLIM(3)
9622         IF(MINT(51).NE.0) THEN
9623           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9624           IF(MFAIL.EQ.1) THEN
9625             MSTI(61)=1
9626             RETURN
9627           ENDIF
9628           GOTO 100
9629         ENDIF
9630         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
9631           RCTH=PYR(0)
9632           MCTH=1
9633           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
9634           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
9635           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
9636           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
9637      &    COEF(ISUB,16)) MCTH=5
9638           CALL PYKMAP(3,MCTH,PYR(0))
9639         ENDIF
9640  
9641 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
9642         IF(ISTSB.EQ.5) THEN
9643           CALL PYKMAP(5,0,0D0)
9644           IF(MINT(51).NE.0) THEN
9645             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9646             IF(MFAIL.EQ.1) THEN
9647               MSTI(61)=1
9648               RETURN
9649             ENDIF
9650             GOTO 100
9651           ENDIF
9652         ENDIF
9653  
9654 C...DIS as f + gamma* -> f process: set dummy values.
9655       ELSEIF(ISTSB.EQ.8) THEN
9656         VINT(21)=0.9D0
9657         VINT(22)=0D0
9658         VINT(23)=0D0
9659         VINT(47)=0D0
9660         VINT(48)=0D0
9661  
9662 C...Low-pT or multiple interactions (first semihard interaction).
9663       ELSEIF(ISTSB.EQ.9) THEN
9664         IF(MINT(35).LE.1) CALL PYMULT(3)
9665         IF(MINT(35).GE.2) CALL PYMIGN(3)
9666         ISUB=MINT(1)
9667  
9668 C...Study user-defined process: kinematics plus weight.
9669       ELSEIF(ISTSB.EQ.11) THEN
9670         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
9671      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
9672         MSTI(51)=0
9673         IF(NUP.LE.0) THEN
9674           MINT(51)=2
9675           MSTI(51)=1
9676           IF(MINT(82).EQ.1) THEN
9677             NGEN(0,1)=NGEN(0,1)-1
9678             NGEN(ISUB,1)=NGEN(ISUB,1)-1
9679           ENDIF
9680           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9681           RETURN
9682         ENDIF
9683  
9684 C...Extract cross section event weight.
9685         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
9686           SIGS=1D-9*XWGTUP
9687         ELSE
9688           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
9689         ENDIF
9690         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
9691           VINT(97)=SIGN(1D0,XWGTUP)
9692         ELSE
9693           VINT(97)=1D-9*XWGTUP
9694         ENDIF
9695  
9696 C...Construct 'trivial' kinematical variables needed.
9697         KFL1=IDUP(1)
9698         KFL2=IDUP(2)
9699         VINT(41)=PUP(4,1)/EBMUP(1)
9700         VINT(42)=PUP(4,2)/EBMUP(2)
9701         IF (VINT(41).GT.1.000001.OR.VINT(42).GT.1.000001) THEN
9702           CALL PYERRM(9,'(PYRAND:) x > 1 in external event '//
9703      &        '(listing follows):') 
9704           CALL PYLIST(7)
9705         ENDIF
9706         VINT(21)=VINT(41)*VINT(42)
9707         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
9708         VINT(44)=VINT(21)*VINT(2)
9709         VINT(43)=SQRT(MAX(0D0,VINT(44)))
9710         VINT(55)=SCALUP
9711         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
9712         VINT(56)=VINT(55)**2
9713         VINT(57)=AQEDUP
9714         VINT(58)=AQCDUP
9715  
9716 C...Construct other kinematical variables needed (approximately).
9717         VINT(23)=0D0
9718         VINT(26)=VINT(21)
9719         VINT(45)=-0.5D0*VINT(44)
9720         VINT(46)=-0.5D0*VINT(44)
9721         VINT(49)=VINT(43)
9722         VINT(50)=VINT(44)
9723         VINT(51)=VINT(55)
9724         VINT(52)=VINT(56)
9725         VINT(53)=VINT(55)
9726         VINT(54)=VINT(56)
9727         VINT(25)=0D0
9728         VINT(48)=0D0
9729         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
9730      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
9731         DO 280 IUP=3,NUP
9732           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
9733      &    '(PYRAND:) unacceptable ISTUP code for particles')
9734           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
9735      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
9736           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
9737      &    PUP(2,IUP)**2)
9738   280   CONTINUE
9739         VINT(47)=SQRT(VINT(48))
9740       ENDIF
9741  
9742 C...Choose azimuthal angle.
9743       VINT(24)=0D0
9744       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
9745  
9746 C...Check against user cuts on kinematics at parton level.
9747       MINT(51)=0
9748       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
9749       IF(MINT(51).NE.0) THEN
9750         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9751         IF(MFAIL.EQ.1) THEN
9752           MSTI(61)=1
9753           RETURN
9754         ENDIF
9755         GOTO 100
9756       ENDIF
9757       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
9758         MCUT=0
9759         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
9760      &  CALL PYKCUT(MCUT)
9761         IF(MCUT.NE.0) THEN
9762           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9763           IF(MFAIL.EQ.1) THEN
9764             MSTI(61)=1
9765             RETURN
9766           ENDIF
9767           GOTO 100
9768         ENDIF
9769       ENDIF
9770  
9771 C...Calculate differential cross-section for different subprocesses.
9772       IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
9773       SIGSOR=SIGS
9774       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
9775  
9776 C...Multiply cross section by lepton -> photon flux factor.
9777       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
9778         SIGS=WTGAGA*SIGS
9779         DO 290 ICHN=1,NCHN
9780           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
9781   290   CONTINUE
9782         SIGLPT=WTGAGA*SIGLPT
9783       ENDIF
9784  
9785 C...Multiply cross-section by user-defined weights.
9786       IF(MSTP(173).EQ.1) THEN
9787         SIGS=PARP(173)*SIGS
9788         DO 300 ICHN=1,NCHN
9789           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
9790   300   CONTINUE
9791         SIGLPT=PARP(173)*SIGLPT
9792       ENDIF
9793       WTXS=1D0
9794       SIGSWT=SIGS
9795       VINT(99)=1D0
9796       VINT(100)=1D0
9797       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
9798         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
9799      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
9800         SIGSWT=WTXS*SIGS
9801         VINT(99)=WTXS
9802         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
9803       ENDIF
9804  
9805 C...Calculations for Monte Carlo estimate of all cross-sections.
9806       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
9807         IF(MSTP(142).LE.1) THEN
9808           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
9809         ELSE
9810           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
9811         ENDIF
9812       ELSEIF(MINT(82).EQ.1) THEN
9813         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
9814       ENDIF
9815       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
9816      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
9817  
9818 C...Multiple interactions: store results of cross-section calculation.
9819       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
9820         VINT(153)=SIGSOR
9821         IF(MINT(35).LE.1) CALL PYMULT(4)
9822         IF(MINT(35).GE.2) CALL PYMIGN(4)
9823       ENDIF
9824  
9825 C...Ratio of actual to maximum cross section.
9826       IF(ISTSB.NE.11) THEN
9827         VIOL=SIGSWT/XSEC(ISUB,1)
9828         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
9829       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
9830         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
9831       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
9832         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
9833       ELSE
9834         VIOL=1D0
9835       ENDIF
9836  
9837 C...Check that weight not negative.
9838       IF(MSTP(123).LE.0) THEN
9839         IF(VIOL.LT.-1D-3) THEN
9840           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
9841           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
9842      &    VINT(22),VINT(23),VINT(26)
9843           CALL PYSTOP(2)
9844         ENDIF
9845       ELSE
9846         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
9847           VINT(109)=VIOL
9848           IF(MSTP(123).LE.2) WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
9849           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
9850      &    VINT(22),VINT(23),VINT(26)
9851         ENDIF
9852       ENDIF
9853  
9854 C...Weighting using estimate of maximum of differential cross-section.
9855       RATND=1D0
9856       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
9857         IF(VIOL.LT.PYR(0)) THEN
9858           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9859           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
9860           GOTO 100
9861         ENDIF
9862       ELSEIF(MFAIL.EQ.0) THEN
9863         RATND=SIGLPT/XSEC(95,1)
9864         VIOL=VIOL/RATND
9865         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
9866           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
9867      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
9868           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9869           ISUB=0
9870           GOTO 100
9871         ENDIF
9872         IF(VIOL.LT.PYR(0)) THEN
9873           GOTO 140
9874         ENDIF
9875       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
9876         IF(VIOL.LT.PYR(0)) THEN
9877           MSTI(61)=1
9878           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9879           RETURN
9880         ENDIF
9881       ELSE
9882         RATND=SIGLPT/XSEC(95,1)
9883         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
9884           MSTI(61)=1
9885           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9886           RETURN
9887         ENDIF
9888         VIOL=VIOL/RATND
9889         IF(VIOL.LT.PYR(0)) THEN
9890           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9891           GOTO 100
9892         ENDIF
9893       ENDIF
9894  
9895 C...Check for possible violation of estimated maximum of differential
9896 C...cross-section used in weighting.
9897       IF(MSTP(123).LE.0) THEN
9898         IF(VIOL.GT.1D0) THEN
9899           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
9900           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9901      &    VINT(22),VINT(23),VINT(26)
9902           CALL PYSTOP(2)
9903         ENDIF
9904       ELSEIF(MSTP(123).EQ.1) THEN
9905         IF(VIOL.GT.VINT(108)) THEN
9906           VINT(108)=VIOL
9907           IF(VIOL.GT.1.0001D0) THEN
9908             MINT(10)=1
9909             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
9910             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9911      &      VINT(22),VINT(23),VINT(26)
9912           ENDIF
9913         ENDIF
9914       ELSEIF(VIOL.GT.VINT(108)) THEN
9915         VINT(108)=VIOL
9916         IF(VIOL.GT.1D0) THEN
9917           MINT(10)=1
9918           IF(MSTP(123).EQ.2) WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
9919           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
9920      &    THEN
9921             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
9922             IF(KFPR(ISUB,1).LE.9) THEN
9923               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5800) KFPR(ISUB,1),
9924      &        XMAXUP(KFPR(ISUB,1))
9925             ELSEIF(KFPR(ISUB,1).LE.99) THEN
9926               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5900) KFPR(ISUB,1),
9927      &        XMAXUP(KFPR(ISUB,1))
9928             ELSE
9929               IF(MSTP(123).EQ.2) WRITE(MSTU(11),6000) KFPR(ISUB,1),
9930      &        XMAXUP(KFPR(ISUB,1))
9931             ENDIF
9932           ENDIF
9933           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
9934             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
9935             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
9936             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
9937      &      XSEC(0,1)=XSEC(0,1)+XDIF
9938             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
9939      &      VINT(22),VINT(23),VINT(26)
9940             IF(ISUB.LE.9) THEN
9941               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
9942             ELSEIF(ISUB.LE.99) THEN
9943               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
9944             ELSE
9945               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
9946             ENDIF
9947           ENDIF
9948           VINT(108)=1D0
9949         ENDIF
9950       ENDIF
9951  
9952 C...Multiple interactions: choose impact parameter (if not already done).
9953       IF(MINT(39).EQ.0) VINT(148)=1D0
9954       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
9955      &MSTP(82).GE.3) THEN
9956         IF(MINT(35).LE.1) CALL PYMULT(5)
9957         IF(MINT(35).GE.2) CALL PYMIGN(5)
9958         IF(VINT(150).LT.PYR(0)) THEN
9959           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9960           IF(MFAIL.EQ.1) THEN
9961             MSTI(61)=1
9962             RETURN
9963           ENDIF
9964           GOTO 100
9965         ENDIF
9966       ENDIF
9967       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
9968       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
9969         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
9970         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
9971       ENDIF
9972       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
9973  
9974 C...Choose flavour of reacting partons (and subprocess).
9975       IF(ISTSB.GE.11) GOTO 320
9976       RSIGS=SIGS*PYR(0)
9977       QT2=VINT(48)
9978       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
9979      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
9980       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
9981      &PYR(0).GT.RQQBAR)) THEN
9982         DO 310 ICHN=1,NCHN
9983           KFL1=ISIG(ICHN,1)
9984           KFL2=ISIG(ICHN,2)
9985           MINT(2)=ISIG(ICHN,3)
9986           RSIGS=RSIGS-SIGH(ICHN)
9987           IF(RSIGS.LE.0D0) GOTO 320
9988   310   CONTINUE
9989  
9990 C...Multiple interactions: choose qqbar preferentially at small pT.
9991       ELSEIF(ISUB.EQ.96) THEN
9992         MINT(105)=MINT(103)
9993         MINT(109)=MINT(107)
9994         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
9995         MINT(105)=MINT(104)
9996         MINT(109)=MINT(108)
9997         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
9998         MINT(1)=11
9999         MINT(2)=1
10000         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
10001  
10002 C...Low-pT: choose string drawing configuration.
10003       ELSE
10004         KFL1=21
10005         KFL2=21
10006         RSIGS=6D0*PYR(0)
10007         MINT(2)=1
10008         IF(RSIGS.GT.1D0) MINT(2)=2
10009         IF(RSIGS.GT.2D0) MINT(2)=3
10010       ENDIF
10011  
10012 C...Reassign QCD process. Partons before initial state radiation.
10013   320 IF(MINT(2).GT.10) THEN
10014         MINT(1)=MINT(2)/10
10015         MINT(2)=MOD(MINT(2),10)
10016       ENDIF
10017       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
10018      &NGEN(MINT(1),2)+1
10019       MINT(15)=KFL1
10020       MINT(16)=KFL2
10021       MINT(13)=MINT(15)
10022       MINT(14)=MINT(16)
10023       VINT(141)=VINT(41)
10024       VINT(142)=VINT(42)
10025       VINT(151)=0D0
10026       VINT(152)=0D0
10027  
10028 C...Calculate x value of photon for parton inside photon inside e.
10029       DO 350 JT=1,2
10030         MINT(18+JT)=0
10031         VINT(154+JT)=0D0
10032         MSPLI=0
10033         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
10034         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
10035         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
10036         IF(MSPLI.EQ.2) THEN
10037           KFLH=MINT(14+JT)
10038           XHRD=VINT(140+JT)
10039           Q2HRD=VINT(54)
10040           MINT(105)=MINT(102+JT)
10041           MINT(109)=MINT(106+JT)
10042           VINT(120)=VINT(2+JT)
10043           IF(MSTP(57).LE.1) THEN
10044             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
10045           ELSE
10046             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
10047           ENDIF
10048           WTMX=4D0*XPQ(KFLH)
10049           IF(MSTP(13).EQ.2) THEN
10050             Q2PMS=Q2HRD/PMAS(11,1)**2
10051             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
10052           ENDIF
10053   330     XE=XHRD**PYR(0)
10054           XG=MIN(1D0-1D-10,XHRD/XE)
10055           IF(MSTP(57).LE.1) THEN
10056             CALL PYPDFU(22,XG,Q2HRD,XPQ)
10057           ELSE
10058             CALL PYPDFL(22,XG,Q2HRD,XPQ)
10059           ENDIF
10060           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
10061           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
10062           IF(WT.LT.PYR(0)*WTMX) GOTO 330
10063           MINT(18+JT)=1
10064           VINT(154+JT)=XE
10065           DO 340 KFLS=-25,25
10066             XSFX(JT,KFLS)=XPQ(KFLS)
10067   340     CONTINUE
10068         ENDIF
10069   350 CONTINUE
10070  
10071 C...Pick scale where photon is resolved.
10072       Q0S=PARP(15)**2
10073       Q1S=VINT(154)**2
10074       VINT(283)=0D0
10075       IF(MINT(107).EQ.3) THEN
10076         IF(MSTP(66).EQ.1) THEN
10077           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
10078         ELSEIF(MSTP(66).EQ.2) THEN
10079           PS=VINT(3)**2
10080           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10081      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10082           Q2INT=SQRT(Q0S*Q2EFF)
10083           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10084         ELSEIF(MSTP(66).EQ.3) THEN
10085           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
10086         ELSEIF(MSTP(66).GE.4) THEN
10087           PS=0.25D0*VINT(3)**2
10088           VINT(283)=(Q0S+PS)*(Q1S+PS)/
10089      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10090         ENDIF
10091       ENDIF
10092       VINT(284)=0D0
10093       IF(MINT(108).EQ.3) THEN
10094         IF(MSTP(66).EQ.1) THEN
10095           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
10096         ELSEIF(MSTP(66).EQ.2) THEN
10097           PS=VINT(4)**2
10098           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10099      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10100           Q2INT=SQRT(Q0S*Q2EFF)
10101           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10102         ELSEIF(MSTP(66).EQ.3) THEN
10103           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
10104         ELSEIF(MSTP(66).GE.4) THEN
10105           PS=0.25D0*VINT(4)**2
10106           VINT(284)=(Q0S+PS)*(Q1S+PS)/
10107      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10108         ENDIF
10109       ENDIF
10110       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10111  
10112 C...Format statements for differential cross-section maximum violations.
10113  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
10114      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10115  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
10116      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
10117  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
10118      &'in event',1X,I7)
10119  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
10120      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10121  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
10122      &'in event',1X,I7)
10123  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
10124  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
10125  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
10126  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
10127  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
10128  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
10129  
10130       RETURN
10131       END
10132  
10133 C*********************************************************************
10134  
10135 C...PYSCAT
10136 C...Finds outgoing flavours and event type; sets up the kinematics
10137 C...and colour flow of the hard scattering
10138  
10139       SUBROUTINE PYSCAT
10140  
10141 C...Double precision and integer declarations
10142       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
10143       IMPLICIT INTEGER(I-N)
10144       INTEGER PYK,PYCHGE,PYCOMP
10145 C...Parameter statement to help give large particle numbers.
10146       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
10147      &KEXCIT=4000000,KDIMEN=5000000)
10148 C...Parameter statement for maximum size of showers.
10149       PARAMETER (MAXNUR=1000)
10150  
10151 C...User process event common block.
10152       INTEGER MAXNUP
10153       PARAMETER (MAXNUP=500)
10154       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
10155       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
10156       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
10157      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
10158      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
10159       SAVE /HEPEUP/
10160  
10161 C...Commonblocks.
10162       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
10163       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
10164       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10165       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
10166       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
10167       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
10168       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
10169       COMMON/PYINT1/MINT(400),VINT(400)
10170       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
10171       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
10172       COMMON/PYINT4/MWID(500),WIDS(500,5)
10173       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
10174       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
10175      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
10176       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
10177       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,
10178      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,
10179      &/PYTCSM/
10180 C...Local arrays and saved variables
10181       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
10182      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
10183       SAVE VINTSV
10184  
10185 C...Read out process
10186       ISUB=MINT(1)
10187       ISUBSV=ISUB
10188  
10189 C...Restore information for low-pT processes
10190       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
10191         DO 100 J=41,66
10192   100   VINT(J)=VINTSV(J)
10193       ENDIF
10194  
10195 C...Convert H' or A process into equivalent H one
10196       IHIGG=1
10197       KFHIGG=25
10198       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
10199      &ISUB.LE.190)) THEN
10200         IHIGG=2
10201         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
10202         KFHIGG=33+IHIGG
10203         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
10204         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
10205         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
10206         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
10207         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
10208         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
10209         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
10210         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
10211         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
10212         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
10213         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
10214         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
10215       ENDIF
10216  
10217       IF(ISUB.EQ.401.OR.ISUB.EQ.402) KFHIGG=KFPR(ISUB,1)
10218  
10219 C...Convert bottomonium process into equivalent charmonium ones.
10220       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
10221  
10222 C...Choice of subprocess, number of documentation lines
10223       IDOC=6+ISET(ISUB)
10224       IF(ISUB.EQ.95) IDOC=8
10225       IF(ISET(ISUB).EQ.5) IDOC=9
10226       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
10227       MINT(3)=IDOC-6
10228       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
10229       MINT(4)=IDOC
10230       IPU1=MINT(84)+1
10231       IPU2=MINT(84)+2
10232       IPU3=MINT(84)+3
10233       IPU4=MINT(84)+4
10234       IPU5=MINT(84)+5
10235       IPU6=MINT(84)+6
10236  
10237 C...Reset K, P and V vectors. Store incoming particles
10238       DO 120 JT=1,MSTP(126)+100
10239         I=MINT(83)+JT
10240         IF(I.GT.MSTU(4)) GOTO 120
10241         DO 110 J=1,5
10242           K(I,J)=0
10243           P(I,J)=0D0
10244           V(I,J)=0D0
10245   110   CONTINUE
10246   120 CONTINUE
10247       DO 140 JT=1,2
10248         I=MINT(83)+JT
10249         K(I,1)=21
10250         K(I,2)=MINT(10+JT)
10251         DO 130 J=1,5
10252           P(I,J)=VINT(285+5*JT+J)
10253   130   CONTINUE
10254   140 CONTINUE
10255       MINT(6)=2
10256       KFRES=0
10257  
10258 C...Store incoming partons in their CM-frame. Save pdf value.
10259       SH=VINT(44)
10260       SHR=SQRT(SH)
10261       SHP=VINT(26)*VINT(2)
10262       SHPR=SQRT(SHP)
10263       SHUSER=SHR
10264       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
10265       DO 150 JT=1,2
10266         I=MINT(84)+JT
10267         K(I,1)=14
10268         K(I,2)=MINT(14+JT)
10269         K(I,3)=MINT(83)+2+JT
10270         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
10271         P(I,4)=0.5D0*SHUSER
10272         VINT(38+JT)=XSFX(JT,MINT(14+JT))
10273   150 CONTINUE
10274  
10275 C...Copy incoming partons to documentation lines
10276       DO 170 JT=1,2
10277         I1=MINT(83)+4+JT
10278         I2=MINT(84)+JT
10279         K(I1,1)=21
10280         K(I1,2)=K(I2,2)
10281         K(I1,3)=I1-2
10282         DO 160 J=1,5
10283           P(I1,J)=P(I2,J)
10284   160   CONTINUE
10285   170 CONTINUE
10286  
10287 C...Choose new quark/lepton flavour for relevant annihilation graphs
10288       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
10289      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
10290         IGLGA=21
10291         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
10292         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
10293   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
10294         DO 190 I=1,MDCY(IGLGA,3)
10295           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
10296           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
10297           IF(RKFL.LE.0D0) GOTO 200
10298   190   CONTINUE
10299   200   CONTINUE
10300         IF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.2) THEN
10301           IF(KFLF.GE.4) GOTO 180
10302         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385).AND.MINT(2).LE.4) THEN
10303           KFLF=4
10304           MINT(2)=MINT(2)-2
10305         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385) THEN
10306           KFLF=5
10307           MINT(2)=MINT(2)-4
10308         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
10309      &  .AND.IABS(KFLF).GE.3) THEN
10310           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
10311      &    VINT(44)**2
10312           FACCIB=VINT(46)**2/RTCM(41)**4
10313           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
10314         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
10315           KFLF=5
10316           MINT(2)=1
10317         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
10318           IF(KFLF.EQ.5) GOTO 180
10319         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
10320           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
10321         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
10322           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
10323         ENDIF
10324       ENDIF
10325  
10326 C...Final state flavours and colour flow: default values
10327       JS=1
10328       MINT(21)=MINT(15)
10329       MINT(22)=MINT(16)
10330       MINT(23)=0
10331       MINT(24)=0
10332       KCC=20
10333       KCS=ISIGN(1,MINT(15))
10334  
10335       IF(ISET(ISUB).EQ.11) THEN
10336 C...User-defined processes: find products
10337         MINT(3)=0
10338         DO 210 IUP=3,NUP
10339           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
10340           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
10341             MINT(21+IUP)=IDUP(IUP)
10342           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
10343      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
10344           ELSEIF(IDUP(IUP).EQ.0) THEN
10345           ELSE
10346             MINT(3)=MINT(3)+1
10347             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
10348           ENDIF
10349   210   CONTINUE
10350  
10351       ELSEIF(ISUB.LE.10) THEN
10352         IF(ISUB.EQ.1) THEN
10353 C...f + fbar -> gamma*/Z0
10354           KFRES=23
10355  
10356         ELSEIF(ISUB.EQ.2) THEN
10357 C...f + fbar' -> W+/-
10358           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10359           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10360           KFRES=ISIGN(24,KCH1+KCH2)
10361  
10362         ELSEIF(ISUB.EQ.3) THEN
10363 C...f + fbar -> h0 (or H0, or A0)
10364           KFRES=KFHIGG
10365  
10366         ELSEIF(ISUB.EQ.4) THEN
10367 C...gamma + W+/- -> W+/-
10368  
10369         ELSEIF(ISUB.EQ.5) THEN
10370 C...Z0 + Z0 -> h0
10371           XH=SH/SHP
10372           MINT(21)=MINT(15)
10373           MINT(22)=MINT(16)
10374           PMQ(1)=PYMASS(MINT(21))
10375           PMQ(2)=PYMASS(MINT(22))
10376   220     JT=INT(1.5D0+PYR(0))
10377           ZMIN=2D0*PMQ(JT)/SHPR
10378           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10379      &    (SHPR*(SHPR-PMQ(3-JT)))
10380           ZMAX=MIN(1D0-XH,ZMAX)
10381           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10382           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10383      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
10384           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10385           IF(SQC1.LT.1D-8) GOTO 220
10386           C1=SQRT(SQC1)
10387           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10388           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10389           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10390           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10391           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10392           IF(SQC1.LT.1D-8) GOTO 220
10393           C1=SQRT(SQC1)
10394           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10395           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10396           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10397           PHIR=PARU(2)*PYR(0)
10398           CPHI=COS(PHIR)
10399           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10400      &    SQRT(1D0-CTHE(2)**2)*CPHI
10401           Z1=2D0-Z(JT)
10402           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10403           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10404           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10405      &    PMQ(3-JT)**2/SHP))
10406           ZMIN=2D0*PMQ(3-JT)/SHPR
10407           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10408           ZMAX=MIN(1D0-XH,ZMAX)
10409           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
10410           KCC=22
10411           KFRES=25
10412  
10413         ELSEIF(ISUB.EQ.6) THEN
10414 C...Z0 + W+/- -> W+/-
10415  
10416         ELSEIF(ISUB.EQ.7) THEN
10417 C...W+ + W- -> Z0
10418  
10419         ELSEIF(ISUB.EQ.8) THEN
10420 C...W+ + W- -> h0
10421           XH=SH/SHP
10422   230     DO 260 JT=1,2
10423             I=MINT(14+JT)
10424             IA=IABS(I)
10425             IF(IA.LE.10) THEN
10426               RVCKM=VINT(180+I)*PYR(0)
10427               DO 240 J=1,MSTP(1)
10428                 IB=2*J-1+MOD(IA,2)
10429                 IPM=(5-ISIGN(1,I))/2
10430                 IDC=J+MDCY(IA,2)+2
10431                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
10432                 MINT(20+JT)=ISIGN(IB,I)
10433                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10434                 IF(RVCKM.LE.0D0) GOTO 250
10435   240         CONTINUE
10436             ELSE
10437               IB=2*((IA+1)/2)-1+MOD(IA,2)
10438               MINT(20+JT)=ISIGN(IB,I)
10439             ENDIF
10440   250       PMQ(JT)=PYMASS(MINT(20+JT))
10441   260     CONTINUE
10442           JT=INT(1.5D0+PYR(0))
10443           ZMIN=2D0*PMQ(JT)/SHPR
10444           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10445      &    (SHPR*(SHPR-PMQ(3-JT)))
10446           ZMAX=MIN(1D0-XH,ZMAX)
10447           IF(ZMIN.GE.ZMAX) GOTO 230
10448           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10449           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10450      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
10451           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10452           IF(SQC1.LT.1D-8) GOTO 230
10453           C1=SQRT(SQC1)
10454           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10455           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10456           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10457           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10458           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10459           IF(SQC1.LT.1D-8) GOTO 230
10460           C1=SQRT(SQC1)
10461           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10462           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10463           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10464           PHIR=PARU(2)*PYR(0)
10465           CPHI=COS(PHIR)
10466           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10467      &    SQRT(1D0-CTHE(2)**2)*CPHI
10468           Z1=2D0-Z(JT)
10469           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10470           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10471           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10472      &    PMQ(3-JT)**2/SHP))
10473           ZMIN=2D0*PMQ(3-JT)/SHPR
10474           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10475           ZMAX=MIN(1D0-XH,ZMAX)
10476           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
10477           KCC=22
10478           KFRES=25
10479  
10480         ELSEIF(ISUB.EQ.10) THEN
10481 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
10482           IF(MINT(2).EQ.1) THEN
10483             KCC=22
10484           ELSE
10485 C...W exchange: need to mix flavours according to CKM matrix
10486             DO 280 JT=1,2
10487               I=MINT(14+JT)
10488               IA=IABS(I)
10489               IF(IA.LE.10) THEN
10490                 RVCKM=VINT(180+I)*PYR(0)
10491                 DO 270 J=1,MSTP(1)
10492                   IB=2*J-1+MOD(IA,2)
10493                   IPM=(5-ISIGN(1,I))/2
10494                   IDC=J+MDCY(IA,2)+2
10495                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
10496                   MINT(20+JT)=ISIGN(IB,I)
10497                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10498                   IF(RVCKM.LE.0D0) GOTO 280
10499   270           CONTINUE
10500               ELSE
10501                 IB=2*((IA+1)/2)-1+MOD(IA,2)
10502                 MINT(20+JT)=ISIGN(IB,I)
10503               ENDIF
10504   280       CONTINUE
10505             KCC=22
10506           ENDIF
10507         ENDIF
10508  
10509       ELSEIF(ISUB.LE.20) THEN
10510         IF(ISUB.EQ.11) THEN
10511 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
10512           KCC=MINT(2)
10513           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10514  
10515         ELSEIF(ISUB.EQ.12) THEN
10516 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
10517           MINT(21)=ISIGN(KFLF,MINT(15))
10518           MINT(22)=-MINT(21)
10519           KCC=4
10520  
10521         ELSEIF(ISUB.EQ.13) THEN
10522 C...f + fbar -> g + g; th arbitrary
10523           MINT(21)=21
10524           MINT(22)=21
10525           KCC=MINT(2)+4
10526  
10527         ELSEIF(ISUB.EQ.14) THEN
10528 C...f + fbar -> g + gamma; th arbitrary
10529           IF(PYR(0).GT.0.5D0) JS=2
10530           MINT(20+JS)=21
10531           MINT(23-JS)=22
10532           KCC=17+JS
10533  
10534         ELSEIF(ISUB.EQ.15) THEN
10535 C...f + fbar -> g + Z0; th arbitrary
10536           IF(PYR(0).GT.0.5D0) JS=2
10537           MINT(20+JS)=21
10538           MINT(23-JS)=23
10539           KCC=17+JS
10540  
10541         ELSEIF(ISUB.EQ.16) THEN
10542 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10543           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10544           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10545           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10546           MINT(20+JS)=21
10547           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10548           KCC=17+JS
10549  
10550         ELSEIF(ISUB.EQ.17) THEN
10551 C...f + fbar -> g + h0; th arbitrary
10552           IF(PYR(0).GT.0.5D0) JS=2
10553           MINT(20+JS)=21
10554           MINT(23-JS)=25
10555           KCC=17+JS
10556  
10557         ELSEIF(ISUB.EQ.18) THEN
10558 C...f + fbar -> gamma + gamma; th arbitrary
10559           MINT(21)=22
10560           MINT(22)=22
10561  
10562         ELSEIF(ISUB.EQ.19) THEN
10563 C...f + fbar -> gamma + Z0; th arbitrary
10564           IF(PYR(0).GT.0.5D0) JS=2
10565           MINT(20+JS)=22
10566           MINT(23-JS)=23
10567  
10568         ELSEIF(ISUB.EQ.20) THEN
10569 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
10570 C...(p(fbar')-p(W+))**2
10571           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10572           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10573           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10574           MINT(20+JS)=22
10575           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10576         ENDIF
10577  
10578       ELSEIF(ISUB.LE.30) THEN
10579         IF(ISUB.EQ.21) THEN
10580 C...f + fbar -> gamma + h0; th arbitrary
10581           IF(PYR(0).GT.0.5D0) JS=2
10582           MINT(20+JS)=22
10583           MINT(23-JS)=25
10584  
10585         ELSEIF(ISUB.EQ.22) THEN
10586 C...f + fbar -> Z0 + Z0; th arbitrary
10587           MINT(21)=23
10588           MINT(22)=23
10589  
10590         ELSEIF(ISUB.EQ.23) THEN
10591 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10592           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10593           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10594           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10595           MINT(20+JS)=23
10596           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10597  
10598         ELSEIF(ISUB.EQ.24) THEN
10599 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
10600           IF(PYR(0).GT.0.5D0) JS=2
10601           MINT(20+JS)=23
10602           MINT(23-JS)=KFHIGG
10603  
10604         ELSEIF(ISUB.EQ.25) THEN
10605 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
10606           MINT(21)=-ISIGN(24,MINT(15))
10607           MINT(22)=-MINT(21)
10608  
10609         ELSEIF(ISUB.EQ.26) THEN
10610 C...f + fbar' -> W+/- + h0 (or H0, or A0);
10611 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10612           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10613           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10614           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10615           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
10616           MINT(23-JS)=KFHIGG
10617  
10618         ELSEIF(ISUB.EQ.27) THEN
10619 C...f + fbar -> h0 + h0
10620  
10621         ELSEIF(ISUB.EQ.28) THEN
10622 C...f + g -> f + g; th = (p(f)-p(f))**2
10623           IF(MINT(15).EQ.21) JS=2
10624           KCC=MINT(2)+6
10625           IF(MINT(15).EQ.21) KCC=KCC+2
10626           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
10627           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
10628  
10629         ELSEIF(ISUB.EQ.29) THEN
10630 C...f + g -> f + gamma; th = (p(f)-p(f))**2
10631           IF(MINT(15).EQ.21) JS=2
10632           MINT(23-JS)=22
10633           KCC=15+JS
10634           KCS=ISIGN(1,MINT(14+JS))
10635  
10636         ELSEIF(ISUB.EQ.30) THEN
10637 C...f + g -> f + Z0; th = (p(f)-p(f))**2
10638           IF(MINT(15).EQ.21) JS=2
10639           MINT(23-JS)=23
10640           KCC=15+JS
10641           KCS=ISIGN(1,MINT(14+JS))
10642         ENDIF
10643  
10644       ELSEIF(ISUB.LE.40) THEN
10645         IF(ISUB.EQ.31) THEN
10646 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
10647           IF(MINT(15).EQ.21) JS=2
10648           I=MINT(14+JS)
10649           IA=IABS(I)
10650           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
10651           RVCKM=VINT(180+I)*PYR(0)
10652           DO 290 J=1,MSTP(1)
10653             IB=2*J-1+MOD(IA,2)
10654             IPM=(5-ISIGN(1,I))/2
10655             IDC=J+MDCY(IA,2)+2
10656             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
10657             MINT(20+JS)=ISIGN(IB,I)
10658             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10659             IF(RVCKM.LE.0D0) GOTO 300
10660   290     CONTINUE
10661   300     KCC=15+JS
10662           KCS=ISIGN(1,MINT(14+JS))
10663  
10664         ELSEIF(ISUB.EQ.32) THEN
10665 C...f + g -> f + h0; th = (p(f)-p(f))**2
10666           IF(MINT(15).EQ.21) JS=2
10667           MINT(23-JS)=25
10668           KCC=15+JS
10669           KCS=ISIGN(1,MINT(14+JS))
10670  
10671         ELSEIF(ISUB.EQ.33) THEN
10672 C...f + gamma -> f + g; th=(p(f)-p(f))**2
10673           IF(MINT(15).EQ.22) JS=2
10674           MINT(23-JS)=21
10675           KCC=24+JS
10676           KCS=ISIGN(1,MINT(14+JS))
10677  
10678         ELSEIF(ISUB.EQ.34) THEN
10679 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
10680           IF(MINT(15).EQ.22) JS=2
10681           KCC=22
10682           KCS=ISIGN(1,MINT(14+JS))
10683  
10684         ELSEIF(ISUB.EQ.35) THEN
10685 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
10686           IF(MINT(15).EQ.22) JS=2
10687           MINT(23-JS)=23
10688           KCC=22
10689  
10690         ELSEIF(ISUB.EQ.36) THEN
10691 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
10692           IF(MINT(15).EQ.22) JS=2
10693           I=MINT(14+JS)
10694           IA=IABS(I)
10695           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
10696           IF(IA.LE.10) THEN
10697             RVCKM=VINT(180+I)*PYR(0)
10698             DO 310 J=1,MSTP(1)
10699               IB=2*J-1+MOD(IA,2)
10700               IPM=(5-ISIGN(1,I))/2
10701               IDC=J+MDCY(IA,2)+2
10702               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
10703               MINT(20+JS)=ISIGN(IB,I)
10704               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10705               IF(RVCKM.LE.0D0) GOTO 320
10706   310       CONTINUE
10707           ELSE
10708             IB=2*((IA+1)/2)-1+MOD(IA,2)
10709             MINT(20+JS)=ISIGN(IB,I)
10710           ENDIF
10711   320     KCC=22
10712  
10713         ELSEIF(ISUB.EQ.37) THEN
10714 C...f + gamma -> f + h0
10715  
10716         ELSEIF(ISUB.EQ.38) THEN
10717 C...f + Z0 -> f + g
10718  
10719         ELSEIF(ISUB.EQ.39) THEN
10720 C...f + Z0 -> f + gamma
10721  
10722         ELSEIF(ISUB.EQ.40) THEN
10723 C...f + Z0 -> f + Z0
10724         ENDIF
10725  
10726       ELSEIF(ISUB.LE.50) THEN
10727         IF(ISUB.EQ.41) THEN
10728 C...f + Z0 -> f' + W+/-
10729  
10730         ELSEIF(ISUB.EQ.42) THEN
10731 C...f + Z0 -> f + h0
10732  
10733         ELSEIF(ISUB.EQ.43) THEN
10734 C...f + W+/- -> f' + g
10735  
10736         ELSEIF(ISUB.EQ.44) THEN
10737 C...f + W+/- -> f' + gamma
10738  
10739         ELSEIF(ISUB.EQ.45) THEN
10740 C...f + W+/- -> f' + Z0
10741  
10742         ELSEIF(ISUB.EQ.46) THEN
10743 C...f + W+/- -> f' + W+/-
10744  
10745         ELSEIF(ISUB.EQ.47) THEN
10746 C...f + W+/- -> f' + h0
10747  
10748         ELSEIF(ISUB.EQ.48) THEN
10749 C...f + h0 -> f + g
10750  
10751         ELSEIF(ISUB.EQ.49) THEN
10752 C...f + h0 -> f + gamma
10753  
10754         ELSEIF(ISUB.EQ.50) THEN
10755 C...f + h0 -> f + Z0
10756         ENDIF
10757  
10758       ELSEIF(ISUB.LE.60) THEN
10759         IF(ISUB.EQ.51) THEN
10760 C...f + h0 -> f' + W+/-
10761  
10762         ELSEIF(ISUB.EQ.52) THEN
10763 C...f + h0 -> f + h0
10764  
10765         ELSEIF(ISUB.EQ.53) THEN
10766 C...g + g -> f + fbar; th arbitrary
10767           KCS=(-1)**INT(1.5D0+PYR(0))
10768           MINT(21)=ISIGN(KFLF,KCS)
10769           MINT(22)=-MINT(21)
10770           KCC=MINT(2)+10
10771  
10772         ELSEIF(ISUB.EQ.54) THEN
10773 C...g + gamma -> f + fbar; th arbitrary
10774           KCS=(-1)**INT(1.5D0+PYR(0))
10775           MINT(21)=ISIGN(KFLF,KCS)
10776           MINT(22)=-MINT(21)
10777           KCC=27
10778           IF(MINT(16).EQ.21) KCC=28
10779  
10780         ELSEIF(ISUB.EQ.55) THEN
10781 C...g + Z0 -> f + fbar
10782  
10783         ELSEIF(ISUB.EQ.56) THEN
10784 C...g + W+/- -> f + fbar'
10785  
10786         ELSEIF(ISUB.EQ.57) THEN
10787 C...g + h0 -> f + fbar
10788  
10789         ELSEIF(ISUB.EQ.58) THEN
10790 C...gamma + gamma -> f + fbar; th arbitrary
10791           KCS=(-1)**INT(1.5D0+PYR(0))
10792           MINT(21)=ISIGN(KFLF,KCS)
10793           MINT(22)=-MINT(21)
10794           KCC=21
10795  
10796         ELSEIF(ISUB.EQ.59) THEN
10797 C...gamma + Z0 -> f + fbar
10798  
10799         ELSEIF(ISUB.EQ.60) THEN
10800 C...gamma + W+/- -> f + fbar'
10801         ENDIF
10802  
10803       ELSEIF(ISUB.LE.70) THEN
10804         IF(ISUB.EQ.61) THEN
10805 C...gamma + h0 -> f + fbar
10806  
10807         ELSEIF(ISUB.EQ.62) THEN
10808 C...Z0 + Z0 -> f + fbar
10809  
10810         ELSEIF(ISUB.EQ.63) THEN
10811 C...Z0 + W+/- -> f + fbar'
10812  
10813         ELSEIF(ISUB.EQ.64) THEN
10814 C...Z0 + h0 -> f + fbar
10815  
10816         ELSEIF(ISUB.EQ.65) THEN
10817 C...W+ + W- -> f + fbar
10818  
10819         ELSEIF(ISUB.EQ.66) THEN
10820 C...W+/- + h0 -> f + fbar'
10821  
10822         ELSEIF(ISUB.EQ.67) THEN
10823 C...h0 + h0 -> f + fbar
10824  
10825         ELSEIF(ISUB.EQ.68) THEN
10826 C...g + g -> g + g; th arbitrary
10827           KCC=MINT(2)+12
10828           KCS=(-1)**INT(1.5D0+PYR(0))
10829  
10830         ELSEIF(ISUB.EQ.69) THEN
10831 C...gamma + gamma -> W+ + W-; th arbitrary
10832           MINT(21)=24
10833           MINT(22)=-24
10834           KCC=21
10835  
10836         ELSEIF(ISUB.EQ.70) THEN
10837 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
10838           IF(MINT(15).EQ.22) MINT(21)=23
10839           IF(MINT(16).EQ.22) MINT(22)=23
10840           KCC=21
10841         ENDIF
10842  
10843       ELSEIF(ISUB.LE.80) THEN
10844         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
10845 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
10846           XH=SH/SHP
10847           MINT(21)=MINT(15)
10848           MINT(22)=MINT(16)
10849           PMQ(1)=PYMASS(MINT(21))
10850           PMQ(2)=PYMASS(MINT(22))
10851   330     JT=INT(1.5D0+PYR(0))
10852           ZMIN=2D0*PMQ(JT)/SHPR
10853           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10854      &    (SHPR*(SHPR-PMQ(3-JT)))
10855           ZMAX=MIN(1D0-XH,ZMAX)
10856           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10857           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10858      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
10859           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10860           IF(SQC1.LT.1D-8) GOTO 330
10861           C1=SQRT(SQC1)
10862           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10863           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10864           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10865           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10866           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10867           IF(SQC1.LT.1D-8) GOTO 330
10868           C1=SQRT(SQC1)
10869           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10870           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10871           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10872           PHIR=PARU(2)*PYR(0)
10873           CPHI=COS(PHIR)
10874           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10875      &    SQRT(1D0-CTHE(2)**2)*CPHI
10876           Z1=2D0-Z(JT)
10877           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10878           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10879           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10880      &    PMQ(3-JT)**2/SHP))
10881           ZMIN=2D0*PMQ(3-JT)/SHPR
10882           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10883           ZMAX=MIN(1D0-XH,ZMAX)
10884           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
10885           KCC=22
10886  
10887         ELSEIF(ISUB.EQ.73) THEN
10888 C...Z0 + W+/- -> Z0 + W+/-
10889           JS=MINT(2)
10890           XH=SH/SHP
10891   340     JT=3-MINT(2)
10892           I=MINT(14+JT)
10893           IA=IABS(I)
10894           IF(IA.LE.10) THEN
10895             RVCKM=VINT(180+I)*PYR(0)
10896             DO 350 J=1,MSTP(1)
10897               IB=2*J-1+MOD(IA,2)
10898               IPM=(5-ISIGN(1,I))/2
10899               IDC=J+MDCY(IA,2)+2
10900               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
10901               MINT(20+JT)=ISIGN(IB,I)
10902               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10903               IF(RVCKM.LE.0D0) GOTO 360
10904   350       CONTINUE
10905           ELSE
10906             IB=2*((IA+1)/2)-1+MOD(IA,2)
10907             MINT(20+JT)=ISIGN(IB,I)
10908           ENDIF
10909   360     PMQ(JT)=PYMASS(MINT(20+JT))
10910           MINT(23-JT)=MINT(17-JT)
10911           PMQ(3-JT)=PYMASS(MINT(23-JT))
10912           JT=INT(1.5D0+PYR(0))
10913           ZMIN=2D0*PMQ(JT)/SHPR
10914           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10915      &    (SHPR*(SHPR-PMQ(3-JT)))
10916           ZMAX=MIN(1D0-XH,ZMAX)
10917           IF(ZMIN.GE.ZMAX) GOTO 340
10918           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10919           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10920      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
10921           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10922           IF(SQC1.LT.1D-8) GOTO 340
10923           C1=SQRT(SQC1)
10924           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10925           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10926           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10927           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10928           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10929           IF(SQC1.LT.1D-8) GOTO 340
10930           C1=SQRT(SQC1)
10931           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10932           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10933           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10934           PHIR=PARU(2)*PYR(0)
10935           CPHI=COS(PHIR)
10936           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10937      &    SQRT(1D0-CTHE(2)**2)*CPHI
10938           Z1=2D0-Z(JT)
10939           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10940           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10941           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10942      &    PMQ(3-JT)**2/SHP))
10943           ZMIN=2D0*PMQ(3-JT)/SHPR
10944           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10945           ZMAX=MIN(1D0-XH,ZMAX)
10946           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
10947           KCC=22
10948  
10949         ELSEIF(ISUB.EQ.74) THEN
10950 C...Z0 + h0 -> Z0 + h0
10951  
10952         ELSEIF(ISUB.EQ.75) THEN
10953 C...W+ + W- -> gamma + gamma
10954  
10955         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
10956 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
10957           XH=SH/SHP
10958   370     DO 400 JT=1,2
10959             I=MINT(14+JT)
10960             IA=IABS(I)
10961             IF(IA.LE.10) THEN
10962               RVCKM=VINT(180+I)*PYR(0)
10963               DO 380 J=1,MSTP(1)
10964                 IB=2*J-1+MOD(IA,2)
10965                 IPM=(5-ISIGN(1,I))/2
10966                 IDC=J+MDCY(IA,2)+2
10967                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
10968                 MINT(20+JT)=ISIGN(IB,I)
10969                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10970                 IF(RVCKM.LE.0D0) GOTO 390
10971   380         CONTINUE
10972             ELSE
10973               IB=2*((IA+1)/2)-1+MOD(IA,2)
10974               MINT(20+JT)=ISIGN(IB,I)
10975             ENDIF
10976   390       PMQ(JT)=PYMASS(MINT(20+JT))
10977   400     CONTINUE
10978           JT=INT(1.5D0+PYR(0))
10979           ZMIN=2D0*PMQ(JT)/SHPR
10980           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10981      &    (SHPR*(SHPR-PMQ(3-JT)))
10982           ZMAX=MIN(1D0-XH,ZMAX)
10983           IF(ZMIN.GE.ZMAX) GOTO 370
10984           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10985           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10986      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
10987           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10988           IF(SQC1.LT.1D-8) GOTO 370
10989           C1=SQRT(SQC1)
10990           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10991           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10992           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10993           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10994           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10995           IF(SQC1.LT.1D-8) GOTO 370
10996           C1=SQRT(SQC1)
10997           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10998           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10999           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11000           PHIR=PARU(2)*PYR(0)
11001           CPHI=COS(PHIR)
11002           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11003      &    SQRT(1D0-CTHE(2)**2)*CPHI
11004           Z1=2D0-Z(JT)
11005           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11006           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11007           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11008      &    PMQ(3-JT)**2/SHP))
11009           ZMIN=2D0*PMQ(3-JT)/SHPR
11010           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11011           ZMAX=MIN(1D0-XH,ZMAX)
11012           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
11013           KCC=22
11014  
11015         ELSEIF(ISUB.EQ.78) THEN
11016 C...W+/- + h0 -> W+/- + h0
11017  
11018         ELSEIF(ISUB.EQ.79) THEN
11019 C...h0 + h0 -> h0 + h0
11020  
11021         ELSEIF(ISUB.EQ.80) THEN
11022 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
11023           IF(MINT(15).EQ.22) JS=2
11024           I=MINT(14+JS)
11025           IA=IABS(I)
11026           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
11027           IB=3-IA
11028           MINT(20+JS)=ISIGN(IB,I)
11029           KCC=22
11030         ENDIF
11031  
11032       ELSEIF(ISUB.LE.90) THEN
11033         IF(ISUB.EQ.81) THEN
11034 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
11035           MINT(21)=ISIGN(MINT(55),MINT(15))
11036           MINT(22)=-MINT(21)
11037           KCC=4
11038  
11039         ELSEIF(ISUB.EQ.82) THEN
11040 C...g + g -> Q + Qbar; th arbitrary
11041           KCS=(-1)**INT(1.5D0+PYR(0))
11042           MINT(21)=ISIGN(MINT(55),KCS)
11043           MINT(22)=-MINT(21)
11044           KCC=MINT(2)+10
11045  
11046         ELSEIF(ISUB.EQ.83) THEN
11047 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
11048           KFOLD=MINT(16)
11049           IF(MINT(2).EQ.2) KFOLD=MINT(15)
11050           KFAOLD=IABS(KFOLD)
11051           IF(KFAOLD.GT.10) THEN
11052             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
11053           ELSE
11054             RCKM=VINT(180+KFOLD)*PYR(0)
11055             IPM=(5-ISIGN(1,KFOLD))/2
11056             KFANEW=-MOD(KFAOLD+1,2)
11057   410       KFANEW=KFANEW+2
11058             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
11059             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
11060               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
11061      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
11062               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
11063      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
11064             ENDIF
11065             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
11066           ENDIF
11067           IF(MINT(2).EQ.1) THEN
11068             MINT(21)=ISIGN(MINT(55),MINT(15))
11069             MINT(22)=ISIGN(KFANEW,MINT(16))
11070           ELSE
11071             MINT(21)=ISIGN(KFANEW,MINT(15))
11072             MINT(22)=ISIGN(MINT(55),MINT(16))
11073             JS=2
11074           ENDIF
11075           KCC=22
11076  
11077         ELSEIF(ISUB.EQ.84) THEN
11078 C...g + gamma -> Q + Qbar; th arbitary
11079           KCS=(-1)**INT(1.5D0+PYR(0))
11080           MINT(21)=ISIGN(MINT(55),KCS)
11081           MINT(22)=-MINT(21)
11082           KCC=27
11083           IF(MINT(16).EQ.21) KCC=28
11084  
11085         ELSEIF(ISUB.EQ.85) THEN
11086 C...gamma + gamma -> F + Fbar; th arbitary
11087           KCS=(-1)**INT(1.5D0+PYR(0))
11088           MINT(21)=ISIGN(MINT(56),KCS)
11089           MINT(22)=-MINT(21)
11090           KCC=21
11091  
11092         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
11093 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
11094           MINT(21)=KFPR(ISUB,1)
11095           MINT(22)=KFPR(ISUB,2)
11096           KCC=24
11097           KCS=(-1)**INT(1.5D0+PYR(0))
11098         ENDIF
11099  
11100       ELSEIF(ISUB.LE.100) THEN
11101         IF(ISUB.EQ.95) THEN
11102 C...Low-pT ( = energyless g + g -> g + g)
11103           KCC=MINT(2)+12
11104           KCS=(-1)**INT(1.5D0+PYR(0))
11105  
11106         ELSEIF(ISUB.EQ.96) THEN
11107 C...Multiple interactions (should be reassigned to QCD process)
11108         ENDIF
11109  
11110       ELSEIF(ISUB.LE.110) THEN
11111         IF(ISUB.EQ.101) THEN
11112 C...g + g -> gamma*/Z0
11113           KCC=21
11114           KFRES=22
11115  
11116         ELSEIF(ISUB.EQ.102) THEN
11117 C...g + g -> h0 (or H0, or A0)
11118           KCC=21
11119           KFRES=KFHIGG
11120  
11121         ELSEIF(ISUB.EQ.103) THEN
11122 C...gamma + gamma -> h0 (or H0, or A0)
11123           KCC=21
11124           KFRES=KFHIGG
11125  
11126         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
11127 C...g + g -> chi_0c or chi_2c.
11128           KCC=21
11129           KFRES=KFPR(ISUB,1)
11130  
11131         ELSEIF(ISUB.EQ.106) THEN
11132 C...g + g -> J/Psi + gamma
11133           MINT(21)=KFPR(ISUB,1)
11134           MINT(22)=KFPR(ISUB,2)
11135           KCC=21
11136  
11137         ELSEIF(ISUB.EQ.107) THEN
11138 C...g + gamma -> J/Psi + g
11139           MINT(21)=KFPR(ISUB,1)
11140           MINT(22)=KFPR(ISUB,2)
11141           KCC=22
11142           IF(MINT(16).EQ.22) KCC=33
11143  
11144         ELSEIF(ISUB.EQ.108) THEN
11145 C...gamma + gamma -> J/Psi + gamma
11146           MINT(21)=KFPR(ISUB,1)
11147           MINT(22)=KFPR(ISUB,2)
11148  
11149         ELSEIF(ISUB.EQ.110) THEN
11150 C...f + fbar -> gamma + h0; th arbitrary
11151           IF(PYR(0).GT.0.5D0) JS=2
11152           MINT(20+JS)=22
11153           MINT(23-JS)=KFHIGG
11154         ENDIF
11155  
11156       ELSEIF(ISUB.LE.120) THEN
11157         IF(ISUB.EQ.111) THEN
11158 C...f + fbar -> g + h0; th arbitrary
11159           IF(PYR(0).GT.0.5D0) JS=2
11160           MINT(20+JS)=21
11161           MINT(23-JS)=KFHIGG
11162           KCC=17+JS
11163  
11164         ELSEIF(ISUB.EQ.112) THEN
11165 C...f + g -> f + h0; th = (p(f) - p(f))**2
11166           IF(MINT(15).EQ.21) JS=2
11167           MINT(23-JS)=KFHIGG
11168           KCC=15+JS
11169           KCS=ISIGN(1,MINT(14+JS))
11170  
11171         ELSEIF(ISUB.EQ.113) THEN
11172 C...g + g -> g + h0; th arbitrary
11173           IF(PYR(0).GT.0.5D0) JS=2
11174           MINT(23-JS)=KFHIGG
11175           KCC=22+JS
11176           KCS=(-1)**INT(1.5D0+PYR(0))
11177  
11178         ELSEIF(ISUB.EQ.114) THEN
11179 C...g + g -> gamma + gamma; th arbitrary
11180           IF(PYR(0).GT.0.5D0) JS=2
11181           MINT(21)=22
11182           MINT(22)=22
11183           KCC=21
11184  
11185         ELSEIF(ISUB.EQ.115) THEN
11186 C...g + g -> g + gamma; th arbitrary
11187           IF(PYR(0).GT.0.5D0) JS=2
11188           MINT(23-JS)=22
11189           KCC=22+JS
11190           KCS=(-1)**INT(1.5D0+PYR(0))
11191  
11192         ELSEIF(ISUB.EQ.116) THEN
11193 C...g + g -> gamma + Z0
11194  
11195         ELSEIF(ISUB.EQ.117) THEN
11196 C...g + g -> Z0 + Z0
11197  
11198         ELSEIF(ISUB.EQ.118) THEN
11199 C...g + g -> W+ + W-
11200         ENDIF
11201  
11202       ELSEIF(ISUB.LE.140) THEN
11203         IF(ISUB.EQ.121) THEN
11204 C...g + g -> Q + Qbar + h0
11205           KCS=(-1)**INT(1.5D0+PYR(0))
11206           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
11207           MINT(22)=-MINT(21)
11208           KCC=11+INT(0.5D0+PYR(0))
11209           KFRES=KFHIGG
11210  
11211         ELSEIF(ISUB.EQ.122) THEN
11212 C...q + qbar -> Q + Qbar + h0
11213           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
11214           MINT(22)=-MINT(21)
11215           KCC=4
11216           KFRES=KFHIGG
11217  
11218         ELSEIF(ISUB.EQ.123) THEN
11219 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
11220 C...inner process)
11221           KCC=22
11222           KFRES=KFHIGG
11223  
11224         ELSEIF(ISUB.EQ.124) THEN
11225 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
11226 C...inner process)
11227           DO 430 JT=1,2
11228             I=MINT(14+JT)
11229             IA=IABS(I)
11230             IF(IA.LE.10) THEN
11231               RVCKM=VINT(180+I)*PYR(0)
11232               DO 420 J=1,MSTP(1)
11233                 IB=2*J-1+MOD(IA,2)
11234                 IPM=(5-ISIGN(1,I))/2
11235                 IDC=J+MDCY(IA,2)+2
11236                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
11237                 MINT(20+JT)=ISIGN(IB,I)
11238                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11239                 IF(RVCKM.LE.0D0) GOTO 430
11240   420         CONTINUE
11241             ELSE
11242               IB=2*((IA+1)/2)-1+MOD(IA,2)
11243               MINT(20+JT)=ISIGN(IB,I)
11244             ENDIF
11245   430     CONTINUE
11246           KCC=22
11247           KFRES=KFHIGG
11248  
11249         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
11250 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
11251           IF(MINT(15).EQ.22) JS=2
11252           MINT(23-JS)=21
11253           KCC=24+JS
11254           KCS=ISIGN(1,MINT(14+JS))
11255  
11256         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
11257 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
11258           IF(MINT(15).EQ.22) JS=2
11259           KCC=22
11260           KCS=ISIGN(1,MINT(14+JS))
11261  
11262         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
11263 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
11264           KCS=(-1)**INT(1.5D0+PYR(0))
11265           MINT(21)=ISIGN(KFLF,KCS)
11266           MINT(22)=-MINT(21)
11267           KCC=27
11268           IF(MINT(16).EQ.21) KCC=28
11269  
11270         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
11271 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
11272           KCS=(-1)**INT(1.5D0+PYR(0))
11273           MINT(21)=ISIGN(KFLF,KCS)
11274           MINT(22)=-MINT(21)
11275           KCC=21
11276  
11277         ENDIF
11278  
11279       ELSEIF(ISUB.LE.160) THEN
11280         IF(ISUB.EQ.141) THEN
11281 C...f + fbar -> gamma*/Z0/Z'0
11282           KFRES=32
11283  
11284         ELSEIF(ISUB.EQ.142) THEN
11285 C...f + fbar' -> W'+/-
11286           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11287           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11288           KFRES=ISIGN(34,KCH1+KCH2)
11289  
11290         ELSEIF(ISUB.EQ.143) THEN
11291 C...f + fbar' -> H+/-
11292           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11293           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11294           KFRES=ISIGN(37,KCH1+KCH2)
11295  
11296         ELSEIF(ISUB.EQ.144) THEN
11297 C...f + fbar' -> R
11298           KFRES=ISIGN(41,MINT(15)+MINT(16))
11299  
11300         ELSEIF(ISUB.EQ.145) THEN
11301 C...q + l -> LQ (leptoquark)
11302           IF(IABS(MINT(16)).LE.8) JS=2
11303           KFRES=ISIGN(42,MINT(14+JS))
11304           KCC=28+JS
11305           KCS=ISIGN(1,MINT(14+JS))
11306  
11307         ELSEIF(ISUB.EQ.146) THEN
11308 C...e + gamma -> e* (excited lepton)
11309           IF(MINT(15).EQ.22) JS=2
11310           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11311           KCC=22
11312  
11313         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
11314 C...q + g -> q* (excited quark)
11315           IF(MINT(15).EQ.21) JS=2
11316           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11317           KCC=30+JS
11318           KCS=ISIGN(1,MINT(14+JS))
11319  
11320         ELSEIF(ISUB.EQ.149) THEN
11321 C...g + g -> eta_tc
11322           KFRES=KTECHN+331
11323           KCC=23
11324           KCS=(-1)**INT(1.5D0+PYR(0))
11325         ENDIF
11326  
11327       ELSEIF(ISUB.LE.200) THEN
11328         IF(ISUB.EQ.161) THEN
11329 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
11330           IF(MINT(15).EQ.21) JS=2
11331           I=MINT(14+JS)
11332           IA=IABS(I)
11333           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
11334           IB=IA+MOD(IA,2)-MOD(IA+1,2)
11335           MINT(20+JS)=ISIGN(IB,I)
11336           KCC=15+JS
11337           KCS=ISIGN(1,MINT(14+JS))
11338  
11339         ELSEIF(ISUB.EQ.162) THEN
11340 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
11341           IF(MINT(15).EQ.21) JS=2
11342           MINT(20+JS)=ISIGN(42,MINT(14+JS))
11343           KFLQL=KFDP(MDCY(42,2),2)
11344           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
11345           KCC=15+JS
11346           KCS=ISIGN(1,MINT(14+JS))
11347  
11348         ELSEIF(ISUB.EQ.163) THEN
11349 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
11350           KCS=(-1)**INT(1.5D0+PYR(0))
11351           MINT(21)=ISIGN(42,KCS)
11352           MINT(22)=-MINT(21)
11353           KCC=MINT(2)+10
11354  
11355         ELSEIF(ISUB.EQ.164) THEN
11356 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
11357           MINT(21)=ISIGN(42,MINT(15))
11358           MINT(22)=-MINT(21)
11359           KCC=4
11360  
11361         ELSEIF(ISUB.EQ.165) THEN
11362 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
11363           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11364           MINT(22)=-MINT(21)
11365  
11366         ELSEIF(ISUB.EQ.166) THEN
11367 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11368           IF(MOD(MINT(15),2).EQ.0) THEN
11369             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11370             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11371           ELSE
11372             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11373             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11374           ENDIF
11375  
11376         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
11377 C...q + q' -> q" + q* (excited quark)
11378           KFQSTR=KFPR(ISUB,2)
11379           KFQEXC=MOD(KFQSTR,KEXCIT)
11380           JS=MINT(2)
11381           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11382           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
11383      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11384           KCC=22
11385           JS=3-JS
11386  
11387         ELSEIF(ISUB.EQ.169) THEN
11388 C...q + qbar -> e + e* (excited lepton)
11389           KFQSTR=KFPR(ISUB,2)
11390           KFQEXC=MOD(KFQSTR,KEXCIT)
11391           JS=MINT(2)
11392           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11393           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11394           JS=3-JS
11395  
11396         ELSEIF(ISUB.EQ.191) THEN
11397 C...f + fbar -> rho_tc0.
11398           KFRES=KTECHN+113
11399  
11400         ELSEIF(ISUB.EQ.192) THEN
11401 C...f + fbar' -> rho_tc+/-
11402           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11403           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11404           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
11405  
11406         ELSEIF(ISUB.EQ.193) THEN
11407 C...f + fbar -> omega_tc0.
11408           KFRES=KTECHN+223
11409  
11410         ELSEIF(ISUB.EQ.194) THEN
11411 C...f + fbar -> f' + fbar' via mixture of s-channel
11412 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
11413           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11414           MINT(22)=-MINT(21)
11415  
11416         ELSEIF(ISUB.EQ.195) THEN
11417 C...f + fbar' -> f'' + fbar''' via s-channel
11418 C...rho_tc+ th=(p(f)-p(f'))**2
11419 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11420           IF(MOD(MINT(15),2).EQ.0) THEN
11421             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11422             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11423           ELSE
11424             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11425             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11426           ENDIF
11427         ENDIF
11428  
11429 CMRENNA++
11430       ELSEIF(ISUB.LE.215) THEN
11431         IF(ISUB.EQ.201) THEN
11432 C...f + fbar -> ~e_L + ~e_Lbar
11433           MINT(21)=ISIGN(KSUSY1+11,KCS)
11434           MINT(22)=-MINT(21)
11435  
11436         ELSEIF(ISUB.EQ.202) THEN
11437 C...f + fbar -> ~e_R + ~e_Rbar
11438           MINT(21)=ISIGN(KSUSY2+11,KCS)
11439           MINT(22)=-MINT(21)
11440  
11441         ELSEIF(ISUB.EQ.203) THEN
11442 C...f + fbar -> ~e_L + ~e_Rbar
11443           IF(MINT(15).LT.0) JS=2
11444           IF(MINT(2).EQ.1) THEN
11445             MINT(20+JS)=KFPR(ISUB,1)
11446             MINT(23-JS)=-KFPR(ISUB,2)
11447           ELSE
11448             MINT(20+JS)=-KFPR(ISUB,1)
11449             MINT(23-JS)=KFPR(ISUB,2)
11450           ENDIF
11451  
11452         ELSEIF(ISUB.EQ.204) THEN
11453 C...f + fbar -> ~mu_L + ~mu_Lbar
11454           MINT(21)=ISIGN(KSUSY1+13,KCS)
11455           MINT(22)=-MINT(21)
11456  
11457         ELSEIF(ISUB.EQ.205) THEN
11458 C...f + fbar -> ~mu_R + ~mu_Rbar
11459           MINT(21)=ISIGN(KSUSY2+13,KCS)
11460           MINT(22)=-MINT(21)
11461  
11462         ELSEIF(ISUB.EQ.206) THEN
11463 C...f + fbar -> ~mu_L + ~mu_Rbar
11464           IF(MINT(15).LT.0) JS=2
11465           IF(MINT(2).EQ.1) THEN
11466             MINT(20+JS)=KFPR(ISUB,1)
11467             MINT(23-JS)=-KFPR(ISUB,2)
11468           ELSE
11469             MINT(20+JS)=-KFPR(ISUB,1)
11470             MINT(23-JS)=KFPR(ISUB,2)
11471           ENDIF
11472  
11473         ELSEIF(ISUB.EQ.207) THEN
11474 C...f + fbar -> ~tau_1 + ~tau_1bar
11475           MINT(21)=ISIGN(KSUSY1+15,KCS)
11476           MINT(22)=-MINT(21)
11477  
11478         ELSEIF(ISUB.EQ.208) THEN
11479 C...f + fbar -> ~tau_2 + ~tau_2bar
11480           MINT(21)=ISIGN(KSUSY2+15,KCS)
11481           MINT(22)=-MINT(21)
11482  
11483         ELSEIF(ISUB.EQ.209) THEN
11484 C...f + fbar -> ~tau_1 + ~tau_2bar
11485           IF(MINT(15).LT.0) JS=2
11486           IF(MINT(2).EQ.1) THEN
11487             MINT(20+JS)=KFPR(ISUB,1)
11488             MINT(23-JS)=-KFPR(ISUB,2)
11489           ELSE
11490             MINT(20+JS)=-KFPR(ISUB,1)
11491             MINT(23-JS)=KFPR(ISUB,2)
11492           ENDIF
11493  
11494         ELSEIF(ISUB.EQ.210) THEN
11495 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
11496           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11497           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11498           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
11499           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
11500  
11501         ELSEIF(ISUB.EQ.211) THEN
11502 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
11503           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11504           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11505           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
11506           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11507  
11508         ELSEIF(ISUB.EQ.212) THEN
11509 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
11510           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11511           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11512           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
11513           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11514  
11515         ELSEIF(ISUB.EQ.213) THEN
11516 C...f + fbar -> ~nul + ~nulbar
11517           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11518           MINT(22)=-MINT(21)
11519  
11520         ELSEIF(ISUB.EQ.214) THEN
11521 C...f + fbar -> ~nutau + ~nutaubar
11522           MINT(21)=ISIGN(KSUSY1+16,KCS)
11523           MINT(22)=-MINT(21)
11524         ENDIF
11525  
11526       ELSEIF(ISUB.LE.225) THEN
11527         IF(ISUB.EQ.216) THEN
11528 C...f + fbar -> ~chi01 + ~chi01
11529           MINT(21)=KSUSY1+22
11530           MINT(22)=KSUSY1+22
11531  
11532         ELSEIF(ISUB.EQ.217) THEN
11533 C...f + fbar -> ~chi02 + ~chi02
11534           MINT(21)=KSUSY1+23
11535           MINT(22)=KSUSY1+23
11536  
11537         ELSEIF(ISUB.EQ.218 ) THEN
11538 C...f + fbar -> ~chi03 + ~chi03
11539           MINT(21)=KSUSY1+25
11540           MINT(22)=KSUSY1+25
11541  
11542         ELSEIF(ISUB.EQ.219 ) THEN
11543 C...f + fbar -> ~chi04 + ~chi04
11544           MINT(21)=KSUSY1+35
11545           MINT(22)=KSUSY1+35
11546  
11547         ELSEIF(ISUB.EQ.220 ) THEN
11548 C...f + fbar -> ~chi01 + ~chi02
11549           IF(MINT(15).LT.0) JS=2
11550 C          IF(PYR(0).GT.0.5D0) JS=2
11551           MINT(20+JS)=KSUSY1+22
11552           MINT(23-JS)=KSUSY1+23
11553  
11554         ELSEIF(ISUB.EQ.221 ) THEN
11555 C...f + fbar -> ~chi01 + ~chi03
11556           IF(MINT(15).LT.0) JS=2
11557 C          IF(PYR(0).GT.0.5D0) JS=2
11558           MINT(20+JS)=KSUSY1+22
11559           MINT(23-JS)=KSUSY1+25
11560  
11561         ELSEIF(ISUB.EQ.222) THEN
11562 C...f + fbar -> ~chi01 + ~chi04
11563           IF(MINT(15).LT.0) JS=2
11564 C          IF(PYR(0).GT.0.5D0) JS=2
11565           MINT(20+JS)=KSUSY1+22
11566           MINT(23-JS)=KSUSY1+35
11567  
11568         ELSEIF(ISUB.EQ.223) THEN
11569 C...f + fbar -> ~chi02 + ~chi03
11570           IF(MINT(15).LT.0) JS=2
11571 C          IF(PYR(0).GT.0.5D0) JS=2
11572           MINT(20+JS)=KSUSY1+23
11573           MINT(23-JS)=KSUSY1+25
11574  
11575         ELSEIF(ISUB.EQ.224) THEN
11576 C...f + fbar -> ~chi02 + ~chi04
11577           IF(MINT(15).LT.0) JS=2
11578 C          IF(PYR(0).GT.0.5D0) JS=2
11579           MINT(20+JS)=KSUSY1+23
11580           MINT(23-JS)=KSUSY1+35
11581  
11582         ELSEIF(ISUB.EQ.225) THEN
11583 C...f + fbar -> ~chi03 + ~chi04
11584           IF(MINT(15).LT.0) JS=2
11585 C          IF(PYR(0).GT.0.5D0) JS=2
11586           MINT(20+JS)=KSUSY1+25
11587           MINT(23-JS)=KSUSY1+35
11588         ENDIF
11589  
11590       ELSEIF(ISUB.LE.236) THEN
11591         IF(ISUB.EQ.226) THEN
11592 C...f + fbar -> ~chi+-1 + ~chi-+1
11593 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
11594           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11595           MINT(21)=ISIGN(KSUSY1+24,KCH1)
11596           MINT(22)=-MINT(21)
11597  
11598         ELSEIF(ISUB.EQ.227) THEN
11599 C...f + fbar -> ~chi+-2 + ~chi-+2
11600           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11601           MINT(21)=ISIGN(KSUSY1+37,KCH1)
11602           MINT(22)=-MINT(21)
11603  
11604         ELSEIF(ISUB.EQ.228) THEN
11605 C...f + fbar -> ~chi+-1 + ~chi-+2
11606 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
11607 C...js=1 if pyr<.5, js=2 if pyr>.5
11608 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
11609 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
11610 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
11611 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
11612           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11613           KCH2=INT(1-KCH1)/2
11614           IF(MINT(2).EQ.1) THEN
11615             MINT(21)= ISIGN(KSUSY1+24,KCH1)
11616             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
11617 c            IF(KCH2.EQ.0) JS=2
11618           ELSE
11619             MINT(21)= ISIGN(KSUSY1+37,KCH1)
11620             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
11621             JS=2
11622 c            IF(KCH2.EQ.1) JS=2
11623           ENDIF
11624  
11625         ELSEIF(ISUB.EQ.229) THEN
11626 C...q + qbar' -> ~chi01 + ~chi+-1
11627 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
11628           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11629           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11630 C...CHECK THIS
11631           IF(MOD(MINT(15),2).EQ.0) JS=2
11632           MINT(20+JS)=KSUSY1+22
11633           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11634  
11635         ELSEIF(ISUB.EQ.230) THEN
11636 C...q + qbar' -> ~chi02 + ~chi+-1
11637           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11638           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11639           IF(MOD(MINT(15),2).EQ.0) JS=2
11640           MINT(20+JS)=KSUSY1+23
11641           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11642  
11643         ELSEIF(ISUB.EQ.231) THEN
11644 C...q + qbar' -> ~chi03 + ~chi+-1
11645           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11646           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11647           IF(MOD(MINT(15),2).EQ.0) JS=2
11648           MINT(20+JS)=KSUSY1+25
11649           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11650  
11651         ELSEIF(ISUB.EQ.232) THEN
11652 C...q + qbar' -> ~chi04 + ~chi+-1
11653           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11654           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11655           IF(MOD(MINT(15),2).EQ.0) JS=2
11656           MINT(20+JS)=KSUSY1+35
11657           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11658  
11659         ELSEIF(ISUB.EQ.233) THEN
11660 C...q + qbar' -> ~chi01 + ~chi+-2
11661           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11662           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11663           IF(MOD(MINT(15),2).EQ.0) JS=2
11664           MINT(20+JS)=KSUSY1+22
11665           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11666  
11667         ELSEIF(ISUB.EQ.234) THEN
11668 C...q + qbar' -> ~chi02 + ~chi+-2
11669           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11670           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11671           IF(MOD(MINT(15),2).EQ.0) JS=2
11672           MINT(20+JS)=KSUSY1+23
11673           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11674  
11675         ELSEIF(ISUB.EQ.235) THEN
11676 C...q + qbar' -> ~chi03 + ~chi+-2
11677           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11678           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11679           IF(MOD(MINT(15),2).EQ.0) JS=2
11680           MINT(20+JS)=KSUSY1+25
11681           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11682  
11683         ELSEIF(ISUB.EQ.236) THEN
11684 C...q + qbar' -> ~chi04 + ~chi+-2
11685           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11686           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11687           IF(MOD(MINT(15),2).EQ.0) JS=2
11688           MINT(20+JS)=KSUSY1+35
11689           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11690         ENDIF
11691  
11692       ELSEIF(ISUB.LE.245) THEN
11693         IF(ISUB.EQ.237) THEN
11694 C...q + qbar -> ~chi01 + ~g
11695 C...th arbitrary
11696           IF(PYR(0).GT.0.5D0) JS=2
11697           MINT(20+JS)=KSUSY1+21
11698           MINT(23-JS)=KSUSY1+22
11699           KCC=17+JS
11700  
11701         ELSEIF(ISUB.EQ.238) THEN
11702 C...q + qbar -> ~chi02 + ~g
11703 C...th arbitrary
11704           IF(PYR(0).GT.0.5D0) JS=2
11705           MINT(20+JS)=KSUSY1+21
11706           MINT(23-JS)=KSUSY1+23
11707           KCC=17+JS
11708  
11709         ELSEIF(ISUB.EQ.239) THEN
11710 C...q + qbar -> ~chi03 + ~g
11711 C...th arbitrary
11712           IF(PYR(0).GT.0.5D0) JS=2
11713           MINT(20+JS)=KSUSY1+21
11714           MINT(23-JS)=KSUSY1+25
11715           KCC=17+JS
11716  
11717         ELSEIF(ISUB.EQ.240) THEN
11718 C...q + qbar -> ~chi04 + ~g
11719 C...th arbitrary
11720           IF(PYR(0).GT.0.5D0) JS=2
11721           MINT(20+JS)=KSUSY1+21
11722           MINT(23-JS)=KSUSY1+35
11723           KCC=17+JS
11724  
11725         ELSEIF(ISUB.EQ.241) THEN
11726 C...q + qbar' -> ~chi+-1 + ~g
11727 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
11728 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
11729 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
11730 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
11731 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
11732           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11733           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11734           JS=1
11735           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
11736           MINT(20+JS)=KSUSY1+21
11737           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11738           KCC=17+JS
11739  
11740         ELSEIF(ISUB.EQ.242) THEN
11741 C...q + qbar' -> ~chi+-2 + ~g
11742 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
11743 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
11744 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
11745 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
11746 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
11747           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11748           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11749           JS=1
11750           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
11751           MINT(20+JS)=KSUSY1+21
11752           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11753           KCC=17+JS
11754  
11755         ELSEIF(ISUB.EQ.243) THEN
11756 C...q + qbar -> ~g + ~g ; th arbitrary
11757           MINT(21)=KSUSY1+21
11758           MINT(22)=KSUSY1+21
11759           KCC=MINT(2)+4
11760  
11761         ELSEIF(ISUB.EQ.244) THEN
11762 C...g + g -> ~g + ~g ; th arbitrary
11763           KCC=MINT(2)+12
11764           KCS=(-1)**INT(1.5D0+PYR(0))
11765           MINT(21)=KSUSY1+21
11766           MINT(22)=KSUSY1+21
11767         ENDIF
11768  
11769       ELSEIF(ISUB.LE.260) THEN
11770         IF(ISUB.EQ.246) THEN
11771 C...qj + g -> ~qj_L + ~chi01
11772           IF(MINT(15).EQ.21) JS=2
11773           I=MINT(14+JS)
11774           IA=IABS(I)
11775           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11776           MINT(23-JS)=KSUSY1+22
11777           KCC=15+JS
11778           KCS=ISIGN(1,MINT(14+JS))
11779  
11780         ELSEIF(ISUB.EQ.247) THEN
11781 C...qj + g -> ~qj_R + ~chi01
11782           IF(MINT(15).EQ.21) JS=2
11783           I=MINT(14+JS)
11784           IA=IABS(I)
11785           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11786           MINT(23-JS)=KSUSY1+22
11787           KCC=15+JS
11788           KCS=ISIGN(1,MINT(14+JS))
11789  
11790         ELSEIF(ISUB.EQ.248) THEN
11791 C...qj + g -> ~qj_L + ~chi02
11792           IF(MINT(15).EQ.21) JS=2
11793           I=MINT(14+JS)
11794           IA=IABS(I)
11795           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11796           MINT(23-JS)=KSUSY1+23
11797           KCC=15+JS
11798           KCS=ISIGN(1,MINT(14+JS))
11799  
11800         ELSEIF(ISUB.EQ.249) THEN
11801 C...qj + g -> ~qj_R + ~chi02
11802           IF(MINT(15).EQ.21) JS=2
11803           I=MINT(14+JS)
11804           IA=IABS(I)
11805           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11806           MINT(23-JS)=KSUSY1+23
11807           KCC=15+JS
11808           KCS=ISIGN(1,MINT(14+JS))
11809  
11810         ELSEIF(ISUB.EQ.250) THEN
11811 C...qj + g -> ~qj_L + ~chi03
11812           IF(MINT(15).EQ.21) JS=2
11813           I=MINT(14+JS)
11814           IA=IABS(I)
11815           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11816           MINT(23-JS)=KSUSY1+25
11817           KCC=15+JS
11818           KCS=ISIGN(1,MINT(14+JS))
11819  
11820         ELSEIF(ISUB.EQ.251) THEN
11821 C...qj + g -> ~qj_R + ~chi03
11822           IF(MINT(15).EQ.21) JS=2
11823           I=MINT(14+JS)
11824           IA=IABS(I)
11825           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11826           MINT(23-JS)=KSUSY1+25
11827           KCC=15+JS
11828           KCS=ISIGN(1,MINT(14+JS))
11829  
11830         ELSEIF(ISUB.EQ.252) THEN
11831 C...qj + g -> ~qj_L + ~chi04
11832           IF(MINT(15).EQ.21) JS=2
11833           I=MINT(14+JS)
11834           IA=IABS(I)
11835           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11836           MINT(23-JS)=KSUSY1+35
11837           KCC=15+JS
11838           KCS=ISIGN(1,MINT(14+JS))
11839  
11840         ELSEIF(ISUB.EQ.253) THEN
11841 C...qj + g -> ~qj_R + ~chi04
11842           IF(MINT(15).EQ.21) JS=2
11843           I=MINT(14+JS)
11844           IA=IABS(I)
11845           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11846           MINT(23-JS)=KSUSY1+35
11847           KCC=15+JS
11848           KCS=ISIGN(1,MINT(14+JS))
11849  
11850         ELSEIF(ISUB.EQ.254) THEN
11851 C...qj + g -> ~qk_L + ~chi+-1
11852           IF(MINT(15).EQ.21) JS=2
11853           I=MINT(14+JS)
11854           IA=IABS(I)
11855           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
11856           IB=-IA+INT((IA+1)/2)*4-1
11857           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
11858           KCC=15+JS
11859           KCS=ISIGN(1,MINT(14+JS))
11860  
11861         ELSEIF(ISUB.EQ.255) THEN
11862 C...qj + g -> ~qk_L + ~chi+-1
11863           IF(MINT(15).EQ.21) JS=2
11864           I=MINT(14+JS)
11865           IA=IABS(I)
11866           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
11867           IB=-IA+INT((IA+1)/2)*4-1
11868           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
11869           KCC=15+JS
11870           KCS=ISIGN(1,MINT(14+JS))
11871  
11872         ELSEIF(ISUB.EQ.256) THEN
11873 C...qj + g -> ~qk_L + ~chi+-2
11874           IF(MINT(15).EQ.21) JS=2
11875           I=MINT(14+JS)
11876           IA=IABS(I)
11877           IB=-IA+INT((IA+1)/2)*4-1
11878           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
11879           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
11880           KCC=15+JS
11881           KCS=ISIGN(1,MINT(14+JS))
11882  
11883         ELSEIF(ISUB.EQ.257) THEN
11884 C...qj + g -> ~qk_R + ~chi+-2
11885           IF(MINT(15).EQ.21) JS=2
11886           I=MINT(14+JS)
11887           IA=IABS(I)
11888           IB=-IA+INT((IA+1)/2)*4-1
11889           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
11890           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
11891           KCC=15+JS
11892           KCS=ISIGN(1,MINT(14+JS))
11893  
11894         ELSEIF(ISUB.EQ.258) THEN
11895 C...qj + g -> ~qj_L + ~g
11896           IF(MINT(15).EQ.21) JS=2
11897           I=MINT(14+JS)
11898           IA=IABS(I)
11899           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
11900           MINT(23-JS)=KSUSY1+21
11901           KCC=MINT(2)+6
11902           IF(JS.EQ.2) KCC=KCC+2
11903           KCS=ISIGN(1,I)
11904  
11905         ELSEIF(ISUB.EQ.259) THEN
11906 C...qj + g -> ~qj_R + ~g
11907           IF(MINT(15).EQ.21) JS=2
11908           I=MINT(14+JS)
11909           IA=IABS(I)
11910           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
11911           MINT(23-JS)=KSUSY1+21
11912           KCC=MINT(2)+6
11913           IF(JS.EQ.2) KCC=KCC+2
11914           KCS=ISIGN(1,I)
11915         ENDIF
11916  
11917       ELSEIF(ISUB.LE.270) THEN
11918         IF(ISUB.EQ.261) THEN
11919 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
11920           ISGN=1
11921           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
11922           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
11923           MINT(22)=-MINT(21)
11924 C...Correct color combination
11925           IF(MINT(43).EQ.4) KCC=4
11926  
11927         ELSEIF(ISUB.EQ.262) THEN
11928 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
11929           ISGN=1
11930           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
11931           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
11932           MINT(22)=-MINT(21)
11933 C...Correct color combination
11934           IF(MINT(43).EQ.4) KCC=4
11935  
11936         ELSEIF(ISUB.EQ.263) THEN
11937 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
11938           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
11939      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
11940             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11941             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
11942           ELSE
11943             JS=2
11944             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
11945             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
11946           ENDIF
11947 C...Correct color combination
11948           IF(MINT(43).EQ.4) KCC=4
11949  
11950         ELSEIF(ISUB.EQ.264) THEN
11951 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
11952           KCS=(-1)**INT(1.5D0+PYR(0))
11953           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11954           MINT(22)=-MINT(21)
11955           KCC=MINT(2)+10
11956  
11957         ELSEIF(ISUB.EQ.265) THEN
11958 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
11959           KCS=(-1)**INT(1.5D0+PYR(0))
11960           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11961           MINT(22)=-MINT(21)
11962           KCC=MINT(2)+10
11963         ENDIF
11964  
11965       ELSEIF(ISUB.LE.296) THEN
11966         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
11967 C...qi + qj -> ~qi_L + ~qj_L
11968           KCC=MINT(2)
11969           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11970           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
11971           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
11972  
11973         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
11974 C...qi + qj -> ~qi_R + ~qj_R
11975           KCC=MINT(2)
11976           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11977           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
11978           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
11979  
11980         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
11981 C...qi + qj -> ~qi_L + ~qj_R
11982           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11983           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
11984           KCC=MINT(2)
11985           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11986  
11987         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
11988 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
11989           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
11990           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
11991           KCC=MINT(2)
11992           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
11993  
11994         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
11995 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
11996           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
11997           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
11998           KCC=MINT(2)
11999           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12000  
12001         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
12002 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
12003           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
12004           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12005           KCC=MINT(2)
12006           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12007  
12008         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
12009 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
12010           ISGN=1
12011           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12012           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12013           MINT(22)=-MINT(21)
12014           IF(MINT(43).EQ.4) KCC=4
12015  
12016         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
12017 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
12018           ISGN=1
12019           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12020           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12021           MINT(22)=-MINT(21)
12022           IF(MINT(43).EQ.4) KCC=4
12023  
12024         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
12025 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
12026 C...pure LL + RR
12027           KCS=(-1)**INT(1.5D0+PYR(0))
12028           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12029           MINT(22)=-MINT(21)
12030           KCC=MINT(2)+10
12031  
12032         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
12033 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
12034           KCS=(-1)**INT(1.5D0+PYR(0))
12035           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12036           MINT(22)=-MINT(21)
12037           KCC=MINT(2)+10
12038  
12039         ELSEIF(ISUB.EQ.294) THEN
12040 C...qj + g -> ~qj_L + ~g
12041           IF(MINT(15).EQ.21) JS=2
12042           I=MINT(14+JS)
12043           IA=IABS(I)
12044           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12045           MINT(23-JS)=KSUSY1+21
12046           KCC=MINT(2)+6
12047           IF(JS.EQ.2) KCC=KCC+2
12048           KCS=ISIGN(1,I)
12049  
12050         ELSEIF(ISUB.EQ.295) THEN
12051 C...qj + g -> ~qj_R + ~g
12052           IF(MINT(15).EQ.21) JS=2
12053           I=MINT(14+JS)
12054           IA=IABS(I)
12055           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12056           MINT(23-JS)=KSUSY1+21
12057           KCC=MINT(2)+6
12058           IF(JS.EQ.2) KCC=KCC+2
12059           KCS=ISIGN(1,I)
12060         ENDIF
12061  
12062       ELSEIF(ISUB.LE.340) THEN
12063  
12064         IF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
12065 C...q + qbar' -> H+ + H0
12066           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12067           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12068           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12069           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
12070           MINT(23-JS)=KFPR(ISUB,2)
12071         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
12072 C...f + fbar -> A0 + H0; th arbitrary
12073           IF(PYR(0).GT.0.5D0) JS=2
12074           MINT(20+JS)=KFPR(ISUB,1)
12075           MINT(23-JS)=KFPR(ISUB,2)
12076         ELSEIF(ISUB.EQ.301) THEN
12077 C...f + fbar -> H+ H-
12078           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12079           MINT(22)=-MINT(21)
12080         ENDIF
12081 CMRENNA--
12082  
12083       ELSEIF(ISUB.LE.360) THEN
12084  
12085         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
12086 C...l + l -> H_L++/--, H_R++/--
12087           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12088           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12089           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12090  
12091         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
12092 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
12093           IF(MINT(15).EQ.22) JS=2
12094           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
12095           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
12096           KCC=22
12097  
12098         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
12099 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
12100           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
12101           MINT(22)=-MINT(21)
12102  
12103         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
12104 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
12105 C...as inner process).
12106           DO 450 JT=1,2
12107             I=MINT(14+JT)
12108             IA=IABS(I)
12109             IF(IA.LE.10) THEN
12110               RVCKM=VINT(180+I)*PYR(0)
12111               DO 440 J=1,MSTP(1)
12112                 IB=2*J-1+MOD(IA,2)
12113                 IPM=(5-ISIGN(1,I))/2
12114                 IDC=J+MDCY(IA,2)+2
12115                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
12116                 MINT(20+JT)=ISIGN(IB,I)
12117                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
12118                 IF(RVCKM.LE.0D0) GOTO 450
12119   440         CONTINUE
12120             ELSE
12121               IB=2*((IA+1)/2)-1+MOD(IA,2)
12122               MINT(20+JT)=ISIGN(IB,I)
12123             ENDIF
12124   450     CONTINUE
12125           KCC=22
12126           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
12127           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
12128  
12129         ELSEIF(ISUB.EQ.353) THEN
12130 C...f + fbar -> Z_R0
12131           KFRES=KFPR(ISUB,1)
12132  
12133         ELSEIF(ISUB.EQ.354) THEN
12134 C...f + fbar' -> W+/-
12135           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12136           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12137           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12138  
12139         ENDIF
12140  
12141       ELSEIF(ISUB.LE.380) THEN
12142  
12143         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
12144 C...f + fbar -> charged+ charged- technicolor
12145           KSW=(-1)**INT(1.5D0+PYR(0))
12146           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
12147           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
12148  
12149         ELSEIF(ISUB.LE.367.OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
12150 C...f + fbar -> neutral neutral technicolor
12151           MINT(21)=KFPR(ISUB,1)
12152           MINT(22)=KFPR(ISUB,2)
12153  
12154         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375.OR.ISUB.EQ.378) THEN
12155 C...f + fbar' -> neutral charged technicolor
12156           IN=1
12157           IC=2
12158           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12159           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12160           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
12161           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12162           MINT(20+JS)=KFPR(ISUB,IN)
12163  
12164         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
12165 C...f + fbar' -> charged neutral technicolor
12166           IN=2
12167           IC=1
12168           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12169           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12170           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12171           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12172           MINT(23-JS)=KFPR(ISUB,IN)
12173         ENDIF
12174  
12175       ELSEIF(ISUB.LE.400) THEN
12176         IF(ISUB.EQ.381) THEN
12177 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
12178           KCC=MINT(2)
12179           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12180  
12181         ELSEIF(ISUB.EQ.382) THEN
12182 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
12183           MINT(21)=ISIGN(KFLF,MINT(15))
12184           MINT(22)=-MINT(21)
12185           KCC=4
12186  
12187         ELSEIF(ISUB.EQ.383) THEN
12188 C...f + fbar -> g + g; th arbitrary, TC extensions
12189           MINT(21)=21
12190           MINT(22)=21
12191           KCC=MINT(2)+4
12192  
12193         ELSEIF(ISUB.EQ.384) THEN
12194 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
12195           IF(MINT(15).EQ.21) JS=2
12196           KCC=MINT(2)+6
12197           IF(MINT(15).EQ.21) KCC=KCC+2
12198           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12199           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12200  
12201         ELSEIF(ISUB.EQ.385) THEN
12202 C...g + g -> f + fbar; th arbitrary, TC extensions
12203           KCS=(-1)**INT(1.5D0+PYR(0))
12204           MINT(21)=ISIGN(KFLF,KCS)
12205           MINT(22)=-MINT(21)
12206           KCC=MINT(2)+10
12207  
12208         ELSEIF(ISUB.EQ.386) THEN
12209 C...g + g -> g + g; th arbitrary, TC extensions
12210           KCC=MINT(2)+12
12211           KCS=(-1)**INT(1.5D0+PYR(0))
12212  
12213         ELSEIF(ISUB.EQ.387) THEN
12214 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
12215           MINT(21)=ISIGN(MINT(55),MINT(15))
12216           MINT(22)=-MINT(21)
12217           KCC=4
12218  
12219         ELSEIF(ISUB.EQ.388) THEN
12220 C...g + g -> Q + Qbar; th arbitrary, TC extensions
12221           KCS=(-1)**INT(1.5D0+PYR(0))
12222           MINT(21)=ISIGN(MINT(55),KCS)
12223           MINT(22)=-MINT(21)
12224           KCC=MINT(2)+10
12225  
12226         ELSEIF(ISUB.EQ.391) THEN
12227 C...f + fbar -> G*.
12228           KFRES=KFPR(ISUB,1)
12229  
12230         ELSEIF(ISUB.EQ.392) THEN
12231 C...g + g -> G*.
12232           KCC=21
12233           KFRES=KFPR(ISUB,1)
12234  
12235         ELSEIF(ISUB.EQ.393) THEN
12236 C...q + qbar -> g + G*;  th arbitrary.
12237           IF(PYR(0).GT.0.5D0) JS=2
12238           MINT(20+JS)=KFPR(ISUB,1)
12239           MINT(23-JS)=KFPR(ISUB,2)
12240           KCC=17+JS
12241  
12242         ELSEIF(ISUB.EQ.394) THEN
12243 C...q + g -> q + G*;  th = (p(f) - p(f))**2
12244           IF(MINT(15).EQ.21) JS=2
12245           MINT(23-JS)=KFPR(ISUB,2)
12246           KCC=15+JS
12247           KCS=ISIGN(1,MINT(14+JS))
12248  
12249         ELSEIF(ISUB.EQ.395) THEN
12250 C...g + g -> G* + g;  th arbitrary.
12251           IF(PYR(0).GT.0.5D0) JS=2
12252           MINT(23-JS)=KFPR(ISUB,2)
12253           KCC=22+JS
12254         ENDIF
12255  
12256       ELSEIF(ISUB.LE.420) THEN
12257         IF(ISUB.EQ.401) THEN
12258 C...g + g -> t + b + H+/-
12259           KCS=(-1)**INT(1.5D0+PYR(0))
12260           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
12261           MINT(22)=ISIGN(5,-KCS)
12262           KCC=11+INT(0.5D0+PYR(0))
12263           KFRES=ISIGN(KFHIGG,-KCS)
12264  
12265         ELSEIF(ISUB.EQ.402) THEN
12266 C...q + qbar -> t + b + H+/-
12267           KFL=(-1)**INT(1.5D0+PYR(0))
12268           MINT(21)=ISIGN(INT(6.+.5*KFL),KCS)
12269           MINT(22)=ISIGN(INT(6.-.5*KFL),-KCS)
12270           KCC=4
12271           KFRES=ISIGN(KFHIGG,-KFL*KCS)
12272         ENDIF
12273  
12274 C...QUARKONIA+++
12275 C...Additional code by Stefan Wolf
12276       ELSEIF(ISUB.LE.430) THEN
12277         IF(ISUB.GE.421.AND.ISUB.LE.424) THEN
12278 C...g + g -> QQ~[n] + g
12279 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12280 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12281 C...KCC and KCS copied from ISUB.EQ.86-89 (for ISUB.EQ.421)
12282 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12283 C...or from ISUB.EQ.68 (for ISUB.NE.421)
12284 C...[g + g -> g + g; th arbitrary]
12285           MINT(21)=KFPR(ISUBSV,1)
12286           MINT(22)=KFPR(ISUBSV,2)
12287           IF(ISUB.EQ.421) THEN
12288              KCC=24
12289              KCS=(-1)**INT(1.5D0+PYR(0))
12290           ELSE
12291              KCC=MINT(2)+12
12292              KCS=(-1)**INT(1.5D0+PYR(0))
12293           ENDIF
12294  
12295         ELSEIF(ISUB.GE.425.AND.ISUB.LE.427) THEN
12296 C...q + g -> q + QQ~[n]
12297 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12298 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12299 C...KCC copied from ISUB.EQ.28
12300 C...[f + g -> f + g;  th = (p(f)-p(f))**2; (q + g -> q + g  only)]
12301           IF(MINT(15).EQ.21) JS=2
12302           MINT(23-JS)=KFPR(ISUBSV,2)
12303           KCC=MINT(2)+6
12304           IF(MINT(15).EQ.21) KCC=KCC+2
12305           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12306           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12307  
12308         ELSEIF(ISUB.GE.428.AND.ISUB.LE.430) THEN
12309 C...q + q~ -> g + QQ~[n]
12310 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12311 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12312 C...KCC copied from ISUB.EQ.13
12313 C...[f + fbar -> g + g;  th arbitrary; (q + qbar -> g + g  only)]
12314           IF(PYR(0).GT.0.5) JS=2
12315           MINT(20+JS)=21
12316           MINT(23-JS)=KFPR(ISUBSV,2)
12317           KCC=MINT(2)+4
12318         ENDIF
12319  
12320       ELSEIF(ISUB.LE.440) THEN
12321         IF(ISUB.GE.431.AND.ISUB.LE.433) THEN
12322 C...g + g -> QQ~[n] + g
12323 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12324 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12325 C...KCC and KCS copied from ISUB.EQ.86-89
12326 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12327           MINT(21)=KFPR(ISUBSV,1)
12328           MINT(22)=KFPR(ISUBSV,2)
12329           KCC=24
12330           KCS=(-1)**INT(1.5D0+PYR(0))
12331  
12332         ELSEIF(ISUB.GE.434.AND.ISUB.LE.436) THEN
12333 C...q + g -> q + QQ~[n]
12334 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12335 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12336 C...KCC and KCS copied from ISUB.EQ.112
12337 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12338           IF(MINT(15).EQ.21) JS=2
12339           MINT(23-JS)=KFPR(ISUBSV,2)
12340           KCC=15+JS
12341           KCS=ISIGN(1,MINT(14+JS))
12342  
12343         ELSEIF(ISUB.GE.437.AND.ISUB.LE.439) THEN
12344 C...q + q~ -> g + QQ~[n]
12345 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12346 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12347 C...KCC copied from ISUB.EQ.111
12348 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12349           IF(PYR(0).GT.0.5) JS=2
12350           MINT(20+JS)=21
12351           MINT(23-JS)=KFPR(ISUBSV,2)
12352           KCC=17+JS
12353         ENDIF
12354 C...QUARKONIA---
12355  
12356       ENDIF
12357  
12358       IF(ISET(ISUB).EQ.11) THEN
12359 C...Store documentation for user-defined processes
12360         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
12361         KUPPO(1)=MINT(83)+5
12362         KUPPO(2)=MINT(83)+6
12363         I=MINT(83)+6
12364         DO 470 IUP=3,NUP
12365           KUPPO(IUP)=0
12366           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
12367             IDOC=IDOC-1
12368             MINT(4)=MINT(4)-1
12369             GOTO 470
12370           ENDIF
12371           I=I+1
12372           KUPPO(IUP)=I
12373           K(I,1)=21
12374           K(I,2)=IDUP(IUP)
12375           IF(IDUP(IUP).EQ.0) K(I,2)=90
12376           K(I,3)=0
12377           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
12378           K(I,4)=0
12379           K(I,5)=0
12380           DO 460 J=1,5
12381             P(I,J)=PUP(J,IUP)
12382   460     CONTINUE
12383           V(I,5)=VTIMUP(IUP)
12384   470   CONTINUE
12385         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
12386      &  -BEZUP)
12387  
12388 C...Store final state partons for user-defined processes
12389         N=IPU2
12390         DO 490 IUP=3,NUP
12391           N=N+1
12392           K(N,1)=1
12393           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
12394           K(N,2)=IDUP(IUP)
12395           IF(IDUP(IUP).EQ.0) K(N,2)=90
12396           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
12397             K(N,3)=KUPPO(IUP)
12398           ELSE
12399             K(N,3)=MINT(84)+MOTHUP(1,IUP)
12400           ENDIF
12401           K(N,4)=0
12402           K(N,5)=0
12403 C...Search for daughters of intermediate colourless particles.
12404           IF(K(N,1).EQ.11.AND.KCHG(PYCOMP(K(N,2)),2).EQ.0) THEN
12405             DO 475 IUPDAU=IUP+1,NUP
12406               IF(MOTHUP(1,IUPDAU).EQ.IUP.AND.K(N,4).EQ.0) K(N,4)=
12407      &        N+IUPDAU-IUP
12408               IF(MOTHUP(1,IUPDAU).EQ.IUP) K(N,5)=N+IUPDAU-IUP
12409   475       CONTINUE
12410           ENDIF
12411           DO 480 J=1,5
12412             P(N,J)=PUP(J,IUP)
12413   480     CONTINUE
12414           V(N,5)=VTIMUP(IUP)
12415   490   CONTINUE
12416         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
12417  
12418 C...Arrange colour flow for user-defined processes
12419         NLBL=0
12420         DO 540 IUP1=1,NUP
12421           I1=MINT(84)+IUP1
12422           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
12423           IF(K(I1,1).EQ.1) K(I1,1)=3
12424           IF(K(I1,1).EQ.11) K(I1,1)=14
12425 C...Find a not yet considered colour/anticolour line.
12426           DO 530 ISDE1=1,2
12427             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
12428             NMAT=0
12429             DO 500 ILBL=1,NLBL
12430               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
12431   500       CONTINUE
12432             IF(NMAT.EQ.0) THEN
12433               NLBL=NLBL+1
12434               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
12435 C...Find all others belonging to same line.
12436               I3=I1
12437               I4=0
12438               DO 520 IUP2=IUP1+1,NUP
12439                 I2=MINT(84)+IUP2
12440                 DO 510 ISDE2=1,2
12441                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
12442                     IF(ISDE2.EQ.ISDE1) THEN
12443                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
12444                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
12445                       I3=I2
12446                     ELSEIF(I4.NE.0) THEN
12447                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
12448                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
12449                       I4=I2
12450                     ELSEIF(IUP2.LE.2) THEN
12451                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
12452                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
12453                       I4=I2
12454                     ELSE
12455                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
12456                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
12457                       I4=I2
12458                     ENDIF
12459                   ENDIF
12460   510           CONTINUE
12461   520         CONTINUE
12462             ENDIF
12463   530     CONTINUE
12464   540   CONTINUE
12465  
12466       ELSEIF(IDOC.EQ.7) THEN
12467 C...Resonance not decaying; store kinematics
12468         I=MINT(83)+7
12469         K(IPU3,1)=1
12470         K(IPU3,2)=KFRES
12471         K(IPU3,3)=I
12472         P(IPU3,4)=SHUSER
12473         P(IPU3,5)=SHUSER
12474         K(I,1)=21
12475         K(I,2)=KFRES
12476         P(I,4)=SHUSER
12477         P(I,5)=SHUSER
12478         N=IPU3
12479         MINT(21)=KFRES
12480         MINT(22)=0
12481  
12482 C...Special cases: colour flow in coloured resonances
12483         KCRES=PYCOMP(KFRES)
12484         IF(KCHG(KCRES,2).NE.0) THEN
12485           K(IPU3,1)=3
12486           DO 550 J=1,2
12487             JC=J
12488             IF(KCS.EQ.-1) JC=3-J
12489             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12490      &      MINT(84)+ICOL(KCC,1,JC)
12491             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12492      &      MINT(84)+ICOL(KCC,2,JC)
12493             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
12494      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12495   550     CONTINUE
12496         ELSE
12497           K(IPU1,4)=IPU2
12498           K(IPU1,5)=IPU2
12499           K(IPU2,4)=IPU1
12500           K(IPU2,5)=IPU1
12501         ENDIF
12502  
12503       ELSEIF(IDOC.EQ.8) THEN
12504 C...2 -> 2 processes: store outgoing partons in their CM-frame
12505         DO 560 JT=1,2
12506           I=MINT(84)+2+JT
12507           KCA=PYCOMP(MINT(20+JT))
12508           K(I,1)=1
12509           IF(KCHG(KCA,2).NE.0) K(I,1)=3
12510           K(I,2)=MINT(20+JT)
12511           K(I,3)=MINT(83)+IDOC+JT-2
12512           KFAA=IABS(K(I,2))
12513           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
12514             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
12515           ELSE
12516             P(I,5)=PYMASS(K(I,2))
12517           ENDIF
12518           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
12519      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
12520   560   CONTINUE
12521         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
12522           KFA1=IABS(MINT(21))
12523           KFA2=IABS(MINT(22))
12524           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
12525      &    THEN
12526             MINT(51)=1
12527             RETURN
12528           ENDIF
12529           P(IPU3,5)=0D0
12530           P(IPU4,5)=0D0
12531         ENDIF
12532         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
12533         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
12534         P(IPU4,4)=SHR-P(IPU3,4)
12535         P(IPU4,3)=-P(IPU3,3)
12536         N=IPU4
12537         MINT(7)=MINT(83)+7
12538         MINT(8)=MINT(83)+8
12539  
12540 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
12541         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
12542  
12543       ELSEIF(IDOC.EQ.9) THEN
12544 C...2 -> 3 processes: store outgoing partons in their CM frame
12545         DO 570 JT=1,2
12546           I=MINT(84)+2+JT
12547           KCA=PYCOMP(MINT(20+JT))
12548           K(I,1)=1
12549           IF(KCHG(KCA,2).NE.0) K(I,1)=3
12550           K(I,2)=MINT(20+JT)
12551           K(I,3)=MINT(83)+IDOC+JT-3
12552           JTA=JT
12553 C...t and b in opposide order in event list as compared to
12554 C...matrix element?
12555           IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) JTA=3-JT
12556           IF(IABS(K(I,2)).LE.22) THEN
12557             P(I,5)=PYMASS(K(I,2))
12558           ELSE
12559             P(I,5)=SQRT(VINT(63+MOD(JS+JTA,2)))
12560           ENDIF
12561           PT=SQRT(MAX(0D0,VINT(197+5*JTA)-P(I,5)**2+VINT(196+5*JTA)**2))
12562           P(I,1)=PT*COS(VINT(198+5*JTA))
12563           P(I,2)=PT*SIN(VINT(198+5*JTA))
12564   570   CONTINUE
12565         K(IPU5,1)=1
12566         K(IPU5,2)=KFRES
12567         K(IPU5,3)=MINT(83)+IDOC
12568         P(IPU5,5)=SHR
12569         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
12570         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
12571         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
12572         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
12573         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
12574         PMT3=SQRT(PMS3)
12575         P(IPU5,3)=PMT3*SINH(VINT(211))
12576         P(IPU5,4)=PMT3*COSH(VINT(211))
12577         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
12578         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
12579         IF(SQL12.LE.0D0) THEN
12580           MINT(51)=1
12581           RETURN
12582         ENDIF
12583         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
12584      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
12585         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
12586         IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) THEN
12587 C...t and b in opposide order in event list as compared to
12588 C...matrix element
12589           P(IPU4,3)=(-P(IPU5,3)*(PMS12+PMS2-PMS1)+
12590      &    VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
12591           P(IPU3,3)=-P(IPU4,3)-P(IPU5,3)
12592         END IF
12593         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
12594         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
12595         MINT(23)=KFRES
12596         N=IPU5
12597         MINT(7)=MINT(83)+7
12598         MINT(8)=MINT(83)+8
12599  
12600       ELSEIF(IDOC.EQ.11) THEN
12601 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
12602         PHI(1)=PARU(2)*PYR(0)
12603         PHI(2)=PHI(1)-PHIR
12604         DO 580 JT=1,2
12605           I=MINT(84)+2+JT
12606           K(I,1)=1
12607           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
12608           K(I,2)=MINT(20+JT)
12609           K(I,3)=MINT(83)+IDOC+JT-2
12610           P(I,5)=PYMASS(K(I,2))
12611           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
12612             MINT(51)=1
12613             RETURN
12614           ENDIF
12615           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
12616           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
12617           P(I,1)=PTABS*COS(PHI(JT))
12618           P(I,2)=PTABS*SIN(PHI(JT))
12619           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
12620           P(I,4)=0.5D0*SHPR*Z(JT)
12621           IZW=MINT(83)+6+JT
12622           K(IZW,1)=21
12623           K(IZW,2)=23
12624           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
12625           K(IZW,3)=IZW-2
12626           P(IZW,1)=-P(I,1)
12627           P(IZW,2)=-P(I,2)
12628           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
12629           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
12630           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
12631   580   CONTINUE
12632         I=MINT(83)+9
12633         K(IPU5,1)=1
12634         K(IPU5,2)=KFRES
12635         K(IPU5,3)=I
12636         P(IPU5,5)=SHR
12637         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
12638         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
12639         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
12640         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
12641         K(I,1)=21
12642         K(I,2)=KFRES
12643         DO 590 J=1,5
12644           P(I,J)=P(IPU5,J)
12645   590   CONTINUE
12646         N=IPU5
12647         MINT(23)=KFRES
12648  
12649       ELSEIF(IDOC.EQ.12) THEN
12650 C...Z0 and W+/- scattering: store bosons and outgoing partons
12651         PHI(1)=PARU(2)*PYR(0)
12652         PHI(2)=PHI(1)-PHIR
12653         JTRAN=INT(1.5D0+PYR(0))
12654         DO 600 JT=1,2
12655           I=MINT(84)+2+JT
12656           K(I,1)=1
12657           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
12658           K(I,2)=MINT(20+JT)
12659           K(I,3)=MINT(83)+IDOC+JT-2
12660           P(I,5)=PYMASS(K(I,2))
12661           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
12662           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
12663           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
12664           P(I,1)=PTABS*COS(PHI(JT))
12665           P(I,2)=PTABS*SIN(PHI(JT))
12666           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
12667           P(I,4)=0.5D0*SHPR*Z(JT)
12668           IZW=MINT(83)+6+JT
12669           K(IZW,1)=21
12670           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
12671             K(IZW,2)=23
12672           ELSE
12673             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
12674           ENDIF
12675           K(IZW,3)=IZW-2
12676           P(IZW,1)=-P(I,1)
12677           P(IZW,2)=-P(I,2)
12678           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
12679           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
12680           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
12681           IPU=MINT(84)+4+JT
12682           K(IPU,1)=3
12683           K(IPU,2)=KFPR(ISUB,JT)
12684           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
12685           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
12686           K(IPU,3)=MINT(83)+8+JT
12687           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
12688             P(IPU,5)=PYMASS(K(IPU,2))
12689           ELSE
12690             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
12691           ENDIF
12692           MINT(22+JT)=K(IPU,2)
12693   600   CONTINUE
12694 C...Find rotation and boost for hard scattering subsystem
12695         I1=MINT(83)+7
12696         I2=MINT(83)+8
12697         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
12698         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
12699         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
12700         GAMCM=(P(I1,4)+P(I2,4))/SHR
12701         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
12702         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
12703         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
12704         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
12705         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
12706         PHICM=PYANGL(PX,PY)
12707 C...Store hard scattering subsystem. Rotate and boost it
12708         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
12709      &  P(IPU6,5)**2
12710         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
12711         CTHWZ=VINT(23)
12712         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
12713         PHIWZ=VINT(24)-PHICM
12714         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
12715         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
12716         P(IPU5,3)=PABS*CTHWZ
12717         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
12718         P(IPU6,1)=-P(IPU5,1)
12719         P(IPU6,2)=-P(IPU5,2)
12720         P(IPU6,3)=-P(IPU5,3)
12721         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
12722         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
12723         DO 620 JT=1,2
12724           I1=MINT(83)+8+JT
12725           I2=MINT(84)+4+JT
12726           K(I1,1)=21
12727           K(I1,2)=K(I2,2)
12728           DO 610 J=1,5
12729             P(I1,J)=P(I2,J)
12730   610     CONTINUE
12731   620   CONTINUE
12732         N=IPU6
12733         MINT(7)=MINT(83)+9
12734         MINT(8)=MINT(83)+10
12735       ENDIF
12736  
12737       IF(ISET(ISUB).EQ.11) THEN
12738       ELSEIF(IDOC.GE.8) THEN
12739 C...Store colour connection indices
12740         DO 630 J=1,2
12741           JC=J
12742           IF(KCS.EQ.-1) JC=3-J
12743           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12744      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
12745           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12746      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
12747           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
12748      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12749           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
12750      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
12751   630   CONTINUE
12752  
12753 C...Copy outgoing partons to documentation lines
12754         IMAX=2
12755         IF(IDOC.EQ.9) IMAX=3
12756         DO 650 I=1,IMAX
12757           I1=MINT(83)+IDOC-IMAX+I
12758           I2=MINT(84)+2+I
12759           K(I1,1)=21
12760           K(I1,2)=K(I2,2)
12761           IF(IDOC.LE.9) K(I1,3)=0
12762           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
12763           DO 640 J=1,5
12764             P(I1,J)=P(I2,J)
12765   640     CONTINUE
12766   650   CONTINUE
12767  
12768       ELSEIF(IDOC.EQ.9) THEN
12769 C...Store colour connection indices
12770         DO 660 J=1,2
12771           JC=J
12772           IF(KCS.EQ.-1) JC=3-J
12773           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12774      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
12775      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
12776           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12777      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
12778      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
12779           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
12780      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12781           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
12782      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
12783   660   CONTINUE
12784  
12785 C...Copy outgoing partons to documentation lines
12786         DO 680 I=1,3
12787           I1=MINT(83)+IDOC-3+I
12788           I2=MINT(84)+2+I
12789           K(I1,1)=21
12790           K(I1,2)=K(I2,2)
12791           K(I1,3)=0
12792           DO 670 J=1,5
12793             P(I1,J)=P(I2,J)
12794   670     CONTINUE
12795   680   CONTINUE
12796       ENDIF
12797  
12798 C...Copy outgoing partons to list of allowed radiators.
12799       NPART=0
12800       IF(MINT(35).GE.2.AND.ISET(ISUB).NE.0) THEN
12801         DO 690 I=MINT(84)+3,N
12802           NPART=NPART+1
12803           IPART(NPART)=I
12804           PTPART(NPART)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2)
12805   690   CONTINUE
12806       ENDIF
12807  
12808 C...Low-pT events: remove gluons used for string drawing purposes
12809       IF(ISUB.EQ.95) THEN
12810         IF(MINT(35).LE.1) THEN
12811           K(IPU3,1)=K(IPU3,1)+10
12812           K(IPU4,1)=K(IPU4,1)+10
12813         ENDIF
12814         DO 700 J=41,66
12815           VINTSV(J)=VINT(J)
12816           VINT(J)=0D0
12817   700   CONTINUE
12818         DO 720 I=MINT(83)+5,MINT(83)+8
12819           DO 710 J=1,5
12820             P(I,J)=0D0
12821   710     CONTINUE
12822   720   CONTINUE
12823       ENDIF
12824  
12825       RETURN
12826       END
12827  
12828 C***********************************************************************
12829  
12830 C...PYEVOL
12831 C...Handles intertwined pT-ordered spacelike initial-state parton
12832 C...and multiple interactions.
12833  
12834       SUBROUTINE PYEVOL(MODE,PT2MAX,PT2MIN)
12835 C...Mode = -1 : Initialize first time. Determine MAX and MIN scales.
12836 C...MODE =  0 : (Re-)initialize ISR/MI evolution.
12837 C...Mode =  1 : Evolve event from PT2MAX to PT2MIN.
12838  
12839 C...Double precision and integer declarations.
12840       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
12841       IMPLICIT INTEGER(I-N)
12842       INTEGER PYK,PYCHGE,PYCOMP
12843 C...External
12844       EXTERNAL PYALPS
12845       DOUBLE PRECISION PYALPS
12846 C...Parameter statement for maximum size of showers.
12847       PARAMETER (MAXNUR=1000)
12848 C...Commonblocks.
12849       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
12850       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
12851       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
12852       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
12853       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
12854       COMMON/PYINT1/MINT(400),VINT(400)
12855       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
12856       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
12857       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
12858      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
12859      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
12860       COMMON/PYCTAG/NCT,MCT(4000,2)
12861       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
12862      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
12863       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
12864 C...Local arrays and saved variables.
12865       DIMENSION VINTSV(11:80),KSAV(4,5),PSAV(4,5),VSAV(4,5),SHAT(240)
12866       SAVE NSAV,NPARTS,M15SV,M16SV,M21SV,M22SV,VINTSV,SHAT,ISUBHD,ALAM3
12867      &     ,PSAV,KSAV,VSAV
12868  
12869       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
12870      &     /PYINT2/,/PYINT3/,/PYINTM/,/PYCTAG/,/PYISMX/,/PYISJN/
12871  
12872 C----------------------------------------------------------------------
12873 C...MODE=-1: Pre-initialization. Store info on hard scattering etc,
12874 C...done only once per event, while MODE=0 is repeated each time the
12875 C...evolution needs to be restarted.
12876       IF (MODE.EQ.-1) THEN
12877         ISUBHD=MINT(1)
12878         NSAV=N
12879         NPARTS=NPART
12880 C...Store hard scattering variables
12881         M15SV=MINT(15)
12882         M16SV=MINT(16)
12883         M21SV=MINT(21)
12884         M22SV=MINT(22)
12885         DO 100 J=11,80
12886           VINTSV(J)=VINT(J)
12887   100   CONTINUE
12888         DO 120 J=1,5
12889           DO 110 IS=1,4
12890             I=IS+MINT(84)
12891             PSAV(IS,J)=P(I,J)
12892             KSAV(IS,J)=K(I,J)
12893             VSAV(IS,J)=V(I,J)
12894   110     CONTINUE
12895   120   CONTINUE
12896  
12897 C...Set shat for hardest scattering
12898         SHAT(1)=VINT(44)
12899         IF(ISET(ISUBHD).GE.3.AND.ISET(ISUBHD).LE.5) SHAT(1)=VINT(26)
12900      &       *VINT(2)
12901  
12902 C...Compute 3-Flavour Lambda_QCD (sets absolute lowest PT scale below)
12903         RMC=PMAS(4,1)
12904         RMB=PMAS(5,1)
12905         ALAM4=PARP(61)
12906         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
12907         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
12908         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
12909  
12910 C----------------------------------------------------------------------
12911 C...MODE= 0: Initialize ISR/MI evolution, i.e. begin from hardest
12912 C...interaction initiators, with no previous evolution. Check the input
12913 C...PT2MAX and PT2MIN and impose extra constraints on minimum PT2 (e.g.
12914 C...must be larger than Lambda_QCD) and maximum PT2 (e.g. must be
12915 C...smaller than the CM energy / 2.)
12916       ELSEIF (MODE.EQ.0) THEN
12917 C...Reset counters and switches
12918         N=NSAV
12919         NPART=NPARTS
12920         MINT(30)=0
12921         MINT(31)=1
12922         MINT(36)=1
12923 C...Reset hard scattering variables
12924         MINT(1)=ISUBHD
12925         DO 130 J=11,80
12926           VINT(J)=VINTSV(J)
12927   130   CONTINUE
12928         DO 150 J=1,5
12929           DO 140 IS=1,4
12930             I=IS+MINT(84)
12931             P(I,J)=PSAV(IS,J)
12932             K(I,J)=KSAV(IS,J)
12933             V(I,J)=VSAV(IS,J)
12934             P(MINT(83)+4+IS,J)=PSAV(IS,J)
12935             V(MINT(83)+4+IS,J)=VSAV(IS,J)
12936   140     CONTINUE
12937   150   CONTINUE
12938 C...Reset statistics on activity in event.
12939         DO 160 J=351,359
12940           MINT(J)=0
12941           VINT(J)=0D0
12942   160   CONTINUE
12943 C...Reset extra companion reweighting factor
12944         VINT(140)=1D0
12945  
12946 C...We do not generate MI for soft process (ISUB=95), but the
12947 C...initialization must be done regardless, for later purposes.
12948         MINT(36)=1
12949  
12950 C...Initialize multiple interactions.
12951         CALL PYPTMI(-1,PTDUM1,PTDUM2,PTDUM3,IDUM)
12952         IF(MINT(51).NE.0) RETURN
12953  
12954 C...Decide whether quarks in hard scattering were valence or sea
12955         PT2HD=VINT(54)
12956         DO 170 JS=1,2
12957           MINT(30)=JS
12958           CALL PYPTMI(2,PT2HD,PTDUM2,PTDUM3,IDUM)
12959           IF(MINT(51).NE.0) RETURN
12960   170   CONTINUE
12961  
12962 C...Set lower cutoff for PT2 iteration and colour interference PT2 scale
12963         VINT(18)=0D0
12964         IF(MSTP(70).EQ.0) THEN
12965           PT20=PARP(62)**2
12966           PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
12967         ELSEIF(MSTP(70).EQ.1) THEN
12968           PT20=(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2
12969           PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
12970         ELSE
12971           VINT(18)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
12972           PT2MIN=MAX(PT2MIN,(1.1D0*ALAM3)**2)
12973         ENDIF
12974 C...Also store PT2MIN in VINT(17).
12975   180   VINT(17)=PT2MIN
12976  
12977 C...Set FS masses zero now.
12978         VINT(63)=0D0
12979         VINT(64)=0D0
12980  
12981 C...Initialize IS showers with VINT(56) as max scale.
12982         PT2ISR=VINT(56)
12983         CALL PYPTIS(-1,PT2ISR,PT2MIN,PT2DUM,IFAIL)
12984         IF(MINT(51).NE.0) RETURN
12985  
12986         RETURN
12987  
12988 C----------------------------------------------------------------------
12989 C...MODE= 1: Evolve event from PTMAX to PTMIN.
12990       ELSEIF (MODE.EQ.1) THEN
12991  
12992 C...Skip if no phase space.
12993   190   IF (PT2MAX.LE.PT2MIN) GOTO 330
12994  
12995 C...Starting pT2 max scale (to be udpated successively).
12996         PT2CMX=PT2MAX
12997  
12998 C...Evolve two sides of the event to find which branches at highest pT.
12999   200   JSMX=-1
13000         MIMX=0
13001         PT2MX=0D0
13002  
13003 C...Loop over current shower initiators.
13004         IF (MSTP(61).GE.1) THEN
13005           DO 230 MI=1,MINT(31)
13006             IF (MI.GE.2.AND.MSTP(84).LE.0) GOTO 230
13007             ISUB=96
13008             IF (MI.EQ.1) ISUB=ISUBHD
13009             MINT(1)=ISUB
13010             MINT(36)=MI
13011 C...Set up shat, initiator x values, and x remaining in BR.
13012             VINT(44)=SHAT(MI)
13013             VINT(141)=XMI(1,MI)
13014             VINT(142)=XMI(2,MI)
13015             VINT(143)=1D0
13016             VINT(144)=1D0
13017             DO 210 JI=1,MINT(31)
13018               IF (JI.EQ.MINT(36)) GOTO 210
13019               VINT(143)=VINT(143)-XMI(1,JI)
13020               VINT(144)=VINT(144)-XMI(2,JI)
13021   210       CONTINUE
13022 C...Loop over sides.
13023 C...Generate trial branchings for this interaction. The hardest
13024 C...branching so far is automatically updated if necessary in /PYISMX/.
13025             DO 220 JS=1,2
13026               MINT(30)=JS
13027               CALL PYPTIS(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13028               IF (MINT(51).NE.0) RETURN
13029   220       CONTINUE
13030   230     CONTINUE
13031         ENDIF
13032  
13033 C...Generate trial additional interaction.
13034         MINT(36)=MINT(31)+1
13035   240   IF (MOD(MSTP(81),10).GE.1) THEN
13036           MINT(1)=96
13037 C...Set up X remaining in BR.
13038           VINT(143)=1D0
13039           VINT(144)=1D0
13040           DO 250 JI=1,MINT(31)
13041             VINT(143)=VINT(143)-XMI(1,JI)
13042             VINT(144)=VINT(144)-XMI(2,JI)
13043   250     CONTINUE
13044 C...Generate trial interaction
13045   260     CALL PYPTMI(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13046           IF (MINT(51).EQ.1) RETURN
13047         ENDIF
13048  
13049 C...And the winner is:
13050         IF (PT2MX.LT.PT2MIN) THEN
13051           GOTO 330
13052         ELSEIF (JSMX.EQ.0) THEN
13053 C...Accept additional interaction (may still fail).
13054           CALL PYPTMI(1,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13055           IF(MINT(51).NE.0) RETURN
13056           IF (IFAIL.EQ.0) THEN
13057             SHAT(MINT(36))=VINT(44)
13058 C...Decide on flavours (valence/sea/companion).
13059             DO 270 JS=1,2
13060               MINT(30)=JS
13061               CALL PYPTMI(2,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13062               IF(MINT(51).NE.0) RETURN
13063   270       CONTINUE
13064           ENDIF
13065         ELSEIF (JSMX.EQ.1.OR.JSMX.EQ.2) THEN
13066 C...Reconstruct kinematics of acceptable ISR branching.
13067 C...Set up shat, initiator x values, and x remaining in BR.
13068           MINT(30)=JSMX
13069           MINT(36)=MIMX
13070           VINT(44)=SHAT(MINT(36))
13071           VINT(141)=XMI(1,MINT(36))
13072           VINT(142)=XMI(2,MINT(36))
13073           VINT(143)=1D0
13074           VINT(144)=1D0
13075           DO 280 JI=1,MINT(31)
13076             IF (JI.EQ.MINT(36)) GOTO 280
13077             VINT(143)=VINT(143)-XMI(1,JI)
13078             VINT(144)=VINT(144)-XMI(2,JI)
13079   280     CONTINUE
13080           PT2NEW=PT2MX
13081           CALL PYPTIS(1,PT2NEW,PT2DM1,PT2DM2,IFAIL)
13082           IF (MINT(51).EQ.1) RETURN
13083         ELSEIF (JSMX.EQ.3.OR.JSMX.EQ.4) THEN
13084 C...Bookeep joining. Cannot (yet) be constructed kinematically.
13085           MINT(354)=MINT(354)+1
13086           VINT(354)=VINT(354)+SQRT(PT2MX)
13087           IF (MINT(354).EQ.1) VINT(359)=SQRT(PT2MX)
13088           MJOIND(JSMX-2,MJN1MX)=MJN2MX
13089           MJOIND(JSMX-2,MJN2MX)=MJN1MX
13090         ENDIF
13091  
13092 C...Update PT2 iteration scale.
13093         PT2CMX=PT2MX
13094  
13095 C...Loop back to continue evolution.
13096         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13097           CALL PYERRM(11,'(PYEVOL:) no more memory left in PYJETS')
13098         ELSE
13099           IF (JSMX.GE.0.AND.PT2CMX.GE.PT2MIN) GOTO 200
13100         ENDIF
13101  
13102 C----------------------------------------------------------------------
13103 C...MODE= 2: (Re-)store user information on hardest interaction etc.
13104       ELSEIF (MODE.EQ.2) THEN
13105  
13106 C...Revert to "ordinary" meanings of some parameters.
13107   290   DO 310 JS=1,2
13108           MINT(12+JS)=K(IMI(JS,1,1),2)
13109           VINT(140+JS)=XMI(JS,1)
13110           IF(MINT(18+JS).EQ.1) VINT(140+JS)=VINT(154+JS)*XMI(JS,1)
13111           VINT(142+JS)=1D0
13112           DO 300 MI=1,MINT(31)
13113             VINT(142+JS)=VINT(142+JS)-XMI(JS,MI)
13114   300     CONTINUE
13115   310   CONTINUE
13116  
13117 C...Restore saved quantities for hardest interaction.
13118         MINT(1)=ISUBHD
13119         MINT(15)=M15SV
13120         MINT(16)=M16SV
13121         MINT(21)=M21SV
13122         MINT(22)=M22SV
13123         DO 320 J=11,80
13124           VINT(J)=VINTSV(J)
13125   320   CONTINUE
13126  
13127       ENDIF
13128  
13129   330 RETURN
13130       END
13131  
13132 C*********************************************************************
13133  
13134 C...PYSSPA
13135 C...Generates spacelike parton showers.
13136  
13137       SUBROUTINE PYSSPA(IPU1,IPU2)
13138  
13139 C...Double precision and integer declarations.
13140       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13141       IMPLICIT INTEGER(I-N)
13142       INTEGER PYK,PYCHGE,PYCOMP
13143 C...Commonblocks.
13144       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
13145       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13146       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13147       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
13148       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13149       COMMON/PYINT1/MINT(400),VINT(400)
13150       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13151       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13152       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
13153      &/PYINT2/,/PYINT3/
13154 C...Local arrays and data.
13155       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
13156      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
13157      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
13158      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
13159      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
13160       DATA IS/2*0/
13161  
13162 C...Read out basic information; set global Q^2 scale.
13163       IPUS1=IPU1
13164       IPUS2=IPU2
13165       ISUB=MINT(1)
13166       Q2MX=VINT(56)
13167       VINT2R=VINT(2)*VINT(143)*VINT(144)
13168       IF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.9.OR.ISET(ISUB).EQ.11) Q2MX=
13169      &MIN(VINT2R,PARP(67)*VINT(56))
13170       FCQ2MX=1D0
13171  
13172 C...Define which processes ME corrections have been implemented for.
13173       MECOR=0
13174       IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
13175         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
13176      &  ISUB.EQ.144) MECOR=1
13177         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
13178         IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
13179       ENDIF
13180  
13181 C...Initialize QCD evolution and check phase space.
13182       Q2MNC=PARP(62)**2
13183       Q2MNCS(1)=Q2MNC
13184       Q2MNCS(2)=Q2MNC
13185       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
13186         Q0S=PARP(15)**2
13187         PS=VINT(3)**2
13188         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13189      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13190         Q2INT=SQRT(Q0S*Q2EFF)
13191         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
13192       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
13193         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
13194       ENDIF
13195       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
13196         Q0S=PARP(15)**2
13197         PS=VINT(4)**2
13198         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13199      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13200         Q2INT=SQRT(Q0S*Q2EFF)
13201         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
13202       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
13203         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
13204       ENDIF
13205       MCEV=0
13206       ALAMS=PARU(112)
13207       PARU(112)=PARP(61)
13208       FQ2C=1D0
13209       TCMX=0D0
13210       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
13211         MCEV=1
13212         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
13213         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
13214         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
13215         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
13216      &  MCEV=0
13217       ENDIF
13218  
13219 C...Initialize QED evolution and check phase space.
13220       MEEV=0
13221       XEE=1D-10
13222       SPME=PMAS(11,1)**2
13223       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
13224      &SPME=PMAS(13,1)**2
13225       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
13226      &SPME=PMAS(15,1)**2
13227       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
13228       TEMX=0D0
13229       FWTE=10D0
13230       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
13231         MEEV=1
13232         TEMX=LOG(Q2MX/SPME)
13233         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
13234       ENDIF
13235       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
13236         MEEV=2
13237         TEMX=TCMX
13238         FWTE=1D0
13239       ENDIF
13240       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
13241  
13242 C...Loopback point in case of failure to reconstruct kinematics.
13243       NS=N
13244       LOOP=0
13245       MNT352=MINT(352)
13246       MNT353=MINT(353)
13247       VNT352=VINT(352)
13248       VNT353=VINT(353)
13249   100 LOOP=LOOP+1
13250       IF(LOOP.GT.100) THEN
13251         MINT(51)=1
13252         RETURN
13253       ENDIF
13254       N=NS
13255       MINT(352)=MNT352
13256       MINT(353)=MNT353
13257       VINT(352)=VNT352
13258       VINT(353)=VNT353
13259  
13260 C...Initial values: flavours, momenta, virtualities.
13261       DO 120 JT=1,2
13262         MORE(JT)=1
13263         KFBEAM(JT)=MINT(10+JT)
13264         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
13265         KFLS(JT)=MINT(14+JT)
13266         KFLS(JT+2)=KFLS(JT)
13267         XS(JT)=VINT(40+JT)
13268         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
13269         IF(MINT(31).GE.2) XS(JT)=XS(JT)/VINT(142+JT)
13270         ZS(JT)=1D0
13271         Q2S(JT)=FCQ2MX*Q2MX
13272         DQ2(JT)=0D0
13273         TEVCSV(JT)=TCMX
13274         ALAM(JT)=PARP(61)
13275         THE2(JT)=1D0
13276         TEVESV(JT)=TEMX
13277         MCESV(JT)=0
13278 C...Calculate initial parton distribution weights.
13279         MINT(105)=MINT(102+JT)
13280         MINT(109)=MINT(106+JT)
13281         VINT(120)=VINT(2+JT)
13282 C.... ALICE
13283 C.... Store side in MINT(124)
13284         MINT(124) = JT
13285 C....
13286         IF(XS(JT).LT.1D0-XEE) THEN
13287           IF(MINT(31).GE.2) MINT(30)=JT
13288           IF(MSTP(57).LE.1) THEN
13289             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13290           ELSE
13291             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13292           ENDIF
13293         ENDIF
13294         DO 110 KFL=-25,25
13295           XFS(JT,KFL)=XFB(KFL)
13296   110   CONTINUE
13297 C...Special kinematics check for c/b quarks (that g -> c cbar or
13298 C...b bbar kinematically possible).
13299       KFLCB=IABS(KFLS(JT))
13300       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
13301         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
13302           MINT(51)=1
13303           RETURN
13304         ENDIF
13305       ENDIF
13306   120 CONTINUE
13307       DSH=VINT(44)
13308       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
13309  
13310 C...Find if interference with final state partons.
13311       MFIS=0
13312       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
13313       IF(MFIS.NE.0) THEN
13314         DO 140 I=1,2
13315           KCFI(I)=0
13316           KCA=PYCOMP(IABS(KFLS(I)))
13317           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
13318           NFIS(I)=0
13319           IF(KCFI(I).NE.0) THEN
13320             IF(I.EQ.1) IPFS=IPUS1
13321             IF(I.EQ.2) IPFS=IPUS2
13322             DO 130 J=1,2
13323               ICSI=MOD(K(IPFS,3+J),MSTU(5))
13324               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
13325      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
13326                 NFIS(I)=NFIS(I)+1
13327                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
13328      &          P(ICSI,2)**2))
13329                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
13330               ENDIF
13331   130       CONTINUE
13332           ENDIF
13333   140   CONTINUE
13334         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
13335       ENDIF
13336  
13337 C...Pick up leg with highest virtuality.
13338       JTOLD=1
13339   150 N=N+1
13340       JT=1
13341       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
13342       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
13343       IF(MORE(JT).EQ.0) JT=3-JT
13344       JTOLD=JT
13345       KFLB=KFLS(JT)
13346       XB=XS(JT)
13347       DO 160 KFL=-25,25
13348         XFB(KFL)=XFS(JT,KFL)
13349   160 CONTINUE
13350       DSHR=2D0*SQRT(DSH)
13351       DSHZ=DSH/ZS(JT)
13352  
13353 C...Check if allowed to branch.
13354       MCEV=0
13355       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
13356         MCEV=1
13357         XEC=MAX(PARP(65)*DSHR/VINT2R,XB*(1D0/(1D0-PARP(66))-1D0))
13358         IF(XB.GE.1D0-2D0*XEC) MCEV=0
13359       ENDIF
13360       MEEV=0
13361       IF(MINT(44+JT).EQ.3) THEN
13362         MEEV=1
13363         IF(XB.GE.1D0-2D0*XEE) MEEV=0
13364         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
13365      &  MEEV=0
13366 C***Currently kill QED shower for resolved photoproduction.
13367         IF(MINT(18+JT).EQ.1) MEEV=0
13368 C***Currently kill shower for W inside electron.
13369         IF(IABS(KFLB).EQ.24) THEN
13370           MCEV=0
13371           MEEV=0
13372         ENDIF
13373       ENDIF
13374       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
13375      &MEEV=2
13376       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
13377         Q2B=0D0
13378         GOTO 260
13379       ENDIF
13380  
13381 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
13382       Q2B=Q2S(JT)
13383       TEVCB=TEVCSV(JT)
13384       TEVEB=TEVESV(JT)
13385       IF(MSTP(62).LE.1) THEN
13386         IF(ZS(JT).GT.0.99999D0) THEN
13387           Q2B=Q2S(JT)
13388         ELSE
13389           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
13390      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
13391      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
13392         ENDIF
13393         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13394         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
13395       ENDIF
13396       IF(MCEV.EQ.1) THEN
13397         ALSDUM=PYALPS(FQ2C*Q2B)
13398         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
13399         ALAM(JT)=PARU(117)
13400         B0=(33D0-2D0*MSTU(118))/6D0
13401       ENDIF
13402       IF(MEEV.EQ.2) TEVEB=TEVCB
13403       TEVCBS=TEVCB
13404       TEVEBS=TEVEB
13405  
13406 C...Select side for interference with final state partons.
13407       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
13408         IFI=N-NS
13409         ISFI(IFI)=0
13410         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
13411           ISFI(IFI)=1
13412         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
13413           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
13414         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
13415           ISFI(IFI)=1
13416           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
13417         ENDIF
13418       ENDIF
13419  
13420 C...Calculate preweighting factor for ME-corrected processes.
13421       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
13422  
13423 C...Calculate Altarelli-Parisi weights.
13424       DO 170 KFL=-25,25
13425         WTAPC(KFL)=0D0
13426         WTAPE(KFL)=0D0
13427         WTSF(KFL)=0D0
13428   170 CONTINUE
13429 C...q -> q (g or gamma emission), g -> q.
13430       IF(IABS(KFLB).LE.10) THEN
13431         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
13432         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
13433         EQ2=1D0/9D0
13434         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
13435         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
13436      &  (XEC*(1D0-XEC)))
13437         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13438           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
13439           WTAPC(21)=WTGF*WTAPC(21)
13440           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13441         ENDIF
13442 C...f -> f, gamma -> f.
13443       ELSEIF(IABS(KFLB).LE.20) THEN
13444         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
13445         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
13446         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
13447         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
13448         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13449           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13450           WTAPE(22)=WTGF*WTAPE(22)
13451         ENDIF
13452 C...f -> g, g -> g.
13453       ELSEIF(KFLB.EQ.21) THEN
13454         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
13455         DO 180 KFL=1,MSTP(58)
13456           WTAPC(KFL)=WTAPQ
13457           WTAPC(-KFL)=WTAPQ
13458   180   CONTINUE
13459         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
13460         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13461           DO 190 KFL=1,MSTP(58)
13462             WTAPC(KFL)=WTFG*WTAPC(KFL)
13463             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
13464   190     CONTINUE
13465           WTAPC(21)=WTGG*WTAPC(21)
13466         ENDIF
13467 C...f -> gamma, W+, W-.
13468       ELSEIF(KFLB.EQ.22) THEN
13469         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
13470         WTAPE(11)=WTAPF
13471         WTAPE(-11)=WTAPF
13472         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13473           WTAPE(11)=WTFG*WTAPE(11)
13474           WTAPE(-11)=WTFG*WTAPE(-11)
13475         ENDIF
13476       ELSEIF(KFLB.EQ.24) THEN
13477         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13478      &  (XEE*(XB+XEE)))/XB
13479       ELSEIF(KFLB.EQ.-24) THEN
13480         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13481      &  (XEE*(XB+XEE)))/XB
13482       ENDIF
13483  
13484 C...Calculate parton distribution weights and sum.
13485       NTRY=0
13486   200 NTRY=NTRY+1
13487       IF(NTRY.GT.500) THEN
13488         MINT(51)=1
13489         RETURN
13490       ENDIF
13491       WTSUMC=0D0
13492       WTSUME=0D0
13493       XFBO=MAX(1D-10,XFB(KFLB))
13494       DO 210 KFL=-25,25
13495         WTSF(KFL)=XFB(KFL)/XFBO
13496         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
13497         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
13498   210 CONTINUE
13499       WTSUMC=MAX(0.0001D0,WTSUMC)
13500       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
13501  
13502 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
13503       NTRY2=0
13504   220 NTRY2=NTRY2+1
13505       IF(NTRY2.GT.500) THEN
13506         MINT(51)=1
13507         RETURN
13508       ENDIF
13509       IF(MCEV.EQ.1) THEN
13510         IF(MSTP(64).LE.0) THEN
13511           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
13512         ELSEIF(MSTP(64).EQ.1) THEN
13513           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
13514         ELSE
13515           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
13516         ENDIF
13517       ENDIF
13518       IF(MEEV.EQ.1) THEN
13519         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
13520      &  (PARU(101)*FWTE*WTSUME*TEMX)))
13521       ELSEIF(MEEV.EQ.2) THEN
13522         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
13523       ENDIF
13524  
13525 C...Translate t into Q2 scale; choose between QCD and QED evolution.
13526   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
13527       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
13528       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
13529 C...Ensure that Q2 is above threshold for charm/bottom.
13530       KFLCB=IABS(KFLB)
13531       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
13532      &MCEV.EQ.1) THEN
13533         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
13534           Q2CB=1.1D0*PMAS(KFLCB,1)**2
13535           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13536           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
13537         ENDIF
13538       ENDIF
13539       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
13540      &MEEV.EQ.2) THEN
13541         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
13542       ENDIF
13543       MCE=0
13544       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
13545       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
13546         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
13547       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
13548         IF(Q2EB.GT.Q2MNE) MCE=2
13549       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
13550         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
13551       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
13552         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
13553         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
13554       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
13555         MCE=1
13556         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
13557         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
13558       ELSE
13559         MCE=2
13560         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
13561         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
13562       ENDIF
13563  
13564 C...Evolution possibly ended. Update t values.
13565       IF(MCE.EQ.0) THEN
13566         Q2B=0D0
13567         GOTO 260
13568       ELSEIF(MCE.EQ.1) THEN
13569         Q2B=Q2CB
13570         Q2REF=FQ2C*Q2B
13571         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
13572         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13573       ELSE
13574         Q2B=Q2EB
13575         Q2REF=Q2B
13576         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13577       ENDIF
13578  
13579 C...Select flavour for branching parton.
13580       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
13581       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
13582       KFLA=-25
13583   240 KFLA=KFLA+1
13584       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
13585       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
13586       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
13587       IF(KFLA.EQ.25) THEN
13588         Q2B=0D0
13589         GOTO 260
13590       ENDIF
13591  
13592 C...Choose z value and corrective weight.
13593       WTZ=0D0
13594 C...q -> q + g or q -> q + gamma.
13595       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
13596         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
13597      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
13598         WTZ=0.5D0*(1D0+Z**2)
13599 C...q -> g + q.
13600       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
13601         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
13602         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
13603 C...f -> f + gamma.
13604       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
13605         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
13606           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
13607      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
13608         ELSE
13609           Z=XB+XB*(XEE/(1D0-XEE))*
13610      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
13611         ENDIF
13612         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
13613 C...f -> gamma + f.
13614       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
13615         Z=XB+XB*(XEE/(1D0-XEE))*
13616      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
13617         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
13618 C...f -> W+- + f.
13619       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) THEN
13620         Z=XB+XB*(XEE/(1D0-XEE))*
13621      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
13622         WTZ=0.5D0*(1D0+(1D0-Z)**2)*(XB*(Z-XB)/Z)*
13623      &  (Q2B/(Q2B+PMAS(24,1)**2))
13624 C...g -> q + qbar.
13625       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
13626         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
13627         WTZ=1D0-2D0*Z*(1D0-Z)
13628 C...g -> g + g.
13629       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
13630         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
13631         WTZ=(1D0-Z*(1D0-Z))**2
13632 C...gamma -> f + fbar.
13633       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
13634         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
13635         WTZ=1D0-2D0*Z*(1D0-Z)
13636       ENDIF
13637       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
13638  
13639 C...Option with resummation of soft gluon emission as effective z shift.
13640       IF(MCE.EQ.1) THEN
13641         IF(MSTP(65).GE.1) THEN
13642           RSOFT=6D0
13643           IF(KFLB.NE.21) RSOFT=8D0/3D0
13644           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
13645           IF(Z.LE.XB) GOTO 220
13646         ENDIF
13647  
13648 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
13649         IF(MSTP(64).GE.2) THEN
13650           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
13651           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
13652           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
13653           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
13654         ENDIF
13655       ENDIF
13656  
13657 C...Remove kinematically impossible branchings.
13658       UHAT=Q2B-DSH*(1D0-Z)/Z
13659       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
13660  
13661 C...Select phi angle of branching at random.
13662       PHIBR=PARU(2)*PYR(0)
13663  
13664 C...Matrix-element corrections for some processes.
13665       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13666         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
13667           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
13668           WTZ=WTZ*WTME/WTFF
13669         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
13670           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
13671           WTZ=WTZ*WTME/WTGF
13672         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
13673           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
13674           WTZ=WTZ*WTME/WTFG
13675         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
13676           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
13677           WTZ=WTZ*WTME/WTGG
13678         ENDIF
13679       ENDIF
13680  
13681 C...Impose angular constraint in first branching from interference
13682 C...with final state partons.
13683       IF(MCE.EQ.1) THEN
13684         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
13685           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
13686           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
13687             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
13688           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
13689             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
13690           ENDIF
13691         ENDIF
13692  
13693 C...Option with angular ordering requirement.
13694         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
13695           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT2R)
13696           IF(THE2T.GT.THE2(JT)) GOTO 220
13697         ENDIF
13698       ENDIF
13699  
13700 C...Weighting with new parton distributions.
13701       MINT(105)=MINT(102+JT)
13702       MINT(109)=MINT(106+JT)
13703       VINT(120)=VINT(2+JT)
13704 C.... ALICE
13705 C.... Store side in MINT(124)
13706       MINT(124)=JT
13707 C....
13708       IF(MINT(31).GE.2) MINT(30)=JT
13709       IF(MSTP(57).LE.1) THEN
13710         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
13711       ELSE
13712         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
13713       ENDIF
13714       XFBN=XFN(KFLB)
13715       IF(XFBN.LT.1D-20) THEN
13716         IF(KFLA.EQ.KFLB) THEN
13717           TEVCB=TEVCBS
13718           TEVEB=TEVEBS
13719           WTAPC(KFLB)=0D0
13720           WTAPE(KFLB)=0D0
13721           GOTO 200
13722         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
13723           TEVCB=0.5D0*(TEVCBS+TEVCB)
13724           GOTO 230
13725         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
13726           TEVEB=0.5D0*(TEVEBS+TEVEB)
13727           GOTO 230
13728         ELSE
13729           XFBN=1D-10
13730           XFN(KFLB)=XFBN
13731         ENDIF
13732       ENDIF
13733       DO 250 KFL=-25,25
13734         XFB(KFL)=XFN(KFL)
13735   250 CONTINUE
13736       XA=XB/Z
13737 C.... ALICE
13738 C.... Store side in MINT(124)
13739       MINT(124) = JT
13740 C....
13741       IF(MINT(31).GE.2) MINT(30)=JT
13742       IF(MSTP(57).LE.1) THEN
13743         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
13744       ELSE
13745         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
13746       ENDIF
13747       XFAN=XFA(KFLA)
13748       IF(XFAN.LT.1D-20) GOTO 200
13749       WTSFA=WTSF(KFLA)
13750       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
13751  
13752 C...Define two hard scatterers in their CM-frame.
13753   260 IF(N.EQ.NS+2) THEN
13754         DQ2(JT)=Q2B
13755         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
13756         DO 280 JR=1,2
13757           I=NS+JR
13758           IF(JR.EQ.1) IPO=IPUS1
13759           IF(JR.EQ.2) IPO=IPUS2
13760           DO 270 J=1,5
13761             K(I,J)=0
13762             P(I,J)=0D0
13763             V(I,J)=0D0
13764   270     CONTINUE
13765           K(I,1)=14
13766           K(I,2)=KFLS(JR+2)
13767           K(I,4)=IPO
13768           K(I,5)=IPO
13769           P(I,3)=DPLCM*(-1)**(JR+1)
13770           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
13771           P(I,5)=-SQRT(DQ2(JR))
13772           K(IPO,1)=14
13773           K(IPO,3)=I
13774           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
13775           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
13776   280   CONTINUE
13777  
13778 C...Find maximum allowed mass of timelike parton.
13779       ELSEIF(N.GT.NS+2) THEN
13780         JR=3-JT
13781         DQ2(3)=Q2B
13782         DPC(1)=P(IS(1),4)
13783         DPC(2)=P(IS(2),4)
13784         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
13785         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
13786         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
13787         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
13788         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
13789         IKIN=0
13790         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
13791      &  1D-10*DPD(1)) IKIN=1
13792         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
13793      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
13794         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
13795      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
13796  
13797 C...Generate timelike parton shower (if required).
13798         IT=N
13799         DO 290 J=1,5
13800           K(IT,J)=0
13801           P(IT,J)=0D0
13802           V(IT,J)=0D0
13803   290   CONTINUE
13804 C...f -> f + g (gamma).
13805         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
13806           K(IT,2)=21
13807           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
13808 C...f -> g (gamma, W+-) + f.
13809         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
13810           K(IT,2)=KFLB
13811           IF(KFLS(JT+2).EQ.24) THEN
13812             K(IT,2)=-12
13813           ELSEIF(KFLS(JT+2).EQ.-24) THEN
13814             K(IT,2)=12
13815           ENDIF
13816 C...g (gamma) -> f + fbar, g + g.
13817         ELSE
13818           K(IT,2)=-KFLS(JT+2)
13819           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
13820         ENDIF
13821         K(IT,1)=3
13822         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
13823      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
13824         P(IT,5)=PYMASS(K(IT,2))
13825         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
13826         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
13827           MSTJ48=MSTJ(48)
13828           PARJ85=PARJ(85)
13829           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
13830           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
13831           IF(MSTP(63).EQ.1) THEN
13832             Q2TIM=DMSMA
13833           ELSEIF(MSTP(63).EQ.2) THEN
13834             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
13835           ELSE
13836             Q2TIM=DMSMA
13837             MSTJ(48)=1
13838             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
13839             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
13840      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
13841             PARJ(85)=SQRT(MAX(0D0,DPT2))*
13842      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
13843           ENDIF
13844           if(parj(200).ne.1.) CALL PYSHOW(IT,0,SQRT(Q2TIM))
13845           if(parj(200).eq.1.) CALL PYSHOWQ(IT,0,SQRT(Q2TIM))
13846           MSTJ(48)=MSTJ48
13847           PARJ(85)=PARJ85
13848           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
13849         ENDIF
13850  
13851 C...Reconstruct kinematics of branching: timelike parton shower.
13852         DMS=P(IT,5)**2
13853         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
13854         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
13855      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
13856      &  (4D0*DSH*DPC(3)**2)
13857         IF(DPT2.LT.0D0) GOTO 100
13858         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
13859      &  DSHR)/DPC(3)-DPC(3)
13860         P(IT,1)=SQRT(DPT2)
13861         P(IT,3)=DPB(1)*(-1)**(JT+1)
13862         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
13863         IF(N.GE.IT+1) THEN
13864           DPB(1)=SQRT(DPB(1)**2+DPT2)
13865           DPB(2)=SQRT(DPB(1)**2+DMS)
13866           DPB(3)=P(IT+1,3)
13867           DPB(4)=SQRT(DPB(3)**2+DMS)
13868           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
13869      &    DPB(1))
13870           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
13871           THE=PYANGL(P(IT,3),P(IT,1))
13872           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
13873         ENDIF
13874  
13875 C...Reconstruct kinematics of branching: spacelike parton.
13876         DO 300 J=1,5
13877           K(N+1,J)=0
13878           P(N+1,J)=0D0
13879           V(N+1,J)=0D0
13880   300   CONTINUE
13881         K(N+1,1)=14
13882         K(N+1,2)=KFLB
13883         P(N+1,1)=P(IT,1)
13884         P(N+1,3)=P(IT,3)+P(IS(JT),3)
13885         P(N+1,4)=P(IT,4)+P(IS(JT),4)
13886         P(N+1,5)=-SQRT(DQ2(3))
13887  
13888 C...Define colour flow of branching.
13889         K(IS(JT),3)=N+1
13890         K(IT,3)=N+1
13891         IM1=N+1
13892         IM2=N+1
13893 C...f -> f + gamma (Z, W).
13894         IF(IABS(K(IT,2)).GE.22) THEN
13895           K(IT,1)=1
13896           ID1=IS(JT)
13897           ID2=IS(JT)
13898 C...f -> gamma (Z, W) + f.
13899         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
13900           ID1=IT
13901           ID2=IT
13902 C...gamma -> q + qbar, g + g.
13903         ELSEIF(K(N+1,2).EQ.22) THEN
13904           ID1=IS(JT)
13905           ID2=IT
13906           IM1=ID2
13907           IM2=ID1
13908 C...q -> q + g.
13909         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
13910           ID1=IT
13911           ID2=IS(JT)
13912 C...q -> g + q.
13913         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
13914           ID1=IS(JT)
13915           ID2=IT
13916 C...qbar -> qbar + g.
13917         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
13918           ID1=IS(JT)
13919           ID2=IT
13920 C...qbar -> g + qbar.
13921         ELSEIF(K(N+1,2).LT.0) THEN
13922           ID1=IT
13923           ID2=IS(JT)
13924 C...g -> g + g; g -> q + qbar.
13925         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
13926           ID1=IS(JT)
13927           ID2=IT
13928         ELSE
13929           ID1=IT
13930           ID2=IS(JT)
13931         ENDIF
13932         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
13933         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
13934         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
13935         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
13936         IF(ID1.NE.ID2) THEN
13937           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
13938           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
13939         ENDIF
13940         N=N+1
13941         IF(K(IT,1).EQ.1) THEN
13942           K(IT,4)=0
13943           K(IT,5)=0
13944         ENDIF
13945  
13946 C...Boost to new CM-frame.
13947         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
13948         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
13949         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
13950         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
13951         IR=N+(JT-1)*(IS(1)-N)
13952         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
13953      &  0D0,0D0,0D0)
13954  
13955 C...Global statistics.
13956         MINT(352)=MINT(352)+1
13957         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
13958         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
13959       ENDIF
13960  
13961 C...Update kinematics variables.
13962       IS(JT)=N
13963       DQ2(JT)=Q2B
13964       IF(MSTP(62).GE.3.AND.NTRY2.LT.200.AND.MCE.EQ.1) THE2(JT)=THE2T
13965       DSH=DSHZ
13966  
13967 C...Save quantities; loop back.
13968       Q2S(JT)=Q2B
13969       DPHI(JT)=PHIBR
13970       MCESV(JT)=MCE
13971       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
13972      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
13973         KFLS(JT+2)=KFLS(JT)
13974         KFLS(JT)=KFLA
13975         XS(JT)=XA
13976         ZS(JT)=Z
13977         DO 310 KFL=-25,25
13978           XFS(JT,KFL)=XFA(KFL)
13979   310   CONTINUE
13980         TEVCSV(JT)=TEVCB
13981         TEVESV(JT)=TEVEB
13982       ELSE
13983         MORE(JT)=0
13984         IF(JT.EQ.1) IPU1=N
13985         IF(JT.EQ.2) IPU2=N
13986       ENDIF
13987       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13988         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
13989         IF(MSTU(21).GE.1) N=NS
13990         IF(MSTU(21).GE.1) RETURN
13991       ENDIF
13992       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
13993  
13994 C...Boost hard scattering partons to frame of shower initiators.
13995       DO 320 J=1,3
13996         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
13997   320 CONTINUE
13998       K(N+2,1)=1
13999       DO 330 J=1,5
14000         P(N+2,J)=P(NS+1,J)
14001   330 CONTINUE
14002       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
14003       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
14004       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
14005       IMIN=MINT(83)+5
14006       IF(MINT(31).GE.2) IMIN=MIN(IPUS1,IPUS2)
14007       CALL PYROBO(IMIN,NS,0D0,-ROBO(2),0D0,0D0,0D0)
14008       CALL PYROBO(IMIN,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),ROBO(5))
14009  
14010 C...Store user information. Reset Lambda value.
14011       IF(MINT(31).LE.1) THEN
14012         K(IPU1,3)=MINT(83)+3
14013         K(IPU2,3)=MINT(83)+4
14014       ELSE
14015         K(IPU1,3)=MINT(83)+1
14016         K(IPU2,3)=MINT(83)+2
14017       ENDIF
14018       DO 340 JT=1,2
14019         MINT(12+JT)=KFLS(JT)
14020         VINT(140+JT)=XS(JT)
14021         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
14022         IF(MINT(31).GE.2) VINT(140+JT)=VINT(140+JT)*VINT(142+JT)
14023   340 CONTINUE
14024       PARU(112)=ALAMS
14025  
14026       RETURN
14027       END
14028 C*********************************************************************
14029  
14030 C...PYPTIS
14031 C...Generates pT-ordered spacelike initial-state parton showers and
14032 C...trial joinings.
14033 C...MODE=-1: Initialize ISR from scratch, starting from the hardest
14034 C...         interaction initiators at PT2NOW.
14035 C...MODE= 0: Generate a trial branching on interaction MINT(36), side
14036 C...         MINT(30). Start evolution at PT2NOW, solve Sudakov for PT2.
14037 C...         Store in /PYISMX/ if PT2 is largest so far. Abort if PT2
14038 C...         is below PT2CUT.
14039 C...         (Also generate test joinings if MSTP(96)=1.)
14040 C...MODE= 1: Accept stored shower branching. Update event record etc.
14041 C...PT2NOW : Starting (max) PT2 scale for evolution.
14042 C...PT2CUT : Lower limit for evolution.
14043 C...PT2    : Result of evolution. Generated PT2 for trial emission.
14044 C...IFAIL  : Status return code. IFAIL=0 when all is well.
14045  
14046       SUBROUTINE PYPTIS(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
14047  
14048 C...Double precision and integer declarations.
14049       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14050       IMPLICIT INTEGER(I-N)
14051       INTEGER PYK,PYCHGE,PYCOMP
14052 C...Parameter statement for maximum size of showers.
14053       PARAMETER (MAXNUR=1000)
14054 C...Commonblocks.
14055       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
14056       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14057       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14058       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14059       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14060       COMMON/PYINT1/MINT(400),VINT(400)
14061       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14062       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
14063      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
14064      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
14065       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
14066      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
14067       COMMON/PYCTAG/NCT,MCT(4000,2)
14068       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
14069       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
14070      &     /PYINT2/,/PYINTM/,/PYISMX/,/PYCTAG/,/PYISJN/
14071 C...Local variables
14072       DIMENSION ZSAV(2,240),PT2SAV(2,240),
14073      &     XFB(-25:25),XFA(-25:25),XFN(-25:25),XFJ(-25:25),
14074      &     WTAP(-25:25),WTPDF(-25:25),SHTNOW(240),
14075      &     WTAPJ(240),WTPDFJ(240),X1(240),Y(240)
14076       SAVE ZSAV,PT2SAV,XFB,XFA,XFN,WTAP,WTPDF,XMXC,SHTNOW,
14077      &     RMB2,RMC2,ALAM3,ALAM4,ALAM5,TMIN,PTEMAX,WTEMAX,AEM2PI
14078 C...For check on excessive weights.
14079       CHARACTER CHWT*12
14080
14081 C...Only give errors for very large weights, otherwise just warnings
14082       DATA WTEMAX /1.5D0/
14083 C...Only give errors for large pT, otherwise just warnings
14084       DATA PTEMAX /5D0/
14085  
14086       IFAIL=-1
14087  
14088 C----------------------------------------------------------------------
14089 C...MODE=-1: Initialize initial state showers from scratch, i.e.
14090 C...starting from the hardest interaction initiators.
14091       IF (MODE.EQ.-1) THEN
14092 C...Set hard scattering SHAT.
14093         SHTNOW(1)=VINT(44)
14094 C...Mass thresholds and Lambda for QCD evolution.
14095         AEM2PI=PARU(101)/PARU(2)
14096         RMB=PMAS(5,1)
14097         RMC=PMAS(4,1)
14098         ALAM4=PARP(61)
14099         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
14100         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
14101         ALAM5=ALAM4*(ALAM4/RMB)**(2D0/23D0)
14102         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
14103         RMB2=RMB**2
14104         RMC2=RMC**2
14105 C...Massive quark forced creation threshold (in M**2).
14106         TMIN=1.01D0
14107 C...Set upper limit for X (ensures some X left for beam remnant).
14108         XMXC=1D0-2D0*PARP(111)/VINT(1)
14109  
14110         IF (MSTP(61).GE.1) THEN
14111 C...Initial values: flavours, momenta, virtualities.
14112           DO 100 JS=1,2
14113             NISGEN(JS,1)=0
14114  
14115 C...Special kinematics check for c/b quarks (that g -> c cbar or
14116 C...b bbar kinematically possible).
14117             KFLB=K(IMI(JS,1,1),2)
14118             KFLCB=IABS(KFLB)
14119             IF(KFBEAM(JS).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
14120 C...Check PT2MAX > mQ^2
14121               IF (VINT(56).LT.1.05D0*PMAS(PYCOMP(KFLCB),1)**2) THEN
14122                 CALL PYERRM(9,'(PYPTIS:) PT2MAX < 1.05 * MQ**2. '//
14123      &               'No Q creation possible.')
14124                 MINT(51)=1
14125                 RETURN
14126               ELSE
14127 C...Check for physical z values (m == MQ / sqrt(s))
14128 C...For creation diagram, x < z < (1-m)/(1+m(1-m))
14129                 FMQ=PMAS(KFLCB,1)/SQRT(SHTNOW(1))
14130                 ZMXCR=(1D0-FMQ)/(1D0+FMQ*(1D0-FMQ))
14131                 IF (XMI(JS,1).GT.0.9D0*ZMXCR) THEN
14132                   CALL PYERRM(9,'(PYPTIS:) No physical z value for '//
14133      &                 'Q creation.')
14134                   MINT(51)=1
14135                   RETURN
14136                 ENDIF
14137               ENDIF
14138             ENDIF
14139   100     CONTINUE
14140         ENDIF
14141  
14142         MINT(354)=0
14143 C...Zero joining array
14144         DO 110 MJ=1,240
14145           MJOIND(1,MJ)=0
14146           MJOIND(2,MJ)=0
14147   110   CONTINUE
14148  
14149 C----------------------------------------------------------------------
14150 C...MODE= 0: Generate a trial branching on interaction MINT(36) side
14151 C...MINT(30). Store if emission PT2 scale is largest so far.
14152 C...Also generate test joinings if MSTP(96)=1.
14153       ELSEIF(MODE.EQ.0) THEN
14154         IFAIL=-1
14155         MECOR=0
14156         ISUB=MINT(1)
14157         JS=MINT(30)
14158 C...No shower for structureless beam
14159         IF (MINT(44+JS).EQ.1) RETURN
14160         MI=MINT(36)
14161         SHAT=VINT(44)
14162 C...Absolute shower max scale = VINT(56)
14163         PT2=MIN(PT2NOW,VINT(56))
14164         IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) SHTNOW(MI)=SHAT
14165 C...Define for which processes ME corrections have been implemented.
14166         IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
14167           IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ
14168      &         .142.OR.ISUB.EQ.144) MECOR=1
14169           IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
14170           IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
14171 C...Calculate preweighting factor for ME-corrected processes.
14172           IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
14173         ENDIF
14174 C...Basic info on daughter for which to find mother.
14175         KFLB=K(IMI(JS,MI,1),2)
14176         KFLBA=IABS(KFLB)
14177 C...KSVCB: -1 for sea or first companion, 0 for valence or gluon, >1 for
14178 C...second companion.
14179         KSVCB=MAX(-1,IMI(JS,MI,2))
14180 C...Treat "first" companion of a pair like an ordinary sea quark
14181 C...(except that creation diagram is not allowed)
14182         IF(IMI(JS,MI,2).GT.IMISEP(MI)) KSVCB=-1
14183 C...X (rescaled to [0,1])
14184         XB=XMI(JS,MI)/VINT(142+JS)
14185 C...Massive quarks (use physical masses.)
14186         RMQ2=0D0
14187         MQMASS=0
14188         IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14189           RMQ2=RMC2
14190           IF (KFLBA.EQ.5) RMQ2=RMB2
14191 C...Special threshold treatment for non-photon beams
14192           IF (KFBEAM(JS).NE.22) MQMASS=KFLBA
14193         ENDIF
14194  
14195 C...Flags for parton distribution calls.
14196         MINT(105)=MINT(102+JS)
14197         MINT(109)=MINT(106+JS)
14198         VINT(120)=VINT(2+JS)
14199
14200 C...Calculate initial parton distribution weights.
14201         IF(XB.GE.XMXC) THEN
14202           RETURN
14203         ELSEIF(MQMASS.EQ.0) THEN
14204           CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
14205         ELSE
14206 C...Initialize massive quark PT2 dependent pdf underestimate.
14207           PT20=PT2
14208           CALL PYPDFU(KFBEAM(JS),XB,PT20,XFB)
14209 C.!.Tentative treatment of massive valence quarks.
14210           XQ0=MAX(1D-10,XPSVC(KFLB,KSVCB))
14211           XG0=XFB(21)
14212           TPM0=LOG(PT20/RMQ2)
14213           WPDF0=TPM0*XG0/XQ0
14214         ENDIF
14215         IF (KFLBA.LE.6) THEN
14216 C...For quarks, only include respective sea, val, or cmp part.
14217           IF (KSVCB.LE.0) THEN
14218             XFB(KFLB)=XPSVC(KFLB,KSVCB)
14219           ELSE
14220 C...Find companion's companion
14221             MISEA=0
14222   120       MISEA=MISEA+1
14223             IF (IMI(JS,MISEA,2).NE.IMI(JS,MI,1)) GOTO 120
14224             XS=XMI(JS,MISEA)
14225             XREM=VINT(142+JS)
14226             YS=XS/(XREM+XS)
14227 C...Momentum fraction of the companion quark.
14228 C...Rescale from XB = x/XREM to YB = x/(1-Sum_rest) -> factor (1-YS).
14229             YB=XB*(1D0-YS)
14230             XFB(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
14231           ENDIF
14232         ENDIF
14233  
14234 C...Determine overestimated z range: switch at c and b masses.
14235   130   IF (PT2.GT.TMIN*RMB2) THEN
14236           IZRG=3
14237           PT2MNE=MAX(TMIN*RMB2,PT2CUT)
14238           B0=23D0/6D0
14239           ALAM2=ALAM5**2
14240         ELSEIF(PT2.GT.TMIN*RMC2) THEN
14241           IZRG=2
14242           PT2MNE=MAX(TMIN*RMC2,PT2CUT)
14243           B0=25D0/6D0
14244           ALAM2=ALAM4**2
14245         ELSE
14246           IZRG=1
14247           PT2MNE=PT2CUT
14248           B0=27D0/6D0
14249           ALAM2=ALAM3**2
14250         ENDIF
14251 C...Divide Lambda by PARP(64) (equivalent to mult pT2 by PARP(64))
14252         ALAM2=ALAM2/PARP(64)
14253 C...Overestimated ZMAX:
14254         IF (MQMASS.EQ.0) THEN
14255 C...Massless
14256           ZMAX=1D0-0.5D0*(PT2MNE/SHTNOW(MI))*(SQRT(1D0+4D0*SHTNOW(MI)
14257      &         /PT2MNE)-1D0)
14258         ELSE
14259 C...Massive (limit for bremsstrahlung diagram > creation)
14260           FMQ=SQRT(RMQ2/SHTNOW(MI))
14261           ZMAX=1D0/(1D0+FMQ)
14262         ENDIF
14263         ZMIN=XB/XMXC
14264  
14265 C...If kinematically impossible then do not evolve.
14266         IF(PT2.LT.PT2CUT.OR.ZMAX.LE.ZMIN) RETURN
14267  
14268 C...Reset Altarelli-Parisi and PDF weights.
14269         DO 140 KFL=-5,5
14270           WTAP(KFL)=0D0
14271           WTPDF(KFL)=0D0
14272   140   CONTINUE
14273         WTAP(21)=0D0
14274         WTPDF(21)=0D0
14275 C...Zero joining weights and compute X(partner) and X(mother) values.
14276         IF (MSTP(96).NE.0) THEN
14277           NJN=0
14278           DO 150 MJ=1,MINT(31)
14279             WTAPJ(MJ)=0D0
14280             WTPDFJ(MJ)=0D0
14281             X1(MJ)=XMI(JS,MJ)/(VINT(142+JS)+XMI(JS,MJ))
14282             Y(MJ)=(XMI(JS,MI)+XMI(JS,MJ))/(VINT(142+JS)+XMI(JS,MJ)
14283      &           +XMI(JS,MI))
14284   150     CONTINUE
14285         ENDIF
14286  
14287 C...Approximate Altarelli-Parisi weights (integrated AP dz).
14288 C...q -> q, g -> q or q -> q + gamma (already set which).
14289         IF(KFLBA.LE.5) THEN
14290 C...Val and cmp quarks get an extra sqrt(z) to smooth their bumps.
14291           IF (KSVCB.LT.0) THEN
14292             WTAP(KFLB)=(8D0/3D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14293           ELSE
14294             RMIN=(1+SQRT(ZMIN))/(1-SQRT(ZMIN))
14295             RMAX=(1+SQRT(ZMAX))/(1-SQRT(ZMAX))
14296             WTAP(KFLB)=(8D0/3D0)*LOG(RMAX/RMIN)
14297           ENDIF
14298           WTAP(21)=0.5D0*(ZMAX-ZMIN)
14299           WTAPE=(2D0/9D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14300           IF(MOD(KFLBA,2).EQ.0) WTAPE=4D0*WTAPE
14301           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14302             WTAP(KFLB)=WTFF*WTAP(KFLB)
14303             WTAP(21)=WTGF*WTAP(21)
14304             WTAPE=WTFF*WTAPE
14305           ENDIF
14306           IF (KSVCB.GE.1) THEN
14307 C...Kill normal creation but add joining diagrams for cmp quark.
14308             WTAP(21)=0D0
14309             IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14310               CALL PYERRM(9,'(PYPTIS:) Sorry, I got a heavy companion'//
14311      &             " quark here. Not handled yet, giving up!")
14312               PT2=0D0
14313               MINT(51)=1
14314               RETURN
14315             ENDIF
14316 C...Check for possible joinings
14317             IF (MSTP(96).NE.0.AND.MJOIND(JS,MI).EQ.0) THEN
14318 C...Find companion's companion.
14319               MJ=0
14320   160         MJ=MJ+1
14321               IF (IMI(JS,MJ,2).NE.IMI(JS,MI,1)) GOTO 160
14322               IF (MJOIND(JS,MJ).EQ.0) THEN
14323                 Y(MI)=YB+YS
14324                 Z=YB/Y(MI)
14325                 WTAPJ(MJ)=Z*(1D0-Z)*0.5D0*(Z**2+(1D0-Z)**2)
14326                 IF (WTAPJ(MJ).GT.1D-6) THEN
14327                   NJN=1
14328                 ELSE
14329                   WTAPJ(MJ)=0D0
14330                 ENDIF
14331               ENDIF
14332 C...Add trial gluon joinings.
14333               DO 170 MJ=1,MINT(31)
14334                 KFLC=K(IMI(JS,MJ,1),2)
14335                 IF (KFLC.NE.21.OR.MJOIND(JS,MJ).NE.0) GOTO 170
14336                 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14337                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14338                 IF (WTAPJ(MJ).GT.1D-6) THEN
14339                   NJN=NJN+1
14340                 ELSE
14341                   WTAPJ(MJ)=0D0
14342                 ENDIF
14343   170         CONTINUE
14344             ENDIF
14345           ELSEIF (IMI(JS,MI,2).GE.0) THEN
14346 C...Kill creation diagram for val quarks and sea quarks with companions.
14347             WTAP(21)=0D0
14348           ELSEIF (MQMASS.EQ.0) THEN
14349 C...Extra safety factor for massless sea quark creation.
14350             WTAP(21)=WTAP(21)*1.25D0
14351           ENDIF
14352  
14353 C...  q -> g, g -> g.
14354         ELSEIF(KFLB.EQ.21) THEN
14355 C...Here we decide later whether a quark picked up is valence or
14356 C...sea, so we maintain the extra factor sqrt(z) since we deal
14357 C...with the *sum* of sea and valence in this context.
14358           WTAPQ=(16D0/3D0)*(SQRT(1D0/ZMIN)-SQRT(1D0/ZMAX))
14359 C...new: do not allow backwards evol to pick up heavy flavour.
14360           DO 180 KFL=1,MIN(3,MSTP(58))
14361             WTAP(KFL)=WTAPQ
14362             WTAP(-KFL)=WTAPQ
14363   180     CONTINUE
14364           WTAP(21)=6D0*LOG(ZMAX*(1D0-ZMIN)/(ZMIN*(1D0-ZMAX)))
14365           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14366             WTAPQ=WTFG*WTAPQ
14367             WTAP(21)=WTGG*WTAP(21)
14368           ENDIF
14369 C...Check for possible joinings (companions handled separately above)
14370           IF (MSTP(96).NE.0.AND.MINT(31).GE.2.AND.MJOIND(JS,MI).EQ.0)
14371      &         THEN
14372             DO 190 MJ=1,MINT(31)
14373               IF (MJ.EQ.MI.OR.MJOIND(JS,MJ).NE.0) GOTO 190
14374               KSVCC=IMI(JS,MJ,2)
14375               IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14376               IF (KSVCC.GE.1) GOTO 190
14377               KFLC=K(IMI(JS,MJ,1),2)
14378 C...Only try g -> g + g once.
14379               IF (MJ.GT.MI.AND.KFLC.EQ.21) GOTO 190
14380               Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14381               IF (KFLC.EQ.21) THEN
14382                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14383               ELSE
14384                 WTAPJ(MJ)=Z*4D0/3D0*(1D0+Z**2)
14385               ENDIF
14386               IF (WTAPJ(MJ).GT.1D-6) THEN
14387                 NJN=NJN+1
14388               ELSE
14389                 WTAPJ(MJ)=0D0
14390               ENDIF
14391   190       CONTINUE
14392           ENDIF
14393         ENDIF
14394  
14395 C...Initialize massive quark evolution
14396         IF (MQMASS.NE.0) THEN
14397           RML=(RMQ2+VINT(18))/ALAM2
14398           TML=LOG(RML)
14399           TPL=LOG((PT2+VINT(18))/ALAM2)
14400           TPM=LOG((PT2+VINT(18))/RMQ2)
14401           WN=WTAP(21)*WPDF0/B0
14402         ENDIF
14403  
14404  
14405 C...Loopback point for iteration
14406         NTRY=0
14407         NTHRES=0
14408   200   NTRY=NTRY+1
14409         IF(NTRY.GT.500) THEN
14410           CALL PYERRM(9,'(PYPTIS:) failed to evolve shower.')
14411           MINT(51)=1
14412           RETURN
14413         ENDIF
14414  
14415 C...  Calculate PDF weights and sum for evolution rate.
14416         WTSUM=0D0
14417         XFBO=MAX(1D-10,XFB(KFLB))
14418         DO 210 KFL=-5,5
14419           WTPDF(KFL)=XFB(KFL)/XFBO
14420           WTSUM=WTSUM+WTAP(KFL)*WTPDF(KFL)
14421   210   CONTINUE
14422 C...Only add gluon mother diagram for massless KFLB.
14423         IF(MQMASS.EQ.0) THEN
14424           WTPDF(21)=XFB(21)/XFBO
14425           WTSUM=WTSUM+WTAP(21)*WTPDF(21)
14426         ENDIF
14427         WTSUM=MAX(0.0001D0,WTSUM)
14428         WTSUMS=WTSUM
14429 C...Add joining diagrams where applicable.
14430         WTJOIN=0D0
14431         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
14432           DO 220 MJ=1,MINT(31)
14433             IF (WTAPJ(MJ).LT.1D-3) GOTO 220
14434             WTPDFJ(MJ)=1D0/XFBO
14435 C...x and x*pdf (+ sea/val) for parton C.
14436             KFLC=K(IMI(JS,MJ,1),2)
14437             KFLCA=IABS(KFLC)
14438             KSVCC=MAX(-1,IMI(JS,MJ,2))
14439             IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14440             MINT(30)=JS
14441             MINT(36)=MJ
14442             CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
14443             MINT(36)=MI
14444             IF (KFLCA.LE.6.AND.KSVCC.LE.0) THEN
14445               XFJ(KFLC)=XPSVC(KFLC,KSVCC)
14446             ELSEIF (KSVCC.GE.1) THEN
14447               print*, 'error! parton C is companion!'
14448             ENDIF
14449             WTPDFJ(MJ)=WTPDFJ(MJ)/XFJ(KFLC)
14450 C...x and x*pdf (+ sea/val) for parton A.
14451             KFLA=21
14452             KSVCA=0
14453             IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
14454               KFLA=KFLB
14455               KSVCA=KSVCB
14456             ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
14457               KFLA=KFLC
14458               KSVCA=KSVCC
14459             ENDIF
14460             MINT(30)=JS
14461             IF (KSVCA.LE.0) THEN
14462 C...Consider C the "evolved" parton if B is gluon. Val/sea
14463 C...counting will then be done correctly in PYPDFU.
14464               IF (KFLBA.EQ.21) MINT(36)=MJ
14465               CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
14466               MINT(36)=MI
14467               IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
14468             ELSE
14469 C...If parton A is companion, use Y(MI) and YS in call to PYFCMP.
14470               XFJ(KFLA)=PYFCMP(Y(MI)/VINT(140),YS/VINT(140),MSTP(87))
14471             ENDIF
14472             WTPDFJ(MJ)=XFJ(KFLA)*WTPDFJ(MJ)
14473             WTJOIN=WTJOIN+WTAPJ(MJ)*WTPDFJ(MJ)
14474   220     CONTINUE
14475         ENDIF
14476  
14477 C...Pick normal pT2 (in overestimated z range).
14478   230   PT2OLD=PT2
14479         WTSUM=WTSUMS
14480         PT2=ALAM2*((PT2+VINT(18))/ALAM2)**(PYR(0)**(B0/WTSUM))-VINT(18)
14481         KFLC=21
14482  
14483 C...Evolve q -> q gamma separately, pick it if larger pT.
14484         IF(KFLBA.LE.5) THEN
14485           PT2QED=(PT2OLD+VINT(18))*PYR(0)**(1D0/(AEM2PI*WTAPE))-VINT(18)
14486           IF(PT2QED.GT.PT2) THEN
14487             PT2=PT2QED
14488             KFLC=22
14489             KFLA=KFLB
14490           ENDIF
14491         ENDIF
14492  
14493 C...  Evolve massive quark creation separately.
14494         MCRQQ=0
14495         IF (MQMASS.NE.0) THEN
14496           PT2CR=(RMQ2+VINT(18))*(RML**(TPM/(TPL*PYR(0)**(-TML/WN)-TPM)))
14497      &         -VINT(18)
14498 C...  Ensure mininimum PT2CR and force creation near threshold.
14499           IF (PT2CR.LT.TMIN*RMQ2) THEN
14500             NTHRES=NTHRES+1
14501             IF (NTHRES.GT.50) THEN
14502               CALL PYERRM(9,'(PYPTIS:) no phase space left for '//
14503      &             'massive quark creation. Gave up trying.')
14504               MINT(51)=1
14505               RETURN
14506             ENDIF
14507             PT2=0D0
14508             PT2CR=TMIN*RMQ2
14509             MCRQQ=2
14510           ENDIF
14511 C...  Select largest PT2 (brems or creation):
14512           IF (PT2CR.GT.PT2) THEN
14513             MCRQQ=MAX(MCRQQ,1)
14514             WTSUM=0D0
14515             PT2=PT2CR
14516             KFLA=21
14517           ELSE
14518             MCRQQ=0
14519             KFLA=KFLB
14520           ENDIF
14521 C...  Compute logarithms for this PT2
14522           TPL=LOG((PT2+VINT(18))/ALAM2)
14523           TPM=LOG((PT2+VINT(18))/(RMQ2+VINT(18)))
14524           WTCRQQ=TPM/LOG(PT2/RMQ2)
14525         ENDIF
14526  
14527 C...Evolve joining separately
14528         MJOIN=0
14529         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
14530           PT2JN=ALAM2*((PT2OLD+VINT(18))/ALAM2)**(PYR(0)**(B0/WTJOIN))
14531      &         -VINT(18)
14532           IF (PT2JN.GE.PT2) THEN
14533             MJOIN=1
14534             PT2=PT2JN
14535           ENDIF
14536         ENDIF
14537  
14538 C...Loopback if crossed c/b mass thresholds.
14539         IF(IZRG.EQ.3.AND.PT2.LT.RMB2) THEN
14540           PT2=RMB2
14541          GOTO 130
14542         ELSEIF(IZRG.EQ.2.AND.PT2.LT.RMC2) THEN
14543           PT2=RMC2
14544           GOTO 130
14545         ENDIF
14546  
14547 C...Speed up shower. Skip if higher-PT acceptable branching
14548 C...already found somewhere else.
14549 C...Also finish if below lower cutoff.
14550  
14551         IF (PT2.LT.PT2MX.OR.PT2.LT.PT2CUT) RETURN
14552  
14553 C...Select parton A flavour (massive Q handled above.)
14554         IF (MQMASS.EQ.0.AND.KFLC.NE.22.AND.MJOIN.EQ.0) THEN
14555           WTRAN=PYR(0)*WTSUM
14556           KFLA=-6
14557   240     KFLA=KFLA+1
14558           WTRAN=WTRAN-WTAP(KFLA)*WTPDF(KFLA)
14559           IF(KFLA.LE.5.AND.WTRAN.GT.0D0) GOTO 240
14560           IF(KFLA.EQ.6) KFLA=21
14561         ELSEIF (MJOIN.EQ.1) THEN
14562 C...Tentative joining accept/reject.
14563           WTRAN=PYR(0)*WTJOIN
14564           MJ=0
14565   250     MJ=MJ+1
14566           WTRAN=WTRAN-WTAPJ(MJ)*WTPDFJ(MJ)
14567           IF(MJ.LE.MINT(31)-1.AND.WTRAN.GT.0D0) GOTO 250
14568           IF(MJOIND(JS,MJ).NE.0.OR.MJOIND(JS,MI).NE.0) THEN
14569             CALL PYERRM(9,'(PYPTIS:) Attempted double joining.'//
14570      &           ' Rejected.')
14571             GOTO 230
14572           ENDIF
14573 C...x*pdf (+ sea/val) at new pT2 for parton B.
14574           IF (KSVCB.LE.0) THEN
14575             MINT(30)=JS
14576             CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
14577             IF (KFLBA.LE.6) XFB(KFLB)=XPSVC(KFLB,KSVCB)
14578           ELSE
14579 C...Companion distributions do not evolve.
14580             XFB(KFLB)=XFBO
14581           ENDIF
14582           WTVETO=1D0/WTPDFJ(MJ)/XFB(KFLB)
14583           KFLC=K(IMI(JS,MJ,1),2)
14584           KFLCA=IABS(KFLC)
14585           KSVCC=MAX(-1,IMI(JS,MJ,2))
14586           IF (KSVCB.GE.1) KSVCC=-1
14587 C...x*pdf (+ sea/val) at new pT2 for parton C.
14588           MINT(30)=JS
14589           MINT(36)=MJ
14590           CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
14591           MINT(36)=MI
14592           IF (KFLCA.LE.6.AND.KSVCC.LE.0) XFJ(KFLC)=XPSVC(KFLC,KSVCC)
14593           WTVETO=WTVETO/XFJ(KFLC)
14594 C...x and x*pdf (+ sea/val) at new pT2 for parton A.
14595           KFLA=21
14596           KSVCA=0
14597           IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
14598             KFLA=KFLB
14599             KSVCA=KSVCB
14600           ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
14601             KFLA=KFLC
14602             KSVCA=KSVCC
14603           ENDIF
14604           IF (KSVCA.LE.0) THEN
14605             MINT(30)=JS
14606             IF (KFLB.EQ.21) MINT(36)=MJ
14607             CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
14608             MINT(36)=MI
14609             IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
14610           ELSE
14611             XFJ(KFLA)=PYFCMP(Y(MJ)/VINT(140),YS/VINT(140),MSTP(87))
14612           ENDIF
14613           WTVETO=WTVETO*XFJ(KFLA)
14614 C...Monte Carlo veto.
14615           IF (WTVETO.LT.PYR(0)) GOTO 200
14616 C...If accept, save PT2 of this joining.
14617           IF (PT2.GT.PT2MX) THEN
14618             PT2MX=PT2
14619             JSMX=2+JS
14620             MJN1MX=MJ
14621             MJN2MX=MI
14622             WTAPJ(MJ)=0D0
14623             NJN=0
14624           ENDIF
14625 C...Exit and continue evolution.
14626           GOTO 380
14627         ENDIF
14628         KFLAA=IABS(KFLA)
14629  
14630 C...Choose z value (still in overestimated range) and corrective weight.
14631 C...Unphysical z will be rejected below when Q2 has is computed.
14632         WTZ=0D0
14633  
14634 C...Note: ME and MQ>0 give corrections to overall weights, not shapes.
14635 C...q -> q + g or q -> q + gamma (already set which).
14636         IF (KFLAA.LE.5.AND.KFLBA.LE.5) THEN
14637           IF (KSVCB.LT.0) THEN
14638             Z=1D0-(1D0-ZMIN)*((1D0-ZMAX)/(1D0-ZMIN))**PYR(0)
14639           ELSE
14640             ZFAC=RMIN*(RMAX/RMIN)**PYR(0)
14641             Z=((1-ZFAC)/(1+ZFAC))**2
14642           ENDIF
14643           WTZ=0.5D0*(1D0+Z**2)
14644 C...Massive weight correction.
14645           IF (KFLBA.GE.4) WTZ=WTZ-Z*(1D0-Z)**2*RMQ2/PT2
14646 C...Valence quark weight correction (extra sqrt)
14647           IF (KSVCB.GE.0) WTZ=WTZ*SQRT(Z)
14648  
14649 C...q -> g + q.
14650 C...NB: MQ>0 not yet implemented. Forced absent above.
14651         ELSEIF (KFLAA.LE.5.AND.KFLB.EQ.21) THEN
14652           KFLC=KFLA
14653           Z=ZMAX/(1D0+PYR(0)*(SQRT(ZMAX/ZMIN)-1D0))**2
14654           WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
14655  
14656 C...g -> q + qbar.
14657         ELSEIF (KFLA.EQ.21.AND.KFLBA.LE.5) THEN
14658           KFLC=-KFLB
14659           Z=ZMIN+PYR(0)*(ZMAX-ZMIN)
14660           WTZ=Z**2+(1D0-Z)**2
14661 C...Massive correction
14662           IF (MQMASS.NE.0) THEN
14663             WTZ=WTZ+2D0*Z*(1D0-Z)*RMQ2/PT2
14664 C...Extra safety margin for light sea quark creation
14665           ELSEIF (KSVCB.LT.0) THEN
14666             WTZ=WTZ/1.25D0
14667           ENDIF
14668  
14669 C...g -> g + g.
14670         ELSEIF (KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14671           KFLC=21
14672           Z=1D0/(1D0+((1D0-ZMIN)/ZMIN)*((1D0-ZMAX)*ZMIN/
14673      &         (ZMAX*(1D0-ZMIN)))**PYR(0))
14674           WTZ=(1D0-Z*(1D0-Z))**2
14675         ENDIF
14676  
14677 C...Derive Q2 from pT2.
14678         Q2B=PT2/(1D0-Z)
14679         IF (KFLBA.GE.4) Q2B=Q2B-RMQ2
14680  
14681 C...Loopback if outside allowed z range for given pT2.
14682         RM2C=PYMASS(KFLC)**2
14683         PT2ADJ=Q2B-Z*(SHTNOW(MI)+Q2B)*(Q2B+RM2C)/SHTNOW(MI)
14684         IF (PT2ADJ.LT.1D-6) GOTO 230
14685  
14686 C...Loopback if nonordered in angle/rapidity.
14687         IF (MSTP(62).GE.3.AND.NISGEN(JS,MI).GE.1) THEN
14688           IF(PT2.GT.((1D0-Z)/(Z*(1D0-ZSAV(JS,MI))))**2*PT2SAV(JS,MI))
14689      &         GOTO 230
14690         ENDIF
14691  
14692 C...Select phi angle of branching at random.
14693         PHI=PARU(2)*PYR(0)
14694  
14695 C...Matrix-element corrections for some processes.
14696         IF (MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14697           IF (KFLAA.LE.20.AND.KFLBA.LE.20) THEN
14698             CALL PYMEWT(MECOR,1,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14699             WTZ=WTZ*WTME/WTFF
14700           ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.KFLBA.LE.20) THEN
14701             CALL PYMEWT(MECOR,2,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14702             WTZ=WTZ*WTME/WTGF
14703           ELSEIF(KFLAA.LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
14704             CALL PYMEWT(MECOR,3,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14705             WTZ=WTZ*WTME/WTFG
14706           ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14707             CALL PYMEWT(MECOR,4,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
14708             WTZ=WTZ*WTME/WTGG
14709           ENDIF
14710         ENDIF
14711  
14712 C...Parton distributions at new pT2 but old x.
14713         MINT(30)=JS
14714         CALL PYPDFU(KFBEAM(JS),XB,PT2,XFN)
14715 C...Treat val and cmp separately
14716         IF (KFLBA.LE.6.AND.KSVCB.LE.0) XFN(KFLB)=XPSVC(KFLB,KSVCB)
14717         IF (KSVCB.GE.1)
14718      &       XFN(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
14719         XFBN=XFN(KFLB)
14720         IF(XFBN.LT.1D-20) THEN
14721           IF(KFLA.EQ.KFLB) THEN
14722             WTAP(KFLB)=0D0
14723             GOTO 200
14724           ELSE
14725             XFBN=1D-10
14726             XFN(KFLB)=XFBN
14727           ENDIF
14728         ENDIF
14729         DO 260 KFL=-5,5
14730           XFB(KFL)=XFN(KFL)
14731   260   CONTINUE
14732         XFB(21)=XFN(21)
14733  
14734 C...Parton distributions at new pT2 and new x.
14735         XA=XB/Z
14736         MINT(30)=JS
14737         CALL PYPDFU(KFBEAM(JS),XA,PT2,XFA)
14738         IF (KFLBA.LE.5.AND.KFLAA.LE.5) THEN
14739 C...q -> q + g: only consider respective sea, val, or cmp content.
14740           IF (KSVCB.LE.0) THEN
14741             XFA(KFLA)=XPSVC(KFLA,KSVCB)
14742           ELSE
14743             YA=XA*(1D0-YS)
14744             XFA(KFLB)=PYFCMP(YA/VINT(140),YS/VINT(140),MSTP(87))
14745           ENDIF
14746         ENDIF
14747         XFAN=XFA(KFLA)
14748         IF(XFAN.LT.1D-20) THEN
14749           GOTO 200
14750         ENDIF
14751  
14752 C...If weighting fails continue evolution.
14753         WTTOT=0D0
14754         IF (MCRQQ.EQ.0) THEN
14755           WTPDFA=1D0/WTPDF(KFLA)
14756           WTTOT=WTZ*XFAN/XFBN*WTPDFA
14757         ELSEIF(MCRQQ.EQ.1) THEN
14758           WTPDFA=TPM/WPDF0
14759           WTTOT=WTCRQQ*WTZ*XFAN/XFBN*WTPDFA
14760           XBEST=TPM/TPM0*XQ0
14761         ELSEIF(MCRQQ.EQ.2) THEN
14762 C...Force massive quark creation.
14763           WTTOT=1D0
14764         ENDIF
14765  
14766 C...Loop back if trial emission fails.
14767         IF(WTTOT.GE.0D0.AND.WTTOT.LT.PYR(0)) GOTO 200
14768         WTACC=((1D0+PT2)/(0.25D0+PT2))**2
14769         IF(WTTOT.LT.0D0) THEN
14770           WRITE(CHWT,'(1P,E12.4)') WTTOT
14771           CALL PYERRM(19,'(PYPTIS:) Weight '//CHWT//' negative')
14772         ELSEIF(WTTOT.GT.WTACC) THEN
14773           WRITE(CHWT,'(1P,E12.4)') WTTOT
14774           IF (PT2.GT.PTEMAX.OR.WTTOT.GE.WTEMAX) THEN
14775 C...Too high weight: write out as error, but do not update error counter.
14776             IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)-1
14777             CALL PYERRM(19,
14778      &         '(PYPTIS:) Weight '//CHWT//' above unity')
14779             IF (PT2.GT.PTEMAX) PTEMAX=PT2
14780             IF (WTTOT.GT.WTEMAX) WTEMAX=WTTOT
14781           ELSE
14782             CALL PYERRM(9,
14783      &         '(PYPTIS:) Weight '//CHWT//' above unity')
14784           ENDIF
14785 C...Useful for debugging but commented out for distribution:
14786 C          print*, 'JS, MI',JS, MI
14787 C          print*, 'PT:',SQRT(PT2), ' MCRQQ',MCRQQ
14788 C          print*, 'A -> B C',KFLA, KFLB, KFLC
14789 C          XFAO=XFBO/WTPDFA
14790 C          print*, 'WT(Z,XFA,XFB)',WTZ, XFAN/XFAO, XFBO/XFBN
14791         ENDIF
14792  
14793 C...Save acceptable branching.
14794         IF(PT2.GT.PT2MX) THEN
14795           MIMX=MINT(36)
14796           JSMX=JS
14797           PT2MX=PT2
14798           KFLAMX=KFLA
14799           KFLCMX=KFLC
14800           RM2CMX=RM2C
14801           Q2BMX=Q2B
14802           ZMX=Z
14803           PT2AMX=PT2ADJ
14804           PHIMX=PHI
14805         ENDIF
14806  
14807 C----------------------------------------------------------------------
14808 C...MODE= 1: Accept stored shower branching. Update event record etc.
14809       ELSEIF (MODE.EQ.1) THEN
14810         MI=MIMX
14811         JS=JSMX
14812         SHAT=SHTNOW(MI)
14813         SIDE=3D0-2D0*JS
14814 C...Shift down rest of event record to make room for insertion.
14815         IT=IMISEP(MI)+1
14816         IM=IT+1
14817         IS=IMI(JS,MI,1)
14818         DO 280 I=N,IT,-1
14819           IF (K(I,3).GE.IT) K(I,3)=K(I,3)+2
14820           KT1=K(I,4)/MSTU(5)**2
14821           KT2=K(I,5)/MSTU(5)**2
14822           ID1=MOD(K(I,4),MSTU(5))
14823           ID2=MOD(K(I,5),MSTU(5))
14824           IM1=MOD(K(I,4)/MSTU(5),MSTU(5))
14825           IM2=MOD(K(I,5)/MSTU(5),MSTU(5))
14826           IF (ID1.GE.IT) ID1=ID1+2
14827           IF (ID2.GE.IT) ID2=ID2+2
14828           IF (IM1.GE.IT) IM1=IM1+2
14829           IF (IM2.GE.IT) IM2=IM2+2
14830           K(I,4)=KT1*MSTU(5)**2+IM1*MSTU(5)+ID1
14831           K(I,5)=KT2*MSTU(5)**2+IM2*MSTU(5)+ID2
14832           DO 270 IX=1,5
14833             K(I+2,IX)=K(I,IX)
14834             P(I+2,IX)=P(I,IX)
14835             V(I+2,IX)=V(I,IX)
14836   270     CONTINUE
14837           MCT(I+2,1)=MCT(I,1)
14838           MCT(I+2,2)=MCT(I,2)
14839   280   CONTINUE
14840         N=N+2
14841 C...Also update shifted-down pointers in IMI, IMISEP, and IPART.
14842         DO 290 JI=1,MINT(31)
14843           IF (IMI(1,JI,1).GE.IT) IMI(1,JI,1)=IMI(1,JI,1)+2
14844           IF (IMI(1,JI,2).GE.IT) IMI(1,JI,2)=IMI(1,JI,2)+2
14845           IF (IMI(2,JI,1).GE.IT) IMI(2,JI,1)=IMI(2,JI,1)+2
14846           IF (IMI(2,JI,2).GE.IT) IMI(2,JI,2)=IMI(2,JI,2)+2
14847           IF (JI.GE.MI) IMISEP(JI)=IMISEP(JI)+2
14848 C...Also update companion pointers to the present mother.
14849           IF (IMI(JS,JI,2).EQ.IS) IMI(JS,JI,2)=IM
14850   290   CONTINUE
14851         DO 300 IFS=1,NPART
14852           IF (IPART(IFS).GE.IT) IPART(IFS)=IPART(IFS)+2
14853   300   CONTINUE
14854 C...Zero entries dedicated for new timelike and mother partons.
14855         DO 320 I=IT,IT+1
14856           DO 310 J=1,5
14857             K(I,J)=0
14858             P(I,J)=0D0
14859             V(I,J)=0D0
14860   310     CONTINUE
14861           MCT(I,1)=0
14862           MCT(I,2)=0
14863   320   CONTINUE
14864  
14865 C...Define timelike and new mother partons. History.
14866         K(IT,1)=3
14867         K(IT,2)=KFLCMX
14868         K(IM,1)=14
14869         K(IM,2)=KFLAMX
14870         K(IS,3)=IM
14871         K(IT,3)=IM
14872 C...Set mother origin = side.
14873         K(IM,3)=MINT(83)+JS+2
14874         IF(MI.GE.2) K(IM,3)=MINT(83)+JS
14875  
14876 C...Define colour flow of branching.
14877         IM1=IM
14878         IM2=IM
14879 C...q -> q + gamma.
14880         IF(K(IT,2).EQ.22) THEN
14881           K(IT,1)=1
14882           ID1=IS
14883           ID2=IS
14884 C...q -> q + g.
14885         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5.AND.K(IT,2).EQ.21) THEN
14886           ID1=IT
14887           ID2=IS
14888 C...q -> g + q.
14889         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5) THEN
14890           ID1=IS
14891           ID2=IT
14892 C...qbar -> qbar + g.
14893         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5.AND.K(IT,2).EQ.21) THEN
14894           ID1=IS
14895           ID2=IT
14896 C...qbar -> g + qbar.
14897         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5) THEN
14898           ID1=IT
14899           ID2=IS
14900 C...g -> g + g; g -> q + qbar..
14901         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
14902           ID1=IS
14903           ID2=IT
14904         ELSE
14905           ID1=IT
14906           ID2=IS
14907         ENDIF
14908         IF(IM1.EQ.IM) K(IM1,4)=K(IM1,4)+ID1
14909         IF(IM2.EQ.IM) K(IM2,5)=K(IM2,5)+ID2
14910         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
14911         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
14912         IF(ID1.NE.ID2) THEN
14913           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
14914           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
14915         ENDIF
14916         IF(K(IT,1).EQ.1) THEN
14917           K(IT,4)=0
14918           K(IT,5)=0
14919         ENDIF
14920 C...Update IMI and colour tag arrays.
14921         IMI(JS,MI,1)=IM
14922         DO 330 MC=1,2
14923           MCT(IT,MC)=0
14924           MCT(IM,MC)=0
14925   330   CONTINUE
14926         DO 340 JCS=4,5
14927           KCS=JCS
14928 C...If mother flag not yet set for spacelike parton, trace it.
14929           IF (K(IS,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IS,-KCS,IM)
14930           IF(MINT(51).NE.0) RETURN
14931   340   CONTINUE
14932         DO 350 JCS=4,5
14933           KCS=JCS
14934 C...If mother flag not yet set for timelike parton, trace it.
14935           IF (K(IT,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IT,KCS,IM)
14936           IF(MINT(51).NE.0) RETURN
14937   350   CONTINUE
14938  
14939 C...Boost recoiling parton to compensate for Q2 scale.
14940         BETAZ=SIDE*(1D0-(1D0+Q2BMX/SHAT)**2)/
14941      &  (1D0+(1D0+Q2BMX/SHAT)**2)
14942         IR=IMI(3-JS,MI,1)
14943         CALL PYROBO(IR,IR,0D0,0D0,0D0,0D0,BETAZ)
14944  
14945 C...Define system to be rotated and boosted
14946 C...(not including the 2 just added partons)
14947 C...(but including the docu lines for first interaction)
14948         IMIN=IMISEP(MI-1)+1
14949         IF (MI.EQ.1) IMIN=MINT(83)+5
14950         IMAX=IMISEP(MI)-2
14951
14952 C...Rotate back system in phi to compensate for subsequent rotation.
14953         CALL PYROBO(IMIN,IMAX,0D0,-PHIMX,0D0,0D0,0D0)
14954  
14955 C...Define kinematics of new partons in old frame.
14956         IMAX=IMISEP(MI)
14957         P(IM,1)=SQRT(PT2AMX)*SHAT/(ZMX*(SHAT+Q2BMX))
14958         P(IM,3)=0.5D0*SQRT(SHAT)*((SHAT-Q2BMX)/((SHAT
14959      &       +Q2BMX)*ZMX)+(Q2BMX+RM2CMX)/SHAT)*SIDE
14960         P(IM,4)=SQRT(P(IM,1)**2+P(IM,3)**2)
14961         P(IT,1)=P(IM,1)
14962         P(IT,3)=P(IM,3)-0.5D0*(SHAT+Q2BMX)/SQRT(SHAT)*SIDE
14963         P(IT,4)=SQRT(P(IT,1)**2+P(IT,3)**2+RM2CMX)
14964         P(IT,5)=SQRT(RM2CMX)
14965
14966 C...Update internal line, now spacelike
14967         P(IS,1)=P(IM,1)-P(IT,1)
14968         P(IS,2)=P(IM,2)-P(IT,2)
14969         P(IS,3)=P(IM,3)-P(IT,3)
14970         P(IS,4)=P(IM,4)-P(IT,4)
14971         P(IS,5)=P(IS,4)**2-P(IS,1)**2-P(IS,2)**2-P(IS,3)**2
14972 C...Represent spacelike virtualities as -sqrt(abs(Q2)) .
14973         IF (P(IS,5).LT.0D0) THEN 
14974           P(IS,5)=-SQRT(ABS(P(IS,5)))
14975         ELSE
14976           P(IS,5)=SQRT(P(IS,5))
14977         ENDIF        
14978
14979 C...Boost entire system and rotate to new frame.
14980 C...(including docu lines)
14981         BETAX=(P(IM,1)+P(IR,1))/(P(IM,4)+P(IR,4))
14982         BETAZ=(P(IM,3)+P(IR,3))/(P(IM,4)+P(IR,4))
14983         IF(BETAX**2+BETAZ**2.GE.1D0) THEN
14984           CALL PYERRM(1,'(PYPTIS:) boost bigger than unity')
14985           MINT(51)=1
14986           IFAIL=-1
14987           RETURN
14988         ENDIF
14989         CALL PYROBO(IMIN,IMAX,0D0,0D0,-BETAX,0D0,-BETAZ)
14990         I1=IMI(1,MI,1)
14991         THETA=PYANGL(P(I1,3),P(I1,1))
14992         CALL PYROBO(IMIN,IMAX,-THETA,PHIMX,0D0,0D0,0D0)
14993  
14994 C...Global statistics.
14995         MINT(352)=MINT(352)+1
14996         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
14997         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
14998  
14999 C...Add parton with relevant pT scale for timelike shower.
15000         IF (K(IT,2).NE.22) THEN
15001           NPART=NPART+1
15002           IPART(NPART)=IT
15003           PTPART(NPART)=SQRT(PT2AMX)
15004         ENDIF
15005  
15006 C...Update saved variables.
15007         SHTNOW(MIMX)=SHTNOW(MIMX)/ZMX
15008         NISGEN(JSMX,MIMX)=NISGEN(JSMX,MIMX)+1
15009         XMI(JSMX,MIMX)=XMI(JSMX,MIMX)/ZMX
15010         PT2SAV(JSMX,MIMX)=PT2MX
15011         ZSAV(JS,MIMX)=ZMX
15012  
15013         KSA=IABS(K(IS,2))
15014         KMA=IABS(K(IM,2))
15015         IF (KSA.EQ.21.AND.KMA.GE.1.AND.KMA.LE.5) THEN
15016 C...Gluon reconstructs to quark.
15017 C...Decide whether newly created quark is valence or sea:
15018           MINT(30)=JS
15019           CALL PYPTMI(2,PT2NOW,PTDUM1,PTDUM2,IFAIL)
15020           IF(MINT(51).NE.0) RETURN
15021         ENDIF
15022         IF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.EQ.21) THEN
15023 C...Quark reconstructs to gluon.
15024 C...Now some guy may have lost his companion. Check.
15025           ICMP=IMI(JS,MI,2)
15026           IF (ICMP.GT.0) THEN
15027             CALL PYERRM(9,'(PYPTIS:) Sorry, companion quark radiated'
15028      &           //' away. Cannot handle that yet. Giving up.')
15029             MINT(51)=1
15030             RETURN
15031           ELSEIF(ICMP.LT.0) THEN
15032 C...A sea quark with companion still in BR was reconstructed to a gluon.
15033 C...Companion should now be removed from the beam remnant.
15034 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15035             ICMP=-ICMP
15036             IFL=-K(IS,2)
15037             DO 370 JCMP=ICMP,NVC(JS,IFL)-1
15038               XASSOC(JS,IFL,JCMP)=XASSOC(JS,IFL,JCMP+1)
15039               DO 360 JI=1,MINT(31)
15040                 KMI=-IMI(JS,JI,2)
15041                 JFL=-K(IMI(JS,JI,1),2)
15042                 IF (KMI.EQ.JCMP+1.AND.JFL.EQ.IFL) IMI(JS,JI,2)=IMI(JS,JI
15043      &               ,2)+1
15044   360         CONTINUE
15045   370       CONTINUE
15046             NVC(JS,IFL)=NVC(JS,IFL)-1
15047           ENDIF
15048 C...Set gluon IMI(JS,MI,2) = 0.
15049           IMI(JS,MI,2)=0
15050         ELSEIF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.NE.21) THEN
15051 C...Quark reconstructing to quark. If sea with companion still in BR
15052 C...then update associated x value.
15053 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15054           IF (IMI(JS,MI,2).LT.0) THEN
15055             ICMP=-IMI(JS,MI,2)
15056             IFL=-K(IS,2)
15057             XASSOC(JS,IFL,ICMP)=XMI(JSMX,MIMX)
15058           ENDIF
15059         ENDIF
15060  
15061       ENDIF
15062  
15063 C...If reached this point, normal exit.
15064   380 IFAIL=0
15065  
15066       RETURN
15067       END
15068  
15069 C*********************************************************************
15070  
15071 C...PYMEMX
15072 C...Generates maximum ME weight in some initial-state showers.
15073 C...Inparameter MECOR: kind of hard scattering process
15074 C...Outparameter WTFF: maximum weight for fermion -> fermion
15075 C...             WTGF: maximum weight for gluon/photon -> fermion
15076 C...             WTFG: maximum weight for fermion -> gluon/photon
15077 C...             WTGG: maximum weight for gluon -> gluon
15078  
15079       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
15080  
15081 C...Double precision and integer declarations.
15082       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15083       IMPLICIT INTEGER(I-N)
15084       INTEGER PYK,PYCHGE,PYCOMP
15085 C...Commonblocks.
15086       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15087       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15088       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15089       COMMON/PYINT1/MINT(400),VINT(400)
15090       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15091       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15092  
15093 C...Default maximum weight.
15094       WTFF=1D0
15095       WTGF=1D0
15096       WTFG=1D0
15097       WTGG=1D0
15098  
15099 C...Select maximum weight by process.
15100       IF(MECOR.EQ.1) THEN
15101         WTFF=1D0
15102         WTGF=3D0
15103       ELSEIF(MECOR.EQ.2) THEN
15104         WTFG=1D0
15105         WTGG=1D0
15106       ENDIF
15107  
15108       RETURN
15109       END
15110  
15111 C*********************************************************************
15112  
15113 C...PYMEWT
15114 C...Calculates actual ME weight in some initial-state showers.
15115 C...Inparameter MECOR: kind of hard scattering process
15116 C...            IFLCB: flavour combination of branching,
15117 C...                   1 for fermion -> fermion,
15118 C...                   2 for gluon/photon -> fermion
15119 C...                   3 for fermion -> gluon/photon,
15120 C...                   4 for gluon -> gluon
15121 C...            Q2:    Q2 value of shower branching
15122 C...            Z:     Z value of branching
15123 C...In+outparameter PHIBR: azimuthal angle of branching
15124 C...Outparameter WTME: actual ME weight
15125  
15126       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
15127  
15128 C...Double precision and integer declarations.
15129       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15130       IMPLICIT INTEGER(I-N)
15131       INTEGER PYK,PYCHGE,PYCOMP
15132 C...Commonblocks.
15133       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15134       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15135       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15136       COMMON/PYINT1/MINT(400),VINT(400)
15137       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15138       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15139  
15140 C...Default output.
15141       WTME=1D0
15142  
15143 C...Define kinematics of shower branching in Mandelstam variables.
15144       SQM=VINT(44)
15145       SH=SQM/Z
15146       TH=-Q2
15147       UH=Q2-SQM*(1D0-Z)/Z
15148  
15149 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
15150       IF(MECOR.EQ.1) THEN
15151         IF(IFLCB.EQ.1) THEN
15152           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
15153         ELSEIF(IFLCB.EQ.2) THEN
15154           WTME=(SH**2+TH**2+2D0*SQM*UH)/((SH-SQM)**2+SQM**2)
15155         ENDIF
15156  
15157 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
15158       ELSEIF(MECOR.EQ.2) THEN
15159         IF(IFLCB.EQ.3) THEN
15160           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
15161         ELSEIF(IFLCB.EQ.4) THEN
15162           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
15163         ENDIF
15164
15165 C...Matrix-element corrections for q + qbar -> Higgs (h0)
15166       ELSEIF(MECOR.EQ.3) THEN
15167         IF(IFLCB.EQ.2) THEN
15168           WTME=(SH**2+TH**2+2D0*(SQM-TH)*(SQM-SH))/
15169      1      (SH**2+2D0*SQM*(SQM-SH))
15170         ENDIF
15171       ENDIF
15172  
15173       RETURN
15174       END
15175  
15176 C*********************************************************************
15177  
15178 C...PYPTMI
15179 C...Handles the generation of additional interactions in the new
15180 C...multiple interactions framework.
15181 C...MODE=-1 : Initalize MI from scratch.
15182 C...MODE= 0 : Generate trial interaction. Start at PT2NOW, solve
15183 C...         Sudakov for PT2, abort if below PT2CUT.
15184 C...MODE= 1 : Accept interaction at PT2NOW and store variables.
15185 C...MODE= 2 : Decide sea/val/cmp for kicked-out quark at PT2NOW
15186 C...PT2NOW  : Starting (max) PT2 scale for evolution.
15187 C...PT2CUT  : Lower limit for evolution.
15188 C...PT2     : Result of evolution. Generated PT2 for trial interaction.
15189 C...IFAIL   : Status return code.
15190 C...         = 0: All is well.
15191 C...         < 0: Phase space exhausted, generation to be terminated.
15192 C...         > 0: Additional interaction vetoed, but continue evolution.
15193  
15194       SUBROUTINE PYPTMI(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
15195 C...Double precision and integer declarations.
15196       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15197       IMPLICIT INTEGER(I-N)
15198       INTEGER PYK,PYCHGE,PYCOMP
15199 C...Parameter statement for maximum size of showers.
15200       PARAMETER (MAXNUR=1000)
15201 C...Commonblocks.
15202       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
15203       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15204       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15205       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
15206       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
15207       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15208       COMMON/PYINT1/MINT(400),VINT(400)
15209       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15210       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
15211       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
15212       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
15213       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
15214      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
15215      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
15216       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
15217      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
15218       COMMON/PYCTAG/NCT,MCT(4000,2)
15219 C...Local arrays and saved variables.
15220       DIMENSION WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25)
15221  
15222       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
15223      &     /PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/,
15224      &     /PYISMX/,/PYCTAG/
15225       SAVE XT2FAC,SIGS
15226  
15227       IFAIL=0
15228 C...Set MI subprocess = QCD 2 -> 2.
15229       ISUB=96
15230  
15231 C----------------------------------------------------------------------
15232 C...MODE=-1: Initialize from scratch
15233       IF (MODE.EQ.-1) THEN
15234 C...Initialize PT2 array.
15235         PT2MI(1)=VINT(54)
15236 C...Initialize list of incoming beams and partons from two sides.
15237         DO 110 JS=1,2
15238           DO 100 MI=1,240
15239             IMI(JS,MI,1)=0
15240             IMI(JS,MI,2)=0
15241   100     CONTINUE
15242           NMI(JS)=1
15243           IMI(JS,1,1)=MINT(84)+JS
15244           IMI(JS,1,2)=0
15245           XMI(JS,1)=VINT(40+JS)
15246 C...Rescale x values to fractions of photon energy.
15247           IF(MINT(18+JS).EQ.1) XMI(JS,1)=VINT(40+JS)/VINT(154+JS)
15248 C...Hard reset: hard interaction initiators motherless by definition.
15249           K(MINT(84)+JS,3)=2+JS
15250           K(MINT(84)+JS,4)=MOD(K(MINT(84)+JS,4),MSTU(5))
15251           K(MINT(84)+JS,5)=MOD(K(MINT(84)+JS,5),MSTU(5))
15252   110   CONTINUE
15253         IMISEP(0)=MINT(84)
15254         IMISEP(1)=N
15255         IF (MOD(MSTP(81),10).GE.1) THEN
15256           IF(MSTP(82).LE.1) THEN
15257             SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0
15258      &           ,5))
15259             IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
15260      &           VINT(317)/(VINT(318)*VINT(320))
15261             XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
15262           ELSE
15263             XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
15264      &           MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
15265           ENDIF
15266         ENDIF
15267 C...Zero entries relating to scatterings beyond the first.
15268         DO 120 MI=2,240
15269           IMI(1,MI,1)=0
15270           IMI(2,MI,1)=0
15271           IMI(1,MI,2)=0
15272           IMI(2,MI,2)=0
15273           IMISEP(MI)=IMISEP(1)
15274           PT2MI(MI)=0D0
15275           XMI(1,MI)=0D0
15276           XMI(2,MI)=0D0
15277   120   CONTINUE
15278 C...Initialize factors for PDF reshaping.
15279         DO 140 JS=1,2
15280           KFBEAM(JS)=MINT(10+JS)
15281           IF(MINT(18+JS).EQ.1) KFBEAM(JS)=22
15282           KFABM=IABS(KFBEAM(JS))
15283           KFSBM=ISIGN(1,KFBEAM(JS))
15284  
15285 C...Zero flavour content of incoming beam particle.
15286           KFIVAL(JS,1)=0
15287           KFIVAL(JS,2)=0
15288           KFIVAL(JS,3)=0
15289 C...  Flavour content of baryon.
15290           IF(KFABM.GT.1000) THEN
15291             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
15292             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
15293             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
15294 C...  Flavour content of pi+-, K+-.
15295           ELSEIF(KFABM.EQ.211) THEN
15296             KFIVAL(JS,1)=KFSBM*2
15297             KFIVAL(JS,2)=-KFSBM
15298           ELSEIF(KFABM.EQ.321) THEN
15299             KFIVAL(JS,1)=-KFSBM*3
15300             KFIVAL(JS,2)=KFSBM*2
15301 C...  Flavour content of pi0, gamma, K0S, K0L not defined yet.
15302           ENDIF
15303  
15304 C...Zero initial valence and companion content.
15305           DO 130 IFL=-6,6
15306             NVC(JS,IFL)=0
15307   130     CONTINUE
15308   140   CONTINUE
15309 C...Set up colour line tags starting from hard interaction initiators.
15310         NCT=0
15311 C...Reset colour tag array and colour processing flags.
15312         DO 150 I=IMISEP(0)+1,N
15313           MCT(I,1)=0
15314           MCT(I,2)=0
15315           K(I,4)=MOD(K(I,4),MSTU(5)**2)
15316           K(I,5)=MOD(K(I,5),MSTU(5)**2)
15317   150   CONTINUE
15318 C...  Consider each side in turn.
15319         DO 170 JS=1,2
15320           I1=IMI(JS,1,1)
15321           I2=IMI(3-JS,1,1)
15322           DO 160 JCS=4,5
15323             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
15324      &           GOTO 160
15325             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 160
15326             KCS=JCS
15327             CALL PYCTTR(I1,KCS,I2)
15328             IF(MINT(51).NE.0) RETURN
15329   160     CONTINUE
15330   170   CONTINUE
15331  
15332 C...Range checking for companion quark pdf large-x param.
15333         IF (MSTP(87).LT.0) THEN
15334           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15335      &         ' MSTP(87)=0')
15336           MSTP(87)=0
15337         ELSEIF (MSTP(87).GT.4) THEN
15338           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15339      &         ' MSTP(87)=4')
15340           MSTP(87)=4
15341         ENDIF
15342  
15343 C----------------------------------------------------------------------
15344 C...MODE=0: Generate trial interaction. Return codes:
15345 C...IFAIL < 0: Phase space exhausted, generation to be terminated.
15346 C...IFAIL = 0: Additional interaction generated at PT2.
15347 C...IFAIL > 0: Additional interaction vetoed, but continue evolution.
15348       ELSEIF (MODE.EQ.0) THEN
15349 C...Abolute MI max scale = VINT(62)
15350         XT2=4D0*MIN(PT2NOW,VINT(62))/VINT(2)
15351   180   IF(MSTP(82).LE.1) THEN
15352           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
15353           IF(XT2.LT.VINT(149)) IFAIL=-2
15354         ELSE
15355           IF(XT2.LE.0.01001D0*VINT(149)) THEN
15356             IFAIL=-3
15357           ELSE
15358             XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
15359      &           LOG(PYR(0)))-VINT(149)
15360           ENDIF
15361         ENDIF
15362 C...Also exit if below lower limit or if higher trial branching
15363 C...already found.
15364         PT2=0.25D0*VINT(2)*XT2
15365         IF (PT2.LE.PT2CUT) IFAIL=-4
15366         IF (PT2.LE.PT2MX) IFAIL=-5
15367         IF (IFAIL.NE.0) THEN
15368           PT2=0D0
15369           RETURN
15370         ENDIF
15371         IF(MSTP(82).GE.2) PT2=MAX(0.25D0*VINT(2)*0.01D0*VINT(149),PT2)
15372         VINT(25)=4D0*PT2/VINT(2)
15373         XT2=VINT(25)
15374  
15375 C...Choose tau and y*. Calculate cos(theta-hat).
15376         IF(PYR(0).LE.COEF(ISUB,1)) THEN
15377           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
15378           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
15379         ELSE
15380           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
15381         ENDIF
15382         VINT(21)=TAU
15383 C...New: require shat > 1.
15384         IF(TAU*VINT(2).LT.1D0) GOTO 180
15385         CALL PYKLIM(2)
15386         RYST=PYR(0)
15387         MYST=1
15388         IF(RYST.GT.COEF(ISUB,8)) MYST=2
15389         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
15390         CALL PYKMAP(2,MYST,PYR(0))
15391         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
15392  
15393 C...Check that x not used up. Accept or reject kinematical variables.
15394         X1M=SQRT(TAU)*EXP(VINT(22))
15395         X2M=SQRT(TAU)*EXP(-VINT(22))
15396         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 180
15397         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
15398         CALL PYSIGH(NCHN,SIGS)
15399         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
15400         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 180
15401         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
15402  
15403 C...Save if highest PT so far.
15404         IF (PT2.GT.PT2MX) THEN
15405           JSMX=0
15406           MIMX=MINT(31)+1
15407           PT2MX=PT2
15408         ENDIF
15409  
15410 C----------------------------------------------------------------------
15411 C...MODE=1: Generate and save accepted scattering.
15412       ELSEIF (MODE.EQ.1) THEN
15413         PT2=PT2NOW
15414 C...Reset K, P, V, and MCT vectors.
15415         DO 200 I=N+1,N+4
15416           DO 190 J=1,5
15417             K(I,J)=0
15418             P(I,J)=0D0
15419             V(I,J)=0D0
15420   190     CONTINUE
15421           MCT(I,1)=0
15422           MCT(I,2)=0
15423   200   CONTINUE
15424  
15425         NTRY=0
15426 C...Choose flavour of reacting partons (and subprocess).
15427   210   NTRY=NTRY+1
15428         IF (NTRY.GT.50) THEN
15429           CALL PYERRM(9,'(PYPTMI:) Unable to generate additional '
15430      &               //'interaction. Giving up!')
15431           MINT(51)=1
15432           RETURN
15433         ENDIF
15434         RSIGS=SIGS*PYR(0)
15435         DO 220 ICHN=1,NCHN
15436           KFL1=ISIG(ICHN,1)
15437           KFL2=ISIG(ICHN,2)
15438           ICONMI=ISIG(ICHN,3)
15439           RSIGS=RSIGS-SIGH(ICHN)
15440           IF(RSIGS.LE.0D0) GOTO 230
15441   220   CONTINUE
15442  
15443 C...Reassign to appropriate process codes.
15444   230   ISUBMI=ICONMI/10
15445         ICONMI=MOD(ICONMI,10)
15446  
15447 C...Choose new quark flavour for annihilation graphs
15448         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
15449           SH=VINT(21)*VINT(2)
15450           CALL PYWIDT(21,SH,WDTP,WDTE)
15451   240     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
15452           DO 250 I=1,MDCY(21,3)
15453             KFLF=KFDP(I+MDCY(21,2)-1,1)
15454             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
15455             IF(RKFL.LE.0D0) GOTO 260
15456   250     CONTINUE
15457   260     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
15458             IF(KFLF.GE.4) GOTO 240
15459           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
15460             KFLF=4
15461             ICONMI=ICONMI-2
15462           ELSEIF(ISUBMI.EQ.53) THEN
15463             KFLF=5
15464             ICONMI=ICONMI-4
15465           ENDIF
15466         ENDIF
15467  
15468 C...Final state flavours and colour flow: default values
15469         JS=1
15470         KFL3=KFL1
15471         KFL4=KFL2
15472         KCC=20
15473         KCS=ISIGN(1,KFL1)
15474  
15475         IF(ISUBMI.EQ.11) THEN
15476 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
15477           KCC=ICONMI
15478           IF(KFL1*KFL2.LT.0) KCC=KCC+2
15479  
15480         ELSEIF(ISUBMI.EQ.12) THEN
15481 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
15482           KFL3=ISIGN(KFLF,KFL1)
15483           KFL4=-KFL3
15484           KCC=4
15485  
15486         ELSEIF(ISUBMI.EQ.13) THEN
15487 C...f + fbar -> g + g; th arbitrary
15488           KFL3=21
15489           KFL4=21
15490           KCC=ICONMI+4
15491  
15492         ELSEIF(ISUBMI.EQ.28) THEN
15493 C...f + g -> f + g; th = (p(f)-p(f))**2
15494           IF(KFL1.EQ.21) JS=2
15495           KCC=ICONMI+6
15496           IF(KFL1.EQ.21) KCC=KCC+2
15497           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
15498           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
15499  
15500         ELSEIF(ISUBMI.EQ.53) THEN
15501 C...g + g -> f + fbar; th arbitrary
15502           KCS=(-1)**INT(1.5D0+PYR(0))
15503           KFL3=ISIGN(KFLF,KCS)
15504           KFL4=-KFL3
15505           KCC=ICONMI+10
15506  
15507         ELSEIF(ISUBMI.EQ.68) THEN
15508 C...g + g -> g + g; th arbitrary
15509           KCC=ICONMI+12
15510           KCS=(-1)**INT(1.5D0+PYR(0))
15511         ENDIF
15512  
15513 C...Check that massive sea quarks have non-zero phase space for g -> Q Q
15514         IF (IABS(KFL3).EQ.4.OR.IABS(KFL4).EQ.4.OR.IABS(KFL3).EQ.5
15515      &       .OR.IABS(KFL4).EQ.5) THEN
15516           RMMAX2=MAX(PMAS(PYCOMP(KFL3),1),PMAS(PYCOMP(KFL4),1))**2
15517           IF (PT2.LE.1.05*RMMAX2) THEN
15518             IF (NTRY.EQ.1) CALL PYERRM(9,'(PYPTMI:) Heavy quarks'
15519      &           //' created below threshold. Rejected.')
15520             GOTO 210
15521           ENDIF
15522         ENDIF
15523  
15524 C...Store flavours of scattering.
15525         MINT(13)=KFL1
15526         MINT(14)=KFL2
15527         MINT(15)=KFL1
15528         MINT(16)=KFL2
15529         MINT(21)=KFL3
15530         MINT(22)=KFL4
15531  
15532 C...Set flavours and mothers of scattering partons.
15533         K(N+1,1)=14
15534         K(N+2,1)=14
15535         K(N+3,1)=3
15536         K(N+4,1)=3
15537         K(N+1,2)=KFL1
15538         K(N+2,2)=KFL2
15539         K(N+3,2)=KFL3
15540         K(N+4,2)=KFL4
15541         K(N+1,3)=MINT(83)+1
15542         K(N+2,3)=MINT(83)+2
15543         K(N+3,3)=N+1
15544         K(N+4,3)=N+2
15545  
15546 C...Store colour connection indices.
15547         DO 270 J=1,2
15548           JC=J
15549           IF(KCS.EQ.-1) JC=3-J
15550           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
15551           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
15552           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
15553           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
15554   270   CONTINUE
15555  
15556 C...Store incoming and outgoing partons in their CM-frame.
15557         SHR=SQRT(VINT(21))*VINT(1)
15558         P(N+1,3)=0.5D0*SHR
15559         P(N+1,4)=0.5D0*SHR
15560         P(N+2,3)=-0.5D0*SHR
15561         P(N+2,4)=0.5D0*SHR
15562         P(N+3,5)=PYMASS(K(N+3,2))
15563         P(N+4,5)=PYMASS(K(N+4,2))
15564         IF(P(N+3,5)+P(N+4,5).GE.SHR) THEN
15565           IFAIL=1
15566           RETURN
15567         ENDIF
15568         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
15569         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
15570         P(N+4,4)=SHR-P(N+3,4)
15571         P(N+4,3)=-P(N+3,3)
15572  
15573 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
15574         PHI=PARU(2)*PYR(0)
15575         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
15576  
15577 C...Global statistics.
15578         MINT(351)=MINT(351)+1
15579         VINT(351)=VINT(351)+SQRT(P(N+3,1)**2+P(N+3,2)**2)
15580         IF (MINT(351).EQ.1) VINT(356)=SQRT(P(N+3,1)**2+P(N+3,2)**2)
15581  
15582 C...Keep track of loose colour ends and information on scattering.
15583         MINT(31)=MINT(31)+1
15584         MINT(36)=MINT(31)
15585         PT2MI(MINT(36))=PT2
15586         IMISEP(MINT(31))=N+4
15587         DO 280 JS=1,2
15588           IMI(JS,MINT(31),1)=N+JS
15589           IMI(JS,MINT(31),2)=0
15590           XMI(JS,MINT(31))=VINT(40+JS)
15591           NMI(JS)=NMI(JS)+1
15592 C...Update cumulative counters
15593           VINT(142+JS)=VINT(142+JS)-VINT(40+JS)
15594           VINT(150+JS)=VINT(150+JS)+VINT(40+JS)
15595   280   CONTINUE
15596  
15597 C...Add to list of final state partons
15598         IPART(NPART+1)=N+3
15599         IPART(NPART+2)=N+4
15600         PTPART(NPART+1)=SQRT(PT2)
15601         PTPART(NPART+2)=SQRT(PT2)
15602         NPART=NPART+2
15603  
15604 C...Initialize ISR
15605         NISGEN(1,MINT(31))=0
15606         NISGEN(2,MINT(31))=0
15607  
15608 C...Update ER
15609         N=N+4
15610         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
15611           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
15612           MINT(51)=1
15613           RETURN
15614         ENDIF
15615  
15616 C...Finally, assign colour tags to new partons
15617         DO 300 JS=1,2
15618           I1=IMI(JS,MINT(31),1)
15619           I2=IMI(3-JS,MINT(31),1)
15620           DO 290 JCS=4,5
15621             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
15622      &           GOTO 290
15623             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 290
15624             KCS=JCS
15625             CALL PYCTTR(I1,KCS,I2)
15626             IF(MINT(51).NE.0) RETURN
15627   290     CONTINUE
15628   300   CONTINUE
15629  
15630 C----------------------------------------------------------------------
15631 C...MODE=2: Decide whether quarks in last scattering were valence,
15632 C...companion, or sea.
15633       ELSEIF (MODE.EQ.2) THEN
15634         JS=MINT(30)
15635         MI=MINT(36)
15636         PT2=PT2NOW
15637         KFSBM=ISIGN(1,MINT(10+JS))
15638         IFL=K(IMI(JS,MI,1),2)
15639         IMI(JS,MI,2)=0
15640         IF (IABS(IFL).GE.6) THEN
15641           IF (IABS(IFL).EQ.6) THEN
15642             CALL PYERRM(29,'(PYPTMI:) top in initial state!')
15643           ENDIF
15644           RETURN
15645         ENDIF
15646 C...Get PDFs at X(rescaled) and PT2 of the current initiator.
15647 C...(Do not include the parton itself in the X rescaling.)
15648         X=XMI(JS,MI)
15649         XRSC=X/(VINT(142+JS)+X)
15650 C...Note: XPSVC = x*pdf.
15651         MINT(30)=JS
15652         CALL PYPDFU(KFBEAM(JS),XRSC,PT2,XPQ)
15653         SEA=XPSVC(IFL,-1)
15654         VAL=XPSVC(IFL,0)
15655         CMP=0D0
15656         DO 310 IVC=1,NVC(JS,IFL)
15657           CMP=CMP+XPSVC(IFL,IVC)
15658   310   CONTINUE
15659  
15660 C...Decide (Extra factor x cancels in the dvision).
15661   320   RVCS=PYR(0)*(SEA+VAL+CMP)
15662         IVNOW=1
15663   330   IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
15664 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
15665           IVNOW=0
15666           IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
15667           IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
15668           IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
15669           IF(KFIVAL(JS,1).EQ.0) THEN
15670             IF(KFBEAM(JS).EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
15671             IF(KFBEAM(JS).EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
15672             IF((KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310).AND.
15673      &           (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
15674           ELSE
15675 C...Count down valence remaining. Do not count current scattering.
15676             DO 340 I1=1,NMI(JS)
15677               IF (I1.EQ.MINT(36)) GOTO 340
15678               IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
15679      &             IVNOW=IVNOW-1
15680   340       CONTINUE
15681           ENDIF
15682           IF(IVNOW.EQ.0) GOTO 330
15683 C...Mark valence.
15684           IMI(JS,MI,2)=0
15685 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
15686           IF(KFIVAL(JS,1).EQ.0) THEN
15687             IF(KFBEAM(JS).EQ.111.OR.KFBEAM(JS).EQ.22) THEN
15688               KFIVAL(JS,1)=IFL
15689               KFIVAL(JS,2)=-IFL
15690             ELSEIF(KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310) THEN
15691               KFIVAL(JS,1)=IFL
15692               IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
15693               IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
15694             ENDIF
15695           ENDIF
15696  
15697         ELSEIF (RVCS.LE.VAL+SEA) THEN
15698 C...If sea, add opposite sign companion parton. Store X and I.
15699           NVC(JS,-IFL)=NVC(JS,-IFL)+1
15700           XASSOC(JS,-IFL,NVC(JS,-IFL))=XMI(JS,MI)
15701 C...Set pointer to companion
15702           IMI(JS,MI,2)=-NVC(JS,-IFL)
15703  
15704         ELSE
15705 C...If companion, decide which one.
15706           IF (NVC(JS,IFL).EQ.0) THEN
15707             CMP=0D0
15708             CALL PYERRM(9,'(PYPTMI:) No cmp quark, but pdf != 0!')
15709             GOTO 320
15710           ENDIF
15711           CMPSUM=VAL+SEA
15712           ISEL=0
15713   350     ISEL=ISEL+1
15714           CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
15715           IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 350
15716 C...Find original sea (anti-)quark. Do not consider current scattering.
15717           IASSOC=0
15718           DO 360 I1=1,NMI(JS)
15719             IF (I1.EQ.MINT(36)) GOTO 360
15720             IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 360
15721             IF (-IMI(JS,I1,2).EQ.ISEL) THEN
15722               IMI(JS,MI,2)=IMI(JS,I1,1)
15723               IMI(JS,I1,2)=IMI(JS,MI,1)
15724             ENDIF
15725   360     CONTINUE
15726 C...Mark companion "out-kicked".
15727           XASSOC(JS,IFL,ISEL)=-XASSOC(JS,IFL,ISEL)
15728         ENDIF
15729  
15730       ENDIF
15731       RETURN
15732       END
15733  
15734 C*********************************************************************
15735  
15736 C...PYFCMP: Auxiliary to PYPDFU and PYPTIS.
15737 C...Giving the x*f pdf of a companion quark, with its partner at XS,
15738 C...using an approximate gluon density like (1-X)^NPOW/X. The value
15739 C...corresponds to an unrescaled range between 0 and 1-X.
15740  
15741       FUNCTION PYFCMP(XC,XS,NPOW)
15742       IMPLICIT NONE
15743       DOUBLE PRECISION XC, XS, Y, PYFCMP,FAC
15744       INTEGER NPOW
15745  
15746       PYFCMP=0D0
15747 C...Parent gluon momentum fraction
15748       Y=XC+XS
15749       IF (Y.GE.1D0) RETURN
15750 C...Common factor (includes factor XC, since PYFCMP=x*f)
15751       FAC=3D0*XC*XS*(XC**2+XS**2)/(Y**4)
15752 C...Store normalized companion x*f distribution.
15753       IF (NPOW.LE.0) THEN
15754         PYFCMP=FAC/(2D0-XS*(3D0-XS*(3D0-2D0*XS)))
15755       ELSEIF (NPOW.EQ.1) THEN
15756         PYFCMP=FAC*(1D0-Y)/(2D0+XS**2*(-3D0+XS)+3D0*XS*LOG(XS))
15757       ELSEIF (NPOW.EQ.2) THEN
15758         PYFCMP=FAC*(1D0-Y)**2/(2D0*((1D0-XS)*(1D0+XS*(4D0+XS))
15759      &       +3D0*XS*(1D0+XS)*LOG(XS)))
15760       ELSEIF (NPOW.EQ.3) THEN
15761         PYFCMP=FAC*(1D0-Y)**3*2D0/(4D0+27D0*XS-31D0*XS**3
15762      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
15763       ELSEIF (NPOW.GE.4) THEN
15764         PYFCMP=FAC*(1D0-Y)**4/(2D0*(1D0+2D0*XS)*((1D0-XS)*(1D0+
15765      &       XS*(10D0+XS))+6D0*XS*LOG(XS)*(1D0+XS)))
15766       ENDIF
15767       RETURN
15768       END
15769  
15770 C*********************************************************************
15771  
15772 C...PYPCMP: Auxiliary to PYPDFU.
15773 C...Giving the momentum integral of a companion quark, with its
15774 C...partner at XS, using an approximate gluon density like (1-x)^NPOW/x.
15775 C...The value corresponds to an unrescaled range between 0 and 1-XS.
15776  
15777       FUNCTION PYPCMP(XS,NPOW)
15778       IMPLICIT NONE
15779       DOUBLE PRECISION XS, PYPCMP
15780       INTEGER NPOW
15781       IF (XS.GE.1D0.OR.XS.LE.0D0) THEN
15782         PYPCMP=0D0
15783       ELSEIF (NPOW.LE.0) THEN
15784         PYPCMP=XS*(5D0+XS*(-9D0-2D0*XS*(-3D0+XS))+3D0*LOG(XS))
15785         PYPCMP=PYPCMP/((-1D0+XS)*(2D0+XS*(-1D0+2D0*XS)))
15786       ELSEIF (NPOW.EQ.1) THEN
15787         PYPCMP=-1D0-3D0*XS+(2D0*(-1D0+XS)**2*(1D0+XS+XS**2))
15788      &       /(2D0+XS**2*(XS-3D0)+3D0*XS*LOG(XS))
15789       ELSEIF (NPOW.EQ.2) THEN
15790         PYPCMP=XS*((1D0-XS)*(19D0+XS*(43D0+4D0*XS))
15791      &       +6D0*LOG(XS)*(1D0+6D0*XS+4D0*XS**2))
15792         PYPCMP=PYPCMP/(4D0*((XS-1D0)*(1D0+XS*(4D0+XS))
15793      &       -3D0*XS*LOG(XS)*(1+XS)))
15794       ELSEIF (NPOW.EQ.3) THEN
15795         PYPCMP=3D0*XS*((XS-1)*(7D0+XS*(28D0+13D0*XS))
15796      &       -2D0*LOG(XS)*(1D0+XS*(9D0+2D0*XS*(6D0+XS))))
15797         PYPCMP=PYPCMP/(4D0+27D0*XS-31D0*XS**3
15798      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
15799       ELSE
15800         PYPCMP=(-9D0*XS*(XS**2-1D0)*(5D0+XS*(24D0+XS))+12D0*XS*LOG(XS)
15801      &       *(1D0+2D0*XS)*(1D0+2D0*XS*(5D0+2D0*XS)))
15802         PYPCMP=PYPCMP/(8D0*(1D0+2D0*XS)*((XS-1D0)*(1D0+XS*(10D0+XS))
15803      &       -6D0*XS*LOG(XS)*(1D0+XS)))
15804       ENDIF
15805       RETURN
15806       END
15807  
15808 C*********************************************************************
15809  
15810 C...PYUPRE
15811 C...Rearranges contents of the HEPEUP commonblock so that
15812 C...mothers precede daughters and daughters of a decay are
15813 C...listed consecutively.
15814  
15815       SUBROUTINE PYUPRE
15816  
15817 C...Double precision and integer declarations.
15818       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15819       IMPLICIT INTEGER(I-N)
15820  
15821 C...User process event common block.
15822       INTEGER MAXNUP
15823       PARAMETER (MAXNUP=500)
15824       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
15825       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
15826       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
15827      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
15828      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
15829       SAVE /HEPEUP/
15830  
15831 C...Local arrays.
15832       DIMENSION NEWPOS(0:MAXNUP),IDUPT(MAXNUP),ISTUPT(MAXNUP),
15833      &MOTUPT(2,MAXNUP),ICOUPT(2,MAXNUP),PUPT(5,MAXNUP),
15834      &VTIUPT(MAXNUP),SPIUPT(MAXNUP)
15835  
15836 C...Check whether a rearrangement is required.
15837       NEED=0
15838       DO 100 IUP=1,NUP
15839         IF(MOTHUP(1,IUP).GT.IUP) NEED=NEED+1
15840   100 CONTINUE
15841       DO 110 IUP=2,NUP
15842         IF(MOTHUP(1,IUP).LT.MOTHUP(1,IUP-1)) NEED=NEED+1
15843   110 CONTINUE
15844  
15845       IF(NEED.NE.0) THEN
15846 C...Find the new order that particles should have.
15847         NEWPOS(0)=0
15848         NNEW=0
15849         INEW=-1
15850   120   INEW=INEW+1
15851         DO 130 IUP=1,NUP
15852           IF(MOTHUP(1,IUP).EQ.NEWPOS(INEW)) THEN
15853             NNEW=NNEW+1
15854             NEWPOS(NNEW)=IUP
15855           ENDIF
15856   130   CONTINUE
15857         IF(INEW.LT.NNEW.AND.INEW.LT.NUP) GOTO 120
15858         IF(NNEW.NE.NUP) THEN
15859           CALL PYERRM(2,
15860      &    '(PYUPRE:) failed to make sense of mother pointers in HEPEUP')
15861           RETURN
15862         ENDIF
15863  
15864 C...Copy old info into temporary storage.
15865         DO 150 I=1,NUP
15866           IDUPT(I)=IDUP(I)
15867           ISTUPT(I)=ISTUP(I)
15868           MOTUPT(1,I)=MOTHUP(1,I)
15869           MOTUPT(2,I)=MOTHUP(2,I)
15870           ICOUPT(1,I)=ICOLUP(1,I)
15871           ICOUPT(2,I)=ICOLUP(2,I)
15872           DO 140 J=1,5
15873             PUPT(J,I)=PUP(J,I)
15874   140     CONTINUE
15875           VTIUPT(I)=VTIMUP(I)
15876           SPIUPT(I)=SPINUP(I)
15877   150   CONTINUE
15878  
15879 C...Copy info back into HEPEUP in right order.
15880         DO 180 I=1,NUP
15881           IOLD=NEWPOS(I)
15882           IDUP(I)=IDUPT(IOLD)
15883           ISTUP(I)=ISTUPT(IOLD)
15884           MOTHUP(1,I)=0
15885           MOTHUP(2,I)=0
15886           DO 160 IMOT=1,I-1
15887             IF(MOTUPT(1,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(1,I)=IMOT
15888             IF(MOTUPT(2,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(2,I)=IMOT
15889   160     CONTINUE
15890           IF(MOTHUP(2,I).GT.0.AND.MOTHUP(2,I).LT.MOTHUP(1,I)) THEN
15891             MOTHSW=MOTHUP(1,I)
15892             MOTHUP(1,I)=MOTHUP(2,I)
15893             MOTHUP(2,I)=MOTHSW
15894           ENDIF
15895           ICOLUP(1,I)=ICOUPT(1,IOLD)
15896           ICOLUP(2,I)=ICOUPT(2,IOLD)
15897           DO 170 J=1,5
15898             PUP(J,I)=PUPT(J,IOLD)
15899   170     CONTINUE
15900           VTIMUP(I)=VTIUPT(IOLD)
15901           SPINUP(I)=SPIUPT(IOLD)
15902   180   CONTINUE
15903       ENDIF
15904  
15905 c...If incoming particles are massive recalculate to put them massless.
15906       IF(PUP(5,1).NE.0D0.OR.PUP(5,2).NE.0D0) THEN
15907         PPLUS=(PUP(4,1)+PUP(3,1))+(PUP(4,2)+PUP(3,2))
15908         PMINUS=(PUP(4,1)-PUP(3,1))+(PUP(4,2)-PUP(3,2))
15909         PUP(4,1)=0.5D0*PPLUS
15910         PUP(3,1)=PUP(4,1)
15911         PUP(5,1)=0D0
15912         PUP(4,2)=0.5D0*PMINUS
15913         PUP(3,2)=-PUP(4,2)
15914         PUP(5,2)=0D0
15915       ENDIF
15916  
15917       RETURN
15918       END
15919  
15920 C*********************************************************************
15921  
15922 C...PYADSH
15923 C...Administers the generation of successive final-state showers
15924 C...in external processes.
15925  
15926       SUBROUTINE PYADSH(NFIN)
15927  
15928 C...Double precision and integer declarations.
15929       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15930       IMPLICIT INTEGER(I-N)
15931       INTEGER PYK,PYCHGE,PYCOMP
15932 C...Parameter statement for maximum size of showers.
15933       PARAMETER (MAXNUR=1000)
15934 C...Commonblocks.
15935       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
15936       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15937       COMMON/PYCTAG/NCT,MCT(4000,2)
15938       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15939       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15940       COMMON/PYINT1/MINT(400),VINT(400)
15941       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYPARS/,/PYINT1/
15942 C...Local array.
15943       DIMENSION IBEG(100),KSAV(100,5),PSUM(4),BETA(3)
15944  
15945 C...Set primary vertex.
15946       DO 100 J=1,5
15947         V(MINT(83)+5,J)=0D0
15948         V(MINT(83)+6,J)=0D0
15949         V(MINT(84)+1,J)=0D0
15950         V(MINT(84)+2,J)=0D0
15951   100 CONTINUE
15952  
15953 C...Isolate systems of particles with the same mother.
15954       NSYS=0
15955       IMS=-1
15956       DO 140 I=MINT(84)+3,NFIN
15957         IM=K(I,3)
15958         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
15959         IF(IM.NE.IMS) THEN
15960           NSYS=NSYS+1
15961           IBEG(NSYS)=I
15962           IMS=IM
15963         ENDIF
15964  
15965 C...Set production vertices.
15966         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
15967      &  THEN
15968           DO 110 J=1,4
15969             V(I,J)=0D0
15970   110     CONTINUE
15971         ELSE
15972           DO 120 J=1,4
15973             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
15974   120     CONTINUE
15975         ENDIF
15976         IF(MSTP(125).GE.1) THEN
15977           IDOC=I-MSTP(126)+4
15978           DO 130 J=1,5
15979             V(IDOC,J)=V(I,J)
15980   130     CONTINUE
15981         ENDIF
15982   140 CONTINUE
15983  
15984 C...End loop over systems. Return if no showers to be performed.
15985       IBEG(NSYS+1)=NFIN+1
15986       IF(MSTP(71).LE.0) RETURN
15987  
15988 C...Loop through systems of particles; check that sensible size.
15989       DO 270 ISYS=1,NSYS
15990         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
15991         IF(MINT(35).LE.1) THEN
15992           IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
15993             GOTO 270
15994           ELSEIF(NSIZ.LE.1) THEN
15995             CALL PYERRM(2,'(PYADSH:) only one particle in system')
15996             GOTO 270
15997           ELSEIF(NSIZ.GT.80) THEN
15998             CALL PYERRM(2,'(PYADSH:) more than 80 particles in system')
15999             GOTO 270
16000           ENDIF
16001         ENDIF
16002  
16003 C...Save status codes and daughters of showering particles; reset them.
16004         DO 150 J=1,4
16005           PSUM(J)=0D0
16006   150   CONTINUE
16007         DO 170 II=1,NSIZ
16008           I=IBEG(ISYS)-1+II
16009           KSAV(II,1)=K(I,1)
16010           IF(K(I,1).GT.10) THEN
16011             K(I,1)=1
16012             IF(KSAV(II,1).EQ.14) K(I,1)=3
16013           ENDIF
16014           IF(KSAV(II,1).LE.10) THEN
16015           ELSEIF(K(I,1).EQ.1) THEN
16016             KSAV(II,4)=K(I,4)
16017             KSAV(II,5)=K(I,5)
16018             K(I,4)=0
16019             K(I,5)=0
16020           ELSE
16021             KSAV(II,4)=MOD(K(I,4),MSTU(5))
16022             KSAV(II,5)=MOD(K(I,5),MSTU(5))
16023             K(I,4)=K(I,4)-KSAV(II,4)
16024             K(I,5)=K(I,5)-KSAV(II,5)
16025           ENDIF
16026           DO 160 J=1,4
16027             PSUM(J)=PSUM(J)+P(I,J)
16028   160     CONTINUE
16029   170   CONTINUE
16030  
16031 C...Perform shower.
16032         QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
16033      &  PSUM(3)**2))
16034         IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
16035         NSAV=N
16036         IF(MINT(35).LE.1) THEN
16037           IF(NSIZ.EQ.2) THEN
16038        if(parj(200).eq.1.) CALL PYSHOWQ(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
16039        if(parj(200).ne.1.) CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
16040           ELSE
16041        if(parj(200).ne.1.) CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
16042        if(parj(200).eq.1.) CALL PYSHOWQ(IBEG(ISYS),-NSIZ,QMAX)
16043           ENDIF
16044  
16045 C...For external processes, first call, also ISR partons radiate.
16046 C...Can use existing PYPART list, removing partons that radiate later.
16047         ELSEIF(ISYS.EQ.1) THEN
16048           NPARTN=0
16049           DO 175 II=1,NPART
16050             IF(IPART(II).LT.IBEG(2).OR.IPART(II).GE.IBEG(NSYS+1)) THEN
16051               NPARTN=NPARTN+1
16052               IPART(NPARTN)=IPART(II)
16053               PTPART(NPARTN)=PTPART(II)
16054             ENDIF
16055  175      CONTINUE
16056           NPART=NPARTN
16057           CALL PYPTFS(1,0.5D0*QMAX,0D0,PTGEN)
16058         ELSE
16059 C...For subsequent calls use the systems excluded above.
16060           NPART=NSIZ
16061           NPARTD=0
16062           DO 180 II=1,NSIZ
16063             I=IBEG(ISYS)-1+II
16064             IPART(II)=I
16065             PTPART(II)=0.5D0*QMAX
16066   180     CONTINUE
16067           CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
16068         ENDIF
16069  
16070 C...Look up showered copies of original showering particles.
16071         DO 260 II=1,NSIZ
16072           I=IBEG(ISYS)-1+II
16073           IMV=I
16074 C...Particles without daughters need not be studied.
16075           IF(KSAV(II,1).LE.10) GOTO 260
16076           IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
16077           ELSEIF(K(I,1).EQ.11) THEN
16078   190       IMV=MOD(K(IMV,4),MSTU(5))
16079             IF(K(IMV,1).EQ.11) GOTO 190
16080           ELSE
16081             KDA1=MOD(K(I,4),MSTU(5))
16082             IF(KDA1.GT.0) THEN
16083               IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16084             ENDIF
16085             KDA2=MOD(K(I,5),MSTU(5))
16086             IF(KDA2.GT.0) THEN
16087               IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16088             ENDIF
16089             DO 200 I3=I+1,N
16090               IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
16091      &        THEN
16092                 IMV=I3
16093                 KDA1=MOD(K(I3,4),MSTU(5))
16094                 IF(KDA1.GT.0) THEN
16095                   IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16096                 ENDIF
16097                 KDA2=MOD(K(I3,5),MSTU(5))
16098                 IF(KDA2.GT.0) THEN
16099                   IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16100                 ENDIF
16101               ENDIF
16102   200       CONTINUE
16103           ENDIF
16104  
16105 C...Restore daughter info of original partons to showered copies.
16106           IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
16107           IF(KSAV(II,1).LE.10) THEN
16108           ELSEIF(K(I,1).EQ.1) THEN
16109             K(IMV,4)=KSAV(II,4)
16110             K(IMV,5)=KSAV(II,5)
16111           ELSE
16112             K(IMV,4)=K(IMV,4)+KSAV(II,4)
16113             K(IMV,5)=K(IMV,5)+KSAV(II,5)
16114           ENDIF
16115  
16116 C...Reset mother info of existing daughters to showered copies.
16117           DO 210 I3=IBEG(ISYS+1),NFIN
16118             IF(K(I3,3).EQ.I) K(I3,3)=IMV
16119             IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
16120               IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
16121               IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
16122             ENDIF
16123   210     CONTINUE
16124  
16125 C...Boost all original daughters to new frame of showered copy.
16126 C...Also update their colour tags.
16127           IF(IMV.NE.I) THEN
16128             DO 220 J=1,3
16129               BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
16130   220       CONTINUE
16131             FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
16132             DO 230 J=1,3
16133               BETA(J)=FAC*BETA(J)
16134   230       CONTINUE
16135             DO 250 I3=IBEG(ISYS+1),NFIN
16136               IMO=I3
16137   240         IMO=K(IMO,3)
16138               IF(MSTP(128).LE.0) THEN
16139                 IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 240
16140                 IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3)))
16141      &          THEN
16142                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16143                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16144                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16145                 ENDIF
16146               ELSE
16147                 IF(IMO.EQ.IMV) THEN
16148                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16149                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16150                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16151                 ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
16152                   GOTO 240
16153                 ENDIF
16154               ENDIF
16155   250       CONTINUE
16156           ENDIF
16157   260   CONTINUE
16158  
16159 C...End of loop over showering systems
16160   270 CONTINUE
16161  
16162       RETURN
16163       END
16164  
16165 C*********************************************************************
16166  
16167 C...PYVETO
16168 C...Interface to UPVETO, which allows user to veto event generation
16169 C...on the parton level, after parton showers but before multiple
16170 C...interactions, beam remnants and hadronization is added.
16171  
16172       SUBROUTINE PYVETO(IVETO)
16173  
16174 C...All real arithmetic in double precision.
16175       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16176 C...Three Pythia functions return integers, so need declaring.
16177       INTEGER PYK,PYCHGE,PYCOMP
16178  
16179 C...PYTHIA commonblocks.
16180       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16181       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16182       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16183       COMMON/PYINT1/MINT(400),VINT(400)
16184       SAVE /PYJETS/,/PYPARS/,/PYINT1/
16185 C...HEPEVT commonblock.
16186       PARAMETER (NMXHEP=4000)
16187       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
16188      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
16189       DOUBLE PRECISION PHEP,VHEP
16190       SAVE /HEPEVT/
16191 C...Local array.
16192       DIMENSION IRESO(100)
16193  
16194 C...Define longitudinal boost from initiator rest frame to cm frame.
16195       IF(MINT(35).EQ.3) THEN
16196 C...The last frame is different depending upon old and new shower
16197         GAMMA=1D0
16198         GABEZ=0D0
16199       ELSE
16200         GAMMA=0.5D0*(VINT(141)+VINT(142))/SQRT(VINT(141)*VINT(142))
16201         GABEZ=0.5D0*(VINT(141)-VINT(142))/SQRT(VINT(141)*VINT(142))
16202       ENDIF
16203  
16204 C... Reset counters.
16205       NEVHEP=0
16206       NHEP=0
16207       NRESO=0
16208       
16209 C...Oth pass: identify beam and incoming partons
16210       DO 140 I=MINT(83)+1,MINT(83)+6
16211         ISTORE=0
16212 C       IF(K(I,2).EQ.94.OR.K(I,2).EQ.0) THEN
16213         IF(K(I,2).EQ.94) THEN
16214
16215         ELSE
16216           ISTORE=1
16217           NHEP=NHEP+1
16218           II=NHEP
16219           NRESO=NRESO+1
16220           IRESO(NRESO)=I
16221           IMOTH=K(I,3)
16222         ENDIF
16223         IF(ISTORE.EQ.1) THEN
16224 C...Copy parton info, boosting momenta along z axis to cm frame.
16225           ISTHEP(II)=2
16226           IDHEP(II)=K(I,2)
16227           PHEP(1,II)=P(I,1)
16228           PHEP(2,II)=P(I,2)
16229           IF(II.GT.2) THEN
16230             PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16231             PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16232           ELSE
16233             PHEP(3,II)=P(I,3)
16234             PHEP(4,II)=P(I,4)
16235           ENDIF
16236           PHEP(5,II)=P(I,5)
16237 C...Store one mother. Rest of history and vertex info zeroed.
16238           JMOHEP(1,II)=IMOTH
16239           JMOHEP(2,II)=0
16240           JDAHEP(1,II)=0
16241           JDAHEP(2,II)=0
16242           VHEP(1,II)=0D0
16243           VHEP(2,II)=0D0
16244           VHEP(3,II)=0D0
16245           VHEP(4,II)=0D0
16246         ENDIF
16247  140  CONTINUE
16248
16249 C...First pass: identify final locations of resonances
16250 C...and of their daughters before showering.
16251       DO 150 I=MINT(84)+3,N
16252         ISTORE=0
16253         IMOTH=0
16254  
16255 C...Skip shower CM frame documentation lines.
16256         IF(K(I,2).EQ.94) THEN
16257  
16258 C...  Store a new intermediate product, when mother in documentation.
16259         ELSEIF(MSTP(128).EQ.0.AND.K(I,3).GT.MINT(83)+6.AND.
16260      &  K(I,3).LE.MINT(84)) THEN
16261           ISTORE=1
16262           NHEP=NHEP+1
16263           II=NHEP
16264           NRESO=NRESO+1
16265           IRESO(NRESO)=I
16266           IMOTH=K(K(I,3),3)
16267  
16268 C...  Store a new intermediate product, when mother in main section.
16269         ELSEIF(MSTP(128).EQ.1.AND.K(I-MINT(84)+MINT(83)+4,1).EQ.21.AND.
16270      &  K(I-MINT(84)+MINT(83)+4,2).EQ.K(I,2)) THEN
16271           ISTORE=1
16272           NHEP=NHEP+1
16273           II=NHEP
16274           NRESO=NRESO+1
16275           IRESO(NRESO)=I
16276           IMOTH=MAX(0,K(I-MINT(84)+MINT(83)+4,3))
16277         ENDIF
16278   
16279         IF(ISTORE.EQ.1) THEN
16280 C...Copy parton info, boosting momenta along z axis to cm frame.
16281           ISTHEP(II)=2
16282           IDHEP(II)=K(I,2)
16283           PHEP(1,II)=P(I,1)
16284           PHEP(2,II)=P(I,2)
16285           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16286           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16287           PHEP(5,II)=P(I,5)
16288 C...Store one mother. Rest of history and vertex info zeroed.
16289           JMOHEP(1,II)=IMOTH
16290           JMOHEP(2,II)=0
16291           JDAHEP(1,II)=I
16292           JDAHEP(2,II)=0
16293           VHEP(1,II)=0D0
16294           VHEP(2,II)=0D0
16295           VHEP(3,II)=0D0
16296           VHEP(4,II)=0D0
16297         ENDIF
16298  150  CONTINUE
16299
16300 C...Second pass: identify current set of "final" partons.
16301       DO 200 I=MINT(84)+3,N
16302         ISTORE=0
16303         IMOTH=0
16304  
16305 C...Store a final parton.
16306         IF(K(I,1).GE.1.AND.K(I,1).LE.10) THEN
16307           ISTORE=1
16308           NHEP=NHEP+1
16309           II=NHEP
16310 C..Trace it back through shower, to check if from documented particle.
16311           IHIST=I
16312           ISAVE=IHIST
16313   160     CONTINUE
16314           IF(IHIST.GT.MINT(84)) THEN
16315             IF(K(IHIST,2).EQ.94) IHIST=K(IHIST,3)+(ISAVE-1-IHIST)
16316             DO 170 IRI=1,NRESO
16317               IF(IHIST.EQ.IRESO(IRI)) IMOTH=IRI
16318   170       CONTINUE
16319             ISAVE=IHIST
16320             IHIST=K(IHIST,3)
16321             IF(IMOTH.EQ.0) GOTO 160
16322           ELSEIF(IHIST.LE.4) THEN
16323             IF(IHIST.EQ.1.OR.IHIST.EQ.2) THEN
16324               ISTORE=0
16325               NHEP=NHEP-1
16326             ELSE
16327               IMOTH=IHIST
16328             ENDIF
16329           ENDIF
16330         ENDIF
16331  
16332         IF(ISTORE.EQ.1) THEN
16333 C...Copy parton info, boosting momenta along z axis to cm frame.
16334           ISTHEP(II)=1
16335           IDHEP(II)=K(I,2)
16336           PHEP(1,II)=P(I,1)
16337           PHEP(2,II)=P(I,2)
16338           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16339           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16340           PHEP(5,II)=P(I,5)
16341 C...Store one mother. Rest of history and vertex info zeroed.
16342           JMOHEP(1,II)=IMOTH
16343           JMOHEP(2,II)=0
16344           JDAHEP(1,II)=0
16345           JDAHEP(2,II)=0
16346           VHEP(1,II)=0D0
16347           VHEP(2,II)=0D0
16348           VHEP(3,II)=0D0
16349           VHEP(4,II)=0D0
16350         ENDIF
16351   200 CONTINUE
16352
16353 C...Call user-written routine to decide whether to keep events.
16354       CALL UPVETO(IVETO)
16355  
16356       RETURN
16357       END
16358 C*********************************************************************
16359  
16360 C...PYRESD
16361 C...Allows resonances to decay (including parton showers for hadronic
16362 C...channels).
16363  
16364       SUBROUTINE PYRESD(IRES)
16365  
16366 C...Double precision and integer declarations.
16367       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16368       IMPLICIT INTEGER(I-N)
16369       INTEGER PYK,PYCHGE,PYCOMP
16370 C...Parameter statement to help give large particle numbers.
16371       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
16372      &KEXCIT=4000000,KDIMEN=5000000)
16373 C...Parameter statement for maximum size of showers.
16374       PARAMETER (MAXNUR=1000)
16375 C...Commonblocks.
16376       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16377       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16378       COMMON/PYCTAG/NCT,MCT(4000,2)
16379       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16380       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16381       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16382       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
16383       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16384       COMMON/PYINT1/MINT(400),VINT(400)
16385       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
16386       COMMON/PYINT4/MWID(500),WIDS(500,5)
16387       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
16388      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/
16389 C...Local arrays and complex and character variables.
16390       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
16391      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(3),ILIN(6),
16392      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
16393      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),XM(5),VDCY(4),
16394      &ITJUNC(3),CTM2(3),KCQ(0:10),IANT(3),ITRI(3),IOCT(3)
16395       COMPLEX FGK,HA(6,6),HC(6,6)
16396       REAL TIR,UIR
16397       CHARACTER CODE*9,MASS*9
16398  
16399 C...The F, Xi and Xj functions of Gunion and Kunszt
16400 C...(Phys. Rev. D33, 665, plus errata from the authors).
16401       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
16402      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
16403       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
16404      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
16405       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
16406      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
16407      &2D0*(D34/D56+D56/D34))
16408  
16409 C...Some general constants.
16410       XW=PARU(102)
16411       XWV=XW
16412       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
16413       XW1=1D0-XW
16414       SQMZ=PMAS(23,1)**2
16415  
16416       GMMZ=PMAS(23,1)*PMAS(23,2)
16417       SQMW=PMAS(24,1)**2
16418       GMMW=PMAS(24,1)*PMAS(24,2)
16419       SH=VINT(44)
16420  
16421 C...Boost and rotate to rest frame of incoming partons,
16422 C...to get proper amount of smearing of decay angles.
16423       IBST=0
16424       IF(IRES.EQ.0) THEN
16425         IBST=1
16426         ETOTIN=P(MINT(84)+1,4)+P(MINT(84)+2,4)
16427         BEXIN=(P(MINT(84)+1,1)+P(MINT(84)+2,1))/ETOTIN
16428         BEYIN=(P(MINT(84)+1,2)+P(MINT(84)+2,2))/ETOTIN
16429         BEZIN=(P(MINT(84)+1,3)+P(MINT(84)+2,3))/ETOTIN
16430         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
16431         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
16432         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
16433         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
16434         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
16435       ENDIF
16436  
16437 C...Reset original resonance configuration.
16438       DO 100 JT=1,8
16439         IREF(1,JT)=0
16440   100 CONTINUE
16441  
16442 C...Define initial one, two or three objects for subprocess.
16443       IHDEC=0
16444       IF(IRES.EQ.0) THEN
16445         ISUB=MINT(1)
16446         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
16447           IREF(1,1)=MINT(84)+2+ISET(ISUB)
16448           IREF(1,4)=MINT(83)+6+ISET(ISUB)
16449           JTMAX=1
16450         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
16451           IREF(1,1)=MINT(84)+1+ISET(ISUB)
16452           IREF(1,2)=MINT(84)+2+ISET(ISUB)
16453           IREF(1,4)=MINT(83)+5+ISET(ISUB)
16454           IREF(1,5)=MINT(83)+6+ISET(ISUB)
16455           JTMAX=2
16456         ELSEIF(ISET(ISUB).EQ.5) THEN
16457           IREF(1,1)=MINT(84)+3
16458           IREF(1,2)=MINT(84)+4
16459           IREF(1,3)=MINT(84)+5
16460           IREF(1,4)=MINT(83)+7
16461           IREF(1,5)=MINT(83)+8
16462           IREF(1,6)=MINT(83)+9
16463           JTMAX=3
16464         ENDIF
16465  
16466 C...Define original resonance for odd cases.
16467       ELSE
16468         ISUB=0
16469         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
16470      &  IHDEC=1
16471         IF(IHDEC.EQ.1) ISUB=3
16472         IREF(1,1)=IRES
16473         IREF(1,4)=K(IRES,3)
16474         IRESTM=IRES
16475         IF(IREF(1,4).GT.MINT(84)) THEN
16476   110     ITMPMO=IREF(1,4)
16477           IF(K(ITMPMO,2).EQ.94) THEN
16478             IREF(1,4)=K(ITMPMO,3)+(IRESTM-ITMPMO-1)
16479             IF(K(IREF(1,4),3).LE.MINT(84)) IREF(1,4)=K(IREF(1,4),3)
16480           ELSEIF(K(ITMPMO,2).EQ.K(IRES,2)) THEN
16481             IRESTM=ITMPMO
16482 C...Explicitly check that reference particle exists, otherwise stop recursion
16483             IF(ITMPMO.GT.0.AND.K(ITMPMO,3).GT.0) THEN
16484               IREF(1,4)=K(ITMPMO,3)
16485               GOTO 110
16486             ENDIF
16487           ENDIF
16488         ENDIF
16489         IF(IREF(1,4).GT.MINT(84)) THEN
16490           EMATCH=1D10
16491           IREF14=IREF(1,4)
16492           DO 120 II=MINT(83)+7,MINT(83)+MINT(4)
16493             IF(K(II,2).EQ.K(IRES,2).AND.ABS(P(II,4)-P(IREF14,4)).LT.
16494      &      EMATCH) THEN
16495               IREF(1,4)=II
16496               EMATCH=ABS(P(II,4)-P(IREF14,4))
16497             ENDIF
16498   120     CONTINUE
16499         ENDIF
16500         JTMAX=1
16501       ENDIF
16502  
16503 C...Check if initial resonance has been moved (in resonance + jet).
16504       DO 140 JT=1,3
16505         IF(IREF(1,JT).GT.0) THEN
16506           IF(K(IREF(1,JT),1).GT.10) THEN
16507             KFA=IABS(K(IREF(1,JT),2))
16508             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
16509               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
16510               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
16511               IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
16512                 IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16513               ENDIF
16514               IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
16515                 IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16516               ENDIF
16517               DO 130 I=IREF(1,JT)+1,N
16518                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
16519      &          I.EQ.KDA2)) THEN
16520                   IREF(1,JT)=I
16521                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
16522                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
16523                   IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
16524                     IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16525                   ENDIF
16526                   IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
16527                     IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16528                   ENDIF
16529                 ENDIF
16530   130         CONTINUE
16531             ELSE
16532               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
16533               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
16534             ENDIF
16535           ENDIF
16536         ENDIF
16537   140 CONTINUE
16538  
16539 C...Set decay vertex for initial resonances
16540       DO 160 JT=1,JTMAX
16541         DO 150 I=1,4
16542           V(IREF(1,JT),I)=0D0
16543   150   CONTINUE
16544   160 CONTINUE
16545  
16546 C...Loop over decay history.
16547       NP=1
16548       IP=0
16549   170 IP=IP+1
16550       NINH=0
16551       JTMAX=2
16552       IF(IREF(IP,2).EQ.0) JTMAX=1
16553       IF(IREF(IP,3).NE.0) JTMAX=3
16554       IT4=0
16555       NSAV=N
16556  
16557 C...Check for Higgs which appears as decay product of user-process.
16558       IF(ISUB.EQ.0) THEN
16559         IHDEC=0
16560         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
16561      &  .EQ.36) IHDEC=1
16562         IF(IHDEC.EQ.1) ISUB=3
16563       ENDIF
16564  
16565 C...Start treatment of one, two or three resonances in parallel.
16566   180 N=NSAV
16567       DO 340 JT=1,JTMAX
16568         ID=IREF(IP,JT)
16569         KDCY(JT)=0
16570         KFL1(JT)=0
16571         KFL2(JT)=0
16572         KFL3(JT)=0
16573         KEQL(JT)=0
16574         NSD(JT)=ID
16575         ITJUNC(JT)=0
16576  
16577 C...Check whether particle can/is allowed to decay.
16578         IF(ID.EQ.0) GOTO 330
16579         KFA=IABS(K(ID,2))
16580         KCA=PYCOMP(KFA)
16581         IF(MWID(KCA).EQ.0) GOTO 330
16582         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 330
16583         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
16584      &  KFA.EQ.18) IT4=IT4+1
16585         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
16586         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
16587  
16588 C...Choose lifetime and determine decay vertex.
16589         IF(K(ID,1).EQ.5) THEN
16590           V(ID,5)=0D0
16591         ELSEIF(K(ID,1).NE.4) THEN
16592           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
16593         ENDIF
16594         DO 190 J=1,4
16595           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
16596   190   CONTINUE
16597  
16598 C...Determine whether decay allowed or not.
16599         MOUT=0
16600         IF(MSTJ(22).EQ.2) THEN
16601           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
16602         ELSEIF(MSTJ(22).EQ.3) THEN
16603           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
16604         ELSEIF(MSTJ(22).EQ.4) THEN
16605           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
16606           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
16607         ENDIF
16608         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
16609           K(ID,1)=4
16610           GOTO 330
16611         ENDIF
16612  
16613 C...Info for selection of decay channel: sign, pairings.
16614         IF(KCHG(KCA,3).EQ.0) THEN
16615           IPM=2
16616         ELSE
16617           IPM=(5-ISIGN(1,K(ID,2)))/2
16618         ENDIF
16619         KFB=0
16620         IF(JTMAX.EQ.2) THEN
16621           KFB=IABS(K(IREF(IP,3-JT),2))
16622         ELSEIF(JTMAX.EQ.3) THEN
16623           JT2=JT+1-3*(JT/3)
16624           KFB=IABS(K(IREF(IP,JT2),2))
16625           IF(KFB.NE.KFA) THEN
16626             JT2=JT+2-3*((JT+1)/3)
16627             KFB=IABS(K(IREF(IP,JT2),2))
16628           ENDIF
16629         ENDIF
16630  
16631 C...Select decay channel.
16632         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
16633      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
16634         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
16635         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
16636         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
16637         IF(WDTE0S.LE.0D0) GOTO 330
16638         RKFL=WDTE0S*PYR(0)
16639         IDL=0
16640   200   IDL=IDL+1
16641         IDC=IDL+MDCY(KCA,2)-1
16642         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
16643         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
16644         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 200
16645  
16646 C...Read out flavours and colour charges of decay channel chosen.
16647         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
16648         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
16649         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
16650         KFC1A=PYCOMP(IABS(KFL1(JT)))
16651         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
16652         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
16653         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
16654         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
16655         KFC2A=PYCOMP(IABS(KFL2(JT)))
16656         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
16657         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
16658         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
16659         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
16660         KCQ3(JT)=0
16661         IF(KFL3(JT).NE.0) THEN
16662           KFC3A=PYCOMP(IABS(KFL3(JT)))
16663           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
16664           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
16665           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
16666         ENDIF
16667  
16668 C...Set/save further info on channel.
16669         KDCY(JT)=1
16670         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
16671         NSD(JT)=N
16672         HGZ(JT,1)=VINT(111)
16673         HGZ(JT,2)=VINT(112)
16674         HGZ(JT,3)=VINT(114)
16675         JTZ=JT
16676  
16677 C...Select masses; to begin with assume resonances narrow.
16678         DO 220 I=1,3
16679           P(N+I,5)=0D0
16680           PMMN(I)=0D0
16681           IF(I.EQ.1) THEN
16682             KFLW=IABS(KFL1(JT))
16683             KCW=KFC1A
16684           ELSEIF(I.EQ.2) THEN
16685             KFLW=IABS(KFL2(JT))
16686             KCW=KFC2A
16687           ELSEIF(I.EQ.3) THEN
16688             IF(KFL3(JT).EQ.0) GOTO 220
16689             KFLW=IABS(KFL3(JT))
16690             KCW=KFC3A
16691           ENDIF
16692           P(N+I,5)=PMAS(KCW,1)
16693 CMRENNA++
16694 C...This prevents SUSY/t particles from becoming too light.
16695           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
16696             PMMN(I)=PMAS(KCW,1)
16697             DO 210 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
16698               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
16699                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
16700      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
16701                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
16702      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
16703                 PMMN(I)=MIN(PMMN(I),PMSUM)
16704               ENDIF
16705   210       CONTINUE
16706 CMRENNA--
16707           ELSEIF(KFLW.EQ.6) THEN
16708             PMMN(I)=PMAS(24,1)+PMAS(5,1)
16709           ENDIF
16710   220   CONTINUE
16711  
16712 C...Check which two out of three are widest.
16713         IWID1=1
16714         IWID2=2
16715         PWID1=PMAS(KFC1A,2)
16716         PWID2=PMAS(KFC2A,2)
16717         KFLW1=IABS(KFL1(JT))
16718         KFLW2=IABS(KFL2(JT))
16719         IF(KFL3(JT).NE.0) THEN
16720           PWID3=PMAS(KFC3A,2)
16721           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
16722             IWID1=3
16723             PWID1=PWID3
16724             KFLW1=IABS(KFL3(JT))
16725           ELSEIF(PWID3.GT.PWID2) THEN
16726             IWID2=3
16727             PWID2=PWID3
16728             KFLW2=IABS(KFL3(JT))
16729           ENDIF
16730         ENDIF
16731  
16732 C...If all narrow then only check that masses consistent.
16733         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
16734      &  PWID2.LT.PARP(41))) THEN
16735 CMRENNA++
16736 C....Handle near degeneracy cases.
16737           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
16738             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
16739               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
16740               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
16741             ENDIF
16742           ENDIF
16743 CMRENNA--
16744           IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
16745             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
16746             MINT(51)=1
16747             GOTO 720
16748           ELSEIF(P(N+1,5)+P(N+2,5)+P(N+3,5)+PARJ(64).GT.P(ID,5)) THEN
16749             CALL PYERRM(3,'(PYRESD:) daughter masses too large')
16750             MINT(51)=1
16751             GOTO 720
16752           ENDIF
16753  
16754 C...For three wide resonances select narrower of three
16755 C...according to BW decoupled from rest.
16756         ELSE
16757           PMTOT=P(ID,5)
16758           IF(KFL3(JT).NE.0) THEN
16759             IWID3=6-IWID1-IWID2
16760             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
16761      &      KFLW1-KFLW2
16762             LOOP=0
16763   230       LOOP=LOOP+1
16764             P(N+IWID3,5)=PYMASS(KFLW3)
16765             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 230
16766             PMTOT=PMTOT-P(N+IWID3,5)
16767           ENDIF
16768 C...Select other two correlated within remaining phase space.
16769           IF(IP.EQ.1) THEN
16770             CKIN45=CKIN(45)
16771             CKIN47=CKIN(47)
16772             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
16773             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
16774             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
16775      &      P(N+IWID2,5))
16776             CKIN(45)=CKIN45
16777             CKIN(47)=CKIN47
16778           ELSE
16779             CKIN(49)=PMMN(IWID1)
16780             CKIN(50)=PMMN(IWID2)
16781             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
16782      &      P(N+IWID2,5))
16783             CKIN(49)=0D0
16784             CKIN(50)=0D0
16785           ENDIF
16786           IF(MINT(51).EQ.1) GOTO 720
16787         ENDIF
16788  
16789 C...Begin fill decay products, with colour flow for coloured objects.
16790         MSTU10=MSTU(10)
16791         MSTU(10)=1
16792         MSTU(19)=1
16793  
16794 C...Three-body decays 
16795         IF(KFL3(JT).NE.0) THEN
16796           DO 250 I=N+1,N+3
16797             DO 240 J=1,5
16798               K(I,J)=0
16799               V(I,J)=0D0
16800   240       CONTINUE
16801             MCT(I,1)=0
16802             MCT(I,2)=0
16803   250     CONTINUE
16804           K(N+1,1)=1
16805           K(N+1,2)=KFL1(JT)
16806           K(N+2,1)=1
16807           K(N+2,2)=KFL2(JT)
16808           K(N+3,1)=1
16809           K(N+3,2)=KFL3(JT)
16810           IDIN=ID
16811
16812 C...Generate kinematics (default is flat)
16813           CALL PYTBDY(IDIN)
16814
16815 C...Set generic colour flows whenever unambiguous,
16816 C...(independently of the order of the decay products)
16817 C...Sum up total colour content
16818           NANT=0
16819           NTRI=0
16820           NOCT=0
16821           KCQ(0)=KCQM(JT)
16822           KCQ(1)=KCQ1(JT)
16823           KCQ(2)=KCQ2(JT)
16824           KCQ(3)=KCQ3(JT)
16825           DO 255 J=0,3
16826             IF (KCQ(J).EQ.-1) THEN
16827               NANT=NANT+1
16828               IANT(NANT)=N+J
16829             ELSEIF (KCQ(J).EQ.1) THEN
16830               NTRI=NTRI+1              
16831               ITRI(NTRI)=N+J
16832             ELSEIF (KCQ(J).EQ.2) THEN 
16833               NOCT=NOCT+1
16834               IOCT(NOCT)=N+J
16835             ENDIF
16836  255      CONTINUE
16837           
16838 C...Set color flow for generic 1 -> N processes (N arbitrary)
16839           IF (NTRI.EQ.0.AND.NANT.EQ.0.AND.NOCT.EQ.0) THEN
16840 C...All singlets: do nothing
16841             
16842           ELSEIF (NOCT.EQ.2.AND.NTRI.EQ.0.AND.NANT.EQ.0) THEN
16843 C...Two octets, zero triplets, n singlets:
16844             IF (KCQ(0).EQ.2) THEN
16845 C...8 -> 8 + n(1) 
16846               K(ID,4)=K(ID,4)+IOCT(2)
16847               K(ID,5)=K(ID,5)+IOCT(2)
16848               K(IOCT(2),1)=3
16849               K(IOCT(2),4)=MSTU(5)*ID
16850               K(IOCT(2),5)=MSTU(5)*ID
16851               MCT(IOCT(2),1)=MCT(ID,1)
16852               MCT(IOCT(2),2)=MCT(ID,2)
16853             ELSE
16854 C...1 -> 8 + 8 + n(1)
16855               K(IOCT(1),1)=3
16856               K(IOCT(1),4)=MSTU(5)*IOCT(2)
16857               K(IOCT(1),5)=MSTU(5)*IOCT(2)
16858               K(IOCT(2),1)=3
16859               K(IOCT(2),4)=MSTU(5)*IOCT(1)
16860               K(IOCT(2),5)=MSTU(5)*IOCT(1)
16861               NCT=NCT+1
16862               MCT(IOCT(1),1)=NCT
16863               MCT(IOCT(2),2)=NCT
16864               NCT=NCT+1
16865               MCT(IOCT(2),1)=NCT
16866               MCT(IOCT(1),2)=NCT
16867             ENDIF
16868             
16869           ELSEIF (NTRI+NANT.EQ.2.AND.NOCT.EQ.0) THEN
16870 C...Two triplets, zero octets, n singlets.            
16871             IF (KCQ(0).EQ.1) THEN
16872 C...3 -> 3 + n(1)
16873               K(ID,4)=K(ID,4)+ITRI(2)
16874               K(ITRI(2),1)=3
16875               K(ITRI(2),4)=MSTU(5)*ID
16876               MCT(ITRI(2),1)=MCT(ID,1)
16877             ELSEIF (KCQ(0).EQ.-1) THEN
16878 C...3bar -> 3bar + n(1)              
16879               K(ID,5)=K(ID,5)+IANT(2)
16880               K(IANT(2),1)=3
16881               K(IANT(2),5)=MSTU(5)*ID
16882               MCT(IANT(2),2)=MCT(ID,2)
16883             ELSE
16884 C...1 -> 3 + 3bar + n(1)
16885               K(ITRI(1),1)=3
16886               K(ITRI(1),4)=MSTU(5)*IANT(1)
16887               K(IANT(1),1)=3
16888               K(IANT(1),5)=MSTU(5)*ITRI(1)
16889               NCT=NCT+1
16890               MCT(ITRI(1),1)=NCT
16891               MCT(IANT(1),2)=NCT
16892             ENDIF
16893             
16894           ELSEIF(NTRI+NANT.EQ.2.AND.NOCT.EQ.1) THEN
16895 C...Two triplets, one octet, n singlets.            
16896             IF (KCQ(0).EQ.2) THEN
16897 C...8 -> 3 + 3bar + n(1)
16898               K(ID,4)=K(ID,4)+ITRI(1)
16899               K(ID,5)=K(ID,5)+IANT(1)
16900               K(ITRI(1),1)=3
16901               K(ITRI(1),4)=MSTU(5)*ID
16902               K(IANT(1),1)=3
16903               K(IANT(1),5)=MSTU(5)*ID
16904               MCT(ITRI(1),1)=MCT(ID,1)
16905               MCT(IANT(1),2)=MCT(ID,2)
16906             ELSEIF (KCQ(0).EQ.1) THEN
16907 C...3 -> 8 + 3 + n(1)
16908               K(ID,4)=K(ID,4)+IOCT(1)
16909               K(IOCT(1),1)=3
16910               K(IOCT(1),4)=MSTU(5)*ID
16911               K(IOCT(1),5)=MSTU(5)*ITRI(2)
16912               K(ITRI(2),1)=3
16913               K(ITRI(2),4)=MSTU(5)*IOCT(1)
16914               MCT(IOCT(1),1)=MCT(ID,1)
16915               NCT=NCT+1
16916               MCT(IOCT(1),2)=NCT
16917               MCT(ITRI(2),1)=NCT
16918             ELSEIF (KCQ(0).EQ.-1) THEN
16919 C...3bar -> 8 + 3bar + n(1)
16920               K(ID,5)=K(ID,5)+IOCT(1)
16921               K(IOCT(1),1)=3
16922               K(IOCT(1),5)=MSTU(5)*ID
16923               K(IOCT(1),4)=MSTU(5)*IANT(2)
16924               K(IANT(2),1)=3
16925               K(IANT(2),5)=MSTU(5)*IOCT(1)
16926               MCT(IOCT(1),2)=MCT(ID,2)
16927               NCT=NCT+1
16928               MCT(IOCT(1),1)=NCT
16929               MCT(IANT(2),2)=NCT
16930             ELSE
16931 C...1 -> 3 + 3bar + 8 + n(1)
16932               K(ITRI(1),1)=3
16933               K(ITRI(1),4)=MSTU(5)*IOCT(1)
16934               K(IOCT(1),1)=3
16935               K(IOCT(1),5)=MSTU(5)*ITRI(1)
16936               K(IOCT(1),4)=MSTU(5)*IANT(1)
16937               K(IANT(1),1)=3
16938               K(IANT(1),5)=MSTU(5)*IOCT(1)
16939               NCT=NCT+1
16940               MCT(ITRI(1),1)=NCT
16941               MCT(IOCT(1),2)=NCT
16942               NCT=NCT+1
16943               MCT(IOCT(1),1)=NCT
16944               MCT(IANT(1),2)=NCT
16945             ENDIF
16946 CPS-- End of generic cases 
16947 C...(could three octets also be handled?)
16948 C...(could (some of) the RPV cases be made generic as well?)
16949
16950 C...Special cases (= old treatment)
16951 C...Set colour flow for t -> W + b + Z.
16952           ELSEIF(KFA.EQ.6) THEN
16953             K(N+2,1)=3
16954             ISID=4
16955             IF(KCQM(JT).EQ.-1) ISID=5
16956             IDAU=N+2
16957             K(ID,ISID)=K(ID,ISID)+IDAU
16958             K(IDAU,ISID)=MSTU(5)*ID
16959  
16960 C...Set colour flow in three-body decays - programmed as special cases.
16961  
16962           ELSEIF(KFC2A.LE.6) THEN
16963             K(N+2,1)=3
16964             K(N+3,1)=3
16965             ISID=4
16966             IF(KFL2(JT).LT.0) ISID=5
16967             K(N+2,ISID)=MSTU(5)*(N+3)
16968             K(N+3,9-ISID)=MSTU(5)*(N+2)
16969 C...PS++: Bugfix 16 MAR 2006 for 3-body squark decays (e.g. via SLHA)
16970           ELSEIF(KFA.GT.KSUSY1.AND.MOD(KFA,KSUSY1).LT.10
16971      &          .AND.KFL3(JT).NE.0) THEN
16972             KQSUMA=IABS(KCQ1(JT))+IABS(KCQ2(JT))+IABS(KCQ3(JT))
16973 C...3-body decays of squarks to colour singlets plus one quark
16974             IF (KQSUMA.EQ.1) THEN
16975 C...Find quark
16976               IQ=0
16977               IF (KCQ1(JT).NE.0) IQ=1
16978               IF (KCQ2(JT).NE.0) IQ=2
16979               IF (KCQ3(JT).NE.0) IQ=3
16980               ISID=4
16981               IF (K(N+IQ,2).LT.0) ISID=5
16982               K(N+IQ,1)=3
16983               K(ID,ISID)=K(ID,ISID)+(N+IQ)
16984               K(N+IQ,ISID)=MSTU(5)*ID
16985             ENDIF
16986 C...PS--
16987           ELSEIF(KFL1(JT).EQ.KSUSY1+21) THEN
16988             K(N+1,1)=3
16989             K(N+2,1)=3
16990             K(N+3,1)=3
16991             ISID=4
16992             IF(KFL2(JT).LT.0) ISID=5
16993             K(N+1,ISID)=MSTU(5)*(N+2)
16994             K(N+1,9-ISID)=MSTU(5)*(N+3)
16995             K(N+2,ISID)=MSTU(5)*(N+1)
16996             K(N+3,9-ISID)=MSTU(5)*(N+1)
16997           ELSEIF(KFA.EQ.KSUSY1+21) THEN
16998             K(N+2,1)=3
16999             K(N+3,1)=3
17000             ISID=4
17001             IF(KFL2(JT).LT.0) ISID=5
17002             K(ID,ISID)=K(ID,ISID)+(N+2)
17003             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
17004             K(N+2,ISID)=MSTU(5)*ID
17005             K(N+3,9-ISID)=MSTU(5)*ID
17006 CMRENNA--
17007  
17008           ELSEIF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
17009      &    IABS(KCQ2(JT)).EQ.1) THEN
17010             K(N+2,1)=3
17011             K(N+3,1)=3
17012             ISID=4
17013             IF(KFL2(JT).LT.0) ISID=5
17014             K(N+2,ISID)=MSTU(5)*(N+3)
17015             K(N+3,9-ISID)=MSTU(5)*(N+2)
17016           ENDIF
17017            
17018           NSAV=N
17019           
17020 C...Set colour flow in three-body decays with baryon number violation.
17021 C...Neutralino and chargino decays first.
17022           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
17023           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
17024             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
17025             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17026 C...Insert junction to keep track of colours.
17027             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17028             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17029             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17030 C...Set special junction codes:
17031             K(N+4,1)=42
17032             K(N+4,2)=88
17033  
17034 C...Order decay products by invariant mass. (will be used in PYSTRF).
17035             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)-
17036      &      P(N+1,3)*P(N+2,3)
17037             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)-
17038      &      P(N+1,3)*P(N+3,3)
17039             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)-
17040      &      P(N+2,3)*P(N+3,3)
17041             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
17042               K(N+4,4)=N+3+K(N+4,4)
17043               K(N+4,5)=N+1+MSTU(5)*(N+2)
17044             ELSEIF(PM13.LT.PM23) THEN
17045               K(N+4,4)=N+2+K(N+4,4)
17046               K(N+4,5)=N+1+MSTU(5)*(N+3)
17047             ELSE
17048               K(N+4,4)=N+1+K(N+4,4)
17049               K(N+4,5)=N+2+MSTU(5)*(N+3)
17050             ENDIF
17051             DO 260 J=1,5
17052               P(N+4,J)=0D0
17053               V(N+4,J)=0D0
17054   260       CONTINUE
17055 C...Connect daughters to junction.
17056             DO 270 II=N+1,N+3
17057               K(II,4)=0
17058               K(II,5)=0
17059               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
17060   270       CONTINUE
17061 C...Particle counter should be stepped up one extra for junction.
17062             N=N+1
17063  
17064 C...Gluino decays.
17065           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
17066             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
17067             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17068 C...Insert junction to keep track of colours.
17069             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17070             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17071             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17072             K(N+4,1)=42
17073             K(N+4,2)=88
17074             DO 280 J=1,5
17075               P(N+4,J)=0D0
17076               V(N+4,J)=0D0
17077   280       CONTINUE
17078             CTMSUM=0D0
17079             DO 290 II=N+1,N+3
17080               K(II,4)=0
17081               K(II,5)=0
17082 C...Start by connecting all daughters to junction.
17083               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
17084 C...Only consider colour topologies with off shell resonances.
17085               RMQ1=PMAS(PYCOMP(K(II,2)),1)
17086               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
17087               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
17088               IF (RMGLU-RMQ1.LT.RMRES) THEN
17089 C...Calculate propagators for each colour topology.
17090                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
17091      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
17092                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
17093               ELSE
17094                 CTM2(II-N)=0D0
17095               ENDIF
17096               CTMSUM=CTMSUM+CTM2(II-N)
17097   290       CONTINUE
17098             CTMSUM=PYR(0)*CTMSUM
17099 C...Select colour topology J, with most off shell least likely.
17100             J=0
17101   300       J=J+1
17102             CTMSUM=CTMSUM-CTM2(J)
17103             IF (CTMSUM.GT.0D0) GOTO 300
17104 C...The lucky winner gets its colour (anti-colour) directly from gluino.
17105             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
17106             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
17107 C...The other gluino colour is connected to junction
17108             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
17109      &      MSTU(5)
17110             K(N+4,4)=K(N+4,4)+ID
17111 C...Lastly, connect junction to remaining daughters.
17112             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
17113 C...Particle counter should be stepped up one extra for junction.
17114             N=N+1
17115           ENDIF
17116  
17117 C...Update particle counter.
17118           N=N+3
17119
17120 C...2) Everything else two-body decay.
17121         ELSE
17122           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
17123           MCT(N-1,1)=0
17124           MCT(N-1,2)=0
17125           MCT(N,1)=0
17126           MCT(N,2)=0
17127 C...First set colour flow as if mother colour singlet.
17128           IF(KCQ1(JT).NE.0) THEN
17129             K(N-1,1)=3
17130             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
17131             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
17132           ENDIF
17133           IF(KCQ2(JT).NE.0) THEN
17134             K(N,1)=3
17135             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
17136             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
17137           ENDIF
17138 C...Then redirect colour flow if mother (anti)triplet.
17139           IF(KCQM(JT).EQ.0) THEN
17140           ELSEIF(KCQM(JT).NE.2) THEN
17141             ISID=4
17142             IF(KCQM(JT).EQ.-1) ISID=5
17143             IDAU=N-1
17144             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
17145             K(ID,ISID)=K(ID,ISID)+IDAU
17146             K(IDAU,ISID)=MSTU(5)*ID
17147 C...Then redirect colour flow if mother octet.
17148           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
17149             IDAU=N-1
17150             IF(KCQ1(JT).EQ.0) IDAU=N
17151             K(ID,4)=K(ID,4)+IDAU
17152             K(ID,5)=K(ID,5)+IDAU
17153             K(IDAU,4)=MSTU(5)*ID
17154             K(IDAU,5)=MSTU(5)*ID
17155           ELSE
17156             ISID=4
17157             IF(KCQ1(JT).EQ.-1) ISID=5
17158             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
17159             K(ID,ISID)=K(ID,ISID)+(N-1)
17160             K(ID,9-ISID)=K(ID,9-ISID)+N
17161             K(N-1,ISID)=MSTU(5)*ID
17162             K(N,9-ISID)=MSTU(5)*ID
17163           ENDIF
17164  
17165 C...Insert junction
17166           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
17167             N=N+1
17168 C...~q* mother: type 3 junction. ~q mother: type 4.
17169             ITJUNC(JT)=(7+KCQM(JT))/2
17170 C...Specify junction KF and set colour flow from junction
17171             K(N,1)=42
17172             K(N,2)=88
17173             K(N,3)=ID
17174 C...Junction type encoded together with mother:
17175             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
17176             K(N,5)=N-1+MSTU(5)*(N-2)
17177 C...Zero P and V for junction (V filled later)
17178             DO 310 J=1,5
17179               P(N,J)=0D0
17180               V(N,J)=0D0
17181   310       CONTINUE
17182 C...Set colour flow from mother to junction
17183             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
17184 C...Set colour flow from daughters to junction
17185             DO 320 II=N-2,N-1
17186               K(II,4) = 0
17187               K(II,5) = 0
17188 C...(Anti-)colour mother is junction.
17189               K(II,1+ITJUNC(JT)) = MSTU(5)*(N)
17190   320       CONTINUE
17191           ENDIF
17192         ENDIF
17193  
17194 C...End loop over resonances for daughter flavour and mass selection.
17195         MSTU(10)=MSTU10
17196   330   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
17197      &  NINH=NINH+1
17198         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
17199      &  KFL1(JT).EQ.0) THEN
17200           WRITE(CODE,'(I9)') K(ID,2)
17201           WRITE(MASS,'(F9.3)') P(ID,5)
17202           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
17203      &    CODE//' with mass'//MASS)
17204           MINT(51)=1
17205           GOTO 720
17206         ENDIF
17207   340 CONTINUE
17208  
17209 C...Check for allowed combinations. Skip if no decays.
17210       IF(JTMAX.EQ.1) THEN
17211         IF(KDCY(1).EQ.0) GOTO 710
17212       ELSEIF(JTMAX.EQ.2) THEN
17213         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 710
17214         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17215         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17216       ELSEIF(JTMAX.EQ.3) THEN
17217         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 710
17218         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17219         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17220         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17221         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17222         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17223         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17224       ENDIF
17225  
17226 C...Special case: matrix element option for Z0 decay to quarks.
17227       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
17228      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
17229  
17230 C...Check consistency of MSTJ options set.
17231         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
17232           CALL PYERRM(6,
17233      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
17234           MSTJ(110)=1
17235         ENDIF
17236         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
17237           CALL PYERRM(6,
17238      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
17239  
17240           MSTJ(111)=0
17241         ENDIF
17242  
17243 C...Select alpha_strong behaviour.
17244         MST111=MSTU(111)
17245         PAR112=PARU(112)
17246         MSTU(111)=MSTJ(108)
17247         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
17248      &  MSTU(111)=1
17249         PARU(112)=PARJ(121)
17250         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
17251  
17252 C...Find axial fraction in total cross section for scalar gluon model.
17253         PARJ(171)=0D0
17254         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
17255      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
17256           POLL=1D0-PARJ(131)*PARJ(132)
17257           SFF=1D0/(16D0*XW*XW1)
17258           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
17259      &    (PARJ(123)*PARJ(124))**2)
17260           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
17261           VE=4D0*XW-1D0
17262           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
17263           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
17264      &    (PARJ(132)-PARJ(131)))
17265           KFLC=IABS(KFL1(1))
17266           PMQ=PYMASS(KFLC)
17267           QF=KCHG(KFLC,1)/3D0
17268           VQ=1D0
17269           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
17270      &    1D0-(2D0*PMQ/P(ID,5))**2))
17271           VF=SIGN(1D0,QF)-4D0*QF*XW
17272           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
17273      &    VF**2*HF1W)+VQ**3*HF1W
17274           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
17275         ENDIF
17276  
17277 C...Choice of jet configuration.
17278         CALL PYXJET(P(ID,5),NJET,CUT)
17279         KFLC=IABS(KFL1(1))
17280         KFLN=21
17281         IF(NJET.EQ.4) THEN
17282           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
17283         ELSEIF(NJET.EQ.3) THEN
17284           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
17285         ELSE
17286           MSTJ(120)=1
17287         ENDIF
17288  
17289 C...Fill jet configuration; return if incorrect kinematics.
17290         NC=N-2
17291         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
17292           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
17293         ELSEIF(NJET.EQ.2) THEN
17294           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
17295         ELSEIF(NJET.EQ.3) THEN
17296           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
17297         ELSEIF(KFLN.EQ.21) THEN
17298           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17299      &    X12,X14)
17300         ELSE
17301           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17302      &    X12,X14)
17303         ENDIF
17304         IF(MSTU(24).NE.0) THEN
17305           MINT(51)=1
17306           MSTU(111)=MST111
17307           PARU(112)=PAR112
17308           GOTO 720
17309         ENDIF
17310  
17311 C...Angular orientation according to matrix element.
17312         IF(MSTJ(106).EQ.1) THEN
17313           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
17314           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
17315           CTHE(1)=COS(THEZ)
17316           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
17317           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
17318         ENDIF
17319  
17320 C...Boost partons to Z0 rest frame.
17321         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
17322      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
17323  
17324 C...Mark decayed resonance and add documentation lines,
17325         K(ID,1)=K(ID,1)+10
17326         IDOC=MINT(83)+MINT(4)
17327         DO 360 I=NC+1,N
17328           I1=MINT(83)+MINT(4)+1
17329           K(I,3)=I1
17330           IF(MSTP(128).GE.1) K(I,3)=ID
17331           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
17332             MINT(4)=MINT(4)+1
17333             K(I1,1)=21
17334             K(I1,2)=K(I,2)
17335             K(I1,3)=IREF(IP,4)
17336             DO 350 J=1,5
17337               P(I1,J)=P(I,J)
17338   350       CONTINUE
17339           ENDIF
17340   360   CONTINUE
17341  
17342 C...Generate parton shower.
17343         IF(MSTJ(101).EQ.5.AND.MINT(35).LE.1) THEN
17344         if(parj(200).ne.1.) CALL PYSHOW(N-1,N,P(ID,5))
17345         if(parj(200).eq.1.) CALL PYSHOWQ(N-1,N,P(ID,5))
17346         ELSEIF(MSTJ(101).EQ.5.AND.MINT(35).GE.2) THEN
17347           NPART=2
17348           IPART(1)=N-1
17349           IPART(2)=N
17350           PTPART(1)=0.5D0*P(ID,5)
17351           PTPART(2)=PTPART(1)
17352           NCT=NCT+1
17353           IF(K(N-1,2).GT.0) THEN
17354             MCT(N-1,1)=NCT
17355             MCT(N,2)=NCT
17356           ELSE
17357             MCT(N-1,2)=NCT
17358             MCT(N,1)=NCT
17359           ENDIF
17360           CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
17361         ENDIF
17362  
17363 C... End special case for Z0: skip ahead.
17364         MSTU(111)=MST111
17365         PARU(112)=PAR112
17366         GOTO 700
17367       ENDIF
17368  
17369 C...Order incoming partons and outgoing resonances.
17370       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
17371      &NINH.EQ.0) THEN
17372         ILIN(1)=MINT(84)+1
17373         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
17374         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
17375      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
17376         ILIN(2)=2*MINT(84)+3-ILIN(1)
17377         IMIN=1
17378         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
17379      &  .EQ.36) IMIN=3
17380         IMAX=2
17381         IORD=1
17382         IF(K(IREF(IP,1),2).EQ.23) IORD=2
17383         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
17384         IAKIPD=IABS(K(IREF(IP,IORD),2))
17385         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
17386         IF(KDCY(IORD).EQ.0) IORD=3-IORD
17387  
17388 C...Order decay products of resonances.
17389         DO 370 JT=IORD,3-IORD,3-2*IORD
17390           IF(KDCY(JT).EQ.0) THEN
17391             ILIN(IMAX+1)=NSD(JT)
17392             IMAX=IMAX+1
17393           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
17394             ILIN(IMAX+1)=N+2*JT-1
17395             ILIN(IMAX+2)=N+2*JT
17396             IMAX=IMAX+2
17397             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17398             K(N+2*JT,2)=K(NSD(JT)+2,2)
17399           ELSE
17400             ILIN(IMAX+1)=N+2*JT
17401  
17402             ILIN(IMAX+2)=N+2*JT-1
17403             IMAX=IMAX+2
17404             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17405             K(N+2*JT,2)=K(NSD(JT)+2,2)
17406           ENDIF
17407   370   CONTINUE
17408  
17409 C...Find charge, isospin, left- and righthanded couplings.
17410         DO 390 I=IMIN,IMAX
17411           DO 380 J=1,4
17412             COUP(I,J)=0D0
17413   380     CONTINUE
17414           KFA=IABS(K(ILIN(I),2))
17415           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 390
17416           COUP(I,1)=KCHG(KFA,1)/3D0
17417           COUP(I,2)=(-1)**MOD(KFA,2)
17418           COUP(I,4)=-2D0*COUP(I,1)*XWV
17419           COUP(I,3)=COUP(I,2)+COUP(I,4)
17420   390   CONTINUE
17421  
17422 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
17423         IF(ISUB.EQ.22) THEN
17424           DO 420 I=3,5,2
17425             I1=IORD
17426             IF(I.EQ.5) I1=3-IORD
17427             DO 410 J1=1,2
17428               DO 400 J2=1,2
17429                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
17430      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
17431      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
17432      &          COUP(I,J2+2)**2
17433   400         CONTINUE
17434   410       CONTINUE
17435   420     CONTINUE
17436           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
17437      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
17438           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
17439      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
17440  
17441           IF(COWT12.LT.PYR(0)*COMX12) GOTO 180
17442         ENDIF
17443       ENDIF
17444  
17445 C...Select angular orientation type - Z'/W' only.
17446       MZPWP=0
17447       IF(ISUB.EQ.141) THEN
17448         IF(PYR(0).LT.PARU(130)) MZPWP=1
17449         IF(IP.EQ.2) THEN
17450           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
17451           IAKIR=IABS(K(IREF(2,2),2))
17452           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17453           IF(IAKIR.LE.20) MZPWP=2
17454         ENDIF
17455         IF(IP.GE.3) MZPWP=2
17456       ELSEIF(ISUB.EQ.142) THEN
17457         IF(PYR(0).LT.PARU(136)) MZPWP=1
17458         IF(IP.EQ.2) THEN
17459           IAKIR=IABS(K(IREF(2,2),2))
17460           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17461           IF(IAKIR.LE.20) MZPWP=2
17462         ENDIF
17463         IF(IP.GE.3) MZPWP=2
17464       ENDIF
17465  
17466 C...Select random angles (begin of weighting procedure).
17467   430 DO 440 JT=1,JTMAX
17468         IF(KDCY(JT).EQ.0) GOTO 440
17469         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
17470           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
17471           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
17472           PHI(JT)=VINT(24)
17473         ELSE
17474           CTHE(JT)=2D0*PYR(0)-1D0
17475           PHI(JT)=PARU(2)*PYR(0)
17476         ENDIF
17477   440 CONTINUE
17478  
17479       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
17480 C...Construct massless four-vectors.
17481         DO 460 I=N+1,N+4
17482           K(I,1)=1
17483           DO 450 J=1,5
17484             P(I,J)=0D0
17485             V(I,J)=0D0
17486   450     CONTINUE
17487   460   CONTINUE
17488         DO 470 JT=1,JTMAX
17489           IF(KDCY(JT).EQ.0) GOTO 470
17490           ID=IREF(IP,JT)
17491           P(N+2*JT-1,3)=0.5D0*P(ID,5)
17492           P(N+2*JT-1,4)=0.5D0*P(ID,5)
17493           P(N+2*JT,3)=-0.5D0*P(ID,5)
17494           P(N+2*JT,4)=0.5D0*P(ID,5)
17495           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
17496      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
17497   470   CONTINUE
17498  
17499 C...Store incoming and outgoing momenta, with random rotation to
17500 C...avoid accidental zeroes in HA expressions.
17501         IF(ISUB.NE.0) THEN
17502           DO 490 I=IMIN,IMAX
17503             K(N+4+I,1)=1
17504             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
17505      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
17506             P(N+4+I,5)=P(ILIN(I),5)
17507             DO 480 J=1,3
17508               P(N+4+I,J)=P(ILIN(I),J)
17509   480       CONTINUE
17510   490     CONTINUE
17511   500     THERR=ACOS(2D0*PYR(0)-1D0)
17512           PHIRR=PARU(2)*PYR(0)
17513           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
17514           DO 520 I=IMIN,IMAX
17515             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*(P(N+4+I,1)**2+
17516      &      P(N+4+I,2)**2+P(N+4+I,3)**2)) GOTO 500
17517             DO 510 J=1,4
17518               PK(I,J)=P(N+4+I,J)
17519   510       CONTINUE
17520   520     CONTINUE
17521         ENDIF
17522  
17523 C...Calculate internal products.
17524         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
17525      &  ISUB.EQ.142) THEN
17526           DO 540 I1=IMIN,IMAX-1
17527             DO 530 I2=I1+1,IMAX
17528               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
17529      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
17530      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
17531      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
17532      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
17533      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
17534               HC(I1,I2)=CONJG(HA(I1,I2))
17535               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
17536               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
17537               HA(I2,I1)=-HA(I1,I2)
17538               HC(I2,I1)=-HC(I1,I2)
17539   530       CONTINUE
17540   540     CONTINUE
17541         ENDIF
17542  
17543 C...Calculate four-products.
17544         IF(ISUB.NE.0) THEN
17545           DO 560 I=1,2
17546             DO 550 J=1,4
17547               PK(I,J)=-PK(I,J)
17548   550       CONTINUE
17549   560     CONTINUE
17550           DO 580 I1=IMIN,IMAX-1
17551             DO 570 I2=I1+1,IMAX
17552               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
17553      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
17554               PKK(I2,I1)=PKK(I1,I2)
17555   570       CONTINUE
17556   580     CONTINUE
17557         ENDIF
17558       ENDIF
17559  
17560       KFAGM=IABS(IREF(IP,7))
17561       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
17562 C...Isotropic decay selected by user.
17563         WT=1D0
17564         WTMAX=1D0
17565  
17566       ELSEIF(JTMAX.EQ.3) THEN
17567 C...Isotropic decay when three mother particles.
17568         WT=1D0
17569         WTMAX=1D0
17570  
17571       ELSEIF(IT4.GE.1) THEN
17572 C... Isotropic decay t -> b + W etc for 4th generation q and l.
17573         WT=1D0
17574         WTMAX=1D0
17575  
17576       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
17577      &  IREF(IP,7).EQ.36) THEN
17578 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
17579 C...CP-odd case added by Kari Ertresvag Myklevoll.
17580 C...Now also with mixed Higgs CP-states
17581         ETA=PARP(25)
17582         IF(IP.EQ.1) WTMAX=SH**2
17583         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
17584         KFA=IABS(K(IREF(IP,1),2))
17585         KFT=IABS(K(IREF(IP,2),2))
17586         
17587         IF((KFA.EQ.KFT).AND.(KFA.EQ.23.OR.KFA.EQ.24).AND.
17588      &  MSTP(25).GE.3) THEN
17589 C...For mixed CP states need epsilon product.
17590           P10=PK(3,4)
17591           P20=PK(4,4)
17592           P30=PK(5,4)
17593           P40=PK(6,4)
17594           P11=PK(3,1)
17595           P21=PK(4,1)
17596           P31=PK(5,1)
17597           P41=PK(6,1)
17598           P12=PK(3,2)
17599           P22=PK(4,2)
17600           P32=PK(5,2)
17601           P42=PK(6,2)
17602           P13=PK(3,3)
17603           P23=PK(4,3)
17604           P33=PK(5,3)
17605           P43=PK(6,3)
17606           EPSI=P10*P21*P32*P43-P10*P21*P33*P42-P10*P22*P31*P43+P10*P22*
17607      &      P33*P41+P10*P23*P31*P42-P10*P23*P32*P41-P11*P20*P32*P43+P11*
17608      &      P20*P33*P42+P11*P22*P30*P43-P11*P22*P33*P40-P11*P23*P30*P42+
17609      &      P11*P23*P32*P40+P12*P20*P31*P43-P12*P20*P33*P41-P12*P21*P30*
17610      &      P43+P12*P21*P33*P40+P12*P23*P30*P41-P12*P23*P31*P40-P13*P20*
17611      &      P31*P42+P13*P20*P32*P41+P13*P21*P30*P42-P13*P21*P32*P40-P13*
17612      &      P22*P30*P41+P13*P22*P31*P40
17613 C...For mixed CP states need gauge boson masses.
17614           XMA=SQRT(MAX(0D0,(PK(3,4)+PK(4,4))**2-(PK(3,1)+PK(4,1))**2-
17615      &      (PK(3,2)+PK(4,2))**2-(PK(3,3)+PK(4,3))**2))
17616           XMB=SQRT(MAX(0D0,(PK(5,4)+PK(6,4))**2-(PK(5,1)+PK(6,1))**2-
17617      &      (PK(5,2)+PK(6,2))**2-(PK(5,3)+PK(6,3))**2))
17618           XMV=PMAS(KFA,1)
17619         ENDIF
17620  
17621 C...Z decay
17622         IF(KFA.EQ.23.AND.KFA.EQ.KFT) THEN
17623           KFLF1A=IABS(KFL1(1))
17624           EF1=KCHG(KFLF1A,1)/3D0
17625           AF1=SIGN(1D0,EF1+0.1D0)
17626           VF1=AF1-4D0*EF1*XWV
17627           KFLF2A=IABS(KFL1(2))
17628           EF2=KCHG(KFLF2A,1)/3D0
17629           AF2=SIGN(1D0,EF2+0.1D0)
17630           VF2=AF2-4D0*EF2*XWV
17631           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)*(VF2**2+AF2**2))
17632           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
17633      &      THEN
17634 C...CP-even decay
17635             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
17636      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
17637           ELSEIF(MSTP(25).LE.2) THEN
17638 C...CP-odd decay
17639             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
17640      &        -2*PKK(3,4)*PKK(5,6)
17641      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
17642      &        (PKK(3,4)*PKK(5,6))
17643      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
17644      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
17645           ELSE
17646 C...Mixed CP states.
17647             WT=32D0*(0.25D0*((1D0+VA12AS)*PKK(3,5)*PKK(4,6)
17648      &        +(1D0-VA12AS)*PKK(3,6)*PKK(4,5))
17649      &        -0.5D0*ETA/XMV**2*EPSI*((1D0+VA12AS)*(PKK(3,5)+PKK(4,6))
17650      &        -(1D0-VA12AS)*(PKK(3,6)+PKK(4,5)))
17651      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
17652      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
17653      &        +PKK(3,4)*PKK(5,6)
17654      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
17655      &        +VA12AS*PKK(3,4)*PKK(5,6)
17656      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
17657      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
17658      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
17659      &          +2D0*(ETA*XMA*XMB/XMV**2)**2*(1D0+VA12AS))
17660           ENDIF
17661  
17662 C...W decay
17663         ELSEIF(KFA.EQ.24.AND.KFA.EQ.KFT) THEN
17664           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
17665      &      THEN
17666 C...CP-even decay
17667             WT=16D0*PKK(3,5)*PKK(4,6)
17668           ELSEIF(MSTP(25).LE.2) THEN
17669 C...CP-odd decay
17670             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
17671      &        -2*PKK(3,4)*PKK(5,6)
17672      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
17673      &        (PKK(3,4)*PKK(5,6))
17674      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
17675      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
17676           ELSE
17677 C...Mixed CP states.
17678             WT=32D0*(0.25D0*2D0*PKK(3,5)*PKK(4,6)
17679      &        -0.5D0*ETA/XMV**2*EPSI*2D0*(PKK(3,5)+PKK(4,6))
17680      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
17681      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
17682      &        +PKK(3,4)*PKK(5,6)
17683      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
17684      &        +PKK(3,4)*PKK(5,6)
17685      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
17686      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
17687      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
17688      &          +(2D0*ETA*XMA*XMB/XMV**2)**2)
17689           ENDIF
17690  
17691 C...No angular correlations in other Higgs decays.
17692         ELSE
17693           WT=WTMAX
17694         ENDIF
17695  
17696       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
17697      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
17698      &  THEN
17699 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
17700         I1=IREF(IP,8)
17701         IF(MOD(KFAGM,2).EQ.0) THEN
17702           I2=N+1
17703           I3=N+2
17704         ELSE
17705           I2=N+2
17706           I3=N+1
17707         ENDIF
17708         I4=IREF(IP,2)
17709         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
17710      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
17711      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
17712         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
17713  
17714       ELSEIF(ISUB.EQ.1) THEN
17715 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
17716         EI=KCHG(IABS(MINT(15)),1)/3D0
17717         AI=SIGN(1D0,EI+0.1D0)
17718         VI=AI-4D0*EI*XWV
17719         EF=KCHG(IABS(KFL1(1)),1)/3D0
17720         AF=SIGN(1D0,EF+0.1D0)
17721  
17722         VF=AF-4D0*EF*XWV
17723         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
17724         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17725      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
17726         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17727      &  (VI**2+AI**2)*VINT(114)*VF**2)
17728         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
17729      &  4D0*VI*AI*VINT(114)*VF*AF)
17730         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
17731      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
17732         WTMAX=2D0*(WT1+ABS(WT3))
17733  
17734       ELSEIF(ISUB.EQ.2) THEN
17735 C...Angular weight for W+/- -> 2 quarks/leptons.
17736         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
17737         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
17738         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
17739         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
17740         WTMAX=4D0
17741  
17742       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
17743 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
17744 C...-> gluon/gamma + 2 quarks/leptons.
17745         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17746      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17747      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
17748         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17749      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17750      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
17751         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17752      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17753      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
17754         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17755      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17756      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
17757         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
17758      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
17759         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
17760      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
17761  
17762       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
17763 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
17764 C...-> gluon/gamma + 2 quarks/leptons.
17765         WT=PKK(1,3)**2+PKK(2,4)**2
17766         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
17767  
17768       ELSEIF(ISUB.EQ.22) THEN
17769 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
17770         S34=P(IREF(IP,IORD),5)**2
17771         S56=P(IREF(IP,3-IORD),5)**2
17772         TI=PKK(1,3)+PKK(1,4)+S34
17773         UI=PKK(1,5)+PKK(1,6)+S56
17774         TIR=REAL(TI)
17775         UIR=REAL(UI)
17776         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
17777         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
17778         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
17779         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
17780         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
17781         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
17782         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
17783         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
17784  
17785         WT=
17786      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
17787      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
17788      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
17789      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
17790         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
17791      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
17792      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
17793      &  1D0/UI**2))
17794  
17795       ELSEIF(ISUB.EQ.23) THEN
17796 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
17797         D34=P(IREF(IP,IORD),5)**2
17798         D56=P(IREF(IP,3-IORD),5)**2
17799         DT=PKK(1,3)+PKK(1,4)+D34
17800         DU=PKK(1,5)+PKK(1,6)+D56
17801         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
17802         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
17803         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
17804         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
17805  
17806      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
17807         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
17808      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
17809         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
17810         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
17811      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
17812  
17813       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
17814 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
17815 C...(or H0, or A0).
17816         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
17817      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
17818      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
17819         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
17820      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
17821  
17822       ELSEIF(ISUB.EQ.25) THEN
17823 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
17824         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
17825         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
17826         D34=P(IREF(IP,IORD),5)**2
17827         D56=P(IREF(IP,3-IORD),5)**2
17828         DT=PKK(1,3)+PKK(1,4)+D34
17829         DU=PKK(1,5)+PKK(1,6)+D56
17830         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
17831         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
17832         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
17833         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
17834         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
17835         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
17836      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
17837         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
17838         IF(MSTP(50).LE.0) THEN
17839           WT=FGK135**2+(CCWW*FGK253)**2
17840           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
17841      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
17842      &    DJGK(DT,DU)))
17843         ELSE
17844           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
17845           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
17846      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
17847      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
17848         ENDIF
17849  
17850       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
17851 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
17852 C...(or H0, or A0).
17853         WT=PKK(1,3)*PKK(2,4)
17854         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
17855  
17856       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
17857 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
17858 C...-> f + 2 quarks/leptons.
17859         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17860      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17861      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
17862         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17863      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17864      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
17865         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17866      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
17867      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
17868         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
17869      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
17870      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
17871         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
17872      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
17873         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
17874      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
17875         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
17876      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
17877  
17878       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
17879 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
17880         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
17881         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
17882         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
17883  
17884       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
17885      &  ISUB.EQ.77) THEN
17886 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
17887         WT=16D0*PKK(3,5)*PKK(4,6)
17888         WTMAX=SH**2
17889  
17890       ELSEIF(ISUB.EQ.110) THEN
17891 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
17892         WT=1D0
17893         WTMAX=1D0
17894  
17895       ELSEIF(ISUB.EQ.141) THEN
17896         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
17897 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
17898 C...Couplings of incoming flavour.
17899           KFAI=IABS(MINT(15))
17900           EI=KCHG(KFAI,1)/3D0
17901           AI=SIGN(1D0,EI+0.1D0)
17902           VI=AI-4D0*EI*XWV
17903           KFAIC=1
17904           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
17905           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
17906           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
17907           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
17908             VPI=PARU(119+2*KFAIC)
17909             API=PARU(120+2*KFAIC)
17910           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
17911             VPI=PARJ(178+2*KFAIC)
17912             API=PARJ(179+2*KFAIC)
17913           ELSE
17914             VPI=PARJ(186+2*KFAIC)
17915             API=PARJ(187+2*KFAIC)
17916           ENDIF
17917 C...Couplings of final flavour.
17918           KFAF=IABS(KFL1(1))
17919           EF=KCHG(KFAF,1)/3D0
17920           AF=SIGN(1D0,EF+0.1D0)
17921           VF=AF-4D0*EF*XWV
17922           KFAFC=1
17923           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
17924           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
17925           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
17926           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
17927             VPF=PARU(119+2*KFAFC)
17928             APF=PARU(120+2*KFAFC)
17929           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
17930             VPF=PARJ(178+2*KFAFC)
17931             APF=PARJ(179+2*KFAFC)
17932           ELSE
17933             VPF=PARJ(186+2*KFAFC)
17934             APF=PARJ(187+2*KFAFC)
17935           ENDIF
17936 C...Asymmetry and weight.
17937           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
17938      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
17939      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
17940      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
17941      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
17942      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
17943      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
17944           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
17945           WTMAX=2D0+ABS(ASYM)
17946         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
17947 C...Angular weight for f + fbar -> Z' -> W+ + W-.
17948           RM1=P(NSD(1)+1,5)**2/SH
17949           RM2=P(NSD(1)+2,5)**2/SH
17950           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
17951      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
17952           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
17953      &    (RM2-RM1)**2)
17954           WT=CFLAT+CCOS2*CTHE(1)**2
17955           WTMAX=CFLAT+MAX(0D0,CCOS2)
17956         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
17957      &    IABS(KFL1(1)).EQ.37)) THEN
17958 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
17959           WT=1D0-CTHE(1)**2
17960           WTMAX=1D0
17961         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
17962 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
17963           RM1=P(NSD(1)+1,5)**2/SH
17964           RM2=P(NSD(1)+2,5)**2/SH
17965           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
17966           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
17967           WTMAX=1D0+FLAM2/(8D0*RM1)
17968         ELSEIF(MZPWP.EQ.0) THEN
17969 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
17970 C...(W:s like if intermediate Z).
17971           D34=P(IREF(IP,IORD),5)**2
17972           D56=P(IREF(IP,3-IORD),5)**2
17973           DT=PKK(1,3)+PKK(1,4)+D34
17974           DU=PKK(1,5)+PKK(1,6)+D56
17975           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
17976           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
17977           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
17978           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
17979      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
17980         ELSEIF(MZPWP.EQ.1) THEN
17981 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
17982 C...(W:s approximately longitudinal, like if intermediate H).
17983           WT=16D0*PKK(3,5)*PKK(4,6)
17984           WTMAX=SH**2
17985         ELSE
17986 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
17987 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
17988           WT=1D0
17989           WTMAX=1D0
17990         ENDIF
17991  
17992       ELSEIF(ISUB.EQ.142) THEN
17993         IF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN
17994 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
17995           KFAI=IABS(MINT(15))
17996           KFAIC=1
17997           IF(KFAI.GT.10) KFAIC=2
17998           VI=PARU(129+2*KFAIC)
17999           AI=PARU(130+2*KFAIC)
18000           KFAF=IABS(KFL1(1))
18001           KFAFC=1
18002           IF(KFAF.GT.10) KFAFC=2
18003           VF=PARU(129+2*KFAFC)
18004           AF=PARU(130+2*KFAFC)
18005           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
18006           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
18007           WTMAX=2D0+ABS(ASYM)
18008         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
18009 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
18010           RM1=P(NSD(1)+1,5)**2/SH
18011           RM2=P(NSD(1)+2,5)**2/SH
18012           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
18013      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
18014           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
18015      &    (RM2-RM1)**2)
18016           WT=CFLAT+CCOS2*CTHE(1)**2
18017           WTMAX=CFLAT+MAX(0D0,CCOS2)
18018         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
18019 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
18020           RM1=P(NSD(1)+1,5)**2/SH
18021           RM2=P(NSD(1)+2,5)**2/SH
18022           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
18023           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
18024           WTMAX=1D0+FLAM2/(8D0*RM1)
18025         ELSEIF(MZPWP.EQ.0) THEN
18026 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18027 C...(W/Z like if intermediate W).
18028           D34=P(IREF(IP,IORD),5)**2
18029           D56=P(IREF(IP,3-IORD),5)**2
18030           DT=PKK(1,3)+PKK(1,4)+D34
18031           DU=PKK(1,5)+PKK(1,6)+D56
18032           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
18033           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
18034           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
18035           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
18036      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
18037         ELSEIF(MZPWP.EQ.1) THEN
18038 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18039 C...(W/Z approximately longitudinal, like if intermediate H).
18040           WT=16D0*PKK(3,5)*PKK(4,6)
18041           WTMAX=SH**2
18042         ELSE
18043 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
18044 C...t + bbar -> t + W + bbar.
18045           WT=1D0
18046           WTMAX=1D0
18047         ENDIF
18048  
18049       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
18050      &  THEN
18051 C...Isotropic decay of leptoquarks (assumed spin 0).
18052         WT=1D0
18053         WTMAX=1D0
18054  
18055       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
18056 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
18057         SIDE=1D0
18058         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
18059         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
18060           WT=1D0+SIDE*CTHE(1)
18061           WTMAX=2D0
18062         ELSEIF(IP.EQ.1) THEN
18063  
18064           RM1=P(NSD(1)+1,5)**2/SH
18065           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18066           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18067         ELSE
18068 C...W/Z decay assumed isotropic, since not known.
18069           WT=1D0
18070           WTMAX=1D0
18071         ENDIF
18072  
18073       ELSEIF(ISUB.EQ.149) THEN
18074 C...Isotropic decay of techni-eta.
18075         WT=1D0
18076         WTMAX=1D0
18077  
18078       ELSEIF(ISUB.EQ.191) THEN
18079         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18080 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
18081 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
18082           WT=1D0-CTHE(1)**2
18083           WTMAX=1D0
18084         ELSEIF(IP.EQ.1) THEN
18085 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
18086           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18087           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
18088           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18089           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18090           KFAI=IABS(MINT(15))
18091           EI=KCHG(KFAI,1)/3D0
18092           AI=SIGN(1D0,EI+0.1D0)
18093           VI=AI-4D0*EI*XWV
18094           VALI=0.5D0*(VI+AI)
18095           VARI=0.5D0*(VI-AI)
18096           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
18097           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
18098           KFAF=IABS(KFL1(1))
18099           EF=KCHG(KFAF,1)/3D0
18100           AF=SIGN(1D0,EF+0.1D0)
18101           VF=AF-4D0*EF*XWV
18102           VALF=0.5D0*(VF+AF)
18103           VARF=0.5D0*(VF-AF)
18104           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
18105           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
18106           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
18107           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
18108           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
18109           WTMAX=4D0*MAX(ASAME,AFLIP)
18110         ELSE
18111 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
18112           WT=1D0
18113           WTMAX=1D0
18114         ENDIF
18115  
18116       ELSEIF(ISUB.EQ.192) THEN
18117         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18118 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
18119 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
18120           WT=1D0-CTHE(1)**2
18121           WTMAX=1D0
18122         ELSEIF(IP.EQ.1) THEN
18123 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
18124           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18125           WT=(1D0+CTHESG)**2
18126           WTMAX=4D0
18127         ELSE
18128 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
18129           WT=1D0
18130           WTMAX=1D0
18131         ENDIF
18132  
18133       ELSEIF(ISUB.EQ.193) THEN
18134         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18135 C...Angular weight for f + fbar -> omega_tc0 ->
18136 C...gamma pi_tc0 or Z0 pi_tc0.
18137           WT=1D0+CTHE(1)**2
18138           WTMAX=2D0
18139         ELSEIF(IP.EQ.1) THEN
18140 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
18141           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18142           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18143           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18144           KFAI=IABS(MINT(15))
18145           EI=KCHG(KFAI,1)/3D0
18146           AI=SIGN(1D0,EI+0.1D0)
18147           VI=AI-4D0*EI*XWV
18148           VALI=0.5D0*(VI+AI)
18149           VARI=0.5D0*(VI-AI)
18150           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
18151           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
18152           KFAF=IABS(KFL1(1))
18153           EF=KCHG(KFAF,1)/3D0
18154           AF=SIGN(1D0,EF+0.1D0)
18155           VF=AF-4D0*EF*XWV
18156           VALF=0.5D0*(VF+AF)
18157           VARF=0.5D0*(VF-AF)
18158           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
18159           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
18160           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
18161           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
18162           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
18163           WTMAX=4D0*MAX(BSAME,BFLIP)
18164         ELSE
18165 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
18166           WT=1D0
18167           WTMAX=1D0
18168         ENDIF
18169  
18170       ELSEIF(ISUB.EQ.353) THEN
18171 C...Angular weight for Z_R0 -> 2 quarks/leptons.
18172         EI=KCHG(IABS(MINT(15)),1)/3D0
18173         AI=SIGN(1D0,EI+0.1D0)
18174         VI=AI-4D0*EI*XWV
18175         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
18176         AF=SIGN(1D0,EF+0.1D0)
18177         VF=AF-4D0*EF*XWV
18178         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
18179         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
18180         WT2=RMF*(VI**2+AI**2)*VF**2
18181         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
18182         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
18183      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
18184         WTMAX=2D0*(WT1+ABS(WT3))
18185  
18186       ELSEIF(ISUB.EQ.354) THEN
18187 C...Angular weight for W_R+/- -> 2 quarks/leptons.
18188         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
18189         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
18190         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18191         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
18192         WTMAX=4D0
18193  
18194       ELSEIF(ISUB.EQ.391) THEN
18195 C...Angular weight for f + fbar -> G* -> f + fbar
18196         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18197           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
18198           WTMAX=2D0
18199 C...Angular weight for f + fbar -> G* -> gamma + gamma or g + g
18200 C...implemented by M.-C. Lemaire
18201         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18202      &  IABS(KFL1(1)).EQ.22)) THEN
18203           WT=1D0-CTHE(1)**4
18204           WTMAX=1D0
18205 C...Other G* decays not yet implemented angular distributions.
18206         ELSE
18207           WT=1D0
18208           WTMAX=1D0
18209         ENDIF
18210  
18211       ELSEIF(ISUB.EQ.392) THEN
18212 C...Angular weight for g + g -> G* -> f + fbar
18213         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18214           WT=1D0-CTHE(1)**4
18215           WTMAX=1D0
18216 C...Angular weight for g + g -> G* -> gamma +gamma or g + g
18217 C...implemented by M.-C. Lemaire
18218         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18219      &  IABS(KFL1(1)).EQ.22)) THEN
18220          WT=1D0+6D0*CTHE(1)**2+CTHE(1)**4
18221           WTMAX=8D0
18222 C...Other G* decays not yet implemented angular distributions.
18223         ELSE
18224           WT=1D0
18225           WTMAX=1D0
18226         ENDIF
18227  
18228 C...Obtain correct angular distribution by rejection techniques.
18229       ELSE
18230         WT=1D0
18231         WTMAX=1D0
18232       ENDIF
18233       IF(WT.LT.PYR(0)*WTMAX) GOTO 430
18234  
18235 C...Construct massive four-vectors using angles chosen.
18236   590 DO 690 JT=1,JTMAX
18237         IF(KDCY(JT).EQ.0) GOTO 690
18238         ID=IREF(IP,JT)
18239         DO 600 J=1,5
18240           DPMO(J)=P(ID,J)
18241   600   CONTINUE
18242         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
18243 CMRENNA++
18244         IF(KFL3(JT).EQ.0) THEN
18245           CALL PYROBO(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
18246      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18247           N0=NSD(JT)+2
18248         ELSE
18249           CALL PYROBO(NSD(JT)+1,NSD(JT)+3,ACOS(CTHE(JT)),PHI(JT),
18250      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18251           N0=NSD(JT)+3
18252         ENDIF
18253  
18254         DO 610 J=1,4
18255           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
18256   610   CONTINUE
18257 C...Fill in position of decay vertex.
18258         DO 630 I=NSD(JT)+1,N0
18259           DO 620 J=1,4
18260             V(I,J)=VDCY(J)
18261   620     CONTINUE
18262           V(I,5)=0D0
18263  
18264   630   CONTINUE
18265 CMRENNA--
18266  
18267 C...Mark decayed resonances; trace history.
18268         K(ID,1)=K(ID,1)+10
18269         KFA=IABS(K(ID,2))
18270         KCA=PYCOMP(KFA)
18271         IF(KCQM(JT).NE.0) THEN
18272 C...Do not kill colour flow through coloured resonance!
18273         ELSE
18274           K(ID,4)=NSD(JT)+1
18275           K(ID,5)=NSD(JT)+2
18276 C...If 3-body or 2-body with junction:
18277           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
18278 C...If 3-body with junction:
18279           IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
18280         ENDIF
18281  
18282 C...Add documentation lines.
18283         ISUBRG=MAX(1,MIN(500,MINT(1)))
18284         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
18285           IDOC=MINT(83)+MINT(4)
18286 CMRENNA+++
18287           IHI=NSD(JT)+2
18288           IF(KFL3(JT).NE.0) IHI=IHI+1
18289           DO 650 I=NSD(JT)+1,IHI
18290 CMRENNA---
18291             I1=MINT(83)+MINT(4)+1
18292             K(I,3)=I1
18293             IF(MSTP(128).GE.1) K(I,3)=ID
18294             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
18295               MINT(4)=MINT(4)+1
18296               K(I1,1)=21
18297               K(I1,2)=K(I,2)
18298               K(I1,3)=IREF(IP,JT+3)
18299               DO 640 J=1,5
18300                 P(I1,J)=P(I,J)
18301   640         CONTINUE
18302             ENDIF
18303   650     CONTINUE
18304         ELSE
18305           K(NSD(JT)+1,3)=ID
18306           K(NSD(JT)+2,3)=ID
18307 C...If 3-body or 2-body with junction:
18308           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
18309 C...If 3-body with junction:
18310           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
18311         ENDIF
18312  
18313 C...Do showering of two or three objects.
18314         NSHBEF=N
18315         IF(MSTP(71).GE.1.AND.MINT(35).LE.1) THEN
18316           IF(KFL3(JT).EQ.0) THEN
18317         if(parj(200).ne.1.) CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
18318         if(parj(200).eq.1.) CALL PYSHOWQ(NSD(JT)+1,NSD(JT)+2,P(ID,5))
18319           ELSE
18320         if(parj(200).ne.1.) CALL PYSHOW(NSD(JT)+1,-3,P(ID,5))
18321         if(parj(200).eq.1.) CALL PYSHOWQ(NSD(JT)+1,-3,P(ID,5))
18322           ENDIF
18323  
18324 c...For pT-ordered shower need set up first, especially colour tags.
18325 C...(Need to set up colour tags even if MSTP(71) = 0)
18326         ELSEIF(MINT(35).GE.2) THEN
18327           NPART=2
18328           IF(KFL3(JT).NE.0) NPART=3
18329           IPART(1)=NSD(JT)+1
18330           IPART(2)=NSD(JT)+2
18331           IPART(3)=NSD(JT)+3
18332           PTPART(1)=0.5D0*P(ID,5)
18333           PTPART(2)=PTPART(1)
18334           PTPART(3)=PTPART(1)
18335           IF(KCQ1(JT).EQ.1.OR.KCQ1(JT).EQ.2) THEN
18336             MOTHER=K(NSD(JT)+1,4)/MSTU(5)
18337             IF(MOTHER.LE.NSD(JT)) THEN
18338               MCT(NSD(JT)+1,1)=MCT(MOTHER,1)
18339             ELSE
18340               NCT=NCT+1
18341               MCT(NSD(JT)+1,1)=NCT
18342               MCT(MOTHER,2)=NCT
18343             ENDIF
18344           ENDIF
18345           IF(KCQ1(JT).EQ.-1.OR.KCQ1(JT).EQ.2) THEN
18346             MOTHER=K(NSD(JT)+1,5)/MSTU(5)
18347             IF(MOTHER.LE.NSD(JT)) THEN
18348               MCT(NSD(JT)+1,2)=MCT(MOTHER,2)
18349             ELSE
18350               NCT=NCT+1
18351               MCT(NSD(JT)+1,2)=NCT
18352               MCT(MOTHER,1)=NCT
18353             ENDIF
18354           ENDIF
18355           IF(MCT(NSD(JT)+2,1).EQ.0.AND.(KCQ2(JT).EQ.1.OR.
18356      &    KCQ2(JT).EQ.2)) THEN
18357             MOTHER=K(NSD(JT)+2,4)/MSTU(5)
18358             IF(MOTHER.LE.NSD(JT)) THEN
18359               MCT(NSD(JT)+2,1)=MCT(MOTHER,1)
18360             ELSE
18361               NCT=NCT+1
18362               MCT(NSD(JT)+2,1)=NCT
18363               MCT(MOTHER,2)=NCT
18364             ENDIF
18365           ENDIF
18366           IF(MCT(NSD(JT)+2,2).EQ.0.AND.(KCQ2(JT).EQ.-1.OR.
18367      &    KCQ2(JT).EQ.2)) THEN
18368             MOTHER=K(NSD(JT)+2,5)/MSTU(5)
18369             IF(MOTHER.LE.NSD(JT)) THEN
18370               MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18371             ELSE
18372               NCT=NCT+1
18373               MCT(NSD(JT)+2,2)=NCT
18374               MCT(MOTHER,1)=NCT
18375             ENDIF
18376           ENDIF
18377           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,1).EQ.0.AND.
18378      &    (KCQ3(JT).EQ.1.OR. KCQ3(JT).EQ.2)) THEN
18379             MOTHER=K(NSD(JT)+3,4)/MSTU(5)
18380             MCT(NSD(JT)+3,1)=MCT(MOTHER,1)
18381           ENDIF
18382           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,2).EQ.0.AND.
18383      &    (KCQ3(JT).EQ.-1.OR.KCQ3(JT).EQ.2)) THEN
18384             MOTHER=K(NSD(JT)+3,5)/MSTU(5)
18385             MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18386           ENDIF
18387           IF (MSTP(71).GE.1) CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
18388         ENDIF
18389         NSHAFT=N
18390         IF(JT.EQ.1) NAFT1=N
18391  
18392 C...Check if decay products moved by shower.
18393         NSD1=NSD(JT)+1
18394         NSD2=NSD(JT)+2
18395         NSD3=NSD(JT)+3
18396         IF(NSHAFT.GT.NSHBEF) THEN
18397           IF(K(NSD1,1).GT.10) THEN
18398             DO 660 I=NSHBEF+1,NSHAFT
18399               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
18400   660       CONTINUE
18401           ENDIF
18402           IF(K(NSD2,1).GT.10) THEN
18403             DO 670 I=NSHBEF+1,NSHAFT
18404               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
18405      &        I.NE.NSD1) NSD2=I
18406   670       CONTINUE
18407           ENDIF
18408           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
18409             DO 680 I=NSHBEF+1,NSHAFT
18410               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
18411      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
18412   680       CONTINUE
18413           ENDIF
18414         ENDIF
18415  
18416 C...Store decay products for further treatment.
18417         NP=NP+1
18418         IREF(NP,1)=NSD1
18419         IREF(NP,2)=NSD2
18420         IREF(NP,3)=0
18421         IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
18422         IREF(NP,4)=IDOC+1
18423         IREF(NP,5)=IDOC+2
18424         IREF(NP,6)=0
18425         IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
18426         IREF(NP,7)=K(IREF(IP,JT),2)
18427         IREF(NP,8)=IREF(IP,JT)
18428   690 CONTINUE
18429  
18430  
18431 C...Fill information for 2 -> 1 -> 2.
18432   700 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
18433         MINT(7)=MINT(83)+6+2*ISET(ISUB)
18434         MINT(8)=MINT(83)+7+2*ISET(ISUB)
18435         MINT(25)=KFL1(1)
18436         MINT(26)=KFL2(1)
18437         VINT(23)=CTHE(1)
18438         RM3=P(N-1,5)**2/SH
18439         RM4=P(N,5)**2/SH
18440         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18441         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
18442         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
18443         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
18444         VINT(47)=SQRT(VINT(48))
18445       ENDIF
18446  
18447 C...Possibility of colour rearrangement in W+W- events.
18448       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
18449         IAKF1=IABS(KFL1(1))
18450         IAKF2=IABS(KFL1(2))
18451         IAKF3=IABS(KFL2(1))
18452         IAKF4=IABS(KFL2(2))
18453         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
18454      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
18455      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
18456         IF(MINT(51).NE.0) RETURN
18457       ENDIF
18458  
18459 C...Loop back if needed.
18460   710 IF(IP.LT.NP) GOTO 170
18461  
18462 C...Boost back to standard frame.
18463   720 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
18464      &BEZIN)
18465  
18466       RETURN
18467       END
18468  
18469 C*********************************************************************
18470  
18471 C...PYMULT
18472 C...Initializes treatment of multiple interactions, selects kinematics
18473 C...of hardest interaction if low-pT physics included in run, and
18474 C...generates all non-hardest interactions.
18475  
18476       SUBROUTINE PYMULT(MMUL)
18477  
18478 C...Double precision and integer declarations.
18479       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
18480       IMPLICIT INTEGER(I-N)
18481       INTEGER PYK,PYCHGE,PYCOMP
18482 C...Commonblocks.
18483       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
18484       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
18485       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
18486       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
18487       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
18488       COMMON/PYINT1/MINT(400),VINT(400)
18489       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
18490       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
18491       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
18492       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
18493       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
18494      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
18495 C...Local arrays and saved variables.
18496       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
18497       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
18498      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
18499      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
18500  
18501 C...Initialization of multiple interaction treatment.
18502       IF(MMUL.EQ.1) THEN
18503         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
18504         ISUB=96
18505         MINT(1)=96
18506         VINT(63)=0D0
18507         VINT(64)=0D0
18508         VINT(143)=1D0
18509         VINT(144)=1D0
18510  
18511 C...Loop over phase space points: xT2 choice in 20 bins.
18512   100   SIGSUM=0D0
18513         DO 120 IXT2=1,20
18514           NMUL(IXT2)=MSTP(83)
18515           SIGM(IXT2)=0D0
18516           DO 110 ITRY=1,MSTP(83)
18517             RSCA=0.05D0*((21-IXT2)-PYR(0))
18518             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
18519             XT2=MAX(0.01D0*VINT(149),XT2)
18520             VINT(25)=XT2
18521  
18522 C...Choose tau and y*. Calculate cos(theta-hat).
18523             IF(PYR(0).LE.COEF(ISUB,1)) THEN
18524               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18525               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18526             ELSE
18527               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18528             ENDIF
18529             VINT(21)=TAU
18530             CALL PYKLIM(2)
18531             RYST=PYR(0)
18532             MYST=1
18533             IF(RYST.GT.COEF(ISUB,8)) MYST=2
18534             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18535             CALL PYKMAP(2,MYST,PYR(0))
18536             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18537  
18538 C...Calculate differential cross-section.
18539             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
18540             CALL PYSIGH(NCHN,SIGS)
18541             SIGM(IXT2)=SIGM(IXT2)+SIGS
18542   110     CONTINUE
18543           SIGSUM=SIGSUM+SIGM(IXT2)
18544   120   CONTINUE
18545         SIGSUM=SIGSUM/(20D0*MSTP(83))
18546  
18547 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
18548         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
18549           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
18550      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
18551           PARP(82)=0.9D0*PARP(82)
18552           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
18553      &    VINT(2)
18554           GOTO 100
18555         ENDIF
18556         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
18557      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
18558  
18559 C...Start iteration to find k factor.
18560         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
18561         P83A=(1D0-PARP(83))**2
18562         P83B=2D0*PARP(83)*(1D0-PARP(83))
18563         P83C=PARP(83)**2
18564         CQ2I=1D0/PARP(84)**2
18565         CQ2R=2D0/(1D0+PARP(84)**2)
18566         SO=0.5D0
18567         XI=0D0
18568         YI=0D0
18569         XF=0D0
18570         YF=0D0
18571         XK=0.5D0
18572         IIT=0
18573   130   IF(IIT.EQ.0) THEN
18574           XK=2D0*XK
18575         ELSEIF(IIT.EQ.1) THEN
18576           XK=0.5D0*XK
18577         ELSE
18578           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
18579         ENDIF
18580  
18581 C...Evaluate overlap integrals. Find where to divide the b range.
18582         IF(MSTP(82).EQ.2) THEN
18583           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
18584           SOP=SP/PARU(1)
18585         ELSE
18586           IF(MSTP(82).EQ.3) THEN
18587             DELTAB=0.02D0
18588           ELSEIF(MSTP(82).EQ.4) THEN
18589             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
18590           ELSE
18591             POWIP=MAX(0.4D0,PARP(83))
18592             RPWIP=2D0/POWIP-1D0
18593             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
18594             SO=0D0
18595           ENDIF
18596           SP=0D0
18597           SOP=0D0
18598           BSP=0D0
18599           SOHIGH=0D0
18600           IBDIV=0
18601           B=-0.5D0*DELTAB
18602   140     B=B+DELTAB
18603           IF(MSTP(82).EQ.3) THEN
18604             OV=EXP(-B**2)/PARU(2)
18605           ELSEIF(MSTP(82).EQ.4) THEN
18606             OV=(P83A*EXP(-MIN(50D0,B**2))+
18607      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18608      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18609           ELSE
18610             OV=EXP(-B**POWIP)/PARU(2)
18611             SO=SO+PARU(2)*B*DELTAB*OV
18612           ENDIF
18613           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
18614           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
18615           SP=SP+PARU(2)*B*DELTAB*PACC
18616           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
18617           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
18618           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
18619             IBDIV=1 
18620             BDIV=B+0.5D0*DELTAB
18621           ENDIF
18622           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
18623         ENDIF
18624         YK=PARU(1)*XK*SO/SP
18625  
18626 C...Continue iteration until convergence.
18627         IF(YK.LT.YKE) THEN
18628           XI=XK
18629           YI=YK
18630           IF(IIT.EQ.1) IIT=2
18631         ELSE
18632           XF=XK
18633           YF=YK
18634           IF(IIT.EQ.0) IIT=1
18635         ENDIF
18636         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
18637  
18638 C...Store some results for subsequent use.
18639         BAVG=BSP/SP
18640         VINT(145)=SIGSUM
18641         VINT(146)=SOP/SO
18642         VINT(147)=SOP/SP
18643         VNT145=VINT(145)
18644         VNT146=VINT(146)
18645         VNT147=VINT(147)
18646 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
18647         PIK=(VNT146/VNT147)*YKE
18648
18649 C...Find relative weight for low and high impact parameter.
18650       PLOWB=PARU(1)*BDIV**2
18651       IF(MSTP(82).EQ.3) THEN
18652         PHIGHB=PIK*0.5*EXP(-BDIV**2)
18653       ELSEIF(MSTP(82).EQ.4) THEN
18654         S4A=P83A*EXP(-BDIV**2)
18655         S4B=P83B*EXP(-BDIV**2*CQ2R)
18656         S4C=P83C*EXP(-BDIV**2*CQ2I)
18657         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
18658       ELSEIF(PARP(83).GE.1.999D0) THEN
18659         PHIGHB=PIK*SOHIGH
18660         B2RPDV=BDIV**POWIP
18661       ELSE
18662         PHIGHB=PIK*SOHIGH
18663         B2RPDV=BDIV**POWIP
18664         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
18665       ENDIF 
18666       PALLB=PLOWB+PHIGHB
18667  
18668 C...Initialize iteration in xT2 for hardest interaction.
18669       ELSEIF(MMUL.EQ.2) THEN
18670         VINT(145)=VNT145
18671         VINT(146)=VNT146
18672         VINT(147)=VNT147
18673         IF(MSTP(82).LE.0) THEN
18674         ELSEIF(MSTP(82).EQ.1) THEN
18675           XT2=1D0
18676           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
18677           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
18678      &    VINT(317)/(VINT(318)*VINT(320))
18679           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
18680         ELSEIF(MSTP(82).EQ.2) THEN
18681           XT2=1D0
18682           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
18683      &    VINT(149)*(1D0+VINT(149))
18684         ELSE
18685           XC2=4D0*CKIN(3)**2/VINT(2)
18686           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
18687         ENDIF
18688
18689 C...Select impact parameter for hardest interaction.
18690         IF(MSTP(82).LE.2) RETURN
18691   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
18692 C...Treatment in low b region.
18693           MINT(39)=1
18694           B=BDIV*SQRT(PYR(0)) 
18695           IF(MSTP(82).EQ.3) THEN
18696             OV=EXP(-B**2)/PARU(2)
18697           ELSEIF(MSTP(82).EQ.4) THEN
18698             OV=(P83A*EXP(-MIN(50D0,B**2))+
18699      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18700      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18701           ELSE
18702             OV=EXP(-B**POWIP)/PARU(2)
18703           ENDIF  
18704           VINT(148)=OV/VNT147
18705           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
18706           XT2=1D0
18707           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
18708      &    VINT(149)*(1D0+VINT(149))
18709         ELSE
18710 C...Treatment in high b region.
18711           MINT(39)=2
18712           IF(MSTP(82).EQ.3) THEN
18713             B=SQRT(BDIV**2-LOG(PYR(0)))
18714             OV=EXP(-B**2)/PARU(2)
18715           ELSEIF(MSTP(82).EQ.4) THEN
18716             S4RNDM=PYR(0)*(S4A+S4B+S4C)
18717             IF(S4RNDM.LT.S4A) THEN
18718               B=SQRT(BDIV**2-LOG(PYR(0)))
18719             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
18720               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
18721             ELSE
18722               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
18723             ENDIF    
18724             OV=(P83A*EXP(-MIN(50D0,B**2))+
18725      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
18726      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
18727           ELSEIF(PARP(83).GE.1.999D0) THEN
18728   144       B2RPW=B2RPDV-LOG(PYR(0))
18729             ACCIP=(B2RPW/B2RPDV)**RPWIP
18730             IF(ACCIP.LT.PYR(0)) GOTO 144
18731             OV=EXP(-B2RPW)/PARU(2)
18732             B=B2RPW**(1D0/POWIP)
18733           ELSE
18734   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
18735             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
18736             IF(ACCIP.LT.PYR(0)) GOTO 146
18737             OV=EXP(-B2RPW)/PARU(2)
18738             B=B2RPW**(1D0/POWIP)
18739           ENDIF  
18740           VINT(148)=OV/VNT147
18741           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
18742         ENDIF
18743         IF(PACC.LT.PYR(0)) GOTO 142
18744         VINT(139)=B/BAVG
18745  
18746       ELSEIF(MMUL.EQ.3) THEN
18747 C...Low-pT or multiple interactions (first semihard interaction):
18748 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
18749 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
18750         ISUB=MINT(1)
18751         VINT(145)=VNT145
18752         VINT(146)=VNT146
18753         VINT(147)=VNT147
18754         IF(MSTP(82).LE.0) THEN
18755           XT2=0D0
18756         ELSEIF(MSTP(82).EQ.1) THEN
18757           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
18758 C...Use with "Sudakov" for low b values when impact parameter dependence.
18759         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
18760           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
18761      &    VINT(149)))).GT.PYR(0)) XT2=1D0
18762           IF(XT2.GE.1D0) THEN
18763             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
18764      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
18765      &      VINT(149)
18766           ELSE
18767             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
18768      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
18769      &      VINT(149)
18770           ENDIF
18771           XT2=MAX(0.01D0*VINT(149),XT2)
18772 C...Use without "Sudakov" for high b values when impact parameter dep.
18773         ELSE
18774           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
18775      &    PYR(0)*(1D0-XC2))-VINT(149)
18776           XT2=MAX(0.01D0*VINT(149),XT2)
18777         ENDIF
18778         VINT(25)=XT2
18779  
18780 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
18781         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
18782           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
18783           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
18784           ISUB=95
18785           MINT(1)=ISUB
18786           VINT(21)=0.01D0*VINT(149)
18787           VINT(22)=0D0
18788           VINT(23)=0D0
18789           VINT(25)=0.01D0*VINT(149)
18790  
18791         ELSE
18792 C...Multiple interactions (first semihard interaction).
18793 C...Choose tau and y*. Calculate cos(theta-hat).
18794           IF(PYR(0).LE.COEF(ISUB,1)) THEN
18795             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18796             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18797           ELSE
18798             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18799           ENDIF
18800           VINT(21)=TAU
18801           CALL PYKLIM(2)
18802           RYST=PYR(0)
18803           MYST=1
18804           IF(RYST.GT.COEF(ISUB,8)) MYST=2
18805           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18806           CALL PYKMAP(2,MYST,PYR(0))
18807           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18808         ENDIF
18809         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
18810  
18811 C...Store results of cross-section calculation.
18812       ELSEIF(MMUL.EQ.4) THEN
18813         ISUB=MINT(1)
18814         VINT(145)=VNT145
18815         VINT(146)=VNT146
18816         VINT(147)=VNT147
18817         XTS=VINT(25)
18818         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
18819         IF(ISET(ISUB).EQ.2)
18820      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
18821         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
18822         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
18823      &  (XTS+VINT(149))))
18824         IRBIN=INT(1D0+20D0*RBIN)
18825         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
18826           NMUL(IRBIN)=NMUL(IRBIN)+1
18827           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
18828         ENDIF
18829  
18830 C...Choose impact parameter if not already done.
18831       ELSEIF(MMUL.EQ.5) THEN
18832         ISUB=MINT(1)
18833         VINT(145)=VNT145
18834         VINT(146)=VNT146
18835         VINT(147)=VNT147
18836   150   IF(MINT(39).GT.0) THEN
18837         ELSEIF(MSTP(82).EQ.3) THEN
18838           EXPB2=PYR(0)
18839           B2=-LOG(PYR(0))
18840           VINT(148)=EXPB2/(PARU(2)*VNT147)
18841           VINT(139)=SQRT(B2)/BAVG
18842         ELSEIF(MSTP(82).EQ.4) THEN
18843           RTYPE=PYR(0)
18844           IF(RTYPE.LT.P83A) THEN
18845             B2=-LOG(PYR(0))
18846           ELSEIF(RTYPE.LT.P83A+P83B) THEN
18847             B2=-LOG(PYR(0))/CQ2R
18848           ELSE
18849             B2=-LOG(PYR(0))/CQ2I
18850           ENDIF
18851           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
18852      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
18853      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
18854           VINT(139)=SQRT(B2)/BAVG
18855         ELSEIF(PARP(83).GE.1.999D0) THEN
18856           POWIP=MAX(2D0,PARP(83))
18857           RPWIP=2D0/POWIP-1D0
18858           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
18859   160     IF(PYR(0).LT.PROB1) THEN
18860             B2RPW=PYR(0)**(0.5D0*POWIP)
18861             ACCIP=EXP(-B2RPW)
18862           ELSE
18863             B2RPW=1D0-LOG(PYR(0))
18864             ACCIP=B2RPW**RPWIP
18865           ENDIF
18866           IF(ACCIP.LT.PYR(0)) GOTO 160
18867           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
18868           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
18869         ELSE
18870           POWIP=MAX(0.4D0,PARP(83))
18871           RPWIP=2D0/POWIP-1D0
18872           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
18873   170     IF(PYR(0).LT.PROB1) THEN
18874             B2RPW=2D0*RPWIP*PYR(0)
18875             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
18876           ELSE
18877             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
18878             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
18879           ENDIF
18880           IF(ACCIP.LT .PYR(0)) GOTO 170
18881           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
18882           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
18883         ENDIF
18884  
18885 C...Multiple interactions (variable impact parameter) : reject with
18886 C...probability exp(-overlap*cross-section above pT/normalization).
18887 C...Does not apply to low-b region, where "Sudakov" already included.
18888         VINT(150)=1D0 
18889         IF(MINT(39).NE.1) THEN
18890           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
18891           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
18892           DO 180 IBIN=IRBIN+1,20
18893             RNCOR=RNCOR+NMUL(IBIN)
18894             SIGCOR=SIGCOR+SIGM(IBIN)
18895   180     CONTINUE
18896           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
18897           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
18898           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
18899      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
18900         ENDIF
18901         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
18902      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
18903      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
18904           IF(VINT(150).LT.PYR(0)) GOTO 150
18905           VINT(150)=1D0
18906         ENDIF
18907  
18908 C...Generate additional multiple semihard interactions.
18909       ELSEIF(MMUL.EQ.6) THEN
18910         ISUBSV=MINT(1)
18911         VINT(145)=VNT145
18912         VINT(146)=VNT146
18913         VINT(147)=VNT147
18914         DO 190 J=11,80
18915           VINTSV(J)=VINT(J)
18916   190   CONTINUE
18917         ISUB=96
18918         MINT(1)=96
18919         VINT(151)=0D0
18920         VINT(152)=0D0
18921  
18922 C...Reconstruct strings in hard scattering.
18923         NMAX=MINT(84)+4
18924         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
18925         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
18926         NSTR=0
18927         DO 210 I=MINT(84)+1,NMAX
18928           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
18929           IF(KCS.EQ.0) GOTO 210
18930           DO 200 J=1,4
18931             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 200
18932             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 200
18933             IF(J.LE.2) THEN
18934               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
18935             ELSE
18936               IST=MOD(K(I,J+1),MSTU(5))
18937             ENDIF
18938             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 200
18939             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 200
18940             NSTR=NSTR+1
18941             IF(J.EQ.1.OR.J.EQ.4) THEN
18942               KSTR(NSTR,1)=I
18943               KSTR(NSTR,2)=IST
18944             ELSE
18945               KSTR(NSTR,1)=IST
18946               KSTR(NSTR,2)=I
18947             ENDIF
18948   200     CONTINUE
18949   210   CONTINUE
18950  
18951 C...Set up starting values for iteration in xT2.
18952         XT2=4D0*VINT(62)/VINT(2)
18953         IF(MSTP(82).LE.1) THEN
18954           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
18955           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
18956      &    VINT(317)/(VINT(318)*VINT(320))
18957           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
18958         ELSE
18959           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
18960      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
18961         ENDIF
18962         VINT(63)=0D0
18963         VINT(64)=0D0
18964         VINT(143)=1D0-VINT(141)
18965         VINT(144)=1D0-VINT(142)
18966  
18967 C...Iterate downwards in xT2.
18968   220   IF(MSTP(82).LE.1) THEN
18969           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
18970           IF(XT2.LT.VINT(149)) GOTO 270
18971         ELSE
18972           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 270
18973           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
18974      &    LOG(PYR(0)))-VINT(149)
18975           IF(XT2.LE.0D0) GOTO 270
18976           XT2=MAX(0.01D0*VINT(149),XT2)
18977         ENDIF
18978         VINT(25)=XT2
18979  
18980 C...Choose tau and y*. Calculate cos(theta-hat).
18981         IF(PYR(0).LE.COEF(ISUB,1)) THEN
18982           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
18983           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
18984         ELSE
18985           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
18986         ENDIF
18987         VINT(21)=TAU
18988         CALL PYKLIM(2)
18989         RYST=PYR(0)
18990         MYST=1
18991         IF(RYST.GT.COEF(ISUB,8)) MYST=2
18992         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
18993         CALL PYKMAP(2,MYST,PYR(0))
18994         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
18995  
18996 C...Check that x not used up. Accept or reject kinematical variables.
18997         X1M=SQRT(TAU)*EXP(VINT(22))
18998         X2M=SQRT(TAU)*EXP(-VINT(22))
18999         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 220
19000         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19001         CALL PYSIGH(NCHN,SIGS)
19002         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
19003         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 220
19004  
19005 C...Reset K, P and V vectors. Select some variables.
19006         DO 240 I=N+1,N+2
19007           DO 230 J=1,5
19008             K(I,J)=0
19009             P(I,J)=0D0
19010             V(I,J)=0D0
19011   230     CONTINUE
19012   240   CONTINUE
19013         RFLAV=PYR(0)
19014         PT=0.5D0*VINT(1)*SQRT(XT2)
19015         PHI=PARU(2)*PYR(0)
19016         CTH=VINT(23)
19017  
19018 C...Add first parton to event record.
19019         K(N+1,1)=3
19020         K(N+1,2)=21
19021         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
19022      &  1+INT((2D0+PARJ(2))*PYR(0))
19023         P(N+1,1)=PT*COS(PHI)
19024         P(N+1,2)=PT*SIN(PHI)
19025         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
19026         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
19027         P(N+1,5)=0D0
19028  
19029 C...Add second parton to event record.
19030         K(N+2,1)=3
19031         K(N+2,2)=21
19032         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
19033         P(N+2,1)=-P(N+1,1)
19034         P(N+2,2)=-P(N+1,2)
19035         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
19036         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
19037         P(N+2,5)=0D0
19038  
19039         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
19040 C....Choose relevant string pieces to place gluons on.
19041           DO 260 I=N+1,N+2
19042             DMIN=1D8
19043             DO 250 ISTR=1,NSTR
19044               I1=KSTR(ISTR,1)
19045               I2=KSTR(ISTR,2)
19046               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
19047      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
19048      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
19049      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
19050               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
19051                 DMIN=DIST
19052                 IST1=I1
19053                 IST2=I2
19054                 ISTM=ISTR
19055               ENDIF
19056   250       CONTINUE
19057  
19058 C....Colour flow adjustments, new string pieces.
19059             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
19060      &      MOD(K(IST1,4),MSTU(5))
19061             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
19062      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
19063             K(I,5)=MSTU(5)*IST1
19064             K(I,4)=MSTU(5)*IST2
19065             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
19066      &      MOD(K(IST2,5),MSTU(5))
19067             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
19068      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
19069             KSTR(ISTM,2)=I
19070             KSTR(NSTR+1,1)=I
19071             KSTR(NSTR+1,2)=IST2
19072             NSTR=NSTR+1
19073   260     CONTINUE
19074  
19075 C...String drawing and colour flow for gluon loop.
19076         ELSEIF(K(N+1,2).EQ.21) THEN
19077           K(N+1,4)=MSTU(5)*(N+2)
19078           K(N+1,5)=MSTU(5)*(N+2)
19079           K(N+2,4)=MSTU(5)*(N+1)
19080           K(N+2,5)=MSTU(5)*(N+1)
19081           KSTR(NSTR+1,1)=N+1
19082           KSTR(NSTR+1,2)=N+2
19083           KSTR(NSTR+2,1)=N+2
19084           KSTR(NSTR+2,2)=N+1
19085           NSTR=NSTR+2
19086  
19087 C...String drawing and colour flow for qqbar pair.
19088         ELSE
19089           K(N+1,4)=MSTU(5)*(N+2)
19090           K(N+2,5)=MSTU(5)*(N+1)
19091           KSTR(NSTR+1,1)=N+1
19092           KSTR(NSTR+1,2)=N+2
19093           NSTR=NSTR+1
19094         ENDIF
19095  
19096 C...Global statistics.
19097         MINT(351)=MINT(351)+1
19098         VINT(351)=VINT(351)+PT
19099         IF (MINT(351).EQ.1) VINT(356)=PT
19100  
19101 C...Update remaining energy; iterate.
19102         N=N+2
19103         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
19104           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
19105           MINT(51)=1
19106           RETURN
19107         ENDIF
19108         MINT(31)=MINT(31)+1
19109         VINT(151)=VINT(151)+VINT(41)
19110         VINT(152)=VINT(152)+VINT(42)
19111         VINT(143)=VINT(143)-VINT(41)
19112         VINT(144)=VINT(144)-VINT(42)
19113 C...Allow FSR for UE
19114         IF(MSTP(152).EQ.1) then
19115         if(parj(200).ne.1.) CALL PYSHOW(N-1,N,SQRT(PARP(71))*PT)
19116         if(parj(200).eq.1.) CALL PYSHOWQ(N-1,N,SQRT(PARP(71))*PT)
19117         endif 
19118         IF(MINT(31).LT.240) GOTO 220
19119   270   CONTINUE
19120         MINT(1)=ISUBSV
19121         DO 280 J=11,80
19122           VINT(J)=VINTSV(J)
19123   280   CONTINUE
19124       ENDIF
19125  
19126 C...Format statements for printout.
19127  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
19128      &'actions for MSTP(82) =',I2,' ******')
19129  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19130      &D9.2,' mb: rejected')
19131  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19132      &D9.2,' mb: accepted')
19133  
19134       RETURN
19135       END
19136  
19137 C*********************************************************************
19138  
19139 C...PYREMN
19140 C...Adds on target remnants (one or two from each side) and
19141 C...includes primordial kT for hadron beams.
19142  
19143       SUBROUTINE PYREMN(IPU1,IPU2)
19144  
19145 C...Double precision and integer declarations.
19146       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19147       IMPLICIT INTEGER(I-N)
19148       INTEGER PYK,PYCHGE,PYCOMP
19149 C...Commonblocks.
19150       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19151       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19152       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19153       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19154       COMMON/PYINT1/MINT(400),VINT(400)
19155       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
19156 C...Local arrays.
19157       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
19158      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
19159  
19160 C...Find event type and remaining energy.
19161       ISUB=MINT(1)
19162       NS=N
19163       IF(MINT(50).EQ.0.OR.MOD(MSTP(81),10).LE.0) THEN
19164         VINT(143)=1D0-VINT(141)
19165         VINT(144)=1D0-VINT(142)
19166       ENDIF
19167  
19168 C...Define initial partons.
19169       NTRY=0
19170   100 NTRY=NTRY+1
19171       DO 130 JT=1,2
19172         I=MINT(83)+JT+2
19173         IF(JT.EQ.1) IPU=IPU1
19174         IF(JT.EQ.2) IPU=IPU2
19175         K(I,1)=21
19176         K(I,2)=K(IPU,2)
19177         K(I,3)=I-2
19178         PMS(JT)=0D0
19179         VINT(156+JT)=0D0
19180         VINT(158+JT)=0D0
19181         IF(MINT(47).EQ.1) THEN
19182           DO 110 J=1,5
19183             P(I,J)=P(I-2,J)
19184   110     CONTINUE
19185         ELSEIF(ISUB.EQ.95) THEN
19186           K(I,2)=21
19187         ELSE
19188           P(I,5)=P(IPU,5)
19189  
19190 C...No primordial kT, or chosen according to truncated Gaussian or
19191 C...exponential, or (for photon) predetermined or power law.
19192   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
19193             IF(MSTP(91).LE.0) THEN
19194               PT=0D0
19195             ELSEIF(MSTP(91).EQ.1) THEN
19196               PT=PARP(91)*SQRT(-LOG(PYR(0)))
19197             ELSE
19198               RPT1=PYR(0)
19199               RPT2=PYR(0)
19200               PT=-PARP(92)*LOG(RPT1*RPT2)
19201             ENDIF
19202             IF(PT.GT.PARP(93)) GOTO 120
19203           ELSEIF(MINT(106+JT).EQ.3) THEN
19204             PTA=SQRT(VINT(282+JT))
19205             PTB=0D0
19206             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
19207               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
19208             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
19209               RPT1=PYR(0)
19210               RPT2=PYR(0)
19211               PTB=-PARP(99)*LOG(RPT1*RPT2)
19212             ENDIF
19213             IF(PTB.GT.PARP(100)) GOTO 120
19214             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
19215             PT=PT*0.8D0**MINT(57)
19216             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
19217           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
19218             IF(MSTP(93).LE.0) THEN
19219               PT=0D0
19220             ELSEIF(MSTP(93).EQ.1) THEN
19221               PT=PARP(99)*SQRT(-LOG(PYR(0)))
19222             ELSEIF(MSTP(93).EQ.2) THEN
19223               RPT1=PYR(0)
19224               RPT2=PYR(0)
19225               PT=-PARP(99)*LOG(RPT1*RPT2)
19226             ELSEIF(MSTP(93).EQ.3) THEN
19227               HA=PARP(99)**2
19228               HB=PARP(100)**2
19229               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
19230             ELSE
19231               HA=PARP(99)**2
19232               HB=PARP(100)**2
19233               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
19234               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
19235             ENDIF
19236             IF(PT.GT.PARP(100)) GOTO 120
19237           ELSE
19238             PT=0D0
19239           ENDIF
19240           VINT(156+JT)=PT
19241           PHI=PARU(2)*PYR(0)
19242           P(I,1)=PT*COS(PHI)
19243           P(I,2)=PT*SIN(PHI)
19244           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19245         ENDIF
19246   130 CONTINUE
19247       IF(MINT(47).EQ.1) RETURN
19248  
19249 C...Kinematics construction for initial partons.
19250       I1=MINT(83)+3
19251       I2=MINT(83)+4
19252       IF(ISUB.EQ.95) THEN
19253         SHS=0D0
19254         SHR=0D0
19255       ELSE
19256         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
19257      &  (P(I1,2)+P(I2,2))**2
19258         SHR=SQRT(MAX(0D0,SHS))
19259         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
19260         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
19261         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
19262         P(I2,4)=SHR-P(I1,4)
19263         P(I2,3)=-P(I1,3)
19264  
19265 C...Transform partons to overall CM-frame.
19266         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
19267         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
19268         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
19269         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
19270         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
19271         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
19272         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
19273         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
19274         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
19275         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
19276         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
19277       ENDIF
19278  
19279 C...Optionally fix up x and Q2 definitions for leptoproduction.
19280       IDISXQ=0
19281       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
19282      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
19283       IF(IDISXQ.EQ.1) THEN
19284  
19285 C...Find where incoming and outgoing leptons/partons are sitting.
19286         LESD=1
19287         IF(MINT(42).EQ.1) LESD=2
19288         LPIN=MINT(83)+3-LESD
19289         LEIN=MINT(84)+LESD
19290         LQIN=MINT(84)+3-LESD
19291         LEOUT=MINT(84)+2+LESD
19292         LQOUT=MINT(84)+5-LESD
19293         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
19294         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
19295         LSCMS=0
19296         DO 140 I=MINT(84)+5,N
19297           IF(K(I,2).EQ.94) THEN
19298             LSCMS=I
19299             LEOUT=I+LESD
19300             LQOUT=I+3-LESD
19301           ENDIF
19302   140   CONTINUE
19303         LQBG=IPU1
19304         IF(LESD.EQ.1) LQBG=IPU2
19305  
19306 C...Calculate actual and wanted momentum transfer.
19307         XNOM=VINT(43-LESD)
19308         Q2NOM=-VINT(45)
19309         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
19310      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
19311      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
19312         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
19313         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
19314         P(N+1,1)=FAC*P(LEOUT,1)
19315         P(N+1,2)=FAC*P(LEOUT,2)
19316         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
19317      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
19318         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
19319      &  P(N+1,3)**2)
19320         DO 150 J=1,4
19321           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
19322           QNEW(J)=P(LEIN,J)-P(N+1,J)
19323   150   CONTINUE
19324  
19325 C...Boost outgoing electron and daughters.
19326         IF(LSCMS.EQ.0) THEN
19327           DO 160 J=1,4
19328             P(LEOUT,J)=P(N+1,J)
19329   160     CONTINUE
19330         ELSE
19331           DO 170 J=1,3
19332             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
19333   170     CONTINUE
19334           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
19335           DO 180 J=1,3
19336             DBE(J)=PINV*P(N+2,J)
19337   180     CONTINUE
19338           DO 200 I=LSCMS+1,N
19339             IORIG=I
19340   190       IORIG=K(IORIG,3)
19341             IF(IORIG.GT.LEOUT) GOTO 190
19342             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
19343      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
19344   200     CONTINUE
19345         ENDIF
19346  
19347 C...Copy shower initiator and all outgoing partons.
19348         NCOP=N+1
19349         K(NCOP,3)=LQBG
19350         DO 210 J=1,5
19351           P(NCOP,J)=P(LQBG,J)
19352   210   CONTINUE
19353         DO 240 I=MINT(84)+1,N
19354           ICOP=0
19355           IF(K(I,1).GT.10) GOTO 240
19356           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
19357             ICOP=I
19358           ELSE
19359             IORIG=I
19360   220       IORIG=K(IORIG,3)
19361             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
19362               ICOP=IORIG
19363             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
19364               GOTO 220
19365             ENDIF
19366           ENDIF
19367           IF(ICOP.NE.0) THEN
19368             NCOP=NCOP+1
19369             K(NCOP,3)=I
19370             DO 230 J=1,5
19371               P(NCOP,J)=P(I,J)
19372   230       CONTINUE
19373           ENDIF
19374   240   CONTINUE
19375  
19376 C...Calculate relative rescaling factors.
19377         SLC=3-2*LESD
19378         PLCSUM=0D0
19379         DO 250 I=N+2,NCOP
19380           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
19381   250   CONTINUE
19382         DO 260 I=N+2,NCOP
19383           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
19384   260   CONTINUE
19385  
19386 C...Transfer extra three-momentum of current.
19387         DO 280 I=N+2,NCOP
19388           DO 270 J=1,3
19389             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
19390   270     CONTINUE
19391           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19392   280   CONTINUE
19393  
19394 C...Iterate change of initiator momentum to get energy right.
19395         ITER=0
19396   290   ITER=ITER+1
19397         PEEX=-P(N+1,4)-QNEW(4)
19398         PEMV=-P(N+1,3)/P(N+1,4)
19399         DO 300 I=N+2,NCOP
19400           PEEX=PEEX+P(I,4)
19401           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
19402   300   CONTINUE
19403         IF(ABS(PEMV).LT.1D-10) THEN
19404           MINT(51)=1
19405           MINT(57)=MINT(57)+1
19406           RETURN
19407         ENDIF
19408         PZCH=-PEEX/PEMV
19409         P(N+1,3)=P(N+1,3)+PZCH
19410         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)
19411         DO 310 I=N+2,NCOP
19412           P(I,3)=P(I,3)+V(I,1)*PZCH
19413           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19414   310   CONTINUE
19415         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
19416  
19417 C...Modify momenta in event record.
19418         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
19419      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
19420         IF(ABS(HBE).GE.1D0) THEN
19421           MINT(51)=1
19422           MINT(57)=MINT(57)+1
19423           RETURN
19424         ENDIF
19425         I=MINT(83)+5-LESD
19426         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
19427         DO 330 I=N+1,NCOP
19428           ICOP=K(I,3)
19429           DO 320 J=1,4
19430             P(ICOP,J)=P(I,J)
19431   320     CONTINUE
19432   330   CONTINUE
19433       ENDIF
19434  
19435 C...Check minimum invariant mass of remnant system(s).
19436       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
19437       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
19438       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
19439       PMIN(0)=SQRT(PMS(0))
19440       DO 340 JT=1,2
19441         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
19442         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
19443         PMIN(JT)=0D0
19444         IF(MINT(44+JT).EQ.1) GOTO 340
19445         MINT(105)=MINT(102+JT)
19446         MINT(109)=MINT(106+JT)
19447         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
19448         IF(MINT(51).NE.0) THEN
19449           MINT(57)=MINT(57)+1
19450           RETURN
19451         ENDIF
19452         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
19453         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
19454         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
19455         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
19456      &  P(MINT(83)+JT+2,2)**2)
19457   340 CONTINUE
19458       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
19459      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
19460      &PSYS(2,4))) THEN
19461         MINT(51)=1
19462         MINT(57)=MINT(57)+1
19463         RETURN
19464       ENDIF
19465  
19466 C...Loop over two remnants; skip if none there.
19467       I=NS
19468       DO 410 JT=1,2
19469         ISN(JT)=0
19470         IF(MINT(44+JT).EQ.1) GOTO 410
19471         IF(JT.EQ.1) IPU=IPU1
19472         IF(JT.EQ.2) IPU=IPU2
19473  
19474 C...Store first remnant parton.
19475         I=I+1
19476         IS(JT)=I
19477         ISN(JT)=1
19478         DO 350 J=1,5
19479           K(I,J)=0
19480           P(I,J)=0D0
19481           V(I,J)=0D0
19482   350   CONTINUE
19483         K(I,1)=1
19484         K(I,2)=KFLSP(JT)
19485         K(I,3)=MINT(83)+JT
19486         P(I,5)=PYMASS(K(I,2))
19487  
19488 C...First parton colour connections and kinematics.
19489         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
19490         IF(KCOL.EQ.2) THEN
19491           K(I,1)=3
19492           K(I,4)=MSTU(5)*IPU+IPU
19493           K(I,5)=MSTU(5)*IPU+IPU
19494           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
19495           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
19496         ELSEIF(KCOL.NE.0) THEN
19497           K(I,1)=3
19498           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
19499           K(I,KFLS+3)=IPU
19500           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
19501         ENDIF
19502         IF(KFLCH(JT).EQ.0) THEN
19503           P(I,1)=-P(MINT(83)+JT+2,1)
19504           P(I,2)=-P(MINT(83)+JT+2,2)
19505           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19506           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
19507           P(I,3)=PSYS(JT,3)
19508           P(I,4)=PSYS(JT,4)
19509  
19510 C...When extra remnant parton or hadron: store extra remnant.
19511         ELSE
19512           I=I+1
19513           ISN(JT)=2
19514           DO 360 J=1,5
19515             K(I,J)=0
19516             P(I,J)=0D0
19517             V(I,J)=0D0
19518   360     CONTINUE
19519           K(I,1)=1
19520           K(I,2)=KFLCH(JT)
19521           K(I,3)=MINT(83)+JT
19522           P(I,5)=PYMASS(K(I,2))
19523  
19524 C...Find parton colour connections of extra remnant.
19525           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
19526           IF(KCOL.EQ.2) THEN
19527             K(I,1)=3
19528             K(I,4)=MSTU(5)*IPU+IPU
19529             K(I,5)=MSTU(5)*IPU+IPU
19530             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
19531             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
19532           ELSEIF(KCOL.NE.0) THEN
19533             K(I,1)=3
19534             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
19535             K(I,KFLS+3)=IPU
19536             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
19537           ENDIF
19538  
19539 C...Relative transverse momentum when two remnants.
19540           LOOP=0
19541   370     LOOP=LOOP+1
19542           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
19543           IF(IABS(MINT(10+JT)).LT.20) THEN
19544             P(I-1,1)=0D0
19545             P(I-1,2)=0D0
19546           ELSE
19547             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
19548             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
19549           ENDIF
19550           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
19551           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
19552           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
19553           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19554  
19555 C...Meson or baryon; photon as meson. For splitup below.
19556           IMB=1
19557           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
19558  
19559 C***Relative distribution for electron into two electrons. Temporary!
19560           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
19561      &    THEN
19562             CHI(JT)=PYR(0)
19563  
19564 C...Relative distribution of electron energy into electron plus parton.
19565           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
19566             XHRD=VINT(140+JT)
19567             XE=VINT(154+JT)
19568             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
19569  
19570 C...Relative distribution of energy for particle into two jets.
19571           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
19572             CHIK=PARP(92+2*IMB)
19573             IF(MSTP(92).LE.1) THEN
19574               IF(IMB.EQ.1) CHI(JT)=PYR(0)
19575               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
19576             ELSEIF(MSTP(92).EQ.2) THEN
19577               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
19578             ELSEIF(MSTP(92).EQ.3) THEN
19579               CUT=2D0*0.3D0/VINT(1)
19580   380         CHI(JT)=PYR(0)**2
19581               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
19582      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
19583             ELSEIF(MSTP(92).EQ.4) THEN
19584               CUT=2D0*0.3D0/VINT(1)
19585               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
19586   390         CHIR=CUT*CUTR**PYR(0)
19587               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
19588               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
19589             ELSE
19590               CUT=2D0*0.3D0/VINT(1)
19591               CUTA=CUT**(1D0-PARP(98))
19592               CUTB=(1D0+CUT)**(1D0-PARP(98))
19593   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
19594               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
19595      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
19596             ENDIF
19597  
19598 C...Relative distribution of energy for particle into jet plus particle.
19599           ELSE
19600             IF(MSTP(94).LE.1) THEN
19601               IF(IMB.EQ.1) CHI(JT)=PYR(0)
19602               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
19603               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
19604             ELSEIF(MSTP(94).EQ.2) THEN
19605               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
19606               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
19607             ELSEIF(MSTP(94).EQ.3) THEN
19608               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
19609               CHI(JT)=ZZ
19610             ELSE
19611               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
19612               CHI(JT)=ZZ
19613             ENDIF
19614           ENDIF
19615  
19616 C...Construct total transverse mass; reject if too large.
19617           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
19618           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
19619           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
19620             IF(LOOP.LT.100) THEN
19621               GOTO 370
19622             ELSE
19623               MINT(51)=1
19624               MINT(57)=MINT(57)+1
19625               RETURN
19626             ENDIF
19627           ENDIF
19628           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
19629           VINT(158+JT)=CHI(JT)
19630  
19631 C...Subdivide longitudinal momentum according to value selected above.
19632           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
19633           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
19634           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
19635           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
19636           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
19637         ENDIF
19638   410 CONTINUE
19639       N=I
19640  
19641 C...Check if longitudinal boosts needed - if so pick two systems.
19642       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
19643      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
19644       IF(PDEV.LE.1D-6*VINT(1)) RETURN
19645       IF(ISN(1).EQ.0) THEN
19646         IR=0
19647         IL=2
19648       ELSEIF(ISN(2).EQ.0) THEN
19649         IR=1
19650         IL=0
19651       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
19652         IR=1
19653         IL=2
19654       ELSEIF(VINT(143).GT.0.2D0) THEN
19655         IR=1
19656         IL=0
19657       ELSEIF(VINT(144).GT.0.2D0) THEN
19658         IR=0
19659         IL=2
19660       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
19661         IR=1
19662         IL=0
19663       ELSE
19664         IR=0
19665         IL=2
19666       ENDIF
19667       IG=3-IR-IL
19668  
19669 C...E+-pL wanted for system to be modified.
19670       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
19671         PPB=VINT(1)
19672         PNB=VINT(1)
19673       ELSE
19674         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
19675         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
19676       ENDIF
19677  
19678 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
19679       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
19680         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
19681         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
19682         DO 420 J=1,4
19683           PSYS(0,J)=0D0
19684   420   CONTINUE
19685         DO 450 I=MINT(84)+1,NS
19686           IF(K(I,1).GT.10) GOTO 450
19687           INCL=0
19688           IORIG=I
19689   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19690           IORIG=K(IORIG,3)
19691           IF(IORIG.GT.LPIN) GOTO 430
19692           IF(INCL.EQ.0) GOTO 450
19693           DO 440 J=1,4
19694             PSYS(0,J)=PSYS(0,J)+P(I,J)
19695   440     CONTINUE
19696   450   CONTINUE
19697         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
19698         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
19699         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
19700       ENDIF
19701  
19702 C...Construct longitudinal boosts.
19703       DPMTB=PPB*PNB
19704       DPMTR=PMS(IR)
19705       DPMTL=PMS(IL)
19706       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
19707       IF(DSQLAM.LE.1D-6*DPMTB) THEN
19708         MINT(51)=1
19709         MINT(57)=MINT(57)+1
19710         RETURN
19711       ENDIF
19712       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
19713       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
19714      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
19715       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
19716      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
19717       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
19718       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
19719  
19720 C...Perform longitudinal boosts.
19721       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
19722         P(IS(1),3)=0D0
19723         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
19724       ELSEIF(IR.EQ.1) THEN
19725         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
19726       ELSEIF(IDISXQ.EQ.1) THEN
19727         DO 470 I=I1,NS
19728           INCL=0
19729           IORIG=I
19730   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19731           IORIG=K(IORIG,3)
19732           IF(IORIG.GT.LPIN) GOTO 460
19733           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
19734   470   CONTINUE
19735       ELSE
19736         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
19737       ENDIF
19738       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
19739         P(IS(2),3)=0D0
19740         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
19741       ELSEIF(IL.EQ.2) THEN
19742         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
19743       ELSEIF(IDISXQ.EQ.1) THEN
19744         DO 490 I=I1,NS
19745           INCL=0
19746           IORIG=I
19747   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
19748           IORIG=K(IORIG,3)
19749           IF(IORIG.GT.LPIN) GOTO 480
19750           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
19751   490   CONTINUE
19752       ELSE
19753         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
19754       ENDIF
19755  
19756 C...Final check that energy-momentum conservation worked.
19757       PESUM=0D0
19758       PZSUM=0D0
19759       DO 500 I=MINT(84)+1,N
19760         IF(K(I,1).GT.10) GOTO 500
19761         PESUM=PESUM+P(I,4)
19762         PZSUM=PZSUM+P(I,3)
19763   500 CONTINUE
19764       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
19765       IF(PDEV.GT.1D-4*VINT(1)) THEN
19766         MINT(51)=1
19767         MINT(57)=MINT(57)+1
19768         RETURN
19769       ENDIF
19770  
19771 C...Calculate rotation and boost from overall CM frame to
19772 C...hadronic CM frame in leptoproduction.
19773       MINT(91)=0
19774       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
19775         MINT(91)=1
19776         LESD=1
19777         IF(MINT(42).EQ.1) LESD=2
19778         LPIN=MINT(83)+3-LESD
19779  
19780 C...Sum upp momenta of everything not lepton or photon to define boost.
19781         DO 510 J=1,4
19782           PSUM(J)=0D0
19783   510   CONTINUE
19784         DO 530 I=1,N
19785           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
19786           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
19787           IF(K(I,2).EQ.22) GOTO 530
19788           DO 520 J=1,4
19789             PSUM(J)=PSUM(J)+P(I,J)
19790   520     CONTINUE
19791   530   CONTINUE
19792         VINT(223)=-PSUM(1)/PSUM(4)
19793         VINT(224)=-PSUM(2)/PSUM(4)
19794         VINT(225)=-PSUM(3)/PSUM(4)
19795  
19796 C...Boost incoming hadron to hadronic CM frame to determine rotations.
19797         K(N+1,1)=1
19798         DO 540 J=1,5
19799           P(N+1,J)=P(LPIN,J)
19800           V(N+1,J)=V(LPIN,J)
19801   540   CONTINUE
19802         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
19803         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
19804         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
19805         IF(LESD.EQ.2) THEN
19806           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
19807         ELSE
19808           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
19809         ENDIF
19810       ENDIF
19811  
19812       RETURN
19813       END
19814  
19815 C*********************************************************************
19816  
19817 C...PYMIGN
19818 C...Initializes treatment of new multiple interactions scenario,
19819 C...selects kinematics of hardest interaction if low-pT physics
19820 C...included in run, and generates all non-hardest interactions.
19821  
19822       SUBROUTINE PYMIGN(MMUL)
19823  
19824 C...Double precision and integer declarations.
19825       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19826       IMPLICIT INTEGER(I-N)
19827       INTEGER PYK,PYCHGE,PYCOMP
19828       EXTERNAL PYALPS
19829       DOUBLE PRECISION PYALPS
19830 C...Commonblocks.
19831       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19832       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19833       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19834       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
19835       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19836       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19837       COMMON/PYINT1/MINT(400),VINT(400)
19838       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19839       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
19840       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
19841       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
19842       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
19843      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
19844      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
19845       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
19846      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/
19847 C...Local arrays and saved variables.
19848       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80),
19849      &WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25),KSAV(4,5),PSAV(4,5)
19850       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
19851      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
19852      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
19853  
19854 C...Initialization of multiple interaction treatment.
19855       IF(MMUL.EQ.1) THEN
19856         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
19857         ISUB=96
19858         MINT(1)=96
19859         VINT(63)=0D0
19860         VINT(64)=0D0
19861         VINT(143)=1D0
19862         VINT(144)=1D0
19863  
19864 C...Loop over phase space points: xT2 choice in 20 bins.
19865   100   SIGSUM=0D0
19866         DO 120 IXT2=1,20
19867           NMUL(IXT2)=MSTP(83)
19868           SIGM(IXT2)=0D0
19869           DO 110 ITRY=1,MSTP(83)
19870             RSCA=0.05D0*((21-IXT2)-PYR(0))
19871             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
19872             XT2=MAX(0.01D0*VINT(149),XT2)
19873             VINT(25)=XT2
19874  
19875 C...Choose tau and y*. Calculate cos(theta-hat).
19876             IF(PYR(0).LE.COEF(ISUB,1)) THEN
19877               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19878               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19879             ELSE
19880               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19881             ENDIF
19882             VINT(21)=TAU
19883             CALL PYKLIM(2)
19884             RYST=PYR(0)
19885             MYST=1
19886             IF(RYST.GT.COEF(ISUB,8)) MYST=2
19887             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19888             CALL PYKMAP(2,MYST,PYR(0))
19889             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19890  
19891 C...Calculate differential cross-section.
19892             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19893             CALL PYSIGH(NCHN,SIGS)
19894             SIGM(IXT2)=SIGM(IXT2)+SIGS
19895   110     CONTINUE
19896           SIGSUM=SIGSUM+SIGM(IXT2)
19897   120   CONTINUE
19898         SIGSUM=SIGSUM/(20D0*MSTP(83))
19899  
19900 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
19901         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
19902           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
19903      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
19904           PARP(82)=0.9D0*PARP(82)
19905           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19906      &    VINT(2)
19907           GOTO 100
19908         ENDIF
19909         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
19910      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
19911  
19912 C...Start iteration to find k factor.
19913         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
19914         P83A=(1D0-PARP(83))**2
19915         P83B=2D0*PARP(83)*(1D0-PARP(83))
19916         P83C=PARP(83)**2
19917         CQ2I=1D0/PARP(84)**2
19918         CQ2R=2D0/(1D0+PARP(84)**2)
19919         SO=0.5D0
19920         XI=0D0
19921         YI=0D0
19922         XF=0D0
19923         YF=0D0
19924         XK=0.5D0
19925         IIT=0
19926   130   IF(IIT.EQ.0) THEN
19927           XK=2D0*XK
19928         ELSEIF(IIT.EQ.1) THEN
19929           XK=0.5D0*XK
19930         ELSE
19931           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
19932         ENDIF
19933  
19934 C...Evaluate overlap integrals. Find where to divide the b range.
19935         IF(MSTP(82).EQ.2) THEN
19936           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
19937           SOP=SP/PARU(1)
19938         ELSE
19939           IF(MSTP(82).EQ.3) THEN
19940             DELTAB=0.02D0
19941           ELSEIF(MSTP(82).EQ.4) THEN
19942             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
19943           ELSE
19944             POWIP=MAX(0.4D0,PARP(83))
19945             RPWIP=2D0/POWIP-1D0
19946             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
19947             SO=0D0
19948           ENDIF
19949           SP=0D0
19950           SOP=0D0
19951           BSP=0D0
19952           SOHIGH=0D0
19953           IBDIV=0
19954           B=-0.5D0*DELTAB
19955   140     B=B+DELTAB
19956           IF(MSTP(82).EQ.3) THEN
19957             OV=EXP(-B**2)/PARU(2)
19958           ELSEIF(MSTP(82).EQ.4) THEN
19959             OV=(P83A*EXP(-MIN(50D0,B**2))+
19960      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19961      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19962           ELSE
19963             OV=EXP(-B**POWIP)/PARU(2)
19964             SO=SO+PARU(2)*B*DELTAB*OV
19965           ENDIF
19966           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
19967           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
19968           SP=SP+PARU(2)*B*DELTAB*PACC
19969           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
19970           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
19971           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
19972             IBDIV=1 
19973             BDIV=B+0.5D0*DELTAB
19974           ENDIF
19975           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
19976         ENDIF
19977         YK=PARU(1)*XK*SO/SP
19978  
19979 C...Continue iteration until convergence.
19980         IF(YK.LT.YKE) THEN
19981           XI=XK
19982           YI=YK
19983           IF(IIT.EQ.1) IIT=2
19984         ELSE
19985           XF=XK
19986           YF=YK
19987           IF(IIT.EQ.0) IIT=1
19988         ENDIF
19989         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
19990  
19991 C...Store some results for subsequent use.
19992         BAVG=BSP/SP
19993         VINT(145)=SIGSUM
19994         VINT(146)=SOP/SO
19995         VINT(147)=SOP/SP
19996         VNT145=VINT(145)
19997         VNT146=VINT(146)
19998         VNT147=VINT(147)
19999 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
20000         PIK=(VNT146/VNT147)*YKE
20001
20002 C...Find relative weight for low and high impact parameter..
20003       PLOWB=PARU(1)*BDIV**2
20004       IF(MSTP(82).EQ.3) THEN
20005         PHIGHB=PIK*0.5*EXP(-BDIV**2)
20006       ELSEIF(MSTP(82).EQ.4) THEN
20007         S4A=P83A*EXP(-BDIV**2)
20008         S4B=P83B*EXP(-BDIV**2*CQ2R)
20009         S4C=P83C*EXP(-BDIV**2*CQ2I)
20010         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
20011       ELSEIF(PARP(83).GE.1.999D0) THEN
20012         PHIGHB=PIK*SOHIGH
20013         B2RPDV=BDIV**POWIP
20014       ELSE
20015         PHIGHB=PIK*SOHIGH
20016         B2RPDV=BDIV**POWIP
20017         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
20018       ENDIF 
20019       PALLB=PLOWB+PHIGHB
20020  
20021 C...Initialize iteration in xT2 for hardest interaction.
20022       ELSEIF(MMUL.EQ.2) THEN
20023         VINT(145)=VNT145
20024         VINT(146)=VNT146
20025         VINT(147)=VNT147
20026         IF(MSTP(82).LE.0) THEN
20027         ELSEIF(MSTP(82).EQ.1) THEN
20028           XT2=1D0
20029           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20030           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20031      &    VINT(317)/(VINT(318)*VINT(320))
20032           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20033         ELSEIF(MSTP(82).EQ.2) THEN
20034           XT2=1D0
20035           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20036      &    VINT(149)*(1D0+VINT(149))
20037         ELSE
20038           XC2=4D0*CKIN(3)**2/VINT(2)
20039           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
20040         ENDIF
20041
20042 C...Select impact parameter for hardest interaction.
20043         IF(MSTP(82).LE.2) RETURN
20044   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
20045 C...Treatment in low b region.
20046           MINT(39)=1
20047           B=BDIV*SQRT(PYR(0)) 
20048           IF(MSTP(82).EQ.3) THEN
20049             OV=EXP(-B**2)/PARU(2)
20050           ELSEIF(MSTP(82).EQ.4) THEN
20051             OV=(P83A*EXP(-MIN(50D0,B**2))+
20052      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20053      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20054           ELSE
20055             OV=EXP(-B**POWIP)/PARU(2)
20056           ENDIF  
20057           VINT(148)=OV/VNT147
20058           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
20059           XT2=1D0
20060           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20061      &    VINT(149)*(1D0+VINT(149))
20062         ELSE
20063 C...Treatment in high b region.
20064           MINT(39)=2
20065           IF(MSTP(82).EQ.3) THEN
20066             B=SQRT(BDIV**2-LOG(PYR(0)))
20067             OV=EXP(-B**2)/PARU(2)
20068           ELSEIF(MSTP(82).EQ.4) THEN
20069             S4RNDM=PYR(0)*(S4A+S4B+S4C)
20070             IF(S4RNDM.LT.S4A) THEN
20071               B=SQRT(BDIV**2-LOG(PYR(0)))
20072             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
20073               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
20074             ELSE
20075               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
20076             ENDIF    
20077             OV=(P83A*EXP(-MIN(50D0,B**2))+
20078      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20079      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20080           ELSEIF(PARP(83).GE.1.999D0) THEN
20081   144       B2RPW=B2RPDV-LOG(PYR(0))
20082             ACCIP=(B2RPW/B2RPDV)**RPWIP
20083             IF(ACCIP.LT.PYR(0)) GOTO 144
20084             OV=EXP(-B2RPW)/PARU(2)
20085             B=B2RPW**(1D0/POWIP)
20086           ELSE
20087   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
20088             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
20089             IF(ACCIP.LT.PYR(0)) GOTO 146
20090             OV=EXP(-B2RPW)/PARU(2)
20091             B=B2RPW**(1D0/POWIP)
20092           ENDIF  
20093           VINT(148)=OV/VNT147
20094           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
20095         ENDIF
20096         IF(PACC.LT.PYR(0)) GOTO 142
20097         VINT(139)=B/BAVG
20098  
20099       ELSEIF(MMUL.EQ.3) THEN
20100 C...Low-pT or multiple interactions (first semihard interaction):
20101 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
20102 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
20103         ISUB=MINT(1)
20104         VINT(145)=VNT145
20105         VINT(146)=VNT146
20106         VINT(147)=VNT147
20107         IF(MSTP(82).LE.0) THEN
20108           XT2=0D0
20109         ELSEIF(MSTP(82).EQ.1) THEN
20110           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20111 C...Use with "Sudakov" for low b values when impact parameter dependence.
20112         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
20113           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
20114      &    VINT(149)))).GT.PYR(0)) XT2=1D0
20115           IF(XT2.GE.1D0) THEN
20116             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
20117      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
20118      &      VINT(149)
20119           ELSE
20120             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
20121      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
20122      &      VINT(149)
20123           ENDIF
20124           XT2=MAX(0.01D0*VINT(149),XT2)
20125 C...Use without "Sudakov" for high b values when impact parameter dep.
20126         ELSE
20127           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
20128      &    PYR(0)*(1D0-XC2))-VINT(149)
20129           XT2=MAX(0.01D0*VINT(149),XT2)
20130         ENDIF
20131         VINT(25)=XT2
20132  
20133 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
20134         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
20135           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
20136           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
20137           ISUB=95
20138           MINT(1)=ISUB
20139           VINT(21)=1D-12*VINT(149)
20140           VINT(22)=0D0
20141           VINT(23)=0D0
20142           VINT(25)=1D-12*VINT(149)
20143  
20144         ELSE
20145 C...Multiple interactions (first semihard interaction).
20146 C...Choose tau and y*. Calculate cos(theta-hat).
20147           IF(PYR(0).LE.COEF(ISUB,1)) THEN
20148             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20149             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20150           ELSE
20151             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20152           ENDIF
20153           VINT(21)=TAU
20154           CALL PYKLIM(2)
20155           RYST=PYR(0)
20156           MYST=1
20157           IF(RYST.GT.COEF(ISUB,8)) MYST=2
20158           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20159           CALL PYKMAP(2,MYST,PYR(0))
20160           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20161         ENDIF
20162         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
20163  
20164 C...Store results of cross-section calculation.
20165       ELSEIF(MMUL.EQ.4) THEN
20166         ISUB=MINT(1)
20167         VINT(145)=VNT145
20168         VINT(146)=VNT146
20169         VINT(147)=VNT147
20170         XTS=VINT(25)
20171         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
20172         IF(ISET(ISUB).EQ.2)
20173      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20174         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
20175         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
20176      &  (XTS+VINT(149))))
20177         IRBIN=INT(1D0+20D0*RBIN)
20178         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
20179           NMUL(IRBIN)=NMUL(IRBIN)+1
20180           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
20181         ENDIF
20182  
20183 C...Choose impact parameter if not already done.
20184       ELSEIF(MMUL.EQ.5) THEN
20185         ISUB=MINT(1)
20186         VINT(145)=VNT145
20187         VINT(146)=VNT146
20188         VINT(147)=VNT147
20189   150   IF(MINT(39).GT.0) THEN
20190         ELSEIF(MSTP(82).EQ.3) THEN
20191           EXPB2=PYR(0)
20192           B2=-LOG(PYR(0))
20193           VINT(148)=EXPB2/(PARU(2)*VNT147)
20194           VINT(139)=SQRT(B2)/BAVG
20195         ELSEIF(MSTP(82).EQ.4) THEN
20196           RTYPE=PYR(0)
20197           IF(RTYPE.LT.P83A) THEN
20198             B2=-LOG(PYR(0))
20199           ELSEIF(RTYPE.LT.P83A+P83B) THEN
20200             B2=-LOG(PYR(0))/CQ2R
20201           ELSE
20202             B2=-LOG(PYR(0))/CQ2I
20203           ENDIF
20204           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
20205      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
20206      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
20207           VINT(139)=SQRT(B2)/BAVG
20208         ELSEIF(PARP(83).GE.1.999D0) THEN
20209           POWIP=MAX(2D0,PARP(83))
20210           RPWIP=2D0/POWIP-1D0
20211           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
20212   160     IF(PYR(0).LT.PROB1) THEN
20213             B2RPW=PYR(0)**(0.5D0*POWIP)
20214             ACCIP=EXP(-B2RPW)
20215           ELSE
20216             B2RPW=1D0-LOG(PYR(0))
20217             ACCIP=B2RPW**RPWIP
20218           ENDIF
20219           IF(ACCIP.LT.PYR(0)) GOTO 160
20220           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20221           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20222         ELSE
20223           POWIP=MAX(0.4D0,PARP(83))
20224           RPWIP=2D0/POWIP-1D0
20225           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
20226   170     IF(PYR(0).LT.PROB1) THEN
20227             B2RPW=2D0*RPWIP*PYR(0)
20228             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
20229           ELSE
20230             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
20231             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
20232           ENDIF
20233           IF(ACCIP.LT .PYR(0)) GOTO 170
20234           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20235           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20236         ENDIF
20237  
20238 C...Multiple interactions (variable impact parameter) : reject with
20239 C...probability exp(-overlap*cross-section above pT/normalization).
20240 C...Does not apply to low-b region, where "Sudakov" already included.
20241         VINT(150)=1D0 
20242         IF(MINT(39).NE.1) THEN
20243           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
20244           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
20245           DO 180 IBIN=IRBIN+1,20
20246             RNCOR=RNCOR+NMUL(IBIN)
20247             SIGCOR=SIGCOR+SIGM(IBIN)
20248   180     CONTINUE
20249           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
20250           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
20251           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
20252      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
20253         ENDIF
20254         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
20255      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
20256      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
20257           IF(VINT(150).LT.PYR(0)) GOTO 150
20258           VINT(150)=1D0
20259         ENDIF
20260  
20261 C...Generate additional multiple semihard interactions.
20262       ELSEIF(MMUL.EQ.6) THEN
20263  
20264 C...Save data for hardest initeraction, to be restored.
20265         ISUBSV=MINT(1)
20266         VINT(145)=VNT145
20267         VINT(146)=VNT146
20268         VINT(147)=VNT147
20269         M13SV=MINT(13)
20270         M14SV=MINT(14)
20271         M15SV=MINT(15)
20272         M16SV=MINT(16)
20273         M21SV=MINT(21)
20274         M22SV=MINT(22)
20275         DO 190 J=11,80
20276           VINTSV(J)=VINT(J)
20277   190   CONTINUE
20278         V141SV=VINT(141)
20279         V142SV=VINT(142)
20280  
20281 C...Store data on hardest interaction.
20282         XMI(1,1)=VINT(141)
20283         XMI(2,1)=VINT(142)
20284         PT2MI(1)=VINT(54)
20285         IMISEP(0)=MINT(84)
20286         IMISEP(1)=N
20287  
20288 C...Change process to generate; sum of x values so far.
20289         ISUB=96
20290         MINT(1)=96
20291         VINT(143)=1D0-VINT(141)
20292         VINT(144)=1D0-VINT(142)
20293         VINT(151)=0D0
20294         VINT(152)=0D0
20295  
20296 C...Initialize factors for PDF reshaping.
20297         DO 230 JS=1,2
20298           KFBEAM=MINT(10+JS)
20299           KFABM=IABS(KFBEAM)
20300           KFSBM=ISIGN(1,KFBEAM)
20301  
20302 C...Zero flavour content of incoming beam particle.
20303           KFIVAL(JS,1)=0
20304           KFIVAL(JS,2)=0
20305           KFIVAL(JS,3)=0
20306 C...Flavour content of baryon.
20307           IF(KFABM.GT.1000) THEN
20308             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
20309             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
20310             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
20311 C...Flavour content of pi+-, K+-.
20312           ELSEIF(KFABM.EQ.211) THEN
20313             KFIVAL(JS,1)=KFSBM*2
20314             KFIVAL(JS,2)=-KFSBM
20315           ELSEIF(KFABM.EQ.321) THEN
20316             KFIVAL(JS,1)=-KFSBM*3
20317             KFIVAL(JS,2)=KFSBM*2
20318 C...Flavour content of pi0, gamma, K0S, K0L not defined yet.
20319           ENDIF
20320  
20321 C...Zero initial valence and companion content.
20322           DO 200 IFL=-6,6
20323             NVC(JS,IFL)=0
20324   200     CONTINUE
20325  
20326 C...Initiate listing of all incoming partons from two sides.
20327           NMI(JS)=0
20328           DO 210 I=MINT(84)+1,N
20329             IF(K(I,3).EQ.MINT(83)+2+JS) THEN
20330               IMI(JS,1,1)=I
20331               IMI(JS,1,2)=0
20332             ENDIF
20333   210     CONTINUE
20334  
20335 C...Decide whether quarks in hard scattering were valence or sea.
20336           IFL=K(IMI(JS,1,1),2)
20337           IF (IABS(IFL).GT.6) GOTO 230
20338  
20339 C...Get PDFs at X and Q2 of the parton shower initiator for the
20340 C...hard scattering.
20341           X=VINT(140+JS)
20342           IF(MSTP(61).GE.1) THEN
20343             Q2=PARP(62)**2
20344           ELSE
20345             Q2=VINT(54)
20346           ENDIF
20347 C...Note: XPSVC = x*pdf.
20348           MINT(30)=JS
20349           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
20350           SEA=XPSVC(IFL,-1)
20351           VAL=XPSVC(IFL,0)
20352  
20353 C...Decide (Extra factor x cancels in the division).
20354           RVCS=PYR(0)*(SEA+VAL)
20355           IVNOW=1
20356   220     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
20357 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
20358             IVNOW=0
20359             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
20360             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
20361             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
20362             IF(KFIVAL(JS,1).EQ.0) THEN
20363               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
20364               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
20365               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
20366      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
20367             ENDIF
20368             IF(IVNOW.EQ.0) GOTO 220
20369 C...Mark valence.
20370             IMI(JS,1,2)=0
20371 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
20372             IF(KFIVAL(JS,1).EQ.0) THEN
20373               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
20374                 KFIVAL(JS,1)=IFL
20375                 KFIVAL(JS,2)=-IFL
20376               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
20377                 KFIVAL(JS,1)=IFL
20378                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
20379                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
20380               ENDIF
20381             ENDIF
20382  
20383 C...If sea, add opposite sign companion parton. Store X and I.
20384           ELSE
20385             NVC(JS,-IFL)=NVC(JS,-IFL)+1
20386             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
20387 C...Set pointer to companion
20388             IMI(JS,1,2)=-NVC(JS,-IFL)
20389           ENDIF
20390   230   CONTINUE
20391  
20392 C...Update counter number of multiple interactions.
20393         NMI(1)=1
20394         NMI(2)=1
20395  
20396 C...Set up starting values for iteration in xT2.
20397         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
20398      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
20399      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
20400      &  ISUBSV.NE.96)) THEN
20401           XT2=(1D0-VINT(141))*(1D0-VINT(142))
20402         ELSE
20403           XT2=VINT(25)
20404           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
20405           IF(ISET(ISUBSV).EQ.2)
20406      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20407           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
20408         ENDIF
20409         IF(MSTP(82).LE.1) THEN
20410           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20411           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20412      &    VINT(317)/(VINT(318)*VINT(320))
20413           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20414         ELSE
20415           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
20416      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
20417         ENDIF
20418         VINT(63)=0D0
20419         VINT(64)=0D0
20420  
20421 C...Iterate downwards in xT2.
20422   240   IF((MINT(35).EQ.2.AND.MSTP(81).EQ.10).OR.ISUBSV.EQ.95) THEN
20423           XT2=0D0
20424           GOTO 440
20425         ELSEIF(MSTP(82).LE.1) THEN
20426           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20427           IF(XT2.LT.VINT(149)) GOTO 440
20428         ELSE
20429           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 440
20430           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
20431      &    LOG(PYR(0)))-VINT(149)
20432           IF(XT2.LE.0D0) GOTO 440
20433           XT2=MAX(0.01D0*VINT(149),XT2)
20434         ENDIF
20435         VINT(25)=XT2
20436  
20437 C...Choose tau and y*. Calculate cos(theta-hat).
20438         IF(PYR(0).LE.COEF(ISUB,1)) THEN
20439           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20440           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20441         ELSE
20442           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20443         ENDIF
20444         VINT(21)=TAU
20445 C...New: require shat > 1.
20446         IF(TAU*VINT(2).LT.1D0) GOTO 240
20447         CALL PYKLIM(2)
20448         RYST=PYR(0)
20449         MYST=1
20450         IF(RYST.GT.COEF(ISUB,8)) MYST=2
20451         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20452         CALL PYKMAP(2,MYST,PYR(0))
20453         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20454  
20455 C...Check that x not used up. Accept or reject kinematical variables.
20456         X1M=SQRT(TAU)*EXP(VINT(22))
20457         X2M=SQRT(TAU)*EXP(-VINT(22))
20458         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 240
20459         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
20460         CALL PYSIGH(NCHN,SIGS)
20461         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
20462         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 240
20463         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
20464  
20465 C...Reset K, P and V vectors.
20466         DO 260 I=N+1,N+4
20467           DO 250 J=1,5
20468             K(I,J)=0
20469             P(I,J)=0D0
20470             V(I,J)=0D0
20471   250     CONTINUE
20472   260   CONTINUE
20473         PT=0.5D0*VINT(1)*SQRT(XT2)
20474  
20475 C...Choose flavour of reacting partons (and subprocess).
20476         RSIGS=SIGS*PYR(0)
20477         DO 270 ICHN=1,NCHN
20478           KFL1=ISIG(ICHN,1)
20479           KFL2=ISIG(ICHN,2)
20480           ICONMI=ISIG(ICHN,3)
20481           RSIGS=RSIGS-SIGH(ICHN)
20482           IF(RSIGS.LE.0D0) GOTO 280
20483   270   CONTINUE
20484  
20485 C...Reassign to appropriate process codes.
20486   280   ISUBMI=ICONMI/10
20487         ICONMI=MOD(ICONMI,10)
20488  
20489 C...Choose new quark flavour for annihilation graphs
20490         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
20491           SH=TAU*VINT(2)
20492           CALL PYWIDT(21,SH,WDTP,WDTE)
20493   290     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
20494           DO 300 I=1,MDCY(21,3)
20495             KFLF=KFDP(I+MDCY(21,2)-1,1)
20496             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
20497             IF(RKFL.LE.0D0) GOTO 310
20498   300     CONTINUE
20499   310     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
20500             IF(KFLF.GE.4) GOTO 290
20501           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
20502             KFLF=4
20503             ICONMI=ICONMI-2
20504           ELSEIF(ISUBMI.EQ.53) THEN
20505             KFLF=5
20506             ICONMI=ICONMI-4
20507           ENDIF
20508         ENDIF
20509  
20510 C...Final state flavours and colour flow: default values
20511         JS=1
20512         KFL3=KFL1
20513         KFL4=KFL2
20514         KCC=20
20515         KCS=ISIGN(1,KFL1)
20516  
20517         IF(ISUBMI.EQ.11) THEN
20518 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
20519           KCC=ICONMI
20520           IF(KFL1*KFL2.LT.0) KCC=KCC+2
20521  
20522         ELSEIF(ISUBMI.EQ.12) THEN
20523 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
20524           KFL3=ISIGN(KFLF,KFL1)
20525           KFL4=-KFL3
20526           KCC=4
20527  
20528         ELSEIF(ISUBMI.EQ.13) THEN
20529 C...f + fbar -> g + g; th arbitrary
20530           KFL3=21
20531           KFL4=21
20532           KCC=ICONMI+4
20533  
20534         ELSEIF(ISUBMI.EQ.28) THEN
20535 C...f + g -> f + g; th = (p(f)-p(f))**2
20536           IF(KFL1.EQ.21) JS=2
20537           KCC=ICONMI+6
20538           IF(KFL1.EQ.21) KCC=KCC+2
20539           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
20540           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
20541  
20542         ELSEIF(ISUBMI.EQ.53) THEN
20543 C...g + g -> f + fbar; th arbitrary
20544           KCS=(-1)**INT(1.5D0+PYR(0))
20545           KFL3=ISIGN(KFLF,KCS)
20546           KFL4=-KFL3
20547           KCC=ICONMI+10
20548  
20549         ELSEIF(ISUBMI.EQ.68) THEN
20550 C...g + g -> g + g; th arbitrary
20551           KCC=ICONMI+12
20552           KCS=(-1)**INT(1.5D0+PYR(0))
20553         ENDIF
20554  
20555 C...Store flavours of scattering.
20556         MINT(13)=KFL1
20557         MINT(14)=KFL2
20558         MINT(15)=KFL1
20559         MINT(16)=KFL2
20560         MINT(21)=KFL3
20561         MINT(22)=KFL4
20562  
20563 C...Set flavours and mothers of scattering partons.
20564         K(N+1,1)=14
20565         K(N+2,1)=14
20566         K(N+3,1)=3
20567         K(N+4,1)=3
20568         K(N+1,2)=KFL1
20569         K(N+2,2)=KFL2
20570         K(N+3,2)=KFL3
20571         K(N+4,2)=KFL4
20572         K(N+1,3)=MINT(83)+1
20573         K(N+2,3)=MINT(83)+2
20574         K(N+3,3)=N+1
20575         K(N+4,3)=N+2
20576  
20577 C...Store colour connection indices.
20578         DO 320 J=1,2
20579           JC=J
20580           IF(KCS.EQ.-1) JC=3-J
20581           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
20582           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
20583           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
20584           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
20585   320   CONTINUE
20586  
20587 C...Store incoming and outgoing partons in their CM-frame.
20588         SHR=SQRT(TAU)*VINT(1)
20589         P(N+1,3)=0.5D0*SHR
20590         P(N+1,4)=0.5D0*SHR
20591         P(N+2,3)=-0.5D0*SHR
20592         P(N+2,4)=0.5D0*SHR
20593         P(N+3,5)=PYMASS(K(N+3,2))
20594         P(N+4,5)=PYMASS(K(N+4,2))
20595         IF(P(N+3,5)+P(N+4,5).GE.SHR) GOTO 240
20596         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
20597         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
20598         P(N+4,4)=SHR-P(N+3,4)
20599         P(N+4,3)=-P(N+3,3)
20600  
20601 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
20602         PHI=PARU(2)*PYR(0)
20603         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
20604  
20605 C...Set up default values before showers.
20606         MINT(31)=MINT(31)+1
20607         IPU1=N+1
20608         IPU2=N+2
20609         IPU3=N+3
20610         IPU4=N+4
20611         VINT(141)=VINT(41)
20612         VINT(142)=VINT(42)
20613         N=N+4
20614  
20615 C...Showering of initial state partons (optional).
20616 C...Note: no showering of final state partons here; it comes later.
20617         IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
20618           MINT(51)=0
20619           ALAMSV=PARJ(81)
20620           PARJ(81)=PARP(72)
20621           NSAV=N
20622           DO 340 I=1,4
20623             DO 330 J=1,5
20624               KSAV(I,J)=K(N-4+I,J)
20625               PSAV(I,J)=P(N-4+I,J)
20626   330       CONTINUE
20627   340     CONTINUE
20628           CALL PYSSPA(IPU1,IPU2)
20629           PARJ(81)=ALAMSV
20630 C...If shower failed then restore to situation before shower.
20631           IF(MINT(51).GE.1) THEN
20632             N=NSAV
20633             DO 360 I=1,4
20634               DO 350 J=1,5
20635                 K(N-4+I,J)=KSAV(I,J)
20636                 P(N-4+I,J)=PSAV(I,J)
20637   350         CONTINUE
20638   360       CONTINUE
20639             IPU1=N-3
20640             IPU2=N-2
20641             VINT(141)=VINT(41)
20642             VINT(142)=VINT(42)
20643           ENDIF
20644         ENDIF
20645  
20646 C...Keep track of loose colour ends and information on scattering.
20647   370   IMI(1,MINT(31),1)=IPU1
20648         IMI(2,MINT(31),1)=IPU2
20649         IMI(1,MINT(31),2)=0
20650         IMI(2,MINT(31),2)=0
20651         XMI(1,MINT(31))=VINT(141)
20652         XMI(2,MINT(31))=VINT(142)
20653         PT2MI(MINT(31))=VINT(54)
20654         IMISEP(MINT(31))=N
20655  
20656 C...Decide whether quarks in last scattering were valence, companion or
20657 C...sea.
20658         DO 430 JS=1,2
20659           KFBEAM=MINT(10+JS)
20660           KFSBM=ISIGN(1,MINT(10+JS))
20661           IFL=K(IMI(JS,MINT(31),1),2)
20662           IMI(JS,MINT(31),2)=0
20663           IF (IABS(IFL).GT.6) GOTO 430
20664  
20665 C...Get PDFs at X and Q2 of the parton shower initiator for the
20666 C...last scattering. At this point VINT(143:144) do not yet
20667 C...include the scattered x values VINT(141:142).
20668           X=VINT(140+JS)/VINT(142+JS)
20669           IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
20670             Q2=PARP(62)**2
20671           ELSE
20672             Q2=VINT(54)
20673           ENDIF
20674 C...Note: XPSVC = x*pdf.
20675           MINT(30)=JS
20676           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
20677           SEA=XPSVC(IFL,-1)
20678           VAL=XPSVC(IFL,0)
20679           CMP=0D0
20680           DO 380 IVC=1,NVC(JS,IFL)
20681             CMP=CMP+XPSVC(IFL,IVC)
20682   380     CONTINUE
20683  
20684 C...Decide (Extra factor x cancels in the dvision).
20685           RVCS=PYR(0)*(SEA+VAL+CMP)
20686           IVNOW=1
20687   390     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
20688 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
20689             IVNOW=0
20690             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
20691             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
20692             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
20693             IF(KFIVAL(JS,1).EQ.0) THEN
20694               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
20695               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
20696               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
20697      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
20698             ELSE
20699               DO 400 I1=1,NMI(JS)
20700                 IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
20701      &            IVNOW=IVNOW-1
20702   400         CONTINUE
20703             ENDIF
20704             IF(IVNOW.EQ.0) GOTO 390
20705 C...Mark valence.
20706             IMI(JS,MINT(31),2)=0
20707 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
20708             IF(KFIVAL(JS,1).EQ.0) THEN
20709               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
20710                 KFIVAL(JS,1)=IFL
20711                 KFIVAL(JS,2)=-IFL
20712               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
20713                 KFIVAL(JS,1)=IFL
20714                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
20715                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
20716               ENDIF
20717             ENDIF
20718  
20719           ELSEIF (RVCS.LE.VAL+SEA.OR.NVC(JS,IFL).EQ.0) THEN
20720 C...If sea, add opposite sign companion parton. Store X and I.
20721             NVC(JS,-IFL)=NVC(JS,-IFL)+1
20722             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
20723 C...Set pointer to companion
20724             IMI(JS,MINT(31),2)=-NVC(JS,-IFL)
20725           ELSE
20726 C...If companion, decide which one.
20727             CMPSUM=VAL+SEA
20728             ISEL=0
20729   410       ISEL=ISEL+1
20730             CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
20731             IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 410
20732 C...Find original sea (anti-)quark:
20733             IASSOC=0
20734             DO 420 I1=1,NMI(JS)
20735               IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 420
20736               IF (-IMI(JS,I1,2).EQ.ISEL) THEN
20737                 IMI(JS,MINT(31),2)=IMI(JS,I1,1)
20738                 IMI(JS,I1,2)=IMI(JS,MINT(31),1)
20739               ENDIF
20740   420       CONTINUE
20741 C...Change X to what associated companion had, so that the correct
20742 C...amount of momentum can be subtracted from the companion sum below.
20743             X=XASSOC(JS,IFL,ISEL)
20744 C...Mark companion read.
20745             XASSOC(JS,IFL,ISEL)=0D0
20746           ENDIF
20747  430    CONTINUE
20748  
20749 C...Global statistics.
20750         MINT(351)=MINT(351)+1
20751         VINT(351)=VINT(351)+PT
20752         IF (MINT(351).EQ.1) VINT(356)=PT
20753  
20754 C...Update remaining energy and other counters.
20755         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
20756           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
20757           MINT(51)=1
20758           RETURN
20759         ENDIF
20760         NMI(1)=NMI(1)+1
20761         NMI(2)=NMI(2)+1
20762         VINT(151)=VINT(151)+VINT(41)
20763         VINT(152)=VINT(152)+VINT(42)
20764         VINT(143)=VINT(143)-VINT(141)
20765         VINT(144)=VINT(144)-VINT(142)
20766  
20767 C...Iterate, with more interactions allowed.
20768         IF(MINT(31).LT.240) GOTO 240
20769  440    CONTINUE
20770  
20771 C...Restore saved quantities for hardest interaction.
20772         MINT(1)=ISUBSV
20773         MINT(13)=M13SV
20774         MINT(14)=M14SV
20775         MINT(15)=M15SV
20776         MINT(16)=M16SV
20777         MINT(21)=M21SV
20778         MINT(22)=M22SV
20779         DO 450 J=11,80
20780           VINT(J)=VINTSV(J)
20781   450   CONTINUE
20782         VINT(141)=V141SV
20783         VINT(142)=V142SV
20784  
20785       ENDIF
20786  
20787 C...Format statements for printout.
20788  5000 FORMAT(/1X,'****** PYMIGN: initialization of multiple inter',
20789      &'actions for MSTP(82) =',I2,' ******')
20790  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20791      &D9.2,' mb: rejected')
20792  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20793      &D9.2,' mb: accepted')
20794  
20795       RETURN
20796       END
20797  
20798 C*********************************************************************
20799  
20800 C...PYMIHK
20801 C...Finds left-behind remnant flavour content and hooks up
20802 C...the colour flow between the hard scattering and remnants
20803  
20804       SUBROUTINE PYMIHK
20805  
20806 C...Double precision and integer declarations.
20807       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20808       IMPLICIT INTEGER(I-N)
20809       INTEGER PYK,PYCHGE,PYCOMP
20810 C...The event record
20811       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
20812 C...Parameters
20813       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20814       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20815       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20816       COMMON/PYINT1/MINT(400),VINT(400)
20817 C...The common block of dangling ends
20818       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
20819      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
20820      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
20821       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINTM/
20822 C...Local variables
20823       PARAMETER (NERSIZ=4000)
20824       COMMON /PYCBLS/MCO(NERSIZ,2),NCC,JCCO(NERSIZ,2),JCCN(NERSIZ,2)
20825      &     ,MACCPT
20826       COMMON /PYCTAG/NCT,MCT(NERSIZ,2)
20827       SAVE /PYCBLS/,/PYCTAG/
20828       DIMENSION JST(2,3),IV(2,3),IDQ(3),NVSUM(2),NBRTOT(2),NG(2)
20829      &     ,ITJUNC(2),MOUT(2),INSR(1000,3),ISTR(6),YMI(240)
20830       DATA NERRPR/0/
20831       SAVE NERRPR
20832       FOUR(I,J)=P(I,4)*P(J,4)-P(I,3)*P(J,3)-P(I,2)*P(J,2)-P(I,1)*P(J,1)
20833  
20834 C...Set up error checkers
20835       IBOOST=0
20836  
20837 C...Initialize colour arrays: MCO (Original) and MCT (New)
20838       DO 110 I=MINT(84)+1,NERSIZ
20839         DO 100 JC=1,2
20840           MCT(I,JC)=0
20841           MCO(I,JC)=0
20842   100   CONTINUE
20843 C...Also zero colour tracing information, if existed.
20844         IF (I.LE.N) THEN
20845           K(I,4)=MOD(K(I,4),MSTU(5)**2)
20846           K(I,5)=MOD(K(I,5),MSTU(5)**2)
20847         ENDIF
20848   110 CONTINUE
20849  
20850 C...Initialize colour tag collapse arrays:
20851 C...JCCO (Original) and JCCN (New).
20852       DO 130 MG=MINT(84)+1,NERSIZ
20853         DO 120 JC=1,2
20854           JCCO(MG,JC)=0
20855           JCCN(MG,JC)=0
20856   120   CONTINUE
20857   130 CONTINUE
20858  
20859 C...Zero gluon insertion array
20860       DO 150 IM=1,1000
20861         DO 140 J=1,3
20862           INSR(IM,J)=0
20863   140   CONTINUE
20864   150 CONTINUE
20865  
20866 C...Compute hard scattering system rapidities
20867       IF (MSTP(89).EQ.1) THEN
20868         DO 160 IM=1,240
20869           IF (IM.LE.MINT(31)) THEN
20870             YMI(IM)=LOG(XMI(1,IM)/XMI(2,IM))
20871           ELSE
20872 C...Set (unsigned) rapidity = 100 for beam remnant systems.
20873             YMI(IM)=100D0
20874           ENDIF
20875   160   CONTINUE
20876       ENDIF
20877  
20878 C...Treat each side separately
20879       DO 290 JS=1,2
20880  
20881 C...Initialize side.
20882         NG(JS)=0
20883         JV=0
20884         KFS=ISIGN(1,MINT(10+JS))
20885  
20886 C...Set valence content of pi0, gamma, K0S, K0L if not yet done.
20887         IF(KFIVAL(JS,1).EQ.0) THEN
20888           IF(MINT(10+JS).EQ.111) THEN
20889             KFIVAL(JS,1)=INT(1.5D0+PYR(0))
20890             KFIVAL(JS,2)=-KFIVAL(JS,1)
20891           ELSEIF(MINT(10+JS).EQ.22) THEN
20892             PYRKF=PYR(0)
20893             KFIVAL(JS,1)=1
20894             IF(PYRKF.GT.0.1D0) KFIVAL(JS,1)=2
20895             IF(PYRKF.GT.0.5D0) KFIVAL(JS,1)=3
20896             IF(PYRKF.GT.0.6D0) KFIVAL(JS,1)=4
20897             KFIVAL(JS,2)=-KFIVAL(JS,1)
20898           ELSEIF(MINT(10+JS).EQ.130.OR.MINT(10+JS).EQ.310) THEN
20899             IF(PYR(0).GT.0.5D0) THEN
20900               KFIVAL(JS,1)=1
20901               KFIVAL(JS,2)=-3
20902             ELSE
20903               KFIVAL(JS,1)=3
20904               KFIVAL(JS,2)=-1
20905             ENDIF
20906           ENDIF
20907         ENDIF
20908  
20909 C...Initialize beam remnant sea and valence content flavour by flavour.
20910         NVSUM(JS)=0
20911         NBRTOT(JS)=0
20912         DO 210 JFA=1,6
20913 C...Count up original number of JFA valence quarks and antiquarks.
20914           NVALQ=0
20915           NVALQB=0
20916           NSEA=0
20917           DO 170 J=1,3
20918             IF(KFIVAL(JS,J).EQ.JFA) NVALQ=NVALQ+1
20919             IF(KFIVAL(JS,J).EQ.-JFA) NVALQB=NVALQB+1
20920   170     CONTINUE
20921           NVSUM(JS)=NVSUM(JS)+NVALQ+NVALQB
20922 C...Subtract kicked out valence and determine sea from flavour cons.
20923           DO 180 IM=1,NMI(JS)
20924             IFL = K(IMI(JS,IM,1),2)
20925             IFA = IABS(IFL)
20926             IFS = ISIGN(1,IFL)
20927             IF (IFL.EQ.JFA.AND.IMI(JS,IM,2).EQ.0) THEN
20928 C...Subtract K.O. valence quark from remainder.
20929               NVALQ=NVALQ-1
20930               JV=NVSUM(JS)-NVALQ-NVALQB
20931               IV(JS,JV)=IMI(JS,IM,1)
20932             ELSEIF (IFL.EQ.-JFA.AND.IMI(JS,IM,2).EQ.0) THEN
20933 C...Subtract K.O. valence antiquark from remainder.
20934               NVALQB=NVALQB-1
20935               JV=NVSUM(JS)-NVALQ-NVALQB
20936               IV(JS,JV)=IMI(JS,IM,1)
20937             ELSEIF (IFA.EQ.JFA) THEN
20938 C...Outside sea without companion: add opposite sea flavour inside.
20939               IF (IMI(JS,IM,2).LT.0) NSEA=NSEA-IFS
20940             ENDIF
20941   180     CONTINUE
20942 C...Check if space left in PYJETS for additional BR flavours
20943           NFLSUM=IABS(NSEA)+NVALQ+NVALQB
20944           NBRTOT(JS)=NBRTOT(JS)+NFLSUM
20945           IF (N+NFLSUM+1.GT.MSTU(4)) THEN
20946             CALL PYERRM(11,'(PYMIHK:) no more memory left in PYJETS')
20947             MINT(51)=1
20948             RETURN
20949           ENDIF
20950 C...Add required val+sea content to beam remnant.
20951           IF (NFLSUM.GT.0) THEN
20952             DO 200 IA=1,NFLSUM
20953 C...Insert beam remnant quark as p.t. symbolic parton in ER.
20954               N=N+1
20955               DO 190 IX=1,5
20956                 K(N,IX)=0
20957                 P(N,IX)=0D0
20958                 V(N,IX)=0D0
20959   190         CONTINUE
20960               K(N,1)=3
20961               K(N,2)=ISIGN(JFA,NSEA)
20962               IF (IA.LE.NVALQ) K(N,2)=JFA
20963               IF (IA.GT.NVALQ.AND.IA.LE.NVALQ+NVALQB) K(N,2)=-JFA
20964               K(N,3)=MINT(83)+JS
20965 C...Also update NMI, IMI, and IV arrays.
20966               NMI(JS)=NMI(JS)+1
20967               IMI(JS,NMI(JS),1)=N
20968               IMI(JS,NMI(JS),2)=-1
20969               IF (IA.LE.NVALQ+NVALQB) THEN
20970                 IMI(JS,NMI(JS),2)=0
20971                 JV=JV+1
20972                 IV(JS,JV)=IMI(JS,NMI(JS),1)
20973               ENDIF
20974   200       CONTINUE
20975           ENDIF
20976   210   CONTINUE
20977  
20978         IM=0
20979   220   IM=IM+1
20980         IF (IM.LE.NMI(JS)) THEN
20981           IF (K(IMI(JS,IM,1),2).EQ.21) THEN
20982             NG(JS)=NG(JS)+1
20983 C...Add fictitious parent gluons for companion pairs.
20984           ELSEIF (IMI(JS,IM,2).NE.0.AND.K(IMI(JS,IM,1),2).GT.0) THEN
20985 C...Randomly assign companions to sea quarks which have none.
20986             IF (IMI(JS,IM,2).LT.0) THEN
20987               IMC=PYR(0)*NMI(JS)
20988   230         IMC=MOD(IMC,NMI(JS))+1
20989               IF (K(IMI(JS,IMC,1),2).NE.-K(IMI(JS,IM,1),2)) GOTO 230
20990               IF (IMI(JS,IMC,2).GE.0) GOTO 230
20991               IMI(JS, IM,2) = IMI(JS,IMC,1)
20992               IMI(JS,IMC,2) = IMI(JS, IM,1)
20993             ENDIF
20994 C...Add fictitious parent gluon
20995             N=N+1
20996             DO 240 IX=1,5
20997               K(N,IX)=0
20998               P(N,IX)=0D0
20999               V(N,IX)=0D0
21000   240       CONTINUE
21001             K(N,1)=14
21002             K(N,2)=21
21003             K(N,3)=MINT(83)+JS
21004 C...Set gluon (anti-)colour daughter pointers
21005             K(N,4)=IMI(JS, IM,1)
21006             K(N,5)=IMI(JS, IM,2)
21007 C...Set quark (anti-)colour parent pointers
21008             K(IMI(JS, IM,2),5)=K(IMI(JS, IM,2),5)+MSTU(5)*N
21009             K(IMI(JS, IM,1),4)=K(IMI(JS, IM,1),4)+MSTU(5)*N
21010 C...Add gluon to IMI
21011             NMI(JS)=NMI(JS)+1
21012             IMI(JS,NMI(JS),1)=N
21013             IMI(JS,NMI(JS),2)=0
21014           ENDIF
21015           GOTO 220
21016         ENDIF
21017  
21018 C...If incoming (anti-)baryon, insert inside (anti-)junction.
21019 C...Set up initial v-v-j-v configuration. Otherwise set up
21020 C...mesonic v-vbar configuration
21021         IF (IABS(MINT(10+JS)).GT.1000) THEN
21022 C...Determine junction type (1: B=1 2: B=-1)
21023           ITJUNC(JS) = (3-KFS)/2
21024 C...Insert junction.
21025           N=N+1
21026           DO 250 IX=1,5
21027             K(N,IX)=0
21028             P(N,IX)=0D0
21029             V(N,IX)=0D0
21030   250     CONTINUE
21031 C...Set special junction codes:
21032           K(N,1)=42
21033           K(N,2)=88
21034 C...Set parent to side.
21035           K(N,3)=MINT(83)+JS
21036           K(N,4)=ITJUNC(JS)*MSTU(5)
21037           K(N,5)=0
21038 C...Connect valence quarks to junction.
21039           MOUT(JS)=0
21040           MANTI=ITJUNC(JS)-1
21041 C...Set (anti)colour mother = junction.
21042           DO 260 JV=1,3
21043             K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
21044      &           +MSTU(5)*N
21045 C...Keep track of partons adjacent to junction:
21046             JST(JS,JV)=IV(JS,JV)
21047   260     CONTINUE
21048         ELSE
21049 C...Mesons: set up initial q-qbar topology
21050           ITJUNC(JS)=0
21051           IF (K(IV(JS,1),2).GT.0) THEN
21052             IQ=IV(JS,1)
21053             IQBAR=IV(JS,2)
21054           ELSE
21055             IQ=IV(JS,2)
21056             IQBAR=IV(JS,1)
21057           ENDIF
21058           IV(JS,3)=0
21059           JST(JS,1)=IQ
21060           JST(JS,2)=IQBAR
21061           JST(JS,3)=0
21062           K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
21063           K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
21064 C...Special for mesons. Insert gluon if BR empty.
21065           IF (NBRTOT(JS).EQ.0) THEN
21066             N=N+1
21067             DO 270 IX=1,5
21068               K(N,IX)=0
21069               P(N,IX)=0D0
21070               V(N,IX)=0D0
21071   270       CONTINUE
21072             K(N,1)=3
21073             K(N,2)=21
21074             K(N,3)=MINT(83)+JS
21075             K(N,4)=0
21076             K(N,5)=0
21077             NBRTOT(JS)=1
21078             NG(JS)=NG(JS)+1
21079 C...Add gluon to IMI
21080             NMI(JS)=NMI(JS)+1
21081             IMI(JS,NMI(JS),1)=N
21082             IMI(JS,NMI(JS),2)=0
21083           ENDIF
21084           MOUT(JS)=0
21085         ENDIF
21086  
21087 C...Count up number of valence quarks outside BR.
21088         DO 280 JV=1,3
21089           IF (JST(JS,JV).LE.MINT(53).AND.JST(JS,JV).GT.0)
21090      &         MOUT(JS)=MOUT(JS)+1
21091   280   CONTINUE
21092  
21093   290 CONTINUE
21094  
21095 C...Now both sides have been prepared in an initial vvjv (baryonic) or
21096 C...v(g)vbar (mesonic) configuration.
21097  
21098 C...Create colour line tags starting from initiators.
21099       NCT=0
21100       DO 320 IM=1,MINT(31)
21101 C...Consider each side in turn.
21102         DO 310 JS=1,2
21103           I1=IMI(JS,IM,1)
21104           I2=IMI(3-JS,IM,1)
21105           DO 300 JCS=4,5
21106             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
21107      &           GOTO 300
21108             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 300
21109  
21110             KCS=JCS
21111             CALL PYCTTR(I1,KCS,I2)
21112             IF(MINT(51).NE.0) RETURN
21113  
21114   300     CONTINUE
21115   310   CONTINUE
21116   320 CONTINUE
21117  
21118       DO 340 JS=1,2
21119 C...Create colour tags for beam remnant partons.
21120         DO 330 IM=MINT(31)+1,NMI(JS)
21121           IP=IMI(JS,IM,1)
21122           IF (K(IP,2).NE.21) THEN
21123             JC=(3-ISIGN(1,K(IP,2)))/2
21124             IF (MCT(IP,JC).EQ.0) THEN
21125               NCT=NCT+1
21126               MCT(IP,JC)=NCT
21127             ENDIF
21128           ELSE
21129 C...Gluons
21130             ICD=K(IP,4)
21131             IAD=K(IP,5)
21132             IF (ICD.NE.0) THEN
21133 C...Fictituous gluons just inherit from their quark daughters.
21134               ICC=MCT(ICD,1)
21135               IAC=MCT(IAD,2)
21136             ELSE
21137 C...Real beam remnant gluons get their own colours
21138               ICC=NCT+1
21139               IAC=NCT+2
21140               NCT=NCT+2
21141             ENDIF
21142             MCT(IP,1)=ICC
21143             MCT(IP,2)=IAC
21144           ENDIF
21145   330   CONTINUE
21146   340 CONTINUE
21147  
21148 C...Create colour tags for colour lines which are detached from the
21149 C...initial state.
21150  
21151       DO 360 MQGST=1,2
21152         DO 350 I=MINT(84)+1,N
21153  
21154 C...Look for coloured string endpoint, or (later) leftover gluon.
21155           IF (K(I,1).NE.3) GOTO 350
21156           KC=PYCOMP(K(I,2))
21157           IF(KC.EQ.0) GOTO 350
21158           KQ=KCHG(KC,2)
21159           IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
21160  
21161 C...Pick up loose string end with no previous tag.
21162           KCS=4
21163           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
21164           IF(MCT(I,KCS-3).NE.0) GOTO 350
21165  
21166           CALL PYCTTR(I,KCS,I)
21167           IF(MINT(51).NE.0) RETURN
21168  
21169   350   CONTINUE
21170   360 CONTINUE
21171  
21172 C...Store original colour tags
21173       DO 370 I=MINT(84)+1,N
21174         MCO(I,1)=MCT(I,1)
21175         MCO(I,2)=MCT(I,2)
21176   370 CONTINUE
21177  
21178 C...Iteratively add gluons to already existing string pieces, enforcing
21179 C...various possible orderings, and rejecting insertions that would give
21180 C...rise to singlet gluons.
21181 C...<kappa tau> normalization.
21182       RM0=1.5D0
21183       MRETRY=0
21184       PARP80=PARP(80)
21185  
21186 C...Set up simplified kinematics.
21187 C...Boost hard interaction systems.
21188       IBOOST=IBOOST+1
21189       DO 380 IM=1,MINT(31)
21190         BETA=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
21191         CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
21192   380 CONTINUE
21193 C...Assign preliminary beam remnant momenta.
21194       DO 390 I=MINT(53)+1,N
21195         JS=K(I,3)
21196         P(I,1)=0D0
21197         P(I,2)=0D0
21198         IF (K(I,2).NE.88) THEN
21199           P(I,4)=0.5D0*VINT(142+JS)*VINT(1)/MAX(1,NMI(JS)-MINT(31))
21200           P(I,3)=P(I,4)
21201           IF (JS.EQ.2) P(I,3)=-P(I,3)
21202         ELSE
21203 C...Junctions are wildcards for the present.
21204           P(I,4)=0D0
21205           P(I,3)=0D0
21206         ENDIF
21207   390 CONTINUE
21208  
21209 C...Reset colour processing information.
21210   400 DO 410 I=MINT(84)+1,N
21211         K(I,4)=MOD(K(I,4),MSTU(5)**2)
21212         K(I,5)=MOD(K(I,5),MSTU(5)**2)
21213   410 CONTINUE
21214  
21215       NCC=0
21216       DO 430 JS=1,2
21217 C...If meson,  without gluon in BR, collapse q-qbar colour tags:
21218         IF (ITJUNC(JS).EQ.0) THEN
21219           JC1=MCT(JST(JS,1),1)
21220           JC2=MCT(JST(JS,2),2)
21221           NCC=NCC+1
21222           JCCO(NCC,1)=MAX(JC1,JC2)
21223           JCCO(NCC,2)=MIN(JC1,JC2)
21224 C...Collapse colour tags in event record
21225           DO 420 I=MINT(84)+1,N
21226             IF (MCT(I,1).EQ.JCCO(NCC,1)) MCT(I,1)=JCCO(NCC,2)
21227             IF (MCT(I,2).EQ.JCCO(NCC,1)) MCT(I,2)=JCCO(NCC,2)
21228   420     CONTINUE
21229         ENDIF
21230   430 CONTINUE
21231  
21232   440 JS=1
21233       IF (PYR(0).GT.0.5D0.OR.NG(1).EQ.0) JS=2
21234       IF (NG(JS).GT.0) THEN
21235         NOPT=0
21236         RLOPT=1D9
21237 C...Start at random gluon (optimizes speed for random attachments)
21238         NMGL=0
21239         IMGL=PYR(0)*NMI(JS)+1
21240   450   IMGL=MOD(IMGL,NMI(JS))+1
21241         NMGL=NMGL+1
21242 C...Only loop through NMI once (with upper limit to save time)
21243         IF (NMGL.LE.NMI(JS).AND.NOPT.LE.3) THEN
21244           IGL  = IMI(JS,IMGL,1)
21245 C...If not gluon or if already connected, try next.
21246           IF (K(IGL,2).NE.21.OR.K(IGL,4)/MSTU(5).NE.0
21247      &         .OR.K(IGL,5)/MSTU(5).NE.0) GOTO 450
21248 C...Now loop through all possible insertions of this gluon.
21249           NMP1=0
21250           IMP1=PYR(0)*NMI(JS)+1
21251   460     IMP1=MOD(IMP1,NMI(JS))+1
21252           NMP1=NMP1+1
21253           IF (IMP1.EQ.IMGL) GOTO 460
21254 C...Only loop through NMI once (with upper limit to save time).
21255           IF (NMP1.LE.NMI(JS).AND.NOPT.LE.3) THEN
21256             IP1  = IMI(JS,IMP1,1)
21257 C...Try both colour mother and colour anti-mother.
21258 C...Randomly select which one to try first.
21259             NANTI=0
21260             MANTI=PYR(0)*2
21261   470       MANTI=MOD(MANTI+1,2)
21262             NANTI=NANTI+1
21263             IF (NANTI.LE.2) THEN
21264               IP2 =MOD(K(IP1,4+MANTI)/MSTU(5),MSTU(5))
21265 C...Reject if no appropriate mother (or if mother is fictitious
21266 C...parent gluon.)
21267               IF (IP2.LE.0) GOTO 470
21268               IF (K(IP2,2).EQ.21.AND.IP2.GT.MINT(53)) GOTO 470
21269 C...Also reject if this link has already been tried.
21270               IF (K(IP1,4+MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21271               IF (K(IP2,5-MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21272 C...Set flag to indicate that this link has now been tried for this
21273 C...gluon. IP2 may be junction, which has several mothers.
21274               K(IP1,4+MANTI)=K(IP1,4+MANTI)+2*MSTU(5)**2
21275               IF (K(IP2,2).NE.88) THEN
21276                 K(IP2,5-MANTI)=K(IP2,5-MANTI)+2*MSTU(5)**2
21277               ENDIF
21278  
21279 C...JCG1: Original colour tag of gluon on IP1 side
21280 C...JCG2: Original colour tag of gluon on IP2 side
21281 C...JCP1: Original colour tag of IP1 on gluon side
21282 C...JCP2: Original colour tag of IP2 on gluon side.
21283               JCG1=MCO(IGL,2-MANTI)
21284               JCG2=MCO(IGL,1+MANTI)
21285               JCP1=MCO(IP1,1+MANTI)
21286               JCP2=MCO(IP2,2-MANTI)
21287  
21288               CALL PYMIHG(JCP1,JCG1,JCP2,JCG2)
21289 C...Reject gluon attachments that give rise to singlet gluons.
21290               IF (MACCPT.EQ.0) GOTO 470
21291  
21292 C...Update colours
21293               JCG1=MCT(IGL,2-MANTI)
21294               JCG2=MCT(IGL,1+MANTI)
21295               JCP1=MCT(IP1,1+MANTI)
21296               JCP2=MCT(IP2,2-MANTI)
21297  
21298 C...Select whether to accept this insertion
21299               IF (MSTP(89).EQ.0) THEN
21300 C...Random insertions: no measure.
21301                 RL=1D0
21302 C...For random ordering, we want to suppress beam remnant breakups
21303 C...already at this point.
21304                 IF (IP1.GT.MINT(53).AND.IP2.GT.MINT(53)
21305      &               .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) THEN
21306                   NMP1=0
21307                   NMGL=0
21308                   GOTO 470
21309                 ENDIF
21310               ELSEIF (MSTP(89).EQ.1) THEN
21311 C...Rapidity ordering:
21312 C...YGL = Rapidity of gluon.
21313                 YGL=YMI(IMGL)
21314 C...If fictitious gluon
21315                 IF (YGL.EQ.100D0) THEN
21316                   YGL=(3-2*JS)*100D0
21317                   IDA1=MOD(K(IGL,4),MSTU(5))
21318                   IDA2=MOD(K(IGL,5),MSTU(5))
21319                   DO 480 IMT=1,NMI(JS)
21320 C...Select (arbitrarily) the most central daughter.
21321                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21322      &                   THEN
21323                       IF (ABS(YGL).GT.ABS(YMI(IMT))) YGL=YMI(IMT)
21324                     ENDIF
21325   480             CONTINUE
21326                 ENDIF
21327 C...YP1 = Rapidity IP1
21328                 YP1=YMI(IMP1)
21329 C...If fictitious gluon
21330                 IF (YP1.EQ.100D0) THEN
21331                   YP1=(3-2*JS)*YP1
21332                   IDA1=MOD(K(IP1,4),MSTU(5))
21333                   IDA2=MOD(K(IP1,5),MSTU(5))
21334                   DO 490 IMT=1,NMI(JS)
21335 C...Select (arbitrarily) the most central daughter.
21336                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21337      &                   THEN
21338                       IF (ABS(YP1).GT.ABS(YMI(IMT))) YP1=YMI(IMT)
21339                     ENDIF
21340   490             CONTINUE
21341                 ENDIF
21342 C...YP2 = Rapidity of mother system
21343                 IF (K(IP2,2).NE.88) THEN
21344                   DO 500 IMT=1,NMI(JS)
21345                     IF (IMI(JS,IMT,1).EQ.IP2) YP2=YMI(IMT)
21346   500             CONTINUE
21347 C...If fictitious gluon
21348                   IF (YP2.EQ.100D0) THEN
21349                     YP2=(3-2*JS)*YP2
21350                     IDA1=MOD(K(IP2,4),MSTU(5))
21351                     IDA2=MOD(K(IP2,5),MSTU(5))
21352                     DO 510 IMT=1,NMI(JS)
21353 C...Select (arbitrarily) the most central daughter.
21354                       IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2
21355      &                     ) THEN
21356                         IF (ABS(YP2).GT.ABS(YMI(IMT))) YP2=YMI(IMT)
21357                       ENDIF
21358   510               CONTINUE
21359                   ENDIF
21360 C...Assign (arbitrarily) 100D0 to junction also
21361                 ELSE
21362                   YP2=(3-2*JS)*100D0
21363                 ENDIF
21364                 RL=ABS(YGL-YP1)+ABS(YGL-YP2)
21365               ELSEIF (MSTP(89).EQ.2) THEN
21366 C...Lambda ordering:
21367 C...Compute lambda measure for this insertion.
21368                 RL=1D0
21369                 DO 520 IST=1,6
21370                   ISTR(IST)=0
21371   520           CONTINUE
21372 C...If IP2 is junction, not caught below.
21373                 IF (JCP2.EQ.0) THEN
21374                   ITJU=MOD(K(IP2,4)/MSTU(5),MSTU(5))
21375 C...Anti-junction is colour endpoint et vv., always on JCG2.
21376                   ISTR(5-ITJU)=IP2
21377                 ENDIF
21378                 DO 530 I=MINT(84)+1,N
21379                   IF (K(I,1).LT.10) THEN
21380 C...The new string pieces
21381                     IF (MCT(I,1).EQ.JCG1) ISTR(1)=I
21382                     IF (MCT(I,2).EQ.JCG1) ISTR(2)=I
21383                     IF (MCT(I,1).EQ.JCG2) ISTR(3)=I
21384                     IF (MCT(I,2).EQ.JCG2) ISTR(4)=I
21385                   ENDIF
21386   530           CONTINUE
21387 C...Also identify junctions as string endpoints.
21388                 DO 540 I=MINT(84)+1,N
21389                   ICMO=MOD(K(I,4)/MSTU(5),MSTU(5))
21390                   IAMO=MOD(K(I,5)/MSTU(5),MSTU(5))
21391 C...Find partons adjacent to junctions.
21392                   IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG1.AND.ISTR(2)
21393      &                 .EQ.0) ISTR(2) = ICMO
21394                   IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG1.AND.ISTR(1)
21395      &                 .EQ.0) ISTR(1) = IAMO
21396                   IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG2.AND.ISTR(4)
21397      &                 .EQ.0) ISTR(4) = ICMO
21398                   IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG2.AND.ISTR(3)
21399      &                 .EQ.0) ISTR(3) = IAMO
21400   540           CONTINUE
21401 C...The old string piece
21402                 ISTR(5)=ISTR(1+2*MANTI)
21403                 ISTR(6)=ISTR(4-2*MANTI)
21404                 RL=MAX(1D0,FOUR(ISTR(1),ISTR(2)))*MAX(1D0,FOUR(ISTR(3)
21405      &               ,ISTR(4)))/MAX(1D0,FOUR(ISTR(5),ISTR(6)))
21406                 RL=LOG(RL)
21407               ENDIF
21408 C...Allow some breadth to speed things up.
21409               IF (ABS(1D0-RL/RLOPT).LT.0.05D0) THEN
21410                 NOPT=NOPT+1
21411               ELSEIF (RL.GT.RLOPT) THEN
21412                 GOTO 470
21413               ELSE
21414                 NOPT=1
21415                 RLOPT=RL
21416               ENDIF
21417 C...INSR(NOPT,1)=Gluon colour mother
21418 C...INSR(NOPT,2)=Gluon
21419 C...INSR(NOPT,3)=Gluon anticolour mother
21420               IF (NOPT.GT.1000) GOTO 470
21421               INSR(NOPT,1+2*MANTI)=IP2
21422               INSR(NOPT,2)=IGL
21423               INSR(NOPT,3-2*MANTI)=IP1
21424               IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 470
21425             ENDIF
21426             IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 460
21427           ENDIF
21428 C...Reset link test information.
21429           DO 550 I=MINT(84)+1,N
21430             K(I,4)=MOD(K(I,4),MSTU(5)**2)
21431             K(I,5)=MOD(K(I,5),MSTU(5)**2)
21432   550     CONTINUE
21433           IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 450
21434         ENDIF
21435 C...Now we have a list of best gluon insertions, none of which cause
21436 C...singlets to arise. If list is empty, try again a few times. Note:
21437 C...this should never happen if we have a meson with a gluon inserted
21438 C...in the beam remnant, since that breaks up the colour line.
21439         IF (NOPT.EQ.0) THEN
21440 C...Abandon BR-g-BR suppression for retries. This is not serious, it
21441 C...just means we happened to start with trying a bad sequence.
21442           PARP80=1D0
21443           IF (MRETRY.LE.10.AND.(ITJUNC(1).NE.0.OR.JST(1,3).EQ.0).AND
21444      &         .(ITJUNC(2).NE.0.OR.JST(2,3).EQ.0)) THEN
21445             MRETRY=MRETRY+1
21446             DO 590 JS=1,2
21447               IF (ITJUNC(JS).NE.0) THEN
21448                 JST(JS,1)=IV(JS,1)
21449                 JST(JS,2)=IV(JS,2)
21450                 JST(JS,3)=IV(JS,3)
21451 C...Reset valence quark parent pointers
21452                 DO 560 I=MINT(53)+1,N
21453                   IF (K(I,2).EQ.88.AND.K(I,3).EQ.JS) IJU=I
21454   560           CONTINUE
21455                 MANTI=ITJUNC(JS)-1
21456 C...Set (anti)colour mother = junction.
21457                 DO 570 JV=1,3
21458                   K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
21459      &                 +MSTU(5)*IJU
21460   570           CONTINUE
21461               ELSE
21462 C...Same for mesons. JST unchanged, so needn't be restored.
21463                 IQ=JST(JS,1)
21464                 IQBAR=JST(JS,2)
21465                 K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
21466                 K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
21467               ENDIF
21468 C...Also reset gluon parent pointers.
21469               NG(JS)=0
21470               DO 580 IM=1,NMI(JS)
21471                 I=IMI(JS,IM,1)
21472                 IF (K(I,2).EQ.21) THEN
21473                   K(I,4)=MOD(K(I,4),MSTU(5))
21474                   K(I,5)=MOD(K(I,5),MSTU(5))
21475                   NG(JS)=NG(JS)+1
21476                 ENDIF
21477   580         CONTINUE
21478   590       CONTINUE
21479 C...Reset colour tags
21480             DO 600 I=MINT(84)+1,N
21481               MCT(I,1)=MCO(I,1)
21482               MCT(I,2)=MCO(I,2)
21483   600       CONTINUE
21484             GOTO 400
21485           ELSE
21486             IF(NERRPR.LT.5) THEN
21487               NERRPR=NERRPR+1
21488               CALL PYLIST(4)
21489               CALL PYERRM(19,'(PYMIHK:) No physical colour flow found!')
21490               WRITE(MSTU(11),*) 'NG:', NG,'   MOUT:', MOUT(JS)
21491             ENDIF
21492 C...Kill event and start another.
21493             MINT(51)=1
21494             RETURN
21495           ENDIF
21496         ELSE
21497 C...Select between insertions, suppressing insertions wholly in the BR.
21498           IIN=PYR(0)*NOPT+1
21499   610     IIN=MOD(IIN,NOPT)+1
21500           IF (INSR(IIN,1).GT.MINT(53).AND.INSR(IIN,3).GT.MINT(53)
21501      &         .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) GOTO 610
21502         ENDIF
21503  
21504 C...Now we know which gluon to insert where. Colour tags in JCCO and
21505 C...colour connection information should be updated, NG(JS) should be
21506 C...counted down, and a new loop performed if there are still gluons
21507 C...left on any side.
21508         ICM=INSR(IIN,1)
21509         IACM=INSR(IIN,3)
21510         IGL=INSR(IIN,2)
21511 C...JCG : Original gluon colour tag
21512 C...JCAG: Original gluon anticolour tag.
21513 C...JCM : Original anticolour tag of gluon colour mother
21514 C...JACM: Original colour tag of gluon anticolour mother
21515         JCG=MCO(IGL,1)
21516         JCM=MCO(ICM,2)
21517         JACG=MCO(IGL,2)
21518         JACM=MCO(IACM,1)
21519  
21520         CALL PYMIHG(JACM,JACG,JCM,JCG)
21521         IF (MACCPT.EQ.0) THEN
21522           IF(NERRPR.LT.5) THEN
21523             NERRPR=NERRPR+1
21524             CALL PYLIST(4)
21525             CALL PYERRM(11,'(PYMIHK:) Unphysical colour flow!')
21526             WRITE(MSTU(11),*) 'attaching', IGL,' between', ICM, IACM
21527           ENDIF
21528 C...Kill event and start another.
21529           MINT(51)=1
21530           RETURN
21531         ELSE
21532 C...If everything went fine, store new JCCN in JCCO.
21533           NCC=NCC+1
21534           DO 620 ICC=1,NCC
21535             JCCO(ICC,1)=JCCN(ICC,1)
21536             JCCO(ICC,2)=JCCN(ICC,2)
21537   620     CONTINUE
21538         ENDIF
21539  
21540 C...One gluon attached is counted as equivalent to one end outside.
21541         MOUT(JS)=1
21542 C...Set IGL colour mother = ICM.
21543         K(IGL,4)=MOD(K(IGL,4),MSTU(5))+MSTU(5)*ICM
21544 C...Set ICM anticolour mother = IGL colour.
21545         IF (K(ICM,2).NE.88) THEN
21546           K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*IGL
21547         ELSE
21548 C...If ICM is junction, just update JST array for now.
21549           DO 630 MSJ=1,3
21550             IF (JST(JS,MSJ).EQ.IACM) JST(JS,MSJ)=IGL
21551   630     CONTINUE
21552         ENDIF
21553 C...Set IGL anticolour mother = IACM.
21554         K(IGL,5)=MOD(K(IGL,5),MSTU(5))+MSTU(5)*IACM
21555 C...Set IACM anticolour mother = IGL anticolour.
21556         IF (K(IACM,2).NE.88) THEN
21557           K(IACM,4)=MOD(K(IACM,4),MSTU(5))+MSTU(5)*IGL
21558         ELSE
21559 C...If IACM is junction, just update JST array for now.
21560           DO 640 MSJ=1,3
21561             IF (JST(JS,MSJ).EQ.ICM) JST(JS,MSJ)=IGL
21562   640     CONTINUE
21563         ENDIF
21564 C...Count down # unconnected gluons.
21565         NG(JS)=NG(JS)-1
21566       ENDIF
21567       IF (NG(1).GT.0.OR.NG(2).GT.0) GOTO 440
21568  
21569       DO 840 JS=1,2
21570 C...Collapse fictitious gluons.
21571         DO 670 IGL=MINT(53)+1,N
21572           IF (K(IGL,2).EQ.21.AND.K(IGL,3).EQ.MINT(83)+JS.AND.
21573      &         K(IGL,1).EQ.14) THEN
21574             ICM=K(IGL,4)/MSTU(5)
21575             IAM=K(IGL,5)/MSTU(5)
21576             ICD=MOD(K(IGL,4),MSTU(5))
21577             IAD=MOD(K(IGL,5),MSTU(5))
21578 C...Set gluon daughters pointing to gluon mothers
21579             K(IAD,5)=MOD(K(IAD,5),MSTU(5))+MSTU(5)*IAM
21580             K(ICD,4)=MOD(K(ICD,4),MSTU(5))+MSTU(5)*ICM
21581 C...Set gluon mothers pointing to gluon daughters.
21582             IF (K(ICM,2).NE.88) THEN
21583               K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*ICD
21584             ELSE
21585 C...Special case: mother=junction. Just update JST array for now.
21586               DO 650 MSJ=1,3
21587                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=ICD
21588   650         CONTINUE
21589             ENDIF
21590             IF (K(IAM,2).NE.88) THEN
21591               K(IAM,4)=MOD(K(IAM,4),MSTU(5))+MSTU(5)*IAD
21592             ELSE
21593               DO 660 MSJ=1,3
21594                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=IAD
21595   660         CONTINUE
21596             ENDIF
21597           ENDIF
21598   670   CONTINUE
21599  
21600 C...Erase collapsed gluons from NMI and IMI (but keep them in ER)
21601         IM=NMI(JS)+1
21602   680   IM=IM-1
21603         IF (IM.GT.MINT(31).AND.K(IMI(JS,IM,1),2).NE.21) GOTO 680
21604         IF (IM.GT.MINT(31)) THEN
21605           NMI(JS)=NMI(JS)-1
21606           DO 690 IMR=IM,NMI(JS)
21607             IMI(JS,IMR,1)=IMI(JS,IMR+1,1)
21608             IMI(JS,IMR,2)=IMI(JS,IMR+1,2)
21609   690     CONTINUE
21610           GOTO 680
21611         ENDIF
21612  
21613 C...Finally, connect junction.
21614         IF (ITJUNC(JS).NE.0) THEN
21615           DO 700 I=MINT(53)+1,N
21616             IF (K(I,2).EQ.88.AND.K(I,3).EQ.MINT(83)+JS) IJU=I
21617   700     CONTINUE
21618 C...NBRJQ counts # of jq, NBRVQ # of jv, inside BR.
21619           NBRJQ =0
21620           NBRVQ =0
21621           DO 720 MSJ=1,3
21622             IDQ(MSJ)=0
21623 C...Find jq with no glue inbetween inside beam remnant.
21624             IF (JST(JS,MSJ).GT.MINT(53).AND.IABS(K(JST(JS,MSJ),2)).LE.5)
21625      &           THEN
21626               NBRJQ=NBRJQ+1
21627 C...Set IDQ = -I if q non-valence and = +I if q valence.
21628               IDQ(NBRJQ)=-JST(JS,MSJ)
21629               DO 710 JV=1,3
21630                 IF (IV(JS,JV).EQ.JST(JS,MSJ)) THEN
21631                   IDQ(NBRJQ)=JST(JS,MSJ)
21632                   NBRVQ=NBRVQ+1
21633                 ENDIF
21634   710         CONTINUE
21635             ENDIF
21636             I12=MOD(MSJ+1,2)
21637             I45=5
21638             IF (MSJ.EQ.3) I45=4
21639             K(IJU,I45)=K(IJU,I45)+(MSTU(5)**I12)*JST(JS,MSJ)
21640   720     CONTINUE
21641  
21642 C...Check if diquark can be formed.
21643           IF ((MSTP(88).GE.0.AND.NBRVQ.GE.2).OR.(NBRJQ.GE.2.AND.MSTP(88)
21644      &         .GE.1)) THEN
21645 C...If there is less than 2 valence quarks connected to junction
21646 C...and MSTP(88)>1, use random non-valence quarks to fill up.
21647             IF (NBRVQ.LE.1) THEN
21648               NDIQ=NBRVQ
21649   730         JFLIP=NBRJQ*PYR(0)+1
21650               IF (IDQ(JFLIP).LT.0) THEN
21651                 IDQ(JFLIP)=-IDQ(JFLIP)
21652                 NDIQ=NDIQ+1
21653               ENDIF
21654               IF (NDIQ.LE.1) GOTO 730
21655             ENDIF
21656 C...Place selected quarks first in IDQ, ordered in flavour.
21657             DO 740 JDQ=1,3
21658               IF (IDQ(JDQ).LE.0) THEN
21659                 ITEMP1  = IDQ(JDQ)
21660                 IDQ(JDQ)= IDQ(3)
21661                 IDQ(3)  = -ITEMP1
21662                 IF (IABS(K(IDQ(1),2)).LT.IABS(K(IDQ(2),2))) THEN
21663                   ITEMP1  = IDQ(1)
21664                   IDQ(1)  = IDQ(2)
21665                   IDQ(2)  = ITEMP1
21666                 ENDIF
21667               ENDIF
21668   740       CONTINUE
21669 C...Choose diquark spin.
21670             IF (NBRVQ.EQ.2) THEN
21671 C...If the selected quarks are both valence, we may use SU(6) rules
21672 C...to figure out which spin the diquark has, by a subdivision of the
21673 C...original beam hadron into the selected diquark system plus a kicked
21674 C...out quark, IKO.
21675               JKO=6
21676               DO 760 JDQ=1,2
21677                 DO 750 JV=1,3
21678                   IF (IDQ(JDQ).EQ.IV(JS,JV)) JKO=JKO-JV
21679   750           CONTINUE
21680   760         CONTINUE
21681               IKO=IV(JS,JKO)
21682               CALL PYSPLI(MINT(10+JS),K(IKO,2),KFDUM,KFDQ)
21683             ELSE
21684 C...If one or more of the selected quarks are not valence, we cannot use
21685 C...SU(6) subdivisions of the original beam hadron. Instead, with the
21686 C...flavours of the diquark already selected, we assume for now
21687 C...50:50 spin-1:spin-0 (where spin-0 possible).
21688               KFDQ=1000*K(IDQ(1),2)+100*K(IDQ(2),2)
21689               IS=3
21690               IF (K(IDQ(1),2).NE.K(IDQ(2),2).AND.
21691      &           (1D0+3D0*PARJ(4))*PYR(0).LT.1D0) IS=1
21692               KFDQ=KFDQ+ISIGN(IS,KFDQ)
21693             ENDIF
21694  
21695 C...Collapse diquark-j-quark system to baryon, if allowed and possible.
21696 C...Note: third quark can per definition not also be valence,
21697 C...therefore we can only do this if we are allowed to use sea quarks.
21698   770       IF (IDQ(3).NE.0.AND.MSTP(88).GE.2) THEN
21699               NTRY=0
21700   780         NTRY=NTRY+1
21701               CALL PYKFDI(KFDQ,K(IABS(IDQ(3)),2),KFDUM,KFBAR)
21702               IF (KFBAR.EQ.0.AND.NTRY.LE.100) THEN
21703                 GOTO 780
21704               ELSEIF(NTRY.GT.100) THEN
21705 C...If no baryon can be found, give up and form diquark.
21706                 IDQ(3)=0
21707                 GOTO 770
21708               ELSE
21709 C...Replace junction by baryon.
21710                 K(IJU,1)=1
21711                 K(IJU,2)=KFBAR
21712                 K(IJU,3)=MINT(83)+JS
21713                 K(IJU,4)=0
21714                 K(IJU,5)=0
21715                 P(IJU,5)=PYMASS(KFBAR)
21716                 DO 790 MSJ=1,3
21717 C...Prepare removal of participating quarks from ER.
21718                   K(JST(JS,MSJ),1)=-1
21719   790           CONTINUE
21720               ENDIF
21721             ELSE
21722 C...If collapse to baryon not possible or not allowed, replace junction
21723 C...by diquark. This way, collapsed gluons that were pointing at the
21724 C...junction will now point (correctly) at diquark.
21725               MANTI=ITJUNC(JS)-1
21726               K(IJU,1)=3
21727               K(IJU,2)=KFDQ
21728               K(IJU,3)=MINT(83)+JS
21729               K(IJU,4)=0
21730               K(IJU,5)=0
21731               DO 800 MSJ=1,3
21732                 IP=JST(JS,MSJ)
21733                 IF (IP.NE.IDQ(1).AND.IP.NE.IDQ(2)) THEN
21734                   K(IJU,4+MANTI)=0
21735                   K(IJU,5-MANTI)=IP*MSTU(5)
21736                   K(IP,4+MANTI)=MOD(K(IP,4+MANTI),MSTU(5))+
21737      &                 MSTU(5)*IJU
21738                   MCT(IJU,2-MANTI)=MCT(IP,1+MANTI)
21739                 ELSE
21740 C...Prepare removal of participating quarks from ER.
21741                   K(IP,1)=-1
21742                 ENDIF
21743   800         CONTINUE
21744             ENDIF
21745  
21746 C...Update so ER pointers to collapsed quarks
21747 C...now go to collapsed object.
21748             DO 820 I=MINT(84)+1,N
21749               IF ((K(I,3).EQ.MINT(83)+JS.OR.K(I,3).EQ.MINT(83)+2+JS).AND
21750      &             .K(I,1).GT.0) THEN
21751                 DO 810 ISID=4,5
21752                   IMO=K(I,ISID)/MSTU(5)
21753                   IDA=MOD(K(I,ISID),MSTU(5))
21754                   IF (IMO.GT.0) THEN
21755                     IF (K(IMO,1).EQ.-1) IMO=IJU
21756                   ENDIF
21757                   IF (IDA.GT.0) THEN
21758                     IF (K(IDA,1).EQ.-1) IDA=IJU
21759                   ENDIF
21760                   K(I,ISID)=IDA+MSTU(5)*IMO
21761   810           CONTINUE
21762               ENDIF
21763   820       CONTINUE
21764           ENDIF
21765         ENDIF
21766  
21767 C...Finally, if beam remnant is empty, insert a gluon in beam remnant.
21768 C...(this only happens for baryons, where we want to force the gluon
21769 C...to sit next to the junction. Mesons handled above.)
21770         IF (NBRTOT(JS).EQ.0) THEN
21771           N=N+1
21772           DO 830 IX=1,5
21773             K(N,IX)=0
21774             P(N,IX)=0D0
21775             V(N,IX)=0D0
21776   830     CONTINUE
21777           IGL=N
21778           K(IGL,1)=3
21779           K(IGL,2)=21
21780           K(IGL,3)=MINT(83)+JS
21781           IF (ITJUNC(JS).NE.0) THEN
21782 C...Incoming baryons. Pick random leg in JST (NVSUM = 3 for baryons)
21783             JLEG=PYR(0)*NVSUM(JS)+1
21784             I1=JST(JS,JLEG)
21785             JST(JS,JLEG)=IGL
21786             JCT=MCT(I1,ITJUNC(JS))
21787             MCT(IGL,3-ITJUNC(JS))=JCT
21788             NCT=NCT+1
21789             MCT(IGL,ITJUNC(JS))=NCT
21790             MANTI=ITJUNC(JS)-1
21791           ELSE
21792 C...Meson. Should not happen.
21793             CALL PYERRM(19,'(PYMIHK:) Empty meson beam remnant')
21794             IF(NERRPR.LT.5) THEN
21795               WRITE(MSTU(11),*) 'This should not have been possible!'
21796               CALL PYLIST(4)
21797               NERRPR=NERRPR+1
21798             ENDIF
21799             MINT(51)=1
21800             RETURN
21801           ENDIF
21802           I2=MOD(K(I1,4+MANTI)/MSTU(5),MSTU(5))
21803           K(I1,4+MANTI)=MOD(K(I1,4+MANTI),MSTU(5))+MSTU(5)*IGL
21804           K(IGL,5-MANTI)=MOD(K(IGL,5-MANTI),MSTU(5))+MSTU(5)*I1
21805           K(IGL,4+MANTI)=MOD(K(IGL,4+MANTI),MSTU(5))+MSTU(5)*I2
21806           IF (K(I2,2).NE.88) THEN
21807             K(I2,5-MANTI)=MOD(K(I2,5-MANTI),MSTU(5))+MSTU(5)*IGL
21808           ELSE
21809             IF (MOD(K(I2,4),MSTU(5)).EQ.I1) THEN
21810               K(I2,4)=(K(I2,4)/MSTU(5))*MSTU(5)+IGL
21811             ELSEIF(MOD(K(I2,5)/MSTU(5),MSTU(5)).EQ.I1) THEN
21812               K(I2,5)=MOD(K(I2,5),MSTU(5))+MSTU(5)*IGL
21813             ELSE
21814               K(I2,5)=(K(I2,5)/MSTU(5))*MSTU(5)+IGL
21815             ENDIF
21816           ENDIF
21817         ENDIF
21818   840 CONTINUE
21819  
21820 C...Remove collapsed quarks and junctions from ER and update IMI.
21821       CALL PYEDIT(11)
21822  
21823 C...Also update beam remnant part of IMI.
21824       NMI(1)=MINT(31)
21825       NMI(2)=MINT(31)
21826       DO 850 I=MINT(53)+1,N
21827         IF (K(I,1).LE.0) GOTO 850
21828 C...Restore BR quark/diquark/baryon pointers in IMI.
21829         IF ((K(I,2).NE.21.OR.K(I,1).NE.14).AND.K(I,2).NE.88) THEN
21830           JS=K(I,3)-MINT(83)
21831           NMI(JS)=NMI(JS)+1
21832           IMI(JS,NMI(JS),1)=I
21833           IMI(JS,NMI(JS),2)=0
21834         ENDIF
21835   850 CONTINUE
21836  
21837 C...Restore companion information from collapsed gluons.
21838       DO 870 I=MINT(53)+1,N
21839         IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) THEN
21840           JS=K(I,3)-MINT(83)
21841           JCD=MOD(K(I,4),MSTU(5))
21842           JAD=MOD(K(I,5),MSTU(5))
21843           DO 860 IM=1,NMI(JS)
21844             IF (IMI(JS,IM,1).EQ.JCD) IMC=IM
21845             IF (IMI(JS,IM,1).EQ.JAD) IMA=IM
21846   860     CONTINUE
21847           IMI(JS,IMC,2)=IMI(JS,IMA,1)
21848           IMI(JS,IMA,2)=IMI(JS,IMC,1)
21849         ENDIF
21850   870 CONTINUE
21851  
21852 C...Renumber colour lines (since some have disappeared)
21853       JCT=0
21854       JCD=0
21855   880 JCT=JCT+1
21856       MFOUND=0
21857       I=MINT(84)
21858   890 I=I+1
21859       IF (I.EQ.N+1) THEN
21860         IF (MFOUND.EQ.0) JCD=JCD+1
21861       ELSEIF (MCT(I,1).EQ.JCT.AND.K(I,1).GE.1) THEN
21862         MCT(I,1)=JCT-JCD
21863         MFOUND=1
21864       ELSEIF (MCT(I,2).EQ.JCT.AND.K(I,1).GE.1) THEN
21865         MCT(I,2)=JCT-JCD
21866         MFOUND=1
21867       ENDIF
21868       IF (I.LE.N) GOTO 890
21869       IF (JCT.LT.NCT) GOTO 880
21870       NCT=JCT-JCD
21871  
21872 C...Reset hard interaction subsystems to their CM frames.
21873       IF (IBOOST.EQ.1) THEN
21874         DO 900 IM=1,MINT(31)
21875           BETA=-(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
21876           CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
21877   900   CONTINUE
21878 C...Zero beam remnant longitudinal momenta and energies
21879         DO 910 I=MINT(53)+1,N
21880           P(I,3)=0D0
21881           P(I,4)=0D0
21882   910   CONTINUE
21883       ELSE
21884         CALL PYERRM(9
21885      &       ,'(PYMIHK:) Inconsistent kinematics. Too many boosts.')
21886 C...Kill event and start another.
21887         MINT(51)=1
21888         RETURN
21889       ENDIF
21890  
21891  9999 RETURN
21892       END
21893 C*********************************************************************
21894  
21895 C...PYCTTR
21896 C...Adapted from PYPREP.
21897 C...Assigns LHA1 colour tags to coloured partons based on
21898 C...K(I,4) and K(I,5) colour connection record.
21899 C...KCS negative signifies that a previous tracing should be continued.
21900 C...(in case the tag to be continued is empty, the routine exits)
21901 C...Starts at I and ends at I or IEND.
21902 C...Special considerations for systems with junctions.
21903  
21904       SUBROUTINE PYCTTR(I,KCS,IEND)
21905 C...Double precision and integer declarations.
21906       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21907       INTEGER PYK,PYCHGE,PYCOMP
21908 C...Commonblocks.
21909       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
21910       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21911       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21912       COMMON/PYINT1/MINT(400),VINT(400)
21913 C...The common block of colour tags.
21914       COMMON/PYCTAG/NCT,MCT(4000,2)
21915       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/
21916       DATA NERRPR/0/
21917       SAVE NERRPR
21918  
21919 C...Skip if parton not existing or does not have KCS
21920       IF (K(I,1).LE.0) GOTO 120
21921       KC=PYCOMP(K(I,2))
21922       IF (KC.EQ.0) GOTO 120
21923       KQ=KCHG(KC,2)
21924       IF (KQ.EQ.0) GOTO 120
21925       IF (IABS(KQ).EQ.1.AND.KQ*(9-2*ABS(KCS)).NE.ISIGN(1,K(I,2))) 
21926      &    GOTO 120
21927  
21928       IF (KCS.GT.0) THEN
21929         NCT=NCT+1
21930 C...Set colour tag of first parton.
21931         MCT(I,KCS-3)=NCT
21932         NCS=NCT
21933       ELSE
21934         KCS=-KCS
21935         NCS=MCT(I,KCS-3)
21936         IF (NCS.EQ.0) GOTO 120
21937       ENDIF
21938  
21939       IA=I
21940       NSTP=0
21941   100 NSTP=NSTP+1
21942       IF(NSTP.GT.4*N) THEN
21943         CALL PYERRM(14,'(PYCTTR:) caught in infinite loop')
21944         GOTO 120
21945       ENDIF
21946  
21947 C...Finished if reached final-state triplet.
21948       IF(K(IA,1).EQ.3) THEN
21949         IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) GOTO 120
21950       ENDIF
21951  
21952 C...Also finished if reached junction.
21953       IF(K(IA,1).EQ.42) THEN
21954         GOTO 120
21955       ENDIF
21956  
21957 C...GOTO next parton in colour space.
21958   110 IB=IA
21959 C...If IB's KCS daughter not traced and exists, goto KCS daughter.
21960       IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
21961      &     .NE.0) THEN
21962         IA=MOD(K(IB,KCS),MSTU(5))
21963         K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
21964         MREV=0
21965       ELSE
21966 C...If KCS mother traced or KCS mother nonexistent, switch colour.
21967         IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
21968      &       MSTU(5)).EQ.0) THEN
21969           KCS=9-KCS
21970           NCT=NCT+1
21971           NCS=NCT
21972 C...Assign new colour tag on other side of old parton.
21973           MCT(IB,KCS-3)=NCT
21974         ENDIF
21975 C...Goto (new) KCS mother, set mother traced tag
21976         IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
21977         K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
21978         MREV=1
21979       ENDIF
21980       IF(IA.LE.0.OR.IA.GT.N) THEN
21981         CALL PYERRM(12,'(PYCTTR:) colour tag tracing failed')
21982         IF(NERRPR.LT.5) THEN
21983           write(*,*) 'began at ',I
21984           write(*,*) 'ended going from', IB, ' to', IA, '  KCS=',KCS,
21985      &        '  NCS=',NCS,'  MREV=',MREV
21986           CALL PYLIST(4)
21987           NERRPR=NERRPR+1
21988         ENDIF
21989         MINT(51)=1
21990         RETURN
21991       ENDIF
21992       IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
21993      &     MSTU(5)).EQ.IB) THEN
21994         IF(MREV.EQ.1) KCS=9-KCS
21995         IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
21996 C...Set KSC mother traced tag for IA
21997         K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
21998       ELSE
21999         IF(MREV.EQ.0) KCS=9-KCS
22000         IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
22001 C...Set KCS daughter traced tag for IA
22002         K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
22003       ENDIF
22004 C...Assign new colour tag
22005       MCT(IA,KCS-3)=NCS
22006       IF(IA.NE.I.AND.IA.NE.IEND) GOTO 100
22007  
22008   120 RETURN
22009       END
22010  
22011 *********************************************************************
22012  
22013 C...PYMIHG
22014 C...Collapse JCP1 and connecting tags to JCG1.
22015 C...Collapse JCP2 and connecting tags to JCG2.
22016  
22017       SUBROUTINE PYMIHG(JCP1,JCG1,JCP2,JCG2)
22018 C...Double precision and integer declarations.
22019       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22020       IMPLICIT INTEGER(I-N)
22021       INTEGER PYK,PYCHGE,PYCOMP
22022 C...The event record
22023       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22024 C...Parameters
22025       COMMON/PYINT1/MINT(400),VINT(400)
22026       SAVE /PYJETS/,/PYINT1/
22027 C...Local variables
22028       COMMON /PYCBLS/MCO(4000,2),NCC,JCCO(4000,2),JCCN(4000,2),MACCPT
22029       COMMON /PYCTAG/NCT,MCT(4000,2)
22030       SAVE /PYCBLS/,/PYCTAG/
22031  
22032 C...Break up JCP1<->JCP2 tag and create JCP1<->JCG1 and JCP2<->JCG2 tags
22033 C...in temporary tag collapse array JCCN. Only break up one connection.
22034       MACCPT=1
22035       MCLPS=0
22036       DO 100 ICC=1,NCC
22037         JCCN(ICC,1)=JCCO(ICC,1)
22038         JCCN(ICC,2)=JCCO(ICC,2)
22039 C...If there was a mother, it was previously connected to JCP1.
22040 C...Should be changed to JCP2.
22041         IF (MCLPS.EQ.0) THEN
22042           IF (JCCN(ICC,1).EQ.MAX(JCP1,JCP2).AND.JCCN(ICC,2).EQ.MIN(JCP1
22043      &         ,JCP2)) THEN
22044             JCCN(ICC,1)=MAX(JCG2,JCP2)
22045             JCCN(ICC,2)=MIN(JCG2,JCP2)
22046             MCLPS=1
22047           ENDIF
22048         ENDIF
22049   100 CONTINUE
22050 C...Also collapse colours on JCP1 side of JCG1
22051       IF (JCP1.NE.0) THEN
22052         JCCN(NCC+1,1)=MAX(JCP1,JCG1)
22053         JCCN(NCC+1,2)=MIN(JCP1,JCG1)
22054       ELSE
22055         JCCN(NCC+1,1)=MAX(JCP2,JCG2)
22056         JCCN(NCC+1,2)=MIN(JCP2,JCG2)
22057       ENDIF
22058  
22059 C...Initialize event record colour tag array MCT array to MCO.
22060        DO 110 I=MINT(84)+1,N
22061         MCT(I,1)=MCO(I,1)
22062         MCT(I,2)=MCO(I,2)
22063   110 CONTINUE
22064  
22065 C...Collapse tags:
22066 C...IS = 1 : All tags connecting to JCG1 on JCG1 side -> JCG1
22067 C...IS = 2 : All tags connecting to JCG2 on JCG2 side -> JCG2
22068 C...IS = 3 : All tags connecting to JCG1 on JCP1 side -> JCG1
22069 C...IS = 4 : All tags connecting to JCG2 on JCP2 side -> JCG2
22070       DO 160 IS=1,4
22071 C...Skip if junction.
22072         IF ((IS.EQ.4.AND.JCP2.EQ.0).OR.(IS.EQ.3).AND.JCP1.EQ.0) GOTO 160
22073 C...Define starting point in tag space.
22074 C...JCA = previous tag
22075 C...JCO = present tag
22076 C...JCN = new tag
22077         IF (MOD(IS,2).EQ.1) THEN
22078           JCO=JCP1
22079           JCN=JCG1
22080           JCALL=JCG1
22081         ELSEIF (MOD(IS,2).EQ.0) THEN
22082           JCO=JCP2
22083           JCN=JCG2
22084           JCALL=JCG2
22085         ENDIF
22086         ITRACE=0
22087   120   ITRACE=ITRACE+1
22088         IF (ITRACE.GT.1000) THEN
22089 C...NB: Proper error message should be defined here.
22090           CALL PYERRM(14
22091      &         ,'(PYMIHG:) Inf loop when collapsing colours.')
22092           MINT(57)=MINT(57)+1
22093           MINT(51)=1
22094           RETURN
22095         ENDIF
22096 C...Collapse all JCN tags to JCALL
22097         DO 130 I=MINT(84)+1,N
22098           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22099           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22100   130   CONTINUE
22101 C...IS = 1,2: first step forward. IS = 3,4: first step backward.
22102         IF (IS.GT.2.AND.(JCN.EQ.JCALL)) THEN
22103           JCA=JCN
22104           JCN=JCO
22105         ELSE
22106           JCA=JCO
22107           JCO=JCN
22108         ENDIF
22109 C...If possible, step from JCO to new tag JCN not equal to JCA.
22110         DO 140 ICC=1,NCC+1
22111           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN=
22112      &         JCCN(ICC,2)
22113           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN=
22114      &         JCCN(ICC,1)
22115   140   CONTINUE
22116 C...Iterate if new colour was arrived at, but don't go in circles.
22117         IF (JCN.NE.JCO.AND.JCN.NE.JCALL) GOTO 120
22118 C...Change all JCN tags in MCO to JCALL in MCT.
22119         DO 150 I=MINT(84)+1,N
22120           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22121           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22122 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22123           IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22124      &         .NE.0) MACCPT=0
22125   150   CONTINUE
22126   160 CONTINUE
22127  
22128       DO 200 JCL=NCT,1,-1
22129         JCA=0
22130         JCN=JCL
22131   170   JCO=JCN
22132         DO 180 ICC=1,NCC+1
22133           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN
22134      &         =JCCN(ICC,2)
22135           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN
22136      &         =JCCN(ICC,1)
22137   180   CONTINUE
22138 C...Overpaint all JCN with JCL
22139         IF (JCN.NE.JCO.AND.JCN.NE.JCL) THEN
22140           DO 190 I=MINT(84)+1,N
22141             IF (MCT(I,1).EQ.JCN) MCT(I,1)=JCL
22142             IF (MCT(I,2).EQ.JCN) MCT(I,2)=JCL
22143 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22144             IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22145      &           .NE.0) MACCPT=0
22146   190     CONTINUE
22147           JCA=JCO
22148           GOTO 170
22149         ENDIF
22150   200 CONTINUE
22151  
22152       RETURN
22153       END
22154  
22155 C*********************************************************************
22156  
22157 C...PYMIRM
22158 C...Picks primordial kT and shares longitudinal momentum among
22159 C...beam remnants.
22160  
22161       SUBROUTINE PYMIRM
22162  
22163 C...Double precision and integer declarations.
22164       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22165       IMPLICIT INTEGER(I-N)
22166       INTEGER PYK,PYCHGE,PYCOMP
22167 C...The event record
22168       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22169 C...Parameters
22170       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22171       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22172       COMMON/PYINT1/MINT(400),VINT(400)
22173 C...The common block of colour tags.
22174       COMMON/PYCTAG/NCT,MCT(4000,2)
22175 C...The common block of dangling ends
22176       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
22177      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
22178      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
22179       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINTM/,/PYCTAG/
22180 C...Local variables
22181       DIMENSION W(0:2,0:2),VB(3),NNXT(2),IVALQ(2),ICOMQ(2)
22182 C...W(I,J)|  J=0    |   1   |   2   |
22183 C...  I=0 | Wrem**2 |  W+   |  W-   |
22184 C...    1 | W1**2   |  W1+  |  W1-  |
22185 C...    2 | W2**2   |  W2+  |  W2-  |
22186 C...4-product
22187       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)
22188 C...Tentative parametrization of <kT> as a function of Q.
22189       SIGPT(Q)=MAX(PARJ(21),2.1D0*Q/(7D0+Q))
22190 C      SIGPT(Q)=MAX(0.36D0,4D0*SQRT(Q)/(10D0+SQRT(Q))
22191 C      SIGPT(Q)=MAX(PARJ(21),3D0*SQRT(Q)/(5D0+SQRT(Q))
22192       GETPT(Q,SIGMA)=MIN(SIGMA*SQRT(-LOG(PYR(0))),PARP(93))
22193 C...Lambda kinematic function.
22194       FLAM(A,B,C)=A**2+B**2+C**2-2D0*(A*B+B*C+C*A)
22195  
22196 C...Beginning and end of beam remnant partons
22197       NOUT=MINT(53)
22198       ISUB=MINT(1)
22199  
22200 C...Loopback point if kinematic choices gives impossible configuration.
22201       NTRY=0
22202   100 NTRY=NTRY+1
22203  
22204 C...Assign kT values on each side separately.
22205       DO 180 JS=1,2
22206  
22207 C...First zero all kT on this side. Skip if no kT to generate.
22208         DO 110 IM=1,NMI(JS)
22209           P(IMI(JS,IM,1),1)=0D0
22210           P(IMI(JS,IM,1),2)=0D0
22211   110   CONTINUE
22212         IF(MSTP(91).LE.0) GOTO 180
22213  
22214 C...Now assign kT to each (non-collapsed) parton in IMI.
22215         DO 170 IM=1,NMI(JS)
22216           I=IMI(JS,IM,1)
22217 C...Select kT according to truncated gaussian or 1/kt6 tails.
22218 C...For first interaction, either use rms width = PARP(91) or fitted.
22219           IF (IM.EQ.1) THEN
22220             SIGMA=PARP(91)
22221             IF (MSTP(91).GE.11.AND.MSTP(91).LE.20) THEN
22222               Q=SQRT(PT2MI(IM))
22223               SIGMA=SIGPT(Q)
22224             ENDIF
22225           ELSE
22226 C...For subsequent interactions and BR partons use fragmentation width.
22227             SIGMA=PARJ(21)
22228           ENDIF
22229           PHI=PARU(2)*PYR(0)
22230           PT=0D0
22231           IF(NTRY.LE.100) THEN
22232  111        IF (MSTP(91).EQ.1.OR.MSTP(91).EQ.11) THEN
22233               PT=GETPT(Q,SIGMA)
22234               PTX=PT*COS(PHI)
22235               PTY=PT*SIN(PHI)
22236             ELSEIF (MSTP(91).EQ.2) THEN
22237               CALL PYERRM(11,'(PYMIRM:) Sorry, MSTP(91)=2 not '//
22238      &          'available, using MSTP(91)=1.')
22239               CALL PYGIVE('MSTP(91)=1')
22240               GOTO 111
22241             ELSEIF(MSTP(91).EQ.3.OR.MSTP(91).EQ.13) THEN
22242 C...Use distribution with kt**6 tails, rms width = PARP(91).
22243               EPS=SQRT(3D0/2D0)*SIGMA
22244 C...Generate PTX and PTY separately, each propto 1/KT**6
22245               DO 119 IXY=1,2
22246 C...Decide which interval to try
22247  112            P12=1D0/(1D0+27D0/40D0*SIGMA**6/EPS**6)
22248                 IF (PYR(0).LT.P12) THEN
22249 C...Use flat approx with accept/reject up to EPS.
22250                   PT=PYR(0)*EPS
22251                   WT=(3D0/2D0*SIGMA**2/(PT**2+3D0/2D0*SIGMA**2))**3
22252                   IF (PYR(0).GT.WT) GOTO 112
22253                 ELSE
22254 C...Above EPS, use 1/kt**6 approx with accept/reject.
22255                   PT=EPS/(PYR(0)**(1D0/5D0))
22256                   WT=PT**6/(PT**2+3D0/2D0*SIGMA**2)**3
22257                   IF (PYR(0).GT.WT) GOTO 112
22258                 ENDIF
22259                 MSIGN=1
22260                 IF (PYR(0).GT.0.5D0) MSIGN=-1
22261                 IF (IXY.EQ.1) PTX=MSIGN*PT
22262                 IF (IXY.EQ.2) PTY=MSIGN*PT
22263  119          CONTINUE
22264             ELSEIF (MSTP(91).EQ.4.OR.MSTP(91).EQ.14) THEN
22265               PTX=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22266               PTY=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22267             ENDIF
22268 C...Adjust final PT. Impose upper cutoff, or zero for soft evts.
22269             PT=SQRT(PTX**2+PTY**2)
22270             WT=1D0
22271             IF (PT.GT.PARP(93)) WT=SQRT(PARP(93)/PT)
22272             IF(ISUB.EQ.95.AND.IM.EQ.1) WT=0D0
22273             PTX=PTX*WT
22274             PTY=PTY*WT
22275             PT=SQRT(PTX**2+PTY**2)
22276           ENDIF
22277  
22278           P(I,1)=P(I,1)+PTX
22279           P(I,2)=P(I,2)+PTY
22280  
22281 C...Compensation kicks, with varying degree of local anticorrelations.
22282           MCORR=MSTP(90)
22283           IF (MCORR.EQ.0.OR.ISUB.EQ.95) THEN
22284             PTCX=-PTX/(NMI(JS)-1)
22285             PTCY=-PTY/(NMI(JS)-1)
22286             IF(ISUB.EQ.95) THEN
22287               PTCX=-PTX/(NMI(JS)-2)
22288               PTCY=-PTY/(NMI(JS)-2)
22289             ENDIF
22290             DO 120 IMC=1,NMI(JS)
22291               IF (IMC.EQ.IM) GOTO 120
22292               IF(ISUB.EQ.95.AND.IMC.EQ.1) GOTO 120
22293               P(IMI(JS,IMC,1),1)=P(IMI(JS,IMC,1),1)+PTCX
22294               P(IMI(JS,IMC,1),2)=P(IMI(JS,IMC,1),2)+PTCY
22295   120       CONTINUE
22296           ELSEIF (MCORR.GE.1) THEN
22297             DO 140 MSID=4,5
22298               NNXT(MSID-3)=0
22299 C...Count up # of neighbours on either side
22300               IMO=I
22301   130         IMO=K(IMO,MSID)/MSTU(5)
22302               IF (IMO.EQ.0) GOTO 140
22303               NNXT(MSID-3)=NNXT(MSID-3)+1
22304 C...Stop at quarks and junctions
22305               IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 130
22306   140       CONTINUE
22307 C...How should compensation be shared when unequal numbers on the
22308 C...two sides? 50/50 regardless? N1:N2? Assume latter for now.
22309             NSUM=NNXT(1)+NNXT(2)
22310             T1=0
22311             DO 160 MSID=4,5
22312 C...Total momentum to be compensated on this side
22313               IF (NNXT(MSID-3).EQ.0) GOTO 160
22314               PTCX=-(NNXT(MSID-3)*PTX)/NSUM
22315               PTCY=-(NNXT(MSID-3)*PTY)/NSUM
22316 C...RS: compensation supression factor as we go out from parton I.
22317 C...Hardcoded behaviour RS=0.5, i.e. 1/2**n falloff,
22318 C...since (for now) MSTP(90) provides enough variability.
22319               RS=0.5D0
22320               FAC=(1D0-RS)/(RS*(1-RS**NNXT(MSID-3)))
22321               IMO=I
22322   150         IDA=IMO
22323               IMO=K(IMO,MSID)/MSTU(5)
22324               IF (IMO.EQ.0) GOTO 160
22325               FAC=FAC*RS
22326               IF (K(IMO,2).NE.88) THEN
22327                 P(IMO,1)=P(IMO,1)+FAC*PTCX
22328                 P(IMO,2)=P(IMO,2)+FAC*PTCY
22329                 IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 150
22330 C...If we reach junction, divide out the kT that would have been
22331 C...assigned to the junction on each of its other legs.
22332               ELSE
22333                 L1=MOD(K(IMO,4),MSTU(5))
22334                 L2=K(IMO,5)/MSTU(5)
22335                 L3=MOD(K(IMO,5),MSTU(5))
22336                 P(L1,1)=P(L1,1)+0.5D0*FAC*PTCX
22337                 P(L1,2)=P(L1,2)+0.5D0*FAC*PTCY
22338                 P(L2,1)=P(L2,1)+0.5D0*FAC*PTCX
22339                 P(L2,2)=P(L2,2)+0.5D0*FAC*PTCY
22340                 P(L3,1)=P(L3,1)+0.5D0*FAC*PTCX
22341                 P(L3,2)=P(L3,2)+0.5D0*FAC*PTCY
22342                 P(IDA,1)=P(IDA,1)-0.5D0*FAC*PTCX
22343                 P(IDA,2)=P(IDA,2)-0.5D0*FAC*PTCY
22344               ENDIF
22345  
22346   160       CONTINUE
22347           ENDIF
22348   170   CONTINUE
22349 C...End assignment of kT values to initiators and remnants.
22350   180 CONTINUE
22351  
22352 C...Check kinematics constraints for non-BR partons.
22353       DO 190 IM=1,MINT(31)
22354         SHAT=XMI(1,IM)*XMI(2,IM)*VINT(2)
22355         PT1=SQRT(P(IMI(1,IM,1),1)**2+P(IMI(1,IM,1),2)**2)
22356         PT2=SQRT(P(IMI(2,IM,1),1)**2+P(IMI(2,IM,1),2)**2)
22357         PT1PT2=P(IMI(1,IM,1),1)*P(IMI(2,IM,1),1)
22358      &        +P(IMI(1,IM,1),2)*P(IMI(2,IM,1),2)
22359         IF (SHAT.LT.2D0*(PT1*PT2-PT1PT2).AND.NTRY.LE.100) THEN
22360           IF(NTRY.GE.100) THEN
22361 C...Kill this event and start another.
22362             CALL PYERRM(11,
22363      &           '(PYMIRM:) No consistent (x,kT) sets found')
22364             MINT(51)=1
22365             RETURN
22366           ENDIF
22367           GOTO 100
22368         ENDIF
22369   190 CONTINUE
22370  
22371 C...Calculate W+ and W- available for combined remnant system.
22372       W(0,1)=VINT(1)
22373       W(0,2)=VINT(1)
22374       DO 200 IM=1,MINT(31)
22375         PT2 = (P(IMI(1,IM,1),1)+P(IMI(2,IM,1),1))**2
22376      &       +(P(IMI(1,IM,1),2)+P(IMI(2,IM,1),2))**2
22377         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+PT2
22378         W(0,1)=W(0,1)-SQRT(XMI(1,IM)/XMI(2,IM)*ST)
22379         W(0,2)=W(0,2)-SQRT(XMI(2,IM)/XMI(1,IM)*ST)
22380   200 CONTINUE
22381 C...Also store Wrem**2 = W+ * W-
22382       W(0,0)=W(0,1)*W(0,2)
22383  
22384       IF (W(0,0).LT.0D0.AND.NTRY.LE.100) THEN
22385           IF(NTRY.GE.100) THEN
22386 C...Kill this event and start another.
22387             CALL PYERRM(11,
22388      &    '(PYMIRM:) Negative beam remnant mass squared unavoidable')
22389             MINT(51)=1
22390             RETURN
22391           ENDIF
22392           GOTO 100
22393       ENDIF
22394  
22395 C...Assign unscaled x values to partons/hadrons in each of the
22396 C...beam remnants and calculate unscaled W+ and W- from them.
22397       NTRYX=0
22398   210 NTRYX=NTRYX+1
22399       DO 280 JS=1,2
22400         W(JS,1)=0D0
22401         W(JS,2)=0D0
22402         DO 270 IM=MINT(31)+1,NMI(JS)
22403           I=IMI(JS,IM,1)
22404           KF=K(I,2)
22405           KFA=IABS(KF)
22406           ICOMP=IMI(JS,IM,2)
22407  
22408 C...Skip collapsed gluons and junctions. Reset.
22409           IF (KFA.EQ.21.AND.K(I,1).EQ.14) GOTO 270
22410           IF (KFA.EQ.88) GOTO 270
22411           X=0D0
22412           IVALQ(1)=0
22413           IVALQ(2)=0
22414           ICOMQ(1)=0
22415           ICOMQ(2)=0
22416  
22417 C...If gluon then only beam remnant, so takes all.
22418           IF(KFA.EQ.21) THEN
22419             X=1D0
22420 C...If valence quark then use parametrized valence distribution.
22421           ELSEIF(KFA.LE.6.AND.ICOMP.EQ.0) THEN
22422             IVALQ(1)=KF
22423 C...If companion quark then derive from companion x.
22424           ELSEIF(KFA.LE.6) THEN
22425             ICOMQ(1)=ICOMP
22426 C...If valence diquark then use two parametrized valence distributions.
22427           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22428      &    ICOMP.EQ.0) THEN
22429             IVALQ(1)=ISIGN(KFA/1000,KF)
22430             IVALQ(2)=ISIGN(MOD(KFA/100,10),KF)
22431 C...If valence+sea diquark then combine valence + companion choices.
22432           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22433      &    ICOMP.LT.MSTU(5)) THEN
22434             IF(KFA/1000.EQ.IABS(K(ICOMP,2))) THEN
22435               IVALQ(1)=ISIGN(MOD(KFA/100,10),KF)
22436             ELSE
22437               IVALQ(1)=ISIGN(KFA/1000,KF)
22438             ENDIF
22439             ICOMQ(1)=ICOMP
22440 C...Extra code: workaround for diquark made out of two sea
22441 C...quarks, but where not (yet) ICOMP > MSTU(5).
22442             DO 220 IM1=1,MINT(31)
22443               IF(IMI(JS,IM1,2).EQ.I.AND.IMI(JS,IM1,1).NE.ICOMP) THEN
22444                 ICOMQ(2)=IMI(JS,IM1,1)
22445                 IVALQ(1)=0
22446               ENDIF
22447   220       CONTINUE
22448 C...If sea diquark then sum of two derived from companion x.
22449           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0) THEN
22450              ICOMQ(1)=MOD(ICOMP,MSTU(5))
22451              ICOMQ(2)=ICOMP/MSTU(5)
22452 C...If meson or baryon then use fragmentation function.
22453 C...Somewhat arbitrary split into old and new flavour, but OK normally.
22454           ELSE
22455             KFL3=MOD(KFA/10,10)
22456             IF(MOD(KFA/1000,10).EQ.0) THEN
22457               KFL1=MOD(KFA/100,10)
22458             ELSE
22459               KFL1=MOD(KFA,10000)-10*KFL3-1
22460               IF(MOD(KFA/1000,10).EQ.MOD(KFA/100,10).AND.
22461      &        MOD(KFA,10).EQ.2) KFL1=KFL1+2
22462             ENDIF
22463             PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
22464             CALL PYZDIS(KFL1,KFL3,PR,X)
22465           ENDIF
22466  
22467           DO 260 IQ=1,2
22468 C...Calculation of x of valence quark: assume form (1-x)^a/sqrt(x),
22469 C...where a=3.5 for u in proton, =2 for d in proton and =0.8 for meson.
22470 C...In other baryons combine u and d from proton appropriately.
22471             IF(IVALQ(IQ).NE.0) THEN
22472               NVAL=0
22473               IF(KFIVAL(JS,1).EQ.IVALQ(IQ)) NVAL=NVAL+1
22474               IF(KFIVAL(JS,2).EQ.IVALQ(IQ)) NVAL=NVAL+1
22475               IF(KFIVAL(JS,3).EQ.IVALQ(IQ)) NVAL=NVAL+1
22476 C...Meson.
22477               IF(KFIVAL(JS,3).EQ.0) THEN
22478                 MDU=0
22479 C...Baryon with three identical quarks: mix u and d forms.
22480               ELSEIF(NVAL.EQ.3) THEN
22481                 MDU=INT(PYR(0)+5D0/3D0)
22482 C...Baryon, one of two identical quarks: u form.
22483               ELSEIF(NVAL.EQ.2) THEN
22484                 MDU=2
22485 C...Baryon with two identical quarks, but not the one picked: d form.
22486               ELSEIF(KFIVAL(JS,1).EQ.KFIVAL(JS,2).OR.KFIVAL(JS,2).EQ.
22487      &        KFIVAL(JS,3).OR.KFIVAL(JS,1).EQ.KFIVAL(JS,3)) THEN
22488                 MDU=1
22489 C...Baryon with three nonidentical quarks: mix u and d forms.
22490               ELSE
22491                 MDU=INT(PYR(0)+5D0/3D0)
22492               ENDIF
22493               XPOW=0.8D0
22494               IF(MDU.EQ.1) XPOW=3.5D0
22495               IF(MDU.EQ.2) XPOW=2D0
22496   230         XX=PYR(0)**2
22497               IF((1D0-XX)**XPOW.LT.PYR(0)) GOTO 230
22498               X=X+XX
22499             ENDIF
22500  
22501 C...Calculation of x of companion quark.
22502             IF(ICOMQ(IQ).NE.0) THEN
22503               XCOMP=1D-4
22504               DO 240 IM1=1,MINT(31)
22505                 IF(IMI(JS,IM1,1).EQ.ICOMQ(IQ)) XCOMP=XMI(JS,IM1)
22506   240         CONTINUE
22507               NPOW=MAX(0,MIN(4,MSTP(87)))
22508   250         XX=XCOMP*(1D0/(1D0-PYR(0)*(1D0-XCOMP))-1D0)
22509               CORR=((1D0-XCOMP-XX)/(1D0-XCOMP))**NPOW*
22510      &        (XCOMP**2+XX**2)/(XCOMP+XX)**2
22511               IF(CORR.LT.PYR(0)) GOTO 250
22512               X=X+XX
22513             ENDIF
22514   260     CONTINUE
22515  
22516 C...Optionally enchance x of composite systems (e.g. diquarks)
22517           IF (KFA.GT.100) X=PARP(79)*X
22518  
22519 C...Store x. Also calculate light cone energies of each system.
22520           XMI(JS,IM)=X
22521           W(JS,JS)=W(JS,JS)+X
22522           W(JS,3-JS)=W(JS,3-JS)+(P(I,5)**2+P(I,1)**2+P(I,2)**2)/X
22523   270   CONTINUE
22524         W(JS,JS)=W(JS,JS)*W(0,JS)
22525         W(JS,3-JS)=W(JS,3-JS)/W(0,JS)
22526         W(JS,0)=W(JS,1)*W(JS,2)
22527   280 CONTINUE
22528  
22529 C...Check W1 W2 < Wrem (can be done before rescaling, since W
22530 C...insensitive to global rescalings of the BR x values).
22531       IF (SQRT(W(1,0))+SQRT(W(2,0)).GT.SQRT(W(0,0)).AND.NTRYX.LE.100)
22532      &     THEN
22533         GOTO 210
22534       ELSEIF (NTRYX.GT.100.AND.NTRY.LE.100) THEN
22535         GOTO 100
22536       ELSEIF (NTRYX.GT.100) THEN
22537         CALL PYERRM(11,'(PYMIRM:) No consistent (x,kT) sets found')
22538         MINT(57)=MINT(57)+1
22539         MINT(51)=1
22540         RETURN
22541       ENDIF
22542  
22543 C...Compute x rescaling factors
22544       COMTRM=W(0,0)+SQRT(FLAM(W(0,0),W(1,0),W(2,0)))
22545       R1=(COMTRM+W(1,0)-W(2,0))/(2D0*W(1,1)*W(0,2))
22546       R2=(COMTRM+W(2,0)-W(1,0))/(2D0*W(2,2)*W(0,1))
22547  
22548       IF (R1.LT.0.OR.R2.LT.0) THEN
22549         CALL PYERRM(19,'(PYMIRM:) negative rescaling factors !')
22550         MINT(57)=MINT(57)+1
22551         MINT(51)=1
22552       ENDIF
22553  
22554 C...Rescale W(1,*) and W(2,*) (not really necessary, but consistent).
22555       W(1,1)=W(1,1)*R1
22556       W(1,2)=W(1,2)/R1
22557       W(2,1)=W(2,1)/R2
22558       W(2,2)=W(2,2)*R2
22559  
22560 C...Rescale BR x values.
22561       DO 290 IM=MINT(31)+1,MAX(NMI(1),NMI(2))
22562         XMI(1,IM)=XMI(1,IM)*R1
22563         XMI(2,IM)=XMI(2,IM)*R2
22564   290 CONTINUE
22565  
22566 C...Now we have a consistent set of x and kT values.
22567 C...First set up the initiators and their daughters correctly.
22568       DO 300 IM=1,MINT(31)
22569         I1=IMI(1,IM,1)
22570         I2=IMI(2,IM,1)
22571         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+(P(I1,1)+P(I2,1))**2+
22572      &       (P(I1,2)+P(I2,2))**2
22573         PT12=P(I1,1)**2+P(I1,2)**2
22574         PT22=P(I2,1)**2+P(I2,2)**2
22575 C...p_z
22576         P(I1,3)=SQRT(FLAM(ST,PT12,PT22)/(4D0*ST))
22577         P(I2,3)=-P(I1,3)
22578 C...Energies (masses should be zero at this stage)
22579         P(I1,4)=SQRT(PT12+P(I1,3)**2)
22580         P(I2,4)=SQRT(PT22+P(I2,3)**2)
22581  
22582 C...Transverse 12 system initiator velocity:
22583         VB(1)=(P(I1,1)+P(I2,1))/SQRT(ST)
22584         VB(2)=(P(I1,2)+P(I2,2))/SQRT(ST)
22585 C...Boost to overall initiator system rest frame
22586         CALL PYROBO(I1,I1,0D0,0D0,-VB(1),-VB(2),0D0)
22587         CALL PYROBO(I2,I2,0D0,0D0,-VB(1),-VB(2),0D0)
22588
22589 C...Compute phi,theta coordinates of I1 and rotate z axis.
22590         PHI=PYANGL(P(I1,1),P(I1,2))
22591         THE=PYANGL(P(I1,3),SQRT(P(I1,1)**2+P(I1,2)**2))
22592         IMIN=IMISEP(IM-1)+1
22593 C...(include documentation lines if MI = 1)
22594         IF (IM.EQ.1) IMIN=MINT(83)+5
22595         IMAX=IMISEP(IM)
22596 C...Rotate entire system in phi
22597         CALL PYROBO(IMIN,IMAX,0D0,-PHI,0D0,0D0,0D0)
22598 C...Only rotate 12 system in theta
22599         CALL PYROBO(I1,I1,-THE,0D0,0D0,0D0,0D0)
22600         CALL PYROBO(I2,I2,-THE,0D0,0D0,0D0,0D0)
22601
22602 C...Now boost entire system back to LAB
22603         VB(3)=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
22604         CALL PYROBO(IMIN,IMAX,THE,PHI,VB(1),VB(2),0D0)
22605         CALL PYROBO(IMIN,IMAX,0D0,0D0,0D0,0D0,VB(3))
22606
22607   300 CONTINUE
22608  
22609  
22610 C...For the beam remnant partons/hadrons, we only need to set pz and E.
22611       DO 320 JS=1,2
22612         DO 310 IM=MINT(31)+1,NMI(JS)
22613           I=IMI(JS,IM,1)
22614 C...Skip collapsed gluons and junctions.
22615           IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) GOTO 310
22616           IF (KFA.EQ.88) GOTO 310
22617           RMT2=P(I,5)**2+P(I,1)**2+P(I,2)**2
22618           P(I,4)=0.5D0*(XMI(JS,IM)*W(0,JS)+RMT2/(XMI(JS,IM)*W(0,JS)))
22619           P(I,3)=0.5D0*(XMI(JS,IM)*W(0,JS)-RMT2/(XMI(JS,IM)*W(0,JS)))
22620           IF (JS.EQ.2) P(I,3)=-P(I,3)
22621   310   CONTINUE
22622   320 CONTINUE
22623  
22624  
22625 C...Documentation lines
22626       DO 340 JS=1,2
22627         IN=MINT(83)+JS+2
22628         IO=IMI(JS,1,1)
22629         K(IN,1)=21
22630         K(IN,2)=K(IO,2)
22631         K(IN,3)=MINT(83)+JS
22632         K(IN,4)=0
22633         K(IN,5)=0
22634         DO 330 J=1,5
22635           P(IN,J)=P(IO,J)
22636           V(IN,J)=V(IO,J)
22637   330   CONTINUE
22638         MCT(IN,1)=MCT(IO,1)
22639         MCT(IN,2)=MCT(IO,2)
22640   340 CONTINUE
22641  
22642 C...Final state colour reconnections.
22643       IF (MSTP(95).NE.1.OR.MINT(31).LE.1) GOTO 380
22644  
22645 C...Number of colour tags for which a recoupling will be tried.
22646       NTOT=NCT
22647 C...Number of recouplings to try
22648       MINT(34)=0
22649       NRECP=0
22650       NITER=0
22651   350 NRECP=MINT(34)
22652       NITER=NITER+1
22653       IITER=0
22654   360 IITER=IITER+1
22655       IF (IITER.LE.PARP(78)*NTOT) THEN
22656 C...Select two colour tags at random
22657 C...NB: jj strings do not have colour tags assigned to them,
22658 C...thus they are as yet not affected by anything done here.
22659         JCT=PYR(0)*NCT+1
22660         KCT=MOD(INT(JCT+PYR(0)*NCT),NCT)+1
22661         IJ1=0
22662         IJ2=0
22663         IK1=0
22664         IK2=0
22665 C...Find final state partons with this (anti)colour
22666         DO 370 I=MINT(84)+1,N
22667           IF (K(I,1).EQ.3) THEN
22668             IF (MCT(I,1).EQ.JCT) IJ1=I
22669             IF (MCT(I,2).EQ.JCT) IJ2=I
22670             IF (MCT(I,1).EQ.KCT) IK1=I
22671             IF (MCT(I,2).EQ.KCT) IK2=I
22672           ENDIF
22673   370   CONTINUE
22674 C...Only consider recouplings not involving junctions for now.
22675         IF (IJ1.EQ.0.OR.IJ2.EQ.0.OR.IK1.EQ.0.OR.IK2.EQ.0) GOTO 360
22676  
22677         RLO=2D0*FOUR(IJ1,IJ2)*2D0*FOUR(IK1,IK2)
22678         RLN=2D0*FOUR(IJ1,IK2)*2D0*FOUR(IK1,IJ2)
22679         IF (RLN.LT.RLO.AND.MCT(IJ2,1).NE.KCT.AND.MCT(IK2,1).NE.JCT) THEN
22680           MCT(IJ2,2)=KCT
22681           MCT(IK2,2)=JCT
22682 C...Count up number of reconnections
22683           MINT(34)=MINT(34)+1
22684         ENDIF
22685         IF (MINT(34).LE.1000) THEN
22686           GOTO 360
22687         ELSE
22688           CALL PYERRM(4,'(PYMIRM:) caught in infinite loop')
22689           GOTO 380
22690         ENDIF
22691       ENDIF
22692       IF (NRECP.LT.MINT(34)) GOTO 350
22693  
22694 C...Signal PYPREP to use /PYCTAG/ information rather than K(I,KCS).
22695   380 MINT(33)=1
22696  
22697       RETURN
22698       END
22699   
22700 C*********************************************************************
22701  
22702 C...PYFSCR
22703 C...Performs colour annealing.
22704 C...MSTP(95) : CR Type
22705 C...         = 1  : old cut-and-paste reconnections, handled in PYMIHK
22706 C...         = 2  : Type I(no gg loops); hadron-hadron only
22707 C...         = 3  : Type I(no gg loops); all beams
22708 C...         = 4  : Type II(gg loops)  ; hadron-hadron only
22709 C...         = 5  : Type II(gg loops)  ; all beams
22710 C...         = 6  : Type S             ; hadron-hadron only
22711 C...         = 7  : Type S             ; all beams
22712 C...Types I and II are described in Sandhoff+Skands, in hep-ph/0604120.
22713 C...Type S is driven by starting only from free triplets, not octets.
22714 C...A string piece remains unchanged with probability
22715 C...    PKEEP = (1-PARP(78))**N
22716 C...This scaling corresponds to each string piece having to go through
22717 C...N other ones, each with probability PARP(78) for reconnection, where
22718 C...N is here chosen simply as the number of multiple interactions,
22719 C...for a rough scaling with the general level of activity.
22720  
22721       SUBROUTINE PYFSCR(IP)
22722 C...Double precision and integer declarations.
22723       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22724       INTEGER PYK,PYCHGE,PYCOMP
22725 C...Commonblocks.
22726       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22727       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22728       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22729       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22730       COMMON/PYINT1/MINT(400),VINT(400)
22731 C...The common block of colour tags.
22732       COMMON/PYCTAG/NCT,MCT(4000,2)
22733       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/,
22734      &/PYPARS/
22735 C...MCN: Temporary storage of new colour tags
22736       DOUBLE PRECISION MCN(4000,2)
22737  
22738 C...Function to give four-product.
22739       FOUR(I,J)=P(I,4)*P(J,4)
22740      &          -P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
22741  
22742 C...Check valid range of MSTP(95), local copy
22743       IF (MSTP(95).LE.1.OR.MSTP(95).GE.8) RETURN
22744       MSTP95=MOD(MSTP(95),10)
22745 C...Set whether CR allowed inside resonance systems or not
22746 C...(not implemented yet)
22747 C      MRESCR=1
22748 C      IF (MSTP(95).GE.10) MRESCR=0
22749  
22750 C...Check whether colour tags already defined
22751       IF (MINT(33).EQ.0) THEN
22752 C...Erase any existing colour tags for this event
22753         DO 100 I=1,N
22754           MCT(I,1)=0
22755           MCT(I,2)=0
22756   100   CONTINUE
22757 C...Create colour tags for this event
22758         DO 120 I=1,N
22759           IF (K(I,1).EQ.3) THEN
22760             DO 110 KCS=4,5
22761               KCSIN=KCS
22762               IF (MCT(I,KCSIN-3).EQ.0) THEN
22763                 CALL PYCTTR(I,KCSIN,I)
22764               ENDIF
22765   110       CONTINUE
22766           ENDIF
22767   120 CONTINUE
22768 C...Instruct PYPREP to use colour tags
22769         MINT(33)=1
22770       ENDIF
22771  
22772 C...For MSTP(95) even, only apply to hadron-hadron
22773       IF (MOD(MSTP(95),2).EQ.0) THEN
22774          KA1=IABS(MINT(11))
22775          KA2=IABS(MINT(12))
22776          IF (KA1.LT.100.OR.KA2.LT.100) GOTO 9999
22777       ENDIF
22778  
22779 C...Initialize new tag array (but do not delete old yet)
22780       LCT=NCT
22781       DO 130 I=MAX(1,IP),N
22782          MCN(I,1)=0
22783          MCN(I,2)=0
22784   130 CONTINUE
22785  
22786 C...For each final-state dipole, check whether string should be
22787 C...preserved.
22788       DO 150 ICT=1,NCT
22789         IC=0
22790         IA=0
22791         DO 140 I=MAX(1,IP),N
22792           IF (K(I,1).EQ.3.AND.MCT(I,1).EQ.ICT) IC=I
22793           IF (K(I,1).EQ.3.AND.MCT(I,2).EQ.ICT) IA=I
22794   140   CONTINUE
22795         IF (IC.NE.0.AND.IA.NE.0) THEN
22796 C...Chiefly consider large strings.
22797           PKEEP=(1D0-PARP(78))**MINT(31)
22798           IF (PYR(0).LE.PKEEP) THEN
22799             LCT=LCT+1
22800             MCN(IC,1)=LCT
22801             MCN(IA,2)=LCT
22802           ENDIF
22803         ENDIF
22804   150 CONTINUE
22805  
22806 C...Loop over event record, starting from IP
22807 C...(Ignore junctions for now.)
22808       NLOOP=0
22809   160 NLOOP=NLOOP+1
22810       MCIMAX=0
22811       MCJMAX=0
22812       RLMAX=0D0
22813       ILMAX=0
22814       JLMAX=0
22815       DO 230 I=MAX(1,IP),N
22816          IF (K(I,1).NE.3) GOTO 230
22817 C...Check colour charge
22818          MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22819          IF (MCI.EQ.0) GOTO 230
22820 C...For Seattle algorithm, only start from partons with one dangling
22821 C...colour tag
22822          IF (MSTP(95).EQ.6.OR.MSTP(95).EQ.7) THEN
22823            IF (MCI.EQ.2.AND.MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) GOTO 230
22824          ENDIF
22825 C...  Find optimal partner
22826          JLOPT=0
22827          MCJOPT=0
22828          MBROPT=0
22829          MGGOPT=0
22830          RLOPT=1D19
22831 C...Loop over I colour/anticolour, check whether already connected
22832   170    DO 220 ICL=1,2
22833             IF (MCN(I,ICL).NE.0) GOTO 220
22834             IF (ICL.EQ.1.AND.MCI.EQ.-1) GOTO 220
22835             IF (ICL.EQ.2.AND.MCI.EQ.1) GOTO 220
22836 C...Check whether this is a dangling colour tag (ie to junction!)
22837             IFOUND=0
22838             DO 180 J=MAX(1,IP),N
22839                IF (K(J,1).EQ.3.AND.MCT(J,3-ICL).EQ.MCT(I,ICL)) IFOUND=1
22840   180       CONTINUE
22841             IF (IFOUND.EQ.0) GOTO 220
22842             DO 210 J=MAX(1,IP),N
22843                IF (K(J,1).NE.3.OR.I.EQ.J) GOTO 210
22844 C...Do not make direct connections between partons in same Beam Remnant
22845                MBRSTR=0
22846                IF (K(I,3).LE.2.AND.K(J,3).LE.2.AND.K(I,3).EQ.K(J,3))
22847      &              MBRSTR=1
22848 C...Check colour charge
22849                MCJ=KCHG(PYCOMP(K(J,2)),2)*ISIGN(1,K(J,2))
22850                IF (MCJ.EQ.0.OR.(MCJ.EQ.MCI.AND.MCI.NE.2)) GOTO 210
22851 C...Check for gluon loops
22852                MGGSTR=0
22853                IF (MCJ.EQ.2.AND.MCI.EQ.2) THEN
22854                  ICLA=3-ICL
22855                  IF (MCN(I,ICLA).EQ.MCN(J,ICL).AND.MSTP(95).LE.3.AND.
22856      &                MCN(I,ICLA).NE.0) MGGSTR=1
22857                ENDIF
22858 C...Loop over J colour/anticolour, check whether already connected
22859                DO 200 JCL=1,2
22860                   IF (MCN(J,JCL).NE.0) GOTO 200
22861                   IF (JCL.EQ.ICL) GOTO 200
22862                   IF (JCL.EQ.1.AND.MCJ.EQ.-1) GOTO 200
22863                   IF (JCL.EQ.2.AND.MCJ.EQ.1) GOTO 200
22864 C...Check whether this is a dangling colour tag (ie to junction!)
22865                   IFOUND=0
22866                   DO 190 J2=MAX(1,IP),N
22867                      IF (K(J2,1).EQ.3.AND.MCT(J2,3-JCL).EQ.MCT(J,JCL))
22868      &                    IFOUND=1
22869   190             CONTINUE
22870                   IF (IFOUND.EQ.0) GOTO 200
22871 C...Save connection with smallest lambda measure
22872 C...If best so far was a BR string and this is not, also save.
22873 C...If best so far was a gg string and this is not, also save.
22874                   RL=FOUR(I,J)
22875                   IF (RL.LT.RLOPT.OR.(RL.EQ.RLOPT.AND.PYR(0).LE.0.5D0)
22876      &                 .OR.(MBROPT.EQ.1.AND.MBRSTR.EQ.0)
22877      &                 .OR.(MGGOPT.EQ.1.AND.MGGSTR.EQ.0)) THEN
22878                      RLOPT=RL
22879                      JLOPT=J
22880                      ICOPT=ICL
22881                      JCOPT=JCL
22882                      MCJOPT=MCJ
22883                      MBROPT=MBRSTR
22884                      MGGOPT=MGGSTR
22885                   ENDIF
22886   200          CONTINUE
22887   210       CONTINUE
22888   220    CONTINUE
22889          IF (JLOPT.NE.0) THEN
22890 C...Save pair with largest RLOPT so far
22891             IF (RLOPT.GE.RLMAX) THEN
22892                RLMAX=RLOPT
22893                ILMAX=I
22894                JLMAX=JLOPT
22895                ICMAX=ICOPT
22896                JCMAX=JCOPT
22897                MCJMAX=MCJOPT
22898                MCIMAX=MCI
22899             ENDIF
22900          ENDIF
22901   230 CONTINUE
22902 C...Save and iterate
22903       IF (ILMAX.GT.0) THEN
22904          LCT=LCT+1
22905          MCN(ILMAX,ICMAX)=LCT
22906          MCN(JLMAX,JCMAX)=LCT
22907          IF (NLOOP.LE.2*(N-IP)) THEN
22908             GOTO 160
22909          ELSE
22910             CALL PYERRM(31,' PYFSCR: infinite loop in color annealing')
22911             CALL PYSTOP(11)
22912          ENDIF
22913       ELSE
22914 C...Save and exit. First check for leftover gluon(s)
22915          DO 260 I=MAX(1,IP),N
22916 C...Check colour charge
22917             MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22918             IF (K(I,1).NE.3.OR.MCI.NE.2) GOTO 260
22919             IF(MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) THEN
22920 C...Decide where to put left-over gluon (minimal insertion)
22921                ILMAX=0
22922                RLMAX=1D19
22923                DO 250 KCT=NCT+1,LCT
22924                   DO 240 IT=MAX(1,IP),N
22925                      IF (IT.EQ.I.OR.K(IT,1).NE.3) GOTO 240
22926                      IF (MCN(IT,1).EQ.KCT) IC=IT
22927                      IF (MCN(IT,2).EQ.KCT) IA=IT
22928   240             CONTINUE
22929                   RL=FOUR(IC,I)*FOUR(IA,I)
22930                   IF (RL.LT.RLMAX) THEN
22931                      RLMAX=RL
22932                      ICMAX=IC
22933                      IAMAX=IA
22934                   ENDIF
22935   250          CONTINUE
22936                LCT=LCT+1
22937                MCN(I,1)=MCN(ICMAX,1)
22938                MCN(I,2)=LCT
22939                MCN(ICMAX,1)=LCT
22940             ENDIF
22941   260    CONTINUE
22942          DO 270 I=MAX(1,IP),N
22943 C...Do not erase parton shower colour history
22944             IF (K(I,1).NE.3) GOTO 270
22945 C...Check colour charge
22946             MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
22947             IF (MCI.EQ.0) GOTO 270
22948             IF (MCN(I,1).NE.0) MCT(I,1)=MCN(I,1)
22949             IF (MCN(I,2).NE.0) MCT(I,2)=MCN(I,2)
22950   270    CONTINUE
22951       ENDIF
22952  
22953  9999 RETURN
22954       END
22955
22956 C*********************************************************************
22957  
22958 C...PYDIFF
22959 C...Handles diffractive and elastic scattering.
22960  
22961       SUBROUTINE PYDIFF
22962  
22963 C...Double precision and integer declarations.
22964       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22965       IMPLICIT INTEGER(I-N)
22966       INTEGER PYK,PYCHGE,PYCOMP
22967 C...Commonblocks.
22968       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22969       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22970       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22971       COMMON/PYINT1/MINT(400),VINT(400)
22972       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
22973  
22974 C...Reset K, P and V vectors. Store incoming particles.
22975       DO 110 JT=1,MSTP(126)+10
22976         I=MINT(83)+JT
22977         DO 100 J=1,5
22978           K(I,J)=0
22979           P(I,J)=0D0
22980           V(I,J)=0D0
22981   100   CONTINUE
22982   110 CONTINUE
22983       N=MINT(84)
22984       MINT(3)=0
22985       MINT(21)=0
22986       MINT(22)=0
22987       MINT(23)=0
22988       MINT(24)=0
22989       MINT(4)=4
22990       DO 130 JT=1,2
22991         I=MINT(83)+JT
22992         K(I,1)=21
22993         K(I,2)=MINT(10+JT)
22994         DO 120 J=1,5
22995           P(I,J)=VINT(285+5*JT+J)
22996   120   CONTINUE
22997   130 CONTINUE
22998       MINT(6)=2
22999  
23000 C...Subprocess; kinematics.
23001       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
23002       PZ=SQRT(SQLAM)/(2D0*VINT(1))
23003       DO 200 JT=1,2
23004         I=MINT(83)+JT
23005         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
23006         KFH=MINT(102+JT)
23007  
23008 C...Elastically scattered particle. (Except elastic GVMD states.)
23009         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
23010      &  MINT(106+JT).NE.3)) THEN
23011           N=N+1
23012           K(N,1)=1
23013           K(N,2)=KFH
23014           K(N,3)=I+2
23015           P(N,3)=PZ*(-1)**(JT+1)
23016           P(N,4)=PE
23017           P(N,5)=SQRT(VINT(62+JT))
23018  
23019 C...Decay rho from elastic scattering of gamma with sin**2(theta)
23020 C...distribution of decay products (in rho rest frame).
23021           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
23022             NSAV=N
23023             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
23024             P(N,3)=0D0
23025             P(N,4)=P(N,5)
23026             CALL PYDECY(NSAV)
23027             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
23028               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
23029               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
23030               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
23031               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
23032   140         CTHE=2D0*PYR(0)-1D0
23033               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
23034               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
23035             ENDIF
23036             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
23037           ENDIF
23038  
23039 C...Diffracted particle: low-mass system to two particles.
23040         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
23041           N=N+2
23042           K(N-1,1)=1
23043           K(N,1)=1
23044           K(N-1,3)=I+2
23045           K(N,3)=I+2
23046           PMMAS=SQRT(VINT(62+JT))
23047           NTRY=0
23048   150     NTRY=NTRY+1
23049           IF(NTRY.LT.20) THEN
23050             MINT(105)=MINT(102+JT)
23051             MINT(109)=MINT(106+JT)
23052             CALL PYSPLI(KFH,21,KFL1,KFL2)
23053             CALL PYKFDI(KFL1,0,KFL3,KF1)
23054             IF(KF1.EQ.0) GOTO 150
23055             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
23056             IF(KF2.EQ.0) GOTO 150
23057           ELSE
23058             KF1=KFH
23059             KF2=111
23060           ENDIF
23061           PM1=PYMASS(KF1)
23062           PM2=PYMASS(KF2)
23063           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
23064           K(N-1,2)=KF1
23065           K(N,2)=KF2
23066           P(N-1,5)=PM1
23067           P(N,5)=PM2
23068           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
23069      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
23070           P(N-1,3)=PZP
23071           P(N,3)=-PZP
23072           P(N-1,4)=SQRT(PM1**2+PZP**2)
23073           P(N,4)=SQRT(PM2**2+PZP**2)
23074           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
23075      &    0D0,0D0,0D0)
23076           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
23077           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
23078  
23079 C...Diffracted particle: valence quark kicked out.
23080         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
23081      &    PARP(101))) THEN
23082           N=N+2
23083           K(N-1,1)=2
23084           K(N,1)=1
23085           K(N-1,3)=I+2
23086           K(N,3)=I+2
23087           MINT(105)=MINT(102+JT)
23088           MINT(109)=MINT(106+JT)
23089           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
23090           P(N-1,5)=PYMASS(K(N-1,2))
23091           P(N,5)=PYMASS(K(N,2))
23092           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
23093      &    4D0*P(N-1,5)**2*P(N,5)**2
23094           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
23095      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
23096           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
23097           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
23098           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23099  
23100 C...Diffracted particle: gluon kicked out.
23101         ELSE
23102           N=N+3
23103           K(N-2,1)=2
23104           K(N-1,1)=2
23105           K(N,1)=1
23106           K(N-2,3)=I+2
23107           K(N-1,3)=I+2
23108           K(N,3)=I+2
23109           MINT(105)=MINT(102+JT)
23110           MINT(109)=MINT(106+JT)
23111           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
23112           K(N-1,2)=21
23113           P(N-2,5)=PYMASS(K(N-2,2))
23114           P(N-1,5)=0D0
23115           P(N,5)=PYMASS(K(N,2))
23116 C...Energy distribution for particle into two jets.
23117   160     IMB=1
23118           IF(MOD(KFH/1000,10).NE.0) IMB=2
23119           CHIK=PARP(92+2*IMB)
23120           IF(MSTP(92).LE.1) THEN
23121             IF(IMB.EQ.1) CHI=PYR(0)
23122             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
23123           ELSEIF(MSTP(92).EQ.2) THEN
23124             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
23125           ELSEIF(MSTP(92).EQ.3) THEN
23126             CUT=2D0*0.3D0/VINT(1)
23127   170       CHI=PYR(0)**2
23128             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
23129      &      PYR(0)) GOTO 170
23130           ELSEIF(MSTP(92).EQ.4) THEN
23131             CUT=2D0*0.3D0/VINT(1)
23132             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
23133   180       CHIR=CUT*CUTR**PYR(0)
23134             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
23135             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
23136           ELSE
23137             CUT=2D0*0.3D0/VINT(1)
23138             CUTA=CUT**(1D0-PARP(98))
23139             CUTB=(1D0+CUT)**(1D0-PARP(98))
23140   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
23141             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
23142      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
23143           ENDIF
23144           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
23145      &    VINT(62+JT)) GOTO 160
23146           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
23147           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
23148      &    (2D0*VINT(62+JT))
23149           PEI=SQRT(PZI**2+SQM)
23150           PQQP=(1D0-CHI)*(PEI+PZI)
23151           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
23152           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
23153           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
23154           P(N-1,3)=P(N-1,4)*(-1)**JT
23155           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
23156           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23157         ENDIF
23158  
23159 C...Documentation lines.
23160         K(I+2,1)=21
23161         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
23162         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
23163      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
23164         K(I+2,3)=I
23165         P(I+2,3)=PZ*(-1)**(JT+1)
23166         P(I+2,4)=PE
23167         P(I+2,5)=SQRT(VINT(62+JT))
23168   200 CONTINUE
23169  
23170 C...Rotate outgoing partons/particles using cos(theta).
23171       IF(VINT(23).LT.0.9D0) THEN
23172         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
23173       ELSE
23174         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
23175       ENDIF
23176  
23177       RETURN
23178       END
23179  
23180 C*********************************************************************
23181  
23182 C...PYDISG
23183 C...Set up a DIS process as gamma* + f -> f, with beam remnant
23184 C...and showering added consecutively. Photon flux by the PYGAGA
23185 C...routine (if at all).
23186  
23187       SUBROUTINE PYDISG
23188  
23189 C...Double precision and integer declarations.
23190       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23191       IMPLICIT INTEGER(I-N)
23192       INTEGER PYK,PYCHGE,PYCOMP
23193 C...Parameter statement to help give large particle numbers.
23194       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23195      &KEXCIT=4000000,KDIMEN=5000000)
23196 C...Commonblocks.
23197       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23198       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23199       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23200       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23201       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23202       COMMON/PYINT1/MINT(400),VINT(400)
23203       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
23204 C...Local arrays.
23205       DIMENSION PMS(4)
23206  
23207 C...Choice of subprocess, number of documentation lines
23208       IDOC=7
23209       MINT(3)=IDOC-6
23210       MINT(4)=IDOC
23211       IPU1=MINT(84)+1
23212       IPU2=MINT(84)+2
23213       IPU3=MINT(84)+3
23214       ISIDE=1
23215       IF(MINT(107).EQ.4) ISIDE=2
23216  
23217 C...Reset K, P and V vectors. Store incoming particles
23218       DO 110 JT=1,MSTP(126)+20
23219         I=MINT(83)+JT
23220         DO 100 J=1,5
23221           K(I,J)=0
23222           P(I,J)=0D0
23223           V(I,J)=0D0
23224   100   CONTINUE
23225   110 CONTINUE
23226       DO 130 JT=1,2
23227         I=MINT(83)+JT
23228         K(I,1)=21
23229         K(I,2)=MINT(10+JT)
23230         DO 120 J=1,5
23231           P(I,J)=VINT(285+5*JT+J)
23232   120   CONTINUE
23233   130 CONTINUE
23234       MINT(6)=2
23235  
23236 C...Store incoming partons in hadronic CM-frame
23237       DO 140 JT=1,2
23238         I=MINT(84)+JT
23239         K(I,1)=14
23240         K(I,2)=MINT(14+JT)
23241         K(I,3)=MINT(83)+2+JT
23242   140 CONTINUE
23243       IF(MINT(15).EQ.22) THEN
23244         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
23245         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
23246         P(MINT(84)+1,5)=-SQRT(VINT(307))
23247         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
23248         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
23249         KFRES=MINT(16)
23250         ISIDE=2
23251       ELSE
23252         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
23253         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
23254         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
23255         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
23256         P(MINT(84)+1,5)=-SQRT(VINT(308))
23257         KFRES=MINT(15)
23258         ISIDE=1
23259       ENDIF
23260       SIDESG=(-1D0)**(ISIDE-1)
23261  
23262 C...Copy incoming partons to documentation lines.
23263       DO 170 JT=1,2
23264         I1=MINT(83)+4+JT
23265         I2=MINT(84)+JT
23266         K(I1,1)=21
23267         K(I1,2)=K(I2,2)
23268         K(I1,3)=I1-2
23269         DO 150 J=1,5
23270           P(I1,J)=P(I2,J)
23271   150   CONTINUE
23272  
23273 C...Second copy for partons before ISR shower, since no such.
23274         I1=MINT(83)+2+JT
23275         K(I1,1)=21
23276         K(I1,2)=K(I2,2)
23277         K(I1,3)=I1-2
23278         DO 160 J=1,5
23279           P(I1,J)=P(I2,J)
23280   160   CONTINUE
23281   170 CONTINUE
23282  
23283 C...Define initial partons.
23284       NTRY=0
23285   180 NTRY=NTRY+1
23286       IF(NTRY.GT.100) THEN
23287         MINT(51)=1
23288         RETURN
23289       ENDIF
23290  
23291 C...Scattered quark in hadronic CM frame.
23292       I=MINT(83)+7
23293       K(IPU3,1)=3
23294       K(IPU3,2)=KFRES
23295       K(IPU3,3)=I
23296       P(IPU3,5)=PYMASS(KFRES)
23297       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
23298       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
23299       P(IPU3,5)=0D0
23300       K(I,1)=21
23301       K(I,2)=KFRES
23302       K(I,3)=MINT(83)+4+ISIDE
23303       P(I,3)=P(IPU3,3)
23304       P(I,4)=P(IPU3,4)
23305       P(I,5)=P(IPU3,5)
23306       N=IPU3
23307       MINT(21)=KFRES
23308       MINT(22)=0
23309  
23310 C...No primordial kT, or chosen according to truncated Gaussian or
23311 C...exponential, or (for photon) predetermined or power law.
23312   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
23313         IF(MSTP(91).LE.0) THEN
23314           PT=0D0
23315         ELSEIF(MSTP(91).EQ.1) THEN
23316           PT=PARP(91)*SQRT(-LOG(PYR(0)))
23317         ELSE
23318           RPT1=PYR(0)
23319           RPT2=PYR(0)
23320           PT=-PARP(92)*LOG(RPT1*RPT2)
23321         ENDIF
23322         IF(PT.GT.PARP(93)) GOTO 190
23323       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
23324         PTA=SQRT(VINT(282+ISIDE))
23325         PTB=0D0
23326         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
23327           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
23328         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
23329           RPT1=PYR(0)
23330           RPT2=PYR(0)
23331           PTB=-PARP(99)*LOG(RPT1*RPT2)
23332         ENDIF
23333         IF(PTB.GT.PARP(100)) GOTO 190
23334         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
23335         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
23336       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
23337         IF(MSTP(93).LE.0) THEN
23338           PT=0D0
23339         ELSEIF(MSTP(93).EQ.1) THEN
23340           PT=PARP(99)*SQRT(-LOG(PYR(0)))
23341         ELSEIF(MSTP(93).EQ.2) THEN
23342           RPT1=PYR(0)
23343           RPT2=PYR(0)
23344           PT=-PARP(99)*LOG(RPT1*RPT2)
23345         ELSEIF(MSTP(93).EQ.3) THEN
23346           HA=PARP(99)**2
23347           HB=PARP(100)**2
23348           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
23349         ELSE
23350           HA=PARP(99)**2
23351           HB=PARP(100)**2
23352           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
23353           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
23354         ENDIF
23355         IF(PT.GT.PARP(100)) GOTO 190
23356       ELSE
23357         PT=0D0
23358       ENDIF
23359       VINT(156+ISIDE)=PT
23360       PHI=PARU(2)*PYR(0)
23361       P(IPU3,1)=PT*COS(PHI)
23362       P(IPU3,2)=PT*SIN(PHI)
23363       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
23364       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
23365       PCP=P(IPU3,4)+ABS(P(IPU3,3))
23366  
23367 C...Find one or two beam remnants.
23368       MINT(105)=MINT(102+ISIDE)
23369       MINT(109)=MINT(106+ISIDE)
23370       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
23371       IF(MINT(51).NE.0) THEN
23372         MINT(51)=0
23373         GOTO 180
23374       ENDIF
23375  
23376 C...Store first remnant parton, with colour info and kinematics.
23377       I=N+1
23378       K(I,1)=1
23379       K(I,2)=KFLSP
23380       K(I,3)=MINT(83)+ISIDE
23381       P(I,5)=PYMASS(K(I,2))
23382       KCOL=KCHG(PYCOMP(KFLSP),2)
23383       IF(KCOL.NE.0) THEN
23384         K(I,1)=3
23385         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
23386         K(I,KFLS+3)=MSTU(5)*IPU3
23387         K(IPU3,6-KFLS)=MSTU(5)*I
23388         ICOLR=I
23389       ENDIF
23390       IF(KFLCH.EQ.0) THEN
23391         P(I,1)=-P(IPU3,1)
23392         P(I,2)=-P(IPU3,2)
23393         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
23394         P(I,3)=-P(IPU3,3)
23395         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
23396         PRP=P(I,4)+ABS(P(I,3))
23397  
23398 C...When extra remnant parton or hadron: store extra remnant.
23399       ELSE
23400         I=I+1
23401         K(I,1)=1
23402         K(I,2)=KFLCH
23403         K(I,3)=MINT(83)+ISIDE
23404         P(I,5)=PYMASS(K(I,2))
23405         KCOL=KCHG(PYCOMP(KFLCH),2)
23406         IF(KCOL.NE.0) THEN
23407           K(I,1)=3
23408           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
23409           K(I,KFLS+3)=MSTU(5)*IPU3
23410           K(IPU3,6-KFLS)=MSTU(5)*I
23411           ICOLR=I
23412         ENDIF
23413  
23414 C...Relative transverse momentum when two remnants.
23415         LOOP=0
23416   200   LOOP=LOOP+1
23417         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
23418         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
23419         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
23420         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
23421         P(I,1)=-P(IPU3,1)-P(I-1,1)
23422         P(I,2)=-P(IPU3,2)-P(I-1,2)
23423         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
23424  
23425 C...Relative distribution of energy for particle into jet plus particle.
23426         IMB=1
23427         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
23428         IF(MSTP(94).LE.1) THEN
23429           IF(IMB.EQ.1) CHI=PYR(0)
23430           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
23431           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
23432         ELSEIF(MSTP(94).EQ.2) THEN
23433           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
23434           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
23435         ELSEIF(MSTP(94).EQ.3) THEN
23436           CALL PYZDIS(1,0,PMS(4),ZZ)
23437           CHI=ZZ
23438         ELSE
23439           CALL PYZDIS(1000,0,PMS(4),ZZ)
23440           CHI=ZZ
23441         ENDIF
23442  
23443 C...Construct total transverse mass; reject if too large.
23444         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
23445         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
23446         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
23447           IF(LOOP.LT.10) GOTO 200
23448           GOTO 180
23449         ENDIF
23450         VINT(158+ISIDE)=CHI
23451  
23452 C...Subdivide longitudinal momentum according to value selected above.
23453         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
23454         PW1=(1D0-CHI)*PRP
23455         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
23456         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
23457         PW2=CHI*PRP
23458         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
23459         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
23460       ENDIF
23461       N=I
23462  
23463 C...Boost current and remnant systems to correct frame.
23464       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
23465       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
23466       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
23467      &(2D0*VINT(1)*PCP)
23468       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
23469      &(2D0*VINT(1)*PRP)
23470       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
23471       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
23472       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
23473       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
23474  
23475 C...Let current quark shower; recoil but no showering by colour partner.
23476       QMAX=2D0*SQRT(VINT(309-ISIDE))
23477       MSTJ48=MSTJ(48)
23478       MSTJ(48)=1
23479       PARJ86=PARJ(86)
23480       PARJ(86)=0D0
23481       IF(MSTP(71).EQ.1) then
23482       if(parj(200).ne.1.) CALL PYSHOW(IPU3,ICOLR,QMAX)
23483       if(parj(200).eq.1.) CALL PYSHOWQ(IPU3,ICOLR,QMAX)
23484       endif
23485       MSTJ(48)=MSTJ48
23486       PARJ(86)=PARJ86
23487  
23488       RETURN
23489       END
23490  
23491 C*********************************************************************
23492  
23493 C...PYDOCU
23494 C...Handles the documentation of the process in MSTI and PARI,
23495 C...and also computes cross-sections based on accumulated statistics.
23496  
23497       SUBROUTINE PYDOCU
23498  
23499 C...Double precision and integer declarations.
23500       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23501       IMPLICIT INTEGER(I-N)
23502       INTEGER PYK,PYCHGE,PYCOMP
23503 C...Commonblocks.
23504       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23505       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23506       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23507       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23508       COMMON/PYINT1/MINT(400),VINT(400)
23509       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
23510       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
23511       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
23512      &/PYINT5/
23513  
23514 C...Calculate Monte Carlo estimates of cross-sections.
23515       ISUB=MINT(1)
23516       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
23517       NGEN(0,3)=NGEN(0,3)+1
23518       XSEC(0,3)=0D0
23519       DO 100 I=1,500
23520         IF(I.EQ.96.OR.I.EQ.97) THEN
23521           XSEC(I,3)=0D0
23522         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
23523      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
23524           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
23525      &    DBLE(NGEN(96,2)))
23526         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
23527           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
23528      &    DBLE(NGEN(96,2)))
23529         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
23530           XSEC(I,3)=0D0
23531         ELSEIF(NGEN(I,2).EQ.0) THEN
23532           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
23533      &    DBLE(NGEN(0,2)))
23534         ELSE
23535           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
23536      &    DBLE(NGEN(I,2)))
23537         ENDIF
23538         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
23539   100 CONTINUE
23540  
23541 C...Rescale to known low-pT cross-section for standard QCD processes.
23542       IF(MSUB(95).EQ.1) THEN
23543         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
23544      &  XSEC(68,3)+XSEC(95,3)
23545         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
23546         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
23547           FAC=XSECW/XSECH
23548           XSEC(11,3)=FAC*XSEC(11,3)
23549           XSEC(12,3)=FAC*XSEC(12,3)
23550           XSEC(13,3)=FAC*XSEC(13,3)
23551           XSEC(28,3)=FAC*XSEC(28,3)
23552           XSEC(53,3)=FAC*XSEC(53,3)
23553           XSEC(68,3)=FAC*XSEC(68,3)
23554           XSEC(95,3)=FAC*XSEC(95,3)
23555           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
23556         ENDIF
23557       ENDIF
23558  
23559 C...Save information for gamma-p and gamma-gamma.
23560       IF(MINT(121).GT.1) THEN
23561         IGA=MINT(122)
23562         CALL PYSAVE(2,IGA)
23563         CALL PYSAVE(5,0)
23564       ENDIF
23565  
23566 C...Reset information on hard interaction.
23567       DO 110 J=1,200
23568         MSTI(J)=0
23569         PARI(J)=0D0
23570   110 CONTINUE
23571  
23572 C...Copy integer valued information from MINT into MSTI.
23573       DO 120 J=1,32
23574         MSTI(J)=MINT(J)
23575   120 CONTINUE
23576       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
23577  
23578 C...Store cross-section variables in PARI.
23579       PARI(1)=XSEC(0,3)
23580       PARI(2)=XSEC(0,3)/MINT(5)
23581       PARI(7)=VINT(97)
23582       PARI(9)=VINT(99)
23583       PARI(10)=VINT(100)
23584       VINT(98)=VINT(98)+VINT(100)
23585       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
23586  
23587 C...Store kinematics variables in PARI.
23588       PARI(11)=VINT(1)
23589       PARI(12)=VINT(2)
23590       IF(ISUB.NE.95) THEN
23591         DO 130 J=13,26
23592           PARI(J)=VINT(30+J)
23593   130   CONTINUE
23594         PARI(29)=VINT(39)
23595         PARI(30)=VINT(40)
23596         PARI(31)=VINT(141)
23597         PARI(32)=VINT(142)
23598         PARI(33)=VINT(41)
23599         PARI(34)=VINT(42)
23600         PARI(35)=PARI(33)-PARI(34)
23601         PARI(36)=VINT(21)
23602         PARI(37)=VINT(22)
23603         PARI(38)=VINT(26)
23604         PARI(39)=VINT(157)
23605         PARI(40)=VINT(158)
23606         PARI(41)=VINT(23)
23607         PARI(42)=2D0*VINT(47)/VINT(1)
23608       ENDIF
23609  
23610 C...Store information on scattered partons in PARI.
23611       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
23612         DO 140 IS=7,8
23613           I=MINT(IS)
23614           PARI(36+IS)=P(I,3)/VINT(1)
23615           PARI(38+IS)=P(I,4)/VINT(1)
23616           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
23617           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
23618      &    SQRT(PR),1D20)),P(I,3))
23619           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
23620           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
23621      &    SQRT(PR),1D20)),P(I,3))
23622           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
23623           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
23624           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
23625   140   CONTINUE
23626       ENDIF
23627  
23628 C...Store sum up transverse and longitudinal momenta.
23629       PARI(65)=2D0*PARI(17)
23630       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
23631         DO 150 I=MSTP(126)+1,N
23632           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
23633           PT=SQRT(P(I,1)**2+P(I,2)**2)
23634           PARI(69)=PARI(69)+PT
23635           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
23636           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
23637   150   CONTINUE
23638         PARI(67)=PARI(68)
23639         PARI(71)=VINT(151)
23640         PARI(72)=VINT(152)
23641         PARI(73)=VINT(151)
23642         PARI(74)=VINT(152)
23643       ELSE
23644         PARI(66)=PARI(65)
23645         PARI(69)=PARI(65)
23646       ENDIF
23647  
23648 C...Store various other pieces of information into PARI.
23649       PARI(61)=VINT(148)
23650       PARI(75)=VINT(155)
23651       PARI(76)=VINT(156)
23652       PARI(77)=VINT(159)
23653       PARI(78)=VINT(160)
23654       PARI(81)=VINT(138)
23655  
23656 C...Store information on lepton -> lepton + gamma in PYGAGA.
23657       MSTI(71)=MINT(141)
23658       MSTI(72)=MINT(142)
23659       PARI(101)=VINT(301)
23660       PARI(102)=VINT(302)
23661       DO 160 I=103,114
23662         PARI(I)=VINT(I+202)
23663   160 CONTINUE
23664  
23665 C...Set information for PYTABU.
23666       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
23667         MSTU(161)=MINT(21)
23668         MSTU(162)=0
23669       ELSEIF(ISET(ISUB).EQ.5) THEN
23670         MSTU(161)=MINT(23)
23671         MSTU(162)=0
23672       ELSE
23673         MSTU(161)=MINT(21)
23674         MSTU(162)=MINT(22)
23675       ENDIF
23676  
23677       RETURN
23678       END
23679  
23680 C*********************************************************************
23681  
23682 C...PYFRAM
23683 C...Performs transformations between different coordinate frames.
23684  
23685       SUBROUTINE PYFRAM(IFRAME)
23686  
23687 C...Double precision and integer declarations.
23688       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23689       IMPLICIT INTEGER(I-N)
23690       INTEGER PYK,PYCHGE,PYCOMP
23691 C...Commonblocks.
23692       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23693       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23694       COMMON/PYINT1/MINT(400),VINT(400)
23695       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
23696  
23697 C...Check that transformation can and should be done.
23698       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
23699      &MINT(91).EQ.1)) THEN
23700         IF(IFRAME.EQ.MINT(6)) RETURN
23701       ELSE
23702         WRITE(MSTU(11),5000) IFRAME,MINT(6)
23703         RETURN
23704       ENDIF
23705  
23706       IF(MINT(6).EQ.1) THEN
23707 C...Transform from fixed target or user specified frame to
23708 C...overall CM frame.
23709         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
23710         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
23711         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
23712       ELSEIF(MINT(6).EQ.3) THEN
23713 C...Transform from hadronic CM frame in DIS to overall CM frame.
23714         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
23715      &  -VINT(225))
23716       ENDIF
23717  
23718       IF(IFRAME.EQ.1) THEN
23719 C...Transform from overall CM frame to fixed target or user specified
23720 C...frame.
23721         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
23722       ELSEIF(IFRAME.EQ.3) THEN
23723 C...Transform from overall CM frame to hadronic CM frame in DIS.
23724         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
23725         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
23726         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
23727       ENDIF
23728  
23729 C...Set information about new frame.
23730       MINT(6)=IFRAME
23731       MSTI(6)=IFRAME
23732  
23733  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
23734      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
23735      &1X,I5)
23736  
23737       RETURN
23738       END
23739  
23740 C*********************************************************************
23741  
23742 C...PYWIDT
23743 C...Calculates full and partial widths of resonances.
23744  
23745       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
23746  
23747 C...Double precision and integer declarations.
23748       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23749       IMPLICIT INTEGER(I-N)
23750       INTEGER PYK,PYCHGE,PYCOMP
23751 C...Parameter statement to help give large particle numbers.
23752       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23753      &KEXCIT=4000000,KDIMEN=5000000)
23754 C...Commonblocks.
23755       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23756       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23757       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
23758       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23759       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23760       COMMON/PYINT1/MINT(400),VINT(400)
23761       COMMON/PYINT4/MWID(500),WIDS(500,5)
23762       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
23763       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
23764      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
23765       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
23766       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
23767      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/
23768 C...Local arrays and saved variables.
23769       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
23770       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
23771      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
23772       SAVE MOFSV,WIDWSV,WID2SV
23773       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
23774  
23775 C...Compressed code and sign; mass.
23776       KFLA=IABS(KFLR)
23777       KFLS=ISIGN(1,KFLR)
23778       KC=PYCOMP(KFLA)
23779       SHR=SQRT(SH)
23780       PMR=PMAS(KC,1)
23781  
23782 C...Reset width information.
23783       DO 110 I=0,MDCY(KC,3)
23784         WDTP(I)=0D0
23785         DO 100 J=0,5
23786           WDTE(I,J)=0D0
23787   100   CONTINUE
23788   110 CONTINUE
23789  
23790 C...Allow for fudge factor to rescale resonance width.
23791       FUDGE=1D0
23792       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
23793      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
23794         IF(MSTP(110).EQ.KFLA) THEN
23795           FUDGE=PARP(110)
23796         ELSEIF(MSTP(110).EQ.-1) THEN
23797           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
23798         ELSEIF(MSTP(110).EQ.-2) THEN
23799           FUDGE=PARP(110)
23800         ENDIF
23801       ENDIF
23802  
23803 C...Not to be treated as a resonance: return.
23804       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
23805      &KFLA.NE.22) THEN
23806         WDTP(0)=1D0
23807         WDTE(0,0)=1D0
23808         MINT(61)=0
23809         MINT(62)=0
23810         MINT(63)=0
23811         RETURN
23812  
23813 C...Treatment as a resonance based on tabulated branching ratios.
23814       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
23815 C...Loop over possible decay channels; skip irrelevant ones.
23816         DO 120 I=1,MDCY(KC,3)
23817           IDC=I+MDCY(KC,2)-1
23818           IF(MDME(IDC,1).LT.0) GOTO 120
23819  
23820 C...Read out decay products and nominal masses.
23821           KFD1=KFDP(IDC,1)
23822           KFC1=PYCOMP(KFD1)
23823           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
23824           PM1=PMAS(KFC1,1)
23825           KFD2=KFDP(IDC,2)
23826           KFC2=PYCOMP(KFD2)
23827           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
23828           PM2=PMAS(KFC2,1)
23829           KFD3=KFDP(IDC,3)
23830           PM3=0D0
23831           IF(KFD3.NE.0) THEN
23832             KFC3=PYCOMP(KFD3)
23833             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
23834             PM3=PMAS(KFC3,1)
23835           ENDIF
23836  
23837 C...Naive partial width and alternative threshold factors.
23838           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
23839           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
23840      &    PM1+PM2+PM3.GE.SHR) THEN
23841              WDTP(I)=0D0
23842           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
23843             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
23844      &      4D0*PM1**2*PM2**2))/SH
23845           ELSEIF(MDME(IDC,2).EQ.52) THEN
23846             PMA=MAX(PM1,PM2,PM3)
23847             PMC=MIN(PM1,PM2,PM3)
23848             PMB=PM1+PM2+PM3-PMA-PMC
23849             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
23850             PMAN=PMA**2/SH
23851             PMBN=PMB**2/SH
23852             PMCN=PMC**2/SH
23853             PMBCN=PMBC**2/SH
23854             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
23855      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23856      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23857      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
23858      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
23859      &      ((1D0-PMBCN)*PMBCN*SH)
23860           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
23861             WDTP(I)=WDTP(I)*SQRT(
23862      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
23863      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
23864           ELSEIF(MDME(IDC,2).EQ.53) THEN
23865             PMA=MAX(PM1,PM2,PM3)
23866             PMC=MIN(PM1,PM2,PM3)
23867             PMB=PM1+PM2+PM3-PMA-PMC
23868             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
23869             PMAN=PMA**2/SH
23870             PMBN=PMB**2/SH
23871             PMCN=PMC**2/SH
23872             PMBCN=PMBC**2/SH
23873             FACACT=SQRT(MAX(0D0,
23874      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23875      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23876      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
23877      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
23878      &      ((1D0-PMBCN)*PMBCN*SH)
23879             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
23880             PMAN=PMA**2/PMR**2
23881             PMBN=PMB**2/PMR**2
23882             PMCN=PMC**2/PMR**2
23883             PMBCN=PMBC**2/PMR**2
23884             FACNOM=SQRT(MAX(0D0,
23885      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
23886      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
23887      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
23888      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
23889      &      ((1D0-PMBCN)*PMBCN*PMR**2)
23890             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
23891           ENDIF
23892           WDTP(I)=FUDGE*WDTP(I)
23893           WDTP(0)=WDTP(0)+WDTP(I)
23894  
23895 C...Calculate secondary width (at most two identical/opposite).
23896           WID2=1D0
23897           IF(MDME(IDC,1).GT.0) THEN
23898             IF(KFD2.EQ.KFD1) THEN
23899               IF(KCHG(KFC1,3).EQ.0) THEN
23900                 WID2=WIDS(KFC1,1)
23901               ELSEIF(KFD1.GT.0) THEN
23902                 WID2=WIDS(KFC1,4)
23903               ELSE
23904                 WID2=WIDS(KFC1,5)
23905               ENDIF
23906               IF(KFD3.GT.0) THEN
23907                 WID2=WID2*WIDS(KFC3,2)
23908               ELSEIF(KFD3.LT.0) THEN
23909                 WID2=WID2*WIDS(KFC3,3)
23910               ENDIF
23911             ELSEIF(KFD2.EQ.-KFD1) THEN
23912               WID2=WIDS(KFC1,1)
23913               IF(KFD3.GT.0) THEN
23914                 WID2=WID2*WIDS(KFC3,2)
23915               ELSEIF(KFD3.LT.0) THEN
23916                 WID2=WID2*WIDS(KFC3,3)
23917               ENDIF
23918             ELSEIF(KFD3.EQ.KFD1) THEN
23919               IF(KCHG(KFC1,3).EQ.0) THEN
23920                 WID2=WIDS(KFC1,1)
23921               ELSEIF(KFD1.GT.0) THEN
23922                 WID2=WIDS(KFC1,4)
23923               ELSE
23924                 WID2=WIDS(KFC1,5)
23925               ENDIF
23926               IF(KFD2.GT.0) THEN
23927                 WID2=WID2*WIDS(KFC2,2)
23928               ELSEIF(KFD2.LT.0) THEN
23929                 WID2=WID2*WIDS(KFC2,3)
23930               ENDIF
23931             ELSEIF(KFD3.EQ.-KFD1) THEN
23932               WID2=WIDS(KFC1,1)
23933               IF(KFD2.GT.0) THEN
23934                 WID2=WID2*WIDS(KFC2,2)
23935               ELSEIF(KFD2.LT.0) THEN
23936                 WID2=WID2*WIDS(KFC2,3)
23937               ENDIF
23938             ELSEIF(KFD3.EQ.KFD2) THEN
23939               IF(KCHG(KFC2,3).EQ.0) THEN
23940                 WID2=WIDS(KFC2,1)
23941               ELSEIF(KFD2.GT.0) THEN
23942                 WID2=WIDS(KFC2,4)
23943               ELSE
23944                 WID2=WIDS(KFC2,5)
23945               ENDIF
23946               IF(KFD1.GT.0) THEN
23947                 WID2=WID2*WIDS(KFC1,2)
23948               ELSEIF(KFD1.LT.0) THEN
23949                 WID2=WID2*WIDS(KFC1,3)
23950               ENDIF
23951             ELSEIF(KFD3.EQ.-KFD2) THEN
23952               WID2=WIDS(KFC2,1)
23953               IF(KFD1.GT.0) THEN
23954                 WID2=WID2*WIDS(KFC1,2)
23955               ELSEIF(KFD1.LT.0) THEN
23956                 WID2=WID2*WIDS(KFC1,3)
23957               ENDIF
23958             ELSE
23959               IF(KFD1.GT.0) THEN
23960                 WID2=WIDS(KFC1,2)
23961               ELSE
23962                 WID2=WIDS(KFC1,3)
23963               ENDIF
23964               IF(KFD2.GT.0) THEN
23965                 WID2=WID2*WIDS(KFC2,2)
23966               ELSE
23967                 WID2=WID2*WIDS(KFC2,3)
23968               ENDIF
23969               IF(KFD3.GT.0) THEN
23970                 WID2=WID2*WIDS(KFC3,2)
23971               ELSEIF(KFD3.LT.0) THEN
23972                 WID2=WID2*WIDS(KFC3,3)
23973               ENDIF
23974             ENDIF
23975  
23976 C...Store effective widths according to case.
23977             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
23978             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
23979             WDTE(I,0)=WDTE(I,MDME(IDC,1))
23980             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
23981           ENDIF
23982   120   CONTINUE
23983 C...Return.
23984         MINT(61)=0
23985         MINT(62)=0
23986         MINT(63)=0
23987         RETURN
23988       ENDIF
23989  
23990 C...Here begins detailed dynamical calculation of resonance widths.
23991 C...Shared treatment of Higgs states.
23992       KFHIGG=25
23993       IHIGG=1
23994       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
23995         KFHIGG=KFLA
23996         IHIGG=KFLA-33
23997       ENDIF
23998  
23999 C...Common electroweak and strong constants.
24000       XW=PARU(102)
24001       XWV=XW
24002       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
24003       XW1=1D0-XW
24004       AEM=PYALEM(SH)
24005       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
24006       AS=PYALPS(SH)
24007       RADC=1D0+AS/PARU(1)
24008  
24009       IF(KFLA.EQ.6) THEN
24010 C...t quark.
24011         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24012         RADCT=1D0-2.5D0*AS/PARU(1)
24013         DO 140 I=1,MDCY(KC,3)
24014           IDC=I+MDCY(KC,2)-1
24015           IF(MDME(IDC,1).LT.0) GOTO 140
24016           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24017           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24018           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
24019           WID2=1D0
24020           IF(I.GE.4.AND.I.LE.7) THEN
24021 C...t -> W + q; including approximate QCD correction factor.
24022             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
24023      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24024      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24025             IF(KFLR.GT.0) THEN
24026               WID2=WIDS(24,2)
24027               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24028             ELSE
24029               WID2=WIDS(24,3)
24030               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24031             ENDIF
24032           ELSEIF(I.EQ.9) THEN
24033 C...t -> H + b.
24034             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
24035             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24036      &      ((1D0+RM2-RM1)*(RM2R*PARU(141)**2+1D0/PARU(141)**2)+
24037      &      4D0*SQRT(RM2R*RM2))
24038             WID2=WIDS(37,2)
24039             IF(KFLR.LT.0) WID2=WIDS(37,3)
24040 CMRENNA++
24041           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
24042 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
24043             BETA=ATAN(RMSS(5))
24044             SINB=SIN(BETA)
24045             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
24046             ET=KCHG(6,1)/3D0
24047             T3L=SIGN(0.5D0,ET)
24048             KFC1=PYCOMP(KFDP(IDC,1))
24049             KFC2=PYCOMP(KFDP(IDC,2))
24050             PMNCHI=PMAS(KFC1,1)
24051             PMSTOP=PMAS(KFC2,1)
24052             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24053               IZ=I-9
24054               DO 130 IK=1,4
24055                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
24056   130         CONTINUE
24057               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
24058               AR=-ET*ZMIXC(IZ,1)*TANW
24059               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
24060               BR=AL
24061               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
24062               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
24063               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24064      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24065               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
24066      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
24067      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
24068               IF(KFLR.GT.0) THEN
24069                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24070               ELSE
24071                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24072               ENDIF
24073             ENDIF
24074           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
24075 C...t -> ~g + ~t
24076             KFC1=PYCOMP(KFDP(IDC,1))
24077             KFC2=PYCOMP(KFDP(IDC,2))
24078             PMNCHI=PMAS(KFC1,1)
24079             PMSTOP=PMAS(KFC2,1)
24080             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24081               RL=SFMIX(6,1)
24082               RR=-SFMIX(6,2)
24083               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24084      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24085               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
24086      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
24087               IF(KFLR.GT.0) THEN
24088                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24089               ELSE
24090                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24091               ENDIF
24092             ENDIF
24093           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
24094 C...t -> ~gravitino + ~t
24095             XMP2=RMSS(29)**2
24096             KFC1=PYCOMP(KFDP(IDC,1))
24097             XMGR2=PMAS(KFC1,1)**2
24098             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
24099             KFC2=PYCOMP(KFDP(IDC,2))
24100             WID2=WIDS(KFC2,2)
24101             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
24102 CMRENNA--
24103           ENDIF
24104           WDTP(I)=FUDGE*WDTP(I)
24105           WDTP(0)=WDTP(0)+WDTP(I)
24106           IF(MDME(IDC,1).GT.0) THEN
24107             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24108             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24109             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24110             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24111           ENDIF
24112   140   CONTINUE
24113  
24114       ELSEIF(KFLA.EQ.7) THEN
24115 C...b' quark.
24116         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24117         DO 150 I=1,MDCY(KC,3)
24118           IDC=I+MDCY(KC,2)-1
24119           IF(MDME(IDC,1).LT.0) GOTO 150
24120           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24121           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24122           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
24123           WID2=1D0
24124           IF(I.GE.4.AND.I.LE.7) THEN
24125 C...b' -> W + q.
24126             WDTP(I)=FAC*VCKM(I-3,4)*
24127      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24128      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24129             IF(KFLR.GT.0) THEN
24130               WID2=WIDS(24,3)
24131               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
24132               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
24133             ELSE
24134               WID2=WIDS(24,2)
24135               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
24136               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
24137             ENDIF
24138             WID2=WIDS(24,3)
24139             IF(KFLR.LT.0) WID2=WIDS(24,2)
24140           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24141 C...b' -> H + q.
24142             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24143      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24144             IF(KFLR.GT.0) THEN
24145               WID2=WIDS(37,3)
24146               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
24147             ELSE
24148               WID2=WIDS(37,2)
24149               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
24150             ENDIF
24151           ENDIF
24152           WDTP(I)=FUDGE*WDTP(I)
24153           WDTP(0)=WDTP(0)+WDTP(I)
24154           IF(MDME(IDC,1).GT.0) THEN
24155             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24156             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24157             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24158             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24159           ENDIF
24160   150   CONTINUE
24161  
24162       ELSEIF(KFLA.EQ.8) THEN
24163 C...t' quark.
24164         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24165         DO 160 I=1,MDCY(KC,3)
24166           IDC=I+MDCY(KC,2)-1
24167           IF(MDME(IDC,1).LT.0) GOTO 160
24168           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24169           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24170           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
24171           WID2=1D0
24172           IF(I.GE.4.AND.I.LE.7) THEN
24173 C...t' -> W + q.
24174             WDTP(I)=FAC*VCKM(4,I-3)*
24175      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24176      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24177             IF(KFLR.GT.0) THEN
24178               WID2=WIDS(24,2)
24179               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24180             ELSE
24181               WID2=WIDS(24,3)
24182               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24183             ENDIF
24184           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24185 C...t' -> H + q.
24186             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24187      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24188             IF(KFLR.GT.0) THEN
24189               WID2=WIDS(37,2)
24190               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
24191             ELSE
24192               WID2=WIDS(37,3)
24193               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
24194             ENDIF
24195           ENDIF
24196           WDTP(I)=FUDGE*WDTP(I)
24197           WDTP(0)=WDTP(0)+WDTP(I)
24198           IF(MDME(IDC,1).GT.0) THEN
24199             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24200             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24201             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24202             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24203           ENDIF
24204   160   CONTINUE
24205  
24206       ELSEIF(KFLA.EQ.17) THEN
24207 C...tau' lepton.
24208         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24209         DO 170 I=1,MDCY(KC,3)
24210           IDC=I+MDCY(KC,2)-1
24211           IF(MDME(IDC,1).LT.0) GOTO 170
24212           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24213           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24214           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
24215           WID2=1D0
24216           IF(I.EQ.3) THEN
24217 C...tau' -> W + nu'_tau.
24218             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24219      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24220             IF(KFLR.GT.0) THEN
24221               WID2=WIDS(24,3)
24222               WID2=WID2*WIDS(18,2)
24223             ELSE
24224               WID2=WIDS(24,2)
24225               WID2=WID2*WIDS(18,3)
24226             ENDIF
24227           ELSEIF(I.EQ.5) THEN
24228 C...tau' -> H + nu'_tau.
24229             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24230      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24231             IF(KFLR.GT.0) THEN
24232               WID2=WIDS(37,3)
24233               WID2=WID2*WIDS(18,2)
24234             ELSE
24235               WID2=WIDS(37,2)
24236               WID2=WID2*WIDS(18,3)
24237             ENDIF
24238           ENDIF
24239           WDTP(I)=FUDGE*WDTP(I)
24240           WDTP(0)=WDTP(0)+WDTP(I)
24241           IF(MDME(IDC,1).GT.0) THEN
24242             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24243             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24244             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24245             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24246           ENDIF
24247   170   CONTINUE
24248  
24249       ELSEIF(KFLA.EQ.18) THEN
24250 C...nu'_tau neutrino.
24251         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24252         DO 180 I=1,MDCY(KC,3)
24253           IDC=I+MDCY(KC,2)-1
24254           IF(MDME(IDC,1).LT.0) GOTO 180
24255           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24256           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24257           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
24258           WID2=1D0
24259           IF(I.EQ.2) THEN
24260 C...nu'_tau -> W + tau'.
24261             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24262      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24263             IF(KFLR.GT.0) THEN
24264               WID2=WIDS(24,2)
24265               WID2=WID2*WIDS(17,2)
24266             ELSE
24267               WID2=WIDS(24,3)
24268               WID2=WID2*WIDS(17,3)
24269             ENDIF
24270           ELSEIF(I.EQ.3) THEN
24271 C...nu'_tau -> H + tau'.
24272             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24273      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24274             IF(KFLR.GT.0) THEN
24275               WID2=WIDS(37,2)
24276               WID2=WID2*WIDS(17,2)
24277             ELSE
24278               WID2=WIDS(37,3)
24279               WID2=WID2*WIDS(17,3)
24280             ENDIF
24281           ENDIF
24282           WDTP(I)=FUDGE*WDTP(I)
24283           WDTP(0)=WDTP(0)+WDTP(I)
24284           IF(MDME(IDC,1).GT.0) THEN
24285             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24286             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24287             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24288             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24289           ENDIF
24290   180   CONTINUE
24291  
24292       ELSEIF(KFLA.EQ.21) THEN
24293 C...QCD:
24294 C***Note that widths are not given in dimensional quantities here.
24295         DO 190 I=1,MDCY(KC,3)
24296           IDC=I+MDCY(KC,2)-1
24297           IF(MDME(IDC,1).LT.0) GOTO 190
24298           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24299           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24300           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
24301           WID2=1D0
24302           IF(I.LE.8) THEN
24303 C...QCD -> q + qbar
24304             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24305             IF(I.EQ.6) WID2=WIDS(6,1)
24306             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24307           ENDIF
24308           WDTP(I)=FUDGE*WDTP(I)
24309           WDTP(0)=WDTP(0)+WDTP(I)
24310           IF(MDME(IDC,1).GT.0) THEN
24311             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24312             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24313             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24314             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24315           ENDIF
24316   190   CONTINUE
24317  
24318       ELSEIF(KFLA.EQ.22) THEN
24319 C...QED photon.
24320 C***Note that widths are not given in dimensional quantities here.
24321         DO 200 I=1,MDCY(KC,3)
24322           IDC=I+MDCY(KC,2)-1
24323           IF(MDME(IDC,1).LT.0) GOTO 200
24324           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24325           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24326           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
24327           WID2=1D0
24328           IF(I.LE.8) THEN
24329 C...QED -> q + qbar.
24330             EF=KCHG(I,1)/3D0
24331             FCOF=3D0*RADC
24332             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
24333             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24334             IF(I.EQ.6) WID2=WIDS(6,1)
24335             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24336           ELSEIF(I.LE.12) THEN
24337 C...QED -> l+ + l-.
24338             EF=KCHG(9+2*(I-8),1)/3D0
24339             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24340             IF(I.EQ.12) WID2=WIDS(17,1)
24341           ENDIF
24342           WDTP(I)=FUDGE*WDTP(I)
24343           WDTP(0)=WDTP(0)+WDTP(I)
24344           IF(MDME(IDC,1).GT.0) THEN
24345             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24346             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24347             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24348             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24349           ENDIF
24350   200   CONTINUE
24351  
24352       ELSEIF(KFLA.EQ.23) THEN
24353 C...Z0:
24354         ICASE=1
24355         XWC=1D0/(16D0*XW*XW1)
24356         FAC=(AEM*XWC/3D0)*SHR
24357   210   CONTINUE
24358         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
24359           VINT(111)=0D0
24360           VINT(112)=0D0
24361           VINT(114)=0D0
24362         ENDIF
24363         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24364           KFI=IABS(MINT(15))
24365           IF(KFI.GT.20) KFI=IABS(MINT(16))
24366           EI=KCHG(KFI,1)/3D0
24367           AI=SIGN(1D0,EI)
24368           VI=AI-4D0*EI*XWV
24369           SQMZ=PMAS(23,1)**2
24370           HZ=SHR*WDTP(0)
24371           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
24372           IF(MSTP(43).EQ.3) VINT(112)=
24373      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
24374           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
24375      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
24376         ENDIF
24377         DO 220 I=1,MDCY(KC,3)
24378           IDC=I+MDCY(KC,2)-1
24379           IF(MDME(IDC,1).LT.0) GOTO 220
24380           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24381           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24382           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
24383           WID2=1D0
24384           IF(I.LE.8) THEN
24385 C...Z0 -> q + qbar
24386             EF=KCHG(I,1)/3D0
24387             AF=SIGN(1D0,EF+0.1D0)
24388             VF=AF-4D0*EF*XWV
24389             FCOF=3D0*RADC
24390             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
24391             IF(I.EQ.6) WID2=WIDS(6,1)
24392             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24393           ELSEIF(I.LE.16) THEN
24394 C...Z0 -> l+ + l-, nu + nubar
24395             EF=KCHG(I+2,1)/3D0
24396             AF=SIGN(1D0,EF+0.1D0)
24397             VF=AF-4D0*EF*XWV
24398             FCOF=1D0
24399             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
24400           ENDIF
24401           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
24402           IF(ICASE.EQ.1) THEN
24403             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
24404      &      BE34
24405           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24406             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
24407      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
24408      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
24409           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
24410             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
24411             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
24412             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24413           ENDIF
24414           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
24415           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
24416           IF(MDME(IDC,1).GT.0) THEN
24417             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
24418      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
24419               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24420               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
24421      &        WDTE(I,MDME(IDC,1))
24422               WDTE(I,0)=WDTE(I,MDME(IDC,1))
24423               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24424             ENDIF
24425             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
24426               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
24427      &        VINT(111)+FGGF*WID2
24428               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
24429               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
24430      &        VINT(114)+FZZF*WID2
24431             ENDIF
24432           ENDIF
24433   220   CONTINUE
24434         IF(MINT(61).GE.1) ICASE=3-ICASE
24435         IF(ICASE.EQ.2) GOTO 210
24436  
24437       ELSEIF(KFLA.EQ.24) THEN
24438 C...W+/-:
24439         FAC=(AEM/(24D0*XW))*SHR
24440         DO 230 I=1,MDCY(KC,3)
24441           IDC=I+MDCY(KC,2)-1
24442           IF(MDME(IDC,1).LT.0) GOTO 230
24443           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24444           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24445           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
24446           WID2=1D0
24447           IF(I.LE.16) THEN
24448 C...W+/- -> q + qbar'
24449             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
24450             IF(KFLR.GT.0) THEN
24451               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
24452               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
24453               IF(I.GE.13) WID2=WID2*WIDS(7,3)
24454             ELSE
24455               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
24456               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
24457               IF(I.GE.13) WID2=WID2*WIDS(7,2)
24458             ENDIF
24459           ELSEIF(I.LE.20) THEN
24460 C...W+/- -> l+/- + nu
24461             FCOF=1D0
24462             IF(KFLR.GT.0) THEN
24463               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
24464             ELSE
24465               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
24466             ENDIF
24467           ENDIF
24468           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
24469      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
24470           WDTP(I)=FUDGE*WDTP(I)
24471           WDTP(0)=WDTP(0)+WDTP(I)
24472           IF(MDME(IDC,1).GT.0) THEN
24473             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24474             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24475             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24476             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24477           ENDIF
24478   230   CONTINUE
24479  
24480       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
24481 C...h0 (or H0, or A0):
24482         SHFS=SH
24483         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
24484         DO 270 I=1,MDCY(KFHIGG,3)
24485           IDC=I+MDCY(KFHIGG,2)-1
24486           IF(MDME(IDC,1).LT.0) GOTO 270
24487           KFC1=PYCOMP(KFDP(IDC,1))
24488           KFC2=PYCOMP(KFDP(IDC,2))
24489           RM1=PMAS(KFC1,1)**2/SH
24490           RM2=PMAS(KFC2,1)**2/SH
24491           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
24492      &    GOTO 270
24493           WID2=1D0
24494  
24495           IF(I.LE.8) THEN
24496 C...h0 -> q + qbar
24497             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
24498      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
24499 C...A0 behaves like beta, ho and H0 like beta**3.
24500             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
24501             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24502               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
24503               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
24504               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
24505                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
24506                 IF(IHIGG.NE.3) THEN
24507                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
24508      &            PARU(151+10*IHIGG))**2
24509                 ENDIF
24510               ENDIF
24511             ENDIF
24512             IF(I.EQ.6) WID2=WIDS(6,1)
24513             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24514           ELSEIF(I.LE.12) THEN
24515 C...h0 -> l+ + l-
24516             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
24517 C...A0 behaves like beta, ho and H0 like beta**3.
24518             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
24519             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
24520      &      PARU(153+10*IHIGG)**2
24521             IF(I.EQ.12) WID2=WIDS(17,1)
24522  
24523           ELSEIF(I.EQ.13) THEN
24524 C...h0 -> g + g; quark loop contribution only
24525             ETARE=0D0
24526             ETAIM=0D0
24527             DO 240 J=1,2*MSTP(1)
24528               EPS=(2D0*PMAS(J,1))**2/SH
24529 C...Loop integral; function of eps=4m^2/shat; different for A0.
24530               IF(EPS.LE.1D0) THEN
24531                 IF(EPS.GT.1D-4) THEN
24532                   ROOT=SQRT(1D0-EPS)
24533                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24534                 ELSE
24535                   RLN=LOG(4D0/EPS-2D0)
24536                 ENDIF
24537                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24538                 PHIIM=0.5D0*PARU(1)*RLN
24539               ELSE
24540                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24541                 PHIIM=0D0
24542               ENDIF
24543               IF(IHIGG.LE.2) THEN
24544                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
24545                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
24546               ELSE
24547                 ETAREJ=-0.5D0*EPS*PHIRE
24548                 ETAIMJ=-0.5D0*EPS*PHIIM
24549               ENDIF
24550 C...Couplings (=1 for standard model Higgs).
24551               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24552                 IF(MOD(J,2).EQ.1) THEN
24553                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
24554                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
24555                 ELSE
24556                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
24557                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
24558                 ENDIF
24559               ENDIF
24560               ETARE=ETARE+ETAREJ
24561               ETAIM=ETAIM+ETAIMJ
24562   240       CONTINUE
24563             ETA2=ETARE**2+ETAIM**2
24564             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
24565  
24566           ELSEIF(I.EQ.14) THEN
24567 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
24568             ETARE=0D0
24569             ETAIM=0D0
24570             JMAX=3*MSTP(1)+1
24571             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
24572             DO 250 J=1,JMAX
24573               IF(J.LE.2*MSTP(1)) THEN
24574                 EJ=KCHG(J,1)/3D0
24575                 EPS=(2D0*PMAS(J,1))**2/SH
24576               ELSEIF(J.LE.3*MSTP(1)) THEN
24577                 JL=2*(J-2*MSTP(1))-1
24578                 EJ=KCHG(10+JL,1)/3D0
24579                 EPS=(2D0*PMAS(10+JL,1))**2/SH
24580               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24581                 EPS=(2D0*PMAS(24,1))**2/SH
24582               ELSE
24583                 EPS=(2D0*PMAS(37,1))**2/SH
24584               ENDIF
24585 C...Loop integral; function of eps=4m^2/shat.
24586               IF(EPS.LE.1D0) THEN
24587                 IF(EPS.GT.1D-4) THEN
24588                   ROOT=SQRT(1D0-EPS)
24589                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24590                 ELSE
24591                   RLN=LOG(4D0/EPS-2D0)
24592                 ENDIF
24593                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24594                 PHIIM=0.5D0*PARU(1)*RLN
24595               ELSE
24596                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24597                 PHIIM=0D0
24598               ENDIF
24599               IF(J.LE.3*MSTP(1)) THEN
24600 C...Fermion loops: loop integral different for A0; charges.
24601                 IF(IHIGG.LE.2) THEN
24602                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
24603                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
24604                 ELSE
24605                   PHIPRE=-0.5D0*EPS*PHIRE
24606                   PHIPIM=-0.5D0*EPS*PHIIM
24607                 ENDIF
24608                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
24609                   EJC=3D0*EJ**2
24610                   EJH=PARU(151+10*IHIGG)
24611                 ELSEIF(J.LE.2*MSTP(1)) THEN
24612                   EJC=3D0*EJ**2
24613                   EJH=PARU(152+10*IHIGG)
24614                 ELSE
24615                   EJC=EJ**2
24616                   EJH=PARU(153+10*IHIGG)
24617                 ENDIF
24618                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
24619                 ETAREJ=EJC*EJH*PHIPRE
24620                 ETAIMJ=EJC*EJH*PHIPIM
24621               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24622 C...W loops: loop integral and charges.
24623                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
24624                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
24625                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24626                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
24627                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
24628                 ENDIF
24629               ELSE
24630 C...Charged H loops: loop integral and charges.
24631                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
24632      &          PARU(158+10*IHIGG+2*(IHIGG/3))
24633                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
24634                 ETAIMJ=-EPS**2*PHIIM*FACHHH
24635               ENDIF
24636               ETARE=ETARE+ETAREJ
24637               ETAIM=ETAIM+ETAIMJ
24638   250       CONTINUE
24639             ETA2=ETARE**2+ETAIM**2
24640             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
24641  
24642           ELSEIF(I.EQ.15) THEN
24643 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
24644             ETARE=0D0
24645             ETAIM=0D0
24646             JMAX=3*MSTP(1)+1
24647             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
24648             DO 260 J=1,JMAX
24649               IF(J.LE.2*MSTP(1)) THEN
24650                 EJ=KCHG(J,1)/3D0
24651                 AJ=SIGN(1D0,EJ+0.1D0)
24652                 VJ=AJ-4D0*EJ*XWV
24653                 EPS=(2D0*PMAS(J,1))**2/SH
24654                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
24655               ELSEIF(J.LE.3*MSTP(1)) THEN
24656                 JL=2*(J-2*MSTP(1))-1
24657                 EJ=KCHG(10+JL,1)/3D0
24658                 AJ=SIGN(1D0,EJ+0.1D0)
24659                 VJ=AJ-4D0*EJ*XWV
24660                 EPS=(2D0*PMAS(10+JL,1))**2/SH
24661                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
24662               ELSE
24663                 EPS=(2D0*PMAS(24,1))**2/SH
24664                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
24665               ENDIF
24666 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
24667               IF(EPS.LE.1D0) THEN
24668                 ROOT=SQRT(1D0-EPS)
24669                 IF(EPS.GT.1D-4) THEN
24670                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24671                 ELSE
24672                   RLN=LOG(4D0/EPS-2D0)
24673                 ENDIF
24674                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
24675                 PHIIM=0.5D0*PARU(1)*RLN
24676                 PSIRE=0.5D0*ROOT*RLN
24677                 PSIIM=-0.5D0*ROOT*PARU(1)
24678               ELSE
24679                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
24680                 PHIIM=0D0
24681                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
24682                 PSIIM=0D0
24683               ENDIF
24684               IF(EPSP.LE.1D0) THEN
24685                 ROOT=SQRT(1D0-EPSP)
24686                 IF(EPSP.GT.1D-4) THEN
24687                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
24688                 ELSE
24689                   RLN=LOG(4D0/EPSP-2D0)
24690                 ENDIF
24691                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
24692                 PHIIMP=0.5D0*PARU(1)*RLN
24693                 PSIREP=0.5D0*ROOT*RLN
24694                 PSIIMP=-0.5D0*ROOT*PARU(1)
24695               ELSE
24696                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
24697                 PHIIMP=0D0
24698                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
24699                 PSIIMP=0D0
24700               ENDIF
24701               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
24702      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
24703               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
24704      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
24705               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
24706               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
24707               IF(J.LE.3*MSTP(1)) THEN
24708 C...Fermion loops: loop integral different for A0; charges.
24709                 IF(IHIGG.EQ.3) FXYRE=0D0
24710                 IF(IHIGG.EQ.3) FXYIM=0D0
24711                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
24712                   EJC=-3D0*EJ*VJ
24713                   EJH=PARU(151+10*IHIGG)
24714                 ELSEIF(J.LE.2*MSTP(1)) THEN
24715                   EJC=-3D0*EJ*VJ
24716                   EJH=PARU(152+10*IHIGG)
24717                 ELSE
24718                   EJC=-EJ*VJ
24719                   EJH=PARU(153+10*IHIGG)
24720                 ENDIF
24721                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
24722                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
24723                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
24724               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
24725 C...W loops: loop integral and charges.
24726                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
24727                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
24728                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
24729                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
24730                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
24731                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
24732                 ENDIF
24733               ELSE
24734 C...Charged H loops: loop integral and charges.
24735                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
24736      &          PARU(158+10*IHIGG+2*(IHIGG/3))
24737                 ETAREJ=FACHHH*FXYRE
24738                 ETAIMJ=FACHHH*FXYIM
24739               ENDIF
24740               ETARE=ETARE+ETAREJ
24741               ETAIM=ETAIM+ETAIMJ
24742   260       CONTINUE
24743             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
24744             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
24745             WID2=WIDS(23,2)
24746  
24747           ELSEIF(I.LE.17) THEN
24748 C...h0 -> Z0 + Z0, W+ + W-
24749             PM1=PMAS(IABS(KFDP(IDC,1)),1)
24750             PG1=PMAS(IABS(KFDP(IDC,1)),2)
24751             IF(MINT(62).GE.1) THEN
24752               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
24753      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
24754      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
24755                 MOFSV(IHIGG,I-15)=0
24756                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
24757      &          1D0-4D0*RM1))
24758                 WID2=1D0
24759               ELSE
24760                 MOFSV(IHIGG,I-15)=1
24761                 RMAS=SQRT(MAX(0D0,SH))
24762                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
24763      &          WID2)
24764                 WIDWSV(IHIGG,I-15)=WIDW
24765                 WID2SV(IHIGG,I-15)=WID2
24766               ENDIF
24767             ELSE
24768               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
24769                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
24770      &          1D0-4D0*RM1))
24771                 WID2=1D0
24772               ELSE
24773                 WIDW=WIDWSV(IHIGG,I-15)
24774                 WID2=WID2SV(IHIGG,I-15)
24775               ENDIF
24776             ENDIF
24777             WDTP(I)=FAC*WIDW/(2D0*(18-I))
24778             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
24779             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
24780      &      PARU(138+I+10*IHIGG)**2
24781             WID2=WID2*WIDS(7+I,1)
24782  
24783           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
24784 C...H0 -> Z0 + h0, A0-> Z0 + h0
24785             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
24786      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24787             IF(IHIGG.EQ.2) THEN
24788              WDTP(I)=WDTP(I)*PARU(179)**2
24789             ELSEIF(IHIGG.EQ.3) THEN
24790              WDTP(I)=WDTP(I)*PARU(186)**2
24791             ENDIF
24792             WID2=WIDS(23,2)*WIDS(25,2)
24793  
24794           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
24795 C...H0 -> h0 + h0, A0-> h0 + h0
24796             WDTP(I)=FAC*0.25D0*
24797      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24798             IF(IHIGG.EQ.2) THEN
24799              WDTP(I)=WDTP(I)*PARU(176)**2
24800             ELSEIF(IHIGG.EQ.3) THEN
24801              WDTP(I)=WDTP(I)*PARU(169)**2
24802             ENDIF
24803             WID2=WIDS(25,1)
24804           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
24805 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
24806             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
24807      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24808      &      *PARU(195+IHIGG)**2
24809             IF(I.EQ.20) THEN
24810               WID2=WIDS(24,2)*WIDS(37,3)
24811             ELSEIF(I.EQ.21) THEN
24812               WID2=WIDS(24,3)*WIDS(37,2)
24813             ENDIF
24814  
24815           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
24816 C...H0 -> Z0 + A0.
24817             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
24818      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
24819             WID2=WIDS(36,2)*WIDS(23,2)
24820  
24821           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
24822 C...H0 -> h0 + A0.
24823             WDTP(I)=FAC*0.5D0*PARU(180)**2*
24824      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24825             WID2=WIDS(25,2)*WIDS(36,2)
24826  
24827           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
24828 C...H0 -> A0 + A0
24829             WDTP(I)=FAC*0.25D0*PARU(177)**2*
24830      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
24831             WID2=WIDS(36,1)
24832  
24833 CMRENNA++
24834           ELSE
24835 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
24836             RM10=RM1*SH/PMR**2
24837             RM20=RM2*SH/PMR**2
24838             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
24839             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
24840             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
24841               WFAC=0D0
24842             ELSE
24843               WFAC=WFAC/WFAC0
24844             ENDIF
24845             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
24846 CMRENNA--
24847             IF(KFC2.EQ.KFC1) THEN
24848               WID2=WIDS(KFC1,1)
24849             ELSE
24850               KSGN1=2
24851               IF(KFDP(IDC,1).LT.0) KSGN1=3
24852               KSGN2=2
24853               IF(KFDP(IDC,2).LT.0) KSGN2=3
24854               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
24855             ENDIF
24856           ENDIF
24857           WDTP(I)=FUDGE*WDTP(I)
24858           WDTP(0)=WDTP(0)+WDTP(I)
24859           IF(MDME(IDC,1).GT.0) THEN
24860             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24861             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24862             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24863             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24864           ENDIF
24865   270   CONTINUE
24866  
24867       ELSEIF(KFLA.EQ.32) THEN
24868 C...Z'0:
24869         ICASE=1
24870         XWC=1D0/(16D0*XW*XW1)
24871         FAC=(AEM*XWC/3D0)*SHR
24872         VINT(117)=0D0
24873   280   CONTINUE
24874         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
24875           VINT(111)=0D0
24876           VINT(112)=0D0
24877           VINT(113)=0D0
24878           VINT(114)=0D0
24879           VINT(115)=0D0
24880           VINT(116)=0D0
24881         ENDIF
24882         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24883           KFAI=IABS(MINT(15))
24884           EI=KCHG(KFAI,1)/3D0
24885           AI=SIGN(1D0,EI+0.1D0)
24886           VI=AI-4D0*EI*XWV
24887           KFAIC=1
24888           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
24889           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
24890           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
24891           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
24892             VPI=PARU(119+2*KFAIC)
24893             API=PARU(120+2*KFAIC)
24894           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
24895             VPI=PARJ(178+2*KFAIC)
24896             API=PARJ(179+2*KFAIC)
24897           ELSE
24898             VPI=PARJ(186+2*KFAIC)
24899             API=PARJ(187+2*KFAIC)
24900           ENDIF
24901           SQMZ=PMAS(23,1)**2
24902           HZ=SHR*VINT(117)
24903           SQMZP=PMAS(32,1)**2
24904           HZP=SHR*WDTP(0)
24905           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
24906      &    MSTP(44).EQ.7) VINT(111)=1D0
24907           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
24908      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
24909           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
24910      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
24911           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
24912      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
24913           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
24914      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
24915      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
24916           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
24917      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
24918         ENDIF
24919         DO 290 I=1,MDCY(KC,3)
24920           IDC=I+MDCY(KC,2)-1
24921           IF(MDME(IDC,1).LT.0) GOTO 290
24922           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24923           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24924           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
24925           WID2=1D0
24926           IF(I.LE.16) THEN
24927             IF(I.LE.8) THEN
24928 C...Z'0 -> q + qbar
24929               EF=KCHG(I,1)/3D0
24930               AF=SIGN(1D0,EF+0.1D0)
24931               VF=AF-4D0*EF*XWV
24932               IF(I.LE.2) THEN
24933                 VPF=PARU(123-2*MOD(I,2))
24934                 APF=PARU(124-2*MOD(I,2))
24935               ELSEIF(I.LE.4) THEN
24936                 VPF=PARJ(182-2*MOD(I,2))
24937                 APF=PARJ(183-2*MOD(I,2))
24938               ELSE
24939                 VPF=PARJ(190-2*MOD(I,2))
24940                 APF=PARJ(191-2*MOD(I,2))
24941               ENDIF
24942               FCOF=3D0*RADC
24943               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
24944      &        PYHFTH(SH,SH*RM1,1D0)
24945               IF(I.EQ.6) WID2=WIDS(6,1)
24946               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24947             ELSEIF(I.LE.16) THEN
24948 C...Z'0 -> l+ + l-, nu + nubar
24949               EF=KCHG(I+2,1)/3D0
24950               AF=SIGN(1D0,EF+0.1D0)
24951               VF=AF-4D0*EF*XWV
24952               IF(I.LE.10) THEN
24953                 VPF=PARU(127-2*MOD(I,2))
24954                 APF=PARU(128-2*MOD(I,2))
24955               ELSEIF(I.LE.12) THEN
24956                 VPF=PARJ(186-2*MOD(I,2))
24957                 APF=PARJ(187-2*MOD(I,2))
24958               ELSE
24959                 VPF=PARJ(194-2*MOD(I,2))
24960                 APF=PARJ(195-2*MOD(I,2))
24961               ENDIF
24962               FCOF=1D0
24963               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
24964             ENDIF
24965             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
24966             IF(ICASE.EQ.1) THEN
24967               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24968               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
24969      &        APF**2*(1D0-4D0*RM1))*BE34
24970             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24971               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
24972      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
24973      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
24974      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
24975      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
24976      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
24977             ELSEIF(MINT(61).EQ.2) THEN
24978               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
24979               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
24980               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
24981               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
24982               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
24983      &        BE34
24984               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
24985      &        BE34
24986             ENDIF
24987           ELSEIF(I.EQ.17) THEN
24988 C...Z'0 -> W+ + W-
24989             WDTPZP=PARU(129)**2*XW1**2*
24990      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
24991      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
24992             IF(ICASE.EQ.1) THEN
24993               WDTPZ=0D0
24994               WDTP(I)=FAC*WDTPZP
24995             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
24996               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
24997             ELSEIF(MINT(61).EQ.2) THEN
24998               FGGF=0D0
24999               FGZF=0D0
25000               FGZPF=0D0
25001               FZZF=0D0
25002               FZZPF=0D0
25003               FZPZPF=WDTPZP
25004             ENDIF
25005             WID2=WIDS(24,1)
25006           ELSEIF(I.EQ.18) THEN
25007 C...Z'0 -> H+ + H-
25008             CZC=2D0*(1D0-2D0*XW)
25009             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
25010             IF(ICASE.EQ.1) THEN
25011               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
25012               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
25013             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25014               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
25015      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
25016      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
25017      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
25018      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
25019             ELSEIF(MINT(61).EQ.2) THEN
25020               FGGF=0.25D0*BE34C
25021               FGZF=0.25D0*PARU(142)*CZC*BE34C
25022               FGZPF=0.25D0*PARU(143)*CZC*BE34C
25023               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
25024               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
25025               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
25026             ENDIF
25027             WID2=WIDS(37,1)
25028           ELSEIF(I.EQ.19) THEN
25029 C...Z'0 -> Z0 + gamma.
25030           ELSEIF(I.EQ.20) THEN
25031 C...Z'0 -> Z0 + h0
25032             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25033             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
25034      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
25035             IF(ICASE.EQ.1) THEN
25036               WDTPZ=0D0
25037               WDTP(I)=FAC*WDTPZP
25038             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25039               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
25040             ELSEIF(MINT(61).EQ.2) THEN
25041               FGGF=0D0
25042               FGZF=0D0
25043               FGZPF=0D0
25044               FZZF=0D0
25045               FZZPF=0D0
25046               FZPZPF=WDTPZP
25047             ENDIF
25048             WID2=WIDS(23,2)*WIDS(25,2)
25049           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
25050 C...Z' -> h0 + A0 or H0 + A0.
25051             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25052             IF(I.EQ.21) THEN
25053               CZAH=PARU(186)
25054               CZPAH=PARU(188)
25055             ELSE
25056               CZAH=PARU(187)
25057               CZPAH=PARU(189)
25058             ENDIF
25059             IF(ICASE.EQ.1) THEN
25060               WDTPZ=CZAH**2*BE34C
25061               WDTP(I)=FAC*CZPAH**2*BE34C
25062             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25063               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
25064      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
25065      &        VINT(116))*BE34C
25066             ELSEIF(MINT(61).EQ.2) THEN
25067               FGGF=0D0
25068               FGZF=0D0
25069               FGZPF=0D0
25070               FZZF=CZAH**2*BE34C
25071               FZZPF=CZAH*CZPAH*BE34C
25072               FZPZPF=CZPAH**2*BE34C
25073             ENDIF
25074             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
25075             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
25076           ENDIF
25077           IF(ICASE.EQ.1) THEN
25078             VINT(117)=VINT(117)+FAC*WDTPZ
25079             WDTP(I)=FUDGE*WDTP(I)
25080             WDTP(0)=WDTP(0)+WDTP(I)
25081           ENDIF
25082           IF(MDME(IDC,1).GT.0) THEN
25083             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
25084      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
25085               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25086               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
25087      &        WDTE(I,MDME(IDC,1))
25088               WDTE(I,0)=WDTE(I,MDME(IDC,1))
25089               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25090             ENDIF
25091             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25092               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
25093      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
25094               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
25095      &        FGZF*WID2
25096               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
25097      &        FGZPF*WID2
25098               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
25099      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
25100               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
25101      &        FZZPF*WID2
25102               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
25103      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
25104             ENDIF
25105           ENDIF
25106   290   CONTINUE
25107         IF(MINT(61).GE.1) ICASE=3-ICASE
25108         IF(ICASE.EQ.2) GOTO 280
25109  
25110       ELSEIF(KFLA.EQ.34) THEN
25111 C...W'+/-:
25112         FAC=(AEM/(24D0*XW))*SHR
25113         DO 300 I=1,MDCY(KC,3)
25114           IDC=I+MDCY(KC,2)-1
25115           IF(MDME(IDC,1).LT.0) GOTO 300
25116           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25117           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25118           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
25119           WID2=1D0
25120           IF(I.LE.20) THEN
25121             IF(I.LE.16) THEN
25122 C...W'+/- -> q + qbar'
25123               FCOF=3D0*RADC*(PARU(131)**2+PARU(132)**2)*
25124      &        VCKM((I-1)/4+1,MOD(I-1,4)+1)
25125               IF(KFLR.GT.0) THEN
25126                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
25127                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
25128                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
25129               ELSE
25130                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
25131                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
25132                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
25133               ENDIF
25134             ELSEIF(I.LE.20) THEN
25135 C...W'+/- -> l+/- + nu
25136               FCOF=PARU(133)**2+PARU(134)**2
25137               IF(KFLR.GT.0) THEN
25138                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25139               ELSE
25140                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25141               ENDIF
25142             ENDIF
25143             WDTP(I)=FAC*FCOF*0.5D0*(2D0-RM1-RM2-(RM1-RM2)**2)*
25144      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25145           ELSEIF(I.EQ.21) THEN
25146 C...W'+/- -> W+/- + Z0
25147             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
25148      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25149      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
25150             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
25151             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
25152           ELSEIF(I.EQ.23) THEN
25153 C...W'+/- -> W+/- + h0
25154             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25155             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
25156             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25157             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25158           ENDIF
25159           WDTP(I)=FUDGE*WDTP(I)
25160           WDTP(0)=WDTP(0)+WDTP(I)
25161           IF(MDME(IDC,1).GT.0) THEN
25162             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25163             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25164             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25165             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25166           ENDIF
25167   300   CONTINUE
25168  
25169       ELSEIF(KFLA.EQ.37) THEN
25170 C...H+/-:
25171 C        IF(MSTP(49).EQ.0) THEN
25172         SHFS=SH
25173 C        ELSE
25174 C          SHFS=PMAS(37,1)**2
25175 C        ENDIF
25176         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
25177         DO 310 I=1,MDCY(KC,3)
25178           IDC=I+MDCY(KC,2)-1
25179           IF(MDME(IDC,1).LT.0) GOTO 310
25180           KFC1=PYCOMP(KFDP(IDC,1))
25181           KFC2=PYCOMP(KFDP(IDC,2))
25182           RM1=PMAS(KFC1,1)**2/SH
25183           RM2=PMAS(KFC2,1)**2/SH
25184           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
25185           WID2=1D0
25186           IF(I.LE.4) THEN
25187 C...H+/- -> q + qbar'
25188             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
25189             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
25190             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
25191      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
25192      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25193             IF(KFLR.GT.0) THEN
25194               IF(I.EQ.3) WID2=WIDS(6,2)
25195               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
25196             ELSE
25197               IF(I.EQ.3) WID2=WIDS(6,3)
25198               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
25199             ENDIF
25200           ELSEIF(I.LE.8) THEN
25201 C...H+/- -> l+/- + nu
25202             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
25203      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
25204      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25205             IF(KFLR.GT.0) THEN
25206               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
25207             ELSE
25208               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
25209             ENDIF
25210           ELSEIF(I.EQ.9) THEN
25211 C...H+/- -> W+/- + h0.
25212             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
25213      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25214             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25215             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25216  
25217 CMRENNA++
25218           ELSE
25219 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
25220             RM10=RM1*SH/PMR**2
25221             RM20=RM2*SH/PMR**2
25222             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
25223             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
25224             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
25225               WFAC=0D0
25226             ELSE
25227               WFAC=WFAC/WFAC0
25228             ENDIF
25229             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
25230 CMRENNA--
25231             KSGN1=2
25232             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
25233             KSGN2=2
25234             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
25235             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
25236           ENDIF
25237           WDTP(I)=FUDGE*WDTP(I)
25238           WDTP(0)=WDTP(0)+WDTP(I)
25239           IF(MDME(IDC,1).GT.0) THEN
25240             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25241             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25242             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25243             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25244           ENDIF
25245   310   CONTINUE
25246  
25247       ELSEIF(KFLA.EQ.41) THEN
25248 C...R:
25249         FAC=(AEM/(12D0*XW))*SHR
25250         DO 320 I=1,MDCY(KC,3)
25251           IDC=I+MDCY(KC,2)-1
25252           IF(MDME(IDC,1).LT.0) GOTO 320
25253           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25254           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25255           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
25256           WID2=1D0
25257           IF(I.LE.6) THEN
25258 C...R -> q + qbar'
25259             FCOF=3D0*RADC
25260           ELSEIF(I.LE.9) THEN
25261 C...R -> l+ + l'-
25262             FCOF=1D0
25263           ENDIF
25264           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25265      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25266           IF(KFLR.GT.0) THEN
25267             IF(I.EQ.4) WID2=WIDS(6,3)
25268             IF(I.EQ.5) WID2=WIDS(7,3)
25269             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
25270             IF(I.EQ.9) WID2=WIDS(17,3)
25271           ELSE
25272             IF(I.EQ.4) WID2=WIDS(6,2)
25273             IF(I.EQ.5) WID2=WIDS(7,2)
25274             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
25275             IF(I.EQ.9) WID2=WIDS(17,2)
25276           ENDIF
25277           WDTP(I)=FUDGE*WDTP(I)
25278           WDTP(0)=WDTP(0)+WDTP(I)
25279           IF(MDME(IDC,1).GT.0) THEN
25280             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25281             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25282             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25283             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25284           ENDIF
25285   320   CONTINUE
25286  
25287       ELSEIF(KFLA.EQ.42) THEN
25288 C...LQ (leptoquark).
25289         FAC=(AEM/4D0)*PARU(151)*SHR
25290         DO 330 I=1,MDCY(KC,3)
25291           IDC=I+MDCY(KC,2)-1
25292           IF(MDME(IDC,1).LT.0) GOTO 330
25293           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25294           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25295           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
25296           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25297           WID2=1D0
25298           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
25299           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
25300           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
25301           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
25302           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
25303           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
25304           WDTP(I)=FUDGE*WDTP(I)
25305           WDTP(0)=WDTP(0)+WDTP(I)
25306           IF(MDME(IDC,1).GT.0) THEN
25307             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25308             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25309             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25310             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25311           ENDIF
25312   330   CONTINUE
25313  
25314       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
25315 C...Techni-pi0 and techni-pi0':
25316         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
25317         DO 340 I=1,MDCY(KC,3)
25318           IDC=I+MDCY(KC,2)-1
25319           IF(MDME(IDC,1).LT.0) GOTO 340
25320           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25321           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
25322           RM1=PM1**2/SH
25323           RM2=PM2**2/SH
25324           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
25325           WID2=1D0
25326 C...pi_tc -> g + g
25327           IF(I.EQ.8) THEN
25328             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
25329      &      /(8D0*PARU(1))*SH*SHR
25330             IF(KFLA.EQ.KTECHN+111) THEN
25331               FACP=FACP*RTCM(9)
25332             ELSE
25333               FACP=FACP*RTCM(10)
25334             ENDIF
25335             WDTP(I)=FACP
25336           ELSE
25337 C...pi_tc -> f + fbar.
25338             FCOF=1D0
25339             IKA=IABS(KFDP(IDC,1))
25340             IF(IKA.LT.10) FCOF=3D0*RADC
25341             HM1=PM1
25342             HM2=PM2
25343             IF(IKA.GE.4.AND.IKA.LE.6) THEN
25344                FCOF=FCOF*RTCM(1+IKA)**2
25345                HM1=PYMRUN(KFDP(IDC,1),SH)
25346                HM2=PYMRUN(KFDP(IDC,2),SH)
25347             ELSEIF(IKA.EQ.15) THEN
25348                FCOF=FCOF*RTCM(8)**2
25349             ENDIF
25350             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
25351      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25352           ENDIF
25353           WDTP(I)=FUDGE*WDTP(I)
25354           WDTP(0)=WDTP(0)+WDTP(I)
25355           IF(MDME(IDC,1).GT.0) THEN
25356             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25357             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25358             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25359             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25360           ENDIF
25361   340   CONTINUE
25362  
25363       ELSEIF(KFLA.EQ.KTECHN+211) THEN
25364 C...pi+_tc
25365         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
25366         DO 350 I=1,MDCY(KC,3)
25367           IDC=I+MDCY(KC,2)-1
25368           IF(MDME(IDC,1).LT.0) GOTO 350
25369           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25370           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
25371           PM3=0D0
25372           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
25373           RM1=PM1**2/SH
25374           RM2=PM2**2/SH
25375           RM3=PM3**2/SH
25376           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
25377           WID2=1D0
25378 C...pi_tc -> f + f'.
25379           FCOF=1D0
25380           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
25381 C...pi_tc+ -> W b b~
25382           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
25383             FCOF=3D0*RADC
25384             XMT2=PMAS(6,1)**2/SH
25385             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
25386             KFC3=PYCOMP(KFDP(IDC,3))
25387             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
25388             CHECK = SQRT(RM1)
25389             T0 = (1D0-CHECK**2)*
25390      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
25391      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
25392             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
25393      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
25394             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
25395             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
25396      &      +T3*LOG(CHECK))
25397             IF(KFLR.GT.0) THEN
25398                WID2=WIDS(24,2)
25399             ELSE
25400                WID2=WIDS(24,3)
25401             ENDIF
25402           ELSE
25403             FCOF=1D0
25404             IKA=IABS(KFDP(IDC,1))
25405             IF(IKA.LT.10) FCOF=3D0*RADC
25406             HM1=PM1
25407             HM2=PM2
25408             IF(I.GE.1.AND.I.LE.5) THEN
25409               IF(I.LE.2) THEN
25410                 FCOF=FCOF*RTCM(5)**2
25411               ELSEIF(I.LE.4) THEN
25412                 FCOF=FCOF*RTCM(6)**2
25413               ELSEIF(I.EQ.5) THEN
25414                 FCOF=FCOF*RTCM(7)**2
25415               ENDIF
25416               HM1=PYMRUN(KFDP(IDC,1),SH)
25417               HM2=PYMRUN(KFDP(IDC,2),SH)
25418             ELSEIF(I.EQ.8) THEN
25419               FCOF=FCOF*RTCM(8)**2
25420             ENDIF
25421             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
25422      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25423           ENDIF
25424           WDTP(I)=FUDGE*WDTP(I)
25425           WDTP(0)=WDTP(0)+WDTP(I)
25426           IF(MDME(IDC,1).GT.0) THEN
25427             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25428             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25429             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25430             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25431           ENDIF
25432   350     CONTINUE
25433  
25434       ELSEIF(KFLA.EQ.KTECHN+331) THEN
25435 C...Techni-eta.
25436         FAC=(SH/PARP(46)**2)*SHR
25437         DO 360 I=1,MDCY(KC,3)
25438           IDC=I+MDCY(KC,2)-1
25439           IF(MDME(IDC,1).LT.0) GOTO 360
25440           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25441           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25442           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
25443           WID2=1D0
25444           IF(I.LE.2) THEN
25445             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
25446             IF(I.EQ.2) WID2=WIDS(6,1)
25447           ELSE
25448             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
25449           ENDIF
25450           WDTP(I)=FUDGE*WDTP(I)
25451           WDTP(0)=WDTP(0)+WDTP(I)
25452           IF(MDME(IDC,1).GT.0) THEN
25453             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25454             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25455             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25456             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25457           ENDIF
25458   360   CONTINUE
25459  
25460       ELSEIF(KFLA.EQ.KTECHN+113) THEN
25461 C...Techni-rho0:
25462         ALPRHT=2.16D0*(3D0/ITCM(1))
25463         FAC=(ALPRHT/12D0)*SHR
25464         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
25465         SQMZ=PMAS(23,1)**2
25466         SQMW=PMAS(24,1)**2
25467         SHP=SH
25468         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
25469         GMMZ=SHR*WDTPP(0)
25470         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
25471         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
25472         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
25473         DO 370 I=1,MDCY(KC,3)
25474           IDC=I+MDCY(KC,2)-1
25475           IF(MDME(IDC,1).LT.0) GOTO 370
25476           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25477           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25478           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
25479           WID2=1D0
25480           IF(I.EQ.1) THEN
25481 C...rho_tc0 -> W+ + W-.
25482 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
25483             WDTP(I)=FAC*RTCM(3)**4*
25484      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25485      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25486      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
25487      &      RTCM(3)**2/4D0/XW/24D0/RTCM(13)**2*SHR**3
25488             WID2=WIDS(24,1)
25489           ELSEIF(I.EQ.2) THEN
25490 C...rho_tc0 -> W+ + pi_tc-.
25491 C... Multiplied by  2 for pi_T^+ W^-_T + pi_T^- W^+_T  
25492             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25493      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25494      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25495      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM1)*
25496      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25497             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
25498           ELSEIF(I.EQ.3) THEN
25499 C...rho_tc0 -> pi_tc+ + W-.
25500             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25501      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25502      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25503      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM2)*
25504      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25505             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
25506           ELSEIF(I.EQ.4) THEN
25507 C...rho_tc0 -> pi_tc+ + pi_tc-.
25508             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
25509      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25510             WID2=WIDS(PYCOMP(KTECHN+211),1)
25511           ELSEIF(I.EQ.5) THEN
25512 C...rho_tc0 -> gamma + pi_tc0
25513             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25514      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25515      &      SHR**3
25516             WID2=WIDS(PYCOMP(KTECHN+111),2)
25517           ELSEIF(I.EQ.6) THEN
25518 C...rho_tc0 -> gamma + pi_tc0'
25519             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25520      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
25521             WID2=WIDS(PYCOMP(KTECHN+221),2)
25522           ELSEIF(I.EQ.7) THEN
25523 C...rho_tc0 -> Z0 + pi_tc0
25524             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25525      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25526      &      XW/XW1*SHR**3
25527             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
25528           ELSEIF(I.EQ.8) THEN
25529 C...rho_tc0 -> Z0 + pi_tc0'
25530             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25531      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
25532      &      XW/XW1*SHR**3
25533             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
25534           ELSEIF(I.EQ.9) THEN
25535 C...rho_tc0 -> gamma + Z0
25536             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25537      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25538             WID2=WIDS(23,2)
25539           ELSEIF(I.EQ.10) THEN
25540 C...rho_tc0 -> Z0 + Z0
25541             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25542      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2*XW/XW1/24D0/RTCM(12)**2*
25543      &      SHR**3
25544             WID2=WIDS(23,1)
25545           ELSE
25546 C...rho_tc0 -> f + fbar.
25547             WID2=1D0
25548             IF(I.LE.18) THEN
25549               IA=I-10
25550               FCOF=3D0*RADC
25551               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
25552             ELSE
25553               IA=I-6
25554               FCOF=1D0
25555               IF(IA.GE.17) WID2=WIDS(IA,1)
25556             ENDIF
25557             EI=KCHG(IA,1)/3D0
25558             AI=SIGN(1D0,EI+0.1D0)
25559             VI=AI-4D0*EI*XWV
25560             VALI=0.5D0*(VI+AI)
25561             VARI=0.5D0*(VI-AI)
25562             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
25563      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
25564      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
25565      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
25566           ENDIF
25567           WDTP(I)=FUDGE*WDTP(I)
25568           WDTP(0)=WDTP(0)+WDTP(I)
25569           IF(MDME(IDC,1).GT.0) THEN
25570             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25571             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25572             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25573             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25574           ENDIF
25575   370   CONTINUE
25576  
25577       ELSEIF(KFLA.EQ.KTECHN+213) THEN
25578 C...Techni-rho+/-:
25579         ALPRHT=2.16D0*(3D0/ITCM(1))
25580         FAC=(ALPRHT/12D0)*SHR
25581         SQMZ=PMAS(23,1)**2
25582         SQMW=PMAS(24,1)**2
25583         SHP=SH
25584         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
25585         GMMW=SHR*WDTPP(0)
25586         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
25587      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
25588         DO 380 I=1,MDCY(KC,3)
25589           IDC=I+MDCY(KC,2)-1
25590           IF(MDME(IDC,1).LT.0) GOTO 380
25591           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25592           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25593           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
25594           WID2=1D0
25595           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25596 c            WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
25597 c     &      /3D0*SHR**3
25598           IF(I.EQ.1) THEN
25599 C...rho_tc+ -> W+ + Z0.
25600 C......Goldstone
25601             WDTP(I)=FAC*RTCM(3)**4*
25602      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25603             VA2=RTCM(3)**2*(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(12)**2
25604             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW/XW1
25605 C......W_L Z_T
25606             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM2)+PCM**2*VA2)
25607      &      /3D0*SHR**3
25608             VA2=0D0
25609             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW
25610 C......W_T Z_L
25611             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
25612      &      /3D0*SHR**3
25613             IF(KFLR.GT.0) THEN
25614               WID2=WIDS(24,2)*WIDS(23,2)
25615             ELSE
25616               WID2=WIDS(24,3)*WIDS(23,2)
25617             ENDIF
25618           ELSEIF(I.EQ.2) THEN
25619 C...rho_tc+ -> W+ + pi_tc0.
25620             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25621      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25622      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25623      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
25624      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
25625             IF(KFLR.GT.0) THEN
25626               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
25627             ELSE
25628               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
25629             ENDIF
25630           ELSEIF(I.EQ.3) THEN
25631 C...rho_tc+ -> pi_tc+ + Z0.
25632             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
25633      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25634      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25635      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
25636      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
25637      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25638      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25639      &      SHR**3*XW/XW1
25640             IF(KFLR.GT.0) THEN
25641               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
25642             ELSE
25643               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
25644             ENDIF
25645           ELSEIF(I.EQ.4) THEN
25646 C...rho_tc+ -> pi_tc+ + pi_tc0.
25647             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
25648      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25649             IF(KFLR.GT.0) THEN
25650               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
25651             ELSE
25652               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
25653             ENDIF
25654           ELSEIF(I.EQ.5) THEN
25655 C...rho_tc+ -> pi_tc+ + gamma
25656             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25657      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
25658      &      SHR**3
25659             IF(KFLR.GT.0) THEN
25660               WID2=WIDS(PYCOMP(KTECHN+211),2)
25661             ELSE
25662               WID2=WIDS(PYCOMP(KTECHN+211),3)
25663             ENDIF
25664           ELSEIF(I.EQ.6) THEN
25665 C...rho_tc+ -> W+ + pi_tc0'
25666             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25667      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
25668             IF(KFLR.GT.0) THEN
25669               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
25670             ELSE
25671               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
25672             ENDIF
25673           ELSEIF(I.EQ.7) THEN
25674 C...rho_tc+ -> W+ + gamma
25675             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25676      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25677             IF(KFLR.GT.0) THEN
25678               WID2=WIDS(24,2)
25679             ELSE
25680               WID2=WIDS(24,3)
25681             ENDIF
25682           ELSE
25683 C...rho_tc+ -> f + fbar'.
25684             IA=I-7
25685             WID2=1D0
25686             IF(IA.LE.16) THEN
25687               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
25688               IF(KFLR.GT.0) THEN
25689                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
25690                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
25691                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
25692               ELSE
25693                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
25694                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
25695                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
25696               ENDIF
25697             ELSE
25698               FCOF=1D0
25699               IF(KFLR.GT.0) THEN
25700                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25701               ELSE
25702                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25703               ENDIF
25704             ENDIF
25705             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25706      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25707           ENDIF
25708           WDTP(I)=FUDGE*WDTP(I)
25709           WDTP(0)=WDTP(0)+WDTP(I)
25710           IF(MDME(IDC,1).GT.0) THEN
25711             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25712             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25713             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25714             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25715           ENDIF
25716   380   CONTINUE
25717  
25718       ELSEIF(KFLA.EQ.KTECHN+223) THEN
25719 C...Techni-omega:
25720         ALPRHT=2.16D0*(3D0/ITCM(1))
25721         FAC=(ALPRHT/12D0)*SHR
25722         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
25723         SQMZ=PMAS(23,1)**2
25724         SHP=SH
25725         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
25726         GMMZ=SHR*WDTPP(0)
25727         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
25728         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
25729         DO 390 I=1,MDCY(KC,3)
25730           IDC=I+MDCY(KC,2)-1
25731           IF(MDME(IDC,1).LT.0) GOTO 390
25732           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25733           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25734           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
25735           WID2=1D0
25736           IF(I.EQ.1) THEN
25737 C...omega_tc0 -> gamma + pi_tc0.
25738             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
25739      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
25740             WID2=WIDS(PYCOMP(KTECHN+111),2)
25741           ELSEIF(I.EQ.2) THEN
25742 C...omega_tc0 -> Z0 + pi_tc0
25743             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25744      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
25745      &      XW/XW1*SHR**3
25746             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
25747           ELSEIF(I.EQ.3) THEN
25748 C...omega_tc0 -> gamma + pi_tc0'
25749             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25750      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
25751      &      SHR**3
25752             WID2=WIDS(PYCOMP(KTECHN+221),2)
25753           ELSEIF(I.EQ.4) THEN
25754 C...omega_tc0 -> Z0 + pi_tc0'
25755             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25756      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
25757      &      XW/XW1*SHR**3
25758             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
25759           ELSEIF(I.EQ.5) THEN
25760 C...omega_tc0 -> W+ + pi_tc-
25761             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25762      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
25763      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
25764      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25765             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
25766           ELSEIF(I.EQ.6) THEN
25767 C...omega_tc0 -> pi_tc+ + W-
25768             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25769      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
25770      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
25771      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25772             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
25773           ELSEIF(I.EQ.7) THEN
25774 C...omega_tc0 -> W+ + W-.
25775 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
25776             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
25777      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
25778      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25779      &      RTCM(3)**2/4D0/XW/24D0/RTCM(12)**2*SHR**3
25780             WID2=WIDS(24,1)
25781           ELSEIF(I.EQ.8) THEN
25782 C...omega_tc0 -> pi_tc+ + pi_tc-.
25783             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
25784      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25785             WID2=WIDS(PYCOMP(KTECHN+211),1)
25786 C...omega_tc0 -> gamma + Z0
25787           ELSEIF(I.EQ.9) THEN
25788             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25789      &      RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
25790             WID2=WIDS(23,2)
25791 C...omega_tc0 -> Z0 + Z0
25792           ELSEIF(I.EQ.10) THEN
25793             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25794      &      RTCM(3)**2*(XW1-XW)**2/XW/XW1/4D0
25795      &      /24D0/RTCM(12)**2*SHR**3
25796             WID2=WIDS(23,1)
25797           ELSE
25798 C...omega_tc0 -> f + fbar.
25799             WID2=1D0
25800             IF(I.LE.18) THEN
25801               IA=I-10
25802               FCOF=3D0*RADC
25803               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
25804             ELSE
25805               IA=I-8
25806               FCOF=1D0
25807               IF(IA.GE.17) WID2=WIDS(IA,1)
25808             ENDIF
25809             EI=KCHG(IA,1)/3D0
25810             AI=SIGN(1D0,EI+0.1D0)
25811             VI=AI-4D0*EI*XWV
25812             VALI=-0.5D0*(VI+AI)
25813             VARI=-0.5D0*(VI-AI)
25814             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
25815      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
25816      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
25817      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
25818           ENDIF
25819           WDTP(I)=FUDGE*WDTP(I)
25820           WDTP(0)=WDTP(0)+WDTP(I)
25821           IF(MDME(IDC,1).GT.0) THEN
25822             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25823             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25824             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25825             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25826           ENDIF
25827   390   CONTINUE
25828  
25829 C.....V8 -> quark anti-quark
25830       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
25831         FAC=AS/6D0*SHR
25832         TANT3=RTCM(21)
25833         IF(ITCM(2).EQ.0) THEN
25834           IMDL=1
25835         ELSEIF(ITCM(2).EQ.1) THEN
25836           IMDL=2
25837         ENDIF
25838         DO 400 I=1,MDCY(KC,3)
25839           IDC=I+MDCY(KC,2)-1
25840           IF(MDME(IDC,1).LT.0) GOTO 400
25841           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
25842           RM1=PM1**2/SH
25843           IF(RM1.GT.0.25D0) GOTO 400
25844           WID2=1D0
25845           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
25846             FMIX=1D0/TANT3**2
25847           ELSE
25848             FMIX=TANT3**2
25849           ENDIF
25850           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
25851           IF(I.EQ.6) WID2=WIDS(6,1)
25852           WDTP(I)=FUDGE*WDTP(I)
25853           WDTP(0)=WDTP(0)+WDTP(I)
25854           IF(MDME(IDC,1).GT.0) THEN
25855             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25856             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25857             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25858             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25859           ENDIF
25860   400   CONTINUE
25861  
25862       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
25863         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
25864         CLEBF=0D0
25865         DO 410 I=1,MDCY(KC,3)
25866           IDC=I+MDCY(KC,2)-1
25867           IF(MDME(IDC,1).LT.0) GOTO 410
25868           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25869           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25870           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
25871           WID2=1D0
25872 C...pi_tc -> g + g
25873           IF(I.EQ.7) THEN
25874             IF(KFLA.EQ.KTECHN+100111) THEN
25875               CLEBG=4D0/3D0
25876             ELSE
25877               CLEBG=5D0/3D0
25878             ENDIF
25879             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
25880      &      /(2D0*PARU(1))*SH*SHR*CLEBG
25881             WDTP(I)=FACP
25882           ELSE
25883 C...pi_tc -> f + fbar.
25884             IF(I.EQ.6) WID2=WIDS(6,1)
25885             FCOF=1D0
25886             IKA=IABS(KFDP(IDC,1))
25887             IF(IKA.LT.10) FCOF=3D0*RADC
25888             HM1=PYMRUN(KFDP(IDC,1),SH)
25889             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
25890      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25891           ENDIF
25892           WDTP(I)=FUDGE*WDTP(I)
25893           WDTP(0)=WDTP(0)+WDTP(I)
25894           IF(MDME(IDC,1).GT.0) THEN
25895             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25896             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25897             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25898             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25899           ENDIF
25900   410   CONTINUE
25901  
25902       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
25903         FAC=AS/6D0*SHR
25904         ALPRHT=2.16D0*(3D0/ITCM(1))
25905         TANT3=RTCM(21)
25906         SIN2T=2D0*TANT3/(TANT3**2+1D0)
25907         SINT3=TANT3/SQRT(TANT3**2+1D0)
25908         CSXPP=RTCM(22)
25909         RM82=RTCM(27)**2
25910         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
25911      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
25912         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
25913      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
25914         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
25915      &  SINT3**2)*2D0
25916         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
25917      &  SINT3**2)*2D0
25918         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
25919  
25920         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
25921         GMV8=SHR*WDTPP(0)
25922         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
25923         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
25924         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
25925         IF(ITCM(2).EQ.0) THEN
25926           IMDL=1
25927         ELSE
25928           IMDL=2
25929         ENDIF
25930         DO 420 I=1,MDCY(KC,3)
25931           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
25932      &    KFLA.EQ.KTECHN+300113)) GOTO 420
25933           IDC=I+MDCY(KC,2)-1
25934           IF(MDME(IDC,1).LT.0) GOTO 420
25935           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25936           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25937           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
25938           WID2=1D0
25939           IF(I.LE.6) THEN
25940             IF(I.EQ.6) WID2=WIDS(6,1)
25941             XIG=1D0
25942             IF(KFLA.EQ.KTECHN+200113) THEN
25943               XIG=0D0
25944               XIJ=X12
25945             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
25946               XIG=0D0
25947               XIJ=X21
25948             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
25949               XIJ=X11
25950             ELSE
25951               XIJ=X22
25952             ENDIF
25953             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
25954               FMIX=1D0/TANT3/SIN2T
25955             ELSE
25956               FMIX=-TANT3/SIN2T
25957             ENDIF
25958             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
25959             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
25960           ELSEIF(I.EQ.7) THEN
25961             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
25962           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
25963             PSH=SHR*(1D0-RM1)/2D0
25964             WDTP(I)=AS/9D0*PSH**3/RM82
25965             IF(I.EQ.8) THEN
25966               WDTP(I)=2D0*WDTP(I)*CSXPP**2
25967               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
25968             ELSE
25969               WDTP(I)=5D0*WDTP(I)
25970               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
25971             ENDIF
25972           ENDIF
25973           WDTP(I)=FUDGE*WDTP(I)
25974           WDTP(0)=WDTP(0)+WDTP(I)
25975           IF(MDME(IDC,1).GT.0) THEN
25976             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25977             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25978             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25979             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25980           ENDIF
25981   420   CONTINUE
25982  
25983       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
25984 C...d* excited quark.
25985         FAC=(SH/RTCM(41)**2)*SHR
25986         DO 430 I=1,MDCY(KC,3)
25987           IDC=I+MDCY(KC,2)-1
25988           IF(MDME(IDC,1).LT.0) GOTO 430
25989           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25990           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25991           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
25992           WID2=1D0
25993           IF(I.EQ.1) THEN
25994 C...d* -> g + d.
25995             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
25996             WID2=1D0
25997           ELSEIF(I.EQ.2) THEN
25998 C...d* -> gamma + d.
25999             QF=-RTCM(43)/2D0+RTCM(44)/6D0
26000             WDTP(I)=FAC*AEM*QF**2/4D0
26001             WID2=1D0
26002           ELSEIF(I.EQ.3) THEN
26003 C...d* -> Z0 + d.
26004             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
26005             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26006      &      (1D0-RM1)**2*(2D0+RM1)
26007             WID2=WIDS(23,2)
26008           ELSEIF(I.EQ.4) THEN
26009 C...d* -> W- + u.
26010             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26011      &      (1D0-RM1)**2*(2D0+RM1)
26012             IF(KFLR.GT.0) WID2=WIDS(24,3)
26013             IF(KFLR.LT.0) WID2=WIDS(24,2)
26014           ENDIF
26015           WDTP(I)=FUDGE*WDTP(I)
26016           WDTP(0)=WDTP(0)+WDTP(I)
26017           IF(MDME(IDC,1).GT.0) THEN
26018             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26019             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26020             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26021             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26022           ENDIF
26023   430   CONTINUE
26024  
26025       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
26026 C...u* excited quark.
26027         FAC=(SH/RTCM(41)**2)*SHR
26028         DO 440 I=1,MDCY(KC,3)
26029           IDC=I+MDCY(KC,2)-1
26030           IF(MDME(IDC,1).LT.0) GOTO 440
26031           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26032           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26033           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
26034           WID2=1D0
26035           IF(I.EQ.1) THEN
26036 C...u* -> g + u.
26037             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
26038             WID2=1D0
26039           ELSEIF(I.EQ.2) THEN
26040 C...u* -> gamma + u.
26041             QF=RTCM(43)/2D0+RTCM(44)/6D0
26042             WDTP(I)=FAC*AEM*QF**2/4D0
26043             WID2=1D0
26044           ELSEIF(I.EQ.3) THEN
26045 C...u* -> Z0 + u.
26046             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
26047             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26048      &      (1D0-RM1)**2*(2D0+RM1)
26049             WID2=WIDS(23,2)
26050           ELSEIF(I.EQ.4) THEN
26051 C...u* -> W+ + d.
26052             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26053      &      (1D0-RM1)**2*(2D0+RM1)
26054             IF(KFLR.GT.0) WID2=WIDS(24,2)
26055             IF(KFLR.LT.0) WID2=WIDS(24,3)
26056           ENDIF
26057           WDTP(I)=FUDGE*WDTP(I)
26058           WDTP(0)=WDTP(0)+WDTP(I)
26059           IF(MDME(IDC,1).GT.0) THEN
26060             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26061             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26062             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26063             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26064           ENDIF
26065   440   CONTINUE
26066  
26067       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
26068 C...e* excited lepton.
26069         FAC=(SH/RTCM(41)**2)*SHR
26070         DO 450 I=1,MDCY(KC,3)
26071           IDC=I+MDCY(KC,2)-1
26072           IF(MDME(IDC,1).LT.0) GOTO 450
26073           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26074           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26075           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
26076           WID2=1D0
26077           IF(I.EQ.1) THEN
26078 C...e* -> gamma + e.
26079             QF=-RTCM(43)/2D0-RTCM(44)/2D0
26080             WDTP(I)=FAC*AEM*QF**2/4D0
26081             WID2=1D0
26082           ELSEIF(I.EQ.2) THEN
26083 C...e* -> Z0 + e.
26084             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26085             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26086      &      (1D0-RM1)**2*(2D0+RM1)
26087             WID2=WIDS(23,2)
26088           ELSEIF(I.EQ.3) THEN
26089 C...e* -> W- + nu.
26090             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26091      &      (1D0-RM1)**2*(2D0+RM1)
26092             IF(KFLR.GT.0) WID2=WIDS(24,3)
26093             IF(KFLR.LT.0) WID2=WIDS(24,2)
26094           ENDIF
26095           WDTP(I)=FUDGE*WDTP(I)
26096           WDTP(0)=WDTP(0)+WDTP(I)
26097           IF(MDME(IDC,1).GT.0) THEN
26098             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26099             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26100             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26101             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26102           ENDIF
26103   450   CONTINUE
26104  
26105       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
26106 C...nu*_e excited neutrino.
26107         FAC=(SH/RTCM(41)**2)*SHR
26108         DO 460 I=1,MDCY(KC,3)
26109           IDC=I+MDCY(KC,2)-1
26110           IF(MDME(IDC,1).LT.0) GOTO 460
26111           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26112           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26113           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
26114           WID2=1D0
26115           IF(I.EQ.1) THEN
26116 C...nu*_e -> Z0 + nu*_e.
26117             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26118             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26119      &      (1D0-RM1)**2*(2D0+RM1)
26120             WID2=WIDS(23,2)
26121           ELSEIF(I.EQ.2) THEN
26122 C...nu*_e -> W+ + e.
26123             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26124      &      (1D0-RM1)**2*(2D0+RM1)
26125             IF(KFLR.GT.0) WID2=WIDS(24,2)
26126             IF(KFLR.LT.0) WID2=WIDS(24,3)
26127           ENDIF
26128           WDTP(I)=FUDGE*WDTP(I)
26129           WDTP(0)=WDTP(0)+WDTP(I)
26130           IF(MDME(IDC,1).GT.0) THEN
26131             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26132             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26133             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26134             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26135           ENDIF
26136   460   CONTINUE
26137  
26138       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
26139 C...G* (graviton resonance):
26140         FAC=(PARP(50)**2/PARU(1))*SHR
26141         DO 470 I=1,MDCY(KC,3)
26142           IDC=I+MDCY(KC,2)-1
26143           IF(MDME(IDC,1).LT.0) GOTO 470
26144           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26145           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26146           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
26147           WID2=1D0
26148           IF(I.LE.8) THEN
26149 C...G* -> q + qbar
26150             FCOF=3D0*RADC
26151             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
26152      &      PYHFTH(SH,SH*RM1,1D0)
26153             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26154      &      (1D0+8D0*RM1/3D0)/320D0
26155             IF(I.EQ.6) WID2=WIDS(6,1)
26156             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
26157           ELSEIF(I.LE.16) THEN
26158 C...G* -> l+ + l-, nu + nubar
26159             FCOF=1D0
26160             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26161      &      (1D0+8D0*RM1/3D0)/320D0
26162             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
26163           ELSEIF(I.EQ.17) THEN
26164 C...G* -> g + g.
26165             WDTP(I)=FAC/20D0
26166           ELSEIF(I.EQ.18) THEN
26167 C...G* -> gamma + gamma.
26168             WDTP(I)=FAC/160D0
26169           ELSEIF(I.EQ.19) THEN
26170 C...G* -> Z0 + Z0.
26171             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26172      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
26173             WID2=WIDS(23,1)
26174           ELSEIF(I.EQ.20) THEN
26175 C...G* -> W+ + W-.
26176             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26177      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
26178             WID2=WIDS(24,1)
26179           ENDIF
26180           WDTP(I)=FUDGE*WDTP(I)
26181           WDTP(0)=WDTP(0)+WDTP(I)
26182           IF(MDME(IDC,1).GT.0) THEN
26183             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26184             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26185             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26186             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26187           ENDIF
26188   470   CONTINUE
26189  
26190       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
26191 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
26192         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
26193         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
26194         DO 480 I=1,MDCY(KC,3)
26195           IDC=I+MDCY(KC,2)-1
26196           IF(MDME(IDC,1).LT.0) GOTO 480
26197           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26198           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26199           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
26200           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
26201           WID2=1D0
26202           IF(I.LE.9) THEN
26203 C...nu_lR -> l- qbar q'
26204             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
26205             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
26206           ELSEIF(I.LE.18) THEN
26207 C...nu_lR -> l+ q qbar'
26208             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
26209             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
26210           ELSE
26211 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
26212             FCOF=1D0
26213             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
26214           ENDIF
26215           X=(PM1+PM2+PM3)/SHR
26216           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
26217           Y=(SHR/PMWR)**2
26218           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
26219           WDTP(I)=FAC*FCOF*FX*FY
26220           WDTP(I)=FUDGE*WDTP(I)
26221           WDTP(0)=WDTP(0)+WDTP(I)
26222           IF(MDME(IDC,1).GT.0) THEN
26223             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26224             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26225             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26226             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26227           ENDIF
26228   480   CONTINUE
26229  
26230       ELSEIF(KFLA.EQ.9900023) THEN
26231 C...Z_R0:
26232         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
26233         DO 490 I=1,MDCY(KC,3)
26234           IDC=I+MDCY(KC,2)-1
26235           IF(MDME(IDC,1).LT.0) GOTO 490
26236           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26237           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26238           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
26239           WID2=1D0
26240           SYMMET=1D0
26241           IF(I.LE.6) THEN
26242 C...Z_R0 -> q + qbar
26243             EF=KCHG(I,1)/3D0
26244             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
26245             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
26246             FCOF=3D0*RADC
26247             IF(I.EQ.6) WID2=WIDS(6,1)
26248           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
26249 C...Z_R0 -> l+ + l-
26250             AF=-(1D0-2D0*XW)
26251             VF=-1D0+4D0*XW
26252             FCOF=1D0
26253           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
26254 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
26255             AF=-2D0*XW
26256             VF=0D0
26257             FCOF=1D0
26258             SYMMET=0.5D0
26259           ELSEIF(I.LE.15) THEN
26260 C...Z0 -> nu_R + nu_R, assumed Majorana.
26261             AF=2D0*XW1
26262             VF=0D0
26263             FCOF=1D0
26264             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
26265             SYMMET=0.5D0
26266           ENDIF
26267           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
26268      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
26269           WDTP(I)=FUDGE*WDTP(I)
26270           WDTP(0)=WDTP(0)+WDTP(I)
26271           IF(MDME(IDC,1).GT.0) THEN
26272             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26273             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26274             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26275             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26276           ENDIF
26277   490   CONTINUE
26278  
26279       ELSEIF(KFLA.EQ.9900024) THEN
26280 C...W_R+/-:
26281         FAC=(AEM/(24D0*XW))*SHR
26282         DO 500 I=1,MDCY(KC,3)
26283           IDC=I+MDCY(KC,2)-1
26284           IF(MDME(IDC,1).LT.0) GOTO 500
26285           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26286           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26287           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
26288           WID2=1D0
26289           IF(I.LE.9) THEN
26290 C...W_R+/- -> q + qbar'
26291             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
26292             IF(KFLR.GT.0) THEN
26293               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
26294             ELSE
26295               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
26296             ENDIF
26297           ELSEIF(I.LE.12) THEN
26298 C...W_R+/- -> l+/- + nu_R
26299             FCOF=1D0
26300           ENDIF
26301           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26302      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26303           WDTP(I)=FUDGE*WDTP(I)
26304           WDTP(0)=WDTP(0)+WDTP(I)
26305           IF(MDME(IDC,1).GT.0) THEN
26306             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26307             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26308             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26309             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26310           ENDIF
26311   500  CONTINUE
26312  
26313       ELSEIF(KFLA.EQ.9900041) THEN
26314 C...H_L++/--:
26315         FAC=(1D0/(8D0*PARU(1)))*SHR
26316         DO 510 I=1,MDCY(KC,3)
26317           IDC=I+MDCY(KC,2)-1
26318           IF(MDME(IDC,1).LT.0) GOTO 510
26319           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26320           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26321           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
26322           WID2=1D0
26323           IF(I.LE.6) THEN
26324 C...H_L++/-- -> l+/- + l'+/-
26325             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
26326      &      (IABS(KFDP(IDC,2))-9)/2)**2
26327             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
26328           ELSEIF(I.EQ.7) THEN
26329 C...H_L++/-- -> W_L+/- + W_L+/-
26330             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
26331      &      (3D0*RM1+0.25D0/RM1-1D0)
26332             WID2=WIDS(24,4+(1-KFLS)/2)
26333           ENDIF
26334           WDTP(I)=FAC*FCOF*
26335      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26336           WDTP(I)=FUDGE*WDTP(I)
26337           WDTP(0)=WDTP(0)+WDTP(I)
26338           IF(MDME(IDC,1).GT.0) THEN
26339             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26340             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26341             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26342             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26343           ENDIF
26344   510   CONTINUE
26345  
26346       ELSEIF(KFLA.EQ.9900042) THEN
26347 C...H_R++/--:
26348         FAC=(1D0/(8D0*PARU(1)))*SHR
26349         DO 520 I=1,MDCY(KC,3)
26350           IDC=I+MDCY(KC,2)-1
26351           IF(MDME(IDC,1).LT.0) GOTO 520
26352           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26353           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26354           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
26355           WID2=1D0
26356           IF(I.LE.6) THEN
26357 C...H_R++/-- -> l+/- + l'+/-
26358             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
26359      &      (IABS(KFDP(IDC,2))-9)/2)**2
26360             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
26361           ELSEIF(I.EQ.7) THEN
26362 C...H_R++/-- -> W_R+/- + W_R+/-
26363             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
26364             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
26365           ENDIF
26366           WDTP(I)=FAC*FCOF*
26367      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26368           WDTP(I)=FUDGE*WDTP(I)
26369           WDTP(0)=WDTP(0)+WDTP(I)
26370           IF(MDME(IDC,1).GT.0) THEN
26371             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26372             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26373             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26374             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26375           ENDIF
26376   520  CONTINUE
26377
26378       ELSEIF(KFLA.EQ.KTECHN+115) THEN
26379 C...Techni-a2:
26380 C...Need to update to alpha_rho
26381         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
26382         FAC=(ALPRHT/12D0)*SHR
26383         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
26384         SQMZ=PMAS(23,1)**2
26385         SQMW=PMAS(24,1)**2
26386         SHP=SH
26387         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
26388         GMMZ=SHR*WDTPP(0)
26389         XWRHT=1D0/(4D0*XW*(1D0-XW))
26390         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26391         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26392         DO 530 I=1,MDCY(KC,3)
26393           IDC=I+MDCY(KC,2)-1
26394           IF(MDME(IDC,1).LT.0) GOTO 530
26395           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26396           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26397           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 530
26398           WID2=1D0
26399           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26400           IF(I.LE.4) THEN
26401             FACPV=PCM**2
26402             FACPA=PCM**2+1.5D0*RM1            
26403             VA2=0D0
26404             AA2=0D0
26405 C...a2_tc0 -> W+ + W-
26406             IF(I.EQ.1) THEN
26407               AA2=2D0*RTCM(3)**2/4D0/XW/RTCM(49)**2
26408 C...Multiplied by 2 for W^+_T W^-_L + W^+_L W^-_T.(KL)
26409               WID2=WIDS(24,1)
26410 C...a2_tc0 -> W+ + pi_tc- + c.c.
26411             ELSEIF(I.EQ.2.OR.I.EQ.3) THEN
26412               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
26413               IF(I.EQ.6) THEN
26414                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
26415               ELSE
26416                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
26417               ENDIF
26418             ELSEIF(I.EQ.4) THEN
26419 C...a2_tc0 -> Z0 + pi_tc0'
26420               VA2=(1D0-RTCM(4)**2)/4D0/XW/XW1/RTCM(48)**2
26421               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
26422             ENDIF
26423             WDTP(I)=AEM*SHR**3*PCM/3D0*(VA2*FACPV+AA2*FACPA)
26424           ELSEIF(I.GE.5.AND.I.LE.10) THEN
26425             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
26426             FACPA=PCM**2*(1D0+RM1+RM2)
26427             VA2=0D0
26428             AA2=0D0
26429             IF(I.EQ.5) THEN
26430 C...a_T^0 -> gamma rho_T^0
26431               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
26432               WID2=WIDS(PYCOMP(KTECHN+113),2)
26433             ELSEIF(I.EQ.6) THEN
26434 C...a_T^0 -> gamma omega_T
26435               VA2=1D0/RTCM(50)**4
26436               WID2=WIDS(PYCOMP(KTECHN+223),2)
26437             ELSEIF(I.EQ.7.OR.I.EQ.8) THEN
26438 C...a_T^0 -> W^+- rho_T^-+
26439               AA2=.25D0/XW/RTCM(51)**4
26440               IF(I.EQ.7) THEN
26441                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+213),3)
26442               ELSE
26443                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+213),2)
26444               ENDIF
26445             ELSEIF(I.EQ.9) THEN
26446 C...a_T^0 -> Z^0 rho_T^0
26447               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
26448               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+113),2)
26449             ELSEIF(I.EQ.10) THEN
26450 C...a_T^0 -> Z^0 omega_T
26451               VA2=.25D0*(1D0-2D0*XW)**2/XW/XW1/RTCM(50)**4
26452               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+223),2)
26453             ENDIF            
26454             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
26455           ELSE
26456 C...a2_tc0 -> f + fbar.
26457             WID2=1D0
26458             IF(I.LE.18) THEN
26459               IA=I-10
26460               FCOF=3D0*RADC
26461               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
26462             ELSE
26463               IA=I-8
26464               FCOF=1D0
26465               IF(IA.GE.17) WID2=WIDS(IA,1)
26466             ENDIF
26467             EI=KCHG(IA,1)/3D0
26468             AI=SIGN(1D0,EI+0.1D0)
26469             VI=AI-4D0*EI*XWV
26470             VALI=0.5D0*(VI+AI)
26471             VARI=0.5D0*(VI-AI)
26472             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
26473      &      ((VALI*BWZR)**2+(VALI*BWZI)**2+
26474      &      (VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
26475      &      (VALI*BWZR)*(VARI*BWZR)+VALI*VARI*BWZI**2))
26476           ENDIF
26477           WDTP(I)=FUDGE*WDTP(I)
26478           WDTP(0)=WDTP(0)+WDTP(I)
26479           IF(MDME(IDC,1).GT.0) THEN
26480             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26481             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26482             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26483             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26484           ENDIF
26485   530   CONTINUE
26486  
26487       ELSEIF(KFLA.EQ.KTECHN+215) THEN
26488 C...Techni-a2+/-:
26489         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
26490         FAC=(ALPRHT/12D0)*SHR
26491         SQMZ=PMAS(23,1)**2
26492         SQMW=PMAS(24,1)**2
26493         SHP=SH
26494         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
26495         GMMW=SHR*WDTPP(0)
26496         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
26497      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
26498         DO 540 I=1,MDCY(KC,3)
26499           IDC=I+MDCY(KC,2)-1
26500           IF(MDME(IDC,1).LT.0) GOTO 540
26501           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26502           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26503           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 540
26504           WID2=1D0
26505           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26506           IF(KFLR.GT.0) THEN
26507             ICHANN=2
26508           ELSE
26509             ICHANN=3
26510           ENDIF
26511           IF(I.LE.7) THEN
26512             AA2=0
26513             VA2=0
26514 C...a2_tc+ -> gamma + W+.
26515             IF(I.EQ.1) THEN
26516               AA2=RTCM(3)**2/RTCM(49)**2
26517               WID2=WIDS(24,ICHANN)
26518 C...a2_tc+ -> gamma + pi_tc+.
26519             ELSEIF(I.EQ.2) THEN
26520               AA2=(1D0-RTCM(3)**2)/RTCM(49)**2
26521               WID2=WIDS(PYCOMP(KTECHN+211),ICHANN)
26522 C...a2_tc+ -> W+ + Z
26523             ELSEIF(I.EQ.3) THEN
26524               AA2=RTCM(3)**2*(1D0/4D0/XW1 +
26525      &                       (XW-XW1)**2/4./XW/XW1)/RTCM(49)**2
26526               WID2=WIDS(24,ICHANN)*WIDS(23,2)
26527 C...a2_tc+ -> W+ + pi_tc0.
26528             ELSEIF(I.EQ.4) THEN
26529               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
26530               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+111),2)
26531 C...a2_tc+ -> W+ + pi_tc'0.
26532             ELSEIF(I.EQ.5) THEN
26533               VA2=(1D0-RTCM(4)**2)/4D0/XW/RTCM(48)**2
26534               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+221),2)
26535 C...a2_tc+ -> Z0 + pi_tc+.
26536             ELSEIF(I.EQ.6) THEN
26537               AA2=(1D0-RTCM(3)**2)/4D0/XW/XW1*(1D0-2D0*XW)**2/
26538      &         RTCM(49)**2
26539               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+211),ICHANN)
26540             ENDIF
26541             WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
26542      &      /3D0*SHR**3
26543           ELSEIF(I.LE.10) THEN
26544             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
26545             FACPA=PCM**2*(1D0+RM1+RM2)
26546             VA2=0D0
26547             AA2=0D0
26548 C...a2_tc+ -> gamma + rho_tc+
26549             IF(I.EQ.7) THEN
26550               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
26551               WID2=WIDS(PYCOMP(KTECHN+213),ICHANN)
26552 C...a2_tc+ -> W+ + rho_T^0
26553             ELSEIF(I.EQ.8) THEN
26554               AA2=1D0/(4D0*XW)/RTCM(51)**4
26555               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+113),2)
26556 C...a2_tc+ -> W+ + omega_T
26557             ELSEIF(I.EQ.9) THEN
26558               VA2=.25D0/XW/RTCM(50)**4
26559               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+223),2)
26560 C...a2_tc+ -> Z^0  + rho_T^+
26561             ELSEIF(I.EQ.10) THEN
26562               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
26563               AA2=1D0/(4D0*XW*XW1)/RTCM(51)**4
26564               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+213),ICHANN)
26565             ENDIF            
26566             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
26567           ELSE
26568 C...a2_tc+ -> f + fbar'.
26569             IA=I-10
26570             WID2=1D0
26571             IF(IA.LE.16) THEN
26572               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
26573               IF(KFLR.GT.0) THEN
26574                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
26575                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
26576                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
26577               ELSE
26578                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
26579                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
26580                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
26581               ENDIF
26582             ELSE
26583               FCOF=1D0
26584               IF(KFLR.GT.0) THEN
26585                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
26586               ELSE
26587                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
26588               ENDIF
26589             ENDIF
26590             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26591      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26592           ENDIF
26593           WDTP(I)=FUDGE*WDTP(I)
26594           WDTP(0)=WDTP(0)+WDTP(I)
26595           IF(MDME(IDC,1).GT.0) THEN
26596             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26597             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26598             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26599             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26600           ENDIF
26601   540   CONTINUE
26602  
26603       ENDIF
26604       MINT(61)=0
26605       MINT(62)=0
26606       MINT(63)=0
26607       RETURN
26608       END
26609  
26610 C***********************************************************************
26611  
26612 C...PYOFSH
26613 C...Calculates partial width and differential cross-section maxima
26614 C...of channels/processes not allowed on mass-shell, and selects
26615 C...masses in such channels/processes.
26616  
26617       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
26618  
26619 C...Double precision and integer declarations.
26620       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
26621       IMPLICIT INTEGER(I-N)
26622       INTEGER PYK,PYCHGE,PYCOMP
26623 C...Commonblocks.
26624       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
26625       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
26626       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
26627       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
26628       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
26629       COMMON/PYINT1/MINT(400),VINT(400)
26630       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
26631       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
26632       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
26633      &/PYINT2/,/PYINT5/
26634 C...Local arrays.
26635       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
26636      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
26637      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
26638      &WDTE(0:400,0:5)
26639  
26640 C...Find if particles equal, maximum mass, matrix elements, etc.
26641       MINT(51)=0
26642       ISUB=MINT(1)
26643       KFD(1)=IABS(KFD1)
26644       KFD(2)=IABS(KFD2)
26645       MEQL=0
26646       IF(KFD(1).EQ.KFD(2)) MEQL=1
26647       MLM=0
26648       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
26649       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
26650         NOFF=44
26651         PMMX=PMMO
26652       ELSE
26653         NOFF=40
26654         PMMX=VINT(1)
26655         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
26656       ENDIF
26657       MMED=0
26658       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
26659      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
26660       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
26661      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
26662       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
26663      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
26664       LOOP=1
26665  
26666 C...Find where Breit-Wigners are required, else select discrete masses.
26667   100 DO 110 I=1,2
26668         KFCA=PYCOMP(KFD(I))
26669         IF(KFCA.GT.0) THEN
26670           PMD(I)=PMAS(KFCA,1)
26671           PGD(I)=PMAS(KFCA,2)
26672         ELSE
26673           PMD(I)=0D0
26674           PGD(I)=0D0
26675         ENDIF
26676         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
26677           MBW(I)=0
26678           PMG(I)=PMD(I)
26679           RMG(I)=(PMG(I)/PMMX)**2
26680         ELSE
26681           MBW(I)=1
26682         ENDIF
26683   110 CONTINUE
26684  
26685 C...Find allowed mass range and Breit-Wigner parameters.
26686       DO 120 I=1,2
26687         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
26688           PML(I)=PARP(42)
26689           PMU(I)=PMMX-PARP(42)
26690           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
26691           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26692         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
26693           ILM=I
26694           IF(MLM.EQ.2) ILM=3-I
26695           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
26696           IF(MBW(3-I).EQ.0) THEN
26697             PMU(I)=PMMX-PMD(3-I)
26698           ELSE
26699             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
26700           ENDIF
26701           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
26702      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
26703           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
26704           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
26705           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26706           IF(MBW(I).EQ.1) THEN
26707             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26708             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26709             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
26710      &      PGD(I)))
26711           ENDIF
26712         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
26713           ILM=I
26714           IF(MLM.EQ.2) ILM=3-I
26715           PML(I)=MAX(CKIN(48+I),PARP(42))
26716           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
26717           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
26718           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
26719           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
26720           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
26721           IF(MBW(I).EQ.1) THEN
26722             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26723             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
26724             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
26725      &      PGD(I)))
26726           ENDIF
26727         ENDIF
26728   120 CONTINUE
26729       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
26730      &THEN
26731         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
26732         MINT(51)=1
26733         RETURN
26734       ENDIF
26735  
26736 C...Calculation of partial width of resonance.
26737       IF(MOFSH.EQ.1) THEN
26738  
26739 C..If only one integration, pick that to be the inner.
26740         IF(MBW(1).EQ.0) THEN
26741           PM2=PMD(1)
26742           PMD(1)=PMD(2)
26743           PGD(1)=PGD(2)
26744           PML(1)=PML(2)
26745           PMU(1)=PMU(2)
26746         ELSEIF(MBW(2).EQ.0) THEN
26747           PM2=PMD(2)
26748         ENDIF
26749  
26750 C...Start outer loop of integration.
26751         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26752           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
26753           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
26754           NPT2=1
26755           XPT2(1)=1D0
26756           INX2(1)=0
26757           FMAX2=0D0
26758         ENDIF
26759   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26760           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
26761           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
26762         ENDIF
26763         RM2=(PM2/PMMX)**2
26764  
26765 C...Start inner loop of integration.
26766         PML1=PML(1)
26767         PMU1=MIN(PMU(1),PMMX-PM2)
26768         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
26769         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
26770         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
26771         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
26772           FUNC2=0D0
26773           GOTO 180
26774         ENDIF
26775         NPT1=1
26776         XPT1(1)=1D0
26777         INX1(1)=0
26778         FMAX1=0D0
26779   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
26780         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
26781         RM1=(PM1/PMMX)**2
26782  
26783 C...Evaluate function value - inner loop.
26784         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26785         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
26786         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
26787      &  RM2**2+10D0*RM1*RM2)
26788         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
26789         FPT1(NPT1)=FUNC1
26790  
26791 C...Go to next position in inner loop.
26792         IF(NPT1.EQ.1) THEN
26793           NPT1=NPT1+1
26794           XPT1(NPT1)=0D0
26795           INX1(NPT1)=1
26796           GOTO 140
26797         ELSEIF(NPT1.LE.8) THEN
26798           NPT1=NPT1+1
26799           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
26800           ISH1=ISH1+1
26801           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
26802           INX1(NPT1)=INX1(ISH1)
26803           INX1(ISH1)=NPT1
26804           GOTO 140
26805         ELSEIF(NPT1.LT.100) THEN
26806           ISN1=ISH1
26807   150     ISH1=ISH1+1
26808           IF(ISH1.GT.NPT1) ISH1=2
26809           IF(ISH1.EQ.ISN1) GOTO 160
26810           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
26811           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
26812           NPT1=NPT1+1
26813           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
26814           INX1(NPT1)=INX1(ISH1)
26815           INX1(ISH1)=NPT1
26816           GOTO 140
26817         ENDIF
26818  
26819 C...Calculate integral over inner loop.
26820   160   FSUM1=0D0
26821         DO 170 IPT1=2,NPT1
26822           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
26823      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
26824   170   CONTINUE
26825         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
26826   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
26827           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
26828           FPT2(NPT2)=FUNC2
26829  
26830 C...Go to next position in outer loop.
26831           IF(NPT2.EQ.1) THEN
26832             NPT2=NPT2+1
26833             XPT2(NPT2)=0D0
26834             INX2(NPT2)=1
26835             GOTO 130
26836           ELSEIF(NPT2.LE.8) THEN
26837             NPT2=NPT2+1
26838             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
26839             ISH2=ISH2+1
26840             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
26841             INX2(NPT2)=INX2(ISH2)
26842             INX2(ISH2)=NPT2
26843             GOTO 130
26844           ELSEIF(NPT2.LT.100) THEN
26845             ISN2=ISH2
26846   190       ISH2=ISH2+1
26847             IF(ISH2.GT.NPT2) ISH2=2
26848             IF(ISH2.EQ.ISN2) GOTO 200
26849             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
26850             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
26851             NPT2=NPT2+1
26852             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
26853             INX2(NPT2)=INX2(ISH2)
26854             INX2(ISH2)=NPT2
26855             GOTO 130
26856           ENDIF
26857  
26858 C...Calculate integral over outer loop.
26859   200     FSUM2=0D0
26860           DO 210 IPT2=2,NPT2
26861             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
26862      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
26863   210     CONTINUE
26864           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
26865           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
26866         ELSE
26867           FSUM2=FUNC2
26868         ENDIF
26869  
26870 C...Save result; second integration for user-selected mass range.
26871         IF(LOOP.EQ.1) WIDW=FSUM2
26872         WID2=FSUM2
26873         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
26874      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
26875           LOOP=2
26876           GOTO 100
26877         ENDIF
26878         RET1=WIDW
26879         RET2=WID2/WIDW
26880  
26881 C...Select two decay product masses of a resonance.
26882       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
26883   220   DO 230 I=1,2
26884           IF(MBW(I).EQ.0) GOTO 230
26885           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
26886      &    (ATU(I)-ATL(I)))
26887           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
26888           RMG(I)=(PMG(I)/PMMX)**2
26889   230   CONTINUE
26890         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
26891      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
26892  
26893 C...Weight with matrix element (if none known, use beta factor).
26894         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
26895         IF(MMED.EQ.1) THEN
26896           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
26897         ELSEIF(MMED.EQ.2) THEN
26898           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
26899      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
26900         ELSEIF(MMED.EQ.3) THEN
26901           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
26902         ELSE
26903           WTBE=FLAM
26904         ENDIF
26905         IF(WTBE.LT.PYR(0)) GOTO 220
26906         RET1=PMG(1)
26907         RET2=PMG(2)
26908  
26909 C...Find suitable set of masses for initialization of 2 -> 2 processes.
26910       ELSEIF(MOFSH.EQ.3) THEN
26911         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
26912           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
26913           PMG(2)=PMD(2)
26914         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
26915           PMG(1)=PMD(1)
26916           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
26917         ELSE
26918           IDIV=-1
26919   240     IDIV=IDIV+1
26920           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
26921           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
26922           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
26923         ENDIF
26924         RET1=PMG(1)
26925         RET2=PMG(2)
26926  
26927 C...Evaluate importance of excluded tails of Breit-Wigners.
26928         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
26929      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
26930         IF(MEQL.LE.1) THEN
26931           VINT(80)=1D0
26932           DO 250 I=1,2
26933             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
26934      &      PARU(1)
26935   250     CONTINUE
26936         ELSE
26937           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
26938      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
26939         ENDIF
26940         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
26941      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
26942         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
26943         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
26944  
26945 C...Pick one particle to be the lighter (if improves efficiency).
26946       ELSEIF(MOFSH.EQ.4) THEN
26947         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
26948      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
26949   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
26950  
26951 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
26952         DO 270 I=1,2
26953           IF(MBW(I).EQ.0) GOTO 270
26954           PMV=PMU(I)
26955           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
26956           ATV=ATU(I)
26957           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
26958           RBR=PYR(0)
26959           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
26960      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
26961           IF(RBR.LT.0.8D0) THEN
26962             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
26963             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
26964           ELSEIF(RBR.LT.0.9D0) THEN
26965             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
26966           ELSEIF(RBR.LT.1.5D0) THEN
26967             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
26968           ELSE
26969             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
26970      &      (PMV**2-PML(I)**2))))
26971           ENDIF
26972   270   CONTINUE
26973         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
26974      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
26975           IF(MINT(48).EQ.1.AND.MSTP(171).EQ.0) THEN
26976             NGEN(0,1)=NGEN(0,1)+1
26977             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
26978             GOTO 260
26979           ELSE
26980             MINT(51)=1
26981             RETURN
26982           ENDIF
26983         ENDIF
26984         RET1=PMG(1)
26985         RET2=PMG(2)
26986  
26987 C...Give weight for selected mass distribution.
26988         VINT(80)=1D0
26989         DO 280 I=1,2
26990           IF(MBW(I).EQ.0) GOTO 280
26991           PMV=PMU(I)
26992           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
26993           ATV=ATU(I)
26994           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
26995           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
26996      &    (PMD(I)*PGD(I))**2)/PARU(1)
26997           F1=1D0
26998           F2=1D0/PMG(I)**2
26999           F3=1D0/PMG(I)**4
27000           FI0=(ATV-ATL(I))/PARU(1)
27001           FI1=PMV**2-PML(I)**2
27002           FI2=2D0*LOG(PMV/PML(I))
27003           FI3=1D0/PML(I)**2-1D0/PMV**2
27004           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
27005      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
27006             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
27007      &      5D0*F3/FI3))
27008           ELSE
27009             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
27010           ENDIF
27011           VINT(80)=VINT(80)*FI0
27012   280   CONTINUE
27013         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
27014       ENDIF
27015  
27016       RETURN
27017       END
27018  
27019 C***********************************************************************
27020  
27021 C...PYRECO
27022 C...Handles the possibility of colour reconnection in W+W- events,
27023 C...Based on the main scenarios of the Sjostrand and Khoze study:
27024 C...I, II, II', intermediate and instantaneous; plus one model
27025 C...along the lines of the Gustafson and Hakkinen: GH.
27026 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
27027 C...is as if first resonance is W+ and second W-.
27028  
27029       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
27030  
27031 C...Double precision and integer declarations.
27032       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27033       IMPLICIT INTEGER(I-N)
27034       INTEGER PYK,PYCHGE,PYCOMP
27035 C...Parameter value; number of points in MC integration.
27036       PARAMETER (NPT=100)
27037 C...Commonblocks.
27038       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
27039       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27040       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27041       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27042       COMMON/PYINT1/MINT(400),VINT(400)
27043       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
27044 C...Local arrays.
27045       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
27046      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
27047      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
27048      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
27049      &TMC(20),IJOIN(100)
27050  
27051 C...Functions to give four-product and to do determinants.
27052       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)
27053       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
27054      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
27055      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
27056  
27057 C...Only allow fraction of recoupling for GH, intermediate and
27058 C...instantaneous.
27059       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
27060         IF(PYR(0).GT.PARP(120)) RETURN
27061       ENDIF
27062       ISUB=MINT(1)
27063  
27064 C...Common part for scenarios I, II, II', and GH.
27065       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
27066      &MSTP(115).EQ.5) THEN
27067  
27068 C...Read out frequently-used parameters.
27069         PI=PARU(1)
27070         HBAR=PARU(3)
27071         PMW=PMAS(24,1)
27072         IF(ISUB.EQ.22) PMW=PMAS(23,1)
27073         PGW=PMAS(24,2)
27074         IF(ISUB.EQ.22) PGW=PMAS(23,2)
27075         TFRAG=PARP(115)
27076         RHAD=PARP(116)
27077         FACT=PARP(117)
27078         BLOWR=PARP(118)
27079         BLOWT=PARP(119)
27080  
27081 C...Find range of decay products of the W's.
27082 C...Background: the W's are stored in IW1 and IW2.
27083 C...Their direct decay products in NSD1+1 through NSD1+4.
27084 C...Products after shower (if any) in NSD1+5 through NAFT1
27085 C...for first W and in NAFT1+1 through N for the second.
27086         IF(NAFT1.GT.NSD1+4) THEN
27087           NBEG(1)=NSD1+5
27088           NEND(1)=NAFT1
27089         ELSE
27090           NBEG(1)=NSD1+1
27091           NEND(1)=NSD1+2
27092         ENDIF
27093         IF(N.GT.NAFT1) THEN
27094           NBEG(2)=NAFT1+1
27095           NEND(2)=N
27096         ELSE
27097           NBEG(2)=NSD1+3
27098           NEND(2)=NSD1+4
27099         ENDIF
27100  
27101 C...Rearrange parton shower products along strings.
27102         NOLD=N
27103         CALL PYPREP(NSD1+1)
27104         IF(MINT(51).NE.0) RETURN
27105  
27106 C...Find partons pointing back to W+ and W-; store them with quark
27107 C...end of string first.
27108         NNP=0
27109         NNM=0
27110         ISGP=0
27111         ISGM=0
27112         DO 120 I=NOLD+1,N
27113           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
27114           IF(IABS(K(I,2)).GE.22) GOTO 120
27115           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
27116             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
27117             NNP=NNP+1
27118             IF(ISGP.EQ.1) THEN
27119               INP(NNP)=I
27120             ELSE
27121               DO 100 I1=NNP,2,-1
27122                 INP(I1)=INP(I1-1)
27123   100         CONTINUE
27124               INP(1)=I
27125             ENDIF
27126             IF(K(I,1).EQ.1) ISGP=0
27127           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
27128             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
27129             NNM=NNM+1
27130             IF(ISGM.EQ.1) THEN
27131               INM(NNM)=I
27132             ELSE
27133               DO 110 I1=NNM,2,-1
27134                 INM(I1)=INM(I1-1)
27135   110         CONTINUE
27136               INM(1)=I
27137             ENDIF
27138             IF(K(I,1).EQ.1) ISGM=0
27139           ENDIF
27140   120   CONTINUE
27141  
27142 C...Boost to W+W- rest frame (not strictly needed).
27143         DO 130 J=1,3
27144           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
27145   130   CONTINUE
27146         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27147         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27148         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27149  
27150 C...Select decay vertices of W+ and W-.
27151         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
27152      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
27153         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
27154      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
27155         GTMAX=MAX(TP,TM)
27156         DO 140 J=1,3
27157           XP(J)=TP*P(IW1,J)/P(IW1,4)
27158           XM(J)=TM*P(IW2,J)/P(IW2,4)
27159   140   CONTINUE
27160  
27161 C...Begin scenario I specifics.
27162         IF(MSTP(115).EQ.1) THEN
27163  
27164 C...Reconstruct velocity and direction of W+ string pieces.
27165           DO 170 IIP=1,NNP-1
27166             IF(K(INP(IIP),2).LT.0) GOTO 170
27167             I1=INP(IIP)
27168             I2=INP(IIP+1)
27169             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27170             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27171             DO 150 J=1,3
27172               V1(J)=P(I1,J)/P1A
27173               V2(J)=P(I2,J)/P2A
27174               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
27175               DIRP(IIP,J)=V1(J)-V2(J)
27176   150       CONTINUE
27177             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
27178      &      BETP(IIP,3)**2)
27179             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
27180             DO 160 J=1,3
27181               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
27182   160       CONTINUE
27183   170     CONTINUE
27184  
27185 C...Reconstruct velocity and direction of W- string pieces.
27186           DO 200 IIM=1,NNM-1
27187             IF(K(INM(IIM),2).LT.0) GOTO 200
27188             I1=INM(IIM)
27189             I2=INM(IIM+1)
27190             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27191             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27192             DO 180 J=1,3
27193               V1(J)=P(I1,J)/P1A
27194               V2(J)=P(I2,J)/P2A
27195               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
27196               DIRM(IIM,J)=V1(J)-V2(J)
27197   180       CONTINUE
27198             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
27199      &      BETM(IIM,3)**2)
27200             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
27201             DO 190 J=1,3
27202               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
27203   190       CONTINUE
27204   200     CONTINUE
27205  
27206 C...Loop over number of space-time points.
27207           NACC=0
27208           SUM=0D0
27209           DO 250 IPT=1,NPT
27210  
27211 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
27212             R=SQRT(-LOG(PYR(0)))
27213             PHI=2D0*PI*PYR(0)
27214             X=BLOWR*RHAD*R*COS(PHI)
27215             Y=BLOWR*RHAD*R*SIN(PHI)
27216             R=SQRT(-LOG(PYR(0)))
27217             PHI=2D0*PI*PYR(0)
27218             Z=BLOWR*RHAD*R*COS(PHI)
27219             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
27220  
27221 C...Reject impossible points. Weight for sample distribution.
27222             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
27223             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
27224      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
27225  
27226 C...Loop over W+ string pieces and find one with largest weight.
27227             IMAXP=0
27228             WTMAXP=1D-10
27229             XD(1)=X-XP(1)
27230             XD(2)=Y-XP(2)
27231             XD(3)=Z-XP(3)
27232             XD(4)=T-TP
27233             DO 220 IIP=1,NNP-1
27234               IF(K(INP(IIP),2).LT.0) GOTO 220
27235               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
27236               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
27237               DO 210 J=1,3
27238                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
27239   210         CONTINUE
27240               XB(4)=BETP(IIP,4)*(XD(4)-BED)
27241               SR2=XB(1)**2+XB(2)**2+XB(3)**2
27242               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
27243      &        DIRP(IIP,3)*XB(3))**2
27244               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
27245      &        TFRAG**2)
27246               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
27247               IF(WTP.GT.WTMAXP) THEN
27248                 IMAXP=IIP
27249                 WTMAXP=WTP
27250               ENDIF
27251   220       CONTINUE
27252  
27253 C...Loop over W- string pieces and find one with largest weight.
27254             IMAXM=0
27255             WTMAXM=1D-10
27256             XD(1)=X-XM(1)
27257             XD(2)=Y-XM(2)
27258             XD(3)=Z-XM(3)
27259             XD(4)=T-TM
27260             DO 240 IIM=1,NNM-1
27261               IF(K(INM(IIM),2).LT.0) GOTO 240
27262               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
27263               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
27264               DO 230 J=1,3
27265                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
27266   230         CONTINUE
27267               XB(4)=BETM(IIM,4)*(XD(4)-BED)
27268               SR2=XB(1)**2+XB(2)**2+XB(3)**2
27269               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
27270      &        DIRM(IIM,3)*XB(3))**2
27271               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
27272      &        TFRAG**2)
27273               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
27274               IF(WTM.GT.WTMAXM) THEN
27275                 IMAXM=IIM
27276                 WTMAXM=WTM
27277               ENDIF
27278   240       CONTINUE
27279  
27280 C...Result of integration.
27281             WT=0D0
27282             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
27283               WT=WTMAXP*WTMAXM/WTSMP
27284               SUM=SUM+WT
27285               NACC=NACC+1
27286               IAP(NACC)=IMAXP
27287               IAM(NACC)=IMAXM
27288               WTA(NACC)=WT
27289             ENDIF
27290   250     CONTINUE
27291           RES=BLOWR**3*BLOWT*SUM/NPT
27292  
27293 C...Decide whether to reconnect and, if so, where.
27294           IACC=0
27295           PREC=1D0-EXP(-FACT*RES)
27296           IF(PREC.GT.PYR(0)) THEN
27297             RSUM=PYR(0)*SUM
27298             DO 260 IA=1,NACC
27299               IACC=IA
27300               RSUM=RSUM-WTA(IA)
27301               IF(RSUM.LE.0D0) GOTO 270
27302   260       CONTINUE
27303   270       IIP=IAP(IACC)
27304             IIM=IAM(IACC)
27305           ENDIF
27306  
27307 C...Begin scenario II and II' specifics.
27308         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
27309  
27310 C...Loop through all string pieces, one from W+ and one from W-.
27311           NCROSS=0
27312           TC(0)=0D0
27313           DO 340 IIP=1,NNP-1
27314             IF(K(INP(IIP),2).LT.0) GOTO 340
27315             I1P=INP(IIP)
27316             I2P=INP(IIP+1)
27317             DO 330 IIM=1,NNM-1
27318               IF(K(INM(IIM),2).LT.0) GOTO 330
27319               I1M=INM(IIM)
27320               I2M=INM(IIM+1)
27321  
27322 C...Find endpoint velocity vectors.
27323               DO 280 J=1,3
27324                 V1P(J)=P(I1P,J)/P(I1P,4)
27325                 V2P(J)=P(I2P,J)/P(I2P,4)
27326                 V1M(J)=P(I1M,J)/P(I1M,4)
27327                 V2M(J)=P(I2M,J)/P(I2M,4)
27328   280         CONTINUE
27329  
27330 C...Define q matrix and find t.
27331               DO 290 J=1,3
27332                 Q(1,J)=V2P(J)-V1P(J)
27333                 Q(2,J)=-(V2M(J)-V1M(J))
27334                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
27335                 Q(4,J)=V1P(J)-V1M(J)
27336   290         CONTINUE
27337               T=-DETER(1,2,3)/DETER(1,2,4)
27338  
27339 C...Find alpha and beta; i.e. coordinates of crossing point.
27340               S11=Q(1,1)*(T-TP)
27341               S12=Q(2,1)*(T-TM)
27342               S13=Q(3,1)+Q(4,1)*T
27343               S21=Q(1,2)*(T-TP)
27344               S22=Q(2,2)*(T-TM)
27345               S23=Q(3,2)+Q(4,2)*T
27346               DEN=S11*S22-S12*S21
27347               ALP=(S12*S23-S22*S13)/DEN
27348               BET=(S21*S13-S11*S23)/DEN
27349  
27350 C...Check if solution acceptable.
27351               IANSW=1
27352               IF(T.LT.GTMAX) IANSW=0
27353               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
27354               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
27355  
27356 C...Find point of crossing and check that not inconsistent.
27357               DO 300 J=1,3
27358                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
27359                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
27360   300         CONTINUE
27361               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
27362      &        (XPP(3)-XMM(3))**2
27363               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
27364               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
27365               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
27366  
27367 C...Find string eigentimes at crossing.
27368               IF(IANSW.EQ.1) THEN
27369                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
27370      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
27371                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
27372      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
27373               ELSE
27374                 TAUP=0D0
27375                 TAUM=0D0
27376               ENDIF
27377  
27378 C...Order crossings by time. End loop over crossings.
27379               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
27380                 NCROSS=NCROSS+1
27381                 DO 310 I1=NCROSS,1,-1
27382                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
27383                     IPC(I1)=IIP
27384                     IMC(I1)=IIM
27385                     TC(I1)=T
27386                     TPC(I1)=TAUP
27387                     TMC(I1)=TAUM
27388                     GOTO 320
27389                   ELSE
27390                     IPC(I1)=IPC(I1-1)
27391                     IMC(I1)=IMC(I1-1)
27392                     TC(I1)=TC(I1-1)
27393                     TPC(I1)=TPC(I1-1)
27394                     TMC(I1)=TMC(I1-1)
27395                   ENDIF
27396   310           CONTINUE
27397   320           CONTINUE
27398               ENDIF
27399   330       CONTINUE
27400   340     CONTINUE
27401  
27402 C...Loop over crossings; find first (if any) acceptable one.
27403           IACC=0
27404           IF(NCROSS.GE.1) THEN
27405             DO 350 IC=1,NCROSS
27406               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
27407               IF(PNFRAG.GT.PYR(0)) THEN
27408 C...Scenario II: only compare with fragmentation time.
27409                 IF(MSTP(115).EQ.2) THEN
27410                   IACC=IC
27411                   IIP=IPC(IACC)
27412                   IIM=IMC(IACC)
27413                   GOTO 360
27414 C...Scenario II': also require that string length decreases.
27415                 ELSE
27416                   IIP=IPC(IC)
27417                   IIM=IMC(IC)
27418                   I1P=INP(IIP)
27419                   I2P=INP(IIP+1)
27420                   I1M=INM(IIM)
27421                   I2M=INM(IIM+1)
27422                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
27423                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
27424                   IF(ELNEW.LT.ELOLD) THEN
27425                     IACC=IC
27426                     IIP=IPC(IACC)
27427                     IIM=IMC(IACC)
27428                     GOTO 360
27429                   ENDIF
27430                 ENDIF
27431               ENDIF
27432   350       CONTINUE
27433   360       CONTINUE
27434           ENDIF
27435  
27436 C...Begin scenario GH specifics.
27437         ELSEIF(MSTP(115).EQ.5) THEN
27438  
27439 C...Loop through all string pieces, one from W+ and one from W-.
27440           IACC=0
27441           ELMIN=1D0
27442           DO 380 IIP=1,NNP-1
27443             IF(K(INP(IIP),2).LT.0) GOTO 380
27444             I1P=INP(IIP)
27445             I2P=INP(IIP+1)
27446             DO 370 IIM=1,NNM-1
27447               IF(K(INM(IIM),2).LT.0) GOTO 370
27448               I1M=INM(IIM)
27449               I2M=INM(IIM+1)
27450  
27451 C...Look for largest decrease of (exponent of) Lambda measure.
27452               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
27453               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
27454               ELDIF=ELNEW/MAX(1D-10,ELOLD)
27455               IF(ELDIF.LT.ELMIN) THEN
27456                 IACC=IIP+IIM
27457                 ELMIN=ELDIF
27458                 IPC(1)=IIP
27459                 IMC(1)=IIM
27460               ENDIF
27461   370       CONTINUE
27462   380     CONTINUE
27463           IIP=IPC(1)
27464           IIM=IMC(1)
27465         ENDIF
27466  
27467 C...Common for scenarios I, II, II' and GH: reconnect strings.
27468         IF(IACC.NE.0) THEN
27469           MINT(32)=1
27470           NJOIN=0
27471           DO 390 IS=1,NNP+NNM
27472             NJOIN=NJOIN+1
27473             IF(IS.LE.IIP) THEN
27474               I=INP(IS)
27475             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
27476               I=INM(IS-IIP+IIM)
27477             ELSEIF(IS.LE.IIP+NNM) THEN
27478               I=INM(IS-IIP-NNM+IIM)
27479             ELSE
27480               I=INP(IS-NNM)
27481             ENDIF
27482             IJOIN(NJOIN)=I
27483             IF(K(I,2).LT.0) THEN
27484               CALL PYJOIN(NJOIN,IJOIN)
27485               NJOIN=0
27486             ENDIF
27487   390     CONTINUE
27488  
27489 C...Restore original event record if no reconnection.
27490         ELSE
27491           DO 400 I=NSD1+1,NOLD
27492             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
27493               K(I,4)=MOD(K(I,4),MSTU(5)**2)
27494               K(I,5)=MOD(K(I,5),MSTU(5)**2)
27495             ENDIF
27496   400     CONTINUE
27497           DO 410 I=NOLD+1,N
27498             K(K(I,3),1)=3
27499   410     CONTINUE
27500           N=NOLD
27501         ENDIF
27502  
27503 C...Boost back system.
27504         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
27505         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
27506         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
27507      &  BEWW(1),BEWW(2),BEWW(3))
27508  
27509 C...Common part for intermediate and instantaneous scenarios.
27510       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
27511         MINT(32)=1
27512  
27513 C...Remove old shower products and reset showering ones.
27514         N=NSD1+4
27515         DO 420 I=NSD1+1,NSD1+4
27516           K(I,1)=3
27517           K(I,4)=MOD(K(I,4),MSTU(5)**2)
27518           K(I,5)=MOD(K(I,5),MSTU(5)**2)
27519   420   CONTINUE
27520  
27521 C...Identify quark-antiquark pairs.
27522         IQ1=NSD1+1
27523         IQ2=NSD1+2
27524         IQ3=NSD1+3
27525         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
27526         IQ4=2*NSD1+7-IQ3
27527  
27528 C...Reconnect strings.
27529         IJOIN(1)=IQ1
27530         IJOIN(2)=IQ4
27531         CALL PYJOIN(2,IJOIN)
27532         IJOIN(1)=IQ3
27533         IJOIN(2)=IQ2
27534         CALL PYJOIN(2,IJOIN)
27535  
27536 C...Do new parton showers in intermediate scenario.
27537         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
27538           MSTJ50=MSTJ(50)
27539           MSTJ(50)=0
27540           if(parj(200).ne.1.) CALL PYSHOW(IQ1,IQ2,P(IW1,5))
27541           if(parj(200).eq.1.) CALL PYSHOWQ(IQ1,IQ2,P(IW1,5))
27542           if(parj(200).ne.1.) CALL PYSHOW(IQ3,IQ4,P(IW2,5))
27543           if(parj(200).eq.1.) CALL PYSHOWQ(IQ3,IQ4,P(IW2,5))
27544           MSTJ(50)=MSTJ50
27545  
27546 C...Do new parton showers in instantaneous scenario.
27547         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
27548           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
27549      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
27550           PPM=SQRT(MAX(0D0,PPM2))
27551           if(parj(200).ne.1.) CALL PYSHOW(IQ1,IQ4,PPM)
27552           if(parj(200).eq.1.) CALL PYSHOWQ(IQ1,IQ4,PPM) 
27553           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
27554      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
27555           PPM=SQRT(MAX(0D0,PPM2))
27556           if(parj(200).ne.1.) CALL PYSHOW(IQ3,IQ2,PPM)
27557           if(parj(200).eq.1.) CALL PYSHOWQ(IQ3,IQ2,PPM)
27558         ENDIF
27559       ENDIF
27560  
27561       RETURN
27562       END
27563  
27564 C***********************************************************************
27565  
27566 C...PYKLIM
27567 C...Checks generated variables against pre-set kinematical limits;
27568 C...also calculates limits on variables used in generation.
27569  
27570       SUBROUTINE PYKLIM(ILIM)
27571  
27572 C...Double precision and integer declarations.
27573       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27574       IMPLICIT INTEGER(I-N)
27575       INTEGER PYK,PYCHGE,PYCOMP
27576 C...Commonblocks.
27577       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
27578       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27579       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27580       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
27581       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
27582       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27583       COMMON/PYINT1/MINT(400),VINT(400)
27584       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
27585       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
27586      &/PYINT1/,/PYINT2/
27587  
27588 C...Common kinematical expressions.
27589       MINT(51)=0
27590       ISUB=MINT(1)
27591       ISTSB=ISET(ISUB)
27592       IF(ISUB.EQ.96) GOTO 100
27593       SQM3=VINT(63)
27594       SQM4=VINT(64)
27595       IF(ILIM.NE.0) THEN
27596         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
27597           CKIN09=MAX(CKIN(9),CKIN(13))
27598           CKIN10=MIN(CKIN(10),CKIN(14))
27599           CKIN11=MAX(CKIN(11),CKIN(15))
27600           CKIN12=MIN(CKIN(12),CKIN(16))
27601         ELSE
27602           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
27603           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
27604           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
27605           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
27606         ENDIF
27607       ENDIF
27608       IF(ILIM.NE.1) THEN
27609         TAU=VINT(21)
27610         RM3=SQM3/(TAU*VINT(2))
27611         RM4=SQM4/(TAU*VINT(2))
27612         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
27613       ENDIF
27614       PTHMIN=CKIN(3)
27615       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
27616      &PTHMIN=MAX(CKIN(3),CKIN(5))
27617  
27618       IF(ILIM.EQ.0) THEN
27619 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
27620 C...pre-set kinematical limits.
27621         YST=VINT(22)
27622         CTH=VINT(23)
27623         TAUP=VINT(26)
27624         TAUE=TAU
27625         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
27626         X1=SQRT(TAUE)*EXP(YST)
27627         X2=SQRT(TAUE)*EXP(-YST)
27628         XF=X1-X2
27629         IF(MINT(47).NE.1) THEN
27630           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
27631           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
27632           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
27633           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
27634         ENDIF
27635         IF(MINT(45).NE.1) THEN
27636           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
27637         ENDIF
27638         IF(MINT(46).NE.1) THEN
27639           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
27640         ENDIF
27641         IF(MINT(45).EQ.2) THEN
27642           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
27643         ENDIF
27644         IF(MINT(46).EQ.2) THEN
27645           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
27646         ENDIF
27647         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
27648           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
27649           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
27650      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
27651           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
27652      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
27653           Y3=YST+0.5D0*LOG(EXPY3)
27654           Y4=YST+0.5D0*LOG(EXPY4)
27655           YLARGE=MAX(Y3,Y4)
27656           YSMALL=MIN(Y3,Y4)
27657           ETALAR=20D0
27658           ETASMA=-20D0
27659           STH=SQRT(MAX(0D0,1D0-CTH**2))
27660           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
27661      &    CTH)**2-4D0*RM3))
27662           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
27663      &    CTH)**2-4D0*RM4))
27664           IF(STH.GE.1D-10) THEN
27665             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
27666      &      (BE34*STH)
27667             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
27668      &      (BE34*STH)
27669             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
27670             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
27671             ETALAR=MAX(ETA3,ETA4)
27672             ETASMA=MIN(ETA3,ETA4)
27673           ENDIF
27674           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
27675           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
27676           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
27677           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
27678           SH=TAU*VINT(2)
27679           RPTS=4D0*VINT(71)**2/SH
27680           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
27681           RM34=MAX(1D-20,2D0*RM3*RM4)
27682           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
27683      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
27684           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
27685           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
27686           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
27687           IF(PTH.LT.PTHMIN) MINT(51)=1
27688           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
27689           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
27690           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
27691           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
27692           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
27693           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
27694           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
27695           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
27696           IF(THA.LT.CKIN(35)) MINT(51)=1
27697           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
27698           IF(UHA.LT.CKIN(37)) MINT(51)=1
27699           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
27700         ENDIF
27701         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
27702           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
27703           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
27704         ENDIF
27705  
27706 C...Additional cuts on W2 (approximately) in DIS.
27707         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
27708           XBJ=X2
27709           IF(IABS(MINT(12)).LT.20) XBJ=X1
27710           Q2BJ=THA
27711           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
27712           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
27713           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
27714         ENDIF
27715  
27716       ELSEIF(ILIM.EQ.1) THEN
27717 C...Calculate limits on tau
27718 C...0) due to definition
27719         TAUMN0=0D0
27720         TAUMX0=1D0
27721 C...1) due to limits on subsystem mass
27722         TAUMN1=CKIN(1)**2/VINT(2)
27723         TAUMX1=1D0
27724         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
27725 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
27726         TM3=SQRT(SQM3+PTHMIN**2)
27727         TM4=SQRT(SQM4+PTHMIN**2)
27728         YDCOSH=1D0
27729         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
27730         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
27731         TAUMX2=1D0
27732 C...3) due to limits on pT-hat and cos(theta-hat)
27733         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
27734         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
27735         TAUMN3=0D0
27736         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
27737      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
27738      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
27739         TAUMX3=1D0
27740         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
27741      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
27742      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
27743 C...4) due to limits on x1 and x2
27744         TAUMN4=CKIN(21)*CKIN(23)
27745         TAUMX4=CKIN(22)*CKIN(24)
27746 C...5) due to limits on xF
27747         TAUMN5=0D0
27748         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
27749 C...6) due to limits on that and uhat
27750         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
27751         TAUMX6=1D0
27752         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
27753      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
27754  
27755 C...Net effect of all separate limits.
27756         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
27757         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
27758         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
27759           VINT(11)=1D0-1D-9
27760           VINT(31)=1D0+1D-9
27761         ELSEIF(MINT(47).EQ.5) THEN
27762           VINT(31)=MIN(VINT(31),1D0-2D-10)
27763         ELSEIF(MINT(47).GE.6) THEN
27764           VINT(31)=MIN(VINT(31),1D0-1D-10)
27765         ENDIF
27766         IF(VINT(31).LE.VINT(11)) MINT(51)=1
27767  
27768       ELSEIF(ILIM.EQ.2) THEN
27769 C...Calculate limits on y*
27770         TAUE=TAU
27771         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
27772         TAURT=SQRT(TAUE)
27773 C...0) due to kinematics
27774         YSTMN0=LOG(TAURT)
27775         YSTMX0=-YSTMN0
27776 C...1) due to explicit limits
27777         YSTMN1=CKIN(7)
27778         YSTMX1=CKIN(8)
27779 C...2) due to limits on x1
27780         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
27781         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
27782 C...3) due to limits on x2
27783         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
27784         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
27785 C...4) due to limits on xF
27786         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
27787         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
27788         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
27789         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
27790 C...5) due to simultaneous limits on y-large and y-small
27791         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
27792         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
27793         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
27794         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
27795         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
27796         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
27797 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
27798 C...   y-small
27799         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
27800         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
27801         RZMX=BE34*MIN(CKIN(28),CTHLIM)
27802         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
27803         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
27804         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
27805         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
27806         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
27807         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
27808  
27809 C...Net effect of all separate limits.
27810         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
27811         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
27812         IF(MINT(47).EQ.1) THEN
27813           VINT(12)=-1D-9
27814           VINT(32)=1D-9
27815         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
27816           VINT(12)=(1D0-1D-9)*YSTMX0
27817           VINT(32)=(1D0+1D-9)*YSTMX0
27818         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
27819           VINT(12)=-(1D0+1D-9)*YSTMX0
27820           VINT(32)=-(1D0-1D-9)*YSTMX0
27821         ELSEIF(MINT(47).EQ.5) THEN
27822           YSTEE=LOG((1D0-1D-10)/TAURT)
27823           VINT(12)=MAX(VINT(12),-YSTEE)
27824           VINT(32)=MIN(VINT(32),YSTEE)
27825         ENDIF
27826         IF(VINT(32).LE.VINT(12)) MINT(51)=1
27827  
27828       ELSEIF(ILIM.EQ.3) THEN
27829 C...Calculate limits on cos(theta-hat)
27830         YST=VINT(22)
27831 C...0) due to definition
27832         CTNMN0=-1D0
27833         CTNMX0=0D0
27834         CTPMN0=0D0
27835         CTPMX0=1D0
27836 C...1) due to explicit limits
27837         CTNMN1=MIN(0D0,CKIN(27))
27838         CTNMX1=MIN(0D0,CKIN(28))
27839         CTPMN1=MAX(0D0,CKIN(27))
27840         CTPMX1=MAX(0D0,CKIN(28))
27841 C...2) due to limits on pT-hat
27842         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
27843         CTPMX2=-CTNMN2
27844         CTNMX2=0D0
27845         CTPMN2=0D0
27846         IF(CKIN(4).GE.0D0) THEN
27847           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
27848      &    (BE34**2*TAU*VINT(2))))
27849           CTPMN2=-CTNMX2
27850         ENDIF
27851 C...3) due to limits on y-large and y-small
27852         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
27853      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
27854         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
27855      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
27856         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
27857      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
27858         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
27859      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
27860 C...4) due to limits on that
27861         CTNMN4=-1D0
27862         CTNMX4=0D0
27863         CTPMN4=0D0
27864         CTPMX4=1D0
27865         SH=TAU*VINT(2)
27866         IF(CKIN(35).GT.0D0) THEN
27867           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
27868           IF(CTLIM.GT.0D0) THEN
27869             CTPMX4=CTLIM
27870           ELSE
27871             CTPMX4=0D0
27872             CTNMX4=CTLIM
27873           ENDIF
27874         ENDIF
27875         IF(CKIN(36).GT.0D0) THEN
27876           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
27877           IF(CTLIM.LT.0D0) THEN
27878             CTNMN4=CTLIM
27879           ELSE
27880             CTNMN4=0D0
27881             CTPMN4=CTLIM
27882           ENDIF
27883         ENDIF
27884 C...5) due to limits on uhat
27885         CTNMN5=-1D0
27886         CTNMX5=0D0
27887         CTPMN5=0D0
27888         CTPMX5=1D0
27889         IF(CKIN(37).GT.0D0) THEN
27890           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
27891           IF(CTLIM.LT.0D0) THEN
27892             CTNMN5=CTLIM
27893           ELSE
27894             CTNMN5=0D0
27895             CTPMN5=CTLIM
27896           ENDIF
27897         ENDIF
27898         IF(CKIN(38).GT.0D0) THEN
27899           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
27900           IF(CTLIM.GT.0D0) THEN
27901             CTPMX5=CTLIM
27902           ELSE
27903             CTPMX5=0D0
27904             CTNMX5=CTLIM
27905           ENDIF
27906         ENDIF
27907  
27908 C...Net effect of all separate limits.
27909         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
27910         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
27911         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
27912         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
27913         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
27914
27915         IF(VINT(14).GT.VINT(34)) VINT(34)=VINT(14)
27916         IF(VINT(13).GT.VINT(33)) VINT(33)=VINT(13)
27917
27918       ELSEIF(ILIM.EQ.4) THEN
27919 C...Calculate limits on tau'
27920 C...0) due to kinematics
27921         TAPMN0=TAU
27922         IF(ISTSB.EQ.5.AND.VINT(201).GT.0D0) THEN
27923           PQRAT=(VINT(201)+VINT(206))/VINT(1)
27924           TAPMN0=(SQRT(TAU)+PQRAT)**2
27925         ENDIF
27926         TAPMX0=1D0
27927 C...1) due to explicit limits
27928         TAPMN1=CKIN(31)**2/VINT(2)
27929         TAPMX1=1D0
27930         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
27931  
27932 C...Net effect of all separate limits.
27933         VINT(16)=MAX(TAPMN0,TAPMN1)
27934         VINT(36)=MIN(TAPMX0,TAPMX1)
27935         IF(MINT(47).EQ.1) THEN
27936           VINT(16)=1D0-1D-9
27937           VINT(36)=1D0+1D-9
27938         ELSEIF(MINT(47).EQ.5) THEN
27939           VINT(36)=MIN(VINT(36),1D0-2D-10)
27940         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
27941           VINT(36)=MIN(VINT(36),1D0-1D-10)
27942         ENDIF
27943         IF(VINT(36).LE.VINT(16)) MINT(51)=1
27944  
27945       ENDIF
27946       RETURN
27947  
27948 C...Special case for low-pT and multiple interactions:
27949 C...effective kinematical limits for tau, y*, cos(theta-hat).
27950   100 IF(ILIM.EQ.0) THEN
27951       ELSEIF(ILIM.EQ.1) THEN
27952         IF(MSTP(82).LE.1) THEN
27953           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
27954      &    VINT(2)
27955         ELSE
27956           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
27957         ENDIF
27958         VINT(31)=1D0
27959       ELSEIF(ILIM.EQ.2) THEN
27960         VINT(12)=0.5D0*LOG(VINT(21))
27961         VINT(32)=-VINT(12)
27962       ELSEIF(ILIM.EQ.3) THEN
27963         IF(MSTP(82).LE.1) THEN
27964           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
27965      &    (VINT(21)*VINT(2))
27966         ELSE
27967           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
27968      &    (VINT(21)*VINT(2))
27969         ENDIF
27970         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
27971         VINT(33)=0D0
27972         VINT(14)=0D0
27973         VINT(34)=-VINT(13)
27974       ENDIF
27975  
27976       RETURN
27977       END
27978  
27979 C*********************************************************************
27980  
27981 C...PYKMAP
27982 C...Maps a uniform distribution into a distribution of a kinematical
27983 C...variable according to one of the possibilities allowed. It is
27984 C...assumed that kinematical limits have been set by a PYKLIM call.
27985  
27986       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
27987  
27988 C...Double precision and integer declarations.
27989       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27990       IMPLICIT INTEGER(I-N)
27991       INTEGER PYK,PYCHGE,PYCOMP
27992 C...Commonblocks.
27993       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27994       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27995       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
27996       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27997       COMMON/PYINT1/MINT(400),VINT(400)
27998       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
27999       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
28000  
28001 C...Convert VVAR to tau variable.
28002       ISUB=MINT(1)
28003       ISTSB=ISET(ISUB)
28004       IF(IVAR.EQ.1) THEN
28005         TAUMIN=VINT(11)
28006         TAUMAX=VINT(31)
28007         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
28008           TAURE=VINT(73)
28009           GAMRE=VINT(74)
28010         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
28011           TAURE=VINT(75)
28012           GAMRE=VINT(76)
28013         ELSEIF(MVAR.EQ.8.OR.MVAR.EQ.9) THEN
28014           TAURE=VINT(77)
28015           GAMRE=VINT(78)
28016         ENDIF
28017         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
28018           TAU=1D0
28019         ELSEIF(MVAR.EQ.1) THEN
28020           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
28021         ELSEIF(MVAR.EQ.2) THEN
28022           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
28023         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5.OR.MVAR.EQ.8) THEN
28024           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
28025           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
28026         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6.OR.MVAR.EQ.9) THEN
28027           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
28028           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
28029           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
28030         ELSEIF(MINT(47).EQ.5) THEN
28031           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
28032           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
28033           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28034         ELSE
28035           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
28036           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
28037           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28038         ENDIF
28039         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
28040  
28041 C...Convert VVAR to y* variable.
28042       ELSEIF(IVAR.EQ.2) THEN
28043         YSTMIN=VINT(12)
28044         YSTMAX=VINT(32)
28045         TAUE=VINT(21)
28046         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
28047         IF(MINT(47).EQ.1) THEN
28048           YST=0D0
28049         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
28050           YST=-0.5D0*LOG(TAUE)
28051         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
28052           YST=0.5D0*LOG(TAUE)
28053         ELSEIF(MVAR.EQ.1) THEN
28054           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
28055         ELSEIF(MVAR.EQ.2) THEN
28056           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
28057         ELSEIF(MVAR.EQ.3) THEN
28058           AUPP=ATAN(EXP(YSTMAX))
28059           ALOW=ATAN(EXP(YSTMIN))
28060           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
28061         ELSEIF(MVAR.EQ.4) THEN
28062           YST0=-0.5D0*LOG(TAUE)
28063           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
28064           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
28065           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
28066         ELSE
28067           YST0=-0.5D0*LOG(TAUE)
28068           AUPP=LOG(MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
28069           ALOW=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0))
28070           YST=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
28071         ENDIF
28072         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
28073  
28074 C...Convert VVAR to cos(theta-hat) variable.
28075       ELSEIF(IVAR.EQ.3) THEN
28076         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
28077         RSQM=1D0+RM34
28078         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
28079      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
28080         CTNMIN=VINT(13)
28081         CTNMAX=VINT(33)
28082         CTPMIN=VINT(14)
28083         CTPMAX=VINT(34)
28084         IF(MVAR.EQ.1) THEN
28085           ANEG=CTNMAX-CTNMIN
28086           APOS=CTPMAX-CTPMIN
28087           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28088             VCTN=VVAR*(ANEG+APOS)/ANEG
28089             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
28090           ELSE
28091             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28092             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
28093           ENDIF
28094         ELSEIF(MVAR.EQ.2) THEN
28095           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28096           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28097           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28098           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28099           ANEG=LOG(RMNMIN/RMNMAX)
28100           APOS=LOG(RMPMIN/RMPMAX)
28101           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28102             VCTN=VVAR*(ANEG+APOS)/ANEG
28103             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
28104           ELSE
28105             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28106             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
28107           ENDIF
28108         ELSEIF(MVAR.EQ.3) THEN
28109           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28110           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28111           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28112           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28113           ANEG=LOG(RMNMAX/RMNMIN)
28114           APOS=LOG(RMPMAX/RMPMIN)
28115           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28116             VCTN=VVAR*(ANEG+APOS)/ANEG
28117             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
28118           ELSE
28119             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28120             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
28121           ENDIF
28122         ELSEIF(MVAR.EQ.4) THEN
28123           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28124           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28125           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28126           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28127           ANEG=1D0/RMNMAX-1D0/RMNMIN
28128           APOS=1D0/RMPMAX-1D0/RMPMIN
28129           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28130             VCTN=VVAR*(ANEG+APOS)/ANEG
28131             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
28132           ELSE
28133             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28134             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
28135           ENDIF
28136         ELSEIF(MVAR.EQ.5) THEN
28137           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28138           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28139           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28140           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28141           ANEG=1D0/RMNMIN-1D0/RMNMAX
28142           APOS=1D0/RMPMIN-1D0/RMPMAX
28143           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28144             VCTN=VVAR*(ANEG+APOS)/ANEG
28145             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
28146           ELSE
28147             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28148             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
28149           ENDIF
28150         ENDIF
28151         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
28152         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
28153         VINT(23)=CTH
28154  
28155 C...Convert VVAR to tau' variable.
28156       ELSEIF(IVAR.EQ.4) THEN
28157         TAU=VINT(21)
28158         TAUPMN=VINT(16)
28159         TAUPMX=VINT(36)
28160         IF(MINT(47).EQ.1) THEN
28161           TAUP=1D0
28162         ELSEIF(MVAR.EQ.1) THEN
28163           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
28164         ELSEIF(MVAR.EQ.2) THEN
28165           AUPP=(1D0-TAU/TAUPMX)**4
28166           ALOW=(1D0-TAU/TAUPMN)**4
28167           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
28168         ELSEIF(MINT(47).EQ.5) THEN
28169           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
28170           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
28171           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28172         ELSE
28173           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
28174           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
28175           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28176         ENDIF
28177         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
28178  
28179 C...Selection of extra variables needed in 2 -> 3 process:
28180 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
28181 C...Since no options are available, the functions of PYKLIM
28182 C...and PYKMAP are joint for these choices.
28183       ELSEIF(IVAR.EQ.5) THEN
28184  
28185 C...Read out total energy and particle masses.
28186         MINT(51)=0
28187         MPTPK=1
28188         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
28189      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
28190      &  MPTPK=2
28191         SHP=VINT(26)*VINT(2)
28192         SHPR=SQRT(SHP)
28193         PM1=VINT(201)
28194         PM2=VINT(206)
28195         PM3=SQRT(VINT(21))*VINT(1)
28196         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
28197           MINT(51)=1
28198           RETURN
28199         ENDIF
28200         PMRS1=VINT(204)**2
28201         PMRS2=VINT(209)**2
28202  
28203 C...Specify coefficients of pT choice; upper and lower limits.
28204         IF(MPTPK.EQ.1) THEN
28205           HWT1=0.4D0
28206           HWT2=0.4D0
28207         ELSE
28208           HWT1=0.05D0
28209           HWT2=0.05D0
28210         ENDIF
28211         HWT3=1D0-HWT1-HWT2
28212         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
28213      &  (4D0*SHP)
28214         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
28215         PTSMN1=CKIN(51)**2
28216         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
28217      &  (4D0*SHP)
28218         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
28219         PTSMN2=CKIN(53)**2
28220  
28221 C...Select transverse momenta according to
28222 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
28223         HMX=PMRS1+PTSMX1
28224         HMN=PMRS1+PTSMN1
28225         IF(HMX.LT.1.0001D0*HMN) THEN
28226           MINT(51)=1
28227           RETURN
28228         ENDIF
28229         HDE=PTSMX1-PTSMN1
28230         RPT=PYR(0)
28231         IF(RPT.LT.HWT1) THEN
28232           PTS1=PTSMN1+PYR(0)*HDE
28233         ELSEIF(RPT.LT.HWT1+HWT2) THEN
28234           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
28235         ELSE
28236           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
28237         ENDIF
28238         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
28239      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
28240         HMX=PMRS2+PTSMX2
28241         HMN=PMRS2+PTSMN2
28242         IF(HMX.LT.1.0001D0*HMN) THEN
28243           MINT(51)=1
28244           RETURN
28245         ENDIF
28246         HDE=PTSMX2-PTSMN2
28247         RPT=PYR(0)
28248         IF(RPT.LT.HWT1) THEN
28249           PTS2=PTSMN2+PYR(0)*HDE
28250         ELSEIF(RPT.LT.HWT1+HWT2) THEN
28251           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
28252         ELSE
28253           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
28254         ENDIF
28255         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
28256      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
28257  
28258 C...Select azimuthal angles and check pT choice.
28259         PHI1=PARU(2)*PYR(0)
28260         PHI2=PARU(2)*PYR(0)
28261         PHIR=PHI2-PHI1
28262         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
28263         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
28264      &  CKIN(56)**2)) THEN
28265           MINT(51)=1
28266           RETURN
28267         ENDIF
28268  
28269 C...Calculate transverse masses and check phase space not closed.
28270         PMS1=PM1**2+PTS1
28271         PMS2=PM2**2+PTS2
28272         PMS3=PM3**2+PTS3
28273         PMT1=SQRT(PMS1)
28274         PMT2=SQRT(PMS2)
28275         PMT3=SQRT(PMS3)
28276         PM12=(PMT1+PMT2)**2
28277         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
28278           MINT(51)=1
28279           RETURN
28280         ENDIF
28281  
28282 C...Select rapidity for particle 3 and check phase space not closed.
28283         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
28284      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
28285         IF(Y3MAX.LT.1D-6) THEN
28286           MINT(51)=1
28287           RETURN
28288         ENDIF
28289         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
28290         PZ3=PMT3*SINH(Y3)
28291         PE3=PMT3*COSH(Y3)
28292  
28293 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
28294         PZ12=-PZ3
28295         PE12=SHPR-PE3
28296         PMS12=PE12**2-PZ12**2
28297         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
28298         IF(SQL12.LT.1D-6*SHP) THEN
28299           MINT(51)=1
28300           RETURN
28301         ENDIF
28302         PMM1=PMS12+PMS1-PMS2
28303         PMM2=PMS12+PMS2-PMS1
28304         TFAC=-SHPR/(2D0*PMS12)
28305         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
28306         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
28307         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
28308         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
28309  
28310 C...Construct relative mirror weights and make choice.
28311         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
28312           WTPU=1D0
28313           WTNU=1D0
28314         ELSE
28315           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
28316           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
28317         ENDIF
28318         WTP=WTPU/(WTPU+WTNU)
28319         WTN=WTNU/(WTPU+WTNU)
28320         EPS=1D0
28321         IF(WTN.GT.PYR(0)) EPS=-1D0
28322  
28323 C...Store result of variable choice and associated weights.
28324         VINT(202)=PTS1
28325         VINT(207)=PTS2
28326         VINT(203)=PHI1
28327         VINT(208)=PHI2
28328         VINT(205)=WTPTS1
28329         VINT(210)=WTPTS2
28330         VINT(211)=Y3
28331         VINT(212)=Y3MAX
28332         VINT(213)=EPS
28333         IF(EPS.GT.0D0) THEN
28334           VINT(214)=1D0/WTP
28335           VINT(215)=T1P
28336           VINT(216)=T2P
28337         ELSE
28338           VINT(214)=1D0/WTN
28339           VINT(215)=T1N
28340           VINT(216)=T2N
28341         ENDIF
28342         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
28343         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
28344         VINT(219)=0.5D0*(PMS12-PTS3)
28345         VINT(220)=SQL12
28346       ENDIF
28347  
28348       RETURN
28349       END
28350  
28351 C***********************************************************************
28352  
28353 C...PYSIGH
28354 C...Differential matrix elements for all included subprocesses
28355 C...Note that what is coded is (disregarding the COMFAC factor)
28356 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
28357 C...when d(sigma-hat) is given in the zero-width limit, the delta
28358 C...function in tau is replaced by a (modified) Breit-Wigner:
28359 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
28360 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
28361 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
28362 C...i.e., dimensionless quantities
28363 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
28364 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
28365 C...(2pi)^4 delta^4(P - sum p_i)
28366 C...COMFAC contains the factor pi/s (or equivalent) and
28367 C...the conversion factor from GeV^-2 to mb
28368  
28369       SUBROUTINE PYSIGH(NCHN,SIGS)
28370  
28371 C...Double precision and integer declarations
28372       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28373       IMPLICIT INTEGER(I-N)
28374       INTEGER PYK,PYCHGE,PYCOMP
28375 C...Parameter statement to help give large particle numbers.
28376       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
28377      &KEXCIT=4000000,KDIMEN=5000000)
28378 C...Commonblocks
28379       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
28380       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28381       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28382       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
28383       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
28384       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28385       COMMON/PYINT1/MINT(400),VINT(400)
28386       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
28387       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
28388       COMMON/PYINT4/MWID(500),WIDS(500,5)
28389       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
28390       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
28391       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
28392       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
28393      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
28394       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
28395       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
28396      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
28397      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
28398      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
28399       COMMON/PYTCCO/COEFX(194:380,2)
28400       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
28401      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
28402      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYSGCM/,/PYTCCO/
28403 C...Local arrays and complex variables
28404       DIMENSION XPQ(-25:25)
28405  
28406 C...Map of processes onto which routine to call
28407 C...in order to evaluate cross section:
28408 C...0 = not implemented;
28409 C...1 = standard QCD (including photons);
28410 C...2 = heavy flavours;
28411 C...3 = W/Z;
28412 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
28413 C...5 = SUSY;
28414 C...6 = Technicolor;
28415 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
28416       DIMENSION MAPPR(500)
28417       DATA (MAPPR(I),I=1,180)/
28418      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
28419      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
28420      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
28421      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
28422      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
28423      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
28424      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
28425      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
28426      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28427      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
28428      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
28429      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
28430      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
28431      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
28432      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
28433      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
28434      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
28435      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
28436       DATA (MAPPR(I),I=181,500)/
28437      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
28438      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
28439      &    100*5,
28440      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
28441      1     30*0,
28442      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
28443      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
28444      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
28445      7    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
28446      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
28447      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
28448      &    4,  4,  18*0,
28449      2    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
28450      3    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28451      4     20*0,
28452      6    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
28453      7    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
28454      8     20*0/
28455  
28456 C...Reset number of channels and cross-section
28457       NCHN=0
28458       SIGS=0D0
28459  
28460 C...Read process to consider.
28461       ISUB=MINT(1)
28462       ISUBSV=ISUB
28463       MAP=MAPPR(ISUB)
28464  
28465 C...Read kinematical variables and limits
28466       ISTSB=ISET(ISUBSV)
28467       TAUMIN=VINT(11)
28468       YSTMIN=VINT(12)
28469       CTNMIN=VINT(13)
28470       CTPMIN=VINT(14)
28471       TAUPMN=VINT(16)
28472       TAU=VINT(21)
28473       YST=VINT(22)
28474       CTH=VINT(23)
28475       XT2=VINT(25)
28476       TAUP=VINT(26)
28477       TAUMAX=VINT(31)
28478       YSTMAX=VINT(32)
28479       CTNMAX=VINT(33)
28480       CTPMAX=VINT(34)
28481       TAUPMX=VINT(36)
28482  
28483 C...Derive kinematical quantities
28484       TAUE=TAU
28485       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
28486       X(1)=SQRT(TAUE)*EXP(YST)
28487       X(2)=SQRT(TAUE)*EXP(-YST)
28488       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
28489         IF(X(1).GT.1D0-1D-7) RETURN
28490       ELSEIF(MINT(45).EQ.3) THEN
28491         X(1)=MIN(1D0-1.1D-10,X(1))
28492       ENDIF
28493       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
28494         IF(X(2).GT.1D0-1D-7) RETURN
28495       ELSEIF(MINT(46).EQ.3) THEN
28496         X(2)=MIN(1D0-1.1D-10,X(2))
28497       ENDIF
28498       SH=MAX(1D0,TAU*VINT(2))
28499       SQM3=VINT(63)
28500       SQM4=VINT(64)
28501       RM3=SQM3/SH
28502       RM4=SQM4/SH
28503       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
28504       RPTS=4D0*VINT(71)**2/SH
28505       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
28506       RM34=MAX(1D-20,2D0*RM3*RM4)
28507       RSQM=1D0+RM34
28508       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
28509      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
28510       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
28511       IF(ISTSB.EQ.0) THEN
28512         TH=VINT(45)
28513         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
28514         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
28515       ELSE
28516 C...Kinematics with incoming masses tricky: now depends on how
28517 C...subprocess has been set up w.r.t. order of incoming partons.
28518         RM1=0D0
28519         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
28520         RM2=0D0
28521         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
28522         IF(ISUB.EQ.35) THEN
28523           RM2=MIN(RM1,RM2)
28524           RM1=0D0
28525         ENDIF
28526         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
28527         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
28528         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
28529      &  BE12*BE34*CTH)
28530         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
28531      &  BE12*BE34*CTH)
28532         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
28533       ENDIF
28534       SHR=SQRT(SH)
28535       SH2=SH**2
28536       TH2=TH**2
28537       UH2=UH**2
28538  
28539 C...Choice of Q2 scale for hard process (e.g. alpha_s).
28540       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
28541         Q2=SH
28542       ELSEIF(ISTSB.EQ.8) THEN
28543         IF(MINT(107).EQ.4) Q2=VINT(307)
28544         IF(MINT(108).EQ.4) Q2=VINT(308)
28545       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
28546         Q2IN1=0D0
28547         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
28548         Q2IN2=0D0
28549         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
28550         IF(MSTP(32).EQ.1) THEN
28551           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
28552         ELSEIF(MSTP(32).EQ.2) THEN
28553           Q2=SQPTH+0.5D0*(SQM3+SQM4)
28554         ELSEIF(MSTP(32).EQ.3) THEN
28555           Q2=MIN(-TH,-UH)
28556         ELSEIF(MSTP(32).EQ.4) THEN
28557           Q2=SH
28558         ELSEIF(MSTP(32).EQ.5) THEN
28559           Q2=-TH
28560         ELSEIF(MSTP(32).EQ.6) THEN
28561           XSF1=X(1)
28562           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
28563           XSF2=X(2)
28564           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
28565           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
28566      &    (SQPTH+0.5D0*(SQM3+SQM4))
28567         ELSEIF(MSTP(32).EQ.7) THEN
28568           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
28569         ELSEIF(MSTP(32).EQ.8) THEN
28570           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
28571         ELSEIF(MSTP(32).EQ.9) THEN
28572           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
28573         ELSEIF(MSTP(32).EQ.10) THEN
28574           Q2=VINT(2)
28575 C..Begin JA 040914
28576         ELSEIF(MSTP(32).EQ.11) THEN
28577           Q2=0.25*(SQM3+SQM4+2*SQRT(SQM3*SQM4))
28578         ELSEIF(MSTP(32).EQ.12) THEN
28579           Q2=PARP(193)
28580 C..End JA
28581         ELSEIF(MSTP(32).EQ.13) THEN
28582           Q2=SQPTH
28583         ENDIF
28584         IF(MINT(35).LE.2.AND.ISTSB.EQ.9) Q2=SQPTH
28585         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
28586      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
28587       ENDIF
28588  
28589 C...Choice of Q2 scale for parton densities.
28590       Q2SF=Q2
28591 C..Begin JA 040914
28592       IF(MSTP(32).EQ.12.AND.(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9)
28593      &     .OR.MSTP(39).EQ.8.AND.(ISTSB.GE.3.AND.ISTSB.LE.5))
28594      &     Q2=PARP(194)
28595 C..End JA
28596       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
28597         Q2SF=PMAS(23,1)**2
28598         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
28599      &  ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351) Q2SF=PMAS(24,1)**2 
28600         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
28601         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
28602      &  ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402) THEN
28603           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
28604           IF(MSTP(39).EQ.2) Q2SF=
28605      &         MAX(VINT(201)**2+VINT(202),VINT(206)**2+VINT(207))
28606           IF(MSTP(39).EQ.3) Q2SF=SH
28607           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
28608           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
28609 C..Begin JA 040914
28610           IF(MSTP(39).EQ.6) Q2SF=0.25*(VINT(201)+SQRT(SH))**2
28611           IF(MSTP(39).EQ.7) Q2SF=
28612      &         (VINT(201)**2+VINT(202)+VINT(206)**2+VINT(207))/2d0
28613           IF(MSTP(39).EQ.8) Q2SF=PARP(193)
28614 C..End JA
28615         ENDIF
28616       ENDIF
28617       IF(MINT(35).GE.3.AND.ISTSB.EQ.9) Q2SF=SQPTH
28618  
28619       Q2PS=Q2SF
28620       Q2SF=Q2SF*PARP(34)
28621       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
28622       IF(MSTP(69).GE.2) Q2SF=VINT(2)
28623  
28624 C...Identify to which class(es) subprocess belongs
28625       ISMECR=0
28626       ISQCD=0
28627       ISJETS=0
28628       IF (ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.ISUBSV.EQ.3.OR.
28629      &     ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
28630      &     ISUBSV.EQ.144.OR.ISUBSV.EQ.151.OR.ISUBSV.EQ.152.OR.
28631      &     ISUBSV.EQ.156.OR.ISUBSV.EQ.157) ISMECR=1
28632       IF (ISUBSV.EQ.11.OR.ISUBSV.EQ.12.OR.ISUBSV.EQ.13.OR.
28633      &     ISUBSV.EQ.28.OR.ISUBSV.EQ.53.OR.ISUBSV.EQ.68) ISQCD=1
28634       IF ((ISUBSV.EQ.81.OR.ISUBSV.EQ.82).AND.MINT(55).LE.5) ISQCD=1
28635       IF (ISUBSV.GE.381.AND.ISUBSV.LE.386) ISQCD=1
28636       IF ((ISUBSV.EQ.387.OR.ISUBSV.EQ.388).AND.MINT(55).LE.5) ISQCD=1
28637       IF (ISTSB.EQ.9) ISQCD=1
28638       IF ((ISUBSV.GE.86.AND.ISUBSV.LE.89).OR.ISUBSV.EQ.107.OR.
28639      &     (ISUBSV.GE.14.AND.ISUBSV.LE.16).OR.(ISUBSV.GE.29.AND.
28640      &     ISUBSV.LE.32).OR.(ISUBSV.GE.111.AND.ISUBSV.LE.113).OR.
28641      &     ISUBSV.EQ.115.OR.(ISUBSV.GE.183.AND.ISUBSV.LE.185).OR.
28642      &     (ISUBSV.GE.188.AND.ISUBSV.LE.190).OR.ISUBSV.EQ.161.OR.
28643      &     ISUBSV.EQ.167.OR.ISUBSV.EQ.168.OR.(ISUBSV.GE.393.AND.
28644      &     ISUBSV.LE.395).OR.(ISUBSV.GE.421.AND.ISUBSV.LE.439).OR.
28645      &     (ISUBSV.GE.461.AND.ISUBSV.LE.479)) ISJETS=1
28646 C...WBF is special case of ISJETS
28647       IF (ISUBSV.EQ.5.OR.ISUBSV.EQ.8.OR.
28648      &    (ISUBSV.GE.71.AND.ISUBSV.LE.73).OR.
28649      &    ISUBSV.EQ.76.OR.ISUBSV.EQ.77.OR.
28650      &    (ISUBSV.GE.121.AND.ISUBSV.LE.124).OR.
28651      &    ISUBSV.EQ.173.OR.ISUBSV.EQ.174.OR.
28652      &    ISUBSV.EQ.178.OR.ISUBSV.EQ.179.OR.
28653      &    ISUBSV.EQ.181.OR.ISUBSV.EQ.182.OR.
28654      &    ISUBSV.EQ.186.OR.ISUBSV.EQ.187.OR.
28655      &    ISUBSV.EQ.351.OR.ISUBSV.EQ.352) ISJETS=2
28656 C...Some processes with photons also belong here.
28657       IF (ISUBSV.EQ.10.OR.(ISUBSV.GE.18.AND.ISUBSV.LE.20).OR.
28658      &     (ISUBSV.GE.33.AND.ISUBSV.LE.36).OR.ISUBSV.EQ.54.OR.
28659      &     ISUBSV.EQ.58.OR.ISUBSV.EQ.69.OR.ISUBSV.EQ.70.OR.
28660      &     ISUBSV.EQ.80.OR.(ISUBSV.GE.83.AND.ISUBSV.LE.85).OR.
28661      &     (ISUBSV.GE.106.AND.ISUBSV.LE.110).OR.ISUBSV.EQ.114.OR.
28662      &     (ISUBSV.GE.131.AND.ISUBSV.LE.140)) ISJETS=3
28663
28664 C...Choice of Q2 scale for parton-shower activity.
28665       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
28666      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
28667         XBJ=X(2)
28668         IF(MINT(43).EQ.3) XBJ=X(1)
28669         IF(MSTP(22).EQ.1) THEN
28670           Q2PS=-TH
28671         ELSEIF(MSTP(22).EQ.2) THEN
28672           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
28673         ELSEIF(MSTP(22).EQ.3) THEN
28674           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
28675         ELSE
28676           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
28677         ENDIF
28678       ENDIF
28679 C...For multiple interactions, start from scale defined above
28680 C...For all other QCD or "+jets"-type events, start shower from pThard.
28681       IF (ISJETS.EQ.1.OR.ISQCD.EQ.1.AND.ISTSB.NE.9) Q2PS=SQPTH
28682       IF((MSTP(68).EQ.1.OR.MSTP(68).EQ.3).AND.ISMECR.EQ.1) THEN
28683 C...Max shower scale = s for ME corrected processes.
28684 C...(pT-ordering: max pT2 is s/4)
28685         Q2PS=VINT(2)
28686         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
28687       ELSEIF(MSTP(68).GE.2.AND.ISQCD.EQ.0.AND.ISJETS.EQ.0) THEN
28688 C...Max shower scale = s for all non-QCD, non-"+ jet" type processes.
28689 C...(pT-ordering: max pT2 is s/4)
28690         Q2PS=VINT(2)
28691         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
28692       ENDIF
28693       IF(MINT(35).EQ.2.AND.ISTSB.EQ.9) Q2PS=SQPTH
28694
28695 C...Elastic and diffractive events not associated with scales so set 0.
28696       IF(ISUBSV.GE.91.AND.ISUBSV.LE.94) THEN
28697         Q2SF=0D0
28698         Q2PS=0D0
28699       ENDIF
28700  
28701 C...Store derived kinematical quantities
28702       VINT(41)=X(1)
28703       VINT(42)=X(2)
28704       VINT(44)=SH
28705       VINT(43)=SQRT(SH)
28706       VINT(45)=TH
28707       VINT(46)=UH
28708       IF(ISTSB.NE.8) VINT(48)=SQPTH
28709       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
28710       VINT(50)=TAUP*VINT(2)
28711       VINT(49)=SQRT(MAX(0D0,VINT(50)))
28712       VINT(52)=Q2
28713       VINT(51)=SQRT(Q2)
28714       VINT(54)=Q2SF
28715       VINT(53)=SQRT(Q2SF)
28716       VINT(56)=Q2PS
28717       VINT(55)=SQRT(Q2PS)
28718  
28719 C...Set starting scale for multiple interactions
28720       IF (ISUBSV.EQ.95) THEN
28721         XT2GMX=0D0
28722       ELSEIF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
28723      &      ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
28724      &      ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
28725      &      ISUBSV.NE.96)) THEN
28726 C...All accessible phase space allowed.
28727         XT2GMX=(1D0-VINT(41))*(1D0-VINT(42))
28728       ELSE
28729 C...Scale of hard process sets limit.
28730 C...2 -> 1. Limit is tau = x1*x2.
28731 C...2 -> 2. Limit is XT2 for hard process + FS masses.
28732 C...2 -> n > 2. Limit is tau' = tau of outer process.
28733         XT2GMX=VINT(25)
28734         IF(ISTSB.EQ.1) XT2GMX=VINT(21)
28735         IF(ISTSB.EQ.2)
28736      &      XT2GMX=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
28737         IF(ISTSB.GE.3.AND.ISTSB.LE.5) XT2GMX=VINT(26)
28738       ENDIF
28739       VINT(62)=0.25D0*XT2GMX*VINT(2)
28740       VINT(61)=SQRT(MAX(0D0,VINT(62)))
28741  
28742 C...Calculate parton distributions
28743       IF(ISTSB.LE.0) GOTO 160
28744       IF(MINT(47).GE.2) THEN
28745         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
28746           XSF=X(I)
28747           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
28748           IF(ISUB.EQ.99) THEN
28749             IF(MINT(140+I).EQ.0) THEN
28750               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
28751             ELSE
28752               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
28753             ENDIF
28754             VINT(40+I)=XSF
28755             Q2SF=VINT(309-I)
28756           ENDIF
28757           MINT(105)=MINT(102+I)
28758           MINT(109)=MINT(106+I)
28759           VINT(120)=VINT(2+I)
28760 C.... ALICE
28761 C.... Store side in MINT(124)
28762           MINT(124)=I
28763 C....
28764           IF(MSTP(57).LE.1) THEN
28765             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
28766           ELSE
28767             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
28768           ENDIF
28769 C...Safety margin against heavy flavour very close to threshold,
28770 C...e.g. caused by mismatch in c and b masses.
28771           IF(Q2SF.LT.1.1*PMAS(4,1)**2) THEN
28772             XPQ(4)=0D0
28773             XPQ(-4)=0D0
28774           ENDIF
28775           IF(Q2SF.LT.1.1*PMAS(5,1)**2) THEN
28776             XPQ(5)=0D0
28777             XPQ(-5)=0D0
28778           ENDIF
28779           DO 100 KFL=-25,25
28780             XSFX(I,KFL)=XPQ(KFL)
28781   100     CONTINUE
28782   110   CONTINUE
28783       ENDIF
28784  
28785 C...Calculate alpha_em, alpha_strong and K-factor
28786       XW=PARU(102)
28787       XWV=XW
28788       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
28789      &1D0-(PMAS(24,1)/PMAS(23,1))**2
28790       XW1=1D0-XW
28791       XWC=1D0/(16D0*XW*XW1)
28792       AEM=PYALEM(Q2)
28793       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
28794       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
28795       FACK=1D0
28796       FACA=1D0
28797       IF(MSTP(33).EQ.1) THEN
28798         FACK=PARP(31)
28799       ELSEIF(MSTP(33).EQ.2) THEN
28800         FACK=PARP(31)
28801         FACA=PARP(32)/PARP(31)
28802       ELSEIF(MSTP(33).EQ.3) THEN
28803         Q2AS=PARP(33)*Q2
28804         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
28805      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
28806         AS=PYALPS(Q2AS)
28807       ENDIF
28808       VINT(138)=1D0
28809       VINT(57)=AEM
28810       VINT(58)=AS
28811  
28812 C...Set flags for allowed reacting partons/leptons
28813       DO 140 I=1,2
28814         DO 120 J=-25,25
28815           KFAC(I,J)=0
28816   120   CONTINUE
28817         IF(MINT(44+I).EQ.1) THEN
28818           KFAC(I,MINT(10+I))=1
28819         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
28820           KFAC(I,MINT(10+I))=1
28821           KFAC(I,22)=1
28822           KFAC(I,24)=1
28823           KFAC(I,-24)=1
28824         ELSE
28825           DO 130 J=-25,25
28826             KFAC(I,J)=KFIN(I,J)
28827             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
28828             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
28829   130     CONTINUE
28830         ENDIF
28831   140 CONTINUE
28832  
28833 C...Lower and upper limit for fermion flavour loops
28834       MMIN1=0
28835       MMAX1=0
28836       MMIN2=0
28837       MMAX2=0
28838       DO 150 J=-20,20
28839         IF(KFAC(1,-J).EQ.1) MMIN1=-J
28840         IF(KFAC(1,J).EQ.1) MMAX1=J
28841         IF(KFAC(2,-J).EQ.1) MMIN2=-J
28842         IF(KFAC(2,J).EQ.1) MMAX2=J
28843   150 CONTINUE
28844       MMINA=MIN(MMIN1,MMIN2)
28845       MMAXA=MAX(MMAX1,MMAX2)
28846  
28847 C...Common resonance mass and width combinations
28848       SQMZ=PMAS(23,1)**2
28849       SQMW=PMAS(24,1)**2
28850       GMMZ=PMAS(23,1)*PMAS(23,2)
28851       GMMW=PMAS(24,1)*PMAS(24,2)
28852  
28853 C...Polarization factors...implemented so far for W+W-(25)
28854       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
28855       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
28856       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
28857       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
28858  
28859 C...Phase space integral in tau
28860       COMFAC=PARU(1)*PARU(5)/VINT(2)
28861       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
28862       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
28863      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
28864         ATAU1=LOG(TAUMAX/TAUMIN)
28865         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
28866         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
28867         IF(MINT(72).GE.1) THEN
28868           TAUR1=VINT(73)
28869           GAMR1=VINT(74)
28870           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
28871           ATAU3=ATAUD/TAUR1
28872           IF(ATAUD.GT.1D-10) H1=H1+
28873      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
28874           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
28875           ATAU4=ATAUD/GAMR1
28876           IF(ATAUD.GT.1D-10) H1=H1+
28877      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
28878         ENDIF
28879         IF(MINT(72).GE.2) THEN
28880           TAUR2=VINT(75)
28881           GAMR2=VINT(76)
28882           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
28883           ATAU5=ATAUD/TAUR2
28884           IF(ATAUD.GT.1D-10) H1=H1+
28885      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
28886           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
28887           ATAU6=ATAUD/GAMR2
28888           IF(ATAUD.GT.1D-10) H1=H1+
28889      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
28890         ENDIF
28891         IF(MINT(72).EQ.3) THEN
28892           TAUR3=VINT(77)
28893           GAMR3=VINT(78)
28894           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))
28895           ATAU50=ATAUD/TAUR3
28896           IF(ATAUD.GT.1D-10) H1=H1+
28897      &    (ATAU1/ATAU50)*COEFX(ISUBSV,1)/(TAU+TAUR3)
28898           ATAUD=ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3)
28899           ATAU60=ATAUD/GAMR3
28900           IF(ATAUD.GT.1D-10) H1=H1+
28901      &    (ATAU1/ATAU60)*COEFX(ISUBSV,2)*TAU/((TAU-TAUR3)**2+GAMR3**2)
28902         ENDIF
28903         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
28904           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
28905           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
28906      &    MAX(2D-10,1D0-TAU)
28907         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
28908           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
28909           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
28910      &    MAX(1D-10,1D0-TAU)
28911         ENDIF
28912         COMFAC=COMFAC*ATAU1/(TAU*H1)
28913       ENDIF
28914  
28915 C...Phase space integral in y*
28916       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
28917      &THEN
28918         AYST0=YSTMAX-YSTMIN
28919         IF(AYST0.LT.1D-10) THEN
28920           COMFAC=0D0
28921         ELSE
28922           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
28923           AYST2=AYST1
28924           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
28925           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
28926      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
28927      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
28928           IF(MINT(45).EQ.3) THEN
28929             YST0=-0.5D0*LOG(TAUE)
28930             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
28931      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
28932             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
28933      &      MAX(1D-10,1D0-EXP(YST-YST0))
28934           ENDIF
28935           IF(MINT(46).EQ.3) THEN
28936             YST0=-0.5D0*LOG(TAUE)
28937             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
28938      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
28939             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
28940      &      MAX(1D-10,1D0-EXP(-YST-YST0))
28941           ENDIF
28942           COMFAC=COMFAC*AYST0/H2
28943         ENDIF
28944       ENDIF
28945  
28946 C...2 -> 1 processes: reduction in angular part of phase space integral
28947 C...for case of decaying resonance
28948       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
28949       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
28950         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
28951           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
28952      &    KFPR(ISUB,1).EQ.39) THEN
28953             COMFAC=COMFAC*0.5D0*ACTH0
28954           ELSE
28955             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
28956      &      CTPMAX**3-CTPMIN**3)
28957           ENDIF
28958         ENDIF
28959  
28960 C...2 -> 2 processes: angular part of phase space integral
28961       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
28962         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
28963      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
28964         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
28965      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
28966         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
28967      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
28968         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
28969      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
28970         H3=COEF(ISUBSV,13)+
28971      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
28972      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
28973      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
28974      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
28975         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
28976  
28977 C...2 -> 2 processes: take into account final state Breit-Wigners
28978         COMFAC=COMFAC*VINT(80)
28979       ENDIF
28980  
28981 C...2 -> 3, 4 processes: phace space integral in tau'
28982       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
28983         ATAUP1=LOG(TAUPMX/TAUPMN)
28984         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
28985         H4=COEF(ISUBSV,18)+
28986      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
28987         IF(MINT(47).EQ.5) THEN
28988           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
28989           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
28990         ELSEIF(MINT(47).GE.6) THEN
28991           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
28992           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
28993         ENDIF
28994         COMFAC=COMFAC*ATAUP1/H4
28995       ENDIF
28996  
28997 C...2 -> 3, 4 processes: effective W/Z parton distributions
28998       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
28999         IF(1D0-TAU/TAUP.GT.1D-4) THEN
29000           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
29001         ELSE
29002           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
29003         ENDIF
29004         COMFAC=COMFAC*FZW
29005       ENDIF
29006  
29007 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
29008       IF(ISTSB.EQ.5) THEN
29009         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
29010      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
29011       ENDIF
29012  
29013 C...Phase space integral for low-pT and multiple interactions
29014       IF(ISTSB.EQ.9) THEN
29015         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
29016         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
29017         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
29018         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
29019         COMFAC=COMFAC*ATAU1/H1
29020         AYST0=YSTMAX-YSTMIN
29021         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
29022         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
29023         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
29024      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
29025      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
29026         COMFAC=COMFAC*AYST0/H2
29027         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
29028 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
29029 C...introduced to make cross-section finite for xT2 -> 0
29030         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
29031      &  (1D0+VINT(149)))
29032       ENDIF
29033  
29034 C...Real gamma + gamma: include factor 2 when different nature
29035   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
29036      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
29037  
29038 C...Extra factors to include the effects of
29039 C...longitudinal resolved photons (but not direct or DIS ones).
29040       DO 170 ISDE=1,2
29041         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
29042      &  MINT(106+ISDE).LE.3) THEN
29043           VINT(314+ISDE)=1D0
29044           XY=PARP(166+ISDE)
29045           IF(MSTP(16).EQ.0) THEN
29046             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
29047      &      XY=VINT(304+ISDE)
29048           ELSE
29049             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
29050      &      XY=VINT(308+ISDE)
29051           ENDIF
29052           Q2GA=VINT(306+ISDE)
29053           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
29054      &    Q2GA.GT.0D0) THEN
29055             REDUCE=0D0
29056             IF(MSTP(17).EQ.1) THEN
29057               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
29058             ELSEIF(MSTP(17).EQ.2) THEN
29059               REDUCE=4D0*Q2GA/(Q2+Q2GA)
29060             ELSEIF(MSTP(17).EQ.3) THEN
29061               PMVIRT=PMAS(PYCOMP(113),1)
29062               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29063             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
29064               PMVIRT=PMAS(PYCOMP(113),1)
29065               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29066             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
29067               PMVIRT=PMAS(PYCOMP(113),1)
29068               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29069             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
29070               PMVSMN=4D0*PARP(15)**2
29071               PMVSMX=4D0*VINT(154)**2
29072               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29073               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
29074      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
29075               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
29076             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
29077               PMVIRT=PMAS(PYCOMP(113),1)
29078               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29079             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
29080               PMVIRT=PMAS(PYCOMP(113),1)
29081               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29082             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
29083               PMVSMN=4D0*PARP(15)**2
29084               PMVSMX=4D0*VINT(154)**2
29085               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29086               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
29087               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
29088             ENDIF
29089             BEAMAS=PYMASS(11)
29090             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
29091             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
29092      &      (1D0-2D0*BEAMAS**2/Q2GA))
29093             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
29094           ENDIF
29095         ELSE
29096           VINT(314+ISDE)=1D0
29097         ENDIF
29098         COMFAC=COMFAC*VINT(314+ISDE)
29099   170 CONTINUE
29100  
29101 C...Evaluate cross sections - done in separate routines by kind
29102 C...of physics, to keep PYSIGH of sensible size.
29103       IF(MAP.EQ.1) THEN
29104 C...Standard QCD (including photons).
29105         CALL PYSGQC(NCHN,SIGS)
29106       ELSEIF(MAP.EQ.2) THEN
29107 C...Heavy flavours.
29108         CALL PYSGHF(NCHN,SIGS)
29109       ELSEIF(MAP.EQ.3) THEN
29110 C...W/Z.
29111         CALL PYSGWZ(NCHN,SIGS)
29112       ELSEIF(MAP.EQ.4) THEN
29113 C...Higgs (2 doublets; including longitudinal W/Z scattering).
29114         CALL PYSGHG(NCHN,SIGS)
29115       ELSEIF(MAP.EQ.5) THEN
29116 C...SUSY.
29117         CALL PYSGSU(NCHN,SIGS)
29118       ELSEIF(MAP.EQ.6) THEN
29119 C...Technicolor.
29120         CALL PYSGTC(NCHN,SIGS)
29121       ELSEIF(MAP.EQ.7) THEN
29122 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
29123         CALL PYSGEX(NCHN,SIGS)
29124       ENDIF
29125  
29126 C...Multiply with parton distributions
29127       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
29128         DO 180 ICHN=1,NCHN
29129           IF(MINT(45).GE.2) THEN
29130             KFL1=ISIG(ICHN,1)
29131             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
29132           ENDIF
29133           IF(MINT(46).GE.2) THEN
29134             KFL2=ISIG(ICHN,2)
29135             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
29136           ENDIF
29137           SIGS=SIGS+SIGH(ICHN)
29138   180   CONTINUE
29139       ENDIF
29140  
29141       RETURN
29142       END
29143  
29144 C*********************************************************************
29145  
29146 C...PYSGQC
29147 C...Subprocess cross sections for QCD processes,
29148 C...including photons.
29149 C...Auxiliary to PYSIGH.
29150  
29151       SUBROUTINE PYSGQC(NCHN,SIGS)
29152  
29153 C...Double precision and integer declarations
29154       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29155       IMPLICIT INTEGER(I-N)
29156       INTEGER PYK,PYCHGE,PYCOMP
29157 C...Parameter statement to help give large particle numbers.
29158       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
29159      &KEXCIT=4000000,KDIMEN=5000000)
29160 C...Commonblocks
29161       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29162       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29163       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29164       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29165       COMMON/PYINT1/MINT(400),VINT(400)
29166       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29167       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
29168       COMMON/PYINT4/MWID(500),WIDS(500,5)
29169       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
29170       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
29171      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
29172      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
29173      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
29174       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
29175      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
29176 C...Local arrays
29177       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
29178  
29179 C...Differential cross section expressions.
29180  
29181       IF(ISUB.LE.20) THEN
29182         IF(ISUB.EQ.10) THEN
29183 C...f + f' -> f + f' (gamma/Z/W exchange)
29184           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
29185           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
29186           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
29187           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
29188           DO 110 I=MMIN1,MMAX1
29189             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
29190             IA=IABS(I)
29191             DO 100 J=MMIN2,MMAX2
29192               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
29193               JA=IABS(J)
29194 C...Electroweak couplings
29195               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
29196               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
29197               VI=AI-4D0*EI*XWV
29198               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
29199               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
29200               VJ=AJ-4D0*EJ*XWV
29201               EPSIJ=ISIGN(1,I*J)
29202 C...gamma/Z exchange, only gamma exchange, or only Z exchange
29203               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
29204                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
29205                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
29206      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
29207      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
29208      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29209                 ELSEIF(MSTP(21).EQ.2) THEN
29210                   FACNCF=FACGGF*EI**2*EJ**2
29211                 ELSE
29212                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
29213      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29214                 ENDIF
29215 C...Extrafactor 2 for only one incoming neutrino spin state.
29216                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
29217                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
29218                 NCHN=NCHN+1
29219                 ISIG(NCHN,1)=I
29220                 ISIG(NCHN,2)=J
29221                 ISIG(NCHN,3)=1
29222                 SIGH(NCHN)=FACNCF
29223               ENDIF
29224 C...W exchange
29225               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
29226                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
29227                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
29228                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
29229                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
29230                 NCHN=NCHN+1
29231                 ISIG(NCHN,1)=I
29232                 ISIG(NCHN,2)=J
29233                 ISIG(NCHN,3)=2
29234                 SIGH(NCHN)=FACCCF
29235               ENDIF
29236   100       CONTINUE
29237   110     CONTINUE
29238  
29239         ELSEIF(ISUB.EQ.11) THEN
29240 C...f + f' -> f + f' (g exchange)
29241           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
29242           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
29243      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
29244           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
29245      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
29246           DO 130 I=MMIN1,MMAX1
29247             IA=IABS(I)
29248             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
29249             DO 120 J=MMIN2,MMAX2
29250               JA=IABS(J)
29251               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
29252               NCHN=NCHN+1
29253               ISIG(NCHN,1)=I
29254               ISIG(NCHN,2)=J
29255               ISIG(NCHN,3)=1
29256               SIGH(NCHN)=FACQQ1
29257               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
29258               IF(I.EQ.J) THEN
29259                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
29260                 NCHN=NCHN+1
29261                 ISIG(NCHN,1)=I
29262                 ISIG(NCHN,2)=J
29263                 ISIG(NCHN,3)=2
29264                 SIGH(NCHN)=0.5D0*FACQQ2
29265               ENDIF
29266   120       CONTINUE
29267   130     CONTINUE
29268  
29269         ELSEIF(ISUB.EQ.12) THEN
29270 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
29271           CALL PYWIDT(21,SH,WDTP,WDTE)
29272           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
29273      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
29274           DO 140 I=MMINA,MMAXA
29275             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29276      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
29277             NCHN=NCHN+1
29278             ISIG(NCHN,1)=I
29279             ISIG(NCHN,2)=-I
29280             ISIG(NCHN,3)=1
29281             SIGH(NCHN)=FACQQB
29282   140     CONTINUE
29283  
29284         ELSEIF(ISUB.EQ.13) THEN
29285 C...f + fbar -> g + g (q + qbar -> g + g only)
29286           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29287      &    UH2/SH2)
29288           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29289      &    TH2/SH2)
29290           DO 150 I=MMINA,MMAXA
29291             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29292      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
29293             NCHN=NCHN+1
29294             ISIG(NCHN,1)=I
29295             ISIG(NCHN,2)=-I
29296             ISIG(NCHN,3)=1
29297             SIGH(NCHN)=0.5D0*FACGG1
29298             NCHN=NCHN+1
29299             ISIG(NCHN,1)=I
29300             ISIG(NCHN,2)=-I
29301             ISIG(NCHN,3)=2
29302             SIGH(NCHN)=0.5D0*FACGG2
29303   150     CONTINUE
29304  
29305         ELSEIF(ISUB.EQ.14) THEN
29306 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
29307           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
29308           DO 160 I=MMINA,MMAXA
29309             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
29310      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
29311             EI=KCHG(IABS(I),1)/3D0
29312             NCHN=NCHN+1
29313             ISIG(NCHN,1)=I
29314             ISIG(NCHN,2)=-I
29315             ISIG(NCHN,3)=1
29316             SIGH(NCHN)=FACGG*EI**2
29317   160     CONTINUE
29318  
29319         ELSEIF(ISUB.EQ.18) THEN
29320 C...f + fbar -> gamma + gamma
29321           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
29322           DO 170 I=MMINA,MMAXA
29323             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
29324             EI=KCHG(IABS(I),1)/3D0
29325             FCOI=1D0
29326             IF(IABS(I).LE.10) FCOI=FACA/3D0
29327             NCHN=NCHN+1
29328             ISIG(NCHN,1)=I
29329             ISIG(NCHN,2)=-I
29330             ISIG(NCHN,3)=1
29331             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
29332   170     CONTINUE
29333         ENDIF
29334  
29335       ELSEIF(ISUB.LE.40) THEN
29336         IF(ISUB.EQ.28) THEN
29337 C...f + g -> f + g (q + g -> q + g only)
29338           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
29339      &    UH/SH)*FACA
29340           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
29341      &    SH/UH)
29342           DO 190 I=MMINA,MMAXA
29343             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
29344             DO 180 ISDE=1,2
29345               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
29346               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
29347               NCHN=NCHN+1
29348               ISIG(NCHN,ISDE)=I
29349               ISIG(NCHN,3-ISDE)=21
29350               ISIG(NCHN,3)=1
29351               SIGH(NCHN)=FACQG1
29352               NCHN=NCHN+1
29353               ISIG(NCHN,ISDE)=I
29354               ISIG(NCHN,3-ISDE)=21
29355               ISIG(NCHN,3)=2
29356               SIGH(NCHN)=FACQG2
29357   180       CONTINUE
29358   190     CONTINUE
29359  
29360         ELSEIF(ISUB.EQ.29) THEN
29361 C...f + g -> f + gamma (q + g -> q + gamma only)
29362           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
29363           DO 210 I=MMINA,MMAXA
29364             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
29365             EI=KCHG(IABS(I),1)/3D0
29366             FACGQ=FGQ*EI**2
29367             DO 200 ISDE=1,2
29368               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
29369               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
29370               NCHN=NCHN+1
29371               ISIG(NCHN,ISDE)=I
29372               ISIG(NCHN,3-ISDE)=21
29373               ISIG(NCHN,3)=1
29374               SIGH(NCHN)=FACGQ
29375   200       CONTINUE
29376   210     CONTINUE
29377  
29378         ELSEIF(ISUB.EQ.33) THEN
29379 C...f + gamma -> f + g (q + gamma -> q + g only)
29380           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
29381           DO 230 I=MMINA,MMAXA
29382             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
29383             EI=KCHG(IABS(I),1)/3D0
29384             FACGQ=FGQ*EI**2
29385             DO 220 ISDE=1,2
29386               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
29387               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
29388               NCHN=NCHN+1
29389               ISIG(NCHN,ISDE)=I
29390               ISIG(NCHN,3-ISDE)=22
29391               ISIG(NCHN,3)=1
29392               SIGH(NCHN)=FACGQ
29393   220       CONTINUE
29394   230     CONTINUE
29395  
29396         ELSEIF(ISUB.EQ.34) THEN
29397 C...f + gamma -> f + gamma
29398           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
29399           DO 250 I=MMINA,MMAXA
29400             IF(I.EQ.0) GOTO 250
29401             EI=KCHG(IABS(I),1)/3D0
29402             FACGQ=FGQ*EI**4
29403             DO 240 ISDE=1,2
29404               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
29405               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
29406               NCHN=NCHN+1
29407               ISIG(NCHN,ISDE)=I
29408               ISIG(NCHN,3-ISDE)=22
29409               ISIG(NCHN,3)=1
29410               SIGH(NCHN)=FACGQ
29411   240       CONTINUE
29412   250     CONTINUE
29413         ENDIF
29414  
29415       ELSEIF(ISUB.LE.80) THEN
29416         IF(ISUB.EQ.53) THEN
29417 C...g + g -> f + fbar (g + g -> q + qbar only)
29418           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
29419           IDC0=MDCY(21,2)-1
29420 C...Begin by d, u, s flavours.
29421           FLAVWT=0D0
29422           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
29423      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
29424           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
29425      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
29426           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
29427      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
29428           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29429      &    UH2/SH2)*FLAVWT*FACA
29430           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29431      &    TH2/SH2)*FLAVWT*FACA
29432           NCHN=NCHN+1
29433           ISIG(NCHN,1)=21
29434           ISIG(NCHN,2)=21
29435           ISIG(NCHN,3)=1
29436           SIGH(NCHN)=FACQQ1
29437           NCHN=NCHN+1
29438           ISIG(NCHN,1)=21
29439           ISIG(NCHN,2)=21
29440           ISIG(NCHN,3)=2
29441           SIGH(NCHN)=FACQQ2
29442 C...Next c and b flavours: modified that and uhat for fixed
29443 C...cos(theta-hat).
29444           DO 260 IFL=4,5
29445           SQMAVG=PMAS(IFL,1)**2
29446           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
29447             BE34=SQRT(1D0-4D0*SQMAVG/SH)
29448             THQ=-0.5D0*SH*(1D0-BE34*CTH)
29449             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
29450             THUHQ=THQ*UHQ-SQMAVG*SH
29451             IF(MSTP(34).EQ.0) THEN
29452               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
29453               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
29454             ELSE
29455               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29456      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
29457               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29458      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
29459             ENDIF
29460             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
29461             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
29462             NCHN=NCHN+1
29463             ISIG(NCHN,1)=21
29464             ISIG(NCHN,2)=21
29465             ISIG(NCHN,3)=1+2*(IFL-3)
29466             SIGH(NCHN)=FACQQ1
29467             NCHN=NCHN+1
29468             ISIG(NCHN,1)=21
29469             ISIG(NCHN,2)=21
29470             ISIG(NCHN,3)=2+2*(IFL-3)
29471             SIGH(NCHN)=FACQQ2
29472           ENDIF
29473   260     CONTINUE
29474   270     CONTINUE
29475  
29476         ELSEIF(ISUB.EQ.54) THEN
29477 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
29478           CALL PYWIDT(21,SH,WDTP,WDTE)
29479           WDTESU=0D0
29480           DO 280 I=1,MIN(8,MDCY(21,3))
29481             EF=KCHG(I,1)/3D0
29482             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29483      &      WDTE(I,4))
29484   280     CONTINUE
29485           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
29486           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
29487             NCHN=NCHN+1
29488             ISIG(NCHN,1)=21
29489             ISIG(NCHN,2)=22
29490             ISIG(NCHN,3)=1
29491             SIGH(NCHN)=FACQQ
29492           ENDIF
29493           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
29494             NCHN=NCHN+1
29495             ISIG(NCHN,1)=22
29496             ISIG(NCHN,2)=21
29497             ISIG(NCHN,3)=1
29498             SIGH(NCHN)=FACQQ
29499           ENDIF
29500  
29501         ELSEIF(ISUB.EQ.58) THEN
29502 C...gamma + gamma -> f + fbar
29503           CALL PYWIDT(22,SH,WDTP,WDTE)
29504           WDTESU=0D0
29505           DO 290 I=1,MIN(12,MDCY(22,3))
29506             IF(I.LE.8) EF= KCHG(I,1)/3D0
29507             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
29508             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29509      &      WDTE(I,4))
29510   290     CONTINUE
29511           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
29512           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
29513             NCHN=NCHN+1
29514             ISIG(NCHN,1)=22
29515             ISIG(NCHN,2)=22
29516             ISIG(NCHN,3)=1
29517             SIGH(NCHN)=FACFF
29518           ENDIF
29519  
29520         ELSEIF(ISUB.EQ.68) THEN
29521 C...g + g -> g + g
29522           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
29523           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
29524      &    TH2/SH2)*FACA
29525           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
29526      &    SH2/UH2)*FACA
29527           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
29528      &    UH2/TH2)
29529           NCHN=NCHN+1
29530           ISIG(NCHN,1)=21
29531           ISIG(NCHN,2)=21
29532           ISIG(NCHN,3)=1
29533           SIGH(NCHN)=0.5D0*FACGG1
29534           NCHN=NCHN+1
29535           ISIG(NCHN,1)=21
29536           ISIG(NCHN,2)=21
29537           ISIG(NCHN,3)=2
29538           SIGH(NCHN)=0.5D0*FACGG2
29539           NCHN=NCHN+1
29540           ISIG(NCHN,1)=21
29541           ISIG(NCHN,2)=21
29542           ISIG(NCHN,3)=3
29543           SIGH(NCHN)=0.5D0*FACGG3
29544   300     CONTINUE
29545  
29546         ELSEIF(ISUB.EQ.80) THEN
29547 C...q + gamma -> q' + pi+/-
29548           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
29549           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
29550           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
29551           DELSH=UH*SQRT(ASSH*Q2FPSH)
29552           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
29553           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
29554           DELUH=SH*SQRT(ASUH*Q2FPUH)
29555           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
29556             IF(I.EQ.0) GOTO 320
29557             EI=KCHG(IABS(I),1)/3D0
29558             EJ=SIGN(1D0-ABS(EI),EI)
29559             DO 310 ISDE=1,2
29560               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
29561               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
29562               NCHN=NCHN+1
29563               ISIG(NCHN,ISDE)=I
29564               ISIG(NCHN,3-ISDE)=22
29565               ISIG(NCHN,3)=1
29566               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
29567   310       CONTINUE
29568   320     CONTINUE
29569         ENDIF
29570  
29571       ELSEIF(ISUB.LE.100) THEN
29572         IF(ISUB.EQ.91) THEN
29573 C...Elastic scattering
29574           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
29575  
29576         ELSEIF(ISUB.EQ.92) THEN
29577 C...Single diffractive scattering (first side, i.e. XB)
29578           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
29579  
29580         ELSEIF(ISUB.EQ.93) THEN
29581 C...Single diffractive scattering (second side, i.e. AX)
29582           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
29583  
29584         ELSEIF(ISUB.EQ.94) THEN
29585 C...Double diffractive scattering
29586           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
29587  
29588         ELSEIF(ISUB.EQ.95) THEN
29589 C...Low-pT scattering
29590           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
29591  
29592         ELSEIF(ISUB.EQ.96) THEN
29593 C...Multiple interactions: sum of QCD processes
29594           CALL PYWIDT(21,SH,WDTP,WDTE)
29595  
29596 C...q + q' -> q + q'
29597           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
29598           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
29599      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
29600           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
29601           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
29602           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
29603           DO 340 I=-5,5
29604             IF(I.EQ.0) GOTO 340
29605             DO 330 J=-5,5
29606               IF(J.EQ.0) GOTO 330
29607               NCHN=NCHN+1
29608               ISIG(NCHN,1)=I
29609               ISIG(NCHN,2)=J
29610               ISIG(NCHN,3)=111
29611               SIGH(NCHN)=FACQQ1
29612               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
29613               IF(I.EQ.J) THEN
29614                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
29615                 NCHN=NCHN+1
29616                 ISIG(NCHN,1)=I
29617                 ISIG(NCHN,2)=J
29618                 ISIG(NCHN,3)=112
29619                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
29620               ENDIF
29621   330       CONTINUE
29622   340     CONTINUE
29623  
29624 C...q + qbar -> q' + qbar' or g + g
29625           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
29626      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
29627           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29628      &    UH2/SH2)
29629           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29630      &    TH2/SH2)
29631           DO 350 I=-5,5
29632             IF(I.EQ.0) GOTO 350
29633             NCHN=NCHN+1
29634             ISIG(NCHN,1)=I
29635             ISIG(NCHN,2)=-I
29636             ISIG(NCHN,3)=121
29637             SIGH(NCHN)=FACQQB
29638             NCHN=NCHN+1
29639             ISIG(NCHN,1)=I
29640             ISIG(NCHN,2)=-I
29641             ISIG(NCHN,3)=131
29642             SIGH(NCHN)=0.5D0*FACGG1
29643             NCHN=NCHN+1
29644             ISIG(NCHN,1)=I
29645             ISIG(NCHN,2)=-I
29646             ISIG(NCHN,3)=132
29647             SIGH(NCHN)=0.5D0*FACGG2
29648   350     CONTINUE
29649  
29650 C...q + g -> q + g
29651           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
29652      &    UH/SH)*FACA
29653           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
29654      &    SH/UH)
29655           DO 370 I=-5,5
29656             IF(I.EQ.0) GOTO 370
29657             DO 360 ISDE=1,2
29658               NCHN=NCHN+1
29659               ISIG(NCHN,ISDE)=I
29660               ISIG(NCHN,3-ISDE)=21
29661               ISIG(NCHN,3)=281
29662               SIGH(NCHN)=FACQG1
29663               NCHN=NCHN+1
29664               ISIG(NCHN,ISDE)=I
29665               ISIG(NCHN,3-ISDE)=21
29666               ISIG(NCHN,3)=282
29667               SIGH(NCHN)=FACQG2
29668   360       CONTINUE
29669   370     CONTINUE
29670  
29671 C...g + g -> q + qbar (only d, u, s)
29672           IDC0=MDCY(21,2)-1
29673           FLAVWT=0D0
29674           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
29675      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
29676           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
29677      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
29678           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
29679      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
29680           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
29681      &    UH2/SH2)*FLAVWT*FACA
29682           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
29683      &    TH2/SH2)*FLAVWT*FACA
29684           NCHN=NCHN+1
29685           ISIG(NCHN,1)=21
29686           ISIG(NCHN,2)=21
29687           ISIG(NCHN,3)=531
29688           SIGH(NCHN)=FACQQ1
29689           NCHN=NCHN+1
29690           ISIG(NCHN,1)=21
29691           ISIG(NCHN,2)=21
29692           ISIG(NCHN,3)=532
29693           SIGH(NCHN)=FACQQ2
29694  
29695 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
29696 C...cos(theta-hat)
29697           DO 380 IFL=4,5
29698           SQMAVG=PMAS(IFL,1)**2
29699           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
29700             BE34=SQRT(1D0-4D0*SQMAVG/SH)
29701             THQ=-0.5D0*SH*(1D0-BE34*CTH)
29702             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
29703             THUHQ=THQ*UHQ-SQMAVG*SH
29704             IF(MSTP(34).EQ.0) THEN
29705               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
29706               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
29707             ELSE
29708               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29709      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
29710               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
29711      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
29712             ENDIF
29713             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
29714             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
29715             NCHN=NCHN+1
29716             ISIG(NCHN,1)=21
29717             ISIG(NCHN,2)=21
29718             ISIG(NCHN,3)=531+2*(IFL-3)
29719             SIGH(NCHN)=FACQQ1
29720             NCHN=NCHN+1
29721             ISIG(NCHN,1)=21
29722             ISIG(NCHN,2)=21
29723             ISIG(NCHN,3)=532+2*(IFL-3)
29724             SIGH(NCHN)=FACQQ2
29725           ENDIF
29726   380     CONTINUE
29727  
29728 C...g + g -> g + g
29729           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
29730      &    2D0*TH/SH+TH2/SH2)*FACA
29731           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
29732      &    2D0*SH/UH+SH2/UH2)*FACA
29733           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
29734      &    2D0*UH/TH+UH2/TH2)
29735           NCHN=NCHN+1
29736           ISIG(NCHN,1)=21
29737           ISIG(NCHN,2)=21
29738           ISIG(NCHN,3)=681
29739           SIGH(NCHN)=0.5D0*FACGG1
29740           NCHN=NCHN+1
29741           ISIG(NCHN,1)=21
29742           ISIG(NCHN,2)=21
29743           ISIG(NCHN,3)=682
29744           SIGH(NCHN)=0.5D0*FACGG2
29745           NCHN=NCHN+1
29746           ISIG(NCHN,1)=21
29747           ISIG(NCHN,2)=21
29748           ISIG(NCHN,3)=683
29749           SIGH(NCHN)=0.5D0*FACGG3
29750  
29751         ELSEIF(ISUB.EQ.99) THEN
29752 C...f + gamma* -> f.
29753           IF(MINT(107).EQ.4) THEN
29754             Q2GA=VINT(307)
29755             P2GA=VINT(308)
29756             ISDE=2
29757           ELSE
29758             Q2GA=VINT(308)
29759             P2GA=VINT(307)
29760             ISDE=1
29761           ENDIF
29762           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
29763           PM2RHO=PMAS(PYCOMP(113),1)**2
29764           IF(MSTP(19).EQ.0) THEN
29765             COMFAC=COMFAC/Q2GA
29766           ELSEIF(MSTP(19).EQ.1) THEN
29767             COMFAC=COMFAC/(Q2GA+PM2RHO)
29768           ELSEIF(MSTP(19).EQ.2) THEN
29769             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
29770           ELSE
29771             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
29772             W2GA=VINT(2)
29773             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
29774               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
29775      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
29776               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
29777             ELSE
29778               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
29779      &        Q2GA**0.57D0)
29780               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
29781             ENDIF
29782             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
29783             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
29784           ENDIF
29785           DO 390 I=MMINA,MMAXA
29786             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
29787             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
29788             EI=KCHG(IABS(I),1)/3D0
29789             NCHN=NCHN+1
29790             ISIG(NCHN,ISDE)=I
29791             ISIG(NCHN,3-ISDE)=22
29792             ISIG(NCHN,3)=1
29793             SIGH(NCHN)=COMFAC*EI**2
29794   390     CONTINUE
29795         ENDIF
29796  
29797       ELSE
29798         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
29799 C...g + g -> gamma + gamma or g + g -> g + gamma
29800           A0STUR=0D0
29801           A0STUI=0D0
29802           A0TSUR=0D0
29803           A0TSUI=0D0
29804           A0UTSR=0D0
29805           A0UTSI=0D0
29806           A1STUR=0D0
29807           A1STUI=0D0
29808           A2STUR=0D0
29809           A2STUI=0D0
29810           ALST=LOG(-SH/TH)
29811           ALSU=LOG(-SH/UH)
29812           ALTU=LOG(TH/UH)
29813           IMAX=2*MSTP(1)
29814           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
29815           DO 400 I=1,IMAX
29816             EI=KCHG(IABS(I),1)/3D0
29817             EIWT=EI**2
29818             IF(ISUB.EQ.115) EIWT=EI
29819             SQMQ=PMAS(I,1)**2
29820             EPSS=4D0*SQMQ/SH
29821             EPST=4D0*SQMQ/TH
29822             EPSU=4D0*SQMQ/UH
29823             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
29824               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
29825      &        PARU(1)**2)
29826               B0STUI=0D0
29827               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
29828               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
29829               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
29830               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
29831               B1STUR=-1D0
29832               B1STUI=0D0
29833               B2STUR=-1D0
29834               B2STUI=0D0
29835             ELSE
29836               CALL PYWAUX(1,EPSS,W1SR,W1SI)
29837               CALL PYWAUX(1,EPST,W1TR,W1TI)
29838               CALL PYWAUX(1,EPSU,W1UR,W1UI)
29839               CALL PYWAUX(2,EPSS,W2SR,W2SI)
29840               CALL PYWAUX(2,EPST,W2TR,W2TI)
29841               CALL PYWAUX(2,EPSU,W2UR,W2UI)
29842               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
29843               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
29844               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
29845               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
29846               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
29847               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
29848               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
29849      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
29850      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
29851      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
29852      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
29853      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
29854               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
29855      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
29856      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
29857      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
29858      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
29859      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
29860               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
29861      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
29862      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
29863      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
29864      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
29865      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
29866               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
29867      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
29868      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
29869      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
29870      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
29871      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
29872               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
29873      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
29874      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
29875      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
29876      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
29877      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
29878               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
29879      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
29880      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
29881      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
29882      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
29883      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
29884               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
29885      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
29886      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
29887      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
29888               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
29889      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
29890      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
29891      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
29892               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
29893      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
29894      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
29895               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
29896      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
29897      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
29898             ENDIF
29899             A0STUR=A0STUR+EIWT*B0STUR
29900             A0STUI=A0STUI+EIWT*B0STUI
29901             A0TSUR=A0TSUR+EIWT*B0TSUR
29902             A0TSUI=A0TSUI+EIWT*B0TSUI
29903             A0UTSR=A0UTSR+EIWT*B0UTSR
29904             A0UTSI=A0UTSI+EIWT*B0UTSI
29905             A1STUR=A1STUR+EIWT*B1STUR
29906             A1STUI=A1STUI+EIWT*B1STUI
29907             A2STUR=A2STUR+EIWT*B2STUR
29908             A2STUI=A2STUI+EIWT*B2STUI
29909   400     CONTINUE
29910           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
29911      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
29912           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
29913           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
29914           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
29915           NCHN=NCHN+1
29916           ISIG(NCHN,1)=21
29917           ISIG(NCHN,2)=21
29918           ISIG(NCHN,3)=1
29919           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
29920           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
29921   410     CONTINUE
29922  
29923         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
29924 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
29925           PH=0D0
29926           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29927      &    PH=VINT(3)**2
29928           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29929      &    PH=VINT(4)**2
29930           IF(ISUB.EQ.131) THEN
29931             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
29932      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
29933           ELSE
29934             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
29935           ENDIF
29936           DO 430 I=MMINA,MMAXA
29937             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
29938             EI=KCHG(IABS(I),1)/3D0
29939             FACGQ=FGQ*EI**2
29940             DO 420 ISDE=1,2
29941               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
29942               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
29943               NCHN=NCHN+1
29944               ISIG(NCHN,ISDE)=I
29945               ISIG(NCHN,3-ISDE)=22
29946               ISIG(NCHN,3)=1
29947               SIGH(NCHN)=FACGQ
29948   420       CONTINUE
29949   430     CONTINUE
29950  
29951         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
29952 C...f + gamma*_(T,L) -> f + gamma
29953           PH=0D0
29954           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29955      &    PH=VINT(3)**2
29956           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29957      &    PH=VINT(4)**2
29958           IF(ISUB.EQ.133) THEN
29959             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
29960      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
29961           ELSE
29962             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
29963           ENDIF
29964           DO 450 I=MMINA,MMAXA
29965             IF(I.EQ.0) GOTO 450
29966             EI=KCHG(IABS(I),1)/3D0
29967             FACGQ=FGQ*EI**4
29968             DO 440 ISDE=1,2
29969               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
29970               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
29971               NCHN=NCHN+1
29972               ISIG(NCHN,ISDE)=I
29973               ISIG(NCHN,3-ISDE)=22
29974               ISIG(NCHN,3)=1
29975               SIGH(NCHN)=FACGQ
29976   440       CONTINUE
29977   450     CONTINUE
29978  
29979         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
29980 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
29981           PH=0D0
29982           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
29983      &    PH=VINT(3)**2
29984           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
29985      &    PH=VINT(4)**2
29986           CALL PYWIDT(21,SH,WDTP,WDTE)
29987           WDTESU=0D0
29988           DO 460 I=1,MIN(8,MDCY(21,3))
29989             EF=KCHG(I,1)/3D0
29990             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
29991      &      WDTE(I,4))
29992   460     CONTINUE
29993           IF(ISUB.EQ.135) THEN
29994             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
29995      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
29996           ELSE
29997             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
29998           ENDIF
29999           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30000             NCHN=NCHN+1
30001             ISIG(NCHN,1)=21
30002             ISIG(NCHN,2)=22
30003             ISIG(NCHN,3)=1
30004             SIGH(NCHN)=FACQQ
30005           ENDIF
30006           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30007             NCHN=NCHN+1
30008             ISIG(NCHN,1)=22
30009             ISIG(NCHN,2)=21
30010             ISIG(NCHN,3)=1
30011             SIGH(NCHN)=FACQQ
30012           ENDIF
30013  
30014         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
30015 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
30016           PH1=0D0
30017           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
30018           PH2=0D0
30019           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
30020           CALL PYWIDT(22,SH,WDTP,WDTE)
30021           WDTESU=0D0
30022           DO 470 I=1,MIN(12,MDCY(22,3))
30023             IF(I.LE.8) EF= KCHG(I,1)/3D0
30024             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
30025             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30026      &      WDTE(I,4))
30027   470     CONTINUE
30028           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
30029           IF(ISUB.EQ.137) THEN
30030             FPARAM=-SH*(TH+UH)/DLAMB2
30031             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
30032      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
30033      &      2D0*PH1*PH2*FPARAM**2)
30034           ELSEIF(ISUB.EQ.138) THEN
30035             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30036      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
30037      &      2D0*PH1**2*(TH-UH)**2)
30038           ELSEIF(ISUB.EQ.139) THEN
30039             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30040      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
30041      &      2D0*PH2**2*(TH-UH)**2)
30042           ELSE
30043             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
30044      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
30045           ENDIF
30046           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30047             NCHN=NCHN+1
30048             ISIG(NCHN,1)=22
30049             ISIG(NCHN,2)=22
30050             ISIG(NCHN,3)=1
30051             SIGH(NCHN)=FACFF
30052           ENDIF
30053  
30054         ENDIF
30055       ENDIF
30056  
30057       RETURN
30058       END
30059  
30060 C*********************************************************************
30061  
30062 C...PYSGHF
30063 C...Subprocess cross sections for heavy flavour production,
30064 C...open and closed.
30065 C...Auxiliary to PYSIGH.
30066  
30067       SUBROUTINE PYSGHF(NCHN,SIGS)
30068  
30069 C...Double precision and integer declarations
30070       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30071       IMPLICIT INTEGER(I-N)
30072       INTEGER PYK,PYCHGE,PYCOMP
30073 C...Parameter statement to help give large particle numbers.
30074       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
30075      &KEXCIT=4000000,KDIMEN=5000000)
30076 C...Commonblocks
30077       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30078       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30079       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30080       COMMON/PYINT1/MINT(400),VINT(400)
30081       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
30082       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
30083       COMMON/PYINT4/MWID(500),WIDS(500,5)
30084       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
30085      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
30086      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
30087      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
30088       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
30089      &/PYINT4/,/PYSGCM/
30090 C...Local arrays
30091       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
30092  
30093 C...Determine where are charmonium/bottomonium wave function parameters.
30094       IONIUM=140
30095       IF(ISUB.GE.461.AND.ISUB.LE.479) IONIUM=145
30096  
30097 C...Convert bottomonium process into equivalent charmonium ones.
30098       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
30099  
30100 C...Differential cross section expressions.
30101  
30102       IF(ISUB.LE.100) THEN
30103         IF(ISUB.EQ.81) THEN
30104 C...q + qbar -> Q + Qbar
30105           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30106           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30107           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30108           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
30109      &    2D0*SQMAVG/SH)
30110           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
30111           WID2=1D0
30112           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30113           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30114           FACQQB=FACQQB*WID2
30115           DO 100 I=MMINA,MMAXA
30116             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30117      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
30118             NCHN=NCHN+1
30119             ISIG(NCHN,1)=I
30120             ISIG(NCHN,2)=-I
30121             ISIG(NCHN,3)=1
30122             SIGH(NCHN)=FACQQB
30123   100     CONTINUE
30124  
30125         ELSEIF(ISUB.EQ.82) THEN
30126 C...g + g -> Q + Qbar
30127           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30128           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30129           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30130           THUHQ=THQ*UHQ-SQMAVG*SH
30131           IF(MSTP(34).EQ.0) THEN
30132             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30133             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30134           ELSE
30135             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30136      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30137             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30138      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30139           ENDIF
30140           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
30141           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
30142           IF(MSTP(35).GE.1) THEN
30143             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
30144             FACQQ1=FACQQ1*FATRE
30145             FACQQ2=FACQQ2*FATRE
30146           ENDIF
30147           WID2=1D0
30148           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30149           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30150           FACQQ1=FACQQ1*WID2
30151           FACQQ2=FACQQ2*WID2
30152           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
30153           NCHN=NCHN+1
30154           ISIG(NCHN,1)=21
30155           ISIG(NCHN,2)=21
30156           ISIG(NCHN,3)=1
30157           SIGH(NCHN)=FACQQ1
30158           NCHN=NCHN+1
30159           ISIG(NCHN,1)=21
30160           ISIG(NCHN,2)=21
30161           ISIG(NCHN,3)=2
30162           SIGH(NCHN)=FACQQ2
30163   110     CONTINUE
30164  
30165         ELSEIF(ISUB.EQ.83) THEN
30166 C...f + q -> f' + Q
30167           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
30168           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
30169           DO 130 I=MMIN1,MMAX1
30170             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
30171             DO 120 J=MMIN2,MMAX2
30172               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
30173               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
30174               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
30175               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
30176      &        THEN
30177                 NCHN=NCHN+1
30178                 ISIG(NCHN,1)=I
30179                 ISIG(NCHN,2)=J
30180                 ISIG(NCHN,3)=1
30181                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30182      &          (IABS(I)+1)/2)*VINT(180+J)
30183                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
30184      &          (MINT(55)+1)/2)*VINT(180+J)
30185                 WID2=1D0
30186                 IF(I.GT.0) THEN
30187                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30188                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30189      &            WIDS(MINT(55),2)
30190                 ELSE
30191                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30192                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30193      &            WIDS(MINT(55),3)
30194                 ENDIF
30195                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30196                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30197               ENDIF
30198               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
30199      &        THEN
30200                 NCHN=NCHN+1
30201                 ISIG(NCHN,1)=I
30202                 ISIG(NCHN,2)=J
30203                 ISIG(NCHN,3)=2
30204                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30205      &          (IABS(J)+1)/2)*VINT(180+I)
30206                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
30207      &          (MINT(55)+1)/2)*VINT(180+I)
30208                 IF(J.GT.0) THEN
30209                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30210                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30211      &            WIDS(MINT(55),2)
30212                 ELSE
30213                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30214                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30215      &            WIDS(MINT(55),3)
30216                 ENDIF
30217                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30218                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30219               ENDIF
30220   120       CONTINUE
30221   130     CONTINUE
30222  
30223         ELSEIF(ISUB.EQ.84) THEN
30224 C...g + gamma -> Q + Qbar
30225           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30226           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30227           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30228           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
30229      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
30230      &    (THQ*UHQ)
30231           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
30232           WID2=1D0
30233           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30234           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30235           FACQQ=FACQQ*WID2
30236           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30237             NCHN=NCHN+1
30238             ISIG(NCHN,1)=21
30239             ISIG(NCHN,2)=22
30240             ISIG(NCHN,3)=1
30241             SIGH(NCHN)=FACQQ
30242           ENDIF
30243           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30244             NCHN=NCHN+1
30245             ISIG(NCHN,1)=22
30246             ISIG(NCHN,2)=21
30247             ISIG(NCHN,3)=1
30248             SIGH(NCHN)=FACQQ
30249           ENDIF
30250  
30251         ELSEIF(ISUB.EQ.85) THEN
30252 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
30253           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30254           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30255           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30256           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
30257      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
30258      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
30259      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
30260           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
30261           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
30262      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
30263           WID2=1D0
30264           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
30265           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
30266           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
30267           FACFF=FACFF*WID2
30268           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30269             NCHN=NCHN+1
30270             ISIG(NCHN,1)=22
30271             ISIG(NCHN,2)=22
30272             ISIG(NCHN,3)=1
30273             SIGH(NCHN)=FACFF
30274           ENDIF
30275  
30276         ELSEIF(ISUB.EQ.86) THEN
30277 C...g + g -> J/Psi + g
30278           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
30279      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30280      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30281           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30282             NCHN=NCHN+1
30283             ISIG(NCHN,1)=21
30284             ISIG(NCHN,2)=21
30285             ISIG(NCHN,3)=1
30286             SIGH(NCHN)=FACQQG
30287           ENDIF
30288  
30289         ELSEIF(ISUB.EQ.87) THEN
30290 C...g + g -> chi_0c + g
30291           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30292           QGTW=(SH*TH*UH)/SH**3
30293           RGTW=SQM3/SH
30294           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30295      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
30296      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
30297      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
30298      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
30299      &    (QGTW*(QGTW-RGTW*PGTW)**4)
30300           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30301             NCHN=NCHN+1
30302             ISIG(NCHN,1)=21
30303             ISIG(NCHN,2)=21
30304             ISIG(NCHN,3)=1
30305             SIGH(NCHN)=FACQQG
30306           ENDIF
30307  
30308         ELSEIF(ISUB.EQ.88) THEN
30309 C...g + g -> chi_1c + g
30310           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30311           QGTW=(SH*TH*UH)/SH**3
30312           RGTW=SQM3/SH
30313           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30314      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
30315      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
30316      &    (QGTW-RGTW*PGTW)**4
30317           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30318             NCHN=NCHN+1
30319             ISIG(NCHN,1)=21
30320             ISIG(NCHN,2)=21
30321             ISIG(NCHN,3)=1
30322             SIGH(NCHN)=FACQQG
30323           ENDIF
30324  
30325         ELSEIF(ISUB.EQ.89) THEN
30326 C...g + g -> chi_2c + g
30327           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
30328           QGTW=(SH*TH*UH)/SH**3
30329           RGTW=SQM3/SH
30330           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
30331      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
30332      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
30333      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
30334      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
30335      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
30336           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30337             NCHN=NCHN+1
30338             ISIG(NCHN,1)=21
30339             ISIG(NCHN,2)=21
30340             ISIG(NCHN,3)=1
30341             SIGH(NCHN)=FACQQG
30342           ENDIF
30343         ENDIF
30344  
30345       ELSEIF(ISUB.LE.200) THEN
30346         IF(ISUB.EQ.104) THEN
30347 C...g + g -> chi_c0.
30348           KC=PYCOMP(10441)
30349           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
30350      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
30351           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
30352           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30353             NCHN=NCHN+1
30354             ISIG(NCHN,1)=21
30355             ISIG(NCHN,2)=21
30356             ISIG(NCHN,3)=1
30357             SIGH(NCHN)=FACBW
30358           ENDIF
30359  
30360         ELSEIF(ISUB.EQ.105) THEN
30361 C...g + g -> chi_c2.
30362           KC=PYCOMP(445)
30363           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
30364      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
30365           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
30366           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30367             NCHN=NCHN+1
30368             ISIG(NCHN,1)=21
30369             ISIG(NCHN,2)=21
30370             ISIG(NCHN,3)=1
30371             SIGH(NCHN)=FACBW
30372           ENDIF
30373  
30374         ELSEIF(ISUB.EQ.106) THEN
30375 C...g + g -> J/Psi + gamma.
30376           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30377           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
30378      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30379      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30380           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30381             NCHN=NCHN+1
30382             ISIG(NCHN,1)=21
30383             ISIG(NCHN,2)=21
30384             ISIG(NCHN,3)=1
30385             SIGH(NCHN)=FACQQG
30386           ENDIF
30387  
30388         ELSEIF(ISUB.EQ.107) THEN
30389 C...g + gamma -> J/Psi + g.
30390           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30391           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
30392      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30393      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30394           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30395             NCHN=NCHN+1
30396             ISIG(NCHN,1)=21
30397             ISIG(NCHN,2)=22
30398             ISIG(NCHN,3)=1
30399             SIGH(NCHN)=FACQQG
30400           ENDIF
30401           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30402             NCHN=NCHN+1
30403             ISIG(NCHN,1)=22
30404             ISIG(NCHN,2)=21
30405             ISIG(NCHN,3)=1
30406             SIGH(NCHN)=FACQQG
30407           ENDIF
30408  
30409         ELSEIF(ISUB.EQ.108) THEN
30410 C...gamma + gamma -> J/Psi + gamma.
30411           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
30412           FACQQG=COMFAC*AEM**3*EQ**6*384D0*PARP(38)*SQRT(SQM3)*
30413      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
30414      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
30415           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30416             NCHN=NCHN+1
30417             ISIG(NCHN,1)=22
30418             ISIG(NCHN,2)=22
30419             ISIG(NCHN,3)=1
30420             SIGH(NCHN)=FACQQG
30421           ENDIF
30422         ENDIF
30423  
30424 C...QUARKONIA+++
30425 C...Additional code by Stefan Wolf
30426       ELSE
30427  
30428 C...Common code for quarkonium production.
30429         SHTH=SH+TH
30430         THUH=TH+UH
30431         UHSH=UH+SH
30432         SHTH2=SHTH**2
30433         THUH2=THUH**2
30434         UHSH2=UHSH**2
30435         IF ( (ISUB.GE.421.AND.ISUB.LE.424).OR.
30436      &       (ISUB.GE.431.AND.ISUB.LE.433)) THEN
30437           SQMQQ=SQM3
30438         ELSEIF((ISUB.GE.425.AND.ISUB.LE.430).OR.
30439      &         (ISUB.GE.434.AND.ISUB.LE.439)) THEN
30440           SQMQQ=SQM4
30441         ENDIF
30442         SQMQQR=SQRT(SQMQQ)
30443         IF(MSTP(145).EQ.1) THEN
30444            IF ( (ISUB.GE.421.AND.ISUB.LE.427).OR.
30445      &          (ISUB.GE.431.AND.ISUB.LE.436)) THEN
30446               AQ=UHSH/(2D0*X(1)) + SHTH/(2D0*X(2))
30447               BQ=UHSH/(2D0*X(1)) - SHTH/(2D0*X(2))
30448               ATILK1=X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
30449               ATILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
30450               BTILK1=-X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
30451               BTILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
30452            ELSEIF( (ISUB.GE.428.AND.ISUB.LE.430).OR.
30453      &             ISUB.GE.437) THEN
30454               AQ=SHTH/(2D0*X(1)) + UHSH/(2D0*X(2))
30455               BQ=SHTH/(2D0*X(1)) - UHSH/(2D0*X(2))
30456               ATILK1=X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
30457               ATILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
30458               BTILK1=-X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
30459               BTILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
30460            ENDIF
30461            AQ2=AQ**2
30462            BQ2=BQ**2
30463            SMQQ2=SQMQQ*VINT(2)
30464 C...Polarisation frames
30465            IF(MSTP(146).EQ.1) THEN
30466 C...Recoil frame
30467               POLH1=SQRT(AQ2-SMQQ2)
30468               POLH2=SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30469               AZ=-SQMQQR/POLH1
30470               BZ=0D0
30471               AX=AQ*BQ/(POLH1*POLH2)
30472               BX=-POLH1/POLH2
30473            ELSEIF(MSTP(146).EQ.2) THEN
30474 C...Gottfried Jackson frame
30475               POLH1=AQ+BQ
30476               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30477               AZ=SQMQQR/POLH1
30478               BZ=AZ
30479               AX=-(BQ2+AQ*BQ+SMQQ2)/POLH2
30480               BX=(AQ2+AQ*BQ-SMQQ2)/POLH2
30481            ELSEIF(MSTP(146).EQ.3) THEN
30482 C...Target frame
30483               POLH1=AQ-BQ
30484               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
30485               AZ=-SQMQQR/POLH1
30486               BZ=-AZ
30487               AX=-(BQ2-AQ*BQ+SMQQ2)/POLH2
30488               BX=-(AQ2-AQ*BQ-SMQQ2)/POLH2
30489            ELSEIF(MSTP(146).EQ.4) THEN
30490 C...Collins Soper frame
30491               POLH1=AQ2-BQ2
30492               POLH2=SQRT(VINT(2)*POLH1)
30493               AZ=-BQ/POLH2
30494               BZ=AQ/POLH2
30495               AX=-SQMQQR*AQ/SQRT(POLH1*(POLH1-SMQQ2))
30496               BX=SQMQQR*BQ/SQRT(POLH1*(POLH1-SMQQ2))
30497            ENDIF
30498 C...Contract EL1(lam) EL2(lam') with K1 and K2 (initial parton momenta)
30499            EL1K10=AZ*ATILK1+BZ*BTILK1
30500            EL1K20=AZ*ATILK2+BZ*BTILK2
30501            EL2K10=EL1K10
30502            EL2K20=EL1K20
30503            EL1K11=1D0/SQRT(2D0)*(AX*ATILK1+BX*BTILK1)
30504            EL1K21=1D0/SQRT(2D0)*(AX*ATILK2+BX*BTILK2)
30505            EL2K11=EL1K11
30506            EL2K21=EL1K21
30507         ENDIF
30508  
30509         IF(ISUB.EQ.421) THEN
30510 C...g + g -> QQ~[3S11] + g
30511           IF(MSTP(145).EQ.0) THEN
30512 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30513 *     &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/(SHTH2*THUH2*UHSH2)
30514             FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30515      &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2
30516 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
30517 *     &           (SH2/(SHTH2*UHSH2)+TH2/(SHTH2*THUH2)+UH2/(THUH2*UHSH2))
30518           ELSE
30519             FF=-PARU(1)*AS**3*(10D0/81D0)*SQMQQR/THUH2/SHTH2/UHSH2
30520             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
30521             BB=2D0*(SH2+TH2)
30522             CC=2D0*(SH2+UH2)
30523             DD=2D0*SH2
30524             IF(MSTP(147).EQ.0) THEN
30525                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30526      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30527             ELSEIF(MSTP(147).EQ.1) THEN
30528                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30529      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30530             ELSEIF(MSTP(147).EQ.3) THEN
30531                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30532      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30533             ELSEIF(MSTP(147).EQ.4) THEN
30534                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30535      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30536             ELSEIF(MSTP(147).EQ.5) THEN
30537                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30538      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30539             ELSEIF(MSTP(147).EQ.6) THEN
30540                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30541      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30542             ENDIF
30543             FACQQG=COMFAC*FF*FACQQG
30544           ENDIF
30545           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30546             NCHN=NCHN+1
30547             ISIG(NCHN,1)=21
30548             ISIG(NCHN,2)=21
30549             ISIG(NCHN,3)=1
30550             SIGH(NCHN)=FACQQG*PARP(IONIUM+1)
30551           ENDIF
30552  
30553         ELSEIF(ISUB.EQ.422) THEN
30554 C...g + g -> QQ~[3S18] + g
30555           IF(MSTP(145).EQ.0) THEN
30556             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/72D0)*
30557      &            (16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
30558      &            (SQMQQ*SQMQQR)*
30559      &            ((SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2)
30560           ELSE
30561             FF=PARU(1)*AS**3*(16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
30562      &            (72D0*SQMQQ*SQMQQR*SHTH2*THUH2*UHSH2)
30563             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
30564             BB=2D0*(SH2+TH2)
30565             CC=2D0*(SH2+UH2)
30566             DD=2D0*SH2
30567             IF(MSTP(147).EQ.0) THEN
30568                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30569      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30570             ELSEIF(MSTP(147).EQ.1) THEN
30571                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30572      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30573             ELSEIF(MSTP(147).EQ.3) THEN
30574                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30575      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30576             ELSEIF(MSTP(147).EQ.4) THEN
30577                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30578      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30579             ELSEIF(MSTP(147).EQ.5) THEN
30580                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30581      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30582             ELSEIF(MSTP(147).EQ.6) THEN
30583                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30584      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30585             ENDIF
30586             FACQQG=COMFAC*FF*FACQQG
30587           ENDIF
30588 C...Split total contribution into different colour flows just like
30589 C...in g g -> g g (recalculate kinematics for massless partons).
30590           THP=-0.5D0*SH*(1D0-CTH)
30591           UHP=-0.5D0*SH*(1D0+CTH)
30592           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30593           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30594           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30595           FACGGS=FACGG1+FACGG2+FACGG3
30596           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30597              NCHN=NCHN+1
30598              ISIG(NCHN,1)=21
30599              ISIG(NCHN,2)=21
30600              ISIG(NCHN,3)=1
30601              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
30602              NCHN=NCHN+1
30603              ISIG(NCHN,1)=21
30604              ISIG(NCHN,2)=21
30605              ISIG(NCHN,3)=2
30606              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
30607              NCHN=NCHN+1
30608              ISIG(NCHN,1)=21
30609              ISIG(NCHN,2)=21
30610              ISIG(NCHN,3)=3
30611              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG3/FACGGS
30612           ENDIF
30613  
30614         ELSEIF(ISUB.EQ.423) THEN
30615 C...g + g -> QQ~[1S08] + g
30616           IF(MSTP(145).EQ.0) THEN
30617 *            FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*
30618 *     &           (SHTH2*UH2+THUH2*SH2+UHSH2*TH2)/(SQMQQR*SH*TH*UH)*
30619 *     &           (12D0*SQMQQ*SH*TH*UH+SHTH2**2+THUH2**2+UHSH2**2)/
30620 *     &           (SHTH2*THUH2*UHSH2)
30621             FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*SQMQQR*
30622      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
30623      &            TH2/(SHTH2*THUH2))*
30624      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
30625           ELSE
30626             FA=PARU(1)*AS**3*(5D0/48D0)*SQMQQR*
30627      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
30628      &            TH2/(SHTH2*THUH2))*
30629      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
30630             IF(MSTP(147).EQ.0) THEN
30631                FACQQG=COMFAC*FA
30632             ELSEIF(MSTP(147).EQ.1) THEN
30633                FACQQG=COMFAC*2D0*FA
30634             ELSEIF(MSTP(147).EQ.3) THEN
30635                FACQQG=COMFAC*FA
30636             ELSEIF(MSTP(147).EQ.4) THEN
30637                FACQQG=COMFAC*FA
30638             ELSEIF(MSTP(147).EQ.5) THEN
30639                FACQQG=0D0
30640             ELSEIF(MSTP(147).EQ.6) THEN
30641                FACQQG=0D0
30642             ENDIF
30643           ENDIF
30644 C...Split total contribution into different colour flows just like
30645 C...in g g -> g g (recalculate kinematics for massless partons).
30646           THP=-0.5D0*SH*(1D0-CTH)
30647           UHP=-0.5D0*SH*(1D0+CTH)
30648           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30649           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30650           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30651           FACGGS=FACGG1+FACGG2+FACGG3
30652           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30653              NCHN=NCHN+1
30654              ISIG(NCHN,1)=21
30655              ISIG(NCHN,2)=21
30656              ISIG(NCHN,3)=1
30657              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
30658              NCHN=NCHN+1
30659              ISIG(NCHN,1)=21
30660              ISIG(NCHN,2)=21
30661              ISIG(NCHN,3)=2
30662              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
30663              NCHN=NCHN+1
30664              ISIG(NCHN,1)=21
30665              ISIG(NCHN,2)=21
30666              ISIG(NCHN,3)=3
30667              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG3/FACGGS
30668           ENDIF
30669  
30670         ELSEIF(ISUB.EQ.424) THEN
30671 C...g + g -> QQ~[3PJ8] + g
30672           POLY=SH2+SH*TH+TH2
30673           IF(MSTP(145).EQ.0) THEN
30674             FACQQG=COMFAC*5D0*PARU(1)*AS**3*(3D0*SH*TH*SHTH*POLY**4
30675      &            -SQMQQ*POLY**2*(7D0*SH**6+36D0*SH**5*TH+45D0*SH**4*TH2
30676      &            +28D0*SH**3*TH**3+45D0*SH2*TH**4+36D0*SH*TH**5
30677      &            +7D0*TH**6)
30678      &            +SQMQQ**2*SHTH*(35D0*SH**8+169D0*SH**7*TH
30679      &            +299D0*SH**6*TH2+401D0*SH**5*TH**3+418D0*SH**4*TH**4
30680      &            +401D0*SH**3*TH**5+299D0*SH2*TH**6+169D0*SH*TH**7
30681      &            +35D0*TH**8)
30682      &            -SQMQQ**3*(84D0*SH**8+432D0*SH**7*TH+905D0*SH**6*TH2
30683      &            +1287D0*SH**5*TH**3+1436D0*SH**4*TH**4
30684      &            +1287D0*SH**3*TH**5+905D0*SH2*TH**6+432D0*SH*TH**7
30685      &            +84D0*TH**8)
30686      &            +SQMQQ**4*SHTH*(126D0*SH**6+451D0*SH**5*TH
30687      &            +677D0*SH**4*TH2+836D0*SH**3*TH**3+677D0*SH2*TH**4
30688      &            +451D0*SH*TH**5+126D0*TH**6)
30689      &            -3D0*SQMQQ**5*(42D0*SH**6+171D0*SH**5*TH
30690      &            +304D0*SH**4*TH2+362D0*SH**3*TH**3+304D0*SH2*TH**4
30691      &            +171D0*SH*TH**5+42D0*TH**6)
30692      &            +2D0*SQMQQ**6*SHTH*(42D0*SH**4+106D0*SH**3*TH
30693      &            +119D0*SH2*TH2+106D0*SH*TH**3+42D0*TH**4)
30694      &            -SQMQQ**7*(35D0*SH**4+99D0*SH**3*TH+120D0*SH2*TH2
30695      &            +99D0*SH*TH**3+35D0*TH**4)
30696      &            +7D0*SQMQQ**8*SHTH*POLY)/
30697      &            (SH*TH*UH*SQMQQR*SQMQQ*
30698      &            SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
30699           ELSE
30700             FF=-5D0*PARU(1)*AS**3/(SH2*TH2*UH2
30701      &            *SQMQQR*SQMQQ*SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
30702             AA=SH*TH*UH*(SH*TH*SHTH*POLY**4
30703      &           -SQMQQ*SHTH2*POLY**2*
30704      &           (SH**4+6D0*SH**3*TH-6D0*SH2*TH2+6D0*SH*TH**3+TH**4)
30705      &           +SQMQQ**2*SHTH*(5D0*SH**8+35D0*SH**7*TH+49D0*SH**6*TH2
30706      &           +57D0*SH**5*TH**3+46D0*SH**4*TH**4+57D0*SH**3*TH**5
30707      &           +49D0*SH2*TH**6+35D0*SH*TH**7+5D0*TH**8)
30708      &           -SQMQQ**3*(16D0*SH**8+104D0*SH**7*TH+215D0*SH**6*TH2
30709      &           +291D0*SH**5*TH**3+316D0*SH**4*TH**4+291D0*SH**3*TH**5
30710      &           +215D0*SH2*TH**6+104D0*SH*TH**7+16D0*TH**8)
30711      &           +SQMQQ**4*SHTH*(34D0*SH**6+145D0*SH**5*TH
30712      &           +211D0*SH**4*TH2+262D0*SH**3*TH**3+211D0*SH2*TH**4
30713      &           +145D0*SH*TH**5+34D0*TH**6)
30714      &           -SQMQQ**5*(44D0*SH**6+193D0*SH**5*TH+346D0*SH**4*TH2
30715      &           +410D0*SH**3*TH**3+346D0*SH2*TH**4+193D0*SH*TH**5
30716      &           +44D0*TH**6)
30717      &           +2D0*SQMQQ**6*SHTH*(17D0*SH**4+45D0*SH**3*TH
30718      &           +49D0*SH2*TH2+45D0*SH*TH**3+17D0*TH**4)
30719      &           -SQMQQ**7*(3D0*SH2+2D0*SH*TH+3D0*TH2)
30720      &           *(5D0*SH2+11D0*SH*TH+5D0*TH2)
30721      &           +3D0*SQMQQ**8*SHTH*POLY)
30722             BB=4D0*SHTH2*POLY**3
30723      &           *(SH**4+SH**3*TH-SH2*TH2+SH*TH**3+TH**4)
30724      &           -SQMQQ*SHTH*(20D0*SH**10+84D0*SH**9*TH+166D0*SH**8*TH2
30725      &           +231D0*SH**7*TH**3+250D0*SH**6*TH**4+250D0*SH**5*TH**5
30726      &           +250D0*SH**4*TH**6+231D0*SH**3*TH**7+166D0*SH2*TH**8
30727      &           +84D0*SH*TH**9+20D0*TH**10)
30728      &           +SQMQQ**2*SHTH2*(40D0*SH**8+86D0*SH**7*TH
30729      &           +66D0*SH**6*TH2+67D0*SH**5*TH**3+6D0*SH**4*TH**4
30730      &           +67D0*SH**3*TH**5+66D0*SH2*TH**6+86D0*SH*TH**7
30731      &           +40D0*TH**8)
30732      &           -SQMQQ**3*SHTH*(40D0*SH**8+57D0*SH**7*TH
30733      &           -110D0*SH**6*TH2-263D0*SH**5*TH**3-384D0*SH**4*TH**4
30734      &           -263D0*SH**3*TH**5-110D0*SH2*TH**6+57D0*SH*TH**7
30735      &           +40D0*TH**8)
30736      &           +SQMQQ**4*(20D0*SH**8-33D0*SH**7*TH-368D0*SH**6*TH2
30737      &           -751D0*SH**5*TH**3-920D0*SH**4*TH**4-751D0*SH**3*TH**5
30738      &           -368D0*SH2*TH**6-33D0*SH*TH**7+20D0*TH**8)
30739      &           -SQMQQ**5*SHTH*(4D0*SH**6-81D0*SH**5*TH-242D0*SH**4*TH2
30740      &           -250D0*SH**3*TH**3-242D0*SH2*TH**4-81D0*SH*TH**5
30741      &           +4D0*TH**6)
30742      &           -SQMQQ**6*SH*TH*(41D0*SH**4+120D0*SH**3*TH
30743      &           +142D0*SH2*TH2+120D0*SH*TH**3+41D0*TH**4)
30744      &           +8D0*SQMQQ**7*SH*TH*SHTH*POLY
30745             CC=4D0*TH2*POLY**3
30746      &           *(-SH**4-2D0*SH**3*TH+2D0*SH2*TH2+3D0*SH*TH**3+TH**4)
30747      &           -SQMQQ*TH2*(-20D0*SH**9-56D0*SH**8*TH-24D0*SH**7*TH2
30748      &           +147D0*SH**6*TH**3+409D0*SH**5*TH**4+599D0*SH**4*TH**5
30749      &           +571D0*SH**3*TH**6+370D0*SH2*TH**7+148D0*SH*TH**8
30750      &           +28D0*TH**9)
30751      &           +SQMQQ**2*(4D0*SH**10+20D0*SH**9*TH-16D0*SH**8*TH2
30752      &           -48D0*SH**7*TH**3+150D0*SH**6*TH**4+611D0*SH**5*TH**5
30753      &           +1060D0*SH**4*TH**6+1155D0*SH**3*TH**7+854D0*SH2*TH**8
30754      &           +394D0*SH*TH**9+84D0*TH**10)
30755      &           -SQMQQ**3*SHTH*(20D0*SH**8+68D0*SH**7*TH-20D0*SH**6*TH2
30756      &           +32D0*SH**5*TH**3+286D0*SH**4*TH**4+577D0*SH**3*TH**5
30757      &           +618D0*SH2*TH**6+443D0*SH*TH**7+140D0*TH**8)
30758      &           +SQMQQ**4*(40D0*SH**8+152D0*SH**7*TH+94D0*SH**6*TH2
30759      &           +38D0*SH**5*TH**3+290D0*SH**4*TH**4+631D0*SH**3*TH**5
30760      &           +738D0*SH2*TH**6+513D0*SH*TH**7+140D0*TH**8)
30761      &           -SQMQQ**5*(40D0*SH**7+129D0*SH**6*TH+53D0*SH**5*TH2
30762      &           +7D0*SH**4*TH**3+129D0*SH**3*TH**4+264D0*SH2*TH**5
30763      &           +266D0*SH*TH**6+84D0*TH**7)
30764      &           +SQMQQ**6*(20D0*SH**6+55D0*SH**5*TH+2D0*SH**4*TH2
30765      &           -15D0*SH**3*TH**3+30D0*SH2*TH**4+76D0*SH*TH**5
30766      &           +28D0*TH**6)
30767      &           -SQMQQ**7*SHTH*(4D0*SH**4+7D0*SH**3*TH-14D0*SH2*TH2
30768      &           +7D0*SH*TH**3+4*TH**4)
30769      &           +SQMQQ**8*SH*(SH-TH)**2*TH
30770             DD=2D0*TH2*SHTH2*POLY**3
30771      &           *(-SH2+2*SH*TH+2*TH2)
30772      &           +SQMQQ*(4D0*SH**11+22D0*SH**10*TH+70D0*SH**9*TH2
30773      &           +115D0*SH**8*TH**3+71D0*SH**7*TH**4-119D0*SH**6*TH**5
30774      &           -381D0*SH**5*TH**6-552D0*SH**4*TH**7-512D0*SH**3*TH**8
30775      &           -320D0*SH2*TH**9-126D0*SH*TH**10-24D0*TH**11)
30776      &           -SQMQQ**2*SHTH*(20D0*SH**9+84D0*SH**8*TH
30777      &           +212D0*SH**7*TH2+247D0*SH**6*TH**3+105D0*SH**5*TH**4
30778      &           -178D0*SH**4*TH**5-380D0*SH**3*TH**6-364D0*SH2*TH**7
30779      &           -210D0*SH*TH**8-60D0*TH**9)
30780      &           +SQMQQ**3*SHTH*(40D0*SH**8+159D0*SH**7*TH
30781      &           +374D0*SH**6*TH2+404D0*SH**5*TH**3+192D0*SH**4*TH**4
30782      &           -141D0*SH**3*TH**5-264D0*SH2*TH**6-216D0*SH*TH**7
30783      &           -80D0*TH**8)
30784      &           -SQMQQ**4*(40D0*SH**8+197D0*SH**7*TH+506D0*SH**6*TH2
30785      &           +672D0*SH**5*TH**3+460D0*SH**4*TH**4+79D0*SH**3*TH**5
30786      &           -138D0*SH2*TH**6-164D0*SH*TH**7-60D0*TH**8)
30787      &           +SQMQQ**5*(20D0*SH**7+107D0*SH**6*TH+267D0*SH**5*TH2
30788      &           +307D0*SH**4*TH**3+185D0*SH**3*TH**4+56D0*SH2*TH**5
30789      &           -30D0*SH*TH**6-24D0*TH**7)
30790      &           -SQMQQ**6*(4D0*SH**6+31D0*SH**5*TH+74D0*SH**4*TH2
30791      &           +71D0*SH**3*TH**3+46D0*SH2*TH**4+10D0*SH*TH**5
30792      &           -4D0*TH**6)
30793      &           +4D0*SQMQQ**7*SH*TH*SHTH*POLY
30794             IF(MSTP(147).EQ.0) THEN
30795                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30796      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30797             ELSEIF(MSTP(147).EQ.1) THEN
30798                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30799      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30800             ELSEIF(MSTP(147).EQ.3) THEN
30801                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30802      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30803             ELSEIF(MSTP(147).EQ.4) THEN
30804                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30805      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30806             ELSEIF(MSTP(147).EQ.5) THEN
30807                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30808      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30809             ELSEIF(MSTP(147).EQ.6) THEN
30810                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30811      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30812             ENDIF
30813             FACQQG=COMFAC*FF*FACQQG
30814           ENDIF
30815 C...Split total contribution into different colour flows just like
30816 C...in g g -> g g (recalculate kinematics for massless partons).
30817           THP=-0.5D0*SH*(1D0-CTH)
30818           UHP=-0.5D0*SH*(1D0+CTH)
30819           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
30820           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
30821           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
30822           FACGGS=FACGG1+FACGG2+FACGG3
30823           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
30824              NCHN=NCHN+1
30825              ISIG(NCHN,1)=21
30826              ISIG(NCHN,2)=21
30827              ISIG(NCHN,3)=1
30828              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
30829              NCHN=NCHN+1
30830              ISIG(NCHN,1)=21
30831              ISIG(NCHN,2)=21
30832              ISIG(NCHN,3)=2
30833              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
30834              NCHN=NCHN+1
30835              ISIG(NCHN,1)=21
30836              ISIG(NCHN,2)=21
30837              ISIG(NCHN,3)=3
30838              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG3/FACGGS
30839           ENDIF
30840  
30841         ELSEIF(ISUB.EQ.425) THEN
30842 C...q + g -> q + QQ~[3S18]
30843           IF(MSTP(145).EQ.0) THEN
30844             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/27D0)*
30845      &            (4D0*(SH2+UH2)-SH*UH)*(SHTH2+THUH2)/
30846      &            (SQMQQ*SQMQQR*SH*UH*UHSH2)
30847           ELSE
30848             FF=PARU(1)*AS**3*(4D0*(SH2+UH2)-SH*UH)/
30849      &            (54D0*SQMQQ*SQMQQR*SH*UH*UHSH2)
30850             AA=SHTH2+THUH2
30851             BB=4D0
30852             CC=8D0
30853             DD=4D0
30854             IF(MSTP(147).EQ.0) THEN
30855                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30856      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30857             ELSEIF(MSTP(147).EQ.1) THEN
30858                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30859      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30860             ELSEIF(MSTP(147).EQ.3) THEN
30861                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30862      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30863             ELSEIF(MSTP(147).EQ.4) THEN
30864                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30865      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30866             ELSEIF(MSTP(147).EQ.5) THEN
30867                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30868      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30869             ELSEIF(MSTP(147).EQ.6) THEN
30870                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30871      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30872             ENDIF
30873             FACQQG=COMFAC*FF*FACQQG
30874           ENDIF
30875 C...Split total contribution into different colour flows just like
30876 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30877 C...(recalculate kinematics for massless partons).
30878           THP=-0.5D0*SH*(1D0-CTH)
30879           UHP=-0.5D0*SH*(1D0+CTH)
30880           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30881           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30882           FACQGS=FACQG1+FACQG2
30883           DO 2442 I=MMINA,MMAXA
30884             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2442
30885             DO 2441 ISDE=1,2
30886               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2441
30887               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2441
30888               NCHN=NCHN+1
30889               ISIG(NCHN,ISDE)=I
30890               ISIG(NCHN,3-ISDE)=21
30891               ISIG(NCHN,3)=1
30892               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG1/FACQGS
30893               NCHN=NCHN+1
30894               ISIG(NCHN,ISDE)=I
30895               ISIG(NCHN,3-ISDE)=21
30896               ISIG(NCHN,3)=2
30897               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG2/FACQGS
30898  2441       CONTINUE
30899  2442     CONTINUE
30900  
30901         ELSEIF(ISUB.EQ.426) THEN
30902 C...q + g -> q + QQ~[1S08]
30903           IF(MSTP(145).EQ.0) THEN
30904             FACQQG=-COMFAC*PARU(1)*AS**3*(5D0/18D0)*
30905      &            (SH2+UH2)/(SQMQQR*TH*UHSH2)
30906           ELSE
30907             FA=-PARU(1)*AS**3*(5D0/54D0)*(SH2+UH2)/(SQMQQR*TH*UHSH2)
30908             IF(MSTP(147).EQ.0) THEN
30909                FACQQG=COMFAC*FA
30910             ELSEIF(MSTP(147).EQ.1) THEN
30911                FACQQG=COMFAC*2D0*FA
30912             ELSEIF(MSTP(147).EQ.3) THEN
30913                FACQQG=COMFAC*FA
30914             ELSEIF(MSTP(147).EQ.4) THEN
30915                FACQQG=COMFAC*FA
30916             ELSEIF(MSTP(147).EQ.5) THEN
30917                FACQQG=0D0
30918             ELSEIF(MSTP(147).EQ.6) THEN
30919                FACQQG=0D0
30920             ENDIF
30921           ENDIF
30922 C...Split total contribution into different colour flows just like
30923 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30924 C...(recalculate kinematics for massless partons).
30925           THP=-0.5D0*SH*(1D0-CTH)
30926           UHP=-0.5D0*SH*(1D0+CTH)
30927           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30928           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30929           FACQGS=FACQG1+FACQG2
30930           DO 2444 I=MMINA,MMAXA
30931             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2444
30932             DO 2443 ISDE=1,2
30933               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2443
30934               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2443
30935               NCHN=NCHN+1
30936               ISIG(NCHN,ISDE)=I
30937               ISIG(NCHN,3-ISDE)=21
30938               ISIG(NCHN,3)=1
30939               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG1/FACQGS
30940               NCHN=NCHN+1
30941               ISIG(NCHN,ISDE)=I
30942               ISIG(NCHN,3-ISDE)=21
30943               ISIG(NCHN,3)=2
30944               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG2/FACQGS
30945  2443       CONTINUE
30946  2444     CONTINUE
30947  
30948         ELSEIF(ISUB.EQ.427) THEN
30949 C...q + g -> q + QQ~[3PJ8]
30950           IF(MSTP(145).EQ.0) THEN
30951             FACQQG=-COMFAC*PARU(1)*AS**3*(10D0/9D0)*
30952      &            ((7D0*UHSH+8D0*TH)*(SH2+UH2)
30953      &            +4D0*TH*(2D0*SQMQQ**2-SHTH2-THUH2))/
30954      &            (SQMQQ*SQMQQR*TH*UHSH2*UHSH)
30955           ELSE
30956             FF=10D0*PARU(1)*AS**3/
30957      &            (9D0*SQMQQ*SQMQQR*TH2*UHSH2*UHSH)
30958             AA=TH*UHSH*(2D0*SQMQQ**2+SHTH2+THUH2)
30959             BB=8D0*(SHTH2+TH*UH)
30960             CC=8D0*UHSH*(SHTH+THUH)
30961             DD=4D0*(2D0*SQMQQ*SH+TH*UHSH)
30962             IF(MSTP(147).EQ.0) THEN
30963                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30964      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30965             ELSEIF(MSTP(147).EQ.1) THEN
30966                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30967      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
30968             ELSEIF(MSTP(147).EQ.3) THEN
30969                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
30970      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
30971             ELSEIF(MSTP(147).EQ.4) THEN
30972                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30973      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30974             ELSEIF(MSTP(147).EQ.5) THEN
30975                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
30976      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
30977             ELSEIF(MSTP(147).EQ.6) THEN
30978                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
30979      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
30980             ENDIF
30981             FACQQG=COMFAC*FF*FACQQG
30982           ENDIF
30983 C...Split total contribution into different colour flows just like
30984 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
30985 C...(recalculate kinematics for massless partons).
30986           THP=-0.5D0*SH*(1D0-CTH)
30987           UHP=-0.5D0*SH*(1D0+CTH)
30988           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
30989           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
30990           FACQGS=FACQG1+FACQG2
30991           DO 2446 I=MMINA,MMAXA
30992             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2446
30993             DO 2445 ISDE=1,2
30994               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2445
30995               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2445
30996               NCHN=NCHN+1
30997               ISIG(NCHN,ISDE)=I
30998               ISIG(NCHN,3-ISDE)=21
30999               ISIG(NCHN,3)=1
31000               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG1/FACQGS
31001               NCHN=NCHN+1
31002               ISIG(NCHN,ISDE)=I
31003               ISIG(NCHN,3-ISDE)=21
31004               ISIG(NCHN,3)=2
31005               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG2/FACQGS
31006  2445       CONTINUE
31007  2446     CONTINUE
31008  
31009         ELSEIF(ISUB.EQ.428) THEN
31010 C...q + q~ -> g + QQ~[3S18]
31011           IF(MSTP(145).EQ.0) THEN
31012             FACQQG=COMFAC*PARU(1)*AS**3*(8D0/81D0)*
31013      &            (4D0*(TH2+UH2)-TH*UH)*(SHTH2+UHSH2)/
31014      &            (SQMQQ*SQMQQR*TH*UH*THUH2)
31015           ELSE
31016             FF=-4D0*PARU(1)*AS**3*(4D0*(TH2+UH2)-TH*UH)/
31017      &            (81D0*SQMQQ*SQMQQR*TH*UH*THUH2)
31018             AA=SHTH2+UHSH2
31019             BB=4D0
31020             CC=4D0
31021             DD=0D0
31022             IF(MSTP(147).EQ.0) THEN
31023                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31024      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31025             ELSEIF(MSTP(147).EQ.1) THEN
31026                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31027      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31028             ELSEIF(MSTP(147).EQ.3) THEN
31029                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31030      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31031             ELSEIF(MSTP(147).EQ.4) THEN
31032                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31033      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31034             ELSEIF(MSTP(147).EQ.5) THEN
31035                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31036      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31037             ELSEIF(MSTP(147).EQ.6) THEN
31038                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31039      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31040             ENDIF
31041             FACQQG=COMFAC*FF*FACQQG
31042           ENDIF
31043 C...Split total contribution into different colour flows just like
31044 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31045 C...(recalculate kinematics for massless partons).
31046           THP=-0.5D0*SH*(1D0-CTH)
31047           UHP=-0.5D0*SH*(1D0+CTH)
31048           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31049           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31050           FACGGS=FACGG1+FACGG2
31051           DO 2447 I=MMINA,MMAXA
31052             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31053      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2447
31054             NCHN=NCHN+1
31055             ISIG(NCHN,1)=I
31056             ISIG(NCHN,2)=-I
31057             ISIG(NCHN,3)=1
31058             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
31059             NCHN=NCHN+1
31060             ISIG(NCHN,1)=I
31061             ISIG(NCHN,2)=-I
31062             ISIG(NCHN,3)=2
31063             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
31064  2447     CONTINUE
31065  
31066         ELSEIF(ISUB.EQ.429) THEN
31067 C...q + q~ -> g + QQ~[1S08]
31068           IF(MSTP(145).EQ.0) THEN
31069             FACQQG=COMFAC*PARU(1)*AS**3*(20D0/27D0)*
31070      &            (TH2+UH2)/(SQMQQR*SH*THUH2)
31071           ELSE
31072             FA=PARU(1)*AS**3*(20D0/81D0)*(TH2+UH2)/(SQMQQR*SH*THUH2)
31073             IF(MSTP(147).EQ.0) THEN
31074                FACQQG=COMFAC*FA
31075             ELSEIF(MSTP(147).EQ.1) THEN
31076                FACQQG=COMFAC*2D0*FA
31077             ELSEIF(MSTP(147).EQ.3) THEN
31078                FACQQG=COMFAC*FA
31079             ELSEIF(MSTP(147).EQ.4) THEN
31080                FACQQG=COMFAC*FA
31081             ELSEIF(MSTP(147).EQ.5) THEN
31082                FACQQG=0D0
31083             ELSEIF(MSTP(147).EQ.6) THEN
31084                FACQQG=0D0
31085             ENDIF
31086           ENDIF
31087 C...Split total contribution into different colour flows just like
31088 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31089 C...(recalculate kinematics for massless partons).
31090           THP=-0.5D0*SH*(1D0-CTH)
31091           UHP=-0.5D0*SH*(1D0+CTH)
31092           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31093           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31094           FACGGS=FACGG1+FACGG2
31095           DO 2448 I=MMINA,MMAXA
31096             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31097      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2448
31098             NCHN=NCHN+1
31099             ISIG(NCHN,1)=I
31100             ISIG(NCHN,2)=-I
31101             ISIG(NCHN,3)=1
31102             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
31103             NCHN=NCHN+1
31104             ISIG(NCHN,1)=I
31105             ISIG(NCHN,2)=-I
31106             ISIG(NCHN,3)=2
31107             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
31108  2448     CONTINUE
31109  
31110         ELSEIF(ISUB.EQ.430) THEN
31111 C...q + q~ -> g + QQ~[3PJ8]
31112           IF(MSTP(145).EQ.0) THEN
31113             FACQQG=COMFAC*PARU(1)*AS**3*(80D0/27D0)*
31114      &            ((7D0*THUH+8D0*SH)*(TH2+UH2)
31115      &            +4D0*SH*(2D0*SQMQQ**2-SHTH2-UHSH2))/
31116      &            (SQMQQ*SQMQQR*SH*THUH2*THUH)
31117           ELSE
31118             FF=-80D0*PARU(1)*AS**3/(27D0*SQMQQ*SQMQQR*SH2*THUH2*THUH)
31119             AA=SH*THUH*(2D0*SQMQQ**2+SHTH2+UHSH2)
31120             BB=8D0*(UHSH2+SH*TH)
31121             CC=8D0*(SHTH2+SH*UH)
31122             DD=4D0*(SHTH2+UHSH2+SH*SQMQQ-SQMQQ**2)
31123             IF(MSTP(147).EQ.0) THEN
31124                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31125      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31126             ELSEIF(MSTP(147).EQ.1) THEN
31127                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31128      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31129             ELSEIF(MSTP(147).EQ.3) THEN
31130                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31131      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31132             ELSEIF(MSTP(147).EQ.4) THEN
31133                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31134      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31135             ELSEIF(MSTP(147).EQ.5) THEN
31136                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31137      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31138             ELSEIF(MSTP(147).EQ.6) THEN
31139                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31140      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31141             ENDIF
31142             FACQQG=COMFAC*FF*FACQQG
31143           ENDIF
31144 C...Split total contribution into different colour flows just like
31145 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31146 C...(recalculate kinematics for massless partons).
31147           THP=-0.5D0*SH*(1D0-CTH)
31148           UHP=-0.5D0*SH*(1D0+CTH)
31149           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31150           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31151           FACGGS=FACGG1+FACGG2
31152           DO 2449 I=MMINA,MMAXA
31153             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31154      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2449
31155             NCHN=NCHN+1
31156             ISIG(NCHN,1)=I
31157             ISIG(NCHN,2)=-I
31158             ISIG(NCHN,3)=1
31159             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
31160             NCHN=NCHN+1
31161             ISIG(NCHN,1)=I
31162             ISIG(NCHN,2)=-I
31163             ISIG(NCHN,3)=2
31164             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
31165  2449     CONTINUE
31166  
31167         ELSEIF(ISUB.EQ.431) THEN
31168 C...g + g -> QQ~[3P01] + g
31169           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31170           QGTW=(SH*TH*UH)/SH**3
31171           RGTW=SQMQQ/SH
31172           IF(MSTP(145).EQ.0) THEN
31173             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
31174      &            (9D0*RGTW**2*PGTW**4*
31175      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31176      &            -6D0*RGTW*PGTW**3*QGTW*
31177      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31178      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31179      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31180      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31181           ELSE
31182             FC1=PARU(1)*AS**3*8D0/(27D0*SQMQQR*SH)*
31183      &            (9D0*RGTW**2*PGTW**4*
31184      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31185      &            -6D0*RGTW*PGTW**3*QGTW*
31186      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31187      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31188      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31189      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31190             IF(MSTP(147).EQ.0) THEN
31191                FACQQG=COMFAC*FC1
31192             ELSEIF(MSTP(147).EQ.1) THEN
31193                FACQQG=COMFAC*2D0*FC1
31194             ELSEIF(MSTP(147).EQ.3) THEN
31195                FACQQG=COMFAC*FC1
31196             ELSEIF(MSTP(147).EQ.4) THEN
31197                FACQQG=COMFAC*FC1
31198             ELSEIF(MSTP(147).EQ.5) THEN
31199                FACQQG=0D0
31200             ELSEIF(MSTP(147).EQ.6) THEN
31201                FACQQG=0D0
31202             ENDIF
31203           ENDIF
31204           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31205             NCHN=NCHN+1
31206             ISIG(NCHN,1)=21
31207             ISIG(NCHN,2)=21
31208             ISIG(NCHN,3)=1
31209             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31210           ENDIF
31211  
31212         ELSEIF(ISUB.EQ.432) THEN
31213 C...g + g -> QQ~[3P11] + g
31214           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31215           QGTW=(SH*TH*UH)/SH**3
31216           RGTW=SQMQQ/SH
31217           IF(MSTP(145).EQ.0) THEN
31218             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(3D0*SQMQQR*SH)*
31219      &            PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)
31220      &            +2D0*QGTW*(-RGTW**4+5D0*RGTW**2*PGTW+PGTW**2)
31221      &            -15D0*RGTW*QGTW**2)/(QGTW-RGTW*PGTW)**4
31222           ELSE
31223             FF=4D0/3D0*PARU(1)*AS**3*SQMQQR/SHTH2**2/THUH2**2/UHSH2**2
31224             C1=(4D0*PGTW**5+23D0*PGTW**2*QGTW**2
31225      &            +(-14D0*PGTW**3*QGTW+3D0*QGTW**3)*RGTW
31226      &            -(PGTW**4+2D0*PGTW*QGTW**2)*RGTW**2
31227      &            +3D0*PGTW**2*QGTW*RGTW**3)*SH2**5
31228             C2=2D0*SHTH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31229      &            -TH*UH*(TH-UH)**2)+SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31230      &            *(PGTW**2-QGTW*(SH+2D0*UH)/SH))
31231             C3=2D0*UHSH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31232      &            -TH*UH*(TH-UH)**2)-SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31233      &            *(PGTW**2-QGTW*(SH+2D0*TH)/SH))
31234             C4=-4D0*THUH*(TH-UH)**2*
31235      &            (TH**3*UH**3+SH2**2*(2D0*TH+UH)*(TH+2D0*UH)
31236      &            -SH2*TH*UH*(TH2+UH2))
31237      &            +4D0*THUH2*(SH**3*(SH2**2+TH2**2+UH2**2)
31238      &            -SH*TH*UH*(SH2**2+TH*UH*(TH2-3D0*TH*UH+UH2)
31239      &            +SH2*(5D0*THUH2-17D0*TH*UH)))
31240             IF(MSTP(147).EQ.0) THEN
31241                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31242      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31243             ELSEIF(MSTP(147).EQ.1) THEN
31244                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31245      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31246             ELSEIF(MSTP(147).EQ.3) THEN
31247                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31248      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31249             ELSEIF(MSTP(147).EQ.4) THEN
31250                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31251      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31252             ELSEIF(MSTP(147).EQ.5) THEN
31253                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31254      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31255             ELSEIF(MSTP(147).EQ.6) THEN
31256                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31257      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31258             ENDIF
31259             FACQQG=COMFAC*FF*FACQQG
31260           ENDIF
31261           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31262             NCHN=NCHN+1
31263             ISIG(NCHN,1)=21
31264             ISIG(NCHN,2)=21
31265             ISIG(NCHN,3)=1
31266             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31267           ENDIF
31268  
31269         ELSEIF(ISUB.EQ.433) THEN
31270 C...g + g -> QQ~[3P21] + g
31271           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31272           QGTW=(SH*TH*UH)/SH**3
31273           RGTW=SQMQQ/SH
31274           IF(MSTP(145).EQ.0) THEN
31275             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
31276      &            (12D0*RGTW**2*PGTW**4*
31277      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31278      &            -3D0*RGTW*PGTW**3*QGTW*
31279      &            (8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)
31280      &            +2D0*PGTW**2*QGTW**2*
31281      &            (-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)
31282      &            +RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)
31283      &            +12D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31284           ELSE
31285             FF=(16D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/
31286      &            (3D0*SH2*TH2*UH2*SHTH2**2*THUH2**2*UHSH2**2)
31287             C1=PGTW**2*QGTW*(PGTW*RGTW-QGTW)**2*(RGTW**2-2D0*PGTW)
31288      &            *SH*SH2**7
31289             C2=2D0*SHTH2*(-SH2**3*TH2**3-SH**5*TH**5*UH*SHTH
31290      &            +SH2**2*TH2**2*UH2*(8D0*SHTH2-5D0*SH*TH)
31291      &            +SH**3*TH**3*UH**3*SHTH*(17D0*SHTH2-2D0*SH*TH)
31292      &            +SH2*TH2*UH2**2*(105D0*SH2*TH2+64D0*SH*TH*(SH2+TH2)
31293      &            +10D0*(SH2**2+TH2**2))
31294      &            +SH2*TH2*UH**5*SHTH*(32D0*SHTH2+7D0*SH*TH)
31295      &            -UH2**3*(SH2**3-87D0*SH**3*TH**3+TH2**3
31296      &            -45D0*SH2*TH2*(SH2+TH2)-5D0*SH*TH*(SH2**2+TH2**2))
31297      &            +SH*TH*UH**7*SHTH*(7D0*SHTH2+12D0*SH*TH)
31298      &            +4D0*SH*TH*UH2**4*SHTH2)
31299             C3=2D0*UHSH2*(-SH2**3*UH2**3-SH**5*UH**5*TH*UHSH
31300      &            +SH2**2*UH2**2*TH2*(8D0*UHSH2-5D0*SH*UH)
31301      &            +SH**3*UH**3*TH**3*UHSH*(17D0*UHSH2-2D0*SH*UH)
31302      &            +SH2*UH2*TH2**2*(105D0*SH2*UH2+64D0*SH*UH*(SH2+UH2)
31303      &            +10D0*(SH2**2+UH2**2))
31304      &            +SH2*UH2*TH**5*UHSH*(32D0*UHSH2+7D0*SH*UH)
31305      &            -TH2**3*(SH2**3-87D0*SH**3*UH**3+UH2**3
31306      &            -45D0*SH2*UH2*(SH2+UH2)-5D0*SH*UH*(SH2**2+UH2**2))
31307      &            +SH*UH*TH**7*UHSH*(7D0*UHSH2+12D0*SH*UH)
31308      &            +4D0*SH*UH*TH2**4*UHSH2)
31309             C4=-2D0*SHTH*UHSH*(-2D0*TH2**3*UH2**3
31310      &            -SH**5*TH2*UH2*THUH*(5D0*TH+3D0*UH)*(3D0*TH+5D0*UH)
31311      &            +SH2**3*(2D0*TH+UH)*(TH+2D0*UH)*(TH2-UH2)**2
31312      &            -SH*TH2**2*UH2**2*THUH*(5D0*THUH2-4D0*TH*UH)
31313      &            -SH2*TH**3*UH**3*THUH2*(13D0*THUH2-16D0*TH*UH)
31314      &            -SH**3*TH2*UH2*(92D0*TH2*UH2*THUH
31315      &            +53D0*TH*UH*(TH**3+UH**3)+11D0*(TH**5+UH**5))
31316      &            -SH2**2*TH*UH*(114D0*TH**3*UH**3
31317      &            +83D0*TH2*UH2*(TH2+UH2)+28D0*TH*UH*(TH2**2+UH2**2)
31318      &            +3D0*(TH2**3+UH2**3)))
31319             C5=4D0*SH*TH*UH2*SHTH2*(2D0*SH*TH+SH*UH+TH*UH)**2
31320      &            *(2D0*UH*SQMQQ**2+SHTH*(SH*TH-UH2))
31321             C6=4D0*SH*UH*TH2*UHSH2*(2D0*SH*UH+SH*TH+TH*UH)**2
31322      &            *(2D0*TH*SQMQQ**2+UHSH*(SH*UH-TH2))
31323             C7=4D0*SH*TH*UH2*SHTH*(SH2**2*TH**3*(11D0*SH+16D0*TH)
31324      &            +SH**3*TH2*UH*(31D0*SH2+83D0*SH*TH+61D0*TH2)
31325      &            +SH2*TH*UH2*(19D0*SH**3+110D0*SH2*TH+156D0*SH*TH2+
31326      &            82D0*TH**3)
31327      &            +SH*TH*UH**3*(43D0*SH**3+132D0*SH2*TH+124D0*SH*TH2
31328      &            +45D0*TH**3)
31329      &            +TH*UH2**2*(37D0*SH**3+68D0*SH2*TH+43D0*SH*TH2+
31330      &            8D0*TH**3)
31331      &            +TH*UH**5*(11D0*SH2+13D0*SH*TH+5D0*TH2)
31332      &            +SH**3*UH**3*(3D0*UHSH2-2D0*SH*UH)
31333      &            +TH**5*UHSH*(5D0*UHSH2+2D0*SH*UH))
31334             C8=4D0*SH*UH*TH2*UHSH*(SH2**2*UH**3*(11D0*SH+16D0*UH)
31335      &            +SH**3*UH2*TH*(31D0*SH2+83D0*SH*UH+61D0*UH2)
31336      &            +SH2*UH*TH2*(19D0*SH**3+110D0*SH2*UH+156D0*SH*UH2+
31337      &            82D0*UH**3)
31338      &            +SH*UH*TH**3*(43D0*SH**3+132D0*SH2*UH+124D0*SH*UH2
31339      &            +45D0*UH**3)
31340      &            +UH*TH2**2*(37D0*SH**3+68D0*SH2*UH+43D0*SH*UH2+
31341      &            8D0*UH**3)
31342      &            +UH*TH**5*(11D0*SH2+13D0*SH*UH+5D0*UH2)
31343      &            +SH**3*TH**3*(3D0*SHTH2-2D0*SH*TH)
31344      &            +UH**5*SHTH*(5D0*SHTH2+2D0*SH*TH))
31345             C9=4D0*SHTH*UHSH*(2D0*TH**5*UH**5*THUH
31346      &            +4D0*SH*TH2**2*UH2**2*THUH2
31347      &            -SH2*TH**3*UH**3*THUH*(TH2+UH2)
31348      &            -2D0*SH**3*TH2*UH2*(THUH2**2+2D0*TH*UH*THUH2-TH2*UH2)
31349      &            +SH2**2*TH*UH*THUH*(-TH*UH*THUH2+3D0*(TH2**2+UH2**2))
31350      &            +SH**5*(4D0*TH2*UH2*(THUH2-TH*UH)
31351      &            +5D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
31352             C0=-4D0*(2D0*TH2**3*UH2**3*SQMQQ
31353      &            -SH2*TH2**2*UH2**2*THUH*(19D0*THUH2-4D0*TH*UH)
31354      &            -SH**3*TH**3*UH**3*THUH2*(32D0*THUH2+29D0*TH*UH)
31355      &            -SH2**2*TH2*UH2*THUH*(264D0*TH2*UH2
31356      &            +136D0*TH*UH*(TH2+UH2)+15D0*(TH2**2+UH2**2))
31357      &            +SH**5*TH*UH*(-428D0*TH**3*UH**3
31358      &            -256D0*TH2*UH2*(TH2+UH2)-43D0*TH*UH*(TH2**2+UH2**2)
31359      &            +2D0*(TH2**3+UH2**3))
31360      &            +SH**7*(-46D0*TH**3*UH**3-21D0*TH2*UH2*(TH2+UH2)
31361      &            +2D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3))
31362      &            +SH2**3*THUH*(-134*TH**3*UH**3-53D0*TH2*UH2*(TH2+UH2)
31363      &            +4D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
31364             IF(MSTP(147).EQ.0) THEN
31365                FACQQG=1D0/3D0*(C1*3D0
31366      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31367      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31368      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31369      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31370      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31371      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31372      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31373      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31374      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31375      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31376      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31377      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31378             ELSEIF(MSTP(147).EQ.1) THEN
31379                FACQQG=C1*2D0
31380      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31381      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31382      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31383      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31384      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31385      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31386      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31387      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31388      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31389      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31390      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31391      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31392      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31393             ELSEIF(MSTP(147).EQ.2) THEN
31394                FACQQG=2D0*(C1
31395      &              -C2*EL1K11*EL2K11
31396      &              -C3*EL1K21*EL2K21
31397      &              -C4*EL1K11*EL2K21
31398      &              +C5*(EL1K11*EL2K11)**2
31399      &              +C6*(EL1K21*EL2K21)**2
31400      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31401      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31402      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31403             ENDIF
31404             FACQQG=COMFAC*FF*FACQQG
31405           ENDIF
31406           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31407             NCHN=NCHN+1
31408             ISIG(NCHN,1)=21
31409             ISIG(NCHN,2)=21
31410             ISIG(NCHN,3)=1
31411             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31412           ENDIF
31413  
31414         ELSEIF(ISUB.EQ.434) THEN
31415 C...q + g -> q + QQ~[3P01]
31416           IF(MSTP(145).EQ.0) THEN
31417             FACQQG=-COMFAC*PARU(1)*AS**3*(16D0/81D0)*
31418      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
31419           ELSE
31420             FA=-PARU(1)*AS**3*(16D0/243D0)*
31421      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
31422             IF(MSTP(147).EQ.0) THEN
31423                FACQQG=COMFAC*FA
31424             ELSEIF(MSTP(147).EQ.1) THEN
31425                FACQQG=COMFAC*2D0*FA
31426             ELSEIF(MSTP(147).EQ.3) THEN
31427                FACQQG=COMFAC*FA
31428             ELSEIF(MSTP(147).EQ.4) THEN
31429                FACQQG=COMFAC*FA
31430             ELSEIF(MSTP(147).EQ.5) THEN
31431                FACQQG=0D0
31432             ELSEIF(MSTP(147).EQ.6) THEN
31433                FACQQG=0D0
31434             ENDIF
31435           ENDIF
31436           DO 2452 I=MMINA,MMAXA
31437             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2452
31438             DO 2451 ISDE=1,2
31439               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2451
31440               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2451
31441               NCHN=NCHN+1
31442               ISIG(NCHN,ISDE)=I
31443               ISIG(NCHN,3-ISDE)=21
31444               ISIG(NCHN,3)=1
31445               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31446  2451       CONTINUE
31447  2452     CONTINUE
31448  
31449         ELSEIF(ISUB.EQ.435) THEN
31450 C...q + g -> q + QQ~[3P11]
31451           IF(MSTP(145).EQ.0) THEN
31452             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/27D0)*
31453      &            (4D0*SQMQQ*SH*UH+TH*(SH2+UH2))/(SQMQQR*UHSH2**2)
31454           ELSE
31455             FF=(64D0*PARU(1)*AS**3*SQMQQR)/(27D0*UHSH2**2)
31456             C1=SH*UH
31457             C2=2D0*SH
31458             C3=0D0
31459             C4=2D0*(SH-UH)
31460             IF(MSTP(147).EQ.0) THEN
31461                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31462      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31463             ELSEIF(MSTP(147).EQ.1) THEN
31464                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31465      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31466             ELSEIF(MSTP(147).EQ.3) THEN
31467                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31468      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31469             ELSEIF(MSTP(147).EQ.4) THEN
31470                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31471      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31472             ELSEIF(MSTP(147).EQ.5) THEN
31473                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31474      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31475             ELSEIF(MSTP(147).EQ.6) THEN
31476                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31477      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31478             ENDIF
31479             FACQQG=COMFAC*FF*FACQQG
31480           ENDIF
31481           DO 2454 I=MMINA,MMAXA
31482             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2454
31483             DO 2453 ISDE=1,2
31484               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2453
31485               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2453
31486               NCHN=NCHN+1
31487               ISIG(NCHN,ISDE)=I
31488               ISIG(NCHN,3-ISDE)=21
31489               ISIG(NCHN,3)=1
31490               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31491  2453       CONTINUE
31492  2454     CONTINUE
31493  
31494         ELSEIF(ISUB.EQ.436) THEN
31495 C...q + g -> q + QQ~[3P21]
31496           IF(MSTP(145).EQ.0) THEN
31497             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/81D0)*
31498      &            ((6D0*SQMQQ**2+TH2)*UHSH2
31499      &            -2D0*SH*UH*(TH2+6D0*SQMQQ*UHSH))/
31500      &            (SQMQQR*TH*UHSH2**2)
31501           ELSE
31502             FF=-(32D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(27D0*TH2*UHSH2**2)
31503             C1=TH*UHSH2
31504             C2=4D0*(SH2+TH2+2D0*TH*UHSH)
31505             C3=4D0*UHSH2
31506             C4=8D0*SH*UHSH
31507             C5=8D0*TH
31508             C6=0D0
31509             C7=16D0*TH
31510             C8=0D0
31511             C9=-16D0*UHSH
31512             C0=16D0*SQMQQ
31513             IF(MSTP(147).EQ.0) THEN
31514                FACQQG=1D0/3D0*(C1*3D0
31515      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31516      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31517      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31518      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31519      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31520      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31521      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31522      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31523      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31524      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31525      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31526      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31527             ELSEIF(MSTP(147).EQ.1) THEN
31528                FACQQG=C1*2D0
31529      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31530      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31531      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31532      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31533      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31534      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31535      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31536      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31537      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31538      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31539      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31540      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31541      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31542             ELSEIF(MSTP(147).EQ.2) THEN
31543                FACQQG=2D0*(C1
31544      &              -C2*EL1K11*EL2K11
31545      &              -C3*EL1K21*EL2K21
31546      &              -C4*EL1K11*EL2K21
31547      &              +C5*(EL1K11*EL2K11)**2
31548      &              +C6*(EL1K21*EL2K21)**2
31549      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31550      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31551      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31552             ENDIF
31553             FACQQG=COMFAC*FF*FACQQG
31554           ENDIF
31555           DO 2456 I=MMINA,MMAXA
31556             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2456
31557             DO 2455 ISDE=1,2
31558               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2455
31559               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2455
31560               NCHN=NCHN+1
31561               ISIG(NCHN,ISDE)=I
31562               ISIG(NCHN,3-ISDE)=21
31563               ISIG(NCHN,3)=1
31564               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31565  2455       CONTINUE
31566  2456     CONTINUE
31567  
31568         ELSEIF(ISUB.EQ.437) THEN
31569 C...q + q~ -> g + QQ~[3P01]
31570           IF(MSTP(145).EQ.0) THEN
31571             FACQQG=COMFAC*PARU(1)*AS**3*(128D0/243D0)*
31572      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
31573           ELSE
31574             FA=PARU(1)*AS**3*(128D0/729D0)*
31575      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
31576             IF(MSTP(147).EQ.0) THEN
31577                FACQQG=COMFAC*FA
31578             ELSEIF(MSTP(147).EQ.1) THEN
31579                FACQQG=COMFAC*2D0*FA
31580             ELSEIF(MSTP(147).EQ.3) THEN
31581                FACQQG=COMFAC*FA
31582             ELSEIF(MSTP(147).EQ.4) THEN
31583                FACQQG=COMFAC*FA
31584             ELSEIF(MSTP(147).EQ.5) THEN
31585                FACQQG=0D0
31586             ELSEIF(MSTP(147).EQ.6) THEN
31587                FACQQG=0D0
31588             ENDIF
31589           ENDIF
31590           DO 2457 I=MMINA,MMAXA
31591             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31592      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2457
31593             NCHN=NCHN+1
31594             ISIG(NCHN,1)=I
31595             ISIG(NCHN,2)=-I
31596             ISIG(NCHN,3)=1
31597             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31598  2457     CONTINUE
31599  
31600         ELSEIF(ISUB.EQ.438) THEN
31601 C...q + q~ -> g + QQ~[3P11]
31602           IF(MSTP(145).EQ.0) THEN
31603             FACQQG=COMFAC*PARU(1)*AS**3*256D0/81D0*
31604      &            (4D0*SQMQQ*TH*UH+SH*(TH2+UH2))/(SQMQQR*THUH2**2)
31605           ELSE
31606             FF=-(512D0*PARU(1)*AS**3*SQMQQR)/(81D0*THUH2**2)
31607             C1=TH*UH
31608             C2=2D0*UH
31609             C3=2D0*TH
31610             C4=2D0*THUH
31611             IF(MSTP(147).EQ.0) THEN
31612                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31613      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31614             ELSEIF(MSTP(147).EQ.1) THEN
31615                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31616      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
31617             ELSEIF(MSTP(147).EQ.3) THEN
31618                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31619      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
31620             ELSEIF(MSTP(147).EQ.4) THEN
31621                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31622      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31623             ELSEIF(MSTP(147).EQ.5) THEN
31624                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
31625      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
31626             ELSEIF(MSTP(147).EQ.6) THEN
31627                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
31628      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
31629             ENDIF
31630             FACQQG=COMFAC*FF*FACQQG
31631           ENDIF
31632           DO 2458 I=MMINA,MMAXA
31633             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31634      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2458
31635             NCHN=NCHN+1
31636             ISIG(NCHN,1)=I
31637             ISIG(NCHN,2)=-I
31638             ISIG(NCHN,3)=1
31639             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31640  2458     CONTINUE
31641  
31642         ELSEIF(ISUB.EQ.439) THEN
31643 C...q + q~ -> g + QQ~[3P21]
31644           IF(MSTP(145).EQ.0) THEN
31645             FACQQG=COMFAC*PARU(1)*AS**3*(256D0/243D0)*
31646      &            ((6D0*SQMQQ**2+SH2)*THUH2
31647      &            -2D0*TH*UH*(SH2+6D0*SQMQQ*THUH))/
31648      &            (SQMQQR*SH*THUH2**2)
31649           ELSE
31650             FF=(256D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(81D0*SH2*THUH2**2)
31651             C1=SH*THUH2
31652             C2=4D0*(SH2+UH2+2D0*SH*THUH)
31653             C3=4D0*(SH2+TH2+2D0*SH*THUH)
31654             C4=8D0*(SH2-TH*UH+2D0*SH*THUH)
31655             C5=8D0*SH
31656             C6=C5
31657             C7=16D0*SH
31658             C8=C7
31659             C9=-16D0*THUH
31660             C0=16D0*SQMQQ
31661             IF(MSTP(147).EQ.0) THEN
31662                FACQQG=1D0/3D0*(C1*3D0
31663      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
31664      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
31665      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
31666      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
31667      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
31668      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31669      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31670      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
31671      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
31672      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
31673      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
31674      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
31675             ELSEIF(MSTP(147).EQ.1) THEN
31676                FACQQG=C1*2D0
31677      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
31678      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
31679      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
31680      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
31681      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
31682      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
31683      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
31684      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
31685      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
31686      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
31687      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
31688      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
31689      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
31690             ELSEIF(MSTP(147).EQ.2) THEN
31691                FACQQG=2D0*(C1
31692      &              -C2*EL1K11*EL2K11
31693      &              -C3*EL1K21*EL2K21
31694      &              -C4*EL1K11*EL2K21
31695      &              +C5*(EL1K11*EL2K11)**2
31696      &              +C6*(EL1K21*EL2K21)**2
31697      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
31698      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
31699      &              +(C9+C0)*(EL1K11*EL2K21)**2)
31700             ENDIF
31701             FACQQG=COMFAC*FF*FACQQG
31702           ENDIF
31703           DO 2459 I=MMINA,MMAXA
31704             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31705      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2459
31706             NCHN=NCHN+1
31707             ISIG(NCHN,1)=I
31708             ISIG(NCHN,2)=-I
31709             ISIG(NCHN,3)=1
31710             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31711  2459     CONTINUE
31712         ENDIF
31713 C...QUARKONIA---
31714  
31715       ENDIF
31716  
31717       RETURN
31718       END
31719  
31720 C*********************************************************************
31721  
31722 C...PYSGWZ
31723 C...Subprocess cross sections for W/Z processes,
31724 C...except that longitudinal WW scattering is in Higgs sector.
31725 C...Auxiliary to PYSIGH.
31726  
31727       SUBROUTINE PYSGWZ(NCHN,SIGS)
31728  
31729 C...Double precision and integer declarations
31730       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31731       IMPLICIT INTEGER(I-N)
31732       INTEGER PYK,PYCHGE,PYCOMP
31733 C...Parameter statement to help give large particle numbers.
31734       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
31735      &KEXCIT=4000000,KDIMEN=5000000)
31736 C...Commonblocks
31737       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31738       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
31739       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
31740       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
31741       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31742       COMMON/PYINT1/MINT(400),VINT(400)
31743       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
31744       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
31745       COMMON/PYINT4/MWID(500),WIDS(500,5)
31746       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
31747       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
31748      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
31749      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
31750      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
31751       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
31752      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
31753 C...Local arrays and complex numbers
31754       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
31755      &HL4(3),HR4(3)
31756       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
31757  
31758 C...Differential cross section expressions.
31759  
31760       IF(ISUB.LE.20) THEN
31761         IF(ISUB.EQ.1) THEN
31762 C...f + fbar -> gamma*/Z0
31763           MINT(61)=2
31764           CALL PYWIDT(23,SH,WDTP,WDTE)
31765           HS=SHR*WDTP(0)
31766           FACZ=4D0*COMFAC*3D0
31767           HP0=AEM/3D0*SH
31768           HP1=AEM/3D0*XWC*SH
31769           DO 100 I=MMINA,MMAXA
31770             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
31771             EI=KCHG(IABS(I),1)/3D0
31772             AI=SIGN(1D0,EI)
31773             VI=AI-4D0*EI*XWV
31774             HI0=HP0
31775             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
31776             HI1=HP1
31777             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
31778             NCHN=NCHN+1
31779             ISIG(NCHN,1)=I
31780             ISIG(NCHN,2)=-I
31781             ISIG(NCHN,3)=1
31782             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
31783      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
31784      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
31785      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
31786   100     CONTINUE
31787  
31788         ELSEIF(ISUB.EQ.2) THEN
31789 C...f + fbar' -> W+/-
31790           CALL PYWIDT(24,SH,WDTP,WDTE)
31791           HS=SHR*WDTP(0)
31792           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
31793           HP=AEM/(24D0*XW)*SH
31794           DO 120 I=MMIN1,MMAX1
31795             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
31796             IA=IABS(I)
31797             DO 110 J=MMIN2,MMAX2
31798               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
31799               JA=IABS(J)
31800               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
31801               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
31802      &        GOTO 110
31803               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31804               HI=HP*2D0
31805               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
31806               NCHN=NCHN+1
31807               ISIG(NCHN,1)=I
31808               ISIG(NCHN,2)=J
31809               ISIG(NCHN,3)=1
31810               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
31811               SIGH(NCHN)=HI*FACBW*HF
31812   110       CONTINUE
31813   120     CONTINUE
31814  
31815         ELSEIF(ISUB.EQ.15) THEN
31816 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
31817           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31818 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
31819           HFGG=0D0
31820           HFGZ=0D0
31821           HFZZ=0D0
31822           RADC4=1D0+PYALPS(SQM4)/PARU(1)
31823           DO 130 I=1,MIN(16,MDCY(23,3))
31824             IDC=I+MDCY(23,2)-1
31825             IF(MDME(IDC,1).LT.0) GOTO 130
31826             IMDM=0
31827             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
31828      &      IMDM=1
31829             IF(I.LE.8) THEN
31830               EF=KCHG(I,1)/3D0
31831               AF=SIGN(1D0,EF+0.1D0)
31832               VF=AF-4D0*EF*XWV
31833             ELSEIF(I.LE.16) THEN
31834               EF=KCHG(I+2,1)/3D0
31835               AF=SIGN(1D0,EF+0.1D0)
31836               VF=AF-4D0*EF*XWV
31837             ENDIF
31838             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
31839             IF(4D0*RM1.LT.1D0) THEN
31840               FCOF=1D0
31841               IF(I.LE.8) FCOF=3D0*RADC4
31842               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
31843               IF(IMDM.EQ.1) THEN
31844                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
31845                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
31846                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
31847      &          AF**2*(1D0-4D0*RM1))*BE34
31848               ENDIF
31849             ENDIF
31850   130     CONTINUE
31851 C...Propagators: as simulated in PYOFSH and as desired
31852           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
31853           MINT15=MINT(15)
31854           MINT(15)=1
31855           MINT(61)=1
31856           CALL PYWIDT(23,SQM4,WDTP,WDTE)
31857           MINT(15)=MINT15
31858           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
31859           HFGG=HFGG*HFAEM*VINT(111)/SQM4
31860           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
31861           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
31862 C...Loop over flavours; consider full gamma/Z structure
31863           DO 140 I=MMINA,MMAXA
31864             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31865      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
31866             EI=KCHG(IABS(I),1)/3D0
31867             AI=SIGN(1D0,EI)
31868             VI=AI-4D0*EI*XWV
31869             NCHN=NCHN+1
31870             ISIG(NCHN,1)=I
31871             ISIG(NCHN,2)=-I
31872             ISIG(NCHN,3)=1
31873             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
31874      &      (VI**2+AI**2)*HFZZ)/HBW4
31875   140     CONTINUE
31876  
31877         ELSEIF(ISUB.EQ.16) THEN
31878 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
31879           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31880 C...Propagators: as simulated in PYOFSH and as desired
31881           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
31882           CALL PYWIDT(24,SQM4,WDTP,WDTE)
31883           GMMWC=SQRT(SQM4)*WDTP(0)
31884           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
31885           FACWG=FACWG*HBW4C/HBW4
31886           DO 160 I=MMIN1,MMAX1
31887             IA=IABS(I)
31888             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
31889             DO 150 J=MMIN2,MMAX2
31890               JA=IABS(J)
31891               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
31892               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
31893               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31894               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
31895               FCKM=VCKM((IA+1)/2,(JA+1)/2)
31896               NCHN=NCHN+1
31897               ISIG(NCHN,1)=I
31898               ISIG(NCHN,2)=J
31899               ISIG(NCHN,3)=1
31900               SIGH(NCHN)=FACWG*FCKM*WIDSC
31901   150       CONTINUE
31902   160     CONTINUE
31903  
31904         ELSEIF(ISUB.EQ.19) THEN
31905 C...f + fbar -> gamma + (gamma*/Z0)
31906           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31907 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
31908           HFGG=0D0
31909           HFGZ=0D0
31910           HFZZ=0D0
31911           RADC4=1D0+PYALPS(SQM4)/PARU(1)
31912           DO 170 I=1,MIN(16,MDCY(23,3))
31913             IDC=I+MDCY(23,2)-1
31914             IF(MDME(IDC,1).LT.0) GOTO 170
31915             IMDM=0
31916             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
31917      &      IMDM=1
31918             IF(I.LE.8) THEN
31919               EF=KCHG(I,1)/3D0
31920               AF=SIGN(1D0,EF+0.1D0)
31921               VF=AF-4D0*EF*XWV
31922             ELSEIF(I.LE.16) THEN
31923               EF=KCHG(I+2,1)/3D0
31924               AF=SIGN(1D0,EF+0.1D0)
31925               VF=AF-4D0*EF*XWV
31926             ENDIF
31927             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
31928             IF(4D0*RM1.LT.1D0) THEN
31929               FCOF=1D0
31930               IF(I.LE.8) FCOF=3D0*RADC4
31931               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
31932               IF(IMDM.EQ.1) THEN
31933                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
31934                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
31935                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
31936      &          AF**2*(1D0-4D0*RM1))*BE34
31937               ENDIF
31938             ENDIF
31939   170     CONTINUE
31940 C...Propagators: as simulated in PYOFSH and as desired
31941           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
31942           MINT15=MINT(15)
31943           MINT(15)=1
31944           MINT(61)=1
31945           CALL PYWIDT(23,SQM4,WDTP,WDTE)
31946           MINT(15)=MINT15
31947           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
31948           HFGG=HFGG*HFAEM*VINT(111)/SQM4
31949           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
31950           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
31951 C...Loop over flavours; consider full gamma/Z structure
31952           DO 180 I=MMINA,MMAXA
31953             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
31954             EI=KCHG(IABS(I),1)/3D0
31955             AI=SIGN(1D0,EI)
31956             VI=AI-4D0*EI*XWV
31957             FCOI=1D0
31958             IF(IABS(I).LE.10) FCOI=FACA/3D0
31959             NCHN=NCHN+1
31960             ISIG(NCHN,1)=I
31961             ISIG(NCHN,2)=-I
31962             ISIG(NCHN,3)=1
31963             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
31964      &      (VI**2+AI**2)*HFZZ)/HBW4
31965   180     CONTINUE
31966  
31967         ELSEIF(ISUB.EQ.20) THEN
31968 C...f + fbar' -> gamma + W+/-
31969           FACGW=COMFAC*0.5D0*AEM**2/XW
31970 C...Propagators: as simulated in PYOFSH and as desired
31971           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
31972           CALL PYWIDT(24,SQM4,WDTP,WDTE)
31973           GMMWC=SQRT(SQM4)*WDTP(0)
31974           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
31975           FACGW=FACGW*HBW4C/HBW4
31976 C...Anomalous couplings
31977           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
31978           TERM2=0D0
31979           TERM3=0D0
31980           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
31981             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
31982             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
31983      &      (4D0*SQMW))/(TH+UH)**2
31984           ENDIF
31985           DO 200 I=MMIN1,MMAX1
31986             IA=IABS(I)
31987             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
31988             DO 190 J=MMIN2,MMAX2
31989               JA=IABS(J)
31990               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
31991               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
31992               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
31993      &        GOTO 190
31994               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
31995               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
31996               IF(IA.LE.10) THEN
31997                 FACWR=UH/(TH+UH)-1D0/3D0
31998                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
31999                 FCOI=FACA/3D0
32000               ELSE
32001                 FACWR=-TH/(TH+UH)
32002                 FCKM=1D0
32003                 FCOI=1D0
32004               ENDIF
32005               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
32006               NCHN=NCHN+1
32007               ISIG(NCHN,1)=I
32008               ISIG(NCHN,2)=J
32009               ISIG(NCHN,3)=1
32010               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
32011   190       CONTINUE
32012   200     CONTINUE
32013         ENDIF
32014  
32015       ELSEIF(ISUB.LE.40) THEN
32016         IF(ISUB.EQ.22) THEN
32017 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
32018 C...Kinematics dependence
32019           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
32020      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
32021 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32022           DO 220 I=1,6
32023             DO 210 J=1,3
32024               HGZ(I,J)=0D0
32025   210       CONTINUE
32026   220     CONTINUE
32027           RADC3=1D0+PYALPS(SQM3)/PARU(1)
32028           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32029           DO 230 I=1,MIN(16,MDCY(23,3))
32030             IDC=I+MDCY(23,2)-1
32031             IF(MDME(IDC,1).LT.0) GOTO 230
32032             IMDM=0
32033             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
32034             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
32035             IF(I.LE.8) THEN
32036               EF=KCHG(I,1)/3D0
32037               AF=SIGN(1D0,EF+0.1D0)
32038               VF=AF-4D0*EF*XWV
32039             ELSEIF(I.LE.16) THEN
32040               EF=KCHG(I+2,1)/3D0
32041               AF=SIGN(1D0,EF+0.1D0)
32042               VF=AF-4D0*EF*XWV
32043             ENDIF
32044             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
32045             IF(4D0*RM1.LT.1D0) THEN
32046               FCOF=1D0
32047               IF(I.LE.8) FCOF=3D0*RADC3
32048               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32049               IF(IMDM.GE.1) THEN
32050                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32051                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32052                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32053      &          AF**2*(1D0-4D0*RM1))*BE34
32054               ENDIF
32055             ENDIF
32056             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32057             IF(4D0*RM1.LT.1D0) THEN
32058               FCOF=1D0
32059               IF(I.LE.8) FCOF=3D0*RADC4
32060               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32061               IF(IMDM.GE.1) THEN
32062                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32063                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32064                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32065      &          AF**2*(1D0-4D0*RM1))*BE34
32066               ENDIF
32067             ENDIF
32068   230     CONTINUE
32069 C...Propagators: as simulated in PYOFSH and as desired
32070           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
32071           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32072           MINT15=MINT(15)
32073           MINT(15)=1
32074           MINT(61)=1
32075           CALL PYWIDT(23,SQM3,WDTP,WDTE)
32076           MINT(15)=MINT15
32077           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32078           DO 240 J=1,3
32079             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
32080             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
32081             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
32082   240     CONTINUE
32083           MINT15=MINT(15)
32084           MINT(15)=1
32085           MINT(61)=1
32086           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32087           MINT(15)=MINT15
32088           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32089           DO 250 J=1,3
32090             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
32091             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
32092             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
32093   250     CONTINUE
32094 C...Loop over flavours; separate left- and right-handed couplings
32095           DO 270 I=MMINA,MMAXA
32096             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
32097             EI=KCHG(IABS(I),1)/3D0
32098             AI=SIGN(1D0,EI)
32099             VI=AI-4D0*EI*XWV
32100             VALI=VI-AI
32101             VARI=VI+AI
32102             FCOI=1D0
32103             IF(IABS(I).LE.10) FCOI=FACA/3D0
32104             DO 260 J=1,3
32105               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
32106               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
32107               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
32108               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
32109   260       CONTINUE
32110             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
32111      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
32112      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
32113      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
32114             NCHN=NCHN+1
32115             ISIG(NCHN,1)=I
32116             ISIG(NCHN,2)=-I
32117             ISIG(NCHN,3)=1
32118             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
32119   270     CONTINUE
32120  
32121         ELSEIF(ISUB.EQ.23) THEN
32122 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
32123           FACZW=COMFAC*0.5D0*(AEM/XW)**2
32124           FACZW=FACZW*WIDS(23,2)
32125           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32126           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
32127           DO 290 I=MMIN1,MMAX1
32128             IA=IABS(I)
32129             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
32130             DO 280 J=MMIN2,MMAX2
32131               JA=IABS(J)
32132               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
32133               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
32134               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32135      &        GOTO 280
32136               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32137               EI=KCHG(IA,1)/3D0
32138               AI=SIGN(1D0,EI+0.1D0)
32139               VI=AI-4D0*EI*XWV
32140               EJ=KCHG(JA,1)/3D0
32141               AJ=SIGN(1D0,EJ+0.1D0)
32142               VJ=AJ-4D0*EJ*XWV
32143               IF(VI+AI.GT.0) THEN
32144                 VISAV=VI
32145                 AISAV=AI
32146                 VI=VJ
32147                 AI=AJ
32148                 VJ=VISAV
32149                 AJ=AISAV
32150               ENDIF
32151               FCKM=1D0
32152               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
32153               FCOI=1D0
32154               IF(IA.LE.10) FCOI=FACA/3D0
32155               NCHN=NCHN+1
32156               ISIG(NCHN,1)=I
32157               ISIG(NCHN,2)=J
32158               ISIG(NCHN,3)=1
32159               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
32160      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
32161      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
32162      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
32163      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
32164      &        WIDS(24,(5-KCHW)/2)
32165 C***Protect against slightly negative cross sections. (Reason yet to be
32166 C***sorted out. One possibility: addition of width to the W propagator.)
32167               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
32168   280       CONTINUE
32169   290     CONTINUE
32170  
32171         ELSEIF(ISUB.EQ.25) THEN
32172 C...f + fbar -> W+ + W-
32173 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
32174           GMMZC=GMMZ
32175           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
32176           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
32177           CALL PYWIDT(24,SQM3,WDTP,WDTE)
32178           GMMW3=SQRT(SQM3)*WDTP(0)
32179           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
32180           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32181           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32182           GMMW4=SQRT(SQM4)*WDTP(0)
32183           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
32184 C...Kinematical functions
32185           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32186           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
32187           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
32188           GT=THUH34+4D0*THUH/TH2
32189           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
32190           GU=THUH34+4D0*THUH/UH2
32191           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
32192 C...Common factors and couplings
32193           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
32194           FACWW=FACWW*WIDS(24,1)
32195           CGG=AEM**2/2D0
32196           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
32197           CZZ=AEM**2/(32D0*XW**2)*HBWZC
32198           CNG=AEM**2/(4D0*XW)
32199           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
32200           CNN=AEM**2/(16D0*XW**2)
32201 C...Coulomb factor for W+W- pair
32202           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
32203             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
32204             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
32205             IF(COULE.LT.100D0*PMAS(24,2)) THEN
32206               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32207      &        PMAS(24,2)**2)-COULE))
32208             ELSE
32209               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
32210             ENDIF
32211             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
32212               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32213      &        PMAS(24,2)**2)+COULE))
32214             ELSE
32215               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
32216      &        ABS(COULE)))
32217             ENDIF
32218             IF(MSTP(40).EQ.1) THEN
32219               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
32220      &        MAX(1D-10,2D0*COULP*COULP1))
32221               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32222             ELSEIF(MSTP(40).EQ.2) THEN
32223               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
32224               COULCP=DCMPLX(0D0,DBLE(COULP))
32225               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
32226               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
32227      &        (4D0*COULCP)*LOG(COULCD)
32228               COULCS=DCMPLX(0D0,0D0)
32229               NSTP=100
32230               DO 300 ISTP=1,NSTP
32231                 COULXX=(ISTP-0.5)/NSTP
32232                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
32233      &          (1D0+COULXX/COULCD))
32234   300         CONTINUE
32235               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
32236      &        (COULCS/NSTP)
32237               FACCOU=ABS(COULCR)**2
32238             ELSEIF(MSTP(40).EQ.3) THEN
32239               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
32240      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
32241               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32242             ENDIF
32243           ELSEIF(MSTP(40).EQ.4) THEN
32244             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
32245           ELSE
32246             FACCOU=1D0
32247           ENDIF
32248           VINT(95)=FACCOU
32249           FACWW=FACWW*FACCOU
32250 C...Loop over allowed flavours
32251           DO 310 I=MMINA,MMAXA
32252             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
32253             EI=KCHG(IABS(I),1)/3D0
32254             AI=SIGN(1D0,EI+0.1D0)
32255             VI=AI-4D0*EI*XWV
32256             FCOI=1D0
32257             IF(IABS(I).LE.10) FCOI=FACA/3D0
32258             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
32259               IF(AI.LT.0D0) THEN
32260                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
32261      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
32262               ELSE
32263                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
32264      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
32265               ENDIF
32266             ELSE
32267               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
32268               BET=SQRT(1D0-4D0*XMW02/SH)
32269               GAT=1D0/SQRT(1D0-BET**2)
32270               STHE2=1D0-CTH**2
32271               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
32272               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
32273      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
32274               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
32275      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
32276      &        (1D0-2D0*BET*CTH+BET**2))
32277               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
32278               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
32279               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
32280               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
32281               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
32282               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
32283               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
32284               DSIGWW=ATOT
32285             ENDIF
32286             NCHN=NCHN+1
32287             ISIG(NCHN,1)=I
32288             ISIG(NCHN,2)=-I
32289             ISIG(NCHN,3)=1
32290             SIGH(NCHN)=FACWW*FCOI*DSIGWW
32291   310     CONTINUE
32292  
32293         ELSEIF(ISUB.EQ.30) THEN
32294 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
32295           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
32296      &    (-SH*UH)
32297 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32298           HFGG=0D0
32299           HFGZ=0D0
32300           HFZZ=0D0
32301           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32302           DO 320 I=1,MIN(16,MDCY(23,3))
32303             IDC=I+MDCY(23,2)-1
32304             IF(MDME(IDC,1).LT.0) GOTO 320
32305             IMDM=0
32306             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32307      &      IMDM=1
32308             IF(I.LE.8) THEN
32309               EF=KCHG(I,1)/3D0
32310               AF=SIGN(1D0,EF+0.1D0)
32311               VF=AF-4D0*EF*XWV
32312             ELSEIF(I.LE.16) THEN
32313               EF=KCHG(I+2,1)/3D0
32314               AF=SIGN(1D0,EF+0.1D0)
32315               VF=AF-4D0*EF*XWV
32316             ENDIF
32317             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32318             IF(4D0*RM1.LT.1D0) THEN
32319               FCOF=1D0
32320               IF(I.LE.8) FCOF=3D0*RADC4
32321               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32322               IF(IMDM.EQ.1) THEN
32323                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32324                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32325                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32326      &          AF**2*(1D0-4D0*RM1))*BE34
32327               ENDIF
32328             ENDIF
32329   320     CONTINUE
32330 C...Propagators: as simulated in PYOFSH and as desired
32331           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32332           MINT15=MINT(15)
32333           MINT(15)=1
32334           MINT(61)=1
32335           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32336           MINT(15)=MINT15
32337           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32338           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32339           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32340           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32341 C...Loop over flavours; consider full gamma/Z structure
32342           DO 340 I=MMINA,MMAXA
32343             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
32344             EI=KCHG(IABS(I),1)/3D0
32345             AI=SIGN(1D0,EI)
32346             VI=AI-4D0*EI*XWV
32347             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
32348      &      (VI**2+AI**2)*HFZZ)/HBW4
32349             DO 330 ISDE=1,2
32350               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
32351               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
32352               NCHN=NCHN+1
32353               ISIG(NCHN,ISDE)=I
32354               ISIG(NCHN,3-ISDE)=21
32355               ISIG(NCHN,3)=1
32356               SIGH(NCHN)=FACZQ
32357   330       CONTINUE
32358   340     CONTINUE
32359  
32360         ELSEIF(ISUB.EQ.31) THEN
32361 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
32362           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
32363      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
32364 C...Propagators: as simulated in PYOFSH and as desired
32365           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32366           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32367           GMMWC=SQRT(SQM4)*WDTP(0)
32368           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32369           FACWQ=FACWQ*HBW4C/HBW4
32370           DO 360 I=MMINA,MMAXA
32371             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
32372             IA=IABS(I)
32373             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
32374             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32375             DO 350 ISDE=1,2
32376               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
32377               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
32378               NCHN=NCHN+1
32379               ISIG(NCHN,ISDE)=I
32380               ISIG(NCHN,3-ISDE)=21
32381               ISIG(NCHN,3)=1
32382               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
32383   350       CONTINUE
32384   360     CONTINUE
32385  
32386         ELSEIF(ISUB.EQ.35) THEN
32387 C...f + gamma -> f + (gamma*/Z0)
32388           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
32389             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
32390             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
32391           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
32392             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
32393             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
32394           ELSE
32395             FZQN=SH2+UH2+2D0*SQM4*TH
32396             FZQDTM=-SH*UH
32397           ENDIF
32398           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
32399 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32400           HFGG=0D0
32401           HFGZ=0D0
32402           HFZZ=0D0
32403           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32404           DO 370 I=1,MIN(16,MDCY(23,3))
32405             IDC=I+MDCY(23,2)-1
32406             IF(MDME(IDC,1).LT.0) GOTO 370
32407             IMDM=0
32408             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32409      &      IMDM=1
32410             IF(I.LE.8) THEN
32411               EF=KCHG(I,1)/3D0
32412               AF=SIGN(1D0,EF+0.1D0)
32413               VF=AF-4D0*EF*XWV
32414             ELSEIF(I.LE.16) THEN
32415               EF=KCHG(I+2,1)/3D0
32416               AF=SIGN(1D0,EF+0.1D0)
32417               VF=AF-4D0*EF*XWV
32418             ENDIF
32419             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32420             IF(4D0*RM1.LT.1D0) THEN
32421               FCOF=1D0
32422               IF(I.LE.8) FCOF=3D0*RADC4
32423               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32424               IF(IMDM.EQ.1) THEN
32425                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32426                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32427                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32428      &          AF**2*(1D0-4D0*RM1))*BE34
32429               ENDIF
32430             ENDIF
32431   370     CONTINUE
32432 C...Propagators: as simulated in PYOFSH and as desired
32433           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32434           MINT15=MINT(15)
32435           MINT(15)=1
32436           MINT(61)=1
32437           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32438           MINT(15)=MINT15
32439           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32440           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32441           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32442           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32443 C...Loop over flavours; consider full gamma/Z structure
32444           DO 390 I=MMINA,MMAXA
32445             IF(I.EQ.0) GOTO 390
32446             EI=KCHG(IABS(I),1)/3D0
32447             AI=SIGN(1D0,EI)
32448             VI=AI-4D0*EI*XWV
32449             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
32450      &      (VI**2+AI**2)*HFZZ)/HBW4
32451             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
32452             DO 380 ISDE=1,2
32453               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
32454               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
32455               NCHN=NCHN+1
32456               ISIG(NCHN,ISDE)=I
32457               ISIG(NCHN,3-ISDE)=22
32458               ISIG(NCHN,3)=1
32459               SIGH(NCHN)=FACZQ*FZQN/FZQD
32460   380       CONTINUE
32461   390     CONTINUE
32462  
32463         ELSEIF(ISUB.EQ.36) THEN
32464 C...f + gamma -> f' + W+/-
32465           FWQ=COMFAC*AEM**2/(2D0*XW)*
32466      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
32467 C...Propagators: as simulated in PYOFSH and as desired
32468           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32469           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32470           GMMWC=SQRT(SQM4)*WDTP(0)
32471           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32472           FWQ=FWQ*HBW4C/HBW4
32473           DO 410 I=MMINA,MMAXA
32474             IF(I.EQ.0) GOTO 410
32475             IA=IABS(I)
32476             EIA=ABS(KCHG(IABS(I),1)/3D0)
32477             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
32478             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
32479             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32480             DO 400 ISDE=1,2
32481               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
32482               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
32483               NCHN=NCHN+1
32484               ISIG(NCHN,ISDE)=I
32485               ISIG(NCHN,3-ISDE)=22
32486               ISIG(NCHN,3)=1
32487               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
32488   400       CONTINUE
32489   410     CONTINUE
32490         ENDIF
32491  
32492       ELSEIF(ISUB.LE.100) THEN
32493         IF(ISUB.EQ.69) THEN
32494 C...gamma + gamma -> W+ + W-
32495           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
32496           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
32497           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
32498      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
32499           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
32500           NCHN=NCHN+1
32501           ISIG(NCHN,1)=22
32502           ISIG(NCHN,2)=22
32503           ISIG(NCHN,3)=1
32504           SIGH(NCHN)=FACWW
32505   420     CONTINUE
32506  
32507         ELSEIF(ISUB.EQ.70) THEN
32508 C...gamma + W+/- -> Z0 + W+/-
32509           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
32510           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
32511           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
32512      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
32513      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
32514           DO 440 KCHW=1,-1,-2
32515             DO 430 ISDE=1,2
32516               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
32517               NCHN=NCHN+1
32518               ISIG(NCHN,ISDE)=22
32519               ISIG(NCHN,3-ISDE)=24*KCHW
32520               ISIG(NCHN,3)=1
32521               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
32522   430       CONTINUE
32523   440     CONTINUE
32524         ENDIF
32525       ENDIF
32526  
32527       RETURN
32528       END
32529  
32530 C*********************************************************************
32531  
32532 C...PYSGHG
32533 C...Subprocess cross sections for Higgs processes,
32534 C...except Higgs pairs in PYSGSU, but including WW scattering.
32535 C...Auxiliary to PYSIGH.
32536  
32537       SUBROUTINE PYSGHG(NCHN,SIGS)
32538  
32539 C...Double precision and integer declarations
32540       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32541       IMPLICIT INTEGER(I-N)
32542       INTEGER PYK,PYCHGE,PYCOMP
32543 C...Parameter statement to help give large particle numbers.
32544       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32545      &KEXCIT=4000000,KDIMEN=5000000)
32546 C...Commonblocks
32547       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32548       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32549       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
32550       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
32551       COMMON/PYINT1/MINT(400),VINT(400)
32552       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
32553       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
32554       COMMON/PYINT4/MWID(500),WIDS(500,5)
32555       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
32556       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
32557       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
32558      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
32559      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
32560      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
32561       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
32562      &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
32563 C...Local arrays and complex variables
32564       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
32565       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
32566       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
32567  
32568 C...Convert H or A process into equivalent h one
32569       IHIGG=1
32570       KFHIGG=25
32571       IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN
32572          KFHIGG=KFPR(ISUB,1)
32573       END IF
32574       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
32575      &ISUB.LE.190)) THEN
32576         IHIGG=2
32577         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
32578         KFHIGG=33+IHIGG
32579         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
32580         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
32581         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
32582         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
32583         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
32584         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
32585         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
32586         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
32587         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
32588         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
32589         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
32590         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
32591       ENDIF
32592       SQMH=PMAS(KFHIGG,1)**2
32593       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
32594  
32595 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32596       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
32597      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
32598 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
32599         IF(MSTP(46).LE.4) THEN
32600           HDTLH=LOG(PMAS(25,1)/PARP(44))
32601           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
32602           HDTNR=-1D0/18D0+HDTLH/6D0
32603         ELSE
32604           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
32605           HDTLQ=LOG(PARP(45)/PARP(44))
32606           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
32607           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
32608         ENDIF
32609  
32610 C...Calculate lowest and next-to-lowest order partial wave amplitudes
32611         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
32612         A00L=DBLE(HDTV*SH)
32613         A20L=-0.5D0*A00L
32614         A11L=A00L/6D0
32615         HDTLS=LOG(SH/PARP(44)**2)
32616         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
32617      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
32618      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
32619         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
32620      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
32621      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
32622         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
32623      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
32624  
32625 C...Unitarize partial wave amplitudes with Pade or K-matrix method
32626         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
32627           A00U=A00L/(1D0-A004/A00L)
32628           A20U=A20L/(1D0-A204/A20L)
32629           A11U=A11L/(1D0-A114/A11L)
32630         ELSE
32631           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
32632           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
32633           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
32634         ENDIF
32635       ENDIF
32636  
32637 C...Differential cross section expressions.
32638  
32639       IF(ISUB.LE.60) THEN
32640         IF(ISUB.EQ.3) THEN
32641 C...f + fbar -> h0 (or H0, or A0)
32642           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
32643           HS=SHR*WDTP(0)
32644           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32645           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
32646      &    FACBW=0D0
32647           HP=AEM/(8D0*XW)*SH/SQMW*SH
32648           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32649           DO 100 I=MMINA,MMAXA
32650             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
32651             IA=IABS(I)
32652             RMQ=PYMRUN(IA,SH)**2/SH
32653             HI=HP*RMQ
32654             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
32655             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
32656               IKFI=1
32657               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
32658               IF(IA.GT.10) IKFI=3
32659               HI=HI*PARU(150+10*IHIGG+IKFI)**2
32660               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
32661                 HI=HI/(1D0+RMSS(41))**2
32662                 IF(IHIGG.NE.3) THEN
32663                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
32664      &            PARU(151+10*IHIGG))**2
32665                 ENDIF
32666               ENDIF
32667             ENDIF
32668             NCHN=NCHN+1
32669             ISIG(NCHN,1)=I
32670             ISIG(NCHN,2)=-I
32671             ISIG(NCHN,3)=1
32672             SIGH(NCHN)=HI*FACBW*HF
32673   100     CONTINUE
32674  
32675         ELSEIF(ISUB.EQ.5) THEN
32676 C...Z0 + Z0 -> h0
32677           CALL PYWIDT(25,SH,WDTP,WDTE)
32678           HS=SHR*WDTP(0)
32679           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32680           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
32681           HP=AEM/(8D0*XW)*SH/SQMW*SH
32682           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32683           HI=HP/4D0
32684           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
32685           DO 120 I=MMIN1,MMAX1
32686             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
32687             DO 110 J=MMIN2,MMAX2
32688               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
32689               EI=KCHG(IABS(I),1)/3D0
32690               AI=SIGN(1D0,EI)
32691               VI=AI-4D0*EI*XWV
32692               EJ=KCHG(IABS(J),1)/3D0
32693               AJ=SIGN(1D0,EJ)
32694               VJ=AJ-4D0*EJ*XWV
32695               NCHN=NCHN+1
32696               ISIG(NCHN,1)=I
32697               ISIG(NCHN,2)=J
32698               ISIG(NCHN,3)=1
32699               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
32700   110       CONTINUE
32701   120     CONTINUE
32702  
32703         ELSEIF(ISUB.EQ.8) THEN
32704 C...W+ + W- -> h0
32705           CALL PYWIDT(25,SH,WDTP,WDTE)
32706           HS=SHR*WDTP(0)
32707           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
32708           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
32709           HP=AEM/(8D0*XW)*SH/SQMW*SH
32710           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
32711           HI=HP/2D0
32712           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
32713           DO 140 I=MMIN1,MMAX1
32714             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
32715             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
32716             DO 130 J=MMIN2,MMAX2
32717               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
32718               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
32719               IF(EI*EJ.GT.0D0) GOTO 130
32720               NCHN=NCHN+1
32721               ISIG(NCHN,1)=I
32722               ISIG(NCHN,2)=J
32723               ISIG(NCHN,3)=1
32724               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
32725   130       CONTINUE
32726   140     CONTINUE
32727  
32728         ELSEIF(ISUB.EQ.24) THEN
32729 C...f + fbar -> Z0 + h0 (or H0, or A0)
32730 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
32731           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
32732           CALL PYWIDT(23,SQM3,WDTP,WDTE)
32733           GMMZ3=SQRT(SQM3)*WDTP(0)
32734           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
32735           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
32736           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
32737           GMMH4=SQRT(SQM4)*WDTP(0)
32738           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
32739           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32740           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
32741      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
32742           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
32743           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
32744      &    PARU(154+10*IHIGG)**2
32745           DO 150 I=MMINA,MMAXA
32746             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
32747             EI=KCHG(IABS(I),1)/3D0
32748             AI=SIGN(1D0,EI)
32749             VI=AI-4D0*EI*XWV
32750             FCOI=1D0
32751             IF(IABS(I).LE.10) FCOI=FACA/3D0
32752             NCHN=NCHN+1
32753             ISIG(NCHN,1)=I
32754             ISIG(NCHN,2)=-I
32755             ISIG(NCHN,3)=1
32756             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
32757   150     CONTINUE
32758  
32759         ELSEIF(ISUB.EQ.26) THEN
32760 C...f + fbar' -> W+/- + h0 (or H0, or A0)
32761 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
32762           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
32763           CALL PYWIDT(24,SQM3,WDTP,WDTE)
32764           GMMW3=SQRT(SQM3)*WDTP(0)
32765           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
32766           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
32767           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
32768           GMMH4=SQRT(SQM4)*WDTP(0)
32769           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
32770           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32771           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
32772      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
32773           FACHW=FACHW*WIDS(KFHIGG,2)
32774           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
32775      &    PARU(155+10*IHIGG)**2
32776           DO 170 I=MMIN1,MMAX1
32777             IA=IABS(I)
32778             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
32779             DO 160 J=MMIN2,MMAX2
32780               JA=IABS(J)
32781               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
32782               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
32783               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32784      &        GOTO 160
32785               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32786               FCKM=1D0
32787               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
32788               FCOI=1D0
32789               IF(IA.LE.10) FCOI=FACA/3D0
32790               NCHN=NCHN+1
32791               ISIG(NCHN,1)=I
32792               ISIG(NCHN,2)=J
32793               ISIG(NCHN,3)=1
32794               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
32795   160       CONTINUE
32796   170     CONTINUE
32797  
32798         ELSEIF(ISUB.EQ.32) THEN
32799 C...f + g -> f + h0 (q + g -> q + h0 only)
32800           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
32801 C...H propagator: as simulated in PYOFSH and as desired
32802           SQMHC=PMAS(25,1)**2
32803           GMMHC=PMAS(25,1)*PMAS(25,2)
32804           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
32805           CALL PYWIDT(25,SQM4,WDTP,WDTE)
32806           GMMHCC=SQRT(SQM4)*WDTP(0)
32807           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
32808           FHCQ=FHCQ*HBW4C/HBW4
32809           DO 190 I=MMINA,MMAXA
32810             IA=IABS(I)
32811             IF(IA.NE.5) GOTO 190
32812             SQML=PYMRUN(IA,SH)**2
32813             SQMQ=PMAS(IA,1)**2
32814             FACHCQ=FHCQ*SQML/SQMW*
32815      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
32816      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)*
32817      &      (SQM4-SQMQ-SH)/SH)
32818             DO 180 ISDE=1,2
32819               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
32820               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
32821               NCHN=NCHN+1
32822               ISIG(NCHN,ISDE)=I
32823               ISIG(NCHN,3-ISDE)=21
32824               ISIG(NCHN,3)=1
32825               SIGH(NCHN)=FACHCQ*WIDS(25,2)
32826   180       CONTINUE
32827   190     CONTINUE
32828         ENDIF
32829  
32830       ELSEIF(ISUB.LE.80) THEN
32831         IF(ISUB.EQ.71) THEN
32832 C...Z0 + Z0 -> Z0 + Z0
32833           IF(SH.LE.4.01D0*SQMZ) GOTO 220
32834  
32835           IF(MSTP(46).LE.2) THEN
32836 C...Exact scattering ME:s for on-mass-shell gauge bosons
32837             BE2=1D0-4D0*SQMZ/SH
32838             TH=-0.5D0*SH*BE2*(1D0-CTH)
32839             UH=-0.5D0*SH*BE2*(1D0+CTH)
32840             IF(MAX(TH,UH).GT.-1D0) GOTO 220
32841             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
32842             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
32843             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
32844             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
32845             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
32846             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
32847             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
32848             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
32849             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
32850             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
32851      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
32852             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
32853             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
32854      &      (ASHIM+ATHIM+AUHIM)**2)
32855             IF(MSTP(46).EQ.2) FACZZ=0D0
32856  
32857           ELSE
32858 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32859             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
32860      &      ABS(A00U+2D0*A20U)**2
32861           ENDIF
32862           FACZZ=FACZZ*WIDS(23,1)
32863  
32864           DO 210 I=MMIN1,MMAX1
32865             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
32866             EI=KCHG(IABS(I),1)/3D0
32867             AI=SIGN(1D0,EI)
32868             VI=AI-4D0*EI*XWV
32869             AVI=AI**2+VI**2
32870             DO 200 J=MMIN2,MMAX2
32871               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
32872               EJ=KCHG(IABS(J),1)/3D0
32873               AJ=SIGN(1D0,EJ)
32874               VJ=AJ-4D0*EJ*XWV
32875               AVJ=AJ**2+VJ**2
32876               NCHN=NCHN+1
32877               ISIG(NCHN,1)=I
32878               ISIG(NCHN,2)=J
32879               ISIG(NCHN,3)=1
32880               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
32881   200       CONTINUE
32882   210     CONTINUE
32883   220     CONTINUE
32884  
32885         ELSEIF(ISUB.EQ.72) THEN
32886 C...Z0 + Z0 -> W+ + W-
32887           IF(SH.LE.4.01D0*SQMZ) GOTO 250
32888  
32889           IF(MSTP(46).LE.2) THEN
32890 C...Exact scattering ME:s for on-mass-shell gauge bosons
32891             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
32892             CTH2=CTH**2
32893             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
32894             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
32895             IF(MAX(TH,UH).GT.-1D0) GOTO 250
32896             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
32897      &      (1D0-2D0*SQMZ/SH)
32898             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
32899             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
32900             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
32901      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
32902      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
32903      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
32904      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
32905             ATWIM=0D0
32906             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
32907      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
32908      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
32909      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
32910      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
32911             AUWIM=0D0
32912             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
32913             A4IM=0D0
32914             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
32915      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
32916             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
32917             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
32918      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
32919             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
32920      &      (ATWIM+AUWIM+A4IM)**2)
32921  
32922           ELSE
32923 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32924             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
32925      &      ABS(A00U-A20U)**2
32926           ENDIF
32927           FACWW=FACWW*WIDS(24,1)
32928  
32929           DO 240 I=MMIN1,MMAX1
32930             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
32931             EI=KCHG(IABS(I),1)/3D0
32932             AI=SIGN(1D0,EI)
32933             VI=AI-4D0*EI*XWV
32934             AVI=AI**2+VI**2
32935             DO 230 J=MMIN2,MMAX2
32936               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
32937               EJ=KCHG(IABS(J),1)/3D0
32938               AJ=SIGN(1D0,EJ)
32939               VJ=AJ-4D0*EJ*XWV
32940               AVJ=AJ**2+VJ**2
32941               NCHN=NCHN+1
32942               ISIG(NCHN,1)=I
32943               ISIG(NCHN,2)=J
32944               ISIG(NCHN,3)=1
32945               SIGH(NCHN)=FACWW*AVI*AVJ
32946   230       CONTINUE
32947   240     CONTINUE
32948   250     CONTINUE
32949  
32950         ELSEIF(ISUB.EQ.73) THEN
32951 C...Z0 + W+/- -> Z0 + W+/-
32952           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
32953  
32954           IF(MSTP(46).LE.2) THEN
32955 C...Exact scattering ME:s for on-mass-shell gauge bosons
32956             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
32957             EP1=1D0-(SQMZ-SQMW)/SH
32958             EP2=1D0+(SQMZ-SQMW)/SH
32959             TH=-0.5D0*SH*BE2*(1D0-CTH)
32960             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
32961             IF(MAX(TH,UH).GT.-1D0) GOTO 280
32962             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
32963             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
32964             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
32965             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
32966      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
32967      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
32968      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
32969             ASWIM=0D0
32970             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
32971      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
32972      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
32973      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
32974      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
32975      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
32976      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
32977      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
32978      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
32979      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
32980      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
32981      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
32982             AUWIM=0D0
32983             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
32984      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
32985             A4IM=0D0
32986             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
32987      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
32988             IF(MSTP(46).LE.0) FACZW=0D0
32989             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
32990      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
32991             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
32992      &      (ASWIM+AUWIM+A4IM)**2)
32993  
32994           ELSE
32995 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
32996             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
32997      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
32998           ENDIF
32999           FACZW=FACZW*WIDS(23,2)
33000  
33001           DO 270 I=MMIN1,MMAX1
33002             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
33003             EI=KCHG(IABS(I),1)/3D0
33004             AI=SIGN(1D0,EI)
33005             VI=AI-4D0*EI*XWV
33006             AVI=AI**2+VI**2
33007             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
33008             DO 260 J=MMIN2,MMAX2
33009               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
33010               EJ=KCHG(IABS(J),1)/3D0
33011               AJ=SIGN(1D0,EJ)
33012               VJ=AI-4D0*EJ*XWV
33013               AVJ=AJ**2+VJ**2
33014               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
33015               NCHN=NCHN+1
33016               ISIG(NCHN,1)=I
33017               ISIG(NCHN,2)=J
33018               ISIG(NCHN,3)=1
33019               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
33020               NCHN=NCHN+1
33021               ISIG(NCHN,1)=I
33022               ISIG(NCHN,2)=J
33023               ISIG(NCHN,3)=2
33024               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
33025   260       CONTINUE
33026   270     CONTINUE
33027   280     CONTINUE
33028  
33029         ELSEIF(ISUB.EQ.75) THEN
33030 C...W+ + W- -> gamma + gamma
33031  
33032         ELSEIF(ISUB.EQ.76) THEN
33033 C...W+ + W- -> Z0 + Z0
33034           IF(SH.LE.4.01D0*SQMZ) GOTO 310
33035  
33036           IF(MSTP(46).LE.2) THEN
33037 C...Exact scattering ME:s for on-mass-shell gauge bosons
33038             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
33039             CTH2=CTH**2
33040             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
33041             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
33042             IF(MAX(TH,UH).GT.-1D0) GOTO 310
33043             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
33044      &      (1D0-2D0*SQMZ/SH)
33045             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33046             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33047             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
33048      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33049      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33050      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
33051      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33052             ATWIM=0D0
33053             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
33054      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33055      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33056      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
33057      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33058             AUWIM=0D0
33059             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
33060             A4IM=0D0
33061             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33062      &      (SH/SQMW)**2*SH2
33063             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
33064             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
33065      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
33066             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
33067      &      (ATWIM+AUWIM+A4IM)**2)
33068  
33069           ELSE
33070 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33071             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33072      &      ABS(A00U-A20U)**2
33073           ENDIF
33074           FACZZ=FACZZ*WIDS(23,1)
33075  
33076           DO 300 I=MMIN1,MMAX1
33077             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
33078             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33079             DO 290 J=MMIN2,MMAX2
33080               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
33081               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33082               IF(EI*EJ.GT.0D0) GOTO 290
33083               NCHN=NCHN+1
33084               ISIG(NCHN,1)=I
33085               ISIG(NCHN,2)=J
33086               ISIG(NCHN,3)=1
33087               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
33088   290       CONTINUE
33089   300     CONTINUE
33090   310     CONTINUE
33091  
33092         ELSEIF(ISUB.EQ.77) THEN
33093 C...W+/- + W+/- -> W+/- + W+/-
33094           IF(SH.LE.4.01D0*SQMW) GOTO 340
33095  
33096           IF(MSTP(46).LE.2) THEN
33097 C...Exact scattering ME:s for on-mass-shell gauge bosons
33098             BE2=1D0-4D0*SQMW/SH
33099             BE4=BE2**2
33100             CTH2=CTH**2
33101             CTH3=CTH**3
33102             TH=-0.5D0*SH*BE2*(1D0-CTH)
33103             UH=-0.5D0*SH*BE2*(1D0+CTH)
33104             IF(MAX(TH,UH).GT.-1D0) GOTO 340
33105             SHANG=(1D0+BE2)**2
33106             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33107             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33108             THANG=(BE2-CTH)**2
33109             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
33110             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
33111             UHANG=(BE2+CTH)**2
33112             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
33113             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
33114             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
33115             ASGRE=XW*SGZANG
33116             ASGIM=0D0
33117             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
33118             ASZIM=0D0
33119             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
33120      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
33121             ATGRE=0.5D0*XW*SH/TH*TGZANG
33122             ATGIM=0D0
33123             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
33124             ATZIM=0D0
33125             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
33126      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
33127             AUGRE=0.5D0*XW*SH/UH*UGZANG
33128             AUGIM=0D0
33129             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
33130             AUZIM=0D0
33131             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
33132             A4AIM=0D0
33133             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
33134             A4SIM=0D0
33135             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33136      &      (SH/SQMW)**2*SH2
33137             IF(MSTP(46).LE.0) THEN
33138               AWWARE=ASHRE
33139               AWWAIM=ASHIM
33140               AWWSRE=0D0
33141               AWWSIM=0D0
33142             ELSEIF(MSTP(46).EQ.1) THEN
33143               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33144               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33145               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33146               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33147             ELSE
33148               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33149               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33150               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33151               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33152             ENDIF
33153             AWWA2=AWWARE**2+AWWAIM**2
33154             AWWS2=AWWSRE**2+AWWSIM**2
33155  
33156           ELSE
33157 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33158             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33159      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
33160             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
33161           ENDIF
33162  
33163           DO 330 I=MMIN1,MMAX1
33164             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
33165             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33166             DO 320 J=MMIN2,MMAX2
33167               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
33168               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33169               IF(EI*EJ.LT.0D0) THEN
33170 C...W+W-
33171                 IF(MSTP(45).EQ.1) GOTO 320
33172                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
33173                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
33174               ELSE
33175 C...W+W+/W-W-
33176                 IF(MSTP(45).EQ.2) GOTO 320
33177                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
33178                 IF(MSTP(46).GE.3) FACWW=FWWS
33179                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
33180                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
33181               ENDIF
33182               NCHN=NCHN+1
33183               ISIG(NCHN,1)=I
33184               ISIG(NCHN,2)=J
33185               ISIG(NCHN,3)=1
33186               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
33187               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
33188   320       CONTINUE
33189   330     CONTINUE
33190   340     CONTINUE
33191         ENDIF
33192  
33193       ELSEIF(ISUB.LE.120) THEN
33194         IF(ISUB.EQ.102) THEN
33195 C...g + g -> h0 (or H0, or A0)
33196           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33197           WDTP13=0D0
33198           DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33199             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33200      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33201   345     CONTINUE
33202           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33203      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33204           HS=SHR*WDTP(0)
33205           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33206           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33207           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33208      &    FACBW=0D0
33209           HI=SHR*WDTP13/32D0
33210           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
33211           NCHN=NCHN+1
33212           ISIG(NCHN,1)=21
33213           ISIG(NCHN,2)=21
33214           ISIG(NCHN,3)=1
33215           SIGH(NCHN)=HI*FACBW*HF
33216   350     CONTINUE
33217  
33218         ELSEIF(ISUB.EQ.103) THEN
33219 C...gamma + gamma -> h0 (or H0, or A0)
33220           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33221           WDTP14=0D0
33222           DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33223             IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND.
33224      &      KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC)
33225   355     CONTINUE
33226           IF(WDTP14.EQ.0D0) CALL PYERRM(26,
33227      &    '(PYSGHG:) did not find Higgs -> gamma gamma channel')  
33228           HS=SHR*WDTP(0)
33229           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33230           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33231           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33232      &    FACBW=0D0
33233           HI=SHR*WDTP14*2D0
33234           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
33235           NCHN=NCHN+1
33236           ISIG(NCHN,1)=22
33237           ISIG(NCHN,2)=22
33238           ISIG(NCHN,3)=1
33239           SIGH(NCHN)=HI*FACBW*HF
33240   360     CONTINUE
33241  
33242         ELSEIF(ISUB.EQ.110) THEN
33243 C...f + fbar -> gamma + h0
33244           THUH=MAX(TH*UH,SH*CKIN(3)**2)
33245           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
33246           FACHG=FACHG*WIDS(KFHIGG,2)
33247 C...Calculate loop contributions for intermediate gamma* and Z0
33248           CIGTOT=DCMPLX(0D0,0D0)
33249           CIZTOT=DCMPLX(0D0,0D0)
33250           JMAX=3*MSTP(1)+1
33251           DO 370 J=1,JMAX
33252             IF(J.LE.2*MSTP(1)) THEN
33253               FNC=1D0
33254               EJ=KCHG(J,1)/3D0
33255               AJ=SIGN(1D0,EJ+0.1D0)
33256               VJ=AJ-4D0*EJ*XWV
33257               BALP=SQM4/(2D0*PMAS(J,1))**2
33258               BBET=SH/(2D0*PMAS(J,1))**2
33259             ELSEIF(J.LE.3*MSTP(1)) THEN
33260               FNC=3D0
33261               JL=2*(J-2*MSTP(1))-1
33262               EJ=KCHG(10+JL,1)/3D0
33263               AJ=SIGN(1D0,EJ+0.1D0)
33264               VJ=AJ-4D0*EJ*XWV
33265               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
33266               BBET=SH/(2D0*PMAS(10+JL,1))**2
33267             ELSE
33268               BALP=SQM4/(2D0*PMAS(24,1))**2
33269               BBET=SH/(2D0*PMAS(24,1))**2
33270             ENDIF
33271             BABI=1D0/(BALP-BBET)
33272             IF(BALP.LT.1D0) THEN
33273               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
33274               F1ALP=F0ALP**2
33275             ELSE
33276               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
33277      &        -DBLE(0.5D0*PARU(1)))
33278               F1ALP=-F0ALP**2
33279             ENDIF
33280             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
33281             IF(BBET.LT.1D0) THEN
33282               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
33283               F1BET=F0BET**2
33284             ELSE
33285               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
33286      &        -DBLE(0.5D0*PARU(1)))
33287               F1BET=-F0BET**2
33288             ENDIF
33289             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
33290             IF(J.LE.3*MSTP(1)) THEN
33291               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
33292      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
33293               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
33294               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
33295             ELSE
33296               TXW=XW/XW1
33297               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
33298      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
33299      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
33300               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
33301      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
33302      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
33303      &        (F1BET-F1ALP))
33304             ENDIF
33305   370     CONTINUE
33306           CIGTOT=CIGTOT/DBLE(SH)
33307           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
33308 C...Loop over initial flavours
33309           DO 380 I=MMINA,MMAXA
33310             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
33311             EI=KCHG(IABS(I),1)/3D0
33312             AI=SIGN(1D0,EI)
33313             VI=AI-4D0*EI*XWV
33314             FCOI=1D0
33315             IF(IABS(I).LE.10) FCOI=FACA/3D0
33316             NCHN=NCHN+1
33317             ISIG(NCHN,1)=I
33318             ISIG(NCHN,2)=-I
33319             ISIG(NCHN,3)=1
33320             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
33321      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
33322   380     CONTINUE
33323  
33324         ELSEIF(ISUB.EQ.111) THEN
33325 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
33326           IF(MSTP(38).NE.0) THEN
33327 C...Simple case: only do gg <-> h exactly.
33328           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33329           WDTP13=0D0
33330           DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33331             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33332      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33333   385     CONTINUE
33334           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33335      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33336           FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))*
33337      &    (TH**2+UH**2)/(SH*SQM4)
33338 C...Propagators: as simulated in PYOFSH and as desired
33339           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33340           GMMHC=SQRT(SQM4)*WDTP(0)
33341           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33342      &    ((SQM4-SQMH)**2+GMMHC**2)
33343           FACGH=FACGH*HBW4C/HBW4
33344           ELSE
33345 C...Messy case: do full loop integrals
33346           A5STUR=0D0
33347           A5STUI=0D0
33348           DO 390 I=1,2*MSTP(1)
33349             SQMQ=PMAS(I,1)**2
33350             EPSS=4D0*SQMQ/SH
33351             EPSH=4D0*SQMQ/SQMH
33352             CALL PYWAUX(1,EPSS,W1SR,W1SI)
33353             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33354             CALL PYWAUX(2,EPSS,W2SR,W2SI)
33355             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33356             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
33357      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
33358             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
33359      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
33360   390     CONTINUE
33361           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
33362      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
33363           FACGH=FACGH*WIDS(25,2)
33364           ENDIF
33365           DO 400 I=MMINA,MMAXA
33366             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33367      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
33368             NCHN=NCHN+1
33369             ISIG(NCHN,1)=I
33370             ISIG(NCHN,2)=-I
33371             ISIG(NCHN,3)=1
33372             SIGH(NCHN)=FACGH
33373   400     CONTINUE
33374  
33375         ELSEIF(ISUB.EQ.112) THEN
33376 C...f + g -> f + h0 (q + g -> q + h0 only)
33377           IF(MSTP(38).NE.0) THEN
33378 C...Simple case: only do gg <-> h exactly.
33379           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33380           WDTP13=0D0
33381           DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33382             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33383      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33384   405     CONTINUE
33385           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33386      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33387           FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))*
33388      &    (SH**2+UH**2)/(-TH*SQM4)
33389 C...Propagators: as simulated in PYOFSH and as desired
33390           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33391           GMMHC=SQRT(SQM4)*WDTP(0)
33392           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33393      &    ((SQM4-SQMH)**2+GMMHC**2)
33394           FACQH=FACQH*HBW4C/HBW4
33395           ELSE
33396 C...Messy case: do full loop integrals
33397           A5TSUR=0D0
33398           A5TSUI=0D0
33399           DO 410 I=1,2*MSTP(1)
33400             SQMQ=PMAS(I,1)**2
33401             EPST=4D0*SQMQ/TH
33402             EPSH=4D0*SQMQ/SQMH
33403             CALL PYWAUX(1,EPST,W1TR,W1TI)
33404             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33405             CALL PYWAUX(2,EPST,W2TR,W2TI)
33406             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33407             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
33408      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
33409             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
33410      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
33411   410     CONTINUE
33412           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
33413      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
33414           FACQH=FACQH*WIDS(25,2)
33415           ENDIF
33416           DO 430 I=MMINA,MMAXA
33417             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
33418             DO 420 ISDE=1,2
33419               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
33420               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
33421               NCHN=NCHN+1
33422               ISIG(NCHN,ISDE)=I
33423               ISIG(NCHN,3-ISDE)=21
33424               ISIG(NCHN,3)=1
33425               SIGH(NCHN)=FACQH
33426   420       CONTINUE
33427   430     CONTINUE
33428  
33429         ELSEIF(ISUB.EQ.113) THEN
33430 C...g + g -> g + h0
33431           IF(MSTP(38).NE.0) THEN
33432 C...Simple case: only do gg <-> h exactly.
33433           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33434           WDTP13=0D0
33435           DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33436             IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33437      &      KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33438   435     CONTINUE
33439           IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33440      &    '(PYSGHG:) did not find Higgs -> g g channel')  
33441           FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))*
33442      &    (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
33443 C...Propagators: as simulated in PYOFSH and as desired
33444           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33445           GMMHC=SQRT(SQM4)*WDTP(0)
33446           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
33447      &    ((SQM4-SQMH)**2+GMMHC**2)
33448           FACGH=FACGH*HBW4C/HBW4
33449           ELSE
33450 C...Messy case: do full loop integrals
33451           A2STUR=0D0
33452           A2STUI=0D0
33453           A2USTR=0D0
33454           A2USTI=0D0
33455           A2TUSR=0D0
33456           A2TUSI=0D0
33457           A4STUR=0D0
33458           A4STUI=0D0
33459           DO 440 I=1,2*MSTP(1)
33460             SQMQ=PMAS(I,1)**2
33461             EPSS=4D0*SQMQ/SH
33462             EPST=4D0*SQMQ/TH
33463             EPSU=4D0*SQMQ/UH
33464             EPSH=4D0*SQMQ/SQMH
33465             IF(EPSH.LT.1D-6) GOTO 440
33466             CALL PYWAUX(1,EPSS,W1SR,W1SI)
33467             CALL PYWAUX(1,EPST,W1TR,W1TI)
33468             CALL PYWAUX(1,EPSU,W1UR,W1UI)
33469             CALL PYWAUX(1,EPSH,W1HR,W1HI)
33470             CALL PYWAUX(2,EPSS,W2SR,W2SI)
33471             CALL PYWAUX(2,EPST,W2TR,W2TI)
33472             CALL PYWAUX(2,EPSU,W2UR,W2UI)
33473             CALL PYWAUX(2,EPSH,W2HR,W2HI)
33474             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
33475             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
33476             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
33477             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
33478             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
33479             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
33480             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
33481             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
33482             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
33483             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
33484             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
33485             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
33486             W3STUR=YHSTUR-Y3STUR-Y3UTSR
33487             W3STUI=YHSTUI-Y3STUI-Y3UTSI
33488             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
33489             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
33490             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
33491             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
33492             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
33493             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
33494             W3USTR=YHUSTR-Y3USTR-Y3TSUR
33495             W3USTI=YHUSTI-Y3USTI-Y3TSUI
33496             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
33497             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
33498             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
33499      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
33500      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
33501      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
33502      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
33503             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
33504      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
33505      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
33506      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
33507      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
33508             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
33509      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
33510      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
33511      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
33512      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
33513             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
33514      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
33515      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
33516      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
33517      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
33518             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
33519      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
33520      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
33521      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
33522      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
33523             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
33524      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
33525      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
33526      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
33527      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
33528             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
33529      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
33530      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
33531      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
33532      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
33533             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
33534      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
33535      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
33536      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
33537      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
33538             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
33539      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
33540      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
33541      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
33542      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
33543             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
33544      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
33545      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
33546      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
33547      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
33548             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
33549      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
33550      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
33551      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
33552      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
33553             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
33554      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
33555      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
33556      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
33557      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
33558             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33559      &      (W2SR-W2HR+W3STUR))
33560             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
33561             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33562      &      (W2TR-W2HR+W3TUSR))
33563             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
33564             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
33565      &      (W2UR-W2HR+W3USTR))
33566             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
33567             A2STUR=A2STUR+B2STUR+B2SUTR
33568             A2STUI=A2STUI+B2STUI+B2SUTI
33569             A2USTR=A2USTR+B2USTR+B2UTSR
33570             A2USTI=A2USTI+B2USTI+B2UTSI
33571             A2TUSR=A2TUSR+B2TUSR+B2TSUR
33572             A2TUSI=A2TUSI+B2TUSI+B2TSUI
33573             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
33574             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
33575   440     CONTINUE
33576           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
33577      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
33578      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
33579           FACGH=FACGH*WIDS(25,2)
33580           ENDIF
33581           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
33582           NCHN=NCHN+1
33583           ISIG(NCHN,1)=21
33584           ISIG(NCHN,2)=21
33585           ISIG(NCHN,3)=1
33586           SIGH(NCHN)=FACGH
33587   450     CONTINUE
33588         ENDIF
33589  
33590       ELSEIF(ISUB.LE.170) THEN
33591         IF(ISUB.EQ.121) THEN
33592 C...g + g -> Q + Qbar + h0
33593           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
33594           IA=KFPR(ISUBSV,2)
33595           PMF=PYMRUN(IA,SH)
33596           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
33597      &    (0.5D0*PMF/PMAS(24,1))**2
33598           WID2=1D0
33599           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
33600           FACQQH=FACQQH*WID2
33601           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
33602             IKFI=1
33603             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
33604             IF(IA.GT.10) IKFI=3
33605             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
33606             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
33607               FACQQH=FACQQH/(1D0+RMSS(41))**2
33608               IF(IHIGG.NE.3) THEN
33609                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
33610      &          PARU(151+10*IHIGG))**2
33611               ENDIF
33612             ENDIF
33613           ENDIF
33614           CALL PYQQBH(WTQQBH)
33615           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33616           HS=SHR*WDTP(0)
33617           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33618           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33619           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33620      &    FACBW=0D0
33621           NCHN=NCHN+1
33622           ISIG(NCHN,1)=21
33623           ISIG(NCHN,2)=21
33624           ISIG(NCHN,3)=1
33625           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
33626   460     CONTINUE
33627  
33628         ELSEIF(ISUB.EQ.122) THEN
33629 C...q + qbar -> Q + Qbar + h0
33630           IA=KFPR(ISUBSV,2)
33631           PMF=PYMRUN(IA,SH)
33632           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
33633      &    (0.5D0*PMF/PMAS(24,1))**2
33634           WID2=1D0
33635           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
33636           FACQQH=FACQQH*WID2
33637           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
33638             IKFI=1
33639             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
33640             IF(IA.GT.10) IKFI=3
33641             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
33642             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
33643               FACQQH=FACQQH/(1D0+RMSS(41))**2
33644               IF(IHIGG.NE.3) THEN
33645                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
33646      &          PARU(151+10*IHIGG))**2
33647               ENDIF
33648             ENDIF
33649           ENDIF
33650           CALL PYQQBH(WTQQBH)
33651           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33652           HS=SHR*WDTP(0)
33653           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33654           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33655           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33656      &    FACBW=0D0
33657           DO 470 I=MMINA,MMAXA
33658             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33659      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
33660             NCHN=NCHN+1
33661             ISIG(NCHN,1)=I
33662             ISIG(NCHN,2)=-I
33663             ISIG(NCHN,3)=1
33664             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
33665   470     CONTINUE
33666  
33667         ELSEIF(ISUB.EQ.123) THEN
33668 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
33669 C...inner process)
33670           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
33671           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
33672      &    PARU(154+10*IHIGG)**2
33673           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
33674      &    (VINT(216)-VINT(209)**2))**2
33675           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
33676           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
33677           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33678           HS=SHR*WDTP(0)
33679           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33680           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33681           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33682      &    FACBW=0D0
33683           DO 490 I=MMIN1,MMAX1
33684             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
33685             IA=IABS(I)
33686             DO 480 J=MMIN2,MMAX2
33687               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
33688               JA=IABS(J)
33689               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
33690               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
33691               VI=AI-4D0*EI*XWV
33692               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
33693               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
33694               VJ=AJ-4D0*EJ*XWV
33695               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
33696               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
33697               NCHN=NCHN+1
33698               ISIG(NCHN,1)=I
33699               ISIG(NCHN,2)=J
33700               ISIG(NCHN,3)=1
33701               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
33702   480       CONTINUE
33703   490     CONTINUE
33704  
33705         ELSEIF(ISUB.EQ.124) THEN
33706 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
33707 C...inner process)
33708           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
33709           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
33710      &    PARU(155+10*IHIGG)**2
33711           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
33712      &    (VINT(216)-VINT(209)**2))**2
33713           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
33714           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33715           HS=SHR*WDTP(0)
33716           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33717           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
33718           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33719      &    FACBW=0D0
33720           DO 510 I=MMIN1,MMAX1
33721             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
33722             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33723             DO 500 J=MMIN2,MMAX2
33724               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
33725               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33726               IF(EI*EJ.GT.0D0) GOTO 500
33727               FACLR=VINT(180+I)*VINT(180+J)
33728               NCHN=NCHN+1
33729               ISIG(NCHN,1)=I
33730               ISIG(NCHN,2)=J
33731               ISIG(NCHN,3)=1
33732               SIGH(NCHN)=FACLR*FACWW*FACBW
33733   500       CONTINUE
33734   510     CONTINUE
33735  
33736         ELSEIF(ISUB.EQ.143) THEN
33737 C...f + fbar' -> H+/-
33738           SQMHC=PMAS(37,1)**2
33739           CALL PYWIDT(37,SH,WDTP,WDTE)
33740           HS=SHR*WDTP(0)
33741           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
33742           HP=AEM/(8D0*XW)*SH/SQMW*SH
33743           DO 530 I=MMIN1,MMAX1
33744             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
33745             IA=IABS(I)
33746             IM=(MOD(IA,10)+1)/2
33747             DO 520 J=MMIN2,MMAX2
33748               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
33749               JA=IABS(J)
33750               JM=(MOD(JA,10)+1)/2
33751               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
33752               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33753      &        GOTO 520
33754               IF(MOD(IA,2).EQ.0) THEN
33755                 IU=IA
33756                 IL=JA
33757               ELSE
33758                 IU=JA
33759                 IL=IA
33760               ENDIF
33761               RML=PYMRUN(IL,SH)**2/SH
33762               RMU=PYMRUN(IU,SH)**2/SH
33763               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
33764               IF(IA.LE.10) HI=HI*FACA/3D0
33765               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33766               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
33767               NCHN=NCHN+1
33768               ISIG(NCHN,1)=I
33769               ISIG(NCHN,2)=J
33770               ISIG(NCHN,3)=1
33771               SIGH(NCHN)=HI*FACBW*HF
33772   520       CONTINUE
33773   530     CONTINUE
33774  
33775         ELSEIF(ISUB.EQ.161) THEN
33776 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
33777 C...(choice of only b and t to avoid kinematics problems)
33778           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
33779 C...H propagator: as simulated in PYOFSH and as desired
33780           SQMHC=PMAS(37,1)**2
33781           GMMHC=PMAS(37,1)*PMAS(37,2)
33782           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
33783           CALL PYWIDT(37,SQM4,WDTP,WDTE)
33784           GMMHCC=SQRT(SQM4)*WDTP(0)
33785           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
33786           FHCQ=FHCQ*HBW4C/HBW4
33787           Q2RM=SH
33788           IF(MSTP(32).EQ.12) Q2RM=PARP(194)
33789           DO 550 I=MMINA,MMAXA
33790             IA=IABS(I)
33791             IF(IA.NE.5) GOTO 550
33792             SQML=PYMRUN(IA,Q2RM)**2
33793             IUA=IA+MOD(IA,2)
33794             SQMQ=PYMRUN(IUA,Q2RM)**2
33795             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
33796      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
33797      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
33798      &      (SQMHC-SQMQ-SH)/SH)
33799             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33800             DO 540 ISDE=1,2
33801               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
33802               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540
33803               NCHN=NCHN+1
33804               ISIG(NCHN,ISDE)=I
33805               ISIG(NCHN,3-ISDE)=21
33806               ISIG(NCHN,3)=1
33807               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
33808               IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2)
33809   540       CONTINUE
33810   550     CONTINUE
33811         ENDIF
33812  
33813       ELSEIF(ISUB.LE.402) THEN
33814         IF(ISUB.EQ.401) THEN
33815 C...  g + g -> t + bbar + H-
33816           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560
33817           IA=KFPR(ISUBSV,2)
33818           CALL PYSTBH(WTTBH)
33819           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33820           HS=SHR*WDTP(0)
33821           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
33822           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33823      &       FACBW=0D0
33824           NCHN=NCHN+1
33825           ISIG(NCHN,1)=21
33826           ISIG(NCHN,2)=21
33827           ISIG(NCHN,3)=1
33828           SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
33829 c     Since we don't know yet if H+ or H-, assume H+
33830 c     when calculating suppression due to closed channels.
33831           SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
33832           IF(ABS(WIDS(37,2)-WIDS(37,3))
33833      &       .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR.
33834      &       ABS(WIDS(6,2)-WIDS(6,3))
33835      &       .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN
33836             WRITE(*,*)'Error: Process 401 cannot handle different'
33837             WRITE(*,*)'decays for H+ and H- or t and tbar.'
33838             WRITE(*,*)'Execution stopped.'
33839             CALL PYSTOP(108)
33840           END IF
33841  560      CONTINUE
33842  
33843         ELSEIF(ISUB.EQ.402) THEN
33844 C...  q + qbar -> t + bbar + H-
33845           IA=KFPR(ISUBSV,2)
33846           CALL PYSTBH(WTTBH)
33847           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33848           HS=SHR*WDTP(0)
33849           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
33850           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33851      &       FACBW=0D0
33852           DO 570 I=MMINA,MMAXA
33853             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33854      &         KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570
33855             NCHN=NCHN+1
33856             ISIG(NCHN,1)=I
33857             ISIG(NCHN,2)=-I
33858             ISIG(NCHN,3)=1
33859             SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
33860 c     Since we don't know yet if H+ or H-, assume H+
33861 c     when calculating suppression due to closed channels.
33862             SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
33863             IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3))
33864      &         .GE.1D-6.OR.
33865      &         ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3))
33866      &         .GE.1D-6) THEN
33867               WRITE(*,*)'Error: Process 402 cannot handle different'
33868               WRITE(*,*)'decays for H+ and H- or t and tbar.'
33869               WRITE(*,*)'Execution stopped.'
33870               CALL PYSTOP(108)
33871             END IF
33872  570      CONTINUE
33873         ENDIF
33874       ENDIF
33875  
33876       RETURN
33877       END
33878  
33879 C*********************************************************************
33880  
33881 C...PYSGSU
33882 C...Subprocess cross sections for SUSY processes,
33883 C...including Higgs pair production.
33884 C...Auxiliary to PYSIGH.
33885  
33886       SUBROUTINE PYSGSU(NCHN,SIGS)
33887  
33888 C...Double precision and integer declarations
33889       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33890       IMPLICIT INTEGER(I-N)
33891       INTEGER PYK,PYCHGE,PYCOMP
33892 C...Parameter statement to help give large particle numbers.
33893       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33894      &KEXCIT=4000000,KDIMEN=5000000)
33895 C...Commonblocks
33896       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33897       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33898       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33899       COMMON/PYINT1/MINT(400),VINT(400)
33900       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
33901       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
33902       COMMON/PYINT4/MWID(500),WIDS(500,5)
33903       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33904       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
33905      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
33906       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
33907      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
33908      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
33909      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
33910       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
33911      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
33912 C...Local arrays and complex variables
33913       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
33914       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
33915       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
33916       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
33917  
33918 CMRENNA++
33919 C...Z and W width, combinations of weak mixing angle
33920       ZWID=PMAS(23,2)
33921       WWID=PMAS(24,2)
33922       TANW=SQRT(XW/XW1)
33923       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
33924  
33925 C...Convert almost equivalent SUSY processes into each other
33926 C...Extract differences in flavours and couplings
33927  
33928 C...Sleptons and sneutrinos
33929       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
33930         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33931         ISUB=201
33932         ILR=0
33933       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
33934         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33935         ISUB=201
33936         ILR=1
33937       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
33938         KFID=MOD(KFPR(ISUB,1),KSUSY1)
33939         ISUB=203
33940       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
33941         IF(ISUB.EQ.210) THEN
33942           RKF=2.0D0
33943         ELSEIF(ISUB.EQ.211) THEN
33944           RKF=SFMIX(15,1)**2
33945         ELSEIF(ISUB.EQ.212) THEN
33946           RKF=SFMIX(15,2)**2
33947         ENDIF
33948           ISUB=210
33949       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
33950         IF(ISUB.EQ.213) THEN
33951           KFID=MOD(KFPR(ISUB,1),KSUSY1)
33952           RKF=2.0D0
33953         ELSEIF(ISUB.EQ.214) THEN
33954           KFID=16
33955           RKF=1.0D0
33956         ENDIF
33957         ISUB=213
33958  
33959 C...Neutralinos
33960       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
33961         IF(ISUB.EQ.216) THEN
33962           IZID1=1
33963           IZID2=1
33964         ELSEIF(ISUB.EQ.217) THEN
33965           IZID1=2
33966           IZID2=2
33967         ELSEIF(ISUB.EQ.218) THEN
33968           IZID1=3
33969           IZID2=3
33970         ELSEIF(ISUB.EQ.219) THEN
33971           IZID1=4
33972           IZID2=4
33973         ELSEIF(ISUB.EQ.220) THEN
33974           IZID1=1
33975           IZID2=2
33976         ELSEIF(ISUB.EQ.221) THEN
33977           IZID1=1
33978           IZID2=3
33979         ELSEIF(ISUB.EQ.222) THEN
33980           IZID1=1
33981           IZID2=4
33982         ELSEIF(ISUB.EQ.223) THEN
33983           IZID1=2
33984           IZID2=3
33985         ELSEIF(ISUB.EQ.224) THEN
33986           IZID1=2
33987           IZID2=4
33988         ELSEIF(ISUB.EQ.225) THEN
33989           IZID1=3
33990           IZID2=4
33991         ENDIF
33992         ISUB=216
33993  
33994 C...Charginos
33995       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
33996         IF(ISUB.EQ.226) THEN
33997           IZID1=1
33998           IZID2=1
33999         ELSEIF(ISUB.EQ.227) THEN
34000           IZID1=2
34001           IZID2=2
34002         ELSEIF(ISUB.EQ.228) THEN
34003           IZID1=1
34004           IZID2=2
34005         ENDIF
34006         ISUB=226
34007  
34008 C...Neutralino + chargino
34009       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
34010         IF(ISUB.EQ.229) THEN
34011           IZID1=1
34012           IZID2=1
34013         ELSEIF(ISUB.EQ.230) THEN
34014           IZID1=1
34015           IZID2=2
34016         ELSEIF(ISUB.EQ.231) THEN
34017           IZID1=1
34018           IZID2=3
34019         ELSEIF(ISUB.EQ.232) THEN
34020           IZID1=1
34021           IZID2=4
34022         ELSEIF(ISUB.EQ.233) THEN
34023           IZID1=2
34024           IZID2=1
34025         ELSEIF(ISUB.EQ.234) THEN
34026           IZID1=2
34027           IZID2=2
34028         ELSEIF(ISUB.EQ.235) THEN
34029           IZID1=2
34030           IZID2=3
34031         ELSEIF(ISUB.EQ.236) THEN
34032           IZID1=2
34033           IZID2=4
34034         ENDIF
34035         ISUB=229
34036  
34037 C...Gluino + neutralino
34038       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
34039         IF(ISUB.EQ.237) THEN
34040           IZID=1
34041         ELSEIF(ISUB.EQ.238) THEN
34042           IZID=2
34043         ELSEIF(ISUB.EQ.239) THEN
34044           IZID=3
34045         ELSEIF(ISUB.EQ.240) THEN
34046           IZID=4
34047         ENDIF
34048         ISUB=237
34049  
34050 C...Gluino + chargino
34051       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
34052         IF(ISUB.EQ.241) THEN
34053           IZID=1
34054         ELSEIF(ISUB.EQ.242) THEN
34055           IZID=2
34056         ENDIF
34057         ISUB=241
34058  
34059 C...Squark + neutralino
34060       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
34061         ILR=0
34062         IF(MOD(ISUB,2).NE.0) ILR=1
34063         IF(ISUB.LE.247) THEN
34064           IZID=1
34065         ELSEIF(ISUB.LE.249) THEN
34066           IZID=2
34067         ELSEIF(ISUB.LE.251) THEN
34068           IZID=3
34069         ELSEIF(ISUB.LE.253) THEN
34070           IZID=4
34071         ENDIF
34072         ISUB=246
34073         RKF=5D0
34074  
34075 C...Squark + chargino
34076       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
34077         IF(ISUB.LE.255) THEN
34078           IZID=1
34079         ELSEIF(ISUB.LE.257) THEN
34080           IZID=2
34081         ENDIF
34082         IF(MOD(ISUB,2).EQ.0) THEN
34083           ILR=0
34084         ELSE
34085           ILR=1
34086         ENDIF
34087         ISUB=254
34088         RKF=5D0
34089  
34090 C...Squark + gluino
34091       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
34092         ISUB=258
34093         RKF=4D0
34094  
34095 C...Stops
34096       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
34097         ILR=0
34098         IF(ISUB.EQ.262) ILR=1
34099         ISUB=261
34100       ELSEIF(ISUB.EQ.265) THEN
34101         ISUB=264
34102  
34103 C...Squarks
34104       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
34105         ILR=0
34106         IF(ISUB.LE.273) THEN
34107           IF(ISUB.EQ.273) ILR=1
34108           ISUB=271
34109           RKF=16D0
34110         ELSEIF(ISUB.LE.276) THEN
34111           IF(ISUB.EQ.276) ILR=1
34112           ISUB=274
34113           RKF=16D0
34114         ELSEIF(ISUB.LE.278) THEN
34115           IF(ISUB.EQ.278) ILR=1
34116           ISUB=277
34117           RKF=4D0
34118         ELSE
34119           IF(ISUB.EQ.280) ILR=1
34120           ISUB=279
34121           RKF=4D0
34122         ENDIF
34123 C...Sbottoms
34124       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
34125         ILR=0
34126         IF(ISUB.LE.283) THEN
34127           IF(ISUB.EQ.283) ILR=1
34128           ISUB=271
34129           RKF=4D0
34130         ELSEIF(ISUB.LE.286) THEN
34131           IF(ISUB.EQ.286) ILR=1
34132           ISUB=274
34133           RKF=4D0
34134         ELSEIF(ISUB.LE.288) THEN
34135           IF(ISUB.EQ.288) ILR=1
34136           ISUB=277
34137           RKF=1D0
34138         ELSEIF(ISUB.LE.290) THEN
34139           IF(ISUB.EQ.290) ILR=1
34140           ISUB=279
34141           RKF=1D0
34142         ELSEIF(ISUB.LE.293) THEN
34143           IF(ISUB.EQ.293) ILR=1
34144           ISUB=271
34145           RKF=1D0
34146         ELSEIF(ISUB.EQ.296) THEN
34147           ILR=1
34148           ISUB=274
34149           RKF=1D0
34150 C...Squark + gluino
34151         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
34152           ISUB=258
34153           RKF=1D0
34154         ENDIF
34155 C...H+/- + H0
34156       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
34157         IF(ISUB.EQ.297) THEN
34158           RKF=.5D0*PARU(195)**2
34159         ELSEIF(ISUB.EQ.298) THEN
34160           RKF=.5D0*(1D0-PARU(195)**2)
34161         ENDIF
34162         ISUB=210
34163 C...A0 + H0
34164       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
34165         IF(ISUB.EQ.299) THEN
34166           RKF=PARU(186)**2
34167           KFID=25
34168         ELSEIF(ISUB.EQ.300) THEN
34169           RKF=PARU(187)**2
34170           KFID=35
34171         ENDIF
34172         ISUB=213
34173 C...H+ + H-
34174       ELSEIF(ISUB.EQ.301) THEN
34175         KFID=37
34176         RKF=1D0
34177         ISUB=201
34178       ENDIF
34179  
34180 C...Supersymmetric processes - all of type 2 -> 2 :
34181 C...correct final-state Breit-Wigners from fixed to running width.
34182       IF(MSTP(42).GT.0) THEN
34183         DO 100 I=1,2
34184         KFLW=KFPR(ISUBSV,I)
34185         KCW=PYCOMP(KFLW)
34186         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
34187         IF(I.EQ.1) SQMI=SQM3
34188         IF(I.EQ.2) SQMI=SQM4
34189         SQMS=PMAS(KCW,1)**2
34190         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
34191         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
34192         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
34193         GMMI=SQRT(SQMI)*WDTP(0)
34194         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
34195         COMFAC=COMFAC*(HBWI/HBWS)
34196   100   CONTINUE
34197       ENDIF
34198  
34199 C...Differential cross section expressions.
34200  
34201       IF(ISUB.LE.210) THEN
34202         IF(ISUB.EQ.201) THEN
34203 C...f + fbar -> e_L + e_Lbar
34204           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34205           DO 130 I=MMIN1,MMAX1
34206             IA=IABS(I)
34207             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
34208             EI=KCHG(IA,1)/3D0
34209             TT3I=SIGN(1D0,EI+1D-6)/2D0
34210             EJ=-1D0
34211             TT3J=-1D0/2D0
34212             FCOL=1D0
34213 C...Color factor for e+ e-
34214             IF(IA.GE.11) FCOL=3D0
34215             IF(ISUBSV.EQ.301) THEN
34216               A1=1D0
34217               A2=0D0
34218             ELSEIF(ILR.EQ.1) THEN
34219               A1=SFMIX(KFID,3)**2
34220               A2=SFMIX(KFID,4)**2
34221             ELSEIF(ILR.EQ.0) THEN
34222               A1=SFMIX(KFID,1)**2
34223               A2=SFMIX(KFID,2)**2
34224             ENDIF
34225             XLQ=(TT3J-EJ*XW)*A1
34226             XRQ=(-EJ*XW)*A2
34227             XLF=(TT3I-EI*XW)
34228             XRF=(-EI*XW)
34229             TAA=(EI*EJ)**2*(POLL+POLR)
34230             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
34231             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
34232             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
34233             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
34234             TNN=0.0D0
34235             TAN=0.0D0
34236             TZN=0.0D0
34237             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
34238               FAC2=SQRT(2D0)
34239               TNN1=0D0
34240               TNN2=0D0
34241               TNN3=0D0
34242               DO 120 II=1,4
34243                 DK=1D0/(TH-SMZ(II)**2)
34244                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
34245      &          ZMIX(II,1))
34246                 FREK=FAC2*TANW*EI*ZMIX(II,1)
34247                 TNN1=TNN1+FLEK**2*DK
34248                 TNN2=TNN2+FREK**2*DK
34249                 DO 110 JJ=1,4
34250                   DL=1D0/(TH-SMZ(JJ)**2)
34251                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
34252      &            ZMIX(JJ,1))
34253                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
34254                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
34255   110           CONTINUE
34256   120         CONTINUE
34257               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
34258      &        A2**2*TNN2**2*POLR)
34259               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
34260      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
34261               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
34262      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
34263               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
34264      &        (1D0-SQMZ/SH)/SH
34265               TZN=TZN/XW**2/XW1
34266               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
34267      &        A2*TNN2*POLR)/XW
34268             ENDIF
34269             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
34270             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
34271             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
34272             NCHN=NCHN+1
34273             ISIG(NCHN,1)=I
34274             ISIG(NCHN,2)=-I
34275             ISIG(NCHN,3)=1
34276             SIGH(NCHN)=FACQQ1+FACQQ2
34277   130     CONTINUE
34278  
34279         ELSEIF(ISUB.EQ.203) THEN
34280 C...f + fbar -> e_L + e_Rbar
34281           DO 160 I=MMIN1,MMAX1
34282             IA=IABS(I)
34283             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
34284             EI=KCHG(IABS(I),1)/3D0
34285             TT3I=SIGN(1D0,EI)/2D0
34286             EJ=-1
34287             TT3J=-1D0/2D0
34288             FCOL=1D0
34289 C...Color factor for e+ e-
34290             IF(IA.GE.11) FCOL=3D0
34291             A1=SFMIX(KFID,1)**2
34292             A2=SFMIX(KFID,2)**2
34293             XLQ=(TT3J-EJ*XW)
34294             XRQ=(-EJ*XW)
34295             XLF=(TT3I-EI*XW)
34296             XRF=(-EI*XW)
34297             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
34298      &      /XW**2/XW1**2*A1*A2
34299             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34300             TNN=0.0D0
34301             TZN=0.0D0
34302             TNNA=0D0
34303             TNNB=0D0
34304             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
34305               FAC2=SQRT(2D0)
34306               TNN1=0D0
34307               TNN2=0D0
34308               TNN3=0D0
34309               DO 150 II=1,4
34310                 DK=1D0/(TH-SMZ(II)**2)
34311                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
34312      &          ZMIX(II,1))
34313                 FREK=FAC2*TANW*EI*ZMIX(II,1)
34314                 TNN1=TNN1+FLEK**2*DK
34315                 TNN2=TNN2+FREK**2*DK
34316                 DO 140 JJ=1,4
34317                   DL=1D0/(TH-SMZ(JJ)**2)
34318                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
34319      &            ZMIX(JJ,1))
34320                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
34321                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
34322   140           CONTINUE
34323   150         CONTINUE
34324               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
34325               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
34326               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
34327               TZN=(UH*TH-SQM3*SQM4)*A1*A2
34328               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
34329               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
34330      &        (1D0-SQMZ/SH)/SH
34331             ENDIF
34332             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
34333             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
34334             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
34335 C%%%%%%%%%%%
34336             NCHN=NCHN+1
34337             ISIG(NCHN,1)=I
34338             ISIG(NCHN,2)=-I
34339             ISIG(NCHN,3)=1
34340             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34341      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34342             NCHN=NCHN+1
34343             ISIG(NCHN,1)=I
34344             ISIG(NCHN,2)=-I
34345             ISIG(NCHN,3)=2
34346             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34347      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34348   160     CONTINUE
34349  
34350         ELSEIF(ISUB.EQ.210) THEN
34351 C...q + qbar' -> W*- > ~l_L + ~nu_L
34352           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
34353           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
34354           DO 180 I=MMIN1,MMAX1
34355             IA=IABS(I)
34356             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
34357             DO 170 J=MMIN2,MMAX2
34358               JA=IABS(J)
34359               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
34360               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
34361               FCKM=3D0
34362               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34363               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34364               KCHW=2
34365               IF(KCHSUM.LT.0) KCHW=3
34366               NCHN=NCHN+1
34367               ISIG(NCHN,1)=I
34368               ISIG(NCHN,2)=J
34369               ISIG(NCHN,3)=1
34370               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
34371                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
34372      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34373               ELSE
34374                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
34375      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34376               ENDIF
34377               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
34378   170       CONTINUE
34379   180     CONTINUE
34380         ENDIF
34381  
34382       ELSEIF(ISUB.LE.220) THEN
34383         IF(ISUB.EQ.213) THEN
34384 C...f + fbar -> ~nu_L + ~nu_Lbar
34385           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
34386             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34387      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34388           ELSE
34389             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34390           ENDIF
34391           COMFAC=COMFAC*FACR
34392           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
34393           XLL=0.5D0
34394           XLR=0.0D0
34395           DO 190 I=MMIN1,MMAX1
34396             IA=IABS(I)
34397             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
34398             EI=KCHG(IA,1)/3D0
34399             FCOL=1D0
34400 C...Color factor for e+ e-
34401             IF(IA.GE.11) FCOL=3D0
34402             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
34403             XRQ=-EI*XW
34404             TZC=0.0D0
34405             TCC=0.0D0
34406             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
34407               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
34408      &        (TH-SMW(2)**2)
34409               TCC=TZC**2
34410               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
34411             ENDIF
34412             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
34413             FACQQ2=TZC+TCC/4D0
34414             NCHN=NCHN+1
34415             ISIG(NCHN,1)=I
34416             ISIG(NCHN,2)=-I
34417             ISIG(NCHN,3)=1
34418             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
34419      &      *AEM**2*FCOL/3D0/XW**2
34420   190     CONTINUE
34421  
34422         ELSEIF(ISUB.EQ.216) THEN
34423 C...q + qbar -> ~chi0_1 + ~chi0_1
34424           IF(IZID1.EQ.IZID2) THEN
34425             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34426           ELSE
34427             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34428      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34429           ENDIF
34430           FACXX=COMFAC*AEM**2/3D0/XW**2
34431           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
34432           ZM12=SQM3
34433           ZM22=SQM4
34434           WU2 = (UH-ZM12)*(UH-ZM22)
34435           WT2 = (TH-ZM12)*(TH-ZM22)
34436           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
34437           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
34438           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
34439           DO 200 I=1,4
34440             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
34441             IF(IZID2.NE.IZID1) THEN
34442               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
34443             ENDIF
34444   200     CONTINUE
34445           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
34446      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
34447           ORPP=DCONJG(OLPP)
34448           DO 210 I=MMINA,MMAXA
34449             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
34450             EI=KCHG(IABS(I),1)/3D0
34451             T3I=SIGN(1D0,EI+1D-6)/2D0
34452             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
34453             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
34454             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
34455      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
34456             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
34457             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
34458             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
34459      &      /DCMPLX(TH-XML2)
34460             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
34461             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
34462      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
34463             FCOL=1D0
34464             IF(IABS(I).GE.11) FCOL=3D0
34465             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
34466      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
34467      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
34468      &      QRL*DCONJG(QRR)*POLR)*WS2
34469             NCHN=NCHN+1
34470             ISIG(NCHN,1)=I
34471             ISIG(NCHN,2)=-I
34472             ISIG(NCHN,3)=1
34473             SIGH(NCHN)=FACXX*FACGG1*FCOL
34474   210     CONTINUE
34475         ENDIF
34476  
34477       ELSEIF(ISUB.LE.230) THEN
34478         IF(ISUB.EQ.226) THEN
34479 C...f + fbar -> ~chi+_1 + ~chi-_1
34480           FACXX=COMFAC*AEM**2/3D0
34481           ZM12=SQM3
34482           ZM22=SQM4
34483           WU2 = (UH-ZM12)*(UH-ZM22)
34484           WT2 = (TH-ZM12)*(TH-ZM22)
34485           WS2 = SMW(IZID1)*SMW(IZID2)*SH
34486           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
34487           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
34488           DIFF=0D0
34489           IF(IZID1.EQ.IZID2) DIFF=1D0
34490           DO 220 I=1,2
34491             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
34492             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
34493             IF(IZID2.NE.IZID1) THEN
34494               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
34495               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
34496             ENDIF
34497   220     CONTINUE
34498           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
34499      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
34500           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
34501      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
34502           DO 230 I=MMINA,MMAXA
34503             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
34504             EI=KCHG(IABS(I),1)/3D0
34505             T3I=SIGN(1D0,EI+1D-6)/2D0
34506             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
34507             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
34508             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
34509             IF(MOD(I,2).EQ.0) THEN
34510               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
34511               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
34512      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
34513      &        DCMPLX(T3I/XW/(TH-XML2))
34514             ELSE
34515               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)+1),1)**2
34516               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
34517      &        PROPZ*OLP-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
34518      &        DCMPLX(T3I/XW/(TH-XML2))
34519             ENDIF
34520             FCOL=1D0
34521             IF(IABS(I).GE.11) FCOL=3D0
34522             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
34523      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
34524      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
34525      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
34526             NCHN=NCHN+1
34527             ISIG(NCHN,1)=I
34528             ISIG(NCHN,2)=-I
34529             ISIG(NCHN,3)=1
34530             IF(IZID1.EQ.IZID2) THEN
34531               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34532             ELSE
34533               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34534      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34535               NCHN=NCHN+1
34536               ISIG(NCHN,1)=I
34537               ISIG(NCHN,2)=-I
34538               ISIG(NCHN,3)=2
34539               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34540      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34541             ENDIF
34542   230     CONTINUE
34543  
34544         ELSEIF(ISUB.EQ.229) THEN
34545 C...q + qbar' -> ~chi0_1 + ~chi+-_1
34546           FACXX=COMFAC*AEM**2/6D0/XW**2
34547           ZM12=SQM3
34548           ZM22=SQM4
34549           WU2 = (UH-ZM12)*(UH-ZM22)
34550           WT2 = (TH-ZM12)*(TH-ZM22)
34551           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
34552           RT2I = 1D0/SQRT(2D0)
34553           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
34554      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
34555           DO 240 I=1,2
34556             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
34557             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
34558   240     CONTINUE
34559           DO 250 I=1,4
34560             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
34561   250     CONTINUE
34562           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
34563      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
34564           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
34565      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
34566  
34567           DO 270 I=MMIN1,MMAX1
34568             IA=IABS(I)
34569             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
34570             EI=KCHG(IA,1)/3D0
34571             T3I=SIGN(1D0,EI+1D-6)/2D0
34572             DO 260 J=MMIN2,MMAX2
34573               JA=IABS(J)
34574               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
34575               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
34576               EJ=KCHG(JA,1)/3D0
34577               T3J=SIGN(1D0,EJ+1D-6)/2D0
34578               FCKM=3D0
34579               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34580               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34581               KCHW=2
34582               IF(KCHSUM.LT.0) KCHW=3
34583               IF(MOD(IA,2).EQ.0) THEN
34584                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
34585                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
34586                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
34587      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
34588                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
34589      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
34590      &          /DCMPLX(TH-ZMJ2)
34591               ELSE
34592                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
34593                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
34594                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
34595      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
34596                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
34597      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
34598      &          /DCMPLX(TH-ZMI2)
34599               ENDIF
34600               ZINTR=DBLE(QLR*DCONJG(QLL))
34601               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
34602      &        2D0*ZINTR*WS2)
34603               NCHN=NCHN+1
34604               ISIG(NCHN,1)=I
34605               ISIG(NCHN,2)=J
34606               ISIG(NCHN,3)=1
34607               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34608      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34609   260       CONTINUE
34610   270     CONTINUE
34611         ENDIF
34612  
34613       ELSEIF(ISUB.LE.240) THEN
34614         IF(ISUB.EQ.237) THEN
34615 C...q + qbar -> gluino + ~chi0_1
34616           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34617      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34618           ASYUK=RMSS(42)*AS
34619           FAC0=COMFAC*ASYUK*AEM*4D0/9D0/XW
34620           GM2=SQM3
34621           ZM2=SQM4
34622           DO 280 I=MMINA,MMAXA
34623             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 280
34624             EI=KCHG(IABS(I),1)/3D0
34625             IA=IABS(I)
34626             XLQC = -TANW*EI*ZMIX(IZID,1)
34627             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
34628      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
34629             XLQ2=XLQC**2
34630             XRQ2=XRQC**2
34631             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
34632             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
34633             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
34634             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
34635             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
34636             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
34637             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
34638             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
34639             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
34640             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
34641             NCHN=NCHN+1
34642             ISIG(NCHN,1)=I
34643             ISIG(NCHN,2)=-I
34644             ISIG(NCHN,3)=1
34645             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
34646   280     CONTINUE
34647         ENDIF
34648  
34649       ELSEIF(ISUB.LE.250) THEN
34650         IF(ISUB.EQ.241) THEN
34651 C...q + qbar' -> ~chi+-_1 + gluino
34652           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
34653           GM2=SQM3
34654           ZM2=SQM4
34655           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
34656           FAC0=UMIX(IZID,1)**2
34657           FAC1=VMIX(IZID,1)**2
34658           DO 300 I=MMIN1,MMAX1
34659             IA=IABS(I)
34660             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
34661             DO 290 J=MMIN2,MMAX2
34662               JA=IABS(J)
34663               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
34664               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
34665               FCKM=1D0
34666               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34667               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
34668               KCHW=2
34669               IF(KCHSUM.LT.0) KCHW=3
34670               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
34671               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
34672               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
34673               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
34674               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
34675               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
34676               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
34677               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
34678               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
34679               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
34680      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
34681               NCHN=NCHN+1
34682               ISIG(NCHN,1)=I
34683               ISIG(NCHN,2)=J
34684               ISIG(NCHN,3)=1
34685               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
34686      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34687      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
34688   290       CONTINUE
34689   300     CONTINUE
34690  
34691         ELSEIF(ISUB.EQ.243) THEN
34692 C...q + qbar -> gluino + gluino
34693           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34694           XMT=SQM3-TH
34695           XMU=SQM3-UH
34696           DO 310 I=MMINA,MMAXA
34697             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34698      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
34699             NCHN=NCHN+1
34700             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
34701             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
34702             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
34703      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
34704      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
34705      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
34706             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
34707             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
34708             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
34709      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
34710      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
34711      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
34712             ISIG(NCHN,1)=I
34713             ISIG(NCHN,2)=-I
34714             ISIG(NCHN,3)=1
34715 C...1/2 for identical particles
34716             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
34717   310     CONTINUE
34718  
34719         ELSEIF(ISUB.EQ.244) THEN
34720 C...g + g -> gluino + gluino
34721           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34722           XMT=SQM3-TH
34723           XMU=SQM3-UH
34724           FACQQ1=COMFAC*AS**2*9D0/4D0*(
34725      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
34726      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
34727           FACQQ2=COMFAC*AS**2*9D0/4D0*(
34728      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
34729      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
34730           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
34731      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
34732           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
34733           NCHN=NCHN+1
34734           ISIG(NCHN,1)=21
34735           ISIG(NCHN,2)=21
34736           ISIG(NCHN,3)=1
34737           SIGH(NCHN)=FACQQ1/2D0
34738           NCHN=NCHN+1
34739           ISIG(NCHN,1)=21
34740           ISIG(NCHN,2)=21
34741           ISIG(NCHN,3)=2
34742           SIGH(NCHN)=FACQQ2/2D0
34743           NCHN=NCHN+1
34744           ISIG(NCHN,1)=21
34745           ISIG(NCHN,2)=21
34746           ISIG(NCHN,3)=3
34747           SIGH(NCHN)=FACQQ3/2D0
34748   320     CONTINUE
34749  
34750         ELSEIF(ISUB.EQ.246) THEN
34751 C...g + q_j -> ~chi0_1 + ~q_j
34752           FAC0=COMFAC*AS*AEM/6D0/XW
34753           ZM2=SQM4
34754           QM2=SQM3
34755           FACZQ0=FAC0*( (ZM2-TH)/SH +
34756      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
34757      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
34758           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34759           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
34760             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
34761             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
34762             EI=KCHG(IABS(I),1)/3D0
34763             IA=IABS(I)
34764             XRQZ = -TANW*EI*ZMIX(IZID,1)
34765             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
34766      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
34767             IF(ILR.EQ.0) THEN
34768               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
34769             ELSE
34770               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
34771             ENDIF
34772             FACZQ=FACZQ0*BS
34773             KCHQ=2
34774             IF(I.LT.0) KCHQ=3
34775             DO 330 ISDE=1,2
34776               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
34777               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
34778               NCHN=NCHN+1
34779               ISIG(NCHN,ISDE)=I
34780               ISIG(NCHN,3-ISDE)=21
34781               ISIG(NCHN,3)=1
34782               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34783      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34784   330       CONTINUE
34785   340     CONTINUE
34786         ENDIF
34787  
34788       ELSEIF(ISUB.LE.260) THEN
34789         IF(ISUB.EQ.254) THEN
34790 C...g + q_j -> ~chi1_1 + ~q_i
34791           FAC0=COMFAC*AS*AEM/12D0/XW
34792           ZM2=SQM4
34793           QM2=SQM3
34794           AU=UMIX(IZID,1)**2
34795           AD=VMIX(IZID,1)**2
34796           FACZQ0=FAC0*( (ZM2-TH)/SH +
34797      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
34798      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
34799           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
34800           IF(MOD(KFNSQ1,2).EQ.0) THEN
34801             KFNSQ=KFNSQ1-1
34802             KCHW=2
34803           ELSE
34804             KFNSQ=KFNSQ1+1
34805             KCHW=3
34806           ENDIF
34807           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
34808             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
34809             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
34810             IA=IABS(I)
34811             IF(MOD(IA,2).EQ.0) THEN
34812               FACZQ=FACZQ0*AU
34813             ELSE
34814               FACZQ=FACZQ0*AD
34815             ENDIF
34816             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
34817             KCHQ=2
34818             IF(I.LT.0) KCHQ=3
34819             KCHWQ=KCHW
34820             IF(I.LT.0) KCHWQ=5-KCHW
34821             DO 350 ISDE=1,2
34822               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
34823               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
34824               NCHN=NCHN+1
34825               ISIG(NCHN,ISDE)=I
34826               ISIG(NCHN,3-ISDE)=21
34827               ISIG(NCHN,3)=1
34828               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34829      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
34830   350       CONTINUE
34831   360     CONTINUE
34832  
34833         ELSEIF(ISUB.EQ.258) THEN
34834 C...g + q_j -> gluino + ~q_i
34835           XG2=SQM4
34836           XQ2=SQM3
34837           XMT=XG2-TH
34838           XMU=XG2-UH
34839           XST=XQ2-TH
34840           XSU=XQ2-UH
34841           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
34842      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
34843      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
34844      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
34845           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
34846      &    (SH*(UH+XG2)
34847      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
34848      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
34849      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
34850           ASYUK=RMSS(42)*AS
34851           FACQG1=COMFAC*AS*ASYUK*FACQG1/2D0
34852           FACQG2=COMFAC*AS*ASYUK*FACQG2/2D0
34853           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34854           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
34855             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
34856             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
34857             KCHQ=2
34858             IF(I.LT.0) KCHQ=3
34859             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
34860      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34861             DO 370 ISDE=1,2
34862               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
34863               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
34864               NCHN=NCHN+1
34865               ISIG(NCHN,ISDE)=I
34866               ISIG(NCHN,3-ISDE)=21
34867               ISIG(NCHN,3)=1
34868               SIGH(NCHN)=FACQG1*FACSEL
34869               NCHN=NCHN+1
34870               ISIG(NCHN,ISDE)=I
34871               ISIG(NCHN,3-ISDE)=21
34872               ISIG(NCHN,3)=2
34873               SIGH(NCHN)=FACQG2*FACSEL
34874   370       CONTINUE
34875   380     CONTINUE
34876         ENDIF
34877  
34878       ELSEIF(ISUB.LE.270) THEN
34879         IF(ISUB.EQ.261) THEN
34880 C...q_i + q_ibar -> ~t_1 + ~t_1bar
34881           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
34882      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34883           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
34884           FAC0=AS**2*4D0/9D0
34885           DO 390 I=MMIN1,MMAX1
34886             IA=IABS(I)
34887             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
34888             IF(IA.GE.11.AND.IA.LE.18) THEN
34889               EI=KCHG(IA,1)/3D0
34890               EJ=KCHG(KFNSQ,1)/3D0
34891               T3I=SIGN(1D0,EI)/2D0
34892               T3J=SIGN(1D0,EJ)/2D0
34893               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
34894               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
34895               XLF=2D0*(T3I-EI*XW)
34896               XRF=2D0*(-EI*XW)
34897               TAA=0.5D0*(EI*EJ)**2
34898               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
34899               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34900               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
34901               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
34902               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
34903             ENDIF
34904             NCHN=NCHN+1
34905             ISIG(NCHN,1)=I
34906             ISIG(NCHN,2)=-I
34907             ISIG(NCHN,3)=1
34908             SIGH(NCHN)=FACQQ1*FAC0
34909   390     CONTINUE
34910  
34911         ELSEIF(ISUB.EQ.263) THEN
34912 C...f + fbar -> ~t1 + ~t2bar
34913           DO 400 I=MMIN1,MMAX1
34914             IA=IABS(I)
34915             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
34916             EI=KCHG(IABS(I),1)/3D0
34917             TT3I=SIGN(1D0,EI)/2D0
34918             EJ=2D0/3D0
34919             TT3J=1D0/2D0
34920             FCOL=1D0
34921 C...Color factor for e+ e-
34922             IF(IA.GE.11) FCOL=3D0
34923             XLQ=2D0*(TT3J-EJ*XW)
34924             XRQ=2D0*(-EJ*XW)
34925             XLF=2D0*(TT3I-EI*XW)
34926             XRF=2D0*(-EI*XW)
34927             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
34928             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
34929             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
34930 C...Factor of 2 for t1 t2bar + t2 t1bar
34931             FACQQ1=2D0*COMFAC*AEM**2*TZZ*FCOL*4D0
34932             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
34933             NCHN=NCHN+1
34934             ISIG(NCHN,1)=I
34935             ISIG(NCHN,2)=-I
34936             ISIG(NCHN,3)=1
34937             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
34938      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
34939             NCHN=NCHN+1
34940             ISIG(NCHN,1)=I
34941             ISIG(NCHN,2)=-I
34942             ISIG(NCHN,3)=2
34943             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
34944      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
34945   400     CONTINUE
34946  
34947         ELSEIF(ISUB.EQ.264) THEN
34948 C...g + g -> ~t_1 + ~t_1bar
34949           XSU=SQM3-UH
34950           XST=SQM3-TH
34951           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
34952      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34953           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
34954           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
34955           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
34956           NCHN=NCHN+1
34957           ISIG(NCHN,1)=21
34958           ISIG(NCHN,2)=21
34959           ISIG(NCHN,3)=1
34960           SIGH(NCHN)=FACQQ1
34961           NCHN=NCHN+1
34962           ISIG(NCHN,1)=21
34963           ISIG(NCHN,2)=21
34964           ISIG(NCHN,3)=2
34965           SIGH(NCHN)=FACQQ2
34966   410     CONTINUE
34967         ENDIF
34968  
34969       ELSEIF(ISUB.LE.280) THEN
34970         IF(ISUB.EQ.271) THEN
34971 C...q + q' -> ~q + ~q' (~g exchange)
34972           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
34973           XMT=XMG2-TH
34974           XMU=XMG2-UH
34975           XSU1=SQM3-UH
34976           XSU2=SQM4-UH
34977           XST1=SQM3-TH
34978           XST2=SQM4-TH
34979           ASYUK=RMSS(42)*AS
34980           IF(ILR.EQ.1) THEN
34981             FACQQ1=COMFAC*ASYUK**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
34982             FACQQ2=COMFAC*ASYUK**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
34983             FACQQB=0.0D0
34984           ELSE
34985             FACQQ1=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMT**2 )
34986             FACQQ2=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMU**2 )
34987             FACQQB=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
34988      &      XMT/XMU )
34989           ENDIF
34990           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
34991           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
34992           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
34993             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
34994             IA=IABS(I)
34995             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
34996             KCHQ=2
34997             IF(I.LT.0) KCHQ=3
34998             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
34999               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
35000               JA=IABS(J)
35001               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
35002               IF(I*J.LT.0) GOTO 420
35003               NCHN=NCHN+1
35004               ISIG(NCHN,1)=I
35005               ISIG(NCHN,2)=J
35006               ISIG(NCHN,3)=1
35007               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35008      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35009               IF(I.EQ.J) THEN
35010                 IF(ILR.EQ.0) THEN
35011                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
35012      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
35013                 ELSE
35014                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
35015      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35016      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35017                 ENDIF
35018                 NCHN=NCHN+1
35019                 ISIG(NCHN,1)=I
35020                 ISIG(NCHN,2)=J
35021                 ISIG(NCHN,3)=2
35022                 IF(ILR.EQ.0) THEN
35023                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
35024      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
35025                 ELSE
35026                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
35027      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35028      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35029                 ENDIF
35030               ENDIF
35031   420       CONTINUE
35032   430     CONTINUE
35033  
35034         ELSEIF(ISUB.EQ.274) THEN
35035 C...q + qbar' -> ~q + ~qbar'
35036           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
35037           XMT=XMG2-TH
35038           XMU=XMG2-UH
35039           IF(ILR.EQ.0) THEN
35040 C...Mrenna...Normalization.and.1/XMT
35041             FACQQ1=COMFAC*AS**2*2D0/9D0*(
35042      &      (UH*TH-SQM3*SQM4)/XMT**2 )*RMSS(42)**2
35043             FACQQB=COMFAC*AS**2*4D0/9D0*(
35044      &      (UH*TH-SQM3*SQM4)/SH2 )
35045             FACQQI=-COMFAC*AS**2*4D0/27D0*(
35046      &      (UH*TH-SQM3*SQM4)/SH/XMT )*RMSS(42)
35047             FACQQB=FACQQB+FACQQ1+FACQQI
35048           ELSE
35049             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )*RMSS(42)**2
35050             FACQQB=FACQQ1
35051           ENDIF
35052           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
35053           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
35054           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
35055             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
35056             IA=IABS(I)
35057             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
35058             KCHQ=2
35059             IF(I.LT.0) KCHQ=3
35060             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
35061               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
35062               JA=IABS(J)
35063               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
35064               IF(I*J.GT.0) GOTO 440
35065               NCHN=NCHN+1
35066               ISIG(NCHN,1)=I
35067               ISIG(NCHN,2)=J
35068               ISIG(NCHN,3)=1
35069               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35070      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
35071               IF(ILR.EQ.0.AND.I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
35072      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35073   440       CONTINUE
35074   450     CONTINUE
35075  
35076         ELSEIF(ISUB.EQ.277) THEN
35077 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
35078 C...if i .eq. j covered in 274
35079           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
35080           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35081           FAC0=0D0
35082           DO 460 I=MMIN1,MMAX1
35083             IA=IABS(I)
35084             IF(I.EQ.0.OR.(IA.GT.MSTP(58).AND.IA.LE.10).OR.
35085      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
35086             IF(IA.EQ.KFNSQ) GOTO 460
35087             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
35088               EI=KCHG(IA,1)/3D0
35089               EJ=KCHG(KFNSQ,1)/3D0
35090               T3J=SIGN(0.5D0,EJ)
35091               T3I=SIGN(1D0,EI)/2D0
35092               IF(ILR.EQ.0) THEN
35093                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
35094                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
35095               ELSE
35096                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
35097                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
35098               ENDIF
35099               XLF=2D0*(T3I-EI*XW)
35100               XRF=2D0*(-EI*XW)
35101               IF(ILR.EQ.0) THEN
35102                 XRQ=0D0
35103               ELSE
35104                 XLQ=0D0
35105               ENDIF
35106               TAA=0.5D0*(EI*EJ)**2
35107               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
35108               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35109               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
35110               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35111               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
35112             ELSEIF(IA.LE.6) THEN
35113               FAC0=AS**2*8D0/9D0/2D0
35114             ENDIF
35115             NCHN=NCHN+1
35116             ISIG(NCHN,1)=I
35117             ISIG(NCHN,2)=-I
35118             ISIG(NCHN,3)=1
35119             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35120   460     CONTINUE
35121  
35122         ELSEIF(ISUB.EQ.279) THEN
35123 C...g + g -> ~q_j + ~q_jbar
35124           XSU=SQM3-UH
35125           XST=SQM3-TH
35126 C...5=RKF because ~t ~tbar treated separately
35127           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
35128           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
35129           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
35130           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
35131           NCHN=NCHN+1
35132           ISIG(NCHN,1)=21
35133           ISIG(NCHN,2)=21
35134           ISIG(NCHN,3)=1
35135           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35136           NCHN=NCHN+1
35137           ISIG(NCHN,1)=21
35138           ISIG(NCHN,2)=21
35139           ISIG(NCHN,3)=2
35140           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35141   470     CONTINUE
35142  
35143         ENDIF
35144       ENDIF
35145 CMRENNA--
35146  
35147       RETURN
35148       END
35149  
35150 C*********************************************************************
35151  
35152 C...PYSGTC
35153 C...Subprocess cross sections for Technicolor processes.
35154 C...Auxiliary to PYSIGH.
35155  
35156       SUBROUTINE PYSGTC(NCHN,SIGS)
35157  
35158 C...Double precision and integer declarations
35159       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35160       IMPLICIT INTEGER(I-N)
35161       INTEGER PYK,PYCHGE,PYCOMP
35162 C...Parameter statement to help give large particle numbers.
35163       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35164      &KEXCIT=4000000,KDIMEN=5000000)
35165 C...Commonblocks
35166       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35167       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35168       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
35169       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
35170       COMMON/PYINT1/MINT(400),VINT(400)
35171       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
35172       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
35173       COMMON/PYINT4/MWID(500),WIDS(500,5)
35174       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
35175       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
35176      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
35177      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
35178      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
35179       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
35180      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
35181 C...Local arrays and complex variables
35182       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
35183       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
35184       COMPLEX*16 SSMX,DAAST,DZAST,DWAST
35185       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
35186       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
35187       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
35188       COMPLEX*16 DVVS,DVVT,DVVU
35189       INTEGER INDX(6)
35190  
35191 C...Combinations of weak mixing angle.
35192       TANW=SQRT(XW/XW1)
35193       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
35194  
35195 C...Convert almost equivalent technicolor processes into
35196 C...a few basic processes, and set distinguishing parameters.
35197       IF(ISUB.GE.361.AND.ISUB.LE.380) THEN
35198         SQTV=RTCM(12)**2
35199         SQTA=RTCM(13)**2
35200         SN2W=2D0*SQRT(XW*XW1)
35201         CS2W=1D0-2D0*XW
35202         CT2W=CS2W/SN2W
35203         CSXI=COS(ASIN(RTCM(3)))
35204         CSXIP=COS(ASIN(RTCM(4)))
35205         QUPD=2D0*RTCM(2)-1D0
35206         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
35207         CAB2=0D0
35208         VOGP=0D0
35209         VRGP=0D0
35210         AOGP=0D0
35211         ARGP=0D0
35212         VXGP=0D0
35213         AXGP=0D0
35214         VAGP=0D0
35215         VZGP=0D0
35216         VWGP=0D0
35217 C... rho_tc0, etc. -> W_L W_L, W_L W_T
35218         IF(ISUB.EQ.361) THEN
35219            KFA=24
35220            KFB=24
35221            CAB2=RTCM(3)**4
35222            AXGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
35223            ARGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
35224            VOGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(12)
35225 C...Multiply by sqrt(2) to account for W^+_T W^-_L + W^+_L W^-_T.
35226            AXGP = SQRT(2D0)*AXGP
35227            ARGP = SQRT(2D0)*ARGP
35228            VOGP = SQRT(2D0)*VOGP
35229 C... rho_tc0 -> W_L pi_tc-
35230         ELSEIF(ISUB.EQ.362) THEN
35231            KFA=24
35232            KFB=KTECHN+211
35233            ISUB=361
35234            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35235 C... pi_tc pi_tc
35236         ELSEIF(ISUB.EQ.363) THEN
35237            KFA=KTECHN+211
35238            KFB=KTECHN+211
35239            ISUB=361
35240            CAB2=(1D0-RTCM(3)**2)**2
35241 C... rho_tc0/omega_tc -> gamma pi_tc
35242         ELSEIF(ISUB.EQ.364) THEN
35243            KFA=22
35244            KFB=KTECHN+111
35245            ISUB=361
35246            VOGP=CSXI/RTCM(12)
35247            VRGP=VOGP*QUPD
35248            VAGP=2D0*QUPD*CSXI
35249            VZGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
35250 C... gamma pi_tc'
35251         ELSEIF(ISUB.EQ.365) THEN
35252            KFA=22
35253            KFB=KTECHN+221
35254            ISUB=361
35255            VRGP=CSXIP/RTCM(12)
35256            VOGP=VRGP*QUPD
35257            VAGP=2D0*Q2UD*CSXIP
35258            VZGP=CSXIP/SN2W*(1D0-4D0*XW*Q2UD)
35259 C... Z pi_tc
35260         ELSEIF(ISUB.EQ.366) THEN
35261            KFA=23
35262            KFB=KTECHN+111
35263            ISUB=361
35264            VOGP=CSXI*CT2W/RTCM(12)
35265            VRGP=-QUPD*CSXI*TANW/RTCM(12)
35266            VAGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
35267            VZGP=-QUPD*CSXI*CS2W/XW1
35268 C... Z pi_tc'
35269         ELSEIF(ISUB.EQ.367) THEN
35270            KFA=23
35271            KFB=KTECHN+221
35272            ISUB=361
35273 C...RTCM(48) is the M_V for the techni-a
35274            VXGP=-CSXIP/SN2W/RTCM(48)
35275            VRGP=CSXIP*CT2W/RTCM(12)
35276            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
35277            VAGP=CSXIP*(1D0-4D0*Q2UD*XW)/SN2W
35278            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*XW**2)/SN2W**2
35279 C... W_T pi_tc
35280         ELSEIF(ISUB.EQ.368) THEN
35281            KFA=24
35282            KFB=KTECHN+211
35283            ISUB=361
35284 C...RTCM(49) is the M_A for the techni-a
35285            AXGP=-CSXI/(2D0*SQRT(XW))/RTCM(49)
35286            VOGP=CSXI/(2D0*SQRT(XW))/RTCM(12)
35287            ARGP=CSXI/(2D0*SQRT(XW))/RTCM(13)
35288            VAGP=QUPD*CSXI/(2D0*SQRT(XW))
35289            VZGP=-QUPD*CSXI/(2D0*SQRT(XW1))
35290 C... rho_tc+, a_T+ -> W_L Z_L, W_T Z_L
35291         ELSEIF(ISUB.EQ.370) THEN
35292            KFA=24
35293            KFB=23
35294            CAB2=RTCM(3)**4
35295            ARGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
35296            AXGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
35297 C... W_L pi_tc0
35298         ELSEIF(ISUB.EQ.371) THEN
35299            KFA=24
35300            KFB=KTECHN+111
35301            ISUB=370
35302            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35303 C... Z_L pi_tc+
35304         ELSEIF(ISUB.EQ.372) THEN
35305            KFA=KTECHN+211
35306            KFB=23
35307            ISUB=370
35308            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
35309 C... pi_tc+ pi_tc0
35310         ELSEIF(ISUB.EQ.373) THEN
35311            KFA=KTECHN+211
35312            KFB=KTECHN+111
35313            ISUB=370
35314            CAB2=(1D0-RTCM(3)**2)**2
35315 C... gamma pi_tc+
35316         ELSEIF(ISUB.EQ.374) THEN
35317            KFA=KTECHN+211
35318            KFB=22
35319            ISUB=370
35320            VRGP=QUPD*CSXI/RTCM(12)
35321            VWGP=QUPD*CSXI/(2D0*SQRT(XW))
35322            AXGP=-CSXI/RTCM(49)
35323 C... Z_T pi_tc+
35324         ELSEIF(ISUB.EQ.375) THEN
35325            KFA=KTECHN+211
35326            KFB=23
35327            ISUB=370
35328            VRGP=-QUPD*CSXI*TANW/RTCM(12)
35329            ARGP=CSXI/(2D0*SQRT(XW*XW1))/RTCM(13)
35330            VWGP=-QUPD*CSXI/(2D0*SQRT(XW1))
35331            AXGP=-CSXI*CT2W/RTCM(49)
35332 C... W_T pi_tc0
35333         ELSEIF(ISUB.EQ.376) THEN
35334            KFA=24
35335            KFB=KTECHN+111
35336            ISUB=370
35337            VRGP=0D0
35338            ARGP=-CSXI/(2D0*SQRT(XW))/RTCM(13)
35339            AXGP=CSXI/(2D0*SQRT(XW))/RTCM(49)
35340 C... W_T pi_tc0'
35341         ELSEIF(ISUB.EQ.377) THEN
35342            KFA=24
35343            KFB=KTECHN+221
35344            ISUB=370
35345            VRGP=CSXIP/(2D0*SQRT(XW))/RTCM(12)
35346            VWGP=CSXIP/(2D0*XW)
35347            VXGP=-CSXIP/(2D0*SQRT(XW))/RTCM(48)
35348 C... gamma W+
35349         ELSEIF(ISUB.EQ.378) THEN
35350            KFA=24
35351            KFB=22
35352            ISUB=370
35353            VRGP=QUPD*RTCM(3)/RTCM(12)
35354            AXGP=-RTCM(3)/RTCM(49)
35355 C... gamma Z
35356         ELSEIF(ISUB.EQ.379) THEN
35357            KFA=23
35358            KFB=22
35359            ISUB=361
35360            VOGP=RTCM(3)/RTCM(12)
35361            VRGP=QUPD*RTCM(3)/RTCM(12)
35362         ELSEIF(ISUB.EQ.380) THEN
35363            KFA=23
35364            KFB=23
35365            ISUB=361
35366            VOGP=RTCM(3)*CT2W/RTCM(12)
35367            VRGP=-QUPD*RTCM(3)*TANW/RTCM(12)
35368         ENDIF
35369       ENDIF
35370  
35371 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
35372       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
35373         IF(ITCM(5).LE.4) THEN
35374           SQDQQS=1D0/SH2
35375           SQDQQT=1D0/TH2
35376           SQDQQU=1D0/UH2
35377           SQDGGS=SQDQQS
35378           SQDGGT=SQDQQT
35379           SQDGGU=SQDQQU
35380           REDGGS=1D0/SH
35381           REDGGT=1D0/TH
35382           REDGGU=1D0/UH
35383           REDGTU=1D0/UH/TH
35384           REDGSU=1D0/SH/UH
35385           REDGST=1D0/SH/TH
35386           REDQST=1D0/SH/TH
35387           REDQTU=1D0/UH/TH
35388           SQDLGS=0D0
35389           SQDLGT=0D0
35390           SQDQTS=SQDQQS
35391         ELSEIF(ITCM(5).EQ.5) THEN
35392           TANT3=RTCM(21)
35393           IF(ITCM(2).EQ.0) THEN
35394             IMDL=1
35395           ELSE
35396             IMDL=2
35397           ENDIF
35398           ALPRHT=2.16D0*(3D0/ITCM(1))
35399           SIN2T=2D0*TANT3/(TANT3**2+1D0)
35400           SINT3=TANT3/SQRT(TANT3**2+1D0)
35401           XIG=SQRT(PYALPS(SH)/ALPRHT)
35402           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
35403      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
35404           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
35405      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
35406           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
35407      &    SINT3**2)*2D0/SIN2T
35408           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
35409      &    SINT3**2)*2D0/SIN2T
35410  
35411           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
35412           SM1112=X12*RTCM(28)**2*SIN2T
35413           SM1121=-X21*RTCM(28)**2*SIN2T
35414           SM2212=-SM1112
35415           SM2221=-SM1121
35416           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
35417      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
35418  
35419 C.........SH LOOP
35420           ZTC(1,1)=DCMPLX(SH,0D0)
35421           CALL PYWIDT(3100021,SH,WDTP,WDTE)
35422           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
35423           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
35424           CALL PYWIDT(3100113,SH,WDTP,WDTE)
35425           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
35426           CALL PYWIDT(3400113,SH,WDTP,WDTE)
35427           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
35428           CALL PYWIDT(3200113,SH,WDTP,WDTE)
35429           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
35430           CALL PYWIDT(3300113,SH,WDTP,WDTE)
35431           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
35432           ZTC(1,2)=(0D0,0D0)
35433           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
35434           ZTC(1,4)=ZTC(1,3)
35435           ZTC(1,5)=ZTC(1,2)
35436           ZTC(1,6)=ZTC(1,2)
35437           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
35438           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
35439           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
35440           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
35441           ZTC(3,4)=-SM1122
35442           ZTC(3,5)=-SM1112
35443           ZTC(3,6)=-SM1121
35444           ZTC(4,5)=-SM2212
35445           ZTC(4,6)=-SM2221
35446           ZTC(5,6)=-SM1221
35447  
35448           DO 110 I=1,5
35449             DO 100 J=I+1,6
35450                ZTC(J,I)=ZTC(I,J)
35451   100       CONTINUE
35452   110     CONTINUE
35453           CALL PYLDCM(ZTC,6,6,INDX,D)
35454           DO 130 I=1,6
35455             DO 120 J=1,6
35456              YTC(I,J)=(0D0,0D0)
35457               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35458   120       CONTINUE
35459   130     CONTINUE
35460  
35461           DO 140 I=1,6
35462             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35463   140     CONTINUE
35464           DGGS=YTC(1,1)
35465           DVVS=YTC(2,2)
35466           DGVS=YTC(1,2)
35467  
35468           XIG=SQRT(PYALPS(-TH)/ALPRHT)
35469 C.........TH LOOP
35470           ZTC(1,1)=DCMPLX(TH)
35471           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
35472           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
35473           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
35474           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
35475           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
35476           ZTC(1,2)=(0D0,0D0)
35477           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
35478           ZTC(1,4)=ZTC(1,3)
35479           ZTC(1,5)=ZTC(1,2)
35480           ZTC(1,6)=ZTC(1,2)
35481           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
35482           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
35483           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
35484           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
35485           ZTC(3,4)=-SM1122
35486           ZTC(3,5)=-SM1112
35487           ZTC(3,6)=-SM1121
35488           ZTC(4,5)=-SM2212
35489           ZTC(4,6)=-SM2221
35490           ZTC(5,6)=-SM1221
35491           DO 160 I=1,5
35492             DO 150 J=I+1,6
35493                ZTC(J,I)=ZTC(I,J)
35494   150       CONTINUE
35495   160     CONTINUE
35496           CALL PYLDCM(ZTC,6,6,INDX,D)
35497           DO 180 I=1,6
35498             DO 170 J=1,6
35499               YTC(I,J)=(0D0,0D0)
35500               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35501   170       CONTINUE
35502   180     CONTINUE
35503           DO 190 I=1,6
35504             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35505   190     CONTINUE
35506           DGGT=YTC(1,1)
35507           DVVT=YTC(2,2)
35508           DGVT=YTC(1,2)
35509  
35510           XIG=SQRT(PYALPS(-UH)/ALPRHT)
35511 C.........UH LOOP
35512           ZTC(1,1)=DCMPLX(UH,0D0)
35513           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
35514           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
35515           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
35516           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
35517           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
35518           ZTC(1,2)=(0D0,0D0)
35519           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
35520           ZTC(1,4)=ZTC(1,3)
35521           ZTC(1,5)=ZTC(1,2)
35522           ZTC(1,6)=ZTC(1,2)
35523           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
35524           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
35525           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
35526           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
35527           ZTC(3,4)=-SM1122
35528           ZTC(3,5)=-SM1112
35529           ZTC(3,6)=-SM1121
35530           ZTC(4,5)=-SM2212
35531           ZTC(4,6)=-SM2221
35532           ZTC(5,6)=-SM1221
35533           DO 210 I=1,5
35534             DO 200 J=I+1,6
35535                ZTC(J,I)=ZTC(I,J)
35536   200       CONTINUE
35537   210     CONTINUE
35538           CALL PYLDCM(ZTC,6,6,INDX,D)
35539           DO 230 I=1,6
35540             DO 220 J=1,6
35541               YTC(I,J)=(0D0,0D0)
35542               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
35543   220       CONTINUE
35544   230     CONTINUE
35545           DO 240 I=1,6
35546             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
35547   240     CONTINUE
35548           DGGU=YTC(1,1)
35549           DVVU=YTC(2,2)
35550           DGVU=YTC(1,2)
35551  
35552           IF(IMDL.EQ.1) THEN
35553             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
35554             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
35555             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
35556             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
35557             DQGS=DGGS-DGVS*DCMPLX(TANT3)
35558             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35559           ELSE
35560             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
35561             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
35562             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
35563             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
35564             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35565             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
35566           ENDIF
35567  
35568           SQDQTS=ABS(DQTS)**2
35569           SQDQQS=ABS(DQQS)**2
35570           SQDQQT=ABS(DQQT)**2
35571           SQDQQU=ABS(DQQU)**2
35572           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
35573           REDLGS=DBLE(DQGS)
35574           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
35575           REDHGS=DBLE(DTGS)
35576           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
35577  
35578           SQDGGS=ABS(DGGS)**2
35579           SQDGGT=ABS(DGGT)**2
35580           SQDGGU=ABS(DGGU)**2
35581           REDGGS=DBLE(DGGS)
35582           REDGGT=DBLE(DGGT)
35583           REDGGU=DBLE(DGGU)
35584           REDGTU=DBLE(DGGU*DCONJG(DGGT))
35585           REDGSU=DBLE(DGGU*DCONJG(DGGS))
35586           REDGST=DBLE(DGGS*DCONJG(DGGT))
35587           REDQST=DBLE(DQQS*DCONJG(DQQT))
35588           REDQTU=DBLE(DQQT*DCONJG(DQQU))
35589         ENDIF
35590       ENDIF
35591  
35592  
35593 C...Differential cross section expressions.
35594  
35595       IF(ISUB.LE.190) THEN
35596         IF(ISUB.EQ.149) THEN
35597 C...g + g -> eta_tc
35598           KCTC=PYCOMP(KTECHN+331)
35599           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
35600           HS=SHR*WDTP(0)
35601           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
35602           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35603           HP=SH
35604           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
35605           HI=HP*WDTP(3)
35606           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35607           NCHN=NCHN+1
35608           ISIG(NCHN,1)=21
35609           ISIG(NCHN,2)=21
35610           ISIG(NCHN,3)=1
35611           SIGH(NCHN)=HI*FACBW*HF
35612   250     CONTINUE
35613  
35614         ELSEIF(ISUB.EQ.165) THEN
35615 C...q + qbar -> l+ + l- (including contact term for compositeness)
35616           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35617           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35618           KFF=IABS(KFPR(ISUB,1))
35619           EF=KCHG(KFF,1)/3D0
35620           AF=SIGN(1D0,EF+0.1D0)
35621           VF=AF-4D0*EF*XWV
35622           VALF=VF+AF
35623           VARF=VF-AF
35624           FCOF=1D0
35625           IF(KFF.LE.10) FCOF=3D0
35626           WID2=1D0
35627           IF(KFF.EQ.6) WID2=WIDS(6,1)
35628           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
35629           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
35630           DO 260 I=MMINA,MMAXA
35631             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
35632             EI=KCHG(IABS(I),1)/3D0
35633             AI=SIGN(1D0,EI+0.1D0)
35634             VI=AI-4D0*EI*XWV
35635             VALI=VI+AI
35636             VARI=VI-AI
35637             FCOI=1D0
35638             IF(IABS(I).LE.10) FCOI=FACA/3D0
35639             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
35640               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
35641      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
35642      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
35643             ELSE
35644               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
35645      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
35646             ENDIF
35647             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
35648      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
35649             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
35650             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
35651      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
35652             NCHN=NCHN+1
35653             ISIG(NCHN,1)=I
35654             ISIG(NCHN,2)=-I
35655             ISIG(NCHN,3)=1
35656             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
35657   260     CONTINUE
35658  
35659         ELSEIF(ISUB.EQ.166) THEN
35660 C...q + q'bar -> l + nu_l (including contact term for compositeness)
35661           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
35662           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
35663           KFF=IABS(KFPR(ISUB,1))
35664           FCOF=1D0
35665           IF(KFF.LE.10) FCOF=3D0
35666           DO 280 I=MMIN1,MMAX1
35667             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
35668             IA=IABS(I)
35669             DO 270 J=MMIN2,MMAX2
35670               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
35671               JA=IABS(J)
35672               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
35673               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35674      &        GOTO 270
35675               FCOI=1D0
35676               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
35677               WID2=1D0
35678               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
35679      &        MOD(J,2).EQ.0)) THEN
35680                 IF(KFF.EQ.5) WID2=WIDS(6,2)
35681                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
35682                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
35683               ELSE
35684                 IF(KFF.EQ.5) WID2=WIDS(6,3)
35685                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
35686                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
35687               ENDIF
35688               NCHN=NCHN+1
35689               ISIG(NCHN,1)=I
35690               ISIG(NCHN,2)=J
35691               ISIG(NCHN,3)=1
35692               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
35693               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
35694      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
35695   270       CONTINUE
35696   280     CONTINUE
35697         ENDIF
35698  
35699       ELSEIF(ISUB.LE.200) THEN
35700         IF(ISUB.EQ.191) THEN
35701 C...q + qbar -> rho_tc0.
35702           KCTC=PYCOMP(KTECHN+113)
35703           SQMRHT=PMAS(KCTC,1)**2
35704           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35705           HS=SHR*WDTP(0)
35706           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
35707           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35708           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35709           ALPRHT=2.16D0*(3D0/ITCM(1))
35710           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
35711           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
35712           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35713           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35714           DO 290 I=MMINA,MMAXA
35715             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
35716             IA=IABS(I)
35717             EI=KCHG(IABS(I),1)/3D0
35718             AI=SIGN(1D0,EI+0.1D0)
35719             VI=AI-4D0*EI*XWV
35720             VALI=0.5D0*(VI+AI)
35721             VARI=0.5D0*(VI-AI)
35722             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
35723      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
35724             IF(IA.LE.10) HI=HI*FACA/3D0
35725             NCHN=NCHN+1
35726             ISIG(NCHN,1)=I
35727             ISIG(NCHN,2)=-I
35728             ISIG(NCHN,3)=1
35729             SIGH(NCHN)=HI*FACBW*HF
35730   290     CONTINUE
35731  
35732         ELSEIF(ISUB.EQ.192) THEN
35733 C...q + qbar' -> rho_tc+/-.
35734           KCTC=PYCOMP(KTECHN+213)
35735           SQMRHT=PMAS(KCTC,1)**2
35736           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
35737           HS=SHR*WDTP(0)
35738           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
35739           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35740           ALPRHT=2.16D0*(3D0/ITCM(1))
35741           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
35742      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
35743           DO 310 I=MMIN1,MMAX1
35744             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
35745             IA=IABS(I)
35746             DO 300 J=MMIN2,MMAX2
35747               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
35748               JA=IABS(J)
35749               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
35750               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35751      &        GOTO 300
35752               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
35753               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
35754               HI=HP
35755               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
35756               NCHN=NCHN+1
35757               ISIG(NCHN,1)=I
35758               ISIG(NCHN,2)=J
35759               ISIG(NCHN,3)=1
35760               SIGH(NCHN)=HI*FACBW*HF
35761   300       CONTINUE
35762   310     CONTINUE
35763  
35764         ELSEIF(ISUB.EQ.193) THEN
35765 C...q + qbar -> omega_tc0.
35766           KCTC=PYCOMP(KTECHN+223)
35767           SQMOMT=PMAS(KCTC,1)**2
35768           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35769           HS=SHR*WDTP(0)
35770           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
35771           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
35772           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35773           ALPRHT=2.16D0*(3D0/ITCM(1))
35774           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
35775      &    (2D0*RTCM(2)-1D0)**2
35776           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
35777           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
35778           DO 320 I=MMINA,MMAXA
35779             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
35780             IA=IABS(I)
35781             EI=KCHG(IABS(I),1)/3D0
35782             AI=SIGN(1D0,EI+0.1D0)
35783             VI=AI-4D0*EI*XWV
35784             VALI=0.5D0*(VI+AI)
35785             VARI=0.5D0*(VI-AI)
35786             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
35787      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
35788             IF(IA.LE.10) HI=HI*FACA/3D0
35789             NCHN=NCHN+1
35790             ISIG(NCHN,1)=I
35791             ISIG(NCHN,2)=-I
35792             ISIG(NCHN,3)=1
35793             SIGH(NCHN)=HI*FACBW*HF
35794   320     CONTINUE
35795  
35796         ELSEIF(ISUB.EQ.194) THEN
35797 C...f + fbar -> f' + fbar' via s-channel rho_tc, omega_tc a_T0.
35798 C...Default final state is e+e-
35799           KFA=KFPR(ISUBSV,1)
35800           ALPRHT=2.16D0*(3D0/ITCM(1))
35801           HP=AEM**2*COMFAC
35802
35803           SN2W=2D0*SQRT(XW*XW1)
35804 C          TANW=SQRT(PARU(102)/(1D0-PARU(102)))
35805 C          CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
35806  
35807           QUPD=2D0*RTCM(2)-1D0
35808           FAR=SQRT(AEM/ALPRHT)
35809           FAO=FAR*QUPD
35810           FZR=FAR*CT2W
35811           FZO=-FAO*TANW
35812 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35813           FZX=-FAR/SN2W*RTCM(47)
35814           SFAR=FAR**2
35815           SFAO=FAO**2
35816           SFZR=FZR**2
35817           SFZO=FZO**2
35818           SFZX=FZX**2
35819           CALL PYWIDT(23,SH,WDTP,WDTE)
35820           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
35821           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35822           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
35823           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35824           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
35825           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
35826           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
35827 C...Propagator including a_T^0
35828           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
35829      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
35830 C...Add in techni-a contribution
35831           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
35832           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
35833      $     SFZX*SSMR*SSMO)/DETD/SH
35834           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
35835           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
35836  
35837           XWRHT=1D0/(4D0*XW*(1D0-XW))
35838           KFF=IABS(KFPR(ISUB,1))
35839           EF=KCHG(KFF,1)/3D0
35840           AF=SIGN(1D0,EF+0.1D0)
35841           VF=AF-4D0*EF*XWV
35842           VALF=0.5D0*(VF+AF)
35843           VARF=0.5D0*(VF-AF)
35844           FCOF=1D0
35845           IF(KFF.LE.10) FCOF=3D0
35846  
35847           WID2=1D0
35848           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
35849           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
35850           DZZ=DZZ*DCMPLX(XWRHT,0D0)
35851           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
35852  
35853           DO 330 I=MMINA,MMAXA
35854             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
35855             EI=KCHG(IABS(I),1)/3D0
35856             AI=SIGN(1D0,EI+0.1D0)
35857             VI=AI-4D0*EI*XWV
35858             VALI=0.5D0*(VI+AI)
35859             VARI=0.5D0*(VI-AI)
35860             FCOI=FCOF
35861             IF(IABS(I).LE.10) FCOI=FCOI/3D0
35862             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
35863             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
35864             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
35865             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
35866             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
35867      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
35868             NCHN=NCHN+1
35869             ISIG(NCHN,1)=I
35870             ISIG(NCHN,2)=-I
35871             ISIG(NCHN,3)=1
35872             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
35873   330     CONTINUE
35874  
35875         ELSEIF(ISUB.EQ.195) THEN
35876 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+, a_T+
35877           KFA=KFPR(ISUBSV,1)
35878           KFB=KFA+1
35879           ALPRHT=2.16D0*(3D0/ITCM(1))
35880           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
35881  
35882           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
35883 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35884 C
35885 C...Propagator including a_T^+
35886           FWX=-FWR*RTCM(47)
35887           CALL PYWIDT(24,SH,WDTP,WDTE)
35888           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
35889           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
35890           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
35891           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
35892           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
35893           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
35894      &     DCMPLX(FWX**2,0D0)*SSMR
35895           DWW=SSMR*SSMX/DETD/SH
35896           FCOF=1D0
35897           IF(KFA.LE.8) FCOF=3D0
35898           HP=FACTC*ABS(DWW)**2*FCOF
35899  
35900           DO 350 I=MMIN1,MMAX1
35901             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
35902             IA=IABS(I)
35903             DO 340 J=MMIN2,MMAX2
35904               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
35905               JA=IABS(J)
35906               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
35907               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35908      &        GOTO 340
35909               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
35910               HI=HP
35911               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
35912               NCHN=NCHN+1
35913               ISIG(NCHN,1)=I
35914               ISIG(NCHN,2)=J
35915               ISIG(NCHN,3)=1
35916               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
35917   340       CONTINUE
35918   350     CONTINUE
35919         ENDIF
35920  
35921       ELSEIF(ISUB.LE.380) THEN
35922         ALPRHT=2.16D0*(3D0/ITCM(1))
35923         IF(ISUB.EQ.361) THEN
35924           FAR=SQRT(AEM/ALPRHT)
35925           FAO=FAR*QUPD
35926           FZR=FAR*CT2W
35927           FZO=-FAO*TANW
35928 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
35929           FZX=-FAR/SN2W*RTCM(47)
35930           SFAR=FAR**2
35931           SFAO=FAO**2
35932           SFZR=FZR**2
35933           SFZO=FZO**2
35934           SFZX=FZX**2
35935           CALL PYWIDT(23,SH,WDTP,WDTE)
35936           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
35937           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
35938           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
35939           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
35940           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
35941           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
35942           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
35943           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
35944      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
35945 C...Add in techni-a contribution
35946           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
35947           DARHO=-(SSMX*(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)-
35948      $     SFZX*FAR*SSMO)/DETD/SH
35949           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH*SSMX
35950           DAOME=-(SSMX*(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)-
35951      $     SFZX*FAO*SSMR)/DETD/SH
35952           DZOME=-(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH*SSMX
35953           DAAST=-FZX*(FAO*FZO*SSMR+FAR*FZR*SSMO)/DETD/SH
35954           DZAST=-FZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)/DETD/SH
35955           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
35956      $     SFZX*SSMR*SSMO)/DETD/SH
35957           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
35958           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
35959  
35960 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
35961 C...W+W-, W pi_tc, pi_T pi_T, etc.
35962           FACA=(SH**2*BE34**2-(TH-UH)**2)
35963           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
35964           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
35965           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
35966           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH 
35967           DO 370 I=MMINA,MMAXA
35968             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
35969             IA=IABS(I)
35970             EI=KCHG(IABS(I),1)/3D0
35971             AI=SIGN(1D0,EI+0.1D0)
35972             VI=AI-4D0*EI*XWV
35973             VALI=0.25D0*(VI+AI) ! = \zeta_{iL} in PRD67-115011
35974             VARI=0.25D0*(VI-AI) ! = \zeta_{iR} in PRD67-115011
35975 C...........Eqs. (5) and (6) in LSTC-rates.pdf
35976             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
35977             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
35978             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*VXGP
35979             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
35980      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
35981             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
35982             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
35983             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*VXGP
35984             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
35985      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
35986             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
35987 C...........Eqs. (5) and (7) in LSTC-rates.pdf
35988             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
35989             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
35990             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*AXGP
35991             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
35992             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
35993             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*AXGP
35994             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
35995 C
35996 C...........Eqs. (24) in PRD67-115011 with DAA, etc.terms dropped.
35997 C
35998 c$$$            F2L=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
35999 c$$$     $      VALI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
36000 c$$$            F2R=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
36001 c$$$     $      VARI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
36002             F2L=EI*DARHO/FAR + VALI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
36003             F2R=EI*DARHO/FAR + VARI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
36004             HK=(ABS(F2L)**2+ABS(F2R)**2)*2D0*FACA*CAB2/SH
36005             HI=HI+HJ+HK
36006             IF(IA.LE.10) HI=HI/3D0
36007             NCHN=NCHN+1
36008             ISIG(NCHN,1)=I
36009             ISIG(NCHN,2)=-I
36010             ISIG(NCHN,3)=1
36011             IF(KFA.EQ.KFB) THEN
36012                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
36013             ELSEIF(ISUBSV.EQ.362.OR.ISUBSV.EQ.368) THEN
36014                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
36015                NCHN=NCHN+1
36016                ISIG(NCHN,1)=I
36017                ISIG(NCHN,2)=-I
36018                ISIG(NCHN,3)=2
36019                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
36020             ELSE 
36021                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
36022             ENDIF
36023   370     CONTINUE
36024  
36025         ELSEIF(ISUB.EQ.370) THEN
36026 C...f + fbar' -> W_L Z_L, W_L Z_T, W_T, Z_L, W_L pi_tc, Z_L pi_tc, pi_tc pi_tc
36027 C...f + fbar' -> gamma pi_tc, etc.
36028           FACA=(SH**2*BE34**2-(TH-UH)**2)
36029           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
36030           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
36031           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
36032           ALPRHT=2.16D0*(3D0/ITCM(1))
36033           FACHP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
36034           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
36035 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36036           FWX=-FWR*RTCM(47)
36037           CALL PYWIDT(24,SH,WDTP,WDTE)
36038           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
36039           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
36040           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
36041           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
36042           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
36043           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
36044      &     DCMPLX(FWX**2,0D0)*SSMR
36045           DWW=SSMR*SSMX/DETD/SH
36046           DWRHO=-DCMPLX(FWR,0D0)*SSMX/DETD/SH
36047           DWAST=-DCMPLX(FWX,0D0)*SSMR/DETD/SH
36048           HP=FACHP*(AFAC*ABS(DWRHO*ARGP+DWAST*AXGP)**2+
36049      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP+DWAST*VXGP)**2)
36050 C
36051 C...........Eq. (25) in PRD67-115011 with DWW term dropped.
36052 C
36053 c$$$          HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWW + DWRHO/FWR)**2
36054           HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWRHO/FWR)**2
36055 C...Add in W_L Z_T axial and vector contributions.
36056           IF(ISUBSV.EQ.370) HP=HP+FACHP*RTCM(3)**2*(
36057      $    (TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM4)*     !AFAC w/ switched masses.
36058      $    ABS(DWRHO/RTCM(13)-DWAST/RTCM(49)*CS2W)**2/SN2W**2+
36059      $    VFAC*QUPD**2*XW/XW1*ABS(DWRHO)**2/RTCM(12)**2)
36060           DO 410 I=MMIN1,MMAX1
36061             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
36062             IA=IABS(I)
36063             DO 400 J=MMIN2,MMAX2
36064               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
36065               JA=IABS(J)
36066               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
36067               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36068      &        GOTO 400
36069               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36070               HI=HP
36071               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
36072               NCHN=NCHN+1
36073               ISIG(NCHN,1)=I
36074               ISIG(NCHN,2)=J
36075               ISIG(NCHN,3)=1
36076               IF(ISUBSV.EQ.374.OR.ISUBSV.EQ.378) THEN
36077                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)
36078               ELSE
36079                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
36080      &          WIDS(PYCOMP(KFB),2)
36081               ENDIF
36082   400       CONTINUE
36083   410     CONTINUE
36084         ENDIF
36085  
36086       ELSEIF(ISUB.LE.390) THEN
36087         IF(ISUB.EQ.381) THEN
36088 C...f + f' -> f + f' (g exchange)
36089           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
36090           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
36091      &    MSTP(34)*2D0/3D0*UH2*REDQST)
36092           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
36093           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
36094           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
36095           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
36096 C...Modifications from contact interactions (compositeness)
36097             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
36098             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36099      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
36100             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36101      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
36102             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
36103             RATCII=(FACCI1+FACCI2+FACQQI)/(FACCI1+FACCI2)
36104           ELSEIF(ITCM(5).EQ.5) THEN
36105             FACCI1=FACQQ1
36106             FACCIB=FACQQB
36107             FACCI2=FACQQ2
36108             FACCI3=FACQQ1
36109 CSM.......Check this change from
36110 CSM            RATCII=1D0
36111             RATCII=RATQQI
36112           ENDIF
36113           DO 430 I=MMIN1,MMAX1
36114             IA=IABS(I)
36115             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
36116             DO 420 J=MMIN2,MMAX2
36117               JA=IABS(J)
36118               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
36119               NCHN=NCHN+1
36120               ISIG(NCHN,1)=I
36121               ISIG(NCHN,2)=J
36122               ISIG(NCHN,3)=1
36123               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
36124      &        JA.GE.3))) THEN
36125                 SIGH(NCHN)=FACQQ1
36126                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
36127               ELSE
36128                 SIGH(NCHN)=FACCI1
36129                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
36130                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
36131               ENDIF
36132               IF(I.EQ.J) THEN
36133                 NCHN=NCHN+1
36134                 ISIG(NCHN,1)=I
36135                 ISIG(NCHN,2)=J
36136                 ISIG(NCHN,3)=2
36137                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
36138                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
36139                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
36140                 ELSE
36141                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
36142                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
36143                 ENDIF
36144               ENDIF
36145   420       CONTINUE
36146   430     CONTINUE
36147  
36148         ELSEIF(ISUB.EQ.382) THEN
36149 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
36150           CALL PYWIDT(21,SH,WDTP,WDTE)
36151           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
36152           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36153           IF(ITCM(5).EQ.1) THEN
36154 C...Modifications from contact interactions (compositeness)
36155             FACCIB=FACQQB
36156             DO 440 I=1,2
36157               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
36158      &        WDTE(I,2)+WDTE(I,4))
36159   440       CONTINUE
36160           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
36161             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
36162      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36163           ELSEIF(ITCM(5).EQ.5) THEN
36164             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
36165      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
36166             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
36167           ENDIF
36168           DO 450 I=MMINA,MMAXA
36169             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36170      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
36171             NCHN=NCHN+1
36172             ISIG(NCHN,1)=I
36173             ISIG(NCHN,2)=-I
36174             ISIG(NCHN,3)=1
36175             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
36176               SIGH(NCHN)=FACQQB
36177             ELSEIF(ITCM(5).EQ.5) THEN
36178               SIGH(NCHN)=FACQQB
36179               NCHN=NCHN+1
36180               ISIG(NCHN,1)=I
36181               ISIG(NCHN,2)=-I
36182               ISIG(NCHN,3)=2
36183               SIGH(NCHN)=FACCIB
36184             ELSE
36185               SIGH(NCHN)=FACCIB
36186             ENDIF
36187   450     CONTINUE
36188  
36189         ELSEIF(ISUB.EQ.383) THEN
36190 C...f + fbar -> g + g (q + qbar -> g + g only)
36191           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36192      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36193           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36194      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36195           IF(ITCM(5).EQ.5) THEN
36196             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36197      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36198             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36199      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36200           ENDIF
36201           DO 460 I=MMINA,MMAXA
36202             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36203      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
36204             NCHN=NCHN+1
36205             ISIG(NCHN,1)=I
36206             ISIG(NCHN,2)=-I
36207             ISIG(NCHN,3)=1
36208             SIGH(NCHN)=0.5D0*FACGG1
36209             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
36210             NCHN=NCHN+1
36211             ISIG(NCHN,1)=I
36212             ISIG(NCHN,2)=-I
36213             ISIG(NCHN,3)=2
36214             SIGH(NCHN)=0.5D0*FACGG2
36215             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
36216   460     CONTINUE
36217  
36218         ELSEIF(ISUB.EQ.384) THEN
36219 C...f + g -> f + g (q + g -> q + g only)
36220           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
36221      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
36222           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
36223      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
36224           DO 480 I=MMINA,MMAXA
36225             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
36226             DO 470 ISDE=1,2
36227               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
36228               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
36229               NCHN=NCHN+1
36230               ISIG(NCHN,ISDE)=I
36231               ISIG(NCHN,3-ISDE)=21
36232               ISIG(NCHN,3)=1
36233               SIGH(NCHN)=FACQG1
36234               NCHN=NCHN+1
36235               ISIG(NCHN,ISDE)=I
36236               ISIG(NCHN,3-ISDE)=21
36237               ISIG(NCHN,3)=2
36238               SIGH(NCHN)=FACQG2
36239   470       CONTINUE
36240   480     CONTINUE
36241  
36242         ELSEIF(ISUB.EQ.385) THEN
36243 C...g + g -> f + fbar (g + g -> q + qbar only)
36244           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
36245           IDC0=MDCY(21,2)-1
36246 C...Begin by d, u, s flavours.
36247           FLAVWT=0D0
36248           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
36249      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
36250           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
36251      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
36252           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
36253      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
36254           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36255      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
36256           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36257      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
36258           NCHN=NCHN+1
36259           ISIG(NCHN,1)=21
36260           ISIG(NCHN,2)=21
36261           ISIG(NCHN,3)=1
36262           SIGH(NCHN)=FACQQ1
36263           NCHN=NCHN+1
36264           ISIG(NCHN,1)=21
36265           ISIG(NCHN,2)=21
36266           ISIG(NCHN,3)=2
36267           SIGH(NCHN)=FACQQ2
36268 C...Next c and b flavours: modified that and uhat for fixed
36269 C...cos(theta-hat).
36270           DO 490 IFL=4,5
36271           SQMAVG=PMAS(IFL,1)**2
36272           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
36273             BE34=SQRT(1D0-4D0*SQMAVG/SH)
36274             THQ=-0.5D0*SH*(1D0-BE34*CTH)
36275             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36276             THUHQ=THQ*UHQ-SQMAVG*SH
36277             IF(MSTP(34).EQ.0) THEN
36278               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
36279               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
36280             ELSE
36281               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36282      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
36283               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36284      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
36285             ENDIF
36286             IF(ITCM(5).GE.5) THEN
36287               IF(IFL.EQ.4) THEN
36288                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
36289      &          2.25D0*THQ*UHQ/SH2*SQDLGS
36290                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
36291      &          2.25D0*THQ*UHQ/SH2*SQDLGS
36292               ELSE
36293                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
36294      &          2.25D0*THQ*UHQ/SH2*SQDHGS
36295                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
36296      &          2.25D0*THQ*UHQ/SH2*SQDHGS
36297               ENDIF
36298             ENDIF
36299             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
36300             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
36301             NCHN=NCHN+1
36302             ISIG(NCHN,1)=21
36303             ISIG(NCHN,2)=21
36304             ISIG(NCHN,3)=1+2*(IFL-3)
36305             SIGH(NCHN)=FACQQ1
36306             NCHN=NCHN+1
36307             ISIG(NCHN,1)=21
36308             ISIG(NCHN,2)=21
36309             ISIG(NCHN,3)=2+2*(IFL-3)
36310             SIGH(NCHN)=FACQQ2
36311           ENDIF
36312   490     CONTINUE
36313   500     CONTINUE
36314  
36315         ELSEIF(ISUB.EQ.386) THEN
36316 C...g + g -> g + g
36317           IF(ITCM(5).LE.4) THEN
36318             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
36319      &      2D0*TH/SH+TH2/SH2)*FACA
36320             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
36321      &      2D0*SH/UH+SH2/UH2)*FACA
36322             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
36323      &      2D0*UH/TH+UH2/TH2)
36324           ELSE
36325             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
36326      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
36327      &      4D0*REDGST*(SH + 2D0*TH)*
36328      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
36329      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
36330      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
36331      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
36332      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
36333      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
36334             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
36335      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
36336      &      4D0*REDGSU*(SH + 2D0*UH)*
36337      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
36338      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
36339      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
36340      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
36341      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
36342      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
36343             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
36344      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
36345      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
36346      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
36347      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
36348      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
36349      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
36350      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
36351      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
36352      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
36353      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
36354      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
36355      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
36356             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
36357             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
36358             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
36359           ENDIF
36360           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
36361           NCHN=NCHN+1
36362           ISIG(NCHN,1)=21
36363           ISIG(NCHN,2)=21
36364           ISIG(NCHN,3)=1
36365           SIGH(NCHN)=0.5D0*FACGG1
36366           NCHN=NCHN+1
36367           ISIG(NCHN,1)=21
36368           ISIG(NCHN,2)=21
36369           ISIG(NCHN,3)=2
36370           SIGH(NCHN)=0.5D0*FACGG2
36371           NCHN=NCHN+1
36372           ISIG(NCHN,1)=21
36373           ISIG(NCHN,2)=21
36374           ISIG(NCHN,3)=3
36375           SIGH(NCHN)=0.5D0*FACGG3
36376   510     CONTINUE
36377  
36378         ELSEIF(ISUB.EQ.387) THEN
36379 C...q + qbar -> Q + Qbar
36380           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
36381           THQ=-0.5D0*SH*(1D0-BE34*CTH)
36382           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36383           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
36384      &    2D0*SQMAVG/SH)
36385           IF(ITCM(5).GE.5) THEN
36386             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
36387               FACQQB=FACQQB*SH2*SQDQTS
36388             ELSE
36389               FACQQB=FACQQB*SH2*SQDQQS
36390             ENDIF
36391           ENDIF
36392           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
36393           WID2=1D0
36394           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
36395           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
36396           FACQQB=FACQQB*WID2
36397           DO 520 I=MMINA,MMAXA
36398             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36399      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
36400             NCHN=NCHN+1
36401             ISIG(NCHN,1)=I
36402             ISIG(NCHN,2)=-I
36403             ISIG(NCHN,3)=1
36404             SIGH(NCHN)=FACQQB
36405   520     CONTINUE
36406  
36407         ELSEIF(ISUB.EQ.388) THEN
36408 C...g + g -> Q + Qbar
36409           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
36410           THQ=-0.5D0*SH*(1D0-BE34*CTH)
36411           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
36412           THUHQ=THQ*UHQ-SQMAVG*SH
36413           IF(MSTP(34).EQ.0) THEN
36414             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
36415             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
36416           ELSE
36417             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36418      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
36419             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
36420      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
36421           ENDIF
36422           IF(ITCM(5).GE.5) THEN
36423             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
36424               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
36425      &        2.25D0*THQ*UHQ/SH2*SQDHGS
36426               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
36427      &        2.25D0*THQ*UHQ/SH2*SQDHGS
36428             ELSE
36429               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
36430      &        2.25D0*THQ*UHQ/SH2*SQDLGS
36431               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
36432      &        2.25D0*THQ*UHQ/SH2*SQDLGS
36433             ENDIF
36434           ENDIF
36435           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
36436           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
36437           IF(MSTP(35).GE.1) THEN
36438             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
36439             FACQQ1=FACQQ1*FATRE
36440             FACQQ2=FACQQ2*FATRE
36441           ENDIF
36442           WID2=1D0
36443           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
36444           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
36445           FACQQ1=FACQQ1*WID2
36446           FACQQ2=FACQQ2*WID2
36447           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
36448           NCHN=NCHN+1
36449           ISIG(NCHN,1)=21
36450           ISIG(NCHN,2)=21
36451           ISIG(NCHN,3)=1
36452           SIGH(NCHN)=FACQQ1
36453           NCHN=NCHN+1
36454           ISIG(NCHN,1)=21
36455           ISIG(NCHN,2)=21
36456           ISIG(NCHN,3)=2
36457           SIGH(NCHN)=FACQQ2
36458   530     CONTINUE
36459         ENDIF
36460       ENDIF
36461  
36462 CMRENNA--
36463  
36464       RETURN
36465       END
36466  
36467 C*********************************************************************
36468  
36469 C...PYSGEX
36470 C...Subprocess cross sections for assorted exotic processes,
36471 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
36472 C...Auxiliary to PYSIGH.
36473  
36474       SUBROUTINE PYSGEX(NCHN,SIGS)
36475  
36476 C...Double precision and integer declarations
36477       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36478       IMPLICIT INTEGER(I-N)
36479       INTEGER PYK,PYCHGE,PYCOMP
36480 C...Parameter statement to help give large particle numbers.
36481       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36482      &KEXCIT=4000000,KDIMEN=5000000)
36483 C...Commonblocks
36484       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36485       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36486       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
36487       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
36488       COMMON/PYINT1/MINT(400),VINT(400)
36489       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
36490       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
36491       COMMON/PYINT4/MWID(500),WIDS(500,5)
36492       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
36493       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
36494      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
36495      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
36496      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
36497       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
36498      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
36499 C...Local arrays
36500       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
36501  
36502 C...Differential cross section expressions.
36503  
36504       IF(ISUB.LE.160) THEN
36505         IF(ISUB.EQ.141) THEN
36506 C...f + fbar -> gamma*/Z0/Z'0
36507           SQMZP=PMAS(32,1)**2
36508           MINT(61)=2
36509           CALL PYWIDT(32,SH,WDTP,WDTE)
36510           HP0=AEM/3D0*SH
36511           HP1=AEM/3D0*XWC*SH
36512           HP2=HP1
36513           HS=SHR*VINT(117)
36514           HSP=SHR*WDTP(0)
36515           FACZP=4D0*COMFAC*3D0
36516           DO 100 I=MMINA,MMAXA
36517             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
36518             EI=KCHG(IABS(I),1)/3D0
36519             AI=SIGN(1D0,EI)
36520             VI=AI-4D0*EI*XWV
36521             IA=IABS(I)
36522             IF(IA.LT.10) THEN
36523               IF(IA.LE.2) THEN
36524                 VPI=PARU(123-2*MOD(IABS(I),2))
36525                 API=PARU(124-2*MOD(IABS(I),2))
36526               ELSEIF(IA.LE.4) THEN
36527                 VPI=PARJ(182-2*MOD(IABS(I),2))
36528                 API=PARJ(183-2*MOD(IABS(I),2))
36529               ELSE
36530                 VPI=PARJ(190-2*MOD(IABS(I),2))
36531                 API=PARJ(191-2*MOD(IABS(I),2))
36532               ENDIF
36533             ELSE
36534               IF(IA.LE.12) THEN
36535                 VPI=PARU(127-2*MOD(IABS(I),2))
36536                 API=PARU(128-2*MOD(IABS(I),2))
36537               ELSEIF(IA.LE.14) THEN
36538                 VPI=PARJ(186-2*MOD(IABS(I),2))
36539                 API=PARJ(187-2*MOD(IABS(I),2))
36540               ELSE
36541                 VPI=PARJ(194-2*MOD(IABS(I),2))
36542                 API=PARJ(195-2*MOD(IABS(I),2))
36543               ENDIF
36544             ENDIF
36545             HI0=HP0
36546             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
36547             HI1=HP1
36548             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
36549             HI2=HP2
36550             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
36551             NCHN=NCHN+1
36552             ISIG(NCHN,1)=I
36553             ISIG(NCHN,2)=-I
36554             ISIG(NCHN,3)=1
36555             SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
36556      &      (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
36557      &      VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
36558      &      (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
36559      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
36560      &      ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
36561      &      ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
36562      &      (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
36563   100     CONTINUE
36564  
36565         ELSEIF(ISUB.EQ.142) THEN
36566 C...f + fbar' -> W'+/-
36567           SQMWP=PMAS(34,1)**2
36568           CALL PYWIDT(34,SH,WDTP,WDTE)
36569           HS=SHR*WDTP(0)
36570           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
36571           HP=AEM/(24D0*XW)*SH
36572           DO 120 I=MMIN1,MMAX1
36573             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
36574             IA=IABS(I)
36575             DO 110 J=MMIN2,MMAX2
36576               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
36577               JA=IABS(J)
36578               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
36579               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36580      &        GOTO 110
36581               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36582               HI=HP*(PARU(133)**2+PARU(134)**2)
36583               IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
36584      &        VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
36585               NCHN=NCHN+1
36586               ISIG(NCHN,1)=I
36587               ISIG(NCHN,2)=J
36588               ISIG(NCHN,3)=1
36589               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
36590               SIGH(NCHN)=HI*FACBW*HF
36591   110       CONTINUE
36592   120     CONTINUE
36593  
36594         ELSEIF(ISUB.EQ.144) THEN
36595 C...f + fbar' -> R
36596           SQMR=PMAS(41,1)**2
36597           CALL PYWIDT(41,SH,WDTP,WDTE)
36598           HS=SHR*WDTP(0)
36599           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
36600           HP=AEM/(12D0*XW)*SH
36601           DO 140 I=MMIN1,MMAX1
36602             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
36603             IA=IABS(I)
36604             DO 130 J=MMIN2,MMAX2
36605               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
36606               JA=IABS(J)
36607               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
36608               HI=HP
36609               IF(IA.LE.10) HI=HI*FACA/3D0
36610               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
36611               NCHN=NCHN+1
36612               ISIG(NCHN,1)=I
36613               ISIG(NCHN,2)=J
36614               ISIG(NCHN,3)=1
36615               SIGH(NCHN)=HI*FACBW*HF
36616   130       CONTINUE
36617   140     CONTINUE
36618  
36619         ELSEIF(ISUB.EQ.145) THEN
36620 C...q + l -> LQ (leptoquark)
36621           SQMLQ=PMAS(42,1)**2
36622           CALL PYWIDT(42,SH,WDTP,WDTE)
36623           HS=SHR*WDTP(0)
36624           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
36625           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
36626           HP=AEM/4D0*SH
36627           KFLQQ=KFDP(MDCY(42,2),1)
36628           KFLQL=KFDP(MDCY(42,2),2)
36629           DO 160 I=MMIN1,MMAX1
36630             IF(KFAC(1,I).EQ.0) GOTO 160
36631             IA=IABS(I)
36632             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
36633             DO 150 J=MMIN2,MMAX2
36634               IF(KFAC(2,J).EQ.0) GOTO 150
36635               JA=IABS(J)
36636               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
36637               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
36638               IF(JA.EQ.IA) GOTO 150
36639               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
36640               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
36641               HI=HP*PARU(151)
36642               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
36643               NCHN=NCHN+1
36644               ISIG(NCHN,1)=I
36645               ISIG(NCHN,2)=J
36646               ISIG(NCHN,3)=1
36647               SIGH(NCHN)=HI*FACBW*HF
36648   150       CONTINUE
36649   160     CONTINUE
36650  
36651         ELSEIF(ISUB.EQ.146) THEN
36652 C...e + gamma* -> e* (excited lepton)
36653           KFQSTR=KFPR(ISUB,1)
36654           KCQSTR=PYCOMP(KFQSTR)
36655           KFQEXC=MOD(KFQSTR,KEXCIT)
36656           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
36657           HS=SHR*WDTP(0)
36658           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
36659           QF=-RTCM(43)/2D0-RTCM(44)/2D0
36660           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
36661           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
36662      &    FACBW=0D0
36663           HP=SH
36664           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
36665             DO 170 ISDE=1,2
36666               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
36667               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
36668               HI=HP
36669               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36670               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
36671               NCHN=NCHN+1
36672               ISIG(NCHN,ISDE)=I
36673               ISIG(NCHN,3-ISDE)=22
36674               ISIG(NCHN,3)=1
36675               SIGH(NCHN)=HI*FACBW*HF
36676   170       CONTINUE
36677   180     CONTINUE
36678  
36679         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
36680 C...d + g -> d* and u + g -> u* (excited quarks)
36681           KFQSTR=KFPR(ISUB,1)
36682           KCQSTR=PYCOMP(KFQSTR)
36683           KFQEXC=MOD(KFQSTR,KEXCIT)
36684           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
36685           HS=SHR*WDTP(0)
36686           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
36687           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
36688           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
36689      &    FACBW=0D0
36690           HP=SH
36691           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
36692             DO 190 ISDE=1,2
36693               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
36694               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
36695               HI=HP
36696               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36697               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
36698               NCHN=NCHN+1
36699               ISIG(NCHN,ISDE)=I
36700               ISIG(NCHN,3-ISDE)=21
36701               ISIG(NCHN,3)=1
36702               SIGH(NCHN)=HI*FACBW*HF
36703   190       CONTINUE
36704   200     CONTINUE
36705         ENDIF
36706  
36707       ELSEIF(ISUB.LE.190) THEN
36708         IF(ISUB.EQ.162) THEN
36709 C...q + g -> LQ + lbar; LQ=leptoquark
36710           SQMLQ=PMAS(42,1)**2
36711           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
36712      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
36713           KFLQQ=KFDP(MDCY(42,2),1)
36714           DO 220 I=MMINA,MMAXA
36715             IF(IABS(I).NE.KFLQQ) GOTO 220
36716             KCHLQ=ISIGN(1,I)
36717             DO 210 ISDE=1,2
36718               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
36719               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
36720               NCHN=NCHN+1
36721               ISIG(NCHN,ISDE)=I
36722               ISIG(NCHN,3-ISDE)=21
36723               ISIG(NCHN,3)=1
36724               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
36725   210       CONTINUE
36726   220     CONTINUE
36727  
36728         ELSEIF(ISUB.EQ.163) THEN
36729 C...g + g -> LQ + LQbar; LQ=leptoquark
36730           SQMLQ=PMAS(42,1)**2
36731           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
36732      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
36733      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
36734      &    ((TH-SQMLQ)*(UH-SQMLQ)))
36735           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
36736           NCHN=NCHN+1
36737           ISIG(NCHN,1)=21
36738           ISIG(NCHN,2)=21
36739 C...Since don't know proper colour flow, randomize between alternatives
36740           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
36741           SIGH(NCHN)=FACLQ
36742   230     CONTINUE
36743  
36744         ELSEIF(ISUB.EQ.164) THEN
36745 C...q + qbar -> LQ + LQbar; LQ=leptoquark
36746           DELTA=0.25D0*(SQM3-SQM4)**2/SH
36747           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
36748           TH=TH-DELTA
36749           UH=UH-DELTA
36750 C          SQMLQ=PMAS(42,1)**2
36751           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
36752      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
36753           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
36754      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
36755      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
36756           KFLQQ=KFDP(MDCY(42,2),1)
36757           DO 240 I=MMINA,MMAXA
36758             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36759      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
36760             NCHN=NCHN+1
36761             ISIG(NCHN,1)=I
36762             ISIG(NCHN,2)=-I
36763             ISIG(NCHN,3)=1
36764             SIGH(NCHN)=FACLQA
36765             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
36766   240     CONTINUE
36767  
36768         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
36769 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
36770           KFQSTR=KFPR(ISUB,2)
36771           KCQSTR=PYCOMP(KFQSTR)
36772           KFQEXC=MOD(KFQSTR,KEXCIT)
36773           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
36774           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
36775      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
36776 C...Propagators: as simulated in PYOFSH and as desired
36777           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
36778           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
36779           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
36780           GMMQC=SQRT(SQM4)*WDTP(0)
36781           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
36782           FACQSA=FACQSA*HBW4C/HBW4
36783           FACQSB=FACQSB*HBW4C/HBW4
36784 C...Branching ratios.
36785           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
36786           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
36787           DO 260 I=MMIN1,MMAX1
36788             IA=IABS(I)
36789             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
36790             DO 250 J=MMIN2,MMAX2
36791               JA=IABS(J)
36792               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
36793               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
36794                 NCHN=NCHN+1
36795                 ISIG(NCHN,1)=I
36796                 ISIG(NCHN,2)=J
36797                 ISIG(NCHN,3)=1
36798                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
36799                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
36800                 NCHN=NCHN+1
36801                 ISIG(NCHN,1)=I
36802                 ISIG(NCHN,2)=J
36803                 ISIG(NCHN,3)=2
36804                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
36805                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
36806               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
36807                 NCHN=NCHN+1
36808                 ISIG(NCHN,1)=I
36809                 ISIG(NCHN,2)=J
36810                 ISIG(NCHN,3)=1
36811                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
36812                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
36813                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
36814               ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
36815                 NCHN=NCHN+1
36816                 ISIG(NCHN,1)=I
36817                 ISIG(NCHN,2)=J
36818                 ISIG(NCHN,3)=1
36819                 IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
36820                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
36821                 NCHN=NCHN+1
36822                 ISIG(NCHN,1)=I
36823                 ISIG(NCHN,2)=J
36824                 ISIG(NCHN,3)=2
36825                 IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
36826                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
36827               ELSEIF(I.EQ.-J) THEN
36828                 NCHN=NCHN+1
36829                 ISIG(NCHN,1)=I
36830                 ISIG(NCHN,2)=J
36831                 ISIG(NCHN,3)=1
36832                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36833                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36834                 NCHN=NCHN+1
36835                 ISIG(NCHN,1)=I
36836                 ISIG(NCHN,2)=J
36837                 ISIG(NCHN,3)=2
36838                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36839                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36840               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
36841                 NCHN=NCHN+1
36842                 ISIG(NCHN,1)=I
36843                 ISIG(NCHN,2)=J
36844                 ISIG(NCHN,3)=1
36845                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
36846                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
36847                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
36848               ENDIF
36849   250       CONTINUE
36850   260     CONTINUE
36851  
36852         ELSEIF(ISUB.EQ.169) THEN
36853 C...q + qbar -> e + e* (excited lepton)
36854           KFQSTR=KFPR(ISUB,2)
36855           KCQSTR=PYCOMP(KFQSTR)
36856           KFQEXC=MOD(KFQSTR,KEXCIT)
36857           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
36858      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
36859 C...Propagators: as simulated in PYOFSH and as desired
36860           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
36861           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
36862           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
36863           GMMQC=SQRT(SQM4)*WDTP(0)
36864           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
36865           FACQSB=FACQSB*HBW4C/HBW4
36866 C...Branching ratios.
36867           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
36868           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
36869           DO 270 I=MMIN1,MMAX1
36870             IA=IABS(I)
36871             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
36872             J=-I
36873             JA=IABS(J)
36874             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
36875             NCHN=NCHN+1
36876             ISIG(NCHN,1)=I
36877             ISIG(NCHN,2)=J
36878             ISIG(NCHN,3)=1
36879             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36880             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36881             NCHN=NCHN+1
36882             ISIG(NCHN,1)=I
36883             ISIG(NCHN,2)=J
36884             ISIG(NCHN,3)=2
36885             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
36886             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
36887   270     CONTINUE
36888         ENDIF
36889  
36890       ELSEIF(ISUB.LE.360) THEN
36891         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
36892 C...l + l -> H_L++/-- or H_R++/--.
36893           KFRES=KFPR(ISUB,1)
36894           KFREC=PYCOMP(KFRES)
36895           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
36896           HS=SHR*WDTP(0)
36897           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
36898           DO 290 I=MMIN1,MMAX1
36899             IA=IABS(I)
36900             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
36901      &      GOTO 290
36902             DO 280 J=MMIN2,MMAX2
36903               JA=IABS(J)
36904               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
36905      &        GOTO 280
36906               IF(I*J.LT.0) GOTO 280
36907               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36908               NCHN=NCHN+1
36909               ISIG(NCHN,1)=I
36910               ISIG(NCHN,2)=J
36911               ISIG(NCHN,3)=1
36912               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
36913               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
36914               SIGH(NCHN)=HI*FACBW*HF
36915   280       CONTINUE
36916   290     CONTINUE
36917  
36918         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
36919 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
36920           KFRES=KFPR(ISUB,1)
36921           KFREC=PYCOMP(KFRES)
36922 C...Propagators: as simulated in PYOFSH and as desired
36923           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
36924      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
36925           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
36926           GMMC=SQRT(SQM3)*WDTP(0)
36927           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
36928           FHCC=COMFAC*AEM*HBW3C/HBW3
36929           DO 310 I=MMINA,MMAXA
36930             IA=IABS(I)
36931             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
36932             SQML=PMAS(IA,1)**2
36933             J=ISIGN(KFPR(ISUB,2),-I)
36934             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
36935             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
36936             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
36937      &      (UH-SQM3)**2
36938             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
36939      &      (TH-SQM4)*SH)/(TH-SQM4)**2
36940             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
36941      &      SH)/(SH-SQML)**2
36942             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
36943      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
36944      &      ((UH-SQM3)*(TH-SQM4))
36945             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
36946      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
36947      &      ((UH-SQM3)*(SH-SQML))
36948             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
36949      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
36950      &      ((SH-SQML)*(TH-SQM4))
36951             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
36952      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
36953             DO 300 ISDE=1,2
36954               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
36955               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
36956               NCHN=NCHN+1
36957               ISIG(NCHN,ISDE)=I
36958               ISIG(NCHN,3-ISDE)=22
36959               ISIG(NCHN,3)=0
36960               SIGH(NCHN)=FHCC*SMM*WIDSC
36961   300       CONTINUE
36962   310     CONTINUE
36963  
36964         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
36965 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
36966           KFRES=KFPR(ISUB,1)
36967           KFREC=PYCOMP(KFRES)
36968           SQMH=PMAS(KFREC,1)**2
36969           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
36970 C...Propagators: H++/-- as simulated in PYOFSH and as desired
36971           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
36972           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
36973           GMMH3=SQRT(SQM3)*WDTP(0)
36974           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
36975           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
36976           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
36977           GMMH4=SQRT(SQM4)*WDTP(0)
36978           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
36979 C...Kinematical and coupling functions
36980           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
36981           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
36982 C...Loop over allowed flavours
36983           DO 320 I=MMINA,MMAXA
36984             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
36985             EI=KCHG(IABS(I),1)/3D0
36986             AI=SIGN(1D0,EI+0.1D0)
36987             VI=AI-4D0*EI*XWV
36988             FCOI=1D0
36989             IF(IABS(I).LE.10) FCOI=FACA/3D0
36990             IF(ISUB.EQ.349) THEN
36991               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
36992               IF(IABS(I).LT.10) THEN
36993                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
36994      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
36995      &          (VI**2+AI**2)*XWHH**2*HBWZ)
36996               ELSE
36997                 IAOFF=181+3*((IABS(I)-11)/2)
36998                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
36999      &          (4D0*PARU(1))
37000                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
37001      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
37002      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
37003      &          8D0*AEM*(EI*HSUM/(SH*TH)+
37004      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
37005      &          4D0*HSUM**2/TH2
37006               ENDIF
37007             ELSE
37008               IF(IABS(I).LT.10) THEN
37009                 DSIGHH=8D0*AEM**2*EI**2/SH2
37010               ELSE
37011                 IAOFF=181+3*((IABS(I)-11)/2)
37012                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
37013      &          (4D0*PARU(1))
37014                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
37015      &          4D0*HSUM**2/TH2
37016               ENDIF
37017             ENDIF
37018             NCHN=NCHN+1
37019             ISIG(NCHN,1)=I
37020             ISIG(NCHN,2)=-I
37021             ISIG(NCHN,3)=1
37022             SIGH(NCHN)=FACHH*FCOI*DSIGHH
37023   320     CONTINUE
37024  
37025         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
37026 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
37027           KFRES=KFPR(ISUB,1)
37028           KFREC=PYCOMP(KFRES)
37029           SQMH=PMAS(KFREC,1)**2
37030           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
37031           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
37032      &    PMAS(PYCOMP(9900024),1)**2
37033           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
37034           FACPRT=1D0/((VINT(204)**2-VINT(215))*
37035      &    (VINT(209)**2-VINT(216)))
37036           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
37037      &    (VINT(209)**2+2D0*VINT(218)))
37038           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
37039           HS=SHR*WDTP(0)
37040           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
37041           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
37042      &    FACBW=0D0
37043           DO 340 I=MMIN1,MMAX1
37044             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
37045             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
37046             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
37047             DO 330 J=MMIN2,MMAX2
37048               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
37049               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
37050               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
37051               KCHH=KCHWI+KCHWJ
37052               IF(IABS(KCHH).NE.2) GOTO 330
37053               FACLR=VINT(180+I)*VINT(180+J)
37054               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
37055               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
37056                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
37057               ELSE
37058                 FACPRP=FACPRT**2
37059               ENDIF
37060               NCHN=NCHN+1
37061               ISIG(NCHN,1)=I
37062               ISIG(NCHN,2)=J
37063               ISIG(NCHN,3)=1
37064               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
37065   330       CONTINUE
37066   340     CONTINUE
37067  
37068         ELSEIF(ISUB.EQ.353) THEN
37069 C...f + fbar -> Z_R0
37070           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37071           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37072           HS=SHR*WDTP(0)
37073           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
37074           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37075           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
37076           DO 350 I=MMINA,MMAXA
37077             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
37078             IF(IABS(I).LE.8) THEN
37079               EI=KCHG(IABS(I),1)/3D0
37080               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
37081               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
37082             ELSE
37083               AI=-(1D0-2D0*XW)
37084               VI=-1D0+4D0*XW
37085             ENDIF
37086             HI=HP*(VI**2+AI**2)
37087             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37088             NCHN=NCHN+1
37089             ISIG(NCHN,1)=I
37090             ISIG(NCHN,2)=-I
37091             ISIG(NCHN,3)=1
37092             SIGH(NCHN)=HI*FACBW*HF
37093   350     CONTINUE
37094  
37095         ELSEIF(ISUB.EQ.354) THEN
37096 C...f + fbar' -> W_R+/-
37097           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37098           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37099           HS=SHR*WDTP(0)
37100           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
37101           HP=AEM/(24D0*XW)*SH
37102           DO 370 I=MMIN1,MMAX1
37103             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
37104             IA=IABS(I)
37105             DO 360 J=MMIN2,MMAX2
37106               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
37107               JA=IABS(J)
37108               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
37109               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37110      &        GOTO 360
37111               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37112               HI=HP*2D0
37113               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37114               NCHN=NCHN+1
37115               ISIG(NCHN,1)=I
37116               ISIG(NCHN,2)=J
37117               ISIG(NCHN,3)=1
37118               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
37119               SIGH(NCHN)=HI*FACBW*HF
37120   360       CONTINUE
37121   370     CONTINUE
37122         ENDIF
37123  
37124       ELSEIF(ISUB.LE.400) THEN
37125         IF(ISUB.EQ.391) THEN
37126 C...f + fbar -> G*.
37127           KFGSTR=KFPR(ISUB,1)
37128           KCGSTR=PYCOMP(KFGSTR)
37129           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37130           HS=SHR*WDTP(0)
37131           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37132           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
37133      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37134 C...Modify cross section in wings of peak.
37135           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37136           DO 380 I=MMINA,MMAXA
37137             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
37138             HI=1D0
37139             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37140             NCHN=NCHN+1
37141             ISIG(NCHN,1)=I
37142             ISIG(NCHN,2)=-I
37143             ISIG(NCHN,3)=1
37144             SIGH(NCHN)=FACG*HI
37145   380     CONTINUE
37146  
37147         ELSEIF(ISUB.EQ.392) THEN
37148 C...g + g -> G*.
37149           KFGSTR=KFPR(ISUB,1)
37150           KCGSTR=PYCOMP(KFGSTR)
37151           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37152           HS=SHR*WDTP(0)
37153           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37154           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
37155      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37156 C...Modify cross section in wings of peak.
37157           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37158           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
37159           NCHN=NCHN+1
37160           ISIG(NCHN,1)=21
37161           ISIG(NCHN,2)=21
37162           ISIG(NCHN,3)=1
37163           SIGH(NCHN)=FACG
37164   390     CONTINUE
37165  
37166         ELSEIF(ISUB.EQ.393) THEN
37167 C...q + qbar -> g + G*.
37168           KFGSTR=KFPR(ISUB,2)
37169           KCGSTR=PYCOMP(KFGSTR)
37170           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
37171      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
37172      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
37173      &    2D0*SH2/(TH*UH))
37174 C...Propagators: as simulated in PYOFSH and as desired
37175           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37176           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37177           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37178           HS=SQRT(SQM4)*WDTP(0)
37179           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37180           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37181           FACG=FACG*HBW4C/HBW4
37182           DO 400 I=MMINA,MMAXA
37183             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37184      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
37185             NCHN=NCHN+1
37186             ISIG(NCHN,1)=I
37187             ISIG(NCHN,2)=-I
37188             ISIG(NCHN,3)=1
37189             SIGH(NCHN)=FACG
37190   400     CONTINUE
37191  
37192         ELSEIF(ISUB.EQ.394) THEN
37193 C...q + g -> q + G*.
37194           KFGSTR=KFPR(ISUB,2)
37195           KCGSTR=PYCOMP(KFGSTR)
37196           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
37197      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
37198      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
37199      &    2D0*TH2*TH/(UH*SH2))
37200 C...Propagators: as simulated in PYOFSH and as desired
37201           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37202           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37203           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37204           HS=SQRT(SQM4)*WDTP(0)
37205           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37206           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37207           FACG=FACG*HBW4C/HBW4
37208           DO 420 I=MMINA,MMAXA
37209             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
37210             DO 410 ISDE=1,2
37211               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
37212               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
37213               NCHN=NCHN+1
37214               ISIG(NCHN,ISDE)=I
37215               ISIG(NCHN,3-ISDE)=21
37216               ISIG(NCHN,3)=1
37217               SIGH(NCHN)=FACG
37218   410       CONTINUE
37219   420     CONTINUE
37220  
37221         ELSEIF(ISUB.EQ.395) THEN
37222 C...g + g -> g + G*.
37223           KFGSTR=KFPR(ISUB,2)
37224           KCGSTR=PYCOMP(KFGSTR)
37225           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
37226      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
37227      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
37228 C...Propagators: as simulated in PYOFSH and as desired
37229           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37230           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37231           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37232           HS=SQRT(SQM4)*WDTP(0)
37233           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37234           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37235           FACG=FACG*HBW4C/HBW4
37236           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
37237             NCHN=NCHN+1
37238             ISIG(NCHN,1)=21
37239             ISIG(NCHN,2)=21
37240             ISIG(NCHN,3)=1
37241             SIGH(NCHN)=FACG
37242           ENDIF
37243         ENDIF
37244       ENDIF
37245  
37246       RETURN
37247       END
37248  
37249 C*********************************************************************
37250  
37251 C...PYPDFU
37252 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
37253 C...parton distributions according to a few different parametrizations.
37254 C...Note that what is coded is x times the probability distribution,
37255 C...i.e. xq(x,Q2) etc.
37256  
37257       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
37258  
37259 C...Double precision and integer declarations.
37260       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37261       IMPLICIT INTEGER(I-N)
37262       INTEGER PYK,PYCHGE,PYCOMP
37263 C...Commonblocks.
37264       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
37265       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37266       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37267       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37268       COMMON/PYINT1/MINT(400),VINT(400)
37269       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
37270      &XPDIR(-6:6)
37271       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
37272       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
37273      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
37274      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
37275       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/,
37276      &/PYINT9/,/PYINTM/
37277 C...Local arrays.
37278       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
37279      &XPPI(-6:6),XPPR(-6:6),XPVAL(-6:6),PPAR(6,2)
37280       SAVE PPAR
37281  
37282 C...Interface to PDFLIB.
37283       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
37284       SAVE /LW50513/
37285       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
37286      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
37287       CHARACTER*20 PARM(20)
37288       DATA VALUE/20*0D0/,PARM/20*' '/
37289  
37290 C...Data related to Schuler-Sjostrand photon distributions.
37291       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
37292  
37293 C...Valence PDF momentum integral parametrizations PER PARTON!
37294       DATA (PPAR(1,IPAR),IPAR=1,2) /0.385D0,1.60D0/
37295       DATA (PPAR(2,IPAR),IPAR=1,2) /0.480D0,1.56D0/
37296       PAVG(IFL,Q2)=PPAR(IFL,1)/(1D0+PPAR(IFL,2)*
37297      &LOG(LOG(MAX(Q2,1D0)/0.04D0)))
37298  
37299 C...Reset parton distributions.
37300       MINT(92)=0
37301       DO 100 KFL=-25,25
37302         XPQ(KFL)=0D0
37303   100 CONTINUE
37304       DO 110 KFL=-6,6
37305         XPVAL(KFL)=0D0
37306   110 CONTINUE
37307  
37308 C...Check x and particle species.
37309       IF(X.LE.0D0.OR.X.GE.1D0) THEN
37310         WRITE(MSTU(11),5000) X
37311         GOTO 9999
37312       ENDIF
37313       KFA=IABS(KF)
37314       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
37315      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
37316      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
37317      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
37318      &KFA.NE.310.AND.KFA.NE.130) THEN
37319         WRITE(MSTU(11),5100) KF
37320         GOTO 9999
37321       ENDIF
37322  
37323 C...Electron (or muon or tau) parton distribution call.
37324       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
37325         CALL PYPDEL(KFA,X,Q2,XPEL)
37326         DO 120 KFL=-25,25
37327           XPQ(KFL)=XPEL(KFL)
37328   120   CONTINUE
37329  
37330 C...Photon parton distribution call (VDM+anomalous).
37331       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
37332         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
37333           CALL PYPDGA(X,Q2,XPGA)
37334           DO 130 KFL=-6,6
37335             XPQ(KFL)=XPGA(KFL)
37336   130     CONTINUE
37337           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
37338           XPVAL(1)=XPVU/4D0
37339           XPVAL(2)=XPVU
37340           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
37341           XPVAL(4)=MIN(XPQ(4),XPVU)
37342           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
37343           XPVAL(-1)=XPVAL(1)
37344           XPVAL(-2)=XPVAL(2)
37345           XPVAL(-3)=XPVAL(3)
37346           XPVAL(-4)=XPVAL(4)
37347           XPVAL(-5)=XPVAL(5)
37348         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
37349           Q2MX=Q2
37350           P2MX=0.36D0
37351           IF(MSTP(55).GE.7) P2MX=4.0D0
37352           IF(MSTP(57).EQ.0) Q2MX=P2MX
37353           P2=0D0
37354           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37355           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37356           DO 140 KFL=-6,6
37357             XPQ(KFL)=XPGA(KFL)
37358             XPVAL(KFL)=VXPDGM(KFL)
37359   140     CONTINUE
37360           VINT(231)=P2MX
37361         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
37362           Q2MX=Q2
37363           P2MX=0.36D0
37364           IF(MSTP(55).GE.11) P2MX=4.0D0
37365           IF(MSTP(57).EQ.0) Q2MX=P2MX
37366           P2=0D0
37367           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37368           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37369           DO 150 KFL=-6,6
37370             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
37371             XPVAL(KFL)=VXPVMD(KFL)+VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
37372   150     CONTINUE
37373           VINT(231)=P2MX
37374         ELSEIF(MSTP(56).EQ.2) THEN
37375 C...Call PDFLIB parton distributions.
37376           PARM(1)='NPTYPE'
37377           VALUE(1)=3
37378           PARM(2)='NGROUP'
37379           VALUE(2)=MSTP(55)/1000
37380           PARM(3)='NSET'
37381           VALUE(3)=MOD(MSTP(55),1000)
37382           IF(MINT(93).NE.3000000+MSTP(55)) THEN
37383             CALL PDFSET_ALICE(PARM,VALUE)
37384             MINT(93)=3000000+MSTP(55)
37385           ENDIF
37386           XX=X
37387           QQ2=MAX(0D0,Q2MIN,Q2)
37388           IF(MSTP(57).EQ.0) QQ2=Q2MIN
37389           P2=0D0
37390           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37391           IP2=MSTP(60)
37392           IF(MSTP(55).EQ.5004) THEN
37393             IF(5D0*P2.LT.QQ2.AND.
37394      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
37395      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
37396      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
37397               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
37398      &        BOT,TOP,GLU)
37399             ELSE
37400               UPV=0D0
37401               DNV=0D0
37402               USEA=0D0
37403               DSEA=0D0
37404               STR=0D0
37405               CHM=0D0
37406               BOT=0D0
37407               TOP=0D0
37408               GLU=0D0
37409             ENDIF
37410           ELSE
37411             IF(P2.LT.QQ2) THEN
37412               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
37413      &        BOT,TOP,GLU)
37414             ELSE
37415               UPV=0D0
37416               DNV=0D0
37417               USEA=0D0
37418               DSEA=0D0
37419               STR=0D0
37420               CHM=0D0
37421               BOT=0D0
37422               TOP=0D0
37423               GLU=0D0
37424             ENDIF
37425           ENDIF
37426           VINT(231)=Q2MIN
37427           XPQ(0)=GLU
37428           XPQ(1)=DNV
37429           XPQ(-1)=DNV
37430           XPQ(2)=UPV
37431           XPQ(-2)=UPV
37432           XPQ(3)=STR
37433           XPQ(-3)=STR
37434           XPQ(4)=CHM
37435           XPQ(-4)=CHM
37436           XPQ(5)=BOT
37437           XPQ(-5)=BOT
37438           XPQ(6)=TOP
37439           XPQ(-6)=TOP
37440           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
37441           XPVAL(1)=XPVU/4D0
37442           XPVAL(2)=XPVU
37443           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
37444           XPVAL(4)=MIN(XPQ(4),XPVU)
37445           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
37446           XPVAL(-1)=XPVAL(1)
37447           XPVAL(-2)=XPVAL(2)
37448           XPVAL(-3)=XPVAL(3)
37449           XPVAL(-4)=XPVAL(4)
37450           XPVAL(-5)=XPVAL(5)
37451         ELSE
37452           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
37453         ENDIF
37454  
37455 C...Pion/gammaVDM parton distribution call.
37456       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
37457      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
37458         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
37459      &  MSTP(55).LE.12) THEN
37460           ISET=1+MOD(MSTP(55)-1,4)
37461           Q2MX=Q2
37462           P2MX=0.36D0
37463           IF(ISET.GE.3) P2MX=4.0D0
37464           IF(MSTP(57).EQ.0) Q2MX=P2MX
37465           P2=0D0
37466           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37467           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
37468           DO 160 KFL=-6,6
37469             XPQ(KFL)=XPVMD(KFL)
37470             XPVAL(KFL)=VXPVMD(KFL)
37471   160     CONTINUE
37472           VINT(231)=P2MX
37473         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
37474           CALL PYPDPI(X,Q2,XPPI)
37475           DO 170 KFL=-6,6
37476             XPQ(KFL)=XPPI(KFL)
37477   170     CONTINUE
37478           XPVAL(2)=XPQ(2)-XPQ(-2)
37479           XPVAL(-1)=XPQ(-1)-XPQ(1)
37480         ELSEIF(MSTP(54).EQ.2) THEN
37481 C...Call PDFLIB parton distributions.
37482           PARM(1)='NPTYPE'
37483           VALUE(1)=2
37484           PARM(2)='NGROUP'
37485           VALUE(2)=MSTP(53)/1000
37486           PARM(3)='NSET'
37487           VALUE(3)=MOD(MSTP(53),1000)
37488           IF(MINT(93).NE.2000000+MSTP(53)) THEN
37489             CALL PDFSET_ALICE(PARM,VALUE)
37490             MINT(93)=2000000+MSTP(53)
37491           ENDIF
37492           XX=X
37493           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
37494           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
37495           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
37496           VINT(231)=Q2MIN
37497           XPQ(0)=GLU
37498           XPQ(1)=DSEA
37499           XPQ(-1)=UPV+DSEA
37500           XPQ(2)=UPV+USEA
37501           XPQ(-2)=USEA
37502           XPQ(3)=STR
37503           XPQ(-3)=STR
37504           XPQ(4)=CHM
37505           XPQ(-4)=CHM
37506           XPQ(5)=BOT
37507           XPQ(-5)=BOT
37508           XPQ(6)=TOP
37509           XPQ(-6)=TOP
37510           XPVAL(2)=UPV
37511           XPVAL(-1)=UPV
37512         ELSE
37513           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
37514         ENDIF
37515  
37516 C...Anomalous photon parton distribution call.
37517       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
37518         Q2MX=Q2
37519         P2MX=PARP(15)**2
37520         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
37521           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
37522           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
37523           IF(MSTP(57).EQ.0) Q2MX=P2MX
37524           P2=0D0
37525           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37526           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
37527           DO 180 KFL=-6,6
37528             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
37529             XPVAL(KFL)=VXPANL(KFL)+VXPANH(KFL)
37530   180     CONTINUE
37531           VINT(231)=P2MX
37532         ELSEIF(MSTP(56).EQ.1) THEN
37533           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
37534           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
37535           IF(MSTP(57).EQ.0) Q2MX=P2MX
37536           P2=0D0
37537           IF(VINT(120).LT.0D0) P2=VINT(120)**2
37538           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
37539           DO 190 KFL=-6,6
37540             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
37541             XPVAL(KFL)=MAX(0D0,VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
37542   190     CONTINUE
37543           VINT(231)=P2MX
37544         ELSEIF(MSTP(56).EQ.2) THEN
37545           IF(MSTP(57).EQ.0) Q2MX=P2MX
37546           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
37547           DO 200 KFL=-6,6
37548             XPQ(KFL)=XPGA(KFL)
37549             XPVAL(KFL)=VXPGA(KFL)
37550   200     CONTINUE
37551           VINT(231)=P2MX
37552         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
37553           IF(MSTP(57).EQ.0) Q2MX=P2MX
37554           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
37555           DO 210 KFL=-6,6
37556             XPQ(KFL)=XPGA(KFL)
37557             XPVAL(KFL)=VXPGA(KFL)
37558   210     CONTINUE
37559           VINT(231)=P2MX
37560         ELSE
37561   220     RKF=11D0*PYR(0)
37562           KFR=1
37563           IF(RKF.GT.1D0) KFR=2
37564           IF(RKF.GT.5D0) KFR=3
37565           IF(RKF.GT.6D0) KFR=4
37566           IF(RKF.GT.10D0) KFR=5
37567           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 220
37568           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 220
37569           IF(MSTP(57).EQ.0) Q2MX=P2MX
37570           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
37571           DO 230 KFL=-6,6
37572             XPQ(KFL)=XPGA(KFL)
37573             XPVAL(KFL)=VXPGA(KFL)
37574   230     CONTINUE
37575           VINT(231)=P2MX
37576         ENDIF
37577  
37578 C...Proton parton distribution call.
37579       ELSE
37580         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
37581           CALL PYPDPR(X,Q2,XPPR)
37582           DO 240 KFL=-6,6
37583             XPQ(KFL)=XPPR(KFL)
37584   240     CONTINUE
37585           XPVAL(1)=XPQ(1)-XPQ(-1)
37586           XPVAL(2)=XPQ(2)-XPQ(-2)
37587         ELSEIF(MSTP(52).EQ.2) THEN
37588 C...Call PDFLIB parton distributions.
37589           PARM(1)='NPTYPE'
37590           VALUE(1)=1
37591           PARM(2)='NGROUP'
37592           VALUE(2)=MSTP(51)/1000
37593           PARM(3)='NSET'
37594           VALUE(3)=MOD(MSTP(51),1000)
37595           IF(MINT(93).NE.1000000+MSTP(51)) THEN
37596             CALL PDFSET_ALICE(PARM,VALUE)
37597             MINT(93)=1000000+MSTP(51)
37598           ENDIF
37599           XX=X
37600           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
37601           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
37602           CALL STRUCTM_ALICE
37603      +         (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
37604           VINT(231)=Q2MIN
37605           XPQ(0)=GLU
37606           XPQ(1)=DNV+DSEA
37607           XPQ(-1)=DSEA
37608           XPQ(2)=UPV+USEA
37609           XPQ(-2)=USEA
37610           XPQ(3)=STR
37611           XPQ(-3)=STR
37612           XPQ(4)=CHM
37613           XPQ(-4)=CHM
37614           XPQ(5)=BOT
37615           XPQ(-5)=BOT
37616           XPQ(6)=TOP
37617           XPQ(-6)=TOP
37618           XPVAL(1)=DNV
37619           XPVAL(2)=UPV
37620         ELSE
37621           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
37622         ENDIF
37623       ENDIF
37624  
37625 C...Isospin average for pi0/gammaVDM.
37626       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
37627         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
37628           XPV=XPQ(2)-XPQ(1)
37629           XPQ(2)=XPQ(1)
37630           XPQ(-2)=XPQ(-1)
37631         ELSE
37632           XPS=0.5D0*(XPQ(1)+XPQ(-2))
37633           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
37634           XPQ(2)=XPS
37635           XPQ(-1)=XPS
37636         ENDIF
37637         XPVL=0.5D0*(XPVAL(1)+XPVAL(2)+XPVAL(-1)+XPVAL(-2))+
37638      &  XPVAL(3)+XPVAL(4)+XPVAL(5)
37639         DO 250 KFL=-6,6
37640           XPVAL(KFL)=0D0
37641   250   CONTINUE
37642         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
37643           XPQ(1)=XPQ(1)+0.2D0*XPV
37644           XPQ(2)=XPQ(2)+0.8D0*XPV
37645           XPVAL(1)=0.2D0*XPVL
37646           XPVAL(2)=0.8D0*XPVL
37647         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
37648           XPQ(3)=XPQ(3)+XPV
37649           XPVAL(3)=XPVL
37650         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
37651           XPQ(4)=XPQ(4)+XPV
37652           XPVAL(4)=XPVL
37653           IF(MSTP(55).GE.9) THEN
37654             DO 260 KFL=-6,6
37655               XPQ(KFL)=0D0
37656   260       CONTINUE
37657           ENDIF
37658         ELSE
37659           XPQ(1)=XPQ(1)+0.5D0*XPV
37660           XPQ(2)=XPQ(2)+0.5D0*XPV
37661           XPVAL(1)=0.5D0*XPVL
37662           XPVAL(2)=0.5D0*XPVL
37663         ENDIF
37664         DO 270 KFL=1,6
37665           XPQ(-KFL)=XPQ(KFL)
37666           XPVAL(-KFL)=XPVAL(KFL)
37667   270   CONTINUE
37668  
37669 C...Rescale for gammaVDM by effective gamma -> rho coupling.
37670 C+++Do not rescale?
37671         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
37672      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
37673           DO 280 KFL=-6,6
37674             XPQ(KFL)=VINT(281)*XPQ(KFL)
37675             XPVAL(KFL)=VINT(281)*XPVAL(KFL)
37676   280     CONTINUE
37677           VINT(232)=VINT(281)*XPV
37678         ENDIF
37679  
37680 C...Simple recipes for kaons.
37681       ELSEIF(KFA.EQ.321) THEN
37682         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
37683         XPQ(-1)=XPQ(1)
37684         XPVAL(-3)=XPVAL(-1)
37685         XPVAL(-1)=0D0
37686       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
37687         XPS=0.5D0*(XPQ(1)+XPQ(-2))
37688         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
37689         XPQ(2)=XPS
37690         XPQ(-1)=XPS
37691         XPQ(1)=XPQ(1)+0.5D0*XPV
37692         XPQ(-1)=XPQ(-1)+0.5D0*XPV
37693         XPQ(3)=XPQ(3)+0.5D0*XPV
37694         XPQ(-3)=XPQ(-3)+0.5D0*XPV
37695         XPV=0.5D0*(XPVAL(2)+XPVAL(-1))
37696         XPVAL(2)=0D0
37697         XPVAL(-1)=0D0
37698         XPVAL(1)=0.5D0*XPV
37699         XPVAL(-1)=0.5D0*XPV
37700         XPVAL(3)=0.5D0*XPV
37701         XPVAL(-3)=0.5D0*XPV
37702  
37703 C...Isospin conjugation for neutron.
37704       ELSEIF(KFA.EQ.2112) THEN
37705         XPSV=XPQ(1)
37706         XPQ(1)=XPQ(2)
37707         XPQ(2)=XPSV
37708         XPSV=XPQ(-1)
37709         XPQ(-1)=XPQ(-2)
37710         XPQ(-2)=XPSV
37711         XPSV=XPVAL(1)
37712         XPVAL(1)=XPVAL(2)
37713         XPVAL(2)=XPSV
37714  
37715 C...Simple recipes for hyperon (average valence parton distribution).
37716       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
37717      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
37718         XPV=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
37719         XPS=0.5D0*(XPQ(-1)+XPQ(-2))
37720         XPQ(1)=XPS
37721         XPQ(2)=XPS
37722         XPQ(-1)=XPS
37723         XPQ(-2)=XPS
37724         XPQ(KFA/1000)=XPQ(KFA/1000)+XPV
37725         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPV
37726         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPV
37727         XPV=(XPVAL(1)+XPVAL(2))/3D0
37728         XPVAL(1)=0D0
37729         XPVAL(2)=0D0
37730         XPVAL(KFA/1000)=XPVAL(KFA/1000)+XPV
37731         XPVAL(MOD(KFA/100,10))=XPVAL(MOD(KFA/100,10))+XPV
37732         XPVAL(MOD(KFA/10,10))=XPVAL(MOD(KFA/10,10))+XPV
37733       ENDIF
37734  
37735 C...Charge conjugation for antiparticle.
37736       IF(KF.LT.0) THEN
37737         DO 290 KFL=1,25
37738           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 290
37739           XPSV=XPQ(KFL)
37740           XPQ(KFL)=XPQ(-KFL)
37741           XPQ(-KFL)=XPSV
37742   290   CONTINUE
37743         DO 300 KFL=1,6
37744           XPSV=XPVAL(KFL)
37745           XPVAL(KFL)=XPVAL(-KFL)
37746           XPVAL(-KFL)=XPSV
37747   300  CONTINUE
37748       ENDIF
37749  
37750 C...MULTIPLE INTERACTIONS - PDF RESHAPING.
37751 C...Set side.
37752       JS=MINT(30)
37753 C...Only reshape PDFs for the non-first interactions;
37754 C...But need valence/sea separation already from first interaction.
37755       IF ((JS.EQ.1.OR.JS.EQ.2).AND.MINT(35).GE.2) THEN
37756         KFVSEL=KFIVAL(JS,1)
37757 C...If valence quark kicked out of pi0 or gamma then that decides
37758 C...whether we should consider state as d dbar, u ubar, s sbar, etc.
37759         IF(KFVSEL.NE.0.AND.(KFA.EQ.111.OR.KFA.EQ.22)) THEN
37760           XPVL=0D0
37761           DO 310 KFL=1,6
37762             XPVL=XPVL+XPVAL(KFL)
37763             XPQ(KFL)=MAX(0D0,XPQ(KFL)-XPVAL(KFL))
37764             XPVAL(KFL)=0D0
37765   310     CONTINUE
37766           XPQ(IABS(KFVSEL))=XPQ(IABS(KFVSEL))+XPVL
37767           XPVAL(IABS(KFVSEL))=XPVL
37768           DO 320 KFL=1,6
37769             XPQ(-KFL)=XPQ(KFL)
37770             XPVAL(-KFL)=XPVAL(KFL)
37771   320     CONTINUE
37772  
37773 C...If valence quark kicked out of K0S or K0S then that decides whether
37774 C...we should consider state as d sbar or s dbar.
37775         ELSEIF(KFVSEL.NE.0.AND.(KFA.EQ.130.OR.KFA.EQ.310)) THEN
37776           KFS=1
37777           IF(KFVSEL.EQ.-1.OR.KFVSEL.EQ.3) KFS=-1
37778           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
37779           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
37780           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
37781           XPVAL(-KFS)=0D0
37782           KFS=-3*KFS
37783           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
37784           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
37785           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
37786           XPVAL(-KFS)=0D0
37787         ENDIF
37788  
37789 C...XPQ distributions are nominal for a (signed) beam particle
37790 C...of KF type, with 1-Sum(x_prev) rescaled to 1.
37791         CMPFAC=1D0
37792         NRESC=0
37793  345    NRESC=NRESC+1
37794         PVCTOT(JS,-1)=0D0
37795         PVCTOT(JS, 0)=0D0
37796         PVCTOT(JS, 1)=0D0
37797         DO 350 IFL=-6,6
37798           IF(IFL.EQ.0) GOTO 350
37799  
37800 C...Count up number of original IFL valence quarks.
37801           IVORG=0
37802           IF(KFIVAL(JS,1).EQ.IFL) IVORG=IVORG+1
37803           IF(KFIVAL(JS,2).EQ.IFL) IVORG=IVORG+1
37804           IF(KFIVAL(JS,3).EQ.IFL) IVORG=IVORG+1
37805 C...For pi0/gamma/K0S/K0L without valence flavour decided yet, here
37806 C...bookkeep as if d dbar (for total momentum sum in valence sector).
37807           IF(KFIVAL(JS,1).EQ.0.AND.IABS(IFL).EQ.1) IVORG=1
37808 C...Count down number of remaining IFL valence quarks. Skip current
37809 C...interaction initiator.
37810           IVREM=IVORG
37811           DO 330 I1=1,NMI(JS)
37812             IF (I1.EQ.MINT(36)) GOTO 330
37813             IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
37814      &           IVREM=IVREM-1
37815   330     CONTINUE
37816  
37817 C...Separate out original VALENCE and SEA content.
37818           VAL=XPVAL(IFL)
37819           SEA=MAX(0D0,XPQ(IFL)-VAL)
37820           XPSVC(IFL,0)=VAL
37821           XPSVC(IFL,-1)=SEA
37822  
37823 C...Rescale valence content if changed.
37824           IF (IVORG.NE.0.AND.IVREM.NE.IVORG) XPSVC(IFL,0)=
37825      &    (VAL*IVREM)/IVORG
37826  
37827 C...Momentum integrals of original and removed valence quarks.
37828           IF(IVORG.NE.0) THEN
37829 C...For p/n/pbar/nbar beams can split into d_val and u_val.
37830 C...Isospin conjugation for neutrons
37831             IF(KFA.EQ.2212.OR.KFA.EQ.2112) THEN
37832               IAFLP=IABS(IFL)
37833               IF (KFA.EQ.2112) IAFLP=3-IAFLP
37834               VPAVG=PAVG(IAFLP,Q2)
37835 C...For other baryons average d_val and u_val, like for PDFs.
37836             ELSEIF(KFA.GT.1000) THEN
37837               VPAVG=(PAVG(1,Q2)+2D0*PAVG(2,Q2))/3D0
37838 C...For mesons and photon average d_val and u_val and scale by 3/2.
37839 C...Very crude, especially for photon.
37840             ELSE
37841               VPAVG=0.5D0*(PAVG(1,Q2)+2D0*PAVG(2,Q2))
37842             ENDIF
37843             PVCTOT(JS,-1)=PVCTOT(JS,-1)+IVORG*VPAVG
37844             PVCTOT(JS, 0)=PVCTOT(JS, 0)+(IVORG-IVREM)*VPAVG
37845           ENDIF
37846  
37847 C...Now add companions (at X with partner having been at Z=XASSOC).
37848 C...NOTE: due to the assumed simple x scaling, the partner was at what
37849 C...corresponds to a higher Z than XASSOC, if there were intermediate
37850 C...scatterings. Nothing done about that for the moment.
37851           DO 340 IVC=1,NVC(JS,IFL)
37852 C...Skip companions that have been kicked out
37853             IF (XASSOC(JS,IFL,IVC).LE.0D0) THEN
37854               XPSVC(IFL,IVC)=0D0
37855               GOTO 340
37856             ELSE
37857 C...Momentum fraction of the partner quark.
37858 C...Use rescaled YS = XS/(1-Sum_rest) where X and XS are not in "rest".
37859               XS=XASSOC(JS,IFL,IVC)
37860               XREM=VINT(142+JS)
37861               YS=XS/(XREM+XS)
37862 C...Momentum fraction of the companion quark.
37863 C...Rescale from X = x/XREM to Y = x/(1-Sum_rest) -> factor (1-YS).
37864               Y=X*(1D0-YS)
37865               XPSVC(IFL,IVC)=PYFCMP(Y/CMPFAC,YS/CMPFAC,MSTP(87))
37866 C...Add to momentum sum, with rescaling compensation factor.
37867               XCFAC=(XREM+XS)/XREM*CMPFAC
37868               PVCTOT(JS,1)=PVCTOT(JS,1)+XCFAC*PYPCMP(YS/CMPFAC,MSTP(87))
37869             ENDIF
37870   340     CONTINUE
37871   350   CONTINUE
37872  
37873 C...Wait until all flavours treated, then rescale seas and gluon.
37874         XPSVC(0,-1)=XPQ(0)
37875         XPSVC(0,0)=0D0
37876         RSFAC=1D0+(PVCTOT(JS,0)-PVCTOT(JS,1))/(1D0-PVCTOT(JS,-1))
37877         IF (RSFAC.LE.0D0) THEN
37878 C...First calculate factor needed to exactly restore pz cons.
37879           IF (NRESC.EQ.1) CMPFAC =
37880      &         (1D0-(PVCTOT(JS,-1)-PVCTOT(JS,0)))/PVCTOT(JS,1)
37881 C...Add a bit of headroom
37882           CMPFAC=0.99*CMPFAC
37883 C...Try a few times if more headroom is needed, then print error message.
37884           IF (NRESC.LE.10) GOTO 345
37885           CALL PYERRM(15,
37886      &         '(PYPDFU:) Negative reshaping factor persists!')
37887           WRITE(MSTU(11),5300) (PVCTOT(JS,ITMP),ITMP=-1,1), RSFAC
37888           RSFAC=0D0
37889         ENDIF
37890         DO 370 IFL=-6,6
37891           XPSVC(IFL,-1)=RSFAC*XPSVC(IFL,-1)
37892 C...Also store resulting distributions in XPQ
37893           XPQ(IFL)=0D0
37894           DO 360 ISVC=-1,NVC(JS,IFL)
37895             XPQ(IFL)=XPQ(IFL)+XPSVC(IFL,ISVC)
37896   360     CONTINUE
37897   370   CONTINUE
37898 C...Save companion reweighting factor for PYPTIS.
37899         VINT(140)=CMPFAC
37900       ENDIF
37901  
37902  
37903 C...Allow gluon also in position 21.
37904       XPQ(21)=XPQ(0)
37905  
37906 C...Check positivity and reset above maximum allowed flavour.
37907       DO 380 KFL=-25,25
37908         XPQ(KFL)=MAX(0D0,XPQ(KFL))
37909         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
37910   380 CONTINUE
37911  
37912 C...Formats for error printouts.
37913  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
37914  5100 FORMAT(' Error: illegal particle code for parton distribution;',
37915      &' KF =',I5)
37916  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
37917      &3I5)
37918  5300 FORMAT(' Original valence momentum fraction : ',F6.3/
37919      &       ' Removed valence momentum fraction  : ',F6.3/
37920      &       ' Added companion momentum fraction  : ',F6.3/
37921      &       ' Resulting rescale factor           : ',F6.3)
37922  
37923 C...Reset side pointer and return
37924  9999 MINT(30)=0
37925  
37926       RETURN
37927       END
37928  
37929 C*********************************************************************
37930  
37931 C...PYPDFL
37932 C...Gives proton parton distribution at small x and/or Q^2 according to
37933 C...correct limiting behaviour.
37934  
37935       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
37936  
37937 C...Double precision and integer declarations.
37938       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37939       IMPLICIT INTEGER(I-N)
37940       INTEGER PYK,PYCHGE,PYCOMP
37941 C...Commonblocks.
37942       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37943       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37944       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37945       COMMON/PYINT1/MINT(400),VINT(400)
37946       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
37947 C...Local arrays.
37948       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
37949       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
37950  
37951 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
37952       MINT(92)=0
37953       KFA=IABS(KF)
37954       IACC=0
37955       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
37956       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
37957       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
37958       IF(IACC.EQ.0) THEN
37959         CALL PYPDFU(KF,X,Q2,XPQ)
37960         RETURN
37961       ENDIF
37962  
37963 C...Reset. Check x.
37964       DO 100 KFL=-25,25
37965         XPQ(KFL)=0D0
37966   100 CONTINUE
37967       IF(X.LE.0D0.OR.X.GE.1D0) THEN
37968         WRITE(MSTU(11),5000) X
37969         RETURN
37970       ENDIF
37971  
37972 C...Define valence content.
37973       KFC=KF
37974       NV1=2
37975       NV2=1
37976       IF(KF.EQ.2212) THEN
37977         KFV1=2
37978         KFV2=1
37979       ELSEIF(KF.EQ.-2212) THEN
37980         KFV1=-2
37981         KFV2=-1
37982       ELSEIF(KF.EQ.2112) THEN
37983         KFV1=1
37984         KFV2=2
37985       ELSEIF(KF.EQ.-2112) THEN
37986         KFV1=-1
37987         KFV2=-2
37988       ELSEIF(KF.EQ.211) THEN
37989         NV1=1
37990         KFV1=2
37991         KFV2=-1
37992       ELSEIF(KF.EQ.-211) THEN
37993         NV1=1
37994         KFV1=-2
37995         KFV2=1
37996       ELSEIF(MINT(105).LE.223) THEN
37997         KFV1=1
37998         WTV1=0.2D0
37999         KFV2=2
38000         WTV2=0.8D0
38001       ELSEIF(MINT(105).EQ.333) THEN
38002         KFV1=3
38003         WTV1=1.0D0
38004         KFV2=1
38005         WTV2=0.0D0
38006       ELSEIF(MINT(105).EQ.443) THEN
38007         KFV1=4
38008         WTV1=1.0D0
38009         KFV2=1
38010         WTV2=0.0D0
38011       ENDIF
38012  
38013 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
38014       MINT30=MINT(30)
38015       CALL PYPDFU(KFC,X,Q2,XPA)
38016       Q2MN=MAX(3D0,VINT(231))
38017       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
38018       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
38019  
38020 C...Large Q2 and large x: naive call is enough.
38021       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
38022         DO 110 KFL=-25,25
38023           XPQ(KFL)=XPA(KFL)
38024   110   CONTINUE
38025         MINT(92)=1
38026  
38027 C...Small Q2 and large x: dampen boundary value.
38028       ELSEIF(X.GT.XMN) THEN
38029  
38030 C...Evaluate at boundary and define dampening factors.
38031         MINT(30)=MINT30
38032         CALL PYPDFU(KFC,X,Q2MN,XPA)
38033         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
38034         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
38035  
38036 C...Separate valence and sea parts of parton distribution.
38037         IF(KFA.NE.22) THEN
38038           XFV1=XPA(KFV1)-XPA(-KFV1)
38039           XPA(KFV1)=XPA(-KFV1)
38040           XFV2=XPA(KFV2)-XPA(-KFV2)
38041           XPA(KFV2)=XPA(-KFV2)
38042         ELSE
38043           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38044           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38045           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38046           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38047         ENDIF
38048  
38049 C...Dampen valence and sea separately. Put back together.
38050         DO 120 KFL=-25,25
38051           XPQ(KFL)=FS*XPA(KFL)
38052   120   CONTINUE
38053         IF(KFA.NE.22) THEN
38054           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
38055           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
38056         ELSE
38057           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
38058           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
38059           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
38060           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
38061         ENDIF
38062         MINT(92)=2
38063  
38064 C...Large Q2 and small x: interpolate behaviour.
38065       ELSEIF(Q2.GT.Q2MN) THEN
38066  
38067 C...Evaluate at extremes and define coefficients for interpolation.
38068         MINT(30)=MINT30
38069         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38070         VI232A=VINT(232)
38071         MINT(30)=MINT30
38072         CALL PYPDFU(KFC,X,Q2B,XPB)
38073         VI232B=VINT(232)
38074         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
38075         FVA=(X/XMN)**0.45D0*FLA
38076         FSA=(X/XMN)**(-0.08D0)*FLA
38077         FB=1D0-FLA
38078  
38079 C...Separate valence and sea parts of parton distribution.
38080         IF(KFA.NE.22) THEN
38081           XFVA1=XPA(KFV1)-XPA(-KFV1)
38082           XPA(KFV1)=XPA(-KFV1)
38083           XFVA2=XPA(KFV2)-XPA(-KFV2)
38084           XPA(KFV2)=XPA(-KFV2)
38085           XFVB1=XPB(KFV1)-XPB(-KFV1)
38086           XPB(KFV1)=XPB(-KFV1)
38087           XFVB2=XPB(KFV2)-XPB(-KFV2)
38088           XPB(KFV2)=XPB(-KFV2)
38089         ELSE
38090           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
38091           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
38092           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
38093           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
38094           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
38095           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
38096           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
38097           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
38098         ENDIF
38099  
38100 C...Interpolate for valence and sea. Put back together.
38101         DO 130 KFL=-25,25
38102           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
38103   130   CONTINUE
38104         IF(KFA.NE.22) THEN
38105           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
38106           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
38107         ELSE
38108           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38109           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38110           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38111           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38112         ENDIF
38113         MINT(92)=3
38114  
38115 C...Small Q2 and small x: dampen boundary value and add term.
38116       ELSE
38117  
38118 C...Evaluate at boundary and define dampening factors.
38119         MINT(30)=MINT30
38120         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38121         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
38122         FA=1D0-FB
38123         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
38124         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
38125         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
38126         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
38127         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
38128         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
38129  
38130 C...Separate valence and sea parts of parton distribution.
38131         IF(KFA.NE.22) THEN
38132           XFV1=XPA(KFV1)-XPA(-KFV1)
38133           XPA(KFV1)=XPA(-KFV1)
38134           XFV2=XPA(KFV2)-XPA(-KFV2)
38135           XPA(KFV2)=XPA(-KFV2)
38136         ELSE
38137           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38138           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38139           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38140           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38141         ENDIF
38142  
38143 C...Dampen valence and sea separately. Add constant terms.
38144 C...Put back together.
38145         DO 140 KFL=-25,25
38146           XPQ(KFL)=FSA*XPA(KFL)
38147   140   CONTINUE
38148         IF(KFA.NE.22) THEN
38149           DO 150 KFL=-3,3
38150             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
38151   150     CONTINUE
38152           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
38153           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
38154         ELSE
38155           DO 160 KFL=-3,3
38156             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
38157   160     CONTINUE
38158           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38159           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38160           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38161           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38162         ENDIF
38163         XPQ(21)=XPQ(0)
38164         MINT(92)=4
38165       ENDIF
38166  
38167 C...Format for error printout.
38168  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
38169  
38170       RETURN
38171       END
38172  
38173 C*********************************************************************
38174  
38175 C...PYPDEL
38176 C...Gives electron (or muon, or tau) parton distribution.
38177  
38178       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
38179  
38180 C...Double precision and integer declarations.
38181       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38182       IMPLICIT INTEGER(I-N)
38183       INTEGER PYK,PYCHGE,PYCOMP
38184 C...Commonblocks.
38185       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38186       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38187       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38188       COMMON/PYINT1/MINT(400),VINT(400)
38189       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
38190 C...Local arrays.
38191       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
38192  
38193 C...Interface to PDFLIB.
38194       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
38195       SAVE /LW50513/
38196       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
38197      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
38198       CHARACTER*20 PARM(20)
38199       DATA VALUE/20*0D0/,PARM/20*' '/
38200  
38201 C...Some common constants.
38202       DO 100 KFL=-25,25
38203         XPEL(KFL)=0D0
38204   100 CONTINUE
38205       AEM=PARU(101)
38206       PME=PMAS(11,1)
38207       IF(KFA.EQ.13) PME=PMAS(13,1)
38208       IF(KFA.EQ.15) PME=PMAS(15,1)
38209       XL=LOG(MAX(1D-10,X))
38210       X1L=LOG(MAX(1D-10,1D0-X))
38211       HLE=LOG(MAX(3D0,Q2/PME**2))
38212       HBE2=(AEM/PARU(1))*(HLE-1D0)
38213  
38214 C...Electron inside electron, see R. Kleiss et al., in Z physics at
38215 C...LEP 1, CERN 89-08, p. 34
38216       IF(MSTP(59).LE.1) THEN
38217         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
38218      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
38219         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
38220      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
38221      &  4D0*XL/(1D0-X)-5D0-X)
38222       ELSE
38223         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
38224      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
38225      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
38226       ENDIF
38227 C...Zero distribution for very large x and rescale it for intermediate.
38228       IF(X.GT.1D0-1D-10) THEN
38229         HEE=0D0
38230       ELSEIF(X.GT.1D0-1D-7) THEN
38231         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
38232       ENDIF
38233       XPEL(KFA)=X*HEE
38234  
38235 C...Photon and (transverse) W- inside electron.
38236       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
38237       IF(MSTP(13).LE.1) THEN
38238         HLG=HLE
38239       ELSE
38240         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
38241       ENDIF
38242       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
38243       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
38244       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
38245  
38246 C...Electron or positron inside photon inside electron.
38247       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
38248         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
38249      &  2D0*X*(1D0+X)*XL)
38250         XPEL(11)=XPEL(11)+XFSEA
38251         XPEL(-11)=XFSEA
38252  
38253 C...Initialize PDFLIB photon parton distributions.
38254         IF(MSTP(56).EQ.2) THEN
38255           PARM(1)='NPTYPE'
38256           VALUE(1)=3
38257           PARM(2)='NGROUP'
38258           VALUE(2)=MSTP(55)/1000
38259           PARM(3)='NSET'
38260           VALUE(3)=MOD(MSTP(55),1000)
38261           IF(MINT(93).NE.3000000+MSTP(55)) THEN
38262             CALL PDFSET_ALICE(PARM,VALUE)
38263             MINT(93)=3000000+MSTP(55)
38264           ENDIF
38265         ENDIF
38266  
38267 C...Quarks and gluons inside photon inside electron:
38268 C...numerical convolution required.
38269         DO 110 KFL=0,6
38270           SXP(KFL)=0D0
38271   110   CONTINUE
38272         SUMXPP=0D0
38273         ITER=-1
38274   120   ITER=ITER+1
38275         SUMXP=SUMXPP
38276         NSTP=2**(ITER-1)
38277         IF(ITER.EQ.0) NSTP=2
38278         DO 130 KFL=0,6
38279           SXP(KFL)=0.5D0*SXP(KFL)
38280   130   CONTINUE
38281         WTSTP=0.5D0/NSTP
38282         IF(ITER.EQ.0) WTSTP=0.5D0
38283 C...Pick grid of x_{gamma} values logarithmically even.
38284         DO 150 ISTP=1,NSTP
38285           IF(ITER.EQ.0) THEN
38286             XLE=XL*(ISTP-1)
38287           ELSE
38288             XLE=XL*(ISTP-0.5D0)/NSTP
38289           ENDIF
38290           XE=MIN(1D0-1D-10,EXP(XLE))
38291           XG=MIN(1D0-1D-10,X/XE)
38292 C...Evaluate photon inside electron parton distribution for convolution.
38293           XPGP=1D0+(1D0-XE)**2
38294           IF(MSTP(13).LE.1) THEN
38295             XPGP=XPGP*HLE
38296           ELSE
38297             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
38298           ENDIF
38299 C...Evaluate photon parton distributions for convolution.
38300           IF(MSTP(56).EQ.1) THEN
38301             IF(MSTP(55).EQ.1) THEN
38302               CALL PYPDGA(XG,Q2,XPGA)
38303             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
38304               Q2MX=Q2
38305               P2MX=0.36D0
38306               IF(MSTP(55).GE.7) P2MX=4.0D0
38307               IF(MSTP(57).EQ.0) Q2MX=P2MX
38308               P2=0D0
38309               IF(VINT(120).LT.0D0) P2=VINT(120)**2
38310               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38311               VINT(231)=P2MX
38312             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
38313               Q2MX=Q2
38314               P2MX=0.36D0
38315               IF(MSTP(55).GE.11) P2MX=4.0D0
38316               IF(MSTP(57).EQ.0) Q2MX=P2MX
38317               P2=0D0
38318               IF(VINT(120).LT.0D0) P2=VINT(120)**2
38319               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38320               VINT(231)=P2MX
38321             ENDIF
38322             DO 140 KFL=0,5
38323               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
38324   140       CONTINUE
38325           ELSEIF(MSTP(56).EQ.2) THEN
38326 C...Call PDFLIB parton distributions.
38327             XX=XG
38328             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
38329             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
38330             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
38331             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
38332             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
38333             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
38334             SXP(3)=SXP(3)+WTSTP*XPGP*STR
38335             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
38336             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
38337             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
38338           ENDIF
38339   150   CONTINUE
38340         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
38341         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
38342      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
38343  
38344 C...Put convolution into output arrays.
38345         FCONV=AEMP*(-XL)
38346         XPEL(0)=FCONV*SXP(0)
38347         DO 160 KFL=1,6
38348           XPEL(KFL)=FCONV*SXP(KFL)
38349           XPEL(-KFL)=XPEL(KFL)
38350   160   CONTINUE
38351       ENDIF
38352  
38353       RETURN
38354       END
38355  
38356 C*********************************************************************
38357  
38358 C...PYPDGA
38359 C...Gives photon parton distribution.
38360  
38361       SUBROUTINE PYPDGA(X,Q2,XPGA)
38362  
38363 C...Double precision and integer declarations.
38364       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38365       IMPLICIT INTEGER(I-N)
38366       INTEGER PYK,PYCHGE,PYCOMP
38367 C...Commonblocks.
38368       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38369       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38370       COMMON/PYINT1/MINT(400),VINT(400)
38371       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
38372 C...Local arrays.
38373       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
38374      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
38375      &DGCS(4,3),DGDS(4,3),DGES(4,3)
38376  
38377 C...The following data lines are coefficients needed in the
38378 C...Drees and Grassie photon parton distribution parametrization.
38379       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
38380      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
38381       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
38382      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
38383       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
38384      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
38385       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
38386      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
38387       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
38388      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
38389       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
38390      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
38391       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
38392      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
38393       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
38394      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
38395       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
38396      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
38397       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
38398      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
38399       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
38400      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
38401       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
38402      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
38403       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
38404      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
38405  
38406 C...Photon parton distribution from Drees and Grassie.
38407 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
38408       DO 100 KFL=-6,6
38409         XPGA(KFL)=0D0
38410   100 CONTINUE
38411       VINT(231)=1D0
38412       IF(MSTP(57).LE.0) THEN
38413         T=LOG(1D0/0.16D0)
38414       ELSE
38415         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
38416       ENDIF
38417       X1=1D0-X
38418       NF=3
38419       IF(Q2.GT.25D0) NF=4
38420       IF(Q2.GT.300D0) NF=5
38421       NFE=NF-2
38422       AEM=PARU(101)
38423  
38424 C...Evaluate gluon content.
38425       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
38426       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
38427       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
38428       XPGL=DGA*X**DGB*X1**DGC
38429  
38430 C...Evaluate up- and down-type quark content.
38431       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
38432       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
38433       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
38434       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
38435       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
38436       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
38437       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
38438       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
38439       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
38440       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
38441       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
38442       DGF=9D0
38443       IF(NF.EQ.4) DGF=10D0
38444       IF(NF.EQ.5) DGF=55D0/6D0
38445       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
38446       IF(NF.LE.3) THEN
38447         XPQU=(XPQS+9D0*XPQN)/6D0
38448         XPQD=(XPQS-4.5D0*XPQN)/6D0
38449       ELSEIF(NF.EQ.4) THEN
38450         XPQU=(XPQS+6D0*XPQN)/8D0
38451         XPQD=(XPQS-6D0*XPQN)/8D0
38452       ELSE
38453         XPQU=(XPQS+7.5D0*XPQN)/10D0
38454         XPQD=(XPQS-5D0*XPQN)/10D0
38455       ENDIF
38456  
38457 C...Put into output arrays.
38458       XPGA(0)=AEM*XPGL
38459       XPGA(1)=AEM*XPQD
38460       XPGA(2)=AEM*XPQU
38461       XPGA(3)=AEM*XPQD
38462       IF(NF.GE.4) XPGA(4)=AEM*XPQU
38463       IF(NF.GE.5) XPGA(5)=AEM*XPQD
38464       DO 110 KFL=1,6
38465         XPGA(-KFL)=XPGA(KFL)
38466   110 CONTINUE
38467  
38468       RETURN
38469       END
38470  
38471 C*********************************************************************
38472  
38473 C...PYGGAM
38474 C...Constructs the F2 and parton distributions of the photon
38475 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
38476 C...For F2, c and b are included by the Bethe-Heitler formula;
38477 C...in the 'MSbar' scheme additionally a Cgamma term is added.
38478 C...Contains the SaS sets 1D, 1M, 2D and 2M.
38479 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38480  
38481       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
38482  
38483 C...Double precision and integer declarations.
38484       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38485       IMPLICIT INTEGER(I-N)
38486       INTEGER PYK,PYCHGE,PYCOMP
38487 C...Commonblocks.
38488       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
38489      &XPDIR(-6:6)
38490       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
38491       SAVE /PYINT8/,/PYINT9/
38492 C...Local arrays.
38493       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
38494 C...Charm and bottom masses (low to compensate for J/psi etc.).
38495       DATA PMC/1.3D0/, PMB/4.6D0/
38496 C...alpha_em and alpha_em/(2*pi).
38497       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
38498 C...Lambda value for 4 flavours.
38499       DATA ALAM/0.20D0/
38500 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
38501       DATA FRACU/0.8D0/
38502 C...VMD couplings f_V**2/(4*pi).
38503       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
38504 C...Masses for rho (=omega) and phi.
38505       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
38506 C...Number of points in integration for IP2=1.
38507       DATA NSTEP/100/
38508  
38509 C...Reset output.
38510       F2GM=0D0
38511       DO 100 KFL=-6,6
38512         XPDFGM(KFL)=0D0
38513         XPVMD(KFL)=0D0
38514         XPANL(KFL)=0D0
38515         XPANH(KFL)=0D0
38516         XPBEH(KFL)=0D0
38517         XPDIR(KFL)=0D0
38518         VXPVMD(KFL)=0D0
38519         VXPANL(KFL)=0D0
38520         VXPANH(KFL)=0D0
38521         VXPDGM(KFL)=0D0
38522   100 CONTINUE
38523  
38524 C...Set Q0 cut-off parameter as function of set used.
38525       IF(ISET.LE.2) THEN
38526         Q0=0.6D0
38527       ELSE
38528         Q0=2D0
38529       ENDIF
38530       Q02=Q0**2
38531  
38532 C...Scale choice for off-shell photon; common factors.
38533       Q2A=Q2
38534       FACNOR=1D0
38535       IF(IP2.EQ.1) THEN
38536         P2MX=P2+Q02
38537         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
38538         FACNOR=LOG(Q2/Q02)/NSTEP
38539       ELSEIF(IP2.EQ.2) THEN
38540         P2MX=MAX(P2,Q02)
38541       ELSEIF(IP2.EQ.3) THEN
38542         P2MX=P2+Q02
38543         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
38544       ELSEIF(IP2.EQ.4) THEN
38545         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38546      &  ((Q2+P2)*(Q02+P2)))
38547       ELSEIF(IP2.EQ.5) THEN
38548         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38549      &  ((Q2+P2)*(Q02+P2)))
38550         P2MX=Q0*SQRT(P2MXA)
38551         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
38552       ELSEIF(IP2.EQ.6) THEN
38553         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38554      &  ((Q2+P2)*(Q02+P2)))
38555         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
38556       ELSE
38557         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
38558      &  ((Q2+P2)*(Q02+P2)))
38559         P2MX=Q0*SQRT(P2MXA)
38560         P2MXB=P2MX
38561         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
38562         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
38563         IF(ABS(Q2-Q02).GT.1D-6) THEN
38564           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
38565         ELSEIF(P2.LT.Q02) THEN
38566           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
38567         ELSE
38568           FACNOR=1D0
38569         ENDIF
38570       ENDIF
38571  
38572 C...Call VMD parametrization for d quark and use to give rho, omega,
38573 C...phi. Note dipole dampening for off-shell photon.
38574       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38575       XFVAL=VXPGA(1)
38576       XPGA(1)=XPGA(2)
38577       XPGA(-1)=XPGA(-2)
38578       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
38579       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
38580       DO 110 KFL=-5,5
38581         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
38582   110 CONTINUE
38583       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
38584       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
38585       XPVMD(3)=XPVMD(3)+FACS*XFVAL
38586       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
38587       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
38588       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
38589       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
38590       VXPVMD(2)=FRACU*FACUD*XFVAL
38591       VXPVMD(3)=FACS*XFVAL
38592       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
38593       VXPVMD(-2)=FRACU*FACUD*XFVAL
38594       VXPVMD(-3)=FACS*XFVAL
38595  
38596       IF(IP2.NE.1) THEN
38597 C...Anomalous parametrizations for different strategies
38598 C...for off-shell photons; except full integration.
38599  
38600 C...Call anomalous parametrization for d + u + s.
38601         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38602         DO 120 KFL=-5,5
38603           XPANL(KFL)=FACNOR*XPGA(KFL)
38604           VXPANL(KFL)=FACNOR*VXPGA(KFL)
38605   120   CONTINUE
38606  
38607 C...Call anomalous parametrization for c and b.
38608         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38609         DO 130 KFL=-5,5
38610           XPANH(KFL)=FACNOR*XPGA(KFL)
38611           VXPANH(KFL)=FACNOR*VXPGA(KFL)
38612   130   CONTINUE
38613         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
38614         DO 140 KFL=-5,5
38615           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
38616           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
38617   140   CONTINUE
38618  
38619       ELSE
38620 C...Special option: loop over flavours and integrate over k2.
38621         DO 170 KF=1,5
38622           DO 160 ISTEP=1,NSTEP
38623             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
38624             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
38625      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
38626             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
38627             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
38628             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
38629             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
38630             DO 150 KFL=-5,5
38631               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
38632               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
38633               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
38634               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
38635   150       CONTINUE
38636   160     CONTINUE
38637   170   CONTINUE
38638       ENDIF
38639  
38640 C...Call Bethe-Heitler term expression for charm and bottom.
38641       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
38642       XPBEH(4)=XPBH
38643       XPBEH(-4)=XPBH
38644       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
38645       XPBEH(5)=XPBH
38646       XPBEH(-5)=XPBH
38647  
38648 C...For MSbar subtraction call C^gamma term expression for d, u, s.
38649       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
38650         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
38651         DO 180 KFL=-5,5
38652           XPDIR(KFL)=XPGA(KFL)
38653   180   CONTINUE
38654       ENDIF
38655  
38656 C...Store result in output array.
38657       DO 190 KFL=-5,5
38658         CHSQ=1D0/9D0
38659         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
38660         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38661         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
38662         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
38663         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
38664   190 CONTINUE
38665  
38666       RETURN
38667       END
38668  
38669 C*********************************************************************
38670  
38671 C...PYGVMD
38672 C...Evaluates the VMD parton distributions of a photon,
38673 C...evolved homogeneously from an initial scale P2 to Q2.
38674 C...Does not include dipole suppression factor.
38675 C...ISET is parton distribution set, see above;
38676 C...additionally ISET=0 is used for the evolution of an anomalous photon
38677 C...which branched at a scale P2 and then evolved homogeneously to Q2.
38678 C...ALAM is the 4-flavour Lambda, which is automatically converted
38679 C...to 3- and 5-flavour equivalents as needed.
38680 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38681  
38682       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
38683  
38684 C...Double precision and integer declarations.
38685       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38686       IMPLICIT INTEGER(I-N)
38687       INTEGER PYK,PYCHGE,PYCOMP
38688 C...Local arrays and data.
38689       DIMENSION XPGA(-6:6), VXPGA(-6:6)
38690       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
38691  
38692 C...Reset output.
38693       DO 100 KFL=-6,6
38694         XPGA(KFL)=0D0
38695         VXPGA(KFL)=0D0
38696   100 CONTINUE
38697       KFA=IABS(KF)
38698  
38699 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
38700       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
38701       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
38702       P2EFF=MAX(P2,1.2D0*ALAM3**2)
38703       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
38704       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
38705       Q2EFF=MAX(Q2,P2EFF)
38706  
38707 C...Find number of flavours at lower and upper scale.
38708       NFP=4
38709       IF(P2EFF.LT.PMC**2) NFP=3
38710       IF(P2EFF.GT.PMB**2) NFP=5
38711       NFQ=4
38712       IF(Q2EFF.LT.PMC**2) NFQ=3
38713       IF(Q2EFF.GT.PMB**2) NFQ=5
38714  
38715 C...Find s as sum of 3-, 4- and 5-flavour parts.
38716       S=0D0
38717       IF(NFP.EQ.3) THEN
38718         Q2DIV=PMC**2
38719         IF(NFQ.EQ.3) Q2DIV=Q2EFF
38720         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
38721       ENDIF
38722       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
38723         P2DIV=P2EFF
38724         IF(NFP.EQ.3) P2DIV=PMC**2
38725         Q2DIV=Q2EFF
38726         IF(NFQ.EQ.5) Q2DIV=PMB**2
38727         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
38728       ENDIF
38729       IF(NFQ.EQ.5) THEN
38730         P2DIV=PMB**2
38731         IF(NFP.EQ.5) P2DIV=P2EFF
38732         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
38733       ENDIF
38734  
38735 C...Calculate frequent combinations of x and s.
38736       X1=1D0-X
38737       XL=-LOG(X)
38738       S2=S**2
38739       S3=S**3
38740       S4=S**4
38741  
38742 C...Evaluate homogeneous anomalous parton distributions below or
38743 C...above threshold.
38744       IF(ISET.EQ.0) THEN
38745         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38746      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38747           XVAL = X * 1.5D0 * (X**2+X1**2)
38748           XGLU = 0D0
38749           XSEA = 0D0
38750         ELSE
38751           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
38752      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
38753      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
38754      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
38755           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
38756      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
38757      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
38758           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
38759      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
38760      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
38761      &    (2D0*X-1D0)*X*XL**2)
38762         ENDIF
38763  
38764 C...Evaluate set 1D parton distributions below or above threshold.
38765       ELSEIF(ISET.EQ.1) THEN
38766         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38767      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38768           XVAL = 1.294D0 * X**0.80D0 * X1**0.76D0
38769           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
38770           XSEA = 0.100D0 * X1**3.76D0
38771         ELSE
38772           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
38773      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
38774           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
38775      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
38776      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
38777      &    X**0.40D0 * X1**(1.76D0+3D0*S)
38778           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
38779      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
38780      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
38781           XSEA0 = 0.100D0 * X1**3.76D0
38782         ENDIF
38783  
38784 C...Evaluate set 1M parton distributions below or above threshold.
38785       ELSEIF(ISET.EQ.2) THEN
38786         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38787      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38788           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
38789           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
38790           XSEA = 0D0
38791         ELSE
38792           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
38793      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
38794           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
38795      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
38796      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
38797      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
38798           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
38799      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
38800      &    XL**(2.8D0*S)
38801           XSEA0 = 0D0
38802         ENDIF
38803  
38804 C...Evaluate set 2D parton distributions below or above threshold.
38805       ELSEIF(ISET.EQ.3) THEN
38806         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38807      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38808           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
38809           XGLU = 1.925D0 * X1**2
38810           XSEA = 0.242D0 * X1**4
38811         ELSE
38812           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
38813      &    X**(0.46D0+0.25D0*S) *
38814      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
38815      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
38816           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
38817      &    EXP(-18.67D0*S) *
38818      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
38819      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
38820      &    XL**(9.3D0*S/(1D0+1.7D0*S))
38821           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
38822      &    (1D0-0.607D0*S+21.95D0*S2) *
38823      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
38824           XSEA0 = 0.242D0 * X1**4
38825         ENDIF
38826  
38827 C...Evaluate set 2M parton distributions below or above threshold.
38828       ELSEIF(ISET.EQ.4) THEN
38829         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
38830      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
38831           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
38832           XGLU = 1.808D0 * X1**2
38833           XSEA = 0.209D0 * X1**4
38834         ELSE
38835           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
38836      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
38837      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
38838      &    XL**(5.15D0*S/(1D0+2D0*S)) +
38839      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
38840           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
38841      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
38842      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
38843      &    XL**(10.9D0*S/(1D0+2.5D0*S))
38844           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
38845      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
38846      &    X1**(4D0+S) * XL**(0.45D0*S)
38847           XSEA0 = 0.209D0 * X1**4
38848         ENDIF
38849       ENDIF
38850  
38851 C...Threshold factors for c and b sea.
38852       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
38853       XCHM=0D0
38854       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
38855         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
38856         IF(ISET.EQ.0) THEN
38857           XCHM=XSEA*(1D0-(SCH/SLL)**2)
38858         ELSE
38859           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
38860         ENDIF
38861       ENDIF
38862       XBOT=0D0
38863       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
38864         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
38865         IF(ISET.EQ.0) THEN
38866           XBOT=XSEA*(1D0-(SBT/SLL)**2)
38867         ELSE
38868           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
38869         ENDIF
38870       ENDIF
38871  
38872 C...Fill parton distributions.
38873       XPGA(0)=XGLU
38874       XPGA(1)=XSEA
38875       XPGA(2)=XSEA
38876       XPGA(3)=XSEA
38877       XPGA(4)=XCHM
38878       XPGA(5)=XBOT
38879       XPGA(KFA)=XPGA(KFA)+XVAL
38880       DO 110 KFL=1,5
38881         XPGA(-KFL)=XPGA(KFL)
38882   110 CONTINUE
38883       VXPGA(KFA)=XVAL
38884       VXPGA(-KFA)=XVAL
38885  
38886       RETURN
38887       END
38888  
38889 C*********************************************************************
38890  
38891 C...PYGANO
38892 C...Evaluates the parton distributions of the anomalous photon,
38893 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
38894 C...KF=0 gives the sum over (up to) 5 flavours,
38895 C...KF<0 limits to flavours up to abs(KF),
38896 C...KF>0 is for flavour KF only.
38897 C...ALAM is the 4-flavour Lambda, which is automatically converted
38898 C...to 3- and 5-flavour equivalents as needed.
38899 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
38900  
38901       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
38902  
38903 C...Double precision and integer declarations.
38904       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38905       IMPLICIT INTEGER(I-N)
38906       INTEGER PYK,PYCHGE,PYCOMP
38907 C...Local arrays and data.
38908       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
38909       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
38910  
38911 C...Reset output.
38912       DO 100 KFL=-6,6
38913         XPGA(KFL)=0D0
38914         VXPGA(KFL)=0D0
38915   100 CONTINUE
38916       IF(Q2.LE.P2) RETURN
38917       KFA=IABS(KF)
38918  
38919 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
38920       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
38921       ALAMSQ(4)=ALAM**2
38922       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
38923       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
38924       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
38925       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
38926       Q2EFF=MAX(Q2,P2EFF)
38927       XL=-LOG(X)
38928  
38929 C...Find number of flavours at lower and upper scale.
38930       NFP=4
38931       IF(P2EFF.LT.PMC**2) NFP=3
38932       IF(P2EFF.GT.PMB**2) NFP=5
38933       NFQ=4
38934       IF(Q2EFF.LT.PMC**2) NFQ=3
38935       IF(Q2EFF.GT.PMB**2) NFQ=5
38936  
38937 C...Define range of flavour loop.
38938       IF(KF.EQ.0) THEN
38939         KFLMN=1
38940         KFLMX=5
38941       ELSEIF(KF.LT.0) THEN
38942         KFLMN=1
38943         KFLMX=KFA
38944       ELSE
38945         KFLMN=KFA
38946         KFLMX=KFA
38947       ENDIF
38948  
38949 C...Loop over flavours the photon can branch into.
38950       DO 110 KFL=KFLMN,KFLMX
38951  
38952 C...Light flavours: calculate t range and (approximate) s range.
38953         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
38954           TDIFF=LOG(Q2EFF/P2EFF)
38955           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
38956      &    LOG(P2EFF/ALAMSQ(NFQ)))
38957           IF(NFQ.GT.NFP) THEN
38958             Q2DIV=PMB**2
38959             IF(NFQ.EQ.4) Q2DIV=PMC**2
38960             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
38961      &      LOG(P2EFF/ALAMSQ(NFQ)))
38962             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
38963      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
38964             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
38965           ENDIF
38966           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
38967             Q2DIV=PMC**2
38968             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
38969      &      LOG(P2EFF/ALAMSQ(4)))
38970             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
38971      &      LOG(P2EFF/ALAMSQ(3)))
38972             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
38973           ENDIF
38974  
38975 C...u and s quark do not need a separate treatment when d has been done.
38976         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
38977  
38978 C...Charm: as above, but only include range above c threshold.
38979         ELSEIF(KFL.EQ.4) THEN
38980           IF(Q2.LE.PMC**2) GOTO 110
38981           P2EFF=MAX(P2EFF,PMC**2)
38982           Q2EFF=MAX(Q2EFF,P2EFF)
38983           TDIFF=LOG(Q2EFF/P2EFF)
38984           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
38985      &    LOG(P2EFF/ALAMSQ(NFQ)))
38986           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
38987             Q2DIV=PMB**2
38988             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
38989      &      LOG(P2EFF/ALAMSQ(NFQ)))
38990             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
38991      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
38992             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
38993           ENDIF
38994  
38995 C...Bottom: as above, but only include range above b threshold.
38996         ELSEIF(KFL.EQ.5) THEN
38997           IF(Q2.LE.PMB**2) GOTO 110
38998           P2EFF=MAX(P2EFF,PMB**2)
38999           Q2EFF=MAX(Q2,P2EFF)
39000           TDIFF=LOG(Q2EFF/P2EFF)
39001           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
39002      &    LOG(P2EFF/ALAMSQ(NFQ)))
39003         ENDIF
39004  
39005 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
39006         CHSQ=1D0/9D0
39007         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
39008         FAC=AEM2PI*2D0*CHSQ*TDIFF
39009  
39010 C...Evaluate parton distributions (normalized to unit momentum sum).
39011         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
39012           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
39013      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
39014      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
39015      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
39016           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
39017      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
39018      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
39019           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
39020      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
39021      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
39022      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
39023  
39024 C...Threshold factors for c and b sea.
39025           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
39026           XCHM=0D0
39027           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39028             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39029             XCHM=XSEA*(1D0-(SCH/SLL)**3)
39030           ENDIF
39031           XBOT=0D0
39032           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39033             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39034             XBOT=XSEA*(1D0-(SBT/SLL)**3)
39035           ENDIF
39036         ENDIF
39037  
39038 C...Add contribution of each valence flavour.
39039         XPGA(0)=XPGA(0)+FAC*XGLU
39040         XPGA(1)=XPGA(1)+FAC*XSEA
39041         XPGA(2)=XPGA(2)+FAC*XSEA
39042         XPGA(3)=XPGA(3)+FAC*XSEA
39043         XPGA(4)=XPGA(4)+FAC*XCHM
39044         XPGA(5)=XPGA(5)+FAC*XBOT
39045         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
39046         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
39047   110 CONTINUE
39048       DO 120 KFL=1,5
39049         XPGA(-KFL)=XPGA(KFL)
39050         VXPGA(-KFL)=VXPGA(KFL)
39051   120 CONTINUE
39052  
39053       RETURN
39054       END
39055  
39056  
39057 C*********************************************************************
39058  
39059 C...PYGBEH
39060 C...Evaluates the Bethe-Heitler cross section for heavy flavour
39061 C...production.
39062 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39063  
39064       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
39065  
39066 C...Double precision and integer declarations.
39067       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39068       IMPLICIT INTEGER(I-N)
39069       INTEGER PYK,PYCHGE,PYCOMP
39070  
39071 C...Local data.
39072       DATA AEM2PI/0.0011614D0/
39073  
39074 C...Reset output.
39075       XPBH=0D0
39076       SIGBH=0D0
39077  
39078 C...Check kinematics limits.
39079       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
39080       W2=Q2*(1D0-X)/X-P2
39081       BETA2=1D0-4D0*PM2/W2
39082       IF(BETA2.LT.1D-10) RETURN
39083       BETA=SQRT(BETA2)
39084       RMQ=4D0*PM2/Q2
39085  
39086 C...Simple case: P2 = 0.
39087       IF(P2.LT.1D-4) THEN
39088         IF(BETA.LT.0.99D0) THEN
39089           XBL=LOG((1D0+BETA)/(1D0-BETA))
39090         ELSE
39091           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
39092         ENDIF
39093         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
39094      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
39095  
39096 C...Complicated case: P2 > 0, based on approximation of
39097 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
39098       ELSE
39099         RPQ=1D0-4D0*X**2*P2/Q2
39100         IF(RPQ.GT.1D-10) THEN
39101           RPBE=SQRT(RPQ*BETA2)
39102           IF(RPBE.LT.0.99D0) THEN
39103             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
39104             XBI=2D0*RPBE/(1D0-RPBE**2)
39105           ELSE
39106             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
39107             XBL=LOG((1D0+RPBE)**2/RPBESN)
39108             XBI=2D0*RPBE/RPBESN
39109           ENDIF
39110           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
39111      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
39112      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
39113         ENDIF
39114       ENDIF
39115  
39116 C...Multiply by charge-squared etc. to get parton distribution.
39117       CHSQ=1D0/9D0
39118       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
39119       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
39120  
39121       RETURN
39122       END
39123  
39124 C*********************************************************************
39125  
39126 C...PYGDIR
39127 C...Evaluates the direct contribution, i.e. the C^gamma term,
39128 C...as needed in MSbar parametrizations.
39129 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39130  
39131       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
39132  
39133 C...Double precision and integer declarations.
39134       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39135       IMPLICIT INTEGER(I-N)
39136       INTEGER PYK,PYCHGE,PYCOMP
39137 C...Local array and data.
39138       DIMENSION XPGA(-6:6)
39139       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
39140  
39141 C...Reset output.
39142       DO 100 KFL=-6,6
39143         XPGA(KFL)=0D0
39144   100 CONTINUE
39145  
39146 C...Evaluate common x-dependent expression.
39147       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
39148       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
39149  
39150 C...d, u, s part by simple charge factor.
39151       XPGA(1)=(1D0/9D0)*CGAM
39152       XPGA(2)=(4D0/9D0)*CGAM
39153       XPGA(3)=(1D0/9D0)*CGAM
39154  
39155 C...Also fill for antiquarks.
39156       DO 110 KF=1,5
39157         XPGA(-KF)=XPGA(KF)
39158   110 CONTINUE
39159  
39160       RETURN
39161       END
39162  
39163 C*********************************************************************
39164  
39165 C...PYPDPI
39166 C...Gives pi+ parton distribution according to two different
39167 C...parametrizations.
39168  
39169       SUBROUTINE PYPDPI(X,Q2,XPPI)
39170  
39171 C...Double precision and integer declarations.
39172       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39173       IMPLICIT INTEGER(I-N)
39174       INTEGER PYK,PYCHGE,PYCOMP
39175 C...Commonblocks.
39176       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39177       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39178       COMMON/PYINT1/MINT(400),VINT(400)
39179       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
39180 C...Local arrays.
39181       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
39182  
39183 C...The following data lines are coefficients needed in the
39184 C...Owens pion parton distribution parametrizations, see below.
39185 C...Expansion coefficients for up and down valence quark distributions.
39186       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
39187      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39188      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39189      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
39190       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
39191      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39192      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39193      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
39194 C...Expansion coefficients for gluon distribution.
39195       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
39196      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
39197      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
39198      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
39199       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
39200      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
39201      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
39202      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
39203 C...Expansion coefficients for (up+down+strange) quark sea distribution.
39204       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
39205      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
39206      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
39207      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
39208       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
39209      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
39210      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
39211      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
39212 C...Expansion coefficients for charm quark sea distribution.
39213       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
39214      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
39215      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
39216      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
39217       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
39218      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
39219      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
39220      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
39221  
39222 C...Euler's beta function, requires ordinary Gamma function
39223       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
39224  
39225 C...Reset output array.
39226       DO 100 KFL=-6,6
39227         XPPI(KFL)=0D0
39228   100 CONTINUE
39229  
39230       IF(MSTP(53).LE.2) THEN
39231 C...Pion parton distributions from Owens.
39232 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
39233  
39234 C...Determine set, Lambda and s expansion variable.
39235         NSET=MSTP(53)
39236         IF(NSET.EQ.1) ALAM=0.2D0
39237         IF(NSET.EQ.2) ALAM=0.4D0
39238         VINT(231)=4D0
39239         IF(MSTP(57).LE.0) THEN
39240           SD=0D0
39241         ELSE
39242           Q2IN=MIN(2D3,MAX(4D0,Q2))
39243           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
39244         ENDIF
39245  
39246 C...Calculate parton distributions.
39247         DO 120 KFL=1,4
39248           DO 110 IS=1,5
39249             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
39250      &      COW(3,IS,KFL,NSET)*SD**2
39251   110     CONTINUE
39252           IF(KFL.EQ.1) THEN
39253             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
39254           ELSE
39255             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
39256      &      TS(5)*X**2)
39257           ENDIF
39258   120   CONTINUE
39259  
39260 C...Put into output array.
39261         XPPI(0)=XQ(2)
39262         XPPI(1)=XQ(3)/6D0
39263         XPPI(2)=XQ(1)+XQ(3)/6D0
39264         XPPI(3)=XQ(3)/6D0
39265         XPPI(4)=XQ(4)
39266         XPPI(-1)=XQ(1)+XQ(3)/6D0
39267         XPPI(-2)=XQ(3)/6D0
39268         XPPI(-3)=XQ(3)/6D0
39269         XPPI(-4)=XQ(4)
39270  
39271 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
39272 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
39273 C...10^-5 < x < 1.
39274       ELSE
39275  
39276 C...Determine s expansion variable and some x expressions.
39277         VINT(231)=0.25D0
39278         IF(MSTP(57).LE.0) THEN
39279           SD=0D0
39280         ELSE
39281           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
39282           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
39283         ENDIF
39284         SD2=SD**2
39285         XL=-LOG(X)
39286         XS=SQRT(X)
39287  
39288 C...Evaluate valence, gluon and sea distributions.
39289         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
39290      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
39291         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
39292      &  SD-0.175D0*SD2)+
39293      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
39294      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
39295      &  XL)))*
39296      &  (1D0-X)**(0.390D0+1.053D0*SD)
39297         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
39298      &  X)**3.359D0*
39299      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
39300      &  XL))/
39301      &  XL**(2.538D0-0.763D0*SD)
39302         IF(SD.LE.0.888D0) THEN
39303           XFCHM=0D0
39304         ELSE
39305           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
39306      &    0.771D0*SD)*
39307      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
39308      &    XL))
39309         ENDIF
39310         IF(SD.LE.1.351D0) THEN
39311           XFBOT=0D0
39312         ELSE
39313           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
39314      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
39315      &    XL))
39316         ENDIF
39317  
39318 C...Put into output array.
39319         XPPI(0)=XFGLU
39320         XPPI(1)=XFSEA
39321         XPPI(2)=XFSEA
39322         XPPI(3)=XFSEA
39323         XPPI(4)=XFCHM
39324         XPPI(5)=XFBOT
39325         DO 130 KFL=1,5
39326           XPPI(-KFL)=XPPI(KFL)
39327   130   CONTINUE
39328         XPPI(2)=XPPI(2)+XFVAL
39329         XPPI(-1)=XPPI(-1)+XFVAL
39330       ENDIF
39331  
39332       RETURN
39333       END
39334  
39335 C*********************************************************************
39336  
39337 C...PYPDPR
39338 C...Gives proton parton distributions according to a few different
39339 C...parametrizations.
39340  
39341       SUBROUTINE PYPDPR(X,Q2,XPPR)
39342  
39343 C...Double precision and integer declarations.
39344       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39345       IMPLICIT INTEGER(I-N)
39346       INTEGER PYK,PYCHGE,PYCOMP
39347 C...Commonblocks.
39348       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39349       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39350       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39351       COMMON/PYINT1/MINT(400),VINT(400)
39352       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
39353 C...Arrays and data.
39354       DIMENSION XPPR(-6:6),Q2MIN(16)
39355       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
39356      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
39357  
39358 C...Reset output array.
39359       DO 100 KFL=-6,6
39360         XPPR(KFL)=0D0
39361   100 CONTINUE
39362  
39363 C...Common preliminaries.
39364       NSET=MAX(1,MIN(16,MSTP(51)))
39365       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
39366       VINT(231)=Q2MIN(NSET)
39367       IF(MSTP(57).EQ.0) THEN
39368         Q2L=Q2MIN(NSET)
39369       ELSE
39370         Q2L=MAX(Q2MIN(NSET),Q2)
39371       ENDIF
39372  
39373       IF(NSET.GE.1.AND.NSET.LE.3) THEN
39374 C...Interface to the CTEQ 3 parton distributions.
39375         QRT=SQRT(MAX(1D0,Q2L))
39376  
39377 C...Loop over flavours.
39378         DO 110 I=-6,6
39379           IF(I.LE.0) THEN
39380             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
39381           ELSEIF(I.LE.2) THEN
39382             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
39383           ELSE
39384             XPPR(I)=XPPR(-I)
39385           ENDIF
39386   110   CONTINUE
39387  
39388       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
39389 C...Interface to the GRV 94 distributions.
39390         IF(NSET.EQ.4) THEN
39391           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39392         ELSEIF(NSET.EQ.5) THEN
39393           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39394         ELSE
39395           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39396         ENDIF
39397  
39398 C...Put into output array.
39399         XPPR(0)=GL
39400         XPPR(-1)=0.5D0*(UDB+DEL)
39401         XPPR(-2)=0.5D0*(UDB-DEL)
39402         XPPR(-3)=SB
39403         XPPR(-4)=CHM
39404         XPPR(-5)=BOT
39405         XPPR(1)=DV+XPPR(-1)
39406         XPPR(2)=UV+XPPR(-2)
39407         XPPR(3)=SB
39408         XPPR(4)=CHM
39409         XPPR(5)=BOT
39410  
39411       ELSEIF(NSET.EQ.7) THEN
39412 C...Interface to the CTEQ 5L parton distributions.
39413 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
39414 C...freezing x*f(x,Q2) at borders.
39415         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
39416         XIN=MAX(1D-6,MIN(1D0,X))
39417  
39418 C...Loop over flavours (with u <-> d notation mismatch).
39419         SUMUDB=PYCT5L(-1,XIN,QRT)
39420         RATUDB=PYCT5L(-2,XIN,QRT)
39421         DO 120 I=-5,2
39422           IF(I.EQ.1) THEN
39423             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
39424           ELSEIF(I.EQ.2) THEN
39425             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
39426           ELSEIF(I.EQ.-1) THEN
39427             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
39428           ELSEIF(I.EQ.-2) THEN
39429             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
39430           ELSE
39431             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
39432             IF(I.LT.0) XPPR(-I)=XPPR(I)
39433           ENDIF
39434   120   CONTINUE
39435  
39436       ELSEIF(NSET.EQ.8) THEN
39437 C...Interface to the CTEQ 5M1 parton distributions.
39438         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
39439         XIN=MAX(1D-6,MIN(1D0,X))
39440  
39441 C...Loop over flavours (with u <-> d notation mismatch).
39442         SUMUDB=PYCT5M(-1,XIN,QRT)
39443         RATUDB=PYCT5M(-2,XIN,QRT)
39444         DO 130 I=-5,2
39445           IF(I.EQ.1) THEN
39446             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
39447           ELSEIF(I.EQ.2) THEN
39448             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
39449           ELSEIF(I.EQ.-1) THEN
39450             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
39451           ELSEIF(I.EQ.-2) THEN
39452             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
39453           ELSE
39454             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
39455             IF(I.LT.0) XPPR(-I)=XPPR(I)
39456           ENDIF
39457   130   CONTINUE
39458  
39459       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
39460 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
39461 C...obsolete but offers backwards compatibility.
39462         CALL PYPDPO(X,Q2L,XPPR)
39463  
39464 C...Symmetric choice for debugging only
39465       ELSEIF(NSET.EQ.16) THEN
39466         XPPR(0)=.5D0/X
39467         XPPR(1)=.05D0/X
39468         XPPR(2)=.05D0/X
39469         XPPR(3)=.05D0/X
39470         XPPR(4)=.05D0/X
39471         XPPR(5)=.05D0/X
39472         XPPR(-1)=.05D0/X
39473         XPPR(-2)=.05D0/X
39474         XPPR(-3)=.05D0/X
39475         XPPR(-4)=.05D0/X
39476         XPPR(-5)=.05D0/X
39477  
39478       ENDIF
39479  
39480       RETURN
39481       END
39482  
39483 C*********************************************************************
39484  
39485 C...PYCTEQ
39486 C...Gives the CTEQ 3 parton distribution function sets in
39487 C...parametrized form, of October 24, 1994.
39488 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
39489 C...J. Qiu, W.K. Tung and H. Weerts.
39490  
39491       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
39492  
39493 C...Double precision declaration.
39494       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39495       IMPLICIT INTEGER(I-N)
39496  
39497 C...Data on Lambda values of fits, minimum Q and quark masses.
39498       DIMENSION ALM(3), QMS(4:6)
39499       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
39500       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
39501  
39502 C....Check flavour thresholds. Set up QI for SB.
39503       IP = IABS(IPRT)
39504       IF(IP .GE. 4) THEN
39505         IF(Q .LE. QMS(IP)) THEN
39506           PYCTEQ = 0D0
39507           RETURN
39508         ENDIF
39509         QI = QMS(IP)
39510       ELSE
39511         QI = QMN
39512       ENDIF
39513  
39514 C...Use "standard lambda" of parametrization program for expansion.
39515       ALAM = ALM (ISET)
39516       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
39517       SB = LOG (SBL)
39518       SB2 = SB*SB
39519       SB3 = SB2*SB
39520  
39521 C...Expansion for CTEQ3L.
39522       IF(ISET .EQ. 1) THEN
39523         IF(IPRT .EQ. 2) THEN
39524           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
39525      &    0.3171D+00*SB3)
39526           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
39527           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
39528           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
39529           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
39530           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
39531         ELSEIF(IPRT .EQ. 1) THEN
39532           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
39533      &    0.7728D+00*SB3)
39534           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
39535           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
39536           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
39537           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
39538           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
39539         ELSEIF(IPRT .EQ. 0) THEN
39540           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
39541      &    0.5343D+00*SB3)
39542           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
39543           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
39544           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
39545           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
39546           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
39547         ELSEIF(IPRT .EQ. -1) THEN
39548           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
39549      &    0.2031D+01*SB3)
39550           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
39551           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
39552           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
39553           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
39554           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
39555         ELSEIF(IPRT .EQ. -2) THEN
39556           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
39557      &    0.9872D-01*SB3)
39558           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
39559           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
39560           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
39561           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
39562           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
39563         ELSEIF(IPRT .EQ. -3) THEN
39564           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
39565      &    0.8390D+00*SB3)
39566           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
39567           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
39568           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
39569           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
39570           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
39571         ELSEIF(IPRT .EQ. -4) THEN
39572           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
39573      &    0.1651D-01*SB2)
39574           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
39575           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
39576           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
39577           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
39578           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
39579         ELSEIF(IPRT .EQ. -5) THEN
39580           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
39581      &    0.3702D+01*SB2)
39582           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
39583           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
39584           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
39585           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
39586           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
39587         ELSEIF(IPRT .EQ. -6) THEN
39588           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
39589      &    0.6943D+00*SB2)
39590           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
39591           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
39592           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
39593           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
39594           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
39595         ENDIF
39596  
39597 C...Expansion for CTEQ3M.
39598       ELSEIF(ISET .EQ. 2) THEN
39599         IF(IPRT .EQ. 2) THEN
39600           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
39601      &    0.2935D+00*SB3)
39602           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
39603           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
39604           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
39605           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
39606           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
39607         ELSEIF(IPRT .EQ. 1) THEN
39608           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
39609      &    0.4305D-01*SB3)
39610           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
39611           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
39612           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
39613           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
39614           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
39615         ELSEIF(IPRT .EQ. 0) THEN
39616           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
39617      &    0.1037D-01*SB3)
39618           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
39619           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
39620           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
39621           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
39622           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
39623         ELSEIF(IPRT .EQ. -1) THEN
39624           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
39625      &    0.1602D+01*SB3)
39626           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
39627           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
39628           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
39629           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
39630           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
39631         ELSEIF(IPRT .EQ. -2) THEN
39632           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
39633      &    0.2496D+00*SB3)
39634           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
39635           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
39636           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
39637           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
39638           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
39639         ELSEIF(IPRT .EQ. -3) THEN
39640           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
39641      &    0.1936D+01*SB3)
39642           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
39643           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
39644           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
39645           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
39646           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
39647         ELSEIF(IPRT .EQ. -4) THEN
39648           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
39649      &    0.5348D+00*SB2)
39650           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
39651           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
39652           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
39653           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
39654           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
39655         ELSEIF(IPRT .EQ. -5) THEN
39656           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
39657      &    0.1569D+01*SB2)
39658           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
39659           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
39660           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
39661           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
39662           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
39663         ELSEIF(IPRT .EQ. -6) THEN
39664           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
39665      &    0.8838D+01*SB2)
39666           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
39667           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
39668           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
39669           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
39670           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
39671         ENDIF
39672  
39673 C...Expansion for CTEQ3D.
39674       ELSEIF(ISET .EQ. 3) THEN
39675         IF(IPRT .EQ. 2) THEN
39676           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
39677      &    0.2902D+00*SB3)
39678           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
39679           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
39680           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
39681           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
39682           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
39683         ELSEIF(IPRT .EQ. 1) THEN
39684           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
39685      &    0.7257D+00*SB3)
39686           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
39687           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
39688           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
39689           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
39690           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
39691         ELSEIF(IPRT .EQ. 0) THEN
39692           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
39693      &    0.2734D-04*SB3)
39694           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
39695           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
39696           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
39697           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
39698           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
39699         ELSEIF(IPRT .EQ. -1) THEN
39700           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
39701      &    0.1671D+01*SB3)
39702           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
39703           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
39704           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
39705           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
39706           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
39707         ELSEIF(IPRT .EQ. -2) THEN
39708           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
39709      &    0.2223D+00*SB3)
39710           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
39711           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
39712           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
39713           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
39714           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
39715         ELSEIF(IPRT .EQ. -3) THEN
39716           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
39717      &    0.1937D+01*SB3)
39718           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
39719           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
39720           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
39721           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
39722           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
39723         ELSEIF(IPRT .EQ. -4) THEN
39724           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
39725      &    0.5137D+00*SB2)
39726           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
39727           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
39728           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
39729           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
39730           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
39731         ELSEIF(IPRT .EQ. -5) THEN
39732           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
39733      &    0.2143D+01*SB2)
39734           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
39735           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
39736           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
39737           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
39738           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
39739         ELSEIF(IPRT .EQ. -6) THEN
39740           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
39741      &    0.9998D+01*SB2)
39742           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
39743           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
39744           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
39745           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
39746           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
39747         ENDIF
39748       ENDIF
39749  
39750 C...Calculation of x * f(x, Q).
39751       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
39752      &   *(LOG(1D0+1D0/X))**A5 )
39753  
39754       RETURN
39755       END
39756  
39757 C*********************************************************************
39758  
39759 C...PYGRVL
39760 C...Gives the GRV 94 L (leading order) parton distribution function set
39761 C...in parametrized form.
39762 C...Authors: M. Glueck, E. Reya and A. Vogt.
39763  
39764       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39765  
39766 C...Double precision declaration.
39767       IMPLICIT DOUBLE PRECISION (A - Z)
39768  
39769 C...Common expressions.
39770       MU2  = 0.23D0
39771       LAM2 = 0.2322D0 * 0.2322D0
39772       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
39773       DS = SQRT (S)
39774       S2 = S * S
39775       S3 = S2 * S
39776  
39777 C...uv :
39778       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
39779       AKU =  0.590D0 - 0.024D0 * S
39780       BKU =  0.131D0 + 0.063D0 * S
39781       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
39782       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
39783       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
39784       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
39785       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
39786  
39787 C...dv :
39788       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
39789       AKD =  0.376D0
39790       BKD =  0.486D0 + 0.062D0 * S
39791       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
39792       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
39793       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
39794       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
39795       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
39796  
39797 C...del :
39798       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
39799       AKE =  0.409D0 - 0.005D0 * S
39800       BKE =  0.799D0 + 0.071D0 * S
39801       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
39802       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
39803       CE  =  0.0D0
39804       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
39805       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
39806  
39807 C...udb :
39808       ALX =  1.451D0
39809       BEX =  0.271D0
39810       AKX =  0.410D0 - 0.232D0 * S
39811       BKX =  0.534D0 - 0.457D0 * S
39812       AGX =  0.890D0 - 0.140D0 * S
39813       BGX = -0.981D0
39814       CX  =  0.320D0 + 0.683D0 * S
39815       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
39816       EX  =  4.119D0 + 1.713D0 * S
39817       ESX =  0.682D0 + 2.978D0 * S
39818       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
39819      & DX, EX, ESX)
39820  
39821 C...sb :
39822       STS =  0D0
39823       ALS =  0.914D0
39824       BES =  0.577D0
39825       AKS =  1.798D0 - 0.596D0 * S
39826       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
39827       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
39828       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
39829       EST =  3.981D0 + 1.638D0 * S
39830       ESS =  6.402D0
39831       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
39832  
39833 C...cb :
39834       STC =  0.888D0
39835       ALC =  1.01D0
39836       BEC =  0.37D0
39837       AKC =  0D0
39838       AC  =  0D0
39839       BC  =  4.24D0  - 0.804D0 * S
39840       DCT =  3.46D0  - 1.076D0 * S
39841       ECT =  4.61D0  + 1.49D0  * S
39842       ESC =  2.555D0 + 1.961D0 * S
39843       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
39844  
39845 C...bb :
39846       STB =  1.351D0
39847       ALB =  1.00D0
39848       BEB =  0.51D0
39849       AKB =  0D0
39850       AB  =  0D0
39851       BB  =  1.848D0
39852       DBT =  2.929D0 + 1.396D0 * S
39853       EBT =  4.71D0  + 1.514D0 * S
39854       ESB =  4.02D0  + 1.239D0 * S
39855       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
39856  
39857 C...gl :
39858       ALG =  0.524D0
39859       BEG =  1.088D0
39860       AKG =  1.742D0 - 0.930D0 * S
39861       BKG =                         - 0.399D0 * S2
39862       AG  =  7.486D0 - 2.185D0 * S
39863       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
39864       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
39865       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
39866       EG  =  0.807D0 + 2.005D0 * S
39867       ESG =  3.841D0 + 0.316D0 * S
39868       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
39869      & DG, EG, ESG)
39870  
39871       RETURN
39872       END
39873  
39874 C*********************************************************************
39875  
39876 C...PYGRVM
39877 C...Gives the GRV 94 M (MSbar) parton distribution function set
39878 C...in parametrized form.
39879 C...Authors: M. Glueck, E. Reya and A. Vogt.
39880  
39881       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39882  
39883 C...Double precision declaration.
39884       IMPLICIT DOUBLE PRECISION (A - Z)
39885  
39886 C...Common expressions.
39887       MU2  = 0.34D0
39888       LAM2 = 0.248D0 * 0.248D0
39889       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
39890       DS = SQRT (S)
39891       S2 = S * S
39892       S3 = S2 * S
39893  
39894 C...uv :
39895       NU  =  1.304D0 + 0.863D0 * S
39896       AKU =  0.558D0 - 0.020D0 * S
39897       BKU =          0.183D0 * S
39898       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
39899       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
39900       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
39901       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
39902       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
39903  
39904 C...dv :
39905       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
39906       AKD =  0.270D0 - 0.019D0 * S
39907       BKD =  0.260D0
39908       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
39909       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
39910       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
39911       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
39912       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
39913  
39914 C...del :
39915       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
39916       AKE =  0.409D0 - 0.007D0 * S
39917       BKE =  0.782D0 + 0.082D0 * S
39918       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
39919       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
39920       CE  =  0.0D0
39921       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
39922       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
39923  
39924 C...udb :
39925       ALX =  0.877D0
39926       BEX =  0.561D0
39927       AKX =  0.275D0
39928       BKX =  0.0D0
39929       AGX =  0.997D0
39930       BGX =  3.210D0 - 1.866D0 * S
39931       CX  =  7.300D0
39932       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
39933       EX  =  3.077D0 + 1.446D0 * S
39934       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
39935       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
39936      & DX, EX, ESX)
39937  
39938 C...sb :
39939       STS =  0D0
39940       ALS =  0.756D0
39941       BES =  0.216D0
39942       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
39943       AS  = -4.329D0 + 1.131D0 * S
39944       BS  =  9.568D0 - 1.744D0 * S
39945       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
39946       EST =  3.031D0 + 1.639D0 * S
39947       ESS =  5.837D0 + 0.815D0 * S
39948       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
39949  
39950 C...cb :
39951       STC =  0.820D0
39952       ALC =  0.98D0
39953       BEC =  0D0
39954       AKC = -0.625D0 - 0.523D0 * S
39955       AC  =  0D0
39956       BC  =  1.896D0 + 1.616D0 * S
39957       DCT =  4.12D0  + 0.683D0 * S
39958       ECT =  4.36D0  + 1.328D0 * S
39959       ESC =  0.677D0 + 0.679D0 * S
39960       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
39961  
39962 C...bb :
39963       STB =  1.297D0
39964       ALB =  0.99D0
39965       BEB =  0D0
39966       AKB =          - 0.193D0 * S
39967       AB  =  0D0
39968       BB  =  0D0
39969       DBT =  3.447D0 + 0.927D0 * S
39970       EBT =  4.68D0  + 1.259D0 * S
39971       ESB =  1.892D0 + 2.199D0 * S
39972       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
39973  
39974 C...gl :
39975        ALG =  1.014D0
39976        BEG =  1.738D0
39977        AKG =  1.724D0 + 0.157D0 * S
39978        BKG =  0.800D0 + 1.016D0 * S
39979        AG  =  7.517D0 - 2.547D0 * S
39980        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
39981        CG  =  4.039D0 + 1.491D0 * S
39982        DG  =  3.404D0 + 0.830D0 * S
39983        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
39984        ESG =  3.256D0 - 0.436D0 * S
39985        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
39986  
39987        RETURN
39988        END
39989  
39990 C*********************************************************************
39991  
39992 C...PYGRVD
39993 C...Gives the GRV 94 D (DIS) parton distribution function set
39994 C...in parametrized form.
39995 C...Authors: M. Glueck, E. Reya and A. Vogt.
39996  
39997       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
39998  
39999 C...Double precision declaration.
40000       IMPLICIT DOUBLE PRECISION (A - Z)
40001  
40002 C...Common expressions.
40003       MU2  = 0.34D0
40004       LAM2 = 0.248D0 * 0.248D0
40005       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
40006       DS = SQRT (S)
40007       S2 = S * S
40008       S3 = S2 * S
40009  
40010 C...uv :
40011       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
40012       AKU =  0.563D0 - 0.025D0 * S
40013       BKU =  0.054D0 + 0.154D0 * S
40014       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
40015       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
40016       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
40017       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
40018       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
40019  
40020 C...dv :
40021       ND  =  0.156D0 - 0.017D0 * S
40022       AKD =  0.299D0 - 0.022D0 * S
40023       BKD =  0.259D0 - 0.015D0 * S
40024       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
40025       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
40026       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
40027       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
40028       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
40029  
40030 C...del :
40031       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
40032       AKE =  0.419D0 - 0.013D0 * S
40033       BKE =  1.064D0 - 0.038D0 * S
40034       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
40035       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
40036       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
40037       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
40038       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
40039  
40040 C...udb :
40041       ALX =  1.215D0
40042       BEX =  0.466D0
40043       AKX =  0.326D0 + 0.150D0 * S
40044       BKX =  0.956D0 + 0.405D0 * S
40045       AGX =  0.272D0
40046       BGX =  3.794D0 - 2.359D0 * DS
40047       CX  =  2.014D0
40048       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
40049       EX  =  3.049D0 + 1.597D0 * S
40050       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
40051       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
40052      & DX, EX, ESX)
40053  
40054 C...sb :
40055       STS =  0D0
40056       ALS =  0.175D0
40057       BES =  0.344D0
40058       AKS =  1.415D0 - 0.641D0 * DS
40059       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
40060       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
40061       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
40062       EST =  4.546D0 + 0.372D0 * S2
40063       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
40064       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
40065  
40066 C...cb :
40067       STC =  0.820D0
40068       ALC =  0.98D0
40069       BEC =  0D0
40070       AKC = -0.625D0 - 0.523D0 * S
40071       AC  =  0D0
40072       BC  =  1.896D0 + 1.616D0 * S
40073       DCT =  4.12D0  + 0.683D0 * S
40074       ECT =  4.36D0  + 1.328D0 * S
40075       ESC =  0.677D0 + 0.679D0 * S
40076       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
40077  
40078 C...bb :
40079       STB =  1.297D0
40080       ALB =  0.99D0
40081       BEB =  0D0
40082       AKB =          - 0.193D0 * S
40083       AB  =  0D0
40084       BB  =  0D0
40085       DBT =  3.447D0 + 0.927D0 * S
40086       EBT =  4.68D0  + 1.259D0 * S
40087       ESB =  1.892D0 + 2.199D0 * S
40088       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
40089  
40090 C...gl :
40091       ALG =  1.258D0
40092       BEG =  1.846D0
40093       AKG =  2.423D0
40094       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
40095       AG  =  25.09D0 - 7.935D0 * S
40096       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
40097       CG  =  590.3D0 - 173.8D0 * S
40098       DG  =  5.196D0 + 1.857D0 * S
40099       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
40100       ESG =  3.232D0 - 0.542D0 * S
40101       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
40102  
40103       RETURN
40104       END
40105  
40106 C*********************************************************************
40107  
40108 C...PYGRVV
40109 C...Auxiliary for the GRV 94 parton distribution functions
40110 C...for u and d valence and d-u sea.
40111 C...Authors: M. Glueck, E. Reya and A. Vogt.
40112  
40113       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
40114  
40115 C...Double precision declaration.
40116       IMPLICIT DOUBLE PRECISION (A - Z)
40117  
40118 C...Evaluation.
40119       DX = SQRT (X)
40120       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
40121      & (1D0- X)**D
40122  
40123       RETURN
40124       END
40125  
40126 C*********************************************************************
40127  
40128 C...PYGRVW
40129 C...Auxiliary for the GRV 94 parton distribution functions
40130 C...for d+u sea and gluon.
40131 C...Authors: M. Glueck, E. Reya and A. Vogt.
40132  
40133       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
40134  
40135 C...Double precision declaration.
40136       IMPLICIT DOUBLE PRECISION (A - Z)
40137  
40138 C...Evaluation.
40139       LX = LOG (1D0/X)
40140       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
40141      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
40142  
40143       RETURN
40144       END
40145  
40146 C*********************************************************************
40147  
40148 C...PYGRVS
40149 C...Auxiliary for the GRV 94 parton distribution functions
40150 C...for s, c and b sea.
40151 C...Authors: M. Glueck, E. Reya and A. Vogt.
40152  
40153       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
40154  
40155 C...Double precision declaration.
40156       IMPLICIT DOUBLE PRECISION (A - Z)
40157  
40158 C...Evaluation.
40159       IF(S.LE.STH) THEN
40160         PYGRVS = 0D0
40161       ELSE
40162         DX = SQRT (X)
40163         LX = LOG (1D0/X)
40164         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
40165      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
40166       ENDIF
40167  
40168       RETURN
40169       END
40170  
40171 C*********************************************************************
40172  
40173 C...PYCT5L
40174 C...Auxiliary function for parametrization of CTEQ5L.
40175 C...Author: J. Pumplin 9/99.
40176  
40177 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
40178 C...in Parametrized Form
40179 C...            September 15, 1999
40180 C
40181 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
40182 C...      CTEQ5 PPARTON DISTRIBUTIONS"
40183 C...hep-ph/9903282
40184  
40185 C...The CTEQ5M1 set given here is an updated version of the original
40186 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
40187 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
40188 C...almost all applications.
40189 C...The improvement is in the QCD evolution which is now more
40190 C...accurate, and which agrees completely with the benchmark work
40191 C...of the HERA 96/97 Workshop.
40192 C...The differences between the parametrized and the corresponding
40193 C...table versions (on which it is based) are of similar order as
40194 C...between the two version.
40195  
40196 C...!! Because accurate parametrizations over a wide range of (x,Q)
40197 C...is hard to obtain, only the most widely used sets CTEQ5M and
40198 C...CTEQ5L are available in parametrized form for now.
40199  
40200 C...These parametrizations were obtained by Jon Pumplin.
40201  
40202 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
40203 C -------------------------------------------------------------------
40204 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
40205 C   3    CTEQ5L   Leading Order                  0.127     192   146
40206 C -------------------------------------------------------------------
40207 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
40208 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
40209 C...calibration.
40210  
40211 C...The two Iset value are adopted to agree with the standard table
40212 C...versions.
40213  
40214 C...Range of validity:
40215 C...The range of (x, Q) covered by this parametrization of the QCD
40216 C...evolved parton distributions is 1E-6 < x < 1 ;
40217 C...1.1 GeV < Q < 10 TeV.  Of course, the PDFs are constrained by
40218 C...data only in a subset of that region; and the assumed DGLAP
40219 C...evolution is unlikely to be valid for all of it either.
40220  
40221 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
40222 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
40223 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
40224 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
40225  
40226       FUNCTION PYCT5L(IFL,X,Q)
40227  
40228 C...Double precision declaration.
40229       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40230       IMPLICIT INTEGER(I-N)
40231  
40232       PARAMETER (NEX=8, NLF=2)
40233       DIMENSION AM(0:NEX,0:NLF,-5:2)
40234       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
40235       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
40236       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
40237       DIMENSION AF(0:NEX)
40238  
40239       DATA MEXVEC( 2) / 8 /
40240       DATA MLFVEC( 2) / 2 /
40241       DATA UT1VEC( 2) /  0.4971265E+01 /
40242       DATA UT2VEC( 2) / -0.1105128E+01 /
40243       DATA ALFVEC( 2) /  0.2987216E+00 /
40244       DATA QMAVEC( 2) /  0.0000000E+00 /
40245       DATA (AM( 0,K, 2),K=0, 2)
40246      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
40247       DATA (AM( 1,K, 2),K=0, 2)
40248      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
40249       DATA (AM( 2,K, 2),K=0, 2)
40250      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
40251       DATA (AM( 3,K, 2),K=0, 2)
40252      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
40253       DATA (AM( 4,K, 2),K=0, 2)
40254      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
40255       DATA (AM( 5,K, 2),K=0, 2)
40256      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
40257       DATA (AM( 6,K, 2),K=0, 2)
40258      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
40259       DATA (AM( 7,K, 2),K=0, 2)
40260      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
40261       DATA (AM( 8,K, 2),K=0, 2)
40262      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
40263  
40264       DATA MEXVEC( 1) / 8 /
40265       DATA MLFVEC( 1) / 2 /
40266       DATA UT1VEC( 1) /  0.2612618E+01 /
40267       DATA UT2VEC( 1) / -0.1258304E+06 /
40268       DATA ALFVEC( 1) /  0.3407552E+00 /
40269       DATA QMAVEC( 1) /  0.0000000E+00 /
40270       DATA (AM( 0,K, 1),K=0, 2)
40271      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
40272       DATA (AM( 1,K, 1),K=0, 2)
40273      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
40274       DATA (AM( 2,K, 1),K=0, 2)
40275      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
40276       DATA (AM( 3,K, 1),K=0, 2)
40277      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
40278       DATA (AM( 4,K, 1),K=0, 2)
40279      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
40280       DATA (AM( 5,K, 1),K=0, 2)
40281      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
40282       DATA (AM( 6,K, 1),K=0, 2)
40283      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
40284       DATA (AM( 7,K, 1),K=0, 2)
40285      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
40286       DATA (AM( 8,K, 1),K=0, 2)
40287      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
40288  
40289       DATA MEXVEC( 0) / 8 /
40290       DATA MLFVEC( 0) / 2 /
40291       DATA UT1VEC( 0) / -0.4656819E+00 /
40292       DATA UT2VEC( 0) / -0.2742390E+03 /
40293       DATA ALFVEC( 0) /  0.4491863E+00 /
40294       DATA QMAVEC( 0) /  0.0000000E+00 /
40295       DATA (AM( 0,K, 0),K=0, 2)
40296      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
40297       DATA (AM( 1,K, 0),K=0, 2)
40298      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
40299       DATA (AM( 2,K, 0),K=0, 2)
40300      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
40301       DATA (AM( 3,K, 0),K=0, 2)
40302      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
40303       DATA (AM( 4,K, 0),K=0, 2)
40304      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
40305       DATA (AM( 5,K, 0),K=0, 2)
40306      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
40307       DATA (AM( 6,K, 0),K=0, 2)
40308      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
40309       DATA (AM( 7,K, 0),K=0, 2)
40310      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
40311       DATA (AM( 8,K, 0),K=0, 2)
40312      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
40313  
40314       DATA MEXVEC(-1) / 8 /
40315       DATA MLFVEC(-1) / 2 /
40316       DATA UT1VEC(-1) /  0.3862583E+01 /
40317       DATA UT2VEC(-1) / -0.1265969E+01 /
40318       DATA ALFVEC(-1) /  0.2457668E+00 /
40319       DATA QMAVEC(-1) /  0.0000000E+00 /
40320       DATA (AM( 0,K,-1),K=0, 2)
40321      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
40322       DATA (AM( 1,K,-1),K=0, 2)
40323      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
40324       DATA (AM( 2,K,-1),K=0, 2)
40325      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
40326       DATA (AM( 3,K,-1),K=0, 2)
40327      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
40328       DATA (AM( 4,K,-1),K=0, 2)
40329      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
40330       DATA (AM( 5,K,-1),K=0, 2)
40331      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
40332       DATA (AM( 6,K,-1),K=0, 2)
40333      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
40334       DATA (AM( 7,K,-1),K=0, 2)
40335      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
40336       DATA (AM( 8,K,-1),K=0, 2)
40337      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
40338  
40339       DATA MEXVEC(-2) / 7 /
40340       DATA MLFVEC(-2) / 2 /
40341       DATA UT1VEC(-2) /  0.1895615E+00 /
40342       DATA UT2VEC(-2) / -0.3069097E+01 /
40343       DATA ALFVEC(-2) /  0.5293999E+00 /
40344       DATA QMAVEC(-2) /  0.0000000E+00 /
40345       DATA (AM( 0,K,-2),K=0, 2)
40346      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
40347       DATA (AM( 1,K,-2),K=0, 2)
40348      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
40349       DATA (AM( 2,K,-2),K=0, 2)
40350      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
40351       DATA (AM( 3,K,-2),K=0, 2)
40352      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
40353       DATA (AM( 4,K,-2),K=0, 2)
40354      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
40355       DATA (AM( 5,K,-2),K=0, 2)
40356      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
40357       DATA (AM( 6,K,-2),K=0, 2)
40358      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
40359       DATA (AM( 7,K,-2),K=0, 2)
40360      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
40361  
40362       DATA MEXVEC(-3) / 7 /
40363       DATA MLFVEC(-3) / 2 /
40364       DATA UT1VEC(-3) /  0.3753257E+01 /
40365       DATA UT2VEC(-3) / -0.1113085E+01 /
40366       DATA ALFVEC(-3) /  0.3713141E+00 /
40367       DATA QMAVEC(-3) /  0.0000000E+00 /
40368       DATA (AM( 0,K,-3),K=0, 2)
40369      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
40370       DATA (AM( 1,K,-3),K=0, 2)
40371      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
40372       DATA (AM( 2,K,-3),K=0, 2)
40373      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
40374       DATA (AM( 3,K,-3),K=0, 2)
40375      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
40376       DATA (AM( 4,K,-3),K=0, 2)
40377      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
40378       DATA (AM( 5,K,-3),K=0, 2)
40379      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
40380       DATA (AM( 6,K,-3),K=0, 2)
40381      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
40382       DATA (AM( 7,K,-3),K=0, 2)
40383      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
40384  
40385       DATA MEXVEC(-4) / 7 /
40386       DATA MLFVEC(-4) / 2 /
40387       DATA UT1VEC(-4) /  0.4400772E+01 /
40388       DATA UT2VEC(-4) / -0.1356116E+01 /
40389       DATA ALFVEC(-4) /  0.3712017E-01 /
40390       DATA QMAVEC(-4) /  0.1300000E+01 /
40391       DATA (AM( 0,K,-4),K=0, 2)
40392      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
40393       DATA (AM( 1,K,-4),K=0, 2)
40394      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
40395       DATA (AM( 2,K,-4),K=0, 2)
40396      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
40397       DATA (AM( 3,K,-4),K=0, 2)
40398      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
40399       DATA (AM( 4,K,-4),K=0, 2)
40400      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
40401       DATA (AM( 5,K,-4),K=0, 2)
40402      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
40403       DATA (AM( 6,K,-4),K=0, 2)
40404      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
40405       DATA (AM( 7,K,-4),K=0, 2)
40406      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
40407  
40408       DATA MEXVEC(-5) / 6 /
40409       DATA MLFVEC(-5) / 2 /
40410       DATA UT1VEC(-5) /  0.5562568E+01 /
40411       DATA UT2VEC(-5) / -0.1801317E+01 /
40412       DATA ALFVEC(-5) /  0.4952010E-02 /
40413       DATA QMAVEC(-5) /  0.4500000E+01 /
40414       DATA (AM( 0,K,-5),K=0, 2)
40415      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
40416       DATA (AM( 1,K,-5),K=0, 2)
40417      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
40418       DATA (AM( 2,K,-5),K=0, 2)
40419      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
40420       DATA (AM( 3,K,-5),K=0, 2)
40421      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
40422       DATA (AM( 4,K,-5),K=0, 2)
40423      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
40424       DATA (AM( 5,K,-5),K=0, 2)
40425      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
40426       DATA (AM( 6,K,-5),K=0, 2)
40427      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
40428  
40429       IF(Q .LE. QMAVEC(IFL)) THEN
40430          PYCT5L = 0.D0
40431          RETURN
40432       ENDIF
40433  
40434       IF(X .GE. 1.D0) THEN
40435          PYCT5L = 0.D0
40436          RETURN
40437       ENDIF
40438  
40439       TMP = LOG(Q/ALFVEC(IFL))
40440       IF(TMP .LE. 0.D0) THEN
40441          PYCT5L = 0.D0
40442          RETURN
40443       ENDIF
40444  
40445       SB = LOG(TMP)
40446       SB1 = SB - 1.2D0
40447       SB2 = SB1*SB1
40448  
40449       DO 110 I = 0, NEX
40450          AF(I) = 0.D0
40451          SBX = 1.D0
40452          DO 100 K = 0, MLFVEC(IFL)
40453             AF(I) = AF(I) + SBX*AM(I,K,IFL)
40454             SBX = SB1*SBX
40455   100    CONTINUE
40456   110 CONTINUE
40457  
40458       Y = -LOG(X)
40459       U = LOG(X/0.00001D0)
40460  
40461       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
40462       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
40463       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
40464       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
40465      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
40466  
40467       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
40468  
40469 C...Include threshold factor.
40470       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
40471  
40472       RETURN
40473       END
40474  
40475 C*********************************************************************
40476  
40477 C...PYCT5M
40478 C...Auxiliary function for parametrization of CTEQ5M1.
40479 C...Author: J. Pumplin 9/99.
40480  
40481       FUNCTION PYCT5M(IFL,X,Q)
40482  
40483 C...Double precision declaration.
40484       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40485       IMPLICIT INTEGER(I-N)
40486  
40487       PARAMETER (NEX=8, NLF=2)
40488       DIMENSION AM(0:NEX,0:NLF,-5:2)
40489       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
40490       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
40491       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
40492       DIMENSION AF(0:NEX)
40493  
40494       DATA MEXVEC( 2) / 8 /
40495       DATA MLFVEC( 2) / 2 /
40496       DATA UT1VEC( 2) /  0.5141718E+01 /
40497       DATA UT2VEC( 2) / -0.1346944E+01 /
40498       DATA ALFVEC( 2) /  0.5260555E+00 /
40499       DATA QMAVEC( 2) /  0.0000000E+00 /
40500       DATA (AM( 0,K, 2),K=0, 2)
40501      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
40502       DATA (AM( 1,K, 2),K=0, 2)
40503      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
40504       DATA (AM( 2,K, 2),K=0, 2)
40505      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
40506       DATA (AM( 3,K, 2),K=0, 2)
40507      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
40508       DATA (AM( 4,K, 2),K=0, 2)
40509      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
40510       DATA (AM( 5,K, 2),K=0, 2)
40511      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
40512       DATA (AM( 6,K, 2),K=0, 2)
40513      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
40514       DATA (AM( 7,K, 2),K=0, 2)
40515      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
40516       DATA (AM( 8,K, 2),K=0, 2)
40517      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
40518  
40519       DATA MEXVEC( 1) / 8 /
40520       DATA MLFVEC( 1) / 2 /
40521       DATA UT1VEC( 1) /  0.4138426E+01 /
40522       DATA UT2VEC( 1) / -0.3221374E+01 /
40523       DATA ALFVEC( 1) /  0.4960962E+00 /
40524       DATA QMAVEC( 1) /  0.0000000E+00 /
40525       DATA (AM( 0,K, 1),K=0, 2)
40526      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
40527       DATA (AM( 1,K, 1),K=0, 2)
40528      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
40529       DATA (AM( 2,K, 1),K=0, 2)
40530      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
40531       DATA (AM( 3,K, 1),K=0, 2)
40532      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
40533       DATA (AM( 4,K, 1),K=0, 2)
40534      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
40535       DATA (AM( 5,K, 1),K=0, 2)
40536      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
40537       DATA (AM( 6,K, 1),K=0, 2)
40538      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
40539       DATA (AM( 7,K, 1),K=0, 2)
40540      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
40541       DATA (AM( 8,K, 1),K=0, 2)
40542      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
40543  
40544       DATA MEXVEC( 0) / 8 /
40545       DATA MLFVEC( 0) / 2 /
40546       DATA UT1VEC( 0) / -0.1026789E+01 /
40547       DATA UT2VEC( 0) / -0.9051707E+01 /
40548       DATA ALFVEC( 0) /  0.9462977E+00 /
40549       DATA QMAVEC( 0) /  0.0000000E+00 /
40550       DATA (AM( 0,K, 0),K=0, 2)
40551      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
40552       DATA (AM( 1,K, 0),K=0, 2)
40553      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
40554       DATA (AM( 2,K, 0),K=0, 2)
40555      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
40556       DATA (AM( 3,K, 0),K=0, 2)
40557      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
40558       DATA (AM( 4,K, 0),K=0, 2)
40559      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
40560       DATA (AM( 5,K, 0),K=0, 2)
40561      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
40562       DATA (AM( 6,K, 0),K=0, 2)
40563      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
40564       DATA (AM( 7,K, 0),K=0, 2)
40565      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
40566       DATA (AM( 8,K, 0),K=0, 2)
40567      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
40568  
40569       DATA MEXVEC(-1) / 8 /
40570       DATA MLFVEC(-1) / 2 /
40571       DATA UT1VEC(-1) /  0.5243571E+01 /
40572       DATA UT2VEC(-1) / -0.2870513E+01 /
40573       DATA ALFVEC(-1) /  0.6701448E+00 /
40574       DATA QMAVEC(-1) /  0.0000000E+00 /
40575       DATA (AM( 0,K,-1),K=0, 2)
40576      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
40577       DATA (AM( 1,K,-1),K=0, 2)
40578      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
40579       DATA (AM( 2,K,-1),K=0, 2)
40580      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
40581       DATA (AM( 3,K,-1),K=0, 2)
40582      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
40583       DATA (AM( 4,K,-1),K=0, 2)
40584      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
40585       DATA (AM( 5,K,-1),K=0, 2)
40586      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
40587       DATA (AM( 6,K,-1),K=0, 2)
40588      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
40589       DATA (AM( 7,K,-1),K=0, 2)
40590      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
40591       DATA (AM( 8,K,-1),K=0, 2)
40592      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
40593  
40594       DATA MEXVEC(-2) / 7 /
40595       DATA MLFVEC(-2) / 2 /
40596       DATA UT1VEC(-2) /  0.4782210E+01 /
40597       DATA UT2VEC(-2) / -0.1976856E+02 /
40598       DATA ALFVEC(-2) /  0.7558374E+00 /
40599       DATA QMAVEC(-2) /  0.0000000E+00 /
40600       DATA (AM( 0,K,-2),K=0, 2)
40601      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
40602       DATA (AM( 1,K,-2),K=0, 2)
40603      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
40604       DATA (AM( 2,K,-2),K=0, 2)
40605      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
40606       DATA (AM( 3,K,-2),K=0, 2)
40607      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
40608       DATA (AM( 4,K,-2),K=0, 2)
40609      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
40610       DATA (AM( 5,K,-2),K=0, 2)
40611      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
40612       DATA (AM( 6,K,-2),K=0, 2)
40613      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
40614       DATA (AM( 7,K,-2),K=0, 2)
40615      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
40616  
40617       DATA MEXVEC(-3) / 7 /
40618       DATA MLFVEC(-3) / 2 /
40619       DATA UT1VEC(-3) /  0.4518239E+01 /
40620       DATA UT2VEC(-3) / -0.2690590E+01 /
40621       DATA ALFVEC(-3) /  0.6124079E+00 /
40622       DATA QMAVEC(-3) /  0.0000000E+00 /
40623       DATA (AM( 0,K,-3),K=0, 2)
40624      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
40625       DATA (AM( 1,K,-3),K=0, 2)
40626      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
40627       DATA (AM( 2,K,-3),K=0, 2)
40628      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
40629       DATA (AM( 3,K,-3),K=0, 2)
40630      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
40631       DATA (AM( 4,K,-3),K=0, 2)
40632      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
40633       DATA (AM( 5,K,-3),K=0, 2)
40634      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
40635       DATA (AM( 6,K,-3),K=0, 2)
40636      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
40637       DATA (AM( 7,K,-3),K=0, 2)
40638      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
40639  
40640       DATA MEXVEC(-4) / 7 /
40641       DATA MLFVEC(-4) / 2 /
40642       DATA UT1VEC(-4) /  0.2783230E+01 /
40643       DATA UT2VEC(-4) / -0.1746328E+01 /
40644       DATA ALFVEC(-4) /  0.1115653E+01 /
40645       DATA QMAVEC(-4) /  0.1300000E+01 /
40646       DATA (AM( 0,K,-4),K=0, 2)
40647      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
40648       DATA (AM( 1,K,-4),K=0, 2)
40649      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
40650       DATA (AM( 2,K,-4),K=0, 2)
40651      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
40652       DATA (AM( 3,K,-4),K=0, 2)
40653      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
40654       DATA (AM( 4,K,-4),K=0, 2)
40655      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
40656       DATA (AM( 5,K,-4),K=0, 2)
40657      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
40658       DATA (AM( 6,K,-4),K=0, 2)
40659      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
40660       DATA (AM( 7,K,-4),K=0, 2)
40661      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
40662  
40663       DATA MEXVEC(-5) / 6 /
40664       DATA MLFVEC(-5) / 2 /
40665       DATA UT1VEC(-5) /  0.1619654E+02 /
40666       DATA UT2VEC(-5) / -0.3367346E+01 /
40667       DATA ALFVEC(-5) /  0.5109891E-02 /
40668       DATA QMAVEC(-5) /  0.4500000E+01 /
40669       DATA (AM( 0,K,-5),K=0, 2)
40670      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
40671       DATA (AM( 1,K,-5),K=0, 2)
40672      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
40673       DATA (AM( 2,K,-5),K=0, 2)
40674      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
40675       DATA (AM( 3,K,-5),K=0, 2)
40676      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
40677       DATA (AM( 4,K,-5),K=0, 2)
40678      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
40679       DATA (AM( 5,K,-5),K=0, 2)
40680      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
40681       DATA (AM( 6,K,-5),K=0, 2)
40682      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
40683  
40684       IF(Q .LE. QMAVEC(IFL)) THEN
40685          PYCT5M = 0.D0
40686          RETURN
40687       ENDIF
40688  
40689       IF(X .GE. 1.D0) THEN
40690          PYCT5M = 0.D0
40691          RETURN
40692       ENDIF
40693  
40694       TMP = LOG(Q/ALFVEC(IFL))
40695       IF(TMP .LE. 0.D0) THEN
40696          PYCT5M = 0.D0
40697          RETURN
40698       ENDIF
40699  
40700       SB = LOG(TMP)
40701       SB1 = SB - 1.2D0
40702       SB2 = SB1*SB1
40703  
40704       DO 110 I = 0, NEX
40705          AF(I) = 0.D0
40706          SBX = 1.D0
40707          DO 100 K = 0, MLFVEC(IFL)
40708             AF(I) = AF(I) + SBX*AM(I,K,IFL)
40709             SBX = SB1*SBX
40710   100    CONTINUE
40711   110 CONTINUE
40712  
40713       Y = -LOG(X)
40714       U = LOG(X/0.00001D0)
40715  
40716       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
40717       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
40718       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
40719       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
40720      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
40721  
40722       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
40723  
40724 C...Include threshold factor.
40725       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
40726  
40727       RETURN
40728       END
40729  
40730 C*********************************************************************
40731  
40732 C...PYPDPO
40733 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
40734 C...a few older parametrizations, now obsolete but convenient for
40735 C...backwards checks.
40736  
40737       SUBROUTINE PYPDPO(X,Q2,XPPR)
40738  
40739 C...Double precision and integer declarations.
40740       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40741       IMPLICIT INTEGER(I-N)
40742       INTEGER PYK,PYCHGE,PYCOMP
40743 C...Commonblocks.
40744       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
40745       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
40746       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40747       COMMON/PYINT1/MINT(400),VINT(400)
40748       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
40749       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
40750      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
40751  
40752  
40753 C...The following data lines are coefficients needed in the
40754 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
40755 C...parametrizations, see below.
40756 C...Powers of 1-x in different cases.
40757       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
40758 C...Expansion coefficients for up valence quark distribution.
40759       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
40760      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
40761      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
40762      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
40763      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
40764      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
40765      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
40766      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
40767      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
40768      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
40769      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
40770      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
40771      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
40772       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
40773      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
40774      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
40775      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
40776      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
40777      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
40778      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
40779      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
40780      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
40781      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
40782      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
40783      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
40784      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
40785 C...Expansion coefficients for down valence quark distribution.
40786       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
40787      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
40788      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
40789      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
40790      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
40791      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
40792      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
40793      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
40794      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
40795      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
40796      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
40797      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
40798      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
40799       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
40800      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
40801      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
40802      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
40803      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
40804      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
40805      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
40806      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
40807      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
40808      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
40809      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
40810      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
40811      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
40812 C...Expansion coefficients for up and down sea quark distributions.
40813       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
40814      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
40815      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
40816      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
40817      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
40818      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
40819      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
40820      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
40821      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
40822      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
40823      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
40824      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
40825      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
40826       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
40827      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
40828      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
40829      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
40830      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
40831      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
40832      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
40833      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
40834      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
40835      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
40836      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
40837      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
40838      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
40839 C...Expansion coefficients for gluon distribution.
40840       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
40841      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
40842      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
40843      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
40844      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
40845      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
40846      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
40847      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
40848      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
40849      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
40850      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
40851      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
40852      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
40853       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
40854      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
40855      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
40856      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
40857      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
40858      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
40859      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
40860      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
40861      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
40862      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
40863      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
40864      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
40865      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
40866 C...Expansion coefficients for strange sea quark distribution.
40867       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
40868      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
40869      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
40870      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
40871      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
40872      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
40873      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
40874      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
40875      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
40876      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
40877      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
40878      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
40879      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
40880       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
40881      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
40882      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
40883      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
40884      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
40885      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
40886      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
40887      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
40888      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
40889      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
40890      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
40891      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
40892      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
40893 C...Expansion coefficients for charm sea quark distribution.
40894       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
40895      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
40896      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
40897      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
40898      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
40899      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
40900      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
40901      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
40902      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
40903      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
40904      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
40905      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
40906      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
40907       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
40908      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
40909      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
40910      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
40911      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
40912      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
40913      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
40914      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
40915      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
40916      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
40917      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
40918      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
40919      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
40920 C...Expansion coefficients for bottom sea quark distribution.
40921       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
40922      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
40923      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
40924      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
40925      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
40926      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
40927      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
40928      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
40929      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
40930      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
40931      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
40932      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
40933      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
40934       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
40935      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
40936      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
40937      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
40938      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
40939      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
40940      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
40941      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
40942      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
40943      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
40944      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
40945      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
40946      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
40947 C...Expansion coefficients for top sea quark distribution.
40948       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
40949      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
40950      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
40951      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
40952      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
40953      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
40954      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
40955      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
40956      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
40957      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
40958      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
40959      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
40960      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
40961       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
40962      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
40963      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
40964      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
40965      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
40966      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
40967      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
40968      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
40969      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
40970      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
40971      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
40972      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
40973      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
40974  
40975 C...The following data lines are coefficients needed in the
40976 C...Duke, Owens proton structure function parametrizations, see below.
40977 C...Expansion coefficients for (up+down) valence quark distribution.
40978       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
40979      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40980      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40981      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
40982       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
40983      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40984      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40985      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
40986 C...Expansion coefficients for down valence quark distribution.
40987       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
40988      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40989      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
40990      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
40991       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
40992      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40993      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
40994      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
40995 C...Expansion coefficients for (up+down+strange) sea quark distribution.
40996       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
40997      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
40998      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
40999      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
41000       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
41001      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41002      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
41003      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
41004 C...Expansion coefficients for charm sea quark distribution.
41005       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
41006      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41007      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
41008      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
41009        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
41010      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41011      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
41012      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
41013 C...Expansion coefficients for gluon distribution.
41014       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
41015      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
41016      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
41017      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
41018       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
41019      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
41020      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
41021      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
41022  
41023 C...Euler's beta function, requires ordinary Gamma function
41024       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
41025  
41026 C...Leading order proton parton distributions from Glueck, Reya and
41027 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
41028 C...10^-5 < x < 1.
41029       IF(MSTP(51).EQ.11) THEN
41030  
41031 C...Determine s expansion variable and some x expressions.
41032         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
41033         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
41034         SD2=SD**2
41035         XL=-LOG(X)
41036         XS=SQRT(X)
41037  
41038 C...Evaluate valence, gluon and sea distributions.
41039         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
41040      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
41041      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
41042      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
41043         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
41044      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
41045      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
41046         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
41047      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
41048      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
41049      &  SQRT(4.066D0*SD**1.218D0*XL)))*
41050      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
41051         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
41052      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
41053      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
41054      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
41055         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
41056      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
41057      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
41058      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
41059         IF(SD.LE.0.888D0) THEN
41060           XFCHM=0D0
41061         ELSE
41062           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
41063      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
41064      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
41065         ENDIF
41066         IF(SD.LE.1.351D0) THEN
41067           XFBOT=0D0
41068         ELSE
41069           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
41070      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
41071      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
41072         ENDIF
41073  
41074 C...Put into output array.
41075         XPPR(0)=XFGLU
41076         XPPR(1)=XFVDD+XFSEA
41077         XPPR(2)=XFVUD-XFVDD+XFSEA
41078         XPPR(3)=XFSTR
41079         XPPR(4)=XFCHM
41080         XPPR(5)=XFBOT
41081         XPPR(-1)=XFSEA
41082         XPPR(-2)=XFSEA
41083         XPPR(-3)=XFSTR
41084         XPPR(-4)=XFCHM
41085         XPPR(-5)=XFBOT
41086  
41087 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
41088 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
41089       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
41090  
41091 C...Determine set, Lambda and x and t expansion variables.
41092         NSET=MSTP(51)-11
41093         IF(NSET.EQ.1) ALAM=0.2D0
41094         IF(NSET.EQ.2) ALAM=0.29D0
41095         TMIN=LOG(5D0/ALAM**2)
41096         TMAX=LOG(1D8/ALAM**2)
41097         T=LOG(MAX(1D0,Q2/ALAM**2))
41098         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41099         NX=1
41100         IF(X.LE.0.1D0) NX=2
41101         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
41102         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
41103  
41104 C...Chebyshev polynomials for x and t expansion.
41105         TX(1)=1D0
41106         TX(2)=VX
41107         TX(3)=2D0*VX**2-1D0
41108         TX(4)=4D0*VX**3-3D0*VX
41109         TX(5)=8D0*VX**4-8D0*VX**2+1D0
41110         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
41111         TT(1)=1D0
41112         TT(2)=VT
41113         TT(3)=2D0*VT**2-1D0
41114         TT(4)=4D0*VT**3-3D0*VT
41115         TT(5)=8D0*VT**4-8D0*VT**2+1D0
41116         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41117  
41118 C...Calculate structure functions.
41119         DO 120 KFL=1,6
41120           XQSUM=0D0
41121           DO 110 IT=1,6
41122             DO 100 IX=1,6
41123               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
41124   100       CONTINUE
41125   110     CONTINUE
41126           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
41127   120   CONTINUE
41128  
41129 C...Put into output array.
41130         XPPR(0)=XQ(4)
41131         XPPR(1)=XQ(2)+XQ(3)
41132         XPPR(2)=XQ(1)+XQ(3)
41133         XPPR(3)=XQ(5)
41134         XPPR(4)=XQ(6)
41135         XPPR(-1)=XQ(3)
41136         XPPR(-2)=XQ(3)
41137         XPPR(-3)=XQ(5)
41138         XPPR(-4)=XQ(6)
41139  
41140 C...Special expansion for bottom (threshold effects).
41141         IF(MSTP(58).GE.5) THEN
41142           IF(NSET.EQ.1) TMIN=8.1905D0
41143           IF(NSET.EQ.2) TMIN=7.4474D0
41144           IF(T.GT.TMIN) THEN
41145             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41146             TT(1)=1D0
41147             TT(2)=VT
41148             TT(3)=2D0*VT**2-1D0
41149             TT(4)=4D0*VT**3-3D0*VT
41150             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41151             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41152             XQSUM=0D0
41153             DO 140 IT=1,6
41154               DO 130 IX=1,6
41155                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
41156   130         CONTINUE
41157   140       CONTINUE
41158             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
41159             XPPR(-5)=XPPR(5)
41160           ENDIF
41161         ENDIF
41162  
41163 C...Special expansion for top (threshold effects).
41164         IF(MSTP(58).GE.6) THEN
41165           IF(NSET.EQ.1) TMIN=11.5528D0
41166           IF(NSET.EQ.2) TMIN=10.8097D0
41167           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
41168           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
41169           IF(T.GT.TMIN) THEN
41170             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41171             TT(1)=1D0
41172             TT(2)=VT
41173             TT(3)=2D0*VT**2-1D0
41174             TT(4)=4D0*VT**3-3D0*VT
41175             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41176             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41177             XQSUM=0D0
41178             DO 160 IT=1,6
41179               DO 150 IX=1,6
41180                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
41181   150         CONTINUE
41182   160       CONTINUE
41183             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
41184             XPPR(-6)=XPPR(6)
41185           ENDIF
41186         ENDIF
41187  
41188 C...Proton parton distributions from Duke, Owens.
41189 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
41190       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
41191  
41192 C...Determine set, Lambda and s expansion parameter.
41193         NSET=MSTP(51)-13
41194         IF(NSET.EQ.1) ALAM=0.2D0
41195         IF(NSET.EQ.2) ALAM=0.4D0
41196         Q2IN=MIN(1D6,MAX(4D0,Q2))
41197         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
41198  
41199 C...Calculate structure functions.
41200         DO 180 KFL=1,5
41201           DO 170 IS=1,6
41202             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
41203      &      CDO(3,IS,KFL,NSET)*SD**2
41204   170     CONTINUE
41205           IF(KFL.LE.2) THEN
41206             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
41207      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
41208           ELSE
41209             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
41210      &      TS(5)*X**2+TS(6)*X**3)
41211           ENDIF
41212   180   CONTINUE
41213  
41214 C...Put into output arrays.
41215         XPPR(0)=XQ(5)
41216         XPPR(1)=XQ(2)+XQ(3)/6D0
41217         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
41218         XPPR(3)=XQ(3)/6D0
41219         XPPR(4)=XQ(4)
41220         XPPR(-1)=XQ(3)/6D0
41221         XPPR(-2)=XQ(3)/6D0
41222         XPPR(-3)=XQ(3)/6D0
41223         XPPR(-4)=XQ(4)
41224  
41225       ENDIF
41226  
41227       RETURN
41228       END
41229  
41230 C*********************************************************************
41231  
41232 C...PYHFTH
41233 C...Gives threshold attractive/repulsive factor for heavy flavour
41234 C...production.
41235  
41236       FUNCTION PYHFTH(SH,SQM,FRATT)
41237  
41238 C...Double precision and integer declarations.
41239       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41240       IMPLICIT INTEGER(I-N)
41241       INTEGER PYK,PYCHGE,PYCOMP
41242 C...Commonblocks.
41243       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41244       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41245       COMMON/PYINT1/MINT(400),VINT(400)
41246       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
41247  
41248 C...Value for alpha_strong.
41249       IF(MSTP(35).LE.1) THEN
41250         ALSSG=PARP(35)
41251       ELSE
41252         MST115=MSTU(115)
41253         MSTU(115)=MSTP(36)
41254         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
41255      &  PARP(36)**2)))
41256         ALSSG=PYALPS(Q2BN)
41257         MSTU(115)=MST115
41258       ENDIF
41259  
41260 C...Evaluate attractive and repulsive factors.
41261       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
41262       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
41263       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
41264       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
41265       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
41266       VINT(138)=PYHFTH
41267  
41268       RETURN
41269       END
41270  
41271 C*********************************************************************
41272  
41273 C...PYSPLI
41274 C...Splits a hadron remnant into two (partons or hadron + parton)
41275 C...in case it is more complicated than just a quark or a diquark.
41276  
41277       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
41278  
41279 C...Double precision and integer declarations.
41280       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41281       IMPLICIT INTEGER(I-N)
41282       INTEGER PYK,PYCHGE,PYCOMP
41283 C...Commonblocks. PYDAT1 temporary
41284       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41285       COMMON/PYINT1/MINT(400),VINT(400)
41286       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41287       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
41288 C...Local array.
41289       DIMENSION KFL(3)
41290  
41291 C...Preliminaries. Parton composition.
41292       KFA=IABS(KF)
41293       KFS=ISIGN(1,KF)
41294       KFL(1)=MOD(KFA/1000,10)
41295       KFL(2)=MOD(KFA/100,10)
41296       KFL(3)=MOD(KFA/10,10)
41297       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
41298         KFL(2)=INT(1.5D0+PYR(0))
41299         IF(MINT(105).EQ.333) KFL(2)=3
41300         IF(MINT(105).EQ.443) KFL(2)=4
41301         KFL(3)=KFL(2)
41302       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
41303         KFL(2)=2
41304         KFL(3)=2
41305       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
41306         KFL(2)=1
41307         KFL(3)=1
41308       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
41309         KFL(2)=MOD(KFA/10,10)
41310         KFL(3)=MOD(KFA/100,10)
41311       ENDIF
41312       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
41313         KFLR=KFLIN*KFS
41314       ELSE
41315         KFLR=KFLIN
41316       ENDIF
41317       KFLCH=0
41318  
41319 C...Subdivide lepton.
41320       IF(KFA.GE.11.AND.KFA.LE.18) THEN
41321         IF(KFLR.EQ.KFA) THEN
41322           KFLSP=KFS*22
41323         ELSEIF(KFLR.EQ.22) THEN
41324           KFLSP=KFA
41325         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
41326           KFLSP=KFA+1
41327         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
41328           KFLSP=KFA-1
41329         ELSEIF(KFLR.EQ.21) THEN
41330           KFLSP=KFA
41331           KFLCH=KFS*21
41332         ELSE
41333           KFLSP=KFA
41334           KFLCH=-KFLR
41335         ENDIF
41336  
41337 C...Subdivide photon.
41338       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
41339         IF(KFLR.NE.21) THEN
41340           KFLSP=-KFLR
41341         ELSE
41342           RAGR=0.75D0*PYR(0)
41343           KFLSP=1
41344           IF(RAGR.GT.0.125D0) KFLSP=2
41345           IF(RAGR.GT.0.625D0) KFLSP=3
41346           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
41347           KFLCH=-KFLSP
41348         ENDIF
41349  
41350 C...Subdivide Reggeon or Pomeron.
41351       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
41352         IF(KFLIN.EQ.21) THEN
41353           KFLSP=KFS*21
41354         ELSE
41355           KFLSP=-KFLIN
41356         ENDIF
41357  
41358 C...Subdivide meson.
41359       ELSEIF(KFL(1).EQ.0) THEN
41360         KFL(2)=KFL(2)*(-1)**KFL(2)
41361         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
41362         IF(KFLR.EQ.KFL(2)) THEN
41363           KFLSP=KFL(3)
41364         ELSEIF(KFLR.EQ.KFL(3)) THEN
41365           KFLSP=KFL(2)
41366         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
41367           KFLSP=KFL(2)
41368           KFLCH=KFL(3)
41369         ELSEIF(KFLR.EQ.21) THEN
41370           KFLSP=KFL(3)
41371           KFLCH=KFL(2)
41372         ELSEIF(KFLR*KFL(2).GT.0) THEN
41373           NTRY=0
41374   100     NTRY=NTRY+1
41375           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
41376           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41377             GOTO 100
41378           ELSEIF(KFLCH.EQ.0) THEN
41379             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41380             MINT(51)=1
41381             RETURN
41382           ENDIF
41383           KFLSP=KFL(3)
41384         ELSE
41385           NTRY=0
41386   110     NTRY=NTRY+1
41387           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
41388           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41389             GOTO 110
41390           ELSEIF(KFLCH.EQ.0) THEN
41391             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41392             MINT(51)=1
41393             RETURN
41394           ENDIF
41395           KFLSP=KFL(2)
41396         ENDIF
41397
41398 C...Special case for extracting photon from baryon without splitting
41399 C...the latter. (Currently only used by external programs.)
41400       ELSEIF(KFLIN.EQ.22.AND.MSTP(98).EQ.1) then
41401         KFLSP=KFA
41402         KFLCH=0
41403  
41404 C...Subdivide baryon.
41405       ELSE
41406         NAGR=0
41407         DO 120 J=1,3
41408           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
41409   120   CONTINUE
41410         IF(NAGR.GE.1) THEN
41411           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
41412           IAGR=0
41413           DO 130 J=1,3
41414             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
41415             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
41416   130     CONTINUE
41417         ELSE
41418           IAGR=1.00001D0+2.99998D0*PYR(0)
41419         ENDIF
41420         ID1=1
41421         IF(IAGR.EQ.1) ID1=2
41422         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
41423         ID2=6-IAGR-ID1
41424         KSP=3
41425         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
41426           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
41427         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
41428           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
41429         ELSEIF(MOD(KFA,10).EQ.2) THEN
41430           IF(IAGR.EQ.1) KSP=1
41431           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
41432         ENDIF
41433         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
41434         IF(KFLR.EQ.21) THEN
41435           KFLCH=KFL(IAGR)
41436         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
41437           NTRY=0
41438   140     NTRY=NTRY+1
41439           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
41440           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41441             GOTO 140
41442           ELSEIF(KFLCH.EQ.0) THEN
41443             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41444             MINT(51)=1
41445             RETURN
41446           ENDIF
41447         ELSEIF(NAGR.EQ.0) THEN
41448           NTRY=0
41449   150     NTRY=NTRY+1
41450           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
41451           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
41452             GOTO 150
41453           ELSEIF(KFLCH.EQ.0) THEN
41454             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
41455             MINT(51)=1
41456             RETURN
41457           ENDIF
41458           KFLSP=KFL(IAGR)
41459         ENDIF
41460       ENDIF
41461  
41462 C...Add on correct sign for result.
41463       KFLCH=KFLCH*KFS
41464       KFLSP=KFLSP*KFS
41465  
41466       RETURN
41467       END
41468  
41469 C*********************************************************************
41470  
41471 C...PYGAMM
41472 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
41473 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
41474 C...(Dover, 1965) 6.1.36.
41475  
41476       FUNCTION PYGAMM(X)
41477  
41478 C...Double precision and integer declarations.
41479       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41480       IMPLICIT INTEGER(I-N)
41481       INTEGER PYK,PYCHGE,PYCOMP
41482 C...Local array and data.
41483       DIMENSION B(8)
41484       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
41485      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
41486  
41487       NX=INT(X)
41488       DX=X-NX
41489  
41490       PYGAMM=1D0
41491       DXP=1D0
41492       DO 100 I=1,8
41493         DXP=DXP*DX
41494         PYGAMM=PYGAMM+B(I)*DXP
41495   100 CONTINUE
41496       IF(X.LT.1D0) THEN
41497         PYGAMM=PYGAMM/X
41498       ELSE
41499         DO 110 IX=1,NX-1
41500           PYGAMM=(X-IX)*PYGAMM
41501   110   CONTINUE
41502       ENDIF
41503  
41504       RETURN
41505       END
41506  
41507 C***********************************************************************
41508  
41509 C...PYWAUX
41510 C...Calculates real and imaginary parts of the auxiliary functions W1
41511 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
41512 C...der Bij, Nucl. Phys. B297 (1988) 221.
41513  
41514       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
41515  
41516 C...Double precision and integer declarations.
41517       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41518       IMPLICIT INTEGER(I-N)
41519       INTEGER PYK,PYCHGE,PYCOMP
41520 C...Commonblocks.
41521       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41522       SAVE /PYDAT1/
41523  
41524       ASINH(X)=LOG(X+SQRT(X**2+1D0))
41525       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
41526  
41527       IF(EPS.LT.0D0) THEN
41528         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
41529         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
41530         WIM=0D0
41531       ELSEIF(EPS.LT.1D0) THEN
41532         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
41533         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
41534         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
41535         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
41536       ELSE
41537         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
41538         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
41539         WIM=0D0
41540       ENDIF
41541  
41542       RETURN
41543       END
41544  
41545 C***********************************************************************
41546  
41547 C...PYI3AU
41548 C...Calculates real and imaginary parts of the auxiliary function I3;
41549 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
41550 C...Nucl. Phys. B297 (1988) 221.
41551  
41552       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
41553  
41554 C...Double precision and integer declarations.
41555       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41556       IMPLICIT INTEGER(I-N)
41557       INTEGER PYK,PYCHGE,PYCOMP
41558 C...Commonblocks.
41559       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41560       SAVE /PYDAT1/
41561  
41562       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
41563       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
41564  
41565       IF(EPS.LT.0D0) THEN
41566         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41567           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
41568      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
41569      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
41570      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
41571      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
41572      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
41573      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
41574      &    EPS))
41575         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
41576           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
41577      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
41578      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
41579      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
41580      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
41581      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
41582      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
41583         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41584           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
41585      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
41586      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
41587      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
41588      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
41589      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
41590      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
41591         ELSE
41592           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
41593      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
41594      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
41595      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
41596      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
41597         ENDIF
41598         F3IM=0D0
41599       ELSEIF(EPS.LT.1D0) THEN
41600         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41601           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
41602      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
41603      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
41604      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
41605      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
41606      &    (0.25D0*(RAT+1D0)*EPS))
41607           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
41608      &    (0.25D0*(RAT+1D0)*EPS))
41609         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
41610           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
41611      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
41612      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
41613      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
41614      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
41615      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
41616           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
41617         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
41618           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
41619      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
41620      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
41621      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
41622      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
41623      &    (1D0+0.25D0*RAT*EPS-GA))
41624           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
41625      &    (1D0+0.25D0*RAT*EPS-GA))
41626         ELSE
41627           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
41628      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
41629      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
41630      &    LOG((GA+BE-1D0)/(BE-GA))
41631           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
41632         ENDIF
41633       ELSE
41634         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
41635         RCTHE=RSQ*(1D0-2D0*BE/EPS)
41636         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
41637         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
41638         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
41639         R=SQRT(RSQ)
41640         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
41641         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
41642         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
41643      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
41644      &  (PHI-THE)*(PHI+THE-PARU(1))
41645         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
41646      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
41647       ENDIF
41648  
41649       Y3RE=2D0/(2D0*BE-1D0)*F3RE
41650       Y3IM=2D0/(2D0*BE-1D0)*F3IM
41651  
41652       RETURN
41653       END
41654  
41655 C***********************************************************************
41656  
41657 C...PYSPEN
41658 C...Calculates real and imaginary part of Spence function; see
41659 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
41660  
41661       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
41662  
41663 C...Double precision and integer declarations.
41664       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41665       IMPLICIT INTEGER(I-N)
41666       INTEGER PYK,PYCHGE,PYCOMP
41667 C...Commonblocks.
41668       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41669       SAVE /PYDAT1/
41670 C...Local array and data.
41671       DIMENSION B(0:14)
41672       DATA B/
41673      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
41674      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
41675      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
41676      &0.000000D+00,         7.575757D-02,         0.000000D+00,
41677      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
41678  
41679       XRE=XREIN
41680       XIM=XIMIN
41681       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
41682         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
41683         IF(IREIM.EQ.2) PYSPEN=0D0
41684         RETURN
41685       ENDIF
41686  
41687       XMOD=SQRT(XRE**2+XIM**2)
41688       IF(XMOD.LT.1D-6) THEN
41689         IF(IREIM.EQ.1) PYSPEN=0D0
41690         IF(IREIM.EQ.2) PYSPEN=0D0
41691         RETURN
41692       ENDIF
41693  
41694       XARG=SIGN(ACOS(XRE/XMOD),XIM)
41695       SP0RE=0D0
41696       SP0IM=0D0
41697       SGN=1D0
41698       IF(XMOD.GT.1D0) THEN
41699         ALGXRE=LOG(XMOD)
41700         ALGXIM=XARG-SIGN(PARU(1),XARG)
41701         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
41702         SP0IM=-ALGXRE*ALGXIM
41703         SGN=-1D0
41704         XMOD=1D0/XMOD
41705         XARG=-XARG
41706         XRE=XMOD*COS(XARG)
41707         XIM=XMOD*SIN(XARG)
41708       ENDIF
41709       IF(XRE.GT.0.5D0) THEN
41710         ALGXRE=LOG(XMOD)
41711         ALGXIM=XARG
41712         XRE=1D0-XRE
41713         XIM=-XIM
41714         XMOD=SQRT(XRE**2+XIM**2)
41715         XARG=SIGN(ACOS(XRE/XMOD),XIM)
41716         ALGYRE=LOG(XMOD)
41717         ALGYIM=XARG
41718         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
41719         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
41720         SGN=-SGN
41721       ENDIF
41722  
41723       XRE=1D0-XRE
41724       XIM=-XIM
41725       XMOD=SQRT(XRE**2+XIM**2)
41726       XARG=SIGN(ACOS(XRE/XMOD),XIM)
41727       ZRE=-LOG(XMOD)
41728       ZIM=-XARG
41729  
41730       SPRE=0D0
41731       SPIM=0D0
41732       SAVERE=1D0
41733       SAVEIM=0D0
41734       DO 100 I=0,14
41735         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
41736         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
41737         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
41738         SAVERE=TERMRE
41739         SAVEIM=TERMIM
41740         SPRE=SPRE+B(I)*TERMRE
41741         SPIM=SPIM+B(I)*TERMIM
41742   100 CONTINUE
41743  
41744   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
41745       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
41746  
41747       RETURN
41748       END
41749  
41750 C***********************************************************************
41751  
41752 C...PYQQBH
41753 C...Calculates the matrix element for the processes
41754 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
41755 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
41756 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
41757  
41758       SUBROUTINE PYQQBH(WTQQBH)
41759  
41760 C...Double precision and integer declarations.
41761       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41762       IMPLICIT INTEGER(I-N)
41763       INTEGER PYK,PYCHGE,PYCOMP
41764 C...Commonblocks.
41765       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41766       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41767       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41768       COMMON/PYINT1/MINT(400),VINT(400)
41769       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
41770       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
41771 C...Local arrays and function.
41772       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
41773       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
41774      &PP(I,3)*PP(J,3)
41775  
41776 C...Mass parameters.
41777       WTQQBH=0D0
41778       ISUB=MINT(1)
41779       SHPR=SQRT(VINT(26))*VINT(1)
41780       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
41781       PH=SQRT(VINT(21))*VINT(1)
41782       SPQ=PQ**2
41783       SPH=PH**2
41784  
41785 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
41786       DO 100 I=1,2
41787         PT=SQRT(MAX(0D0,VINT(197+5*I)))
41788         PP(I,1)=PT*COS(VINT(198+5*I))
41789         PP(I,2)=PT*SIN(VINT(198+5*I))
41790   100 CONTINUE
41791       PP(3,1)=-PP(1,1)-PP(2,1)
41792       PP(3,2)=-PP(1,2)-PP(2,2)
41793       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
41794       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
41795       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
41796       PMT3=SQRT(PMS3)
41797       PP(3,3)=PMT3*SINH(VINT(211))
41798       PP(3,4)=PMT3*COSH(VINT(211))
41799       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
41800       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
41801      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
41802       PP(2,3)=-PP(1,3)-PP(3,3)
41803       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
41804       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
41805  
41806 C...Set up incoming kinematics and derived momentum combinations.
41807       DO 110 I=4,5
41808         PP(I,1)=0D0
41809         PP(I,2)=0D0
41810         PP(I,3)=-0.5D0*SHPR*(-1)**I
41811         PP(I,4)=-0.5D0*SHPR
41812   110 CONTINUE
41813       DO 120 J=1,4
41814         PP(6,J)=PP(1,J)+PP(2,J)
41815         PP(7,J)=PP(1,J)+PP(3,J)
41816         PP(8,J)=PP(1,J)+PP(4,J)
41817         PP(9,J)=PP(1,J)+PP(5,J)
41818         PP(10,J)=-PP(2,J)-PP(3,J)
41819         PP(11,J)=-PP(2,J)-PP(4,J)
41820         PP(12,J)=-PP(2,J)-PP(5,J)
41821         PP(13,J)=-PP(4,J)-PP(5,J)
41822   120 CONTINUE
41823  
41824 C...Derived kinematics invariants.
41825       X1=DOT(1,2)
41826       X2=DOT(1,3)
41827       X3=DOT(1,4)
41828       X4=DOT(1,5)
41829       X5=DOT(2,3)
41830       X6=DOT(2,4)
41831       X7=DOT(2,5)
41832       X8=DOT(3,4)
41833       X9=DOT(3,5)
41834       X10=DOT(4,5)
41835  
41836 C...Propagators.
41837       SS1=DOT(7,7)-SPQ
41838       SS2=DOT(8,8)-SPQ
41839       SS3=DOT(9,9)-SPQ
41840       SS4=DOT(10,10)-SPQ
41841       SS5=DOT(11,11)-SPQ
41842       SS6=DOT(12,12)-SPQ
41843       SS7=DOT(13,13)
41844       DX(1)=SS1*SS6
41845       DX(2)=SS2*SS6
41846       DX(3)=SS2*SS4
41847       DX(4)=SS1*SS5
41848       DX(5)=SS3*SS5
41849       DX(6)=SS3*SS4
41850       DX(7)=SS7*SS1
41851       DX(8)=SS7*SS4
41852  
41853 C...Define colour coefficients for g + g -> Q + Qbar + H.
41854       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
41855         DO 140 I=1,3
41856           DO 130 J=1,3
41857             CLR(I,J)=16D0/3D0
41858             CLR(I+3,J+3)=16D0/3D0
41859             CLR(I,J+3)=-2D0/3D0
41860             CLR(I+3,J)=-2D0/3D0
41861   130     CONTINUE
41862   140   CONTINUE
41863         DO 160 L=1,2
41864           DO 150 I=1,3
41865             CLR(I,6+L)=-6D0
41866             CLR(I+3,6+L)=6D0
41867             CLR(6+L,I)=-6D0
41868             CLR(6+L,I+3)=6D0
41869   150     CONTINUE
41870   160   CONTINUE
41871         DO 180 K1=1,2
41872           DO 170 K2=1,2
41873             CLR(6+K1,6+K2)=12D0
41874   170     CONTINUE
41875   180   CONTINUE
41876  
41877 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
41878         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
41879      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
41880      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
41881         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
41882      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
41883      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
41884      &  X10)
41885         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
41886      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
41887      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
41888      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
41889      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
41890      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
41891         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
41892      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
41893      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
41894      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
41895      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
41896         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
41897      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
41898      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
41899      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
41900      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
41901      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
41902      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
41903      &  X4*X6*X5)
41904         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
41905      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
41906      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
41907      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
41908      &  +X4*X9*X5+X4*X5**2)
41909         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
41910      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
41911      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
41912      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
41913      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
41914      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
41915         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
41916      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
41917      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
41918      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
41919      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
41920      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
41921      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
41922      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
41923      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
41924         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
41925      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
41926         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
41927      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
41928      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
41929      &  X6)
41930         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
41931      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
41932      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
41933      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
41934      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
41935      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
41936      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
41937      &  X5+X4*X6*X5)
41938         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
41939      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
41940      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
41941      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
41942      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
41943      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
41944      &  X6**2)
41945         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
41946      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
41947      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
41948      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
41949      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
41950      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
41951      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
41952      &  X4*X6*X5)
41953         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
41954      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
41955      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
41956      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
41957      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
41958      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
41959      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
41960      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
41961      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
41962      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
41963      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
41964         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
41965      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
41966      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
41967      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
41968      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
41969      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
41970      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
41971      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
41972      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
41973      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
41974      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
41975         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
41976      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
41977      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
41978         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
41979      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
41980      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
41981      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
41982      &  +X3*X8*X5+X3*X5**2)
41983         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
41984      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
41985      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
41986      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
41987      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
41988      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
41989      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
41990      &  X5+X4*X6*X5)
41991         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
41992      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
41993      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
41994      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
41995      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
41996         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
41997      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
41998      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
41999      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
42000      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
42001      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
42002      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
42003      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
42004      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
42005         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
42006      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
42007      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
42008      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
42009      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
42010      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
42011         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
42012      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
42013      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
42014         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
42015      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
42016      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
42017      &  X10)
42018         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
42019      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
42020      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
42021      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
42022      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
42023      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
42024         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
42025      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
42026      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
42027      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
42028      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
42029      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
42030         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
42031      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
42032      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
42033      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
42034      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
42035      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
42036      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
42037      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
42038      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
42039         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
42040      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
42041         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
42042      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
42043      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
42044      &  X7)
42045         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42046      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42047      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
42048      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
42049      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
42050      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
42051      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
42052      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
42053      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
42054      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
42055      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
42056         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42057      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42058      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
42059      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
42060      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
42061      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
42062      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
42063      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
42064      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
42065      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
42066      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
42067         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
42068      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
42069      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
42070         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
42071      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
42072      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
42073      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
42074      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
42075      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
42076      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
42077      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
42078      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
42079         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
42080      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
42081      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
42082      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
42083      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
42084      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
42085         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
42086      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
42087      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
42088      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
42089      &  *X6)
42090         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
42091      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
42092      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
42093      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
42094      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
42095      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
42096      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
42097         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
42098      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
42099      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
42100      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
42101      &  X8)
42102         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42103      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
42104      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
42105         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42106      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
42107      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
42108      &  X9*X5)
42109         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42110      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
42111      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
42112      &  X8*X5)
42113         FM(9,10)=0.5D0*(FMXX+FM(9,10))
42114         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42115      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
42116      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
42117  
42118 C...Repackage matrix elements.
42119         DO 200 I=1,8
42120           DO 190 J=I,8
42121             RM(I,J)=FM(I,J)
42122   190     CONTINUE
42123   200   CONTINUE
42124         RM(7,7)=FM(7,7)-2D0*FM(9,9)
42125         RM(7,8)=FM(7,8)-2D0*FM(9,10)
42126         RM(8,8)=FM(8,8)-2D0*FM(10,10)
42127  
42128 C...Produce final result: matrix elements * colours * propagators.
42129         DO 220 I=1,8
42130           DO 210 J=I,8
42131             FAC=8D0
42132             IF(I.EQ.J)FAC=4D0
42133             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
42134   210     CONTINUE
42135   220   CONTINUE
42136         WTQQBH=-WTQQBH/256D0
42137  
42138       ELSE
42139 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
42140         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
42141      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
42142      &  *X6+X8*X7)
42143         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
42144      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
42145      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
42146      &  X5)
42147         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
42148      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
42149      &  *X9+X4*X8)
42150  
42151 C...Produce final result: matrix elements * propagators.
42152         A11=A11/DX(7)**2
42153         A12=A12/(DX(7)*DX(8))
42154         A22=A22/DX(8)**2
42155         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
42156       ENDIF
42157  
42158       RETURN
42159       END
42160  
42161 C*********************************************************************
42162  
42163 C...PYSTBH (and auxiliaries)
42164 C.. Evaluates the matrix elements for t + b + H production.
42165  
42166       SUBROUTINE PYSTBH(WTTBH)
42167  
42168 C...DOUBLE PRECISION AND INTEGER DECLARATIONS
42169       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42170       IMPLICIT INTEGER(I-N)
42171       INTEGER PYK,PYCHGE,PYCOMP
42172  
42173 C...COMMONBLOCKS
42174       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42175       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42176       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42177       COMMON/PYINT1/MINT(400),VINT(400)
42178       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
42179       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
42180       COMMON/PYINT4/MWID(500),WIDS(500,5)
42181       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
42182       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42183       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
42184      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
42185      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
42186      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
42187       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42188       DOUBLE PRECISION MW2
42189       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
42190      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/,/PYCTBH/
42191  
42192 C...LOCAL ARRAYS AND COMPLEX VARIABLES
42193       DIMENSION QQ(4,2),PP(4,3)
42194       DATA QQ/8*0D0/
42195  
42196       WTTBH=0D0
42197  
42198 C...KINEMATIC PARAMETERS.
42199       SHPR=SQRT(VINT(26))*VINT(1)
42200       PH=SQRT(VINT(21))*VINT(1)
42201       SPH=PH**2
42202  
42203 C...SET UP OUTGOING KINEMATICS: 1=T, 2=TBAR, 3=H.
42204       DO 100 I=1,2
42205         PT=SQRT(MAX(0D0,VINT(197+5*I)))
42206         PP(1,I)=PT*COS(VINT(198+5*I))
42207         PP(2,I)=PT*SIN(VINT(198+5*I))
42208   100 CONTINUE
42209       PP(1,3)=-PP(1,1)-PP(1,2)
42210       PP(2,3)=-PP(2,1)-PP(2,2)
42211       PMS1=VINT(201)**2+PP(1,1)**2+PP(2,1)**2
42212       PMS2=VINT(206)**2+PP(1,2)**2+PP(2,2)**2
42213       PMS3=SPH+PP(1,3)**2+PP(2,3)**2
42214       PMT3=SQRT(PMS3)
42215       PP(3,3)=PMT3*SINH(VINT(211))
42216       PP(4,3)=PMT3*COSH(VINT(211))
42217       PMS12=(SHPR-PP(4,3))**2-PP(3,3)**2
42218       PP(3,1)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
42219      &VINT(213)*(SHPR-PP(4,3))*VINT(220))/(2D0*PMS12)
42220       PP(3,2)=-PP(3,1)-PP(3,3)
42221       PP(4,1)=SQRT(PMS1+PP(3,1)**2)
42222       PP(4,2)=SQRT(PMS2+PP(3,2)**2)
42223  
42224 C...CM SYSTEM, INGOING QUARKS/GLUONS
42225       QQ(3,1) = SHPR/2.D0
42226       QQ(4,1) = QQ(3,1)
42227       QQ(3,2) = -QQ(3,1)
42228       QQ(4,2) = QQ(4,1)
42229  
42230 C...PARAMETERS FOR AMPLITUDE METHOD
42231       ALPHA = AEM
42232       ALPHAS = AS
42233       SW2 = PARU(102)
42234       MW2 = PMAS(24,1)**2
42235       TANB = PARU(141)
42236       VTB = VCKM(3,3)
42237       RMB=PYMRUN(5,VINT(52))
42238  
42239       ISUB=MINT(1)
42240  
42241       IF (ISUB.EQ.401) THEN
42242         CALL PYTBHG(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
42243      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
42244       ELSE IF (ISUB.EQ.402) THEN
42245         CALL PYTBHQ(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
42246      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
42247       END IF
42248  
42249       RETURN
42250       END
42251 C------------------------------------------------------------------
42252       SUBROUTINE PYTBHB(MT,MB,MHP,BR,GAMT)
42253 C  WIDTH AND BRANCHING RATIO FOR (ON-SHELL) T-> B W+, T->B H+
42254       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42255       IMPLICIT INTEGER(I-N)
42256       DOUBLE PRECISION MW2,MT,MB,MHP,MW,KFUN
42257       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42258       SAVE /PYCTBH/
42259  
42260 C   TOP WIDTH CALCULATION
42261 C       VTB  = 0.99
42262       MW=DSQRT(MW2)
42263       XB=(MB/MT)**2
42264       XW=(MW/MT)**2
42265       XH =(MHP/MT)**2
42266       GAMTBH = 0D0
42267       IF (MT .LT. (MHP+MB)) THEN
42268 C  T ->B W ONLY
42269          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
42270          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
42271      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
42272          GAMT  = GAMTBW
42273       ELSE
42274 C T ->BW +T ->B H^+
42275          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
42276          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
42277      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
42278 C
42279          KFUN = DSQRT( (1.D0-(MHP/MT)**2-(MB/MT)**2)**2
42280      &        -4.D0*(MHP*MB/MT**2)**2 )
42281          GAMTBH= ALPHA/SW2/8.D0*VTB**2*KFUN/MT *
42282      &        (V**2*((MT+MB)**2-MHP**2)+A**2*((MT-MB)**2-MHP**2))
42283          GAMT  = GAMTBW+GAMTBH
42284       ENDIF
42285 C THUS BR IS
42286       BR=GAMTBH/GAMT
42287       RETURN
42288       END
42289  
42290 C AMPLITUDE SQUARED (MATRIX ELEMENTS) FOR THE PROCESSES:
42291 C GG->TBH^+, QQBAR->TBH^+
42292 C AS A FUNCTION OF 4-MOMENTA FOR SUITABLE INTERFACE
42293 C (FOR INSTANCE WITH PYTHIA)
42294 C------------------------------------------------------------
42295 C BASED ON F. BORZUMATI, J.-L. KNEUR, N. POLONSKY  HEP-PH/9905443,
42296 C PHYS REV. D 60 (1999) 115011
42297 C (THESE FILES PREPARED BY J.-L. KNEUR)
42298 C------------------------------------------------------------
42299 C 1)  GG->TBH^+
42300        SUBROUTINE PYTBHG(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
42301 C
42302 C CONVENTIONS AND INPUT/OUTPUT DEFINITIONS:
42303 C
42304 C INPUT: Q1,Q2 ARE ENTERING 4-MOMENTA OF INITIAL GLUONS OR QUARKS;
42305 C        P1, P2 ARE THE TOP AND BOTTOM OUTGOING 4-MOMENTA;
42306 C        P3 IS OUTGOING CHARGED HIGGS 4-MOMENTA.
42307 C  (NB FOR ALL 4-MOMENTA P(4) IS TIME-COMPONENT)
42308 C "PHYSICAL PARAMETERS" INPUT:
42309 C        MT,MB TOP AND BOTTOM MASSES;
42310 C        MHP CHARGED HIGGS MASS
42311 C   FURTHER PARAMETERS INPUT IS NEEDED FROM COMMON/PARAM/ (SEE BELOW)
42312 C
42313 C OUTPUT: AMP2  IS MATRIX ELEMENT (AMPLITUDE**2) FOR GG->TB H^+
42314 C (NB AMP2 IS TRULY AMPLITUDE SQUARRED, I.E. WITHOUT ANY
42315 C PHASE SPACE FACTORS INCLUDED. IT INCLUDES COLOUR AND COUPLING
42316 C FACTORS, AS EXPLICIT BELOW. ACCORDINGLY, FOR EXAMPLE THE TOTAL
42317 C CROSS-SECTION SHOULD BE (SYMBOLICALLY):
42318 C   SIGMA = INTEGRATE [PARTON DENSITY FUNCTIONS * 3-PARTICLE FINAL
42319 C           STATE PHASE-SPACE (STANDARDLY NORMALIZED) * AMP2 ]
42320 C
42321       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42322       IMPLICIT INTEGER(I-N)
42323       DOUBLE PRECISION MW2,MT,MB,MHP,MW
42324       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
42325       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42326       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42327       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42328  
42329       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42330       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
42331 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
42332 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
42333 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
42334 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB
42335 C (TAN BETA) VALUES
42336 C
42337 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
42338 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
42339  
42340       PI = 4*DATAN(1.D0)
42341       MW = DSQRT(MW2)
42342 C
42343 C COLLECTING THE RELEVANT OVERALL FACTORS:
42344 C 8X8 INITIAL GLUON COLOR AVERAGE, 2X2 GLUON SPIN AVERAGE
42345       PS=1.D0/(8.D0*8.D0 *2.D0*2.D0)
42346 C COUPLING CONSTANT (OVERALL NORMALIZATION)
42347       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
42348 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
42349 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
42350 C ALPHAS IS ALPHA_STRONG;
42351 C SW2 IS SIN(THETA_W)**2.
42352 C
42353 C      VTB=.998D0
42354 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
42355 C
42356       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
42357       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
42358 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
42359 C
42360 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
42361 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
42362       DO 100 KK=1,4
42363       P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
42364   100 CONTINUE
42365 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
42366       S = 2*PYTBHS(Q1,Q2)
42367       P1Q1=PYTBHS(Q1,P1)
42368       P1Q2=PYTBHS(P1,Q2)
42369       P2Q1=PYTBHS(P2,Q1)
42370       P2Q2=PYTBHS(P2,Q2)
42371       P1P2=PYTBHS(P1,P2)
42372 C
42373 C   TOP WIDTH CALCULATION
42374       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
42375 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
42376 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
42377       A1INV= S -2*P1Q1 -2*P1Q2
42378       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
42379 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
42380 C  NB:    A12 = A1*A1 BUT CORRECT EXPRESSION BELOW BECAUSE OF
42381 C  THE TOP WIDTH
42382       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
42383       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
42384 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
42385 C  NOW COMES THE AMP**2:
42386 C NB COLOR FACTOR (COMING FROM GRAPHS) ALREADY INCLUDED IN
42387 C THE EXPRESSIONS BELOW
42388       V18=0.D0
42389       A18=0.D0
42390       V18= 640*A1/3+640*A2/3+32*A1*A2*MB**2-368*A12*MB*MT-
42391      &512*A1*A2*MB*MT/3-
42392      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
42393      &320*A1*A2*P1P2+496*A2**2*P1P2/3+128*A1*MB*MT**3/(3*P1Q1**2)+
42394      &128*A1*MT**4/(3*P1Q1**2)-256*A12*MB*MT**5/(3*P1Q1**2)+
42395      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
42396      &8/(3*P1Q1)-32*A1*MB*MT/P1Q1-56*A2*MB*MT/(3*P1Q1)+
42397      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1+
42398      &704*A12*MB*MT**3/(3*P1Q1)-224*A1*A2*MB*MT**3/(3*P1Q1)+
42399      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1+
42400      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
42401      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
42402      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1+128*A1*MB*MT**3/(3*P1Q2**2)+
42403      &128*A1*MT**4/(3*P1Q2**2)-256*A12*MB*MT**5/(3*P1Q2**2)+
42404      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
42405      &256*A1*MT**2*P1Q1/(3*P1Q2**2)+256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
42406      &8/(3*P1Q2)-32*A1*MB*MT/P1Q2-56*A2*MB*MT/(3*P1Q2)
42407       V18=V18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2+
42408      &704*A12*MB*MT**3/(3*P1Q2)-224*A1*A2*MB*MT**3/(3*P1Q2)+
42409      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2+
42410      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
42411      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2-
42412      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)+
42413      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
42414      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
42415      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
42416      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)+208*A12*MB*MT*P1Q1/(3*P1Q2)-
42417      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
42418      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
42419      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
42420      &256*A1*MT**2*P1Q2/(3*P1Q1**2)+256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
42421      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
42422      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)+208*A12*MB*MT*P1Q2/(3*P1Q1)-
42423      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
42424       V18=V18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
42425      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)+
42426      &128*A2*MB**3*MT/(3*P2Q1**2)-256*A2**2*MB**5*MT/(3*P2Q1**2)+
42427      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
42428      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)-
42429      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
42430      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
42431      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)+
42432      &64*MB**3*MT/(3*P1Q2*P2Q1**2)+
42433      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
42434      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)+
42435      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
42436      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
42437      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
42438      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
42439      &88*A2*MB**2/(3*P2Q1)+56*A1*MB*MT/(3*P2Q1)+32*A2*MB*MT/P2Q1+
42440      &224*A1*A2*MB**3*MT/(3*P2Q1)-704*A2**2*MB**3*MT/(3*P2Q1)
42441       V18=V18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
42442      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)-
42443      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
42444      &16*P1P2/(3*P1Q1*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)-
42445      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)-
42446      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
42447      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
42448      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)+
42449      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)-
42450      &64*MB*MT**3/(3*P1Q2**2*P2Q1)-
42451      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
42452      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
42453      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
42454      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
42455      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
42456      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)+
42457      &64*MB*MT/(3*P1Q2*P2Q1)-128*A2*MB**3*MT/(3*P1Q2*P2Q1)
42458       V18=V18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
42459      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)-128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
42460      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)-
42461      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
42462      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)+
42463      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
42464      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
42465      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)+
42466      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
42467      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
42468      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
42469      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)+
42470      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)+200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
42471      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
42472      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
42473      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
42474      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
42475       V18=V18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
42476      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)+
42477      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
42478      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
42479      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)+
42480      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
42481      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42482      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42483      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
42484      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
42485      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
42486      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)+
42487      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
42488      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
42489      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
42490      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)+
42491      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
42492       V18=V18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
42493      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
42494      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
42495      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
42496      &128*A2*MB**4/(3*P2Q2**2)+128*A2*MB**3*MT/(3*P2Q2**2)-
42497      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
42498      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)-
42499      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
42500      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)+
42501      &64*MB**3*MT/(3*P1Q1*P2Q2**2)+
42502      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
42503      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
42504      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
42505      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
42506      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)+
42507      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
42508      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
42509       V18=V18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
42510      &256*A2*MB**2*P2Q1/(3*P2Q2**2)-256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
42511      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
42512      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)-
42513      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
42514      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
42515      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
42516      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
42517      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
42518      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)+56*A1*MB*MT/(3*P2Q2)+
42519      &32*A2*MB*MT/P2Q2+224*A1*A2*MB**3*MT/(3*P2Q2)-
42520      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
42521      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
42522      &512*A2**2*MB**2*P1P2/(3*P2Q2)-128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
42523      &32*A1*A2*P1P2**2/P2Q2-64*MB*MT**3/(3*P1Q1**2*P2Q2)-
42524      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
42525      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
42526       V18=V18+64*MB*MT/(3*P1Q1*P2Q2)-128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
42527      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
42528      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)-128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
42529      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)-
42530      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
42531      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)+
42532      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
42533      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
42534      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)+
42535      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
42536      &16*P1P2/(3*P1Q2*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)-
42537      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)-
42538      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
42539      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
42540      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)+
42541      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
42542      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
42543       V18=V18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
42544      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42545      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42546      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
42547      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
42548      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)+
42549      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
42550      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
42551      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
42552      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
42553      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
42554      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)+
42555      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)+200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
42556      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
42557      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
42558      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
42559      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
42560       V18=V18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
42561      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)+
42562      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
42563      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)-
42564      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)+64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
42565      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
42566      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)+
42567      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)-
42568      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
42569      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
42570      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
42571      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
42572      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)+8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)-
42573      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
42574      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
42575      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)+
42576      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
42577       V18=V18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42578      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
42579      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
42580      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
42581      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2-
42582      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)+208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
42583      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
42584      &96*A2**2*P1P2*P2Q1/P2Q2+256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
42585      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)-
42586      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)-56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
42587      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
42588      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)-
42589      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
42590      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
42591      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
42592      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
42593      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
42594       V18=V18+32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
42595      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
42596      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
42597      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
42598      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
42599      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
42600      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
42601      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
42602      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
42603      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
42604      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
42605      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
42606      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
42607      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
42608      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)+
42609      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
42610      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
42611       V18=V18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
42612      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
42613      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
42614      &16*A1*P2Q2/(3*P1Q1)+112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
42615      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
42616      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
42617      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)+
42618      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
42619      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
42620      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
42621      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
42622      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
42623      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
42624      &256*A2*MB**2*P2Q2/(3*P2Q1**2)-256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
42625      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
42626      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)-
42627      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
42628       V18=V18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
42629      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
42630      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
42631      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
42632      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1-
42633      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)+208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
42634      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
42635      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42636      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42637      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
42638      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
42639      &32*A2**2*P1Q1*P2Q2/P2Q1+256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
42640      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
42641      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)-
42642      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)-56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
42643      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
42644      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
42645       V18=V18-256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
42646      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
42647      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
42648      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
42649      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
42650      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
42651      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
42652      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
42653      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
42654      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
42655      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
42656      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
42657      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
42658      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)+
42659      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
42660      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
42661      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
42662       V18=V18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)+
42663      &384*A12*MB*MT*P1Q1**2/S**2+
42664      &384*A12*P1P2*P1Q1**2/S**2+2688*A12*MB*MT*P1Q1*P1Q2/S**2+
42665      &2688*A12*P1P2*P1Q1*P1Q2/S**2+384*A12*MB*MT*P1Q2**2/S**2+
42666      &384*A12*P1P2*P1Q2**2/S**2+768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
42667      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2+2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
42668      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
42669      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
42670      &960*A1*A2*P1Q2**2*P2Q1/S**2+384*A2**2*MB*MT*P2Q1**2/S**2+
42671      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
42672      &960*A2**2*P1Q2*P2Q1**2/S**2+2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
42673      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
42674      &960*A1*A2*P1Q1**2*P2Q2/S**2+768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
42675      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
42676      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2+2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
42677      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
42678      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
42679      &960*A2**2*P1Q2*P2Q1*P2Q2/S**2+384*A2**2*MB*MT*P2Q2**2/S**2
42680       V18=V18+384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
42681      &960*A2**2*P1Q1*P2Q2**2/S**2+96*A1*MB*MT/S+96*A2*MB*MT/S-
42682      &768*A2**2*MB**3*MT/S-768*A12*MB*MT**3/S-192*A1*P1P2/S-
42683      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S-2304*A1*A2*MB*MT*P1P2/S-
42684      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S-
42685      &96*A1*MB*MT**3/(P1Q1*S)-192*A2*MB*MT*P1P2/(P1Q1*S)-
42686      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
42687      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S-
42688      &480*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S-
42689      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S-
42690      &96*A1*MB*MT**3/(P1Q2*S)-192*A2*MB*MT*P1P2/(P1Q2*S)-
42691      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)-
42692      &48*A1*MB*MT*P1Q1/(P1Q2*S)+96*A2*MB*MT*P1Q1/(P1Q2*S)-
42693      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
42694      &192*A2*P1P2*P1Q1/(P1Q2*S)+192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)+
42695      &192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
42696      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)
42697       V18=V18-192*A12*MB*MT*P1Q1**2/(P1Q2*S)+
42698      &96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
42699      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
42700      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S-
42701      &480*A12*MB*MT*P1Q2/S+96*A1*A2*MB*MT*P1Q2/S-
42702      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S-
42703      &48*A1*MB*MT*P1Q2/(P1Q1*S)+96*A2*MB*MT*P1Q2/(P1Q1*S)-
42704      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
42705      &192*A2*P1P2*P1Q2/(P1Q1*S)+192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
42706      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
42707      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
42708      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)-
42709      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)+96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
42710      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q1*S)+
42711      &96*A2*MB**2*P1P2/(P2Q1*S)+192*A1*MB*MT*P1P2/(P2Q1*S)+
42712      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)+
42713      &192*A2*MB**2*P1Q1/(P2Q1*S)+96*A1*MB*MT*P1Q1/(P2Q1*S)+
42714      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)
42715       V18=V18+192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
42716      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)+
42717      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
42718      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)+
42719      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
42720      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
42721      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
42722      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
42723      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
42724      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
42725      &48*A2*MB**2*P1Q2/(P2Q1*S)-192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
42726      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
42727      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S-
42728      &96*A1*A2*MB*MT*P2Q1/S+480*A2**2*MB*MT*P2Q1/S+
42729      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S+
42730      &672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S+
42731      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)
42732       V18=V18+96*A2*MT**2*P2Q1/(P1Q1*S)+
42733      &192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
42734      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
42735      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
42736      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)-
42737      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
42738      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)-
42739      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
42740      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
42741      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
42742      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
42743      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
42744      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
42745      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)-
42746      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
42747      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)+
42748      &96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
42749      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)
42750       V18=V18-384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
42751      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
42752      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q2*S)+
42753      &96*A2*MB**2*P1P2/(P2Q2*S)+192*A1*MB*MT*P1P2/(P2Q2*S)+
42754      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
42755      &48*A2*MB**2*P1Q1/(P2Q2*S)-192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
42756      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
42757      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
42758      &192*A2*MB**2*P1Q2/(P2Q2*S)+96*A1*MB*MT*P1Q2/(P2Q2*S)+
42759      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
42760      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)+
42761      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
42762      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)+
42763      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
42764      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)+
42765      &96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
42766      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)
42767       V18=V18+48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
42768      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)+
42769      &96*A1*MB*MT*P2Q1/(P2Q2*S)-48*A2*MB*MT*P2Q1/(P2Q2*S)-
42770      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)+
42771      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
42772      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)-
42773      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)-
42774      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
42775      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
42776      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
42777      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
42778      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
42779      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
42780      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
42781      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
42782      &96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
42783      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)
42784       V18=V18+576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
42785      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42786      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42787      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42788      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42789      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
42790      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
42791      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
42792      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
42793      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)-
42794      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)+192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
42795      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)+
42796      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
42797      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
42798      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
42799      &96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
42800      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)
42801       V18=V18-192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+
42802      &96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
42803      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S-
42804      &96*A1*A2*MB*MT*P2Q2/S+480*A2**2*MB*MT*P2Q2/S+
42805      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
42806      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
42807      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)-
42808      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
42809      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
42810      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S+
42811      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
42812      &96*A2*MT**2*P2Q2/(P1Q2*S)+192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
42813      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
42814      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)-
42815      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)-
42816      &96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
42817      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)
42818       V18=V18-576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-
42819      &192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
42820      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
42821      &192*A2**2*P1Q2*P2Q2/S-96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
42822      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
42823      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
42824      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
42825      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)+
42826      &96*A1*MB*MT*P2Q2/(P2Q1*S)-48*A2*MB*MT*P2Q2/(P2Q1*S)-
42827      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)+
42828      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
42829      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
42830      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
42831      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
42832      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
42833      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)-
42834      &192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)
42835       V18=V18-96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
42836      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
42837      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
42838      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)+
42839      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)
42840  
42841       V18BIS=
42842      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42843      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42844      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42845      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
42846      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
42847      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
42848      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
42849      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
42850      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
42851      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
42852      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)-
42853      &96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
42854      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
42855      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)-
42856      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)+192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
42857      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)
42858       V18BIS=V18BIS-384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-
42859      &192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)+
42860      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
42861      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
42862      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
42863      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
42864      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
42865      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
42866      &128*A1*MT**2*S/(3*P1Q1**2)-128*A12*MB*MT**3*S/(3*P1Q1**2)-
42867      &152*A1*S/(3*P1Q1)+152*A12*MB*MT*S/(3*P1Q1)+
42868      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
42869      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
42870      &128*A1*MT**2*S/(3*P1Q2**2)-128*A12*MB*MT**3*S/(3*P1Q2**2)-
42871      &152*A1*S/(3*P1Q2)+152*A12*MB*MT*S/(3*P1Q2)+
42872      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
42873      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)-
42874      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)+32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)
42875       V18BIS=V18BIS-16*A1*P1P2*S/(3*P1Q1*P1Q2)+
42876      &272*A1*A2*P1Q1*S/(3*P1Q2)+
42877      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)-
42878      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
42879      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)-
42880      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
42881      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
42882      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
42883      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
42884      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
42885      &112*A1*A2*MB**2*S/(3*P2Q1)-128*A1*A2*MB*MT*S/(3*P2Q1)-
42886      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
42887      &16*A2**2*P1P2*S/P2Q1+8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
42888      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)+
42889      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
42890      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)+
42891      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)
42892       V18BIS=V18BIS+8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
42893      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
42894      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)+
42895      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)+
42896      &128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-12*S/(P1Q2*P2Q1)+
42897      &24*A1*MB**2*S/(P1Q2*P2Q1)-64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
42898      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)-
42899      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
42900      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)-
42901      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
42902      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
42903      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+
42904      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
42905      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
42906      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)-
42907      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
42908      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)
42909       V18BIS=V18BIS+16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-
42910      &32*A12*P2Q1*S/(3*P1Q1)-
42911      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
42912      &128*A2*MB**2*S/(3*P2Q2**2)-128*A2**2*MB**3*MT*S/(3*P2Q2**2)+
42913      &32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+32*MB**2*S/(3*P1Q1*P2Q2**2)-
42914      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
42915      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
42916      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
42917      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
42918      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
42919      &112*A1*A2*MB**2*S/(3*P2Q2)-128*A1*A2*MB*MT*S/(3*P2Q2)-
42920      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
42921      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
42922      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)+
42923      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
42924      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
42925      &24*A1*MB**2*S/(P1Q1*P2Q2)-64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)
42926       V18BIS=V18BIS+24*A2*MT**2*S/(P1Q1*P2Q2)-
42927      &128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)-
42928      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
42929      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)-
42930      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
42931      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
42932      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)+
42933      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
42934      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)+
42935      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
42936      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)+
42937      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
42938      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
42939      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
42940      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
42941      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
42942      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)
42943       V18BIS=V18BIS+136*A2*P1Q2*S/(3*P1Q1*P2Q2)-
42944      &128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)-
42945      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
42946      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)-16*A2*MB*MT*S/(3*P2Q1*P2Q2)+
42947      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)-
42948      &4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-
42949      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
42950      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
42951      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
42952      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42953      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42954      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42955      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42956      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42957      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
42958      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
42959      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)
42960       V18BIS=V18BIS+8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+
42961      &272*A1*A2*P2Q1*S/(3*P2Q2)-
42962      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)+
42963      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
42964      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)+
42965      &256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
42966      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
42967      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
42968      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
42969      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
42970      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
42971      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
42972      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)+
42973      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
42974      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
42975      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
42976      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)
42977       V18BIS=V18BIS+256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)+
42978      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
42979      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
42980      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)+
42981      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)-
42982      &4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
42983      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
42984      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
42985 C
42986  
42987       A18 = 640*A1/3+640*A2/3+32*A1*A2*MB**2+368*A12*MB*MT+
42988      &512*A1*A2*MB*MT/3+
42989      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
42990      &320*A1*A2*P1P2+496*A2**2*P1P2/3-128*A1*MB*MT**3/(3*P1Q1**2)+
42991      &128*A1*MT**4/(3*P1Q1**2)+256*A12*MB*MT**5/(3*P1Q1**2)+
42992      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
42993      &8/(3*P1Q1)+32*A1*MB*MT/P1Q1+56*A2*MB*MT/(3*P1Q1)+
42994      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1-
42995      &704*A12*MB*MT**3/(3*P1Q1)+224*A1*A2*MB*MT**3/(3*P1Q1)+
42996      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1-
42997      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
42998      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
42999      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1-128*A1*MB*MT**3/(3*P1Q2**2)+
43000      &128*A1*MT**4/(3*P1Q2**2)+256*A12*MB*MT**5/(3*P1Q2**2)+
43001      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
43002      &256*A1*MT**2*P1Q1/(3*P1Q2**2)-256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
43003      &8/(3*P1Q2)+32*A1*MB*MT/P1Q2+56*A2*MB*MT/(3*P1Q2)
43004       A18=A18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2-
43005      &704*A12*MB*MT**3/(3*P1Q2)+224*A1*A2*MB*MT**3/(3*P1Q2)+
43006      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2-
43007      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
43008      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2+
43009      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)-
43010      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
43011      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
43012      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
43013      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)-208*A12*MB*MT*P1Q1/(3*P1Q2)+
43014      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
43015      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
43016      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
43017      &256*A1*MT**2*P1Q2/(3*P1Q1**2)-256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
43018      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
43019      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)-208*A12*MB*MT*P1Q2/(3*P1Q1)+
43020      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
43021       A18=A18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
43022      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)-
43023      &128*A2*MB**3*MT/(3*P2Q1**2)+256*A2**2*MB**5*MT/(3*P2Q1**2)+
43024      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
43025      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)+
43026      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
43027      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
43028      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)-
43029      &64*MB**3*MT/(3*P1Q2*P2Q1**2)-
43030      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
43031      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)-
43032      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
43033      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
43034      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
43035      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
43036      &88*A2*MB**2/(3*P2Q1)-56*A1*MB*MT/(3*P2Q1)-32*A2*MB*MT/P2Q1-
43037      &224*A1*A2*MB**3*MT/(3*P2Q1)+704*A2**2*MB**3*MT/(3*P2Q1)
43038       A18=A18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
43039      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)+
43040      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
43041      &16*P1P2/(3*P1Q1*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43042      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43043      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
43044      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
43045      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)-
43046      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)+
43047      &64*MB*MT**3/(3*P1Q2**2*P2Q1)+
43048      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
43049      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
43050      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
43051      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)+
43052      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
43053      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)-
43054      &64*MB*MT/(3*P1Q2*P2Q1)+128*A2*MB**3*MT/(3*P1Q2*P2Q1)
43055       A18=A18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
43056      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)+128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
43057      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)+
43058      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
43059      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)-
43060      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
43061      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43062      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43063      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43064      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
43065      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
43066      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)-
43067      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)-200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
43068      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
43069      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)-
43070      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
43071      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
43072       A18=A18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
43073      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)-
43074      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
43075      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
43076      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)-
43077      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
43078      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43079      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)+
43080      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43081      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
43082      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
43083      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)-
43084      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
43085      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
43086      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
43087      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)-
43088      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
43089       A18=A18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
43090      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
43091      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
43092      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
43093      &128*A2*MB**4/(3*P2Q2**2)-128*A2*MB**3*MT/(3*P2Q2**2)+
43094      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
43095      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)+
43096      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
43097      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)-
43098      &64*MB**3*MT/(3*P1Q1*P2Q2**2)-
43099      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
43100      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
43101      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
43102      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
43103      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)-
43104      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
43105      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
43106       A18=A18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
43107      &256*A2*MB**2*P2Q1/(3*P2Q2**2)+256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
43108      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
43109      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)+
43110      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
43111      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
43112      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
43113      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
43114      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
43115      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)-56*A1*MB*MT/(3*P2Q2)-
43116      &32*A2*MB*MT/P2Q2-224*A1*A2*MB**3*MT/(3*P2Q2)+
43117      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
43118      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
43119      &512*A2**2*MB**2*P1P2/(3*P2Q2)+128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
43120      &32*A1*A2*P1P2**2/P2Q2+64*MB*MT**3/(3*P1Q1**2*P2Q2)+
43121      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
43122      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
43123       A18=A18-64*MB*MT/(3*P1Q1*P2Q2)+128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
43124      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
43125      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)+128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
43126      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)+
43127      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
43128      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)-
43129      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
43130      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
43131      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)-
43132      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
43133      &16*P1P2/(3*P1Q2*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43134      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43135      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
43136      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43137      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43138      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43139      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
43140       A18=A18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
43141      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43142      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)+
43143      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43144      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
43145      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)-
43146      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
43147      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
43148      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)+
43149      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
43150      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
43151      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)-
43152      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)-200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
43153      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
43154      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)-
43155      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
43156      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
43157       A18=A18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
43158      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)-
43159      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
43160      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)+
43161      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)-64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
43162      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
43163      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)-
43164      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43165      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43166      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43167      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43168      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
43169      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)-8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43170      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43171      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43172      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43173      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43174       A18=A18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43175      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
43176      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
43177      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
43178      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2+
43179      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)-208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
43180      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
43181      &96*A2**2*P1P2*P2Q1/P2Q2-256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
43182      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)+
43183      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)+56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
43184      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
43185      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)+
43186      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
43187      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
43188      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
43189      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
43190      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
43191       A18=A18-32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43192      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43193      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
43194      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
43195      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
43196      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
43197      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
43198      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43199      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)+
43200      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
43201      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
43202      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43203      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
43204      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
43205      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)-
43206      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
43207      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
43208       A18=A18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
43209      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
43210      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
43211      &16*A1*P2Q2/(3*P1Q1)-112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
43212      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
43213      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
43214      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)-
43215      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
43216      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
43217      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
43218      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
43219      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
43220      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
43221      &256*A2*MB**2*P2Q2/(3*P2Q1**2)+256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
43222      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
43223      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)+
43224      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
43225       A18=A18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
43226      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
43227      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
43228      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
43229      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1+
43230      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)-208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
43231      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
43232      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)-
43233      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43234      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43235      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
43236      &32*A2**2*P1Q1*P2Q2/P2Q1-256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
43237      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
43238      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)+
43239      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)+56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
43240      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
43241      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
43242       A18=A18+256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
43243      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
43244      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
43245      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
43246      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43247      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)+
43248      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
43249      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
43250      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43251      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
43252      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
43253      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
43254      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
43255      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)-
43256      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
43257      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
43258      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
43259       A18=A18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)-
43260      &384*A12*MB*MT*P1Q1**2/S**2+
43261      &384*A12*P1P2*P1Q1**2/S**2-2688*A12*MB*MT*P1Q1*P1Q2/S**2+
43262      &2688*A12*P1P2*P1Q1*P1Q2/S**2-384*A12*MB*MT*P1Q2**2/S**2+
43263      &384*A12*P1P2*P1Q2**2/S**2-768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
43264      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2-2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
43265      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
43266      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
43267      &960*A1*A2*P1Q2**2*P2Q1/S**2-384*A2**2*MB*MT*P2Q1**2/S**2+
43268      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
43269      &960*A2**2*P1Q2*P2Q1**2/S**2-2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
43270      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
43271      &960*A1*A2*P1Q1**2*P2Q2/S**2-768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
43272      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
43273      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2-2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
43274      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
43275      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2
43276       A18=A18+960*A2**2*P1Q2*P2Q1*P2Q2/S**2-
43277      &384*A2**2*MB*MT*P2Q2**2/S**2+
43278      &384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
43279      &960*A2**2*P1Q1*P2Q2**2/S**2-96*A1*MB*MT/S-96*A2*MB*MT/S+
43280      &768*A2**2*MB**3*MT/S+768*A12*MB*MT**3/S-192*A1*P1P2/S-
43281      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S+2304*A1*A2*MB*MT*P1P2/S-
43282      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S+
43283      &96*A1*MB*MT**3/(P1Q1*S)+192*A2*MB*MT*P1P2/(P1Q1*S)-
43284      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
43285      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S+
43286      &480*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S-
43287      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S+
43288      &96*A1*MB*MT**3/(P1Q2*S)+192*A2*MB*MT*P1P2/(P1Q2*S)-
43289      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)+
43290      &48*A1*MB*MT*P1Q1/(P1Q2*S)-96*A2*MB*MT*P1Q1/(P1Q2*S)-
43291      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
43292      &192*A2*P1P2*P1Q1/(P1Q2*S)-192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)
43293       A18=A18+192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
43294      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)+
43295      &192*A12*MB*MT*P1Q1**2/(P1Q2*S)-96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
43296      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
43297      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S+
43298      &480*A12*MB*MT*P1Q2/S-96*A1*A2*MB*MT*P1Q2/S-
43299      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S+
43300      &48*A1*MB*MT*P1Q2/(P1Q1*S)-96*A2*MB*MT*P1Q2/(P1Q1*S)-
43301      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
43302      &192*A2*P1P2*P1Q2/(P1Q1*S)-192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
43303      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
43304      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
43305      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)+
43306      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)-96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
43307      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q1*S)+
43308      &96*A2*MB**2*P1P2/(P2Q1*S)-192*A1*MB*MT*P1P2/(P2Q1*S)+
43309      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)
43310       A18=A18+192*A2*MB**2*P1Q1/(P2Q1*S)-96*A1*MB*MT*P1Q1/(P2Q1*S)-
43311      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)+
43312      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
43313      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)-
43314      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
43315      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)-
43316      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
43317      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
43318      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
43319      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)-
43320      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
43321      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
43322      &48*A2*MB**2*P1Q2/(P2Q1*S)+192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
43323      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
43324      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S+
43325      &96*A1*A2*MB*MT*P2Q1/S-480*A2**2*MB*MT*P2Q1/S+
43326      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S
43327       A18=A18+672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S-
43328      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)+
43329      &96*A2*MT**2*P2Q1/(P1Q1*S)-192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
43330      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
43331      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
43332      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)+
43333      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
43334      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)+
43335      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
43336      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43337      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43338      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
43339      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
43340      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
43341      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)+
43342      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
43343      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)
43344       A18=A18+96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
43345      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)-
43346      &384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
43347      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
43348      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q2*S)+
43349      &96*A2*MB**2*P1P2/(P2Q2*S)-192*A1*MB*MT*P1P2/(P2Q2*S)+
43350      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
43351      &48*A2*MB**2*P1Q1/(P2Q2*S)+192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
43352      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
43353      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
43354      &192*A2*MB**2*P1Q2/(P2Q2*S)-96*A1*MB*MT*P1Q2/(P2Q2*S)-
43355      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
43356      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)-
43357      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
43358      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)-
43359      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
43360      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)
43361       A18=A18+96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
43362      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)-
43363      &48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
43364      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)-
43365      &96*A1*MB*MT*P2Q1/(P2Q2*S)+48*A2*MB*MT*P2Q1/(P2Q2*S)-
43366      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)-
43367      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
43368      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)+
43369      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)+
43370      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43371      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43372      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
43373      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
43374      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)-
43375      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
43376      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
43377      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)
43378       A18=A18+96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)-
43379      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)+
43380      &576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
43381      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43382      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43383      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43384      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43385      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43386      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
43387      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
43388      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
43389      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)+
43390      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)-192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
43391      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)-
43392      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
43393      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
43394      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)
43395       A18=A18+96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-
43396      &384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
43397      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)-
43398      &192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
43399      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S+
43400      &96*A1*A2*MB*MT*P2Q2/S-480*A2**2*MB*MT*P2Q2/S+
43401      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
43402      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
43403      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)+
43404      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
43405      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
43406      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S-
43407      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
43408      &96*A2*MT**2*P2Q2/(P1Q2*S)-192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
43409      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
43410      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)+
43411      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)
43412       A18=A18-96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
43413      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)-
43414      &576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
43415      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
43416      &192*A2**2*P1Q2*P2Q2/S+96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
43417      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43418      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43419      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
43420      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)-
43421      &96*A1*MB*MT*P2Q2/(P2Q1*S)+48*A2*MB*MT*P2Q2/(P2Q1*S)-
43422      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)-
43423      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
43424      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
43425      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
43426      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)-
43427      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
43428      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)
43429       A18=A18+192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)+
43430      &96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43431      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43432      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
43433      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43434      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43435      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43436      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43437      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43438      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43439      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
43440      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
43441      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)-
43442      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
43443      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
43444      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
43445      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)
43446       A18=A18-96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
43447      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
43448      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)+
43449      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)-192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
43450      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)-
43451      &384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)-
43452      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
43453      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43454      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43455      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
43456      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
43457      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
43458      &128*A1*MT**2*S/(3*P1Q1**2)+128*A12*MB*MT**3*S/(3*P1Q1**2)-
43459      &152*A1*S/(3*P1Q1)-152*A12*MB*MT*S/(3*P1Q1)-
43460      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
43461      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
43462      &128*A1*MT**2*S/(3*P1Q2**2)+128*A12*MB*MT**3*S/(3*P1Q2**2)
43463       A18=A18-152*A1*S/(3*P1Q2)-152*A12*MB*MT*S/(3*P1Q2)-
43464      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
43465      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)+
43466      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)-32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)-
43467      &16*A1*P1P2*S/(3*P1Q1*P1Q2)+272*A1*A2*P1Q1*S/(3*P1Q2)+
43468      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)+
43469      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
43470      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)
43471  
43472       A18BIS=
43473      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
43474      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
43475      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
43476      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
43477      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
43478      &112*A1*A2*MB**2*S/(3*P2Q1)+128*A1*A2*MB*MT*S/(3*P2Q1)+
43479      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
43480      &16*A2**2*P1P2*S/P2Q1-8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
43481      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)-
43482      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
43483      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)-
43484      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)+
43485      &8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
43486      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
43487      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)-
43488      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)
43489       A18BIS=A18BIS+128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-
43490      &12*S/(P1Q2*P2Q1)+
43491      &24*A1*MB**2*S/(P1Q2*P2Q1)+64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
43492      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)+
43493      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
43494      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)+
43495      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
43496      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
43497      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
43498      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
43499      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
43500      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)+
43501      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
43502      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)+
43503      &16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-32*A12*P2Q1*S/(3*P1Q1)-
43504      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
43505      &128*A2*MB**2*S/(3*P2Q2**2)+128*A2**2*MB**3*MT*S/(3*P2Q2**2)
43506       A18BIS=A18BIS+32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+
43507      &32*MB**2*S/(3*P1Q1*P2Q2**2)+
43508      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
43509      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
43510      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
43511      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
43512      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
43513      &112*A1*A2*MB**2*S/(3*P2Q2)+128*A1*A2*MB*MT*S/(3*P2Q2)+
43514      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
43515      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
43516      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)-
43517      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
43518      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
43519      &24*A1*MB**2*S/(P1Q1*P2Q2)+64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)+
43520      &24*A2*MT**2*S/(P1Q1*P2Q2)-128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)+
43521      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
43522      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)
43523       A18BIS=A18BIS+128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
43524      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
43525      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)-
43526      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
43527      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)-
43528      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
43529      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)-
43530      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
43531      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
43532      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
43533      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
43534      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
43535      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)+
43536      &136*A2*P1Q2*S/(3*P1Q1*P2Q2)-128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)+
43537      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
43538      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)+16*A2*MB*MT*S/(3*P2Q1*P2Q2)-
43539      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)
43540       A18BIS=A18BIS-4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
43541      &8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
43542      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43543      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43544      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
43545      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43546      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43547      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43548      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43549      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43550      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43551      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43552      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)+
43553      &8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+272*A1*A2*P2Q1*S/(3*P2Q2)-
43554      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)-
43555      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
43556      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)
43557       A18BIS=A18BIS+256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
43558      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
43559      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
43560      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
43561      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
43562      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
43563      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
43564      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)-
43565      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
43566      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
43567      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
43568      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)+
43569      &256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)-
43570      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
43571      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
43572      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)-
43573      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)
43574       A18BIS=A18BIS-4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
43575      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
43576      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43577 C
43578       V18=V18+V18BIS
43579       A18=A18+A18BIS
43580       V910 =-48*A12*MB*MT-48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2-
43581      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2-
43582      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43583      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43584      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
43585      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2-
43586      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43587      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
43588      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
43589      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
43590      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43591      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43592      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2+
43593      &96*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S+
43594      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S+96*A12*MB*MT*P1Q2/S-
43595      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S+
43596      &96*A1*A2*MB*MT*P2Q1/S-96*A2**2*MB*MT*P2Q1/S
43597       V910=V910+96*A1*A2*P1P2*P2Q1/S-
43598      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
43599      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S+
43600      &96*A1*A2*MB*MT*P2Q2/S-96*A2**2*MB*MT*P2Q2/S+
43601      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
43602      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
43603 C
43604       A910 = 48*A12*MB*MT+48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2+
43605      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2+
43606      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43607      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43608      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
43609      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2+
43610      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43611      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
43612      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2+
43613      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
43614      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43615      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43616      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2-
43617      &96*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S+
43618      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S-96*A12*MB*MT*P1Q2/S+
43619      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S-
43620      &96*A1*A2*MB*MT*P2Q1/S+96*A2**2*MB*MT*P2Q1/S
43621       A910=A910+96*A1*A2*P1P2*P2Q1/S-
43622      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
43623      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S-
43624      &96*A1*A2*MB*MT*P2Q2/S+96*A2**2*MB*MT*P2Q2/S+
43625      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
43626      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
43627 C
43628 C FINAL RESULT;
43629 C
43630       AMP2= FACT*PS*VTB**2*(V**2 *(V18 +V910)+A**2 *(A18+A910) )
43631  
43632       END
43633 C---------------------------------------------------------
43634 C 2)  Q QBAR ->TBH^+
43635        SUBROUTINE PYTBHQ(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
43636 C
43637 C AMP2(OUTPUT) =MATRIX ELEMENT (AMPLITUDE**2) FOR Q QBAR->TB H^+
43638 C (NB SAME STRUCTURE AS FOR PYTBHG ROUTINE ABOVE)
43639       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43640       IMPLICIT INTEGER(I-N)
43641       DOUBLE PRECISION MW2,MT,MB,MHP,MW
43642       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
43643       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43644       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43645       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43646       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43647       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
43648 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
43649 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
43650 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
43651 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB VALUES
43652 C
43653 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
43654 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
43655 C
43656       DIMENSION YY(2,2)
43657  
43658       PI = 4*DATAN(1.D0)
43659       MW = DSQRT(MW2)
43660  
43661 C COLLECTING THE RELEVANT OVERALL FACTORS:
43662 C 3X3 INITIAL QUARK COLOR AVERAGE, 2X2 QUARK SPIN AVERAGE
43663       PS=1.D0/(3.D0*3.D0 *2.D0*2.D0)
43664 C COUPLING CONSTANT (OVERALL NORMALIZATION)
43665       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
43666 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
43667 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
43668 C ALPHAS IS ALPHA_STRONG;
43669 C SW2 IS SIN(THETA_W)**2.
43670 C
43671 C      VTB=.998D0
43672 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
43673 C
43674       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
43675       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
43676 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
43677 C
43678 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
43679 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
43680       DO 100 KK=1,4
43681         P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
43682   100 CONTINUE
43683 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
43684       S = 2*PYTBHS(Q1,Q2)
43685       P1Q1=PYTBHS(Q1,P1)
43686       P1Q2=PYTBHS(P1,Q2)
43687       P2Q1=PYTBHS(P2,Q1)
43688       P2Q2=PYTBHS(P2,Q2)
43689       P1P2=PYTBHS(P1,P2)
43690 C
43691 C   TOP WIDTH CALCULATION
43692       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
43693 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
43694 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
43695       A1INV= S -2*P1Q1 -2*P1Q2
43696       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
43697 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
43698 C  NB  A12 = A1*A1 BUT WITH CORRECT WIDTH TREATMENT
43699       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
43700       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
43701 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
43702 C  NOW COMES THE AMP**2:
43703 C NB COLOR FACTOR (COMING FORM GRAPHS) ALREADY INCLUDED IN
43704 C THE EXPRESSIONS BELOW
43705       YY(1, 1) = -16*A**2*A2**2*MB*MT+
43706      &64*A**2*A2**2*P1Q2*P2Q1**2/S**2+
43707      &128*A**2*A2**2*MB*MT*P2Q1*P2Q2/S**2-
43708      &128*A**2*A2**2*P1P2*P2Q1*P2Q2/S**2-
43709      &64*A**2*A2**2*P1Q1*P2Q1*P2Q2/S**2-
43710      &64*A**2*A2**2*P1Q2*P2Q1*P2Q2/S**2+
43711      &64*A**2*A2**2*P1Q1*P2Q2**2/S**2-
43712      &32*A**2*A2**2*MB**3*MT/S+32*A**2*A2**2*MB**2*P1P2/S+
43713      &32*A**2*A2**2*MB**2*P1Q1/S+32*A**2*A2**2*MB**2*P1Q2/S-
43714      &32*A**2*A2**2*P1P2*P2Q1/S-32*A**2*A2**2*P1Q1*P2Q1/S-
43715      &32*A**2*A2**2*P1P2*P2Q2/S-32*A**2*A2**2*P1Q2*P2Q2/S+
43716      &16*A2**2*MB*MT*V**2+64*A2**2*P1Q2*P2Q1**2*V**2/S**2-
43717      &128*A2**2*MB*MT*P2Q1*P2Q2*V**2/S**2-
43718      &128*A2**2*P1P2*P2Q1*P2Q2*V**2/S**2-
43719      &64*A2**2*P1Q1*P2Q1*P2Q2*V**2/S**2-
43720      &64*A2**2*P1Q2*P2Q1*P2Q2*V**2/S**2+
43721      &64*A2**2*P1Q1*P2Q2**2*V**2/S**2
43722       YY(1, 1)=YY(1, 1)+32*A2**2*MB**3*MT*V**2/S+
43723      &32*A2**2*MB**2*P1P2*V**2/S+
43724      &32*A2**2*MB**2*P1Q1*V**2/S+32*A2**2*MB**2*P1Q2*V**2/S-
43725      &32*A2**2*P1P2*P2Q1*V**2/S-32*A2**2*P1Q1*P2Q1*V**2/S-
43726      &32*A2**2*P1P2*P2Q2*V**2/S-32*A2**2*P1Q2*P2Q2*V**2/S
43727       YY(1, 1)=2*YY(1, 1)
43728  
43729       YY(1, 2) = -32*A**2*A1*A2*MB*MT+
43730      &128*A**2*A1*A2*MB*MT*P1Q2*P2Q1/S**2-
43731      &128*A**2*A1*A2*P1P2*P1Q2*P2Q1/S**2+
43732      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
43733      &64*A**2*A1*A2*P1Q2**2*P2Q1/S**2+
43734      &64*A**2*A1*A2*P1Q2*P2Q1**2/S**2+
43735      &128*A**2*A1*A2*MB*MT*P1Q1*P2Q2/S**2-
43736      &128*A**2*A1*A2*P1P2*P1Q1*P2Q2/S**2-
43737      &64*A**2*A1*A2*P1Q1**2*P2Q2/S**2+
43738      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
43739      &64*A**2*A1*A2*P1Q1*P2Q1*P2Q2/S**2-
43740      &64*A**2*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
43741      &64*A**2*A1*A2*P1Q1*P2Q2**2/S**2-
43742      &64*A**2*A1*A2*MB*MT*P1P2/S+
43743      &64*A**2*A1*A2*P1P2**2/S+32*A**2*A1*A2*MB**2*P1Q1/S+
43744      &32*A**2*A1*A2*P1P2*P1Q1/S+32*A**2*A1*A2*MB**2*P1Q2/S+
43745      &32*A**2*A1*A2*P1P2*P1Q2/S-32*A**2*A1*A2*MT**2*P2Q1/S
43746       YY(1, 2)=YY(1, 2)-32*A**2*A1*A2*P1P2*P2Q1/S-
43747      &64*A**2*A1*A2*P1Q1*P2Q1/S-
43748      &32*A**2*A1*A2*MT**2*P2Q2/S-32*A**2*A1*A2*P1P2*P2Q2/S-
43749      &64*A**2*A1*A2*P1Q2*P2Q2/S+32*A1*A2*MB*MT*V**2-
43750      &128*A1*A2*MB*MT*P1Q2*P2Q1*V**2/S**2 -
43751      &128*A1*A2*P1P2*P1Q2*P2Q1*V**2/S**2+
43752      &64*A1*A2*P1Q1*P1Q2*P2Q1*V**2/S**2-
43753      &64*A1*A2*P1Q2**2*P2Q1*V**2/S**2+
43754      &64*A1*A2*P1Q2*P2Q1**2*V**2/S**2-
43755      &128*A1*A2*MB*MT*P1Q1*P2Q2*V**2/S**2-
43756      &128*A1*A2*P1P2*P1Q1*P2Q2*V**2/S**2-
43757      &64*A1*A2*P1Q1**2*P2Q2*V**2/S**2+
43758      &64*A1*A2*P1Q1*P1Q2*P2Q2*V**2/S**2-
43759      &64*A1*A2*P1Q1*P2Q1*P2Q2*V**2/S**2-
43760      &64*A1*A2*P1Q2*P2Q1*P2Q2*V**2/S**2+
43761      &64*A1*A2*P1Q1*P2Q2**2*V**2/S**2+
43762      &64*A1*A2*MB*MT*P1P2*V**2/S+64*A1*A2*P1P2**2*V**2/S
43763       YY(1, 2)=YY(1, 2)+32*A1*A2*MB**2*P1Q1*V**2/S+
43764      &32*A1*A2*P1P2*P1Q1*V**2/S+
43765      &32*A1*A2*MB**2*P1Q2*V**2/S+32*A1*A2*P1P2*P1Q2*V**2/S-
43766      &32*A1*A2*MT**2*P2Q1*V**2/S-32*A1*A2*P1P2*P2Q1*V**2/S-
43767      &64*A1*A2*P1Q1*P2Q1*V**2/S-32*A1*A2*MT**2*P2Q2*V**2/S-
43768      &32*A1*A2*P1P2*P2Q2*V**2/S-64*A1*A2*P1Q2*P2Q2*V**2/S
43769  
43770  
43771       YY(2, 2) =-16*A**2*A12*MB*MT+
43772      &128*A**2*A12*MB*MT*P1Q1*P1Q2/S**2-
43773      &128*A**2*A12*P1P2*P1Q1*P1Q2/S**2+
43774      &64*A**2*A12*P1Q1*P1Q2*P2Q1/S**2-
43775      &64*A**2*A12*P1Q2**2*P2Q1/S**2-64*A**2*A12*P1Q1**2*P2Q2/S**2+
43776      &64*A**2*A12*P1Q1*P1Q2*P2Q2/S**2-32*A**2*A12*MB*MT**3/S+
43777      &32*A**2*A12*MT**2*P1P2/S+32*A**2*A12*P1P2*P1Q1/S+
43778      &32*A**2*A12*P1P2*P1Q2/S-32*A**2*A12*MT**2*P2Q1/S-
43779      &32*A**2*A12*P1Q1*P2Q1/S-32*A**2*A12*MT**2*P2Q2/S-
43780      &32*A**2*A12*P1Q2*P2Q2/S+16*A12*MB*MT*V**2-
43781      &128*A12*MB*MT*P1Q1*P1Q2*V**2/S**2-
43782      &128*A12*P1P2*P1Q1*P1Q2*V**2/S**2+
43783      &64*A12*P1Q1*P1Q2*P2Q1*V**2/S**2-
43784      &64*A12*P1Q2**2*P2Q1*V**2/S**2-64*A12*P1Q1**2*P2Q2*V**2/S**2+
43785      &64*A12*P1Q1*P1Q2*P2Q2*V**2/S**2+32*A12*MB*MT**3*V**2/S+
43786      &32*A12*MT**2*P1P2*V**2/S+32*A12*P1P2*P1Q1*V**2/S+
43787      &32*A12*P1P2*P1Q2*V**2/S-32*A12*MT**2*P2Q1*V**2/S
43788       YY(2, 2)=YY(2, 2)-32*A12*P1Q1*P2Q1*V**2/S-
43789      &32*A12*MT**2*P2Q2*V**2/S-
43790      &32*A12*P1Q2*P2Q2*V**2/S
43791       YY(2, 2)=2*YY(2, 2)
43792  
43793       RES=YY(1,1)+2*YY(1,2)+YY(2,2)
43794       AMP2=  FACT*PS*VTB**2*RES
43795  
43796       END
43797 C=====================================================================
43798 C     ************* FUNCTION SCALAR PRODUCTS *************************
43799       DOUBLE PRECISION FUNCTION PYTBHS(A,B)
43800       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43801       IMPLICIT INTEGER(I-N)
43802       DIMENSION A(4),B(4)
43803       DUM=A(4)*B(4)
43804       DO 100 ID=1,3
43805          DUM=DUM-A(ID)*B(ID)
43806   100 CONTINUE
43807       PYTBHS=DUM
43808       RETURN
43809       END
43810  
43811 C*********************************************************************
43812  
43813 C...PYMSIN
43814 C...Initializes supersymmetry: finds sparticle masses and
43815 C...branching ratios and stores this information.
43816 C...AUTHOR: STEPHEN MRENNA
43817 C...Author: P. Skands (SLHA + RPV + ISASUSY Interface, NMSSM)
43818  
43819       SUBROUTINE PYMSIN
43820  
43821 C...Double precision and integer declarations.
43822       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43823       IMPLICIT INTEGER(I-N)
43824       INTEGER PYK,PYCHGE,PYCOMP
43825 C...Parameter statement to help give large particle numbers.
43826       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
43827      &KEXCIT=4000000,KDIMEN=5000000)
43828 C...Commonblocks.
43829       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43830       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43831       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
43832       COMMON/PYDAT4/CHAF(500,2)
43833       CHARACTER CHAF*16
43834       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43835       COMMON/PYINT4/MWID(500),WIDS(500,5)
43836       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43837       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
43838       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
43839      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
43840       COMMON/PYHTRI/HHH(7)
43841       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
43842       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/,
43843      &/PYMSSM/,/PYMSRV/,/PYSSMT/
43844  
43845 C...Local variables.
43846       DOUBLE PRECISION ALFA,BETA
43847       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
43848       INTEGER I,J,J1,I1,K1
43849       INTEGER KC,LKNT,IDLAM(400,3)
43850       DOUBLE PRECISION XLAM(0:400)
43851       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
43852       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
43853       DOUBLE PRECISION DELM,XMDIF
43854       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
43855       DOUBLE PRECISION ARG,SGNMU,R
43856       INTEGER IMSSM
43857       INTEGER IRPRTY
43858       INTEGER KFSUSY(50),MWIDSU(36),MDCYSU(36)
43859       SAVE MWIDSU,MDCYSU
43860       DATA KFSUSY/
43861      &1000001,2000001,1000002,2000002,1000003,2000003,
43862      &1000004,2000004,1000005,2000005,1000006,2000006,
43863      &1000011,2000011,1000012,2000012,1000013,2000013,
43864      &1000014,2000014,1000015,2000015,1000016,2000016,
43865      &1000021,1000022,1000023,1000025,1000035,1000024,
43866      &1000037,1000039,     25,     35,     36,     37,
43867      &      6,     24,     45,     46,1000045, 9*0/
43868       DATA INIT/0/
43869  
43870 C...Automatically read QNUMBERS, MASS, and DECAY tables      
43871       IF (IMSS(21).NE.0.OR.MSTP(161).NE.0) THEN
43872         NQNUM=0
43873         CALL PYSLHA(0,0,IFAIL)
43874         CALL PYSLHA(5,0,IFAIL)
43875       ENDIF
43876       IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) CALL PYSLHA(2,0,IFAIL)
43877
43878 C...Do nothing further if SUSY not requested
43879       IMSSM=IMSS(1)
43880       IF(IMSSM.EQ.0) RETURN
43881       
43882 C...Save copy of MWID(KC) and MDCY(KC,1) values before
43883 C...they are set to zero for the LSP.
43884       IF(INIT.EQ.0) THEN
43885         INIT=1
43886         DO 100 I=1,36
43887           KF=KFSUSY(I)
43888           KC=PYCOMP(KF)
43889           MWIDSU(I)=MWID(KC)
43890           MDCYSU(I)=MDCY(KC,1)
43891   100   CONTINUE
43892       ENDIF
43893  
43894 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
43895       DO 110 I=1,36
43896         KF=KFSUSY(I)
43897         KC=PYCOMP(KF)
43898         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
43899           MWID(KC)=MWIDSU(I)
43900           MDCY(KC,1)=MDCYSU(I)
43901         ENDIF
43902   110 CONTINUE
43903  
43904 C...First part of routine: set masses and couplings.
43905  
43906 C...Reset mixing values in sfermion sector to pure left/right.
43907       DO 120 I=1,16
43908         SFMIX(I,1)=1D0
43909         SFMIX(I,4)=1D0
43910         SFMIX(I,2)=0D0
43911         SFMIX(I,3)=0D0
43912   120 CONTINUE
43913  
43914 C...Add NMSSM states if NMSSM switched on, and change old names.
43915       IF (IMSS(13).NE.0.AND.PYCOMP(1000045).EQ.0) THEN
43916 C...  Switch on NMSSM
43917         WRITE(MSTU(11),*) '(PYMSIN:) switching on NMSSM'
43918  
43919         KFN=25
43920         KCN=KFN
43921         CHAF(KCN,1)='h_10'
43922         CHAF(KCN,2)=' '
43923  
43924         KFN=35
43925         KCN=KFN
43926         CHAF(KCN,1)='h_20'
43927         CHAF(KCN,2)=' '
43928  
43929         KFN=45
43930         KCN=KFN
43931         CHAF(KCN,1)='h_30'
43932         CHAF(KCN,2)=' '
43933  
43934         KFN=36
43935         KCN=KFN
43936         CHAF(KCN,1)='A_10'
43937         CHAF(KCN,2)=' '
43938  
43939         KFN=46
43940         KCN=KFN
43941         CHAF(KCN,1)='A_20'
43942         CHAF(KCN,2)=' '
43943  
43944         KFN=1000045
43945         KCN=PYCOMP(KFN)
43946         IF (KCN.EQ.0) THEN
43947           DO 123 KCT=100,MSTU(6)
43948             IF(KCHG(KCT,4).GT.100) KCN=KCT
43949  123      CONTINUE
43950           KCN=KCN+1
43951           KCHG(KCN,4)=KFN
43952           MSTU(20)=0
43953         ENDIF
43954 C...  Set stable for now
43955         PMAS(KCN,2)=1D-6
43956         MWID(KCN)=0
43957         MDCY(KCN,1)=0
43958         MDCY(KCN,2)=0
43959         MDCY(KCN,3)=0
43960         CHAF(KCN,1)='~chi_50'
43961         CHAF(KCN,2)=' '
43962       ENDIF
43963  
43964 C...Read spectrum from SLHA file.
43965       IF (IMSSM.EQ.11) THEN
43966         CALL PYSLHA(1,0,IFAIL)
43967       ENDIF
43968  
43969 C...Common couplings.
43970       TANB=RMSS(5)
43971       BETA=ATAN(TANB)
43972       COSB=COS(BETA)
43973       SINB=TANB*COSB
43974       COS2B=COS(2D0*BETA)
43975       ALFA=RMSS(18)
43976       XMW2=PMAS(24,1)**2
43977       XMZ2=PMAS(23,1)**2
43978       XW=PARU(102)
43979  
43980 C...Define sparticle masses for a general MSSM simulation.
43981       IF(IMSSM.EQ.1) THEN
43982         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
43983         DO 130 I=1,5,2
43984           KC=PYCOMP(KSUSY1+I)
43985           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
43986           KC=PYCOMP(KSUSY2+I)
43987           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
43988           KC=PYCOMP(KSUSY1+I+1)
43989           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
43990           KC=PYCOMP(KSUSY2+I+1)
43991           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
43992   130   CONTINUE
43993         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
43994         IF(XARG.LT.0D0) THEN
43995           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
43996      &    ' FROM THE SUM RULE. '
43997           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
43998           RETURN
43999         ELSE
44000           XARG=SQRT(XARG)
44001         ENDIF
44002         DO 140 I=11,15,2
44003           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
44004           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
44005           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
44006           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
44007   140   CONTINUE
44008         IF(IMSS(8).EQ.1) THEN
44009           RMSS(13)=RMSS(6)
44010           RMSS(14)=RMSS(7)
44011         ENDIF
44012  
44013 C...Alternatively derive masses from SUGRA relations.
44014       ELSEIF(IMSSM.EQ.2) THEN
44015         RMSS(36)=RMSS(16)
44016         CALL PYAPPS
44017 C...Or use ISASUSY
44018       ELSEIF(IMSSM.EQ.12.OR.IMSSM.EQ.13) THEN
44019         RMSS(36)=RMSS(16)
44020         CALL PYSUGI
44021         ALFA=RMSS(18)
44022         GOTO 170
44023       ELSE
44024         GOTO 170
44025       ENDIF
44026  
44027 C...Add in extra D-term contributions.
44028       IF(IMSS(7).EQ.1) THEN
44029         R=0.43D0
44030         DX=RMSS(23)
44031         DY=RMSS(24)
44032         DS=RMSS(25)
44033         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44034         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
44035         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
44036         WRITE(MSTU(11),*) 'C   DX = ',DX
44037         WRITE(MSTU(11),*) 'C   DY = ',DY
44038         WRITE(MSTU(11),*) 'C   DS = ',DS
44039         WRITE(MSTU(11),*) 'C                                      '
44040         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
44041         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
44042         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44043         DQ2=DY/6D0-DX/3D0-DS/3D0
44044         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
44045         DD2=DY/3D0+DX-2D0*DS/3D0
44046         DL2=-DY/2D0+DX-2D0*DS/3D0
44047         DE2=DY-DX/3D0-DS/3D0
44048         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
44049         DHD2=-DY/2D0-2D0*DX/3D0+DS
44050         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
44051      &  /ABS(COS2B)
44052         DMA2 = 2D0*DMU2+DHU2+DHD2
44053         DO 150 I=1,5,2
44054           KC=PYCOMP(KSUSY1+I)
44055           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44056           KC=PYCOMP(KSUSY2+I)
44057           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
44058           KC=PYCOMP(KSUSY1+I+1)
44059           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44060           KC=PYCOMP(KSUSY2+I+1)
44061           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
44062   150   CONTINUE
44063         DO 160 I=11,15,2
44064           KC=PYCOMP(KSUSY1+I)
44065           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44066           KC=PYCOMP(KSUSY2+I)
44067           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
44068           KC=PYCOMP(KSUSY1+I+1)
44069           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44070   160   CONTINUE
44071         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
44072           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
44073           CALL PYSTOP(104)
44074         ENDIF
44075         SGNMU=SIGN(1D0,RMSS(4))
44076         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
44077         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
44078         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
44079         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
44080         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
44081         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
44082         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
44083         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
44084         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
44085         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
44086         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
44087         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
44088           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
44089           CALL PYSTOP(104)
44090         ENDIF
44091         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
44092         RMSS(6)=SQRT(RMSS(6)**2+DL2)
44093         RMSS(7)=SQRT(RMSS(7)**2+DE2)
44094         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
44095         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
44096         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
44097         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
44098         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
44099       ENDIF
44100  
44101 C...Fix the third generation sfermions.
44102       CALL PYTHRG
44103  
44104 C...Fix the neutralino--chargino--gluino sector.
44105       CALL PYINOM
44106  
44107 C...Fix the Higgs sector.
44108       CALL PYHGGM(ALFA)
44109  
44110 C...Choose the Gunion-Haber convention.
44111       ALFA=-ALFA
44112       RMSS(18)=ALFA
44113  
44114 C...Print information on mass parameters.
44115       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
44116         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44117         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
44118         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
44119         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
44120         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
44121         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
44122         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
44123         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
44124         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
44125         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44126       ENDIF
44127       IF(IMSS(20).EQ.1) THEN
44128         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44129         WRITE(MSTU(11),*) ' DEBUG MODE '
44130         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
44131      &  UMIX(2,1),UMIX(2,2)
44132         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
44133      &  UMIXI(2,1),UMIXI(2,2)
44134         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
44135      &  VMIX(2,1),VMIX(2,2)
44136         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
44137      &  VMIXI(2,1),VMIXI(2,2)
44138         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
44139         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
44140         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
44141         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
44142         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
44143         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
44144         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
44145         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
44146         WRITE(MSTU(11),*) ' ALFA = ',ALFA
44147         WRITE(MSTU(11),*) ' BETA = ',BETA
44148         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
44149         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
44150         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44151       ENDIF
44152  
44153 C...Set up the Higgs couplings - needed here since initialization
44154 C...in PYINRE did not yet occur when PYWIDT is called below.
44155   170 AL=ALFA
44156       BE=BETA
44157       SINA=SIN(AL)
44158       COSA=COS(AL)
44159       COSB=COS(BE)
44160       SINB=TANB*COSB
44161       SBMA=SIN(BE-AL)
44162       SAPB=SIN(AL+BE)
44163       CAPB=COS(AL+BE)
44164       CBMA=COS(BE-AL)
44165       C2A=COS(2D0*AL)
44166       C2B=COSB**2-SINB**2
44167 C...tanb (used for H+)
44168       PARU(141)=TANB
44169  
44170 C...Firstly: h
44171 C...Coupling to d-type quarks
44172       PARU(161)=SINA/COSB
44173 C...Coupling to u-type quarks
44174       PARU(162)=-COSA/SINB
44175 C...Coupling to leptons
44176       PARU(163)=PARU(161)
44177 C...Coupling to Z
44178       PARU(164)=SBMA
44179 C...Coupling to W
44180       PARU(165)=PARU(164)
44181  
44182 C...Secondly: H
44183 C...Coupling to d-type quarks
44184       PARU(171)=-COSA/COSB
44185 C...Coupling to u-type quarks
44186       PARU(172)=-SINA/SINB
44187 C...Coupling to leptons
44188       PARU(173)=PARU(171)
44189 C...Coupling to Z
44190       PARU(174)=CBMA
44191 C...Coupling to W
44192       PARU(175)=PARU(174)
44193 C...Coupling to h
44194       IF(IMSS(4).GE.2) THEN
44195         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
44196       ELSE
44197         HHH(3)=HHH(3)+HHH(4)+HHH(5)
44198         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
44199      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
44200      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
44201      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
44202       ENDIF
44203 C...Coupling to H+
44204 C...Define later
44205       IF(IMSS(4).GE.2) THEN
44206         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
44207       ELSE
44208         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
44209      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
44210      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
44211      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
44212       ENDIF
44213 C...Coupling to A
44214       IF(IMSS(4).GE.2) THEN
44215         PARU(177)=COS(2D0*BE)*COS(BE+AL)
44216       ELSE
44217         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
44218      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
44219      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
44220      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
44221       ENDIF
44222 C...Coupling to H+
44223       IF(IMSS(4).GE.2) THEN
44224         PARU(178)=PARU(177)
44225       ELSE
44226         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
44227       ENDIF
44228 C...Thirdly, A
44229 C...Coupling to d-type quarks
44230       PARU(181)=TANB
44231 C...Coupling to u-type quarks
44232       PARU(182)=1D0/PARU(181)
44233 C...Coupling to leptons
44234       PARU(183)=PARU(181)
44235       PARU(184)=0D0
44236       PARU(185)=0D0
44237 C...Coupling to Z h
44238       PARU(186)=COS(BE-AL)
44239 C...Coupling to Z H
44240       PARU(187)=SIN(BE-AL)
44241       PARU(188)=0D0
44242       PARU(189)=0D0
44243       PARU(190)=0D0
44244  
44245 C...Finally: H+
44246 C...Coupling to W h
44247       PARU(195)=COS(BE-AL)
44248  
44249 C...Tell that all Higgs couplings have been set.
44250       MSTP(4)=1
44251  
44252 C...Set R-Violating couplings.
44253 C...Set lambda couplings to common value or "natural values".
44254       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
44255         VIR3=1D0/(126D0)**3
44256         DO 200 IRK=1,3
44257           DO 190 IRI=1,3
44258             DO 180 IRJ=1,3
44259               IF (IRI.NE.IRJ) THEN
44260                 IF (IRI.LT.IRJ) THEN
44261                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
44262                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
44263      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
44264      &              PMAS(9+2*IRK,1)*VIR3)
44265                 ELSE
44266                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
44267                 ENDIF
44268               ELSE
44269                 RVLAM(IRI,IRJ,IRK)=0D0
44270               ENDIF
44271   180       CONTINUE
44272   190     CONTINUE
44273   200   CONTINUE
44274       ENDIF
44275 C...Set lambda' couplings to common value or "natural values".
44276       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
44277         VIR3=1D0/(126D0)**3
44278         DO 230 IRI=1,3
44279           DO 220 IRJ=1,3
44280             DO 210 IRK=1,3
44281               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
44282               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
44283      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
44284      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
44285   210       CONTINUE
44286   220     CONTINUE
44287   230   CONTINUE
44288       ENDIF
44289 C...Set lambda'' couplings to common value or "natural values".
44290       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
44291         VIR3=1D0/(126D0)**3
44292         DO 260 IRI=1,3
44293           DO 250 IRJ=1,3
44294             DO 240 IRK=1,3
44295               IF (IRJ.NE.IRK) THEN
44296                 IF (IRJ.LT.IRK) THEN
44297                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
44298                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
44299      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
44300      &              PMAS(2*IRK-1,1)*VIR3)
44301                 ELSE
44302                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
44303                 ENDIF
44304               ELSE
44305                 RVLAMB(IRI,IRJ,IRK) = 0D0
44306               ENDIF
44307   240       CONTINUE
44308   250     CONTINUE
44309   260   CONTINUE
44310       ENDIF
44311  
44312 C...Antisymmetrize couplings set by user
44313       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
44314         DO 290 IRI=1,3
44315           DO 280 IRJ=1,3
44316             DO 270 IRK=1,3
44317               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
44318                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
44319                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
44320               ENDIF
44321               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
44322                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
44323                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
44324               ENDIF
44325   270       CONTINUE
44326   280     CONTINUE
44327   290   CONTINUE
44328       ENDIF
44329  
44330 C...Write spectrum to SLHA file
44331       IF (IMSS(23).NE.0) THEN
44332         IFAIL=0
44333         CALL PYSLHA(3,0,IFAIL)
44334       ENDIF
44335  
44336 C...Second part of routine: set decay modes and branching ratios.
44337  
44338 C...Allow chi10 -> gravitino + gamma or not.
44339       KC=PYCOMP(KSUSY1+39)
44340       IF( IMSS(11) .NE. 0 ) THEN
44341         PMAS(KC,1)=RMSS(21)/1D9
44342         PMAS(KC,2)=0D0
44343         IRPRTY=0
44344         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
44345       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
44346         IRPRTY=0
44347         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
44348      &       ' ALLOWING SUSY LLE DECAYS'
44349         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
44350      &       ' ALLOWING SUSY LQD DECAYS'
44351         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
44352      &       ' ALLOWING SUSY UDD DECAYS'
44353         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
44354      &   ' --- Warning: R-Violating couplings possibly',
44355      &       ' incompatible with proton decay'
44356       ELSE
44357         PMAS(KC,1)=9999D0
44358         IRPRTY=1
44359       ENDIF
44360  
44361 C...Loop over sparticle and Higgs species.
44362       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
44363 C...Find the LSP or NLSP for a gravitino LSP
44364       ILSP=0
44365       PMLSP=1D20
44366       DO 300 I=1,36
44367         KF=KFSUSY(I)
44368         IF(KF.EQ.1000039) GOTO 300
44369         KC=PYCOMP(KF)
44370         IF(PMAS(KC,1).LT.PMLSP) THEN
44371           ILSP=I
44372           PMLSP=PMAS(KC,1)
44373         ENDIF
44374   300 CONTINUE
44375       DO 370 I=1,50
44376         IF (I.GT.39.AND.IMSS(13).NE.1) GOTO 370
44377         KF=KFSUSY(I)
44378         IF (KF.EQ.0) GOTO 370
44379         KC=PYCOMP(KF)
44380         LKNT=0
44381  
44382 C...Check if there are any decays listed for this sparticle
44383 C...in a file
44384         IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) THEN
44385           IFAIL=0
44386           CALL PYSLHA(2,KF,IFAIL)
44387           IF (IFAIL.EQ.0.OR.KF.EQ.6.OR.KF.EQ.24) GOTO 370
44388         ELSEIF (I.GE.37) THEN
44389           GOTO 370
44390         ENDIF
44391  
44392 C...Sfermion decays.
44393         IF(I.LE.24) THEN
44394 C...First check to see if sneutrino is lighter than chi10.
44395           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
44396      &    PMAS(KC,1).LT.PMCHI1) THEN
44397           ELSE
44398             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
44399           ENDIF
44400  
44401 C...Gluino decays.
44402         ELSEIF(I.EQ.25) THEN
44403           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
44404           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
44405  
44406 C...Neutralino decays.
44407         ELSEIF(I.GE.26.AND.I.LE.29) THEN
44408           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
44409 C...chi10 stable or chi10 -> gravitino + gamma.
44410           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
44411             PMAS(KC,2)=1D-6
44412             MDCY(KC,1)=0
44413             MWID(KC)=0
44414           ENDIF
44415  
44416 C...Chargino decays.
44417         ELSEIF(I.GE.30.AND.I.LE.31) THEN
44418           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
44419  
44420 C...Gravitino is stable.
44421         ELSEIF(I.EQ.32) THEN
44422           MDCY(KC,1)=0
44423           MWID(KC)=0
44424  
44425 C...Higgs decays.
44426         ELSEIF(I.GE.33.AND.I.LE.36) THEN
44427 C...Calculate decays to non-SUSY particles.
44428           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
44429           LKNT=0
44430           DO 310 I1=0,100
44431             XLAM(I1)=0D0
44432   310     CONTINUE
44433           DO 330 I1=1,MDCY(KC,3)
44434             K1=MDCY(KC,2)+I1-1
44435             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
44436      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
44437             XLAM(I1)=WDTP(I1)
44438             XLAM(0)=XLAM(0)+XLAM(I1)
44439             DO 320 J1=1,3
44440               IDLAM(I1,J1)=KFDP(K1,J1)
44441   320       CONTINUE
44442             LKNT=LKNT+1
44443   330     CONTINUE
44444 C...Add the decays to SUSY particles.
44445           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
44446         ENDIF
44447 C...Zero the branching ratios for use in loop mode
44448 C...thanks to K. Matchev (FNAL)
44449         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
44450           BRAT(IDC)=0D0
44451   340   CONTINUE
44452  
44453 C...Set stable particles.
44454         IF(LKNT.EQ.0) THEN
44455           MDCY(KC,1)=0
44456           MWID(KC)=0
44457           PMAS(KC,2)=1D-6
44458           PMAS(KC,3)=1D-5
44459           PMAS(KC,4)=0D0
44460  
44461 C...Store branching ratios in the standard tables.
44462         ELSE
44463           IDC=MDCY(KC,2)+MDCY(KC,3)-1
44464           DELM=1D6
44465           DO 360 IL=1,LKNT
44466             IDCSV=IDC
44467   350       IDC=IDC+1
44468             BRAT(IDC)=0D0
44469             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
44470             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
44471      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
44472               BRAT(IDC)=XLAM(IL)/XLAM(0)
44473               XMDIF=PMAS(KC,1)
44474               IF(MDME(IDC,1).GE.1) THEN
44475                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
44476      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
44477                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
44478      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
44479               ENDIF
44480               IF(I.LE.32) THEN
44481                 IF(XMDIF.GE.0D0) THEN
44482                   DELM=MIN(DELM,XMDIF)
44483                 ELSE
44484                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
44485                   WRITE(MSTU(11),*) ' KF = ',KF
44486                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
44487                 ENDIF
44488               ENDIF
44489               GOTO 360
44490             ELSEIF(IDC.EQ.IDCSV) THEN
44491               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
44492      &        'channel not recognized:'
44493               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(IL,J),J=1,3)
44494               GOTO 360
44495             ELSE
44496               GOTO 350
44497             ENDIF
44498   360     CONTINUE
44499  
44500 C...Store width, cutoff and lifetime.
44501           PMAS(KC,2)=XLAM(0)
44502           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
44503             PMAS(KC,3)=PMAS(KC,2)*10D0
44504           ELSE
44505             PMAS(KC,3)=0.95D0*DELM
44506           ENDIF
44507           IF(PMAS(KC,2).NE.0D0) THEN
44508             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
44509           ENDIF
44510 C...Write decays to SLHA file
44511           IF (IMSS(24).NE.0) THEN
44512             IFAIL=0
44513             CALL PYSLHA(4,KF,IFAIL)
44514           ENDIF
44515  
44516         ENDIF
44517   370 CONTINUE
44518  
44519       RETURN
44520       END
44521 C*********************************************************************
44522  
44523 C...PYSLHA
44524 C...Read/write spectrum or decay data from SLHA standard file(s).
44525 C...P. Skands
44526  
44527 C...MUPDA=0 : READ QNUMBERS/PARTICLE ON LUN=IMSS(21)
44528 C...MUPDA=1 : READ SLHA SPECTRUM ON LUN=IMSS(21)
44529 C...MUPDA=2 : LOOK FOR DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(22)
44530 C...          (KFORIG=0 : read all decay tables)
44531 C...MUPDA=3 : WRITE SPECTRUM ON LUN=IMSS(23)
44532 C...(MUPDA=4 : WRITE DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(24))
44533 C...MUPDA=5 : READ MASS FOR KF=KFORIG ONLY
44534 C...          (KFORIG=0 : read all MASS entries)
44535  
44536 C...Recent updates:
44537 C...17 Sep 2007: introduced /PYQNUM/ for QNUMBERS storage
44538 C...           : Corrected QNUMBERS name-formation; root only until space
44539       SUBROUTINE PYSLHA(MUPDA,KFORIG,IRETRN)
44540  
44541 C...Double precision and integer declarations.
44542       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44543       IMPLICIT INTEGER(I-N)
44544       INTEGER PYK,PYCHGE,PYCOMP
44545       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
44546      &KEXCIT=4000000,KDIMEN=5000000)
44547 C...Commonblocks.
44548       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44549       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44550       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
44551       COMMON/PYDAT4/CHAF(500,2)
44552       CHARACTER CHAF*16
44553       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
44554       CHARACTER*40 ISAVER,VISAJE
44555       COMMON/PYINT4/MWID(500),WIDS(500,5)
44556       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/
44557 C...SUSY blocks
44558       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44559       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
44560      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
44561       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
44562       SAVE /PYMSSM/,/PYSSMT/,/PYMSRV/
44563  
44564 C...Local arrays, character variables and data.
44565       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
44566      &     AU(3,3),AD(3,3),AE(3,3)
44567       COMMON/PYLH3C/CPRO(2),CVER(2)
44568 C...The common block of new states (QNUMBERS / PARTICLE)
44569       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
44570 C...- NQNUM : Number of QNUMBERS blocks that have been read in
44571 C...- KQNUM(I,0) : KF of new state
44572 C...- KQNUM(I,1) : 3 times electric charge
44573 C...- KQNUM(I,2) : Number of spin states: (2S + 1)
44574 C...- KQNUM(I,3) : Colour rep  (1: singlet, 3: triplet, 8: octet)
44575 C...- KQNUM(I,4) : Particle/Antiparticle distinction (0=own anti)
44576 C...- KQNUM(I,5:9) : space available for further quantum numbers
44577       DIMENSION MMOD(100),MSPC(100),KFDEC(100)
44578       SAVE /PYLH3P/,/PYLH3C/,/PYQNUM/,MMOD,MSPC,KFDEC
44579 C...MMOD: flags to set for each block read in.
44580 C... 1: MODSEL     2: MINPAR     3: EXTPAR     4: SMINPUTS
44581 C...MSPC: Flags to set for each block read in.
44582 C... 1: MASS       2: NMIX       3: UMIX       4: VMIX       5: SBOTMIX
44583 C... 6: STOPMIX    7: STAUMIX    8: HMIX       9: GAUGE     10: AU
44584 C...11: AD        12: AE        13: YU        14: YD        15: YE
44585 C...16: SPINFO    17: ALPHA     18: MSOFT     19: QNUMBERS
44586       CHARACTER CPRO*12,CVER*12,CHNLIN*6
44587       CHARACTER DOC*11, CHDUM*120, CHBLCK*60
44588       CHARACTER CHINL*120,CHKF*9,CHTMP*16
44589       INTEGER VERBOS
44590       SAVE VERBOS
44591 C...Date of last Change
44592       PARAMETER (DOC='05 Nov 2007')
44593 C...Local arrays and initial values
44594       DIMENSION IDC(5),KFSUSY(50)
44595       SAVE KFSUSY
44596       DATA NQNUM /0/
44597       DATA NDECAY /0/
44598       DATA VERBOS /1/
44599       DATA NHELLO /0/
44600       DATA MLHEF /0/
44601       DATA MLHEFD /0/
44602       DATA KFSUSY/
44603      &1000001,1000002,1000003,1000004,1000005,1000006,
44604      &2000001,2000002,2000003,2000004,2000005,2000006,
44605      &1000011,1000012,1000013,1000014,1000015,1000016,
44606      &2000011,2000012,2000013,2000014,2000015,2000016,
44607      &1000021,1000022,1000023,1000025,1000035,1000024,
44608      &1000037,1000039,     25,     35,     36,     37,
44609      &      6,     24,     45,     46,1000045, 9*0/
44610       DATA KFDEC/100*0/
44611       RMFUN(IP)=PMAS(PYCOMP(IP),1)
44612  
44613 C...Shorthand for spectrum and decay table unit numbers
44614       IMSS21=IMSS(21)
44615       IMSS22=IMSS(22)
44616  
44617 C...Default for LHEF input: read header information
44618       IF (IMSS21.EQ.0.AND.MSTP(161).NE.0) IMSS21=MSTP(161)
44619       IF (IMSS22.EQ.0.AND.MSTP(161).NE.0) IMSS22=MSTP(161)
44620       IF (IMSS21.EQ.MSTP(161)) MLHEF=1
44621       IF (IMSS22.EQ.MSTP(161)) MLHEFD=1
44622  
44623 C...Hello World
44624       IF (NHELLO.EQ.0) THEN
44625         IF ((MLHEF.NE.1.AND.MLHEFD.NE.1).OR.(IMSS(1).NE.0)) THEN
44626           WRITE(MSTU(11),5000) DOC
44627           NHELLO=1
44628         ENDIF
44629       ENDIF
44630  
44631 C...SLHA file assumed opened by user on unit LFN, stored in IMSS(20
44632 C...+MUPDA).
44633       LFN=IMSS21
44634       IF (MUPDA.EQ.2) LFN=IMSS22
44635       IF (MUPDA.EQ.3) LFN=IMSS(23)
44636       IF (MUPDA.EQ.4) LFN=IMSS(24)
44637 C...Flag that we have not yet found whatever we were asked to find.
44638       IRETRN=1
44639  
44640 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
44641       IF (LFN.EQ.0) THEN
44642         WRITE(MSTU(11),*) '* (PYSLHA:) No valid unit given in IMSS'
44643         GOTO 9999
44644       ENDIF
44645  
44646 C...If reading LHEF header, start by rewinding file
44647       IF (MLHEF.EQ.1.OR.MLHEFD.EQ.1) REWIND(LFN)
44648  
44649 C...If told to read spectrum, first zero all previous information.
44650       IF (MUPDA.EQ.1) THEN
44651 C...Zero all block read flags
44652         DO 100 M=1,100
44653           MMOD(M)=0
44654           MSPC(M)=0
44655   100   CONTINUE
44656 C...Zero all (MSSM) masses, widths, and lifetimes in PYTHIA
44657         DO 110 ISUSY=1,36
44658           KC=PYCOMP(KFSUSY(ISUSY))
44659           PMAS(KC,1)=0D0
44660   110   CONTINUE
44661 C...Zero all (3rd gen sfermion + gaugino/higgsino) mixing matrices.
44662         DO 130 J=1,4
44663           SFMIX(5,J) =0D0
44664           SFMIX(6,J) =0D0
44665           SFMIX(15,J)=0D0
44666           DO 120 L=1,4
44667             ZMIX(L,J) =0D0
44668             ZMIXI(L,J)=0D0
44669             IF (J.LE.2.AND.L.LE.2) THEN
44670               UMIX(L,J) =0D0
44671               UMIXI(L,J)=0D0
44672               VMIX(L,J) =0D0
44673               VMIXI(L,J)=0D0
44674             ENDIF
44675   120     CONTINUE
44676 C...Zero signed masses.
44677           SMZ(J)=0D0
44678           IF (J.LE.2) SMW(J)=0D0
44679   130   CONTINUE
44680  
44681 C...If reading decays, reset PYTHIA decay counters.
44682       ELSEIF (MUPDA.EQ.2) THEN
44683 C...Check if DECAY for this KF already read
44684         IF (KFORIG.NE.0) THEN
44685           DO 140 IDEC=1,NDECAY
44686             IF (KFORIG.EQ.KFDEC(IDEC)) THEN
44687               IRETRN=0
44688               RETURN
44689             ENDIF
44690   140     CONTINUE
44691         ENDIF
44692         KCC=100
44693         NDC=0
44694         BRSUM=0D0
44695         DO 150 KC=1,MSTU(6)
44696           IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
44697           NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
44698   150   CONTINUE
44699       ELSEIF (MUPDA.EQ.5) THEN
44700 C...Zero block read flags
44701         DO 160 M=1,100
44702           MSPC(M)=0
44703   160   CONTINUE
44704       ENDIF
44705  
44706 C............READ
44707 C...(QNUMBERS, spectrum, or decays of KF=KFORIG or MASS of KF=KFORIG)
44708       IF(MUPDA.EQ.0.OR.MUPDA.EQ.1.OR.MUPDA.EQ.2.OR.MUPDA.EQ.5) THEN
44709 C...Initialize program and version strings
44710         IF(MUPDA.EQ.1.OR.MUPDA.EQ.2) THEN
44711         CPRO(MUPDA)=' '
44712         CVER(MUPDA)=' '
44713         ENDIF
44714  
44715 C...Initialize read loop
44716         MERR=0
44717         NLINE=0
44718         CHBLCK=' '
44719 C...READ NEW LINE INTO CHINL. GOTO 300 AT END-OF-FILE.
44720   170   CHINL=' '
44721         READ(LFN,'(A120)',END=400) CHINL
44722 C...Count which line number we're at.
44723         NLINE=NLINE+1
44724         WRITE(CHNLIN,'(I6)') NLINE
44725  
44726 C...Skip comment and empty lines without processing.
44727         IF (CHINL(1:1).EQ.'#'.OR.CHINL.EQ.' ') GOTO 170
44728  
44729 C...We assume all upper case below. Rewrite CHINL to all upper case.
44730         INL=0
44731         IGOOD=0
44732   180   INL=INL+1
44733         IF (CHINL(INL:INL).NE.'#') THEN
44734           DO 190 ICH=97,122
44735             IF (CHAR(ICH).EQ.CHINL(INL:INL)) CHINL(INL:INL)=CHAR(ICH-32)
44736   190     CONTINUE
44737 C...Extra safety. Chek for sensible input on line
44738           IF (IGOOD.EQ.0) THEN
44739             DO 200 ICH=48,90
44740               IF (CHAR(ICH).EQ.CHINL(INL:INL)) IGOOD=1
44741   200       CONTINUE
44742           ENDIF
44743           IF (INL.LT.120) GOTO 180
44744         ENDIF
44745         IF (IGOOD.EQ.0) GOTO 170
44746  
44747 C...Exit when first <event> tag reached in LHEF file
44748         DO 210 I1=1,10
44749           IF (CHINL(I1:I1+5).EQ.'<EVENT') THEN
44750             REWIND(LFN)
44751             GOTO 400
44752           ENDIF
44753   210   CONTINUE
44754  
44755 C...Check for BLOCK begin statement (spectrum).
44756         IF (CHINL(1:5).EQ.'BLOCK') THEN
44757           MERR=0
44758           READ(CHINL,'(A6,A)',ERR=580) CHDUM,CHBLCK
44759 C...Check if another of this type of block was already read.
44760 C...(logarithmic interpolation not yet implemented, so duplicates always
44761 C...give errors)
44762           IF (CHBLCK(1:6).EQ.'MODSEL'.AND.MMOD(1).NE.0) MERR=7
44763           IF (CHBLCK(1:6).EQ.'MINPAR'.AND.MMOD(2).NE.0) MERR=7
44764           IF (CHBLCK(1:6).EQ.'EXTPAR'.AND.MMOD(3).NE.0) MERR=7
44765           IF (CHBLCK(1:8).EQ.'SMINPUTS'.AND.MMOD(4).NE.0) MERR=7
44766           IF (CHBLCK(1:4).EQ.'MASS'.AND.MSPC(1).NE.0) MERR=7
44767           IF (CHBLCK(1:4).EQ.'NMIX'.AND.MSPC(2).NE.0) MERR=7
44768           IF (CHBLCK(1:4).EQ.'UMIX'.AND.MSPC(3).NE.0) MERR=7
44769           IF (CHBLCK(1:4).EQ.'VMIX'.AND.MSPC(4).NE.0) MERR=7
44770           IF (CHBLCK(1:7).EQ.'SBOTMIX'.AND.MSPC(5).NE.0) MERR=7
44771           IF (CHBLCK(1:7).EQ.'STOPMIX'.AND.MSPC(6).NE.0) MERR=7
44772           IF (CHBLCK(1:7).EQ.'STAUMIX'.AND.MSPC(7).NE.0) MERR=7
44773           IF (CHBLCK(1:4).EQ.'HMIX'.AND.MSPC(8).NE.0) MERR=7
44774           IF (CHBLCK(1:5).EQ.'ALPHA'.AND.MSPC(17).NE.0) MERR=7
44775           IF (CHBLCK(1:5).EQ.'AU'.AND.MSPC(10).NE.0) MERR=7
44776           IF (CHBLCK(1:5).EQ.'AD'.AND.MSPC(11).NE.0) MERR=7
44777           IF (CHBLCK(1:5).EQ.'AE'.AND.MSPC(12).NE.0) MERR=7
44778           IF (CHBLCK(1:5).EQ.'MSOFT'.AND.MSPC(18).NE.0) MERR=7
44779 C...Check for new particles
44780           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
44781      &        THEN
44782             MSPC(19)=MSPC(19)+1
44783 C...Read PDG code
44784             READ(CHBLCK(9:60),*) KFQ
44785  
44786             DO 220 MQ=1,NQNUM
44787               IF (KQNUM(MQ,0).EQ.KFQ) THEN
44788                 MERR=17
44789                 GOTO 380
44790               ENDIF
44791   220       CONTINUE
44792             IF (NHELLO.EQ.0) THEN
44793               WRITE(MSTU(11),5000) DOC
44794               NHELLO=1
44795             ENDIF
44796             WRITE(MSTU(11),'(A,I9,A,F12.3)')
44797      &           ' * (PYSLHA:) Reading in '//CHBLCK(1:8)//
44798      &           ' for KF =',KFQ
44799             NQNUM=NQNUM+1
44800             KQNUM(NQNUM,0)=KFQ
44801             MSPC(19)=MSPC(19)+1
44802             KCQ=PYCOMP(KFQ)
44803 C...Only read in new codes (also OK to overwrite if KF > 3000000)
44804             IF (KCQ.EQ.0.OR.IABS(KFQ).GE.3000000) THEN
44805               IF (KCQ.EQ.0) THEN
44806                 DO 230 KCT=100,MSTU(6)
44807                   IF(KCHG(KCT,4).GT.100) KCQ=KCT
44808   230           CONTINUE
44809                 KCQ=KCQ+1
44810               ENDIF
44811               KCC=KCQ
44812               KCHG(KCQ,4)=KFQ
44813 C...First write PDG code as name
44814               WRITE(CHTMP,*) KFQ
44815               WRITE(CHTMP,'(A)') CHTMP(2:10)
44816 C...Then look for real name
44817               IBEG=9
44818   240         IBEG=IBEG+1
44819               IF (CHBLCK(IBEG:IBEG).NE.'#'.AND.IBEG.LT.59) GOTO 240
44820   250         IBEG=IBEG+1
44821               IF (CHBLCK(IBEG:IBEG).EQ.' '.AND.IBEG.LT.59) GOTO 250
44822               IEND=IBEG-1
44823   260         IEND=IEND+1
44824               IF (CHBLCK(IEND+1:IEND+1).NE.' '.AND.IEND.LT.59) GOTO 260
44825               IF (IEND.LT.59) THEN
44826                 READ(CHBLCK(IBEG:IEND),'(A)',ERR=270) CHDUM
44827                 IF (CHDUM.NE.' ') CHTMP=CHDUM
44828               ENDIF
44829   270         READ(CHTMP,'(A)') CHAF(KCQ,1)
44830               MSTU(20)=0
44831 C...Set stable for now
44832               PMAS(KCQ,2)=1D-6
44833               MWID(KCQ)=0
44834               MDCY(KCQ,1)=0
44835               MDCY(KCQ,2)=0
44836               MDCY(KCQ,3)=0
44837             ELSE
44838               WRITE(MSTU(11),*)
44839      &           '* (PYSLHA:) KF =',KFQ,' already exists: ',
44840      &             CHAF(KCQ,1), '. Entry ignored.'
44841               MERR=7
44842             ENDIF
44843           ENDIF
44844 C...Finalize this line and read next.
44845           GOTO 380
44846 C...Check for DECAY begin statement (decays).
44847         ELSEIF (CHINL(1:3).EQ.'DEC') THEN
44848           MERR=0
44849           BRSUM=0D0
44850           CHBLCK='DECAY'
44851 C...Read KF code and WIDTH
44852           MPSIGN=1
44853           READ(CHINL(7:INL),*,ERR=590) KF, WIDTH
44854           IF (KF.LE.0) THEN
44855             KF=-KF
44856             MPSIGN=-1
44857           ENDIF
44858 C...If this is not the KF we're looking for...
44859           IF ((KFORIG.NE.0.AND.KF.NE.KFORIG).OR.MUPDA.NE.2) THEN
44860 C...Set block skip flag and read next line.
44861             MERR=16
44862             GOTO 380
44863           ELSE
44864 C...Check whether decay table for this particle already read in
44865             DO 280 IDECAY=1,NDECAY
44866               IF (KFDEC(IDECAY).EQ.KF) THEN
44867                 MERR=16
44868                 GOTO 380
44869               ENDIF
44870   280       CONTINUE
44871           ENDIF
44872  
44873 C...Determine PYTHIA KC code of particle
44874           KCREP=0
44875           IF(KF.LE.100) THEN
44876             KCREP=KF
44877           ELSE
44878             DO 290 KCR=101,KCC
44879               IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
44880   290       CONTINUE
44881           ENDIF
44882           KC=KCREP
44883           IF (KCREP.NE.0) THEN
44884 C...Particle is already known. Don't do anything yet.
44885           ELSE
44886 C...  Add new particle. Actually, this should not happen.
44887 C...  New particles should be added already when reading the spectrum
44888 C...  information, so go under previously stable category.
44889             KCC=KCC+1
44890             KC=KCC
44891           ENDIF
44892  
44893           IF (WIDTH.LE.0D0) THEN
44894 C...Stable (i.e. LSP)
44895             WRITE(MSTU(11),*)
44896      &           '* (PYSLHA:) Reading in SLHA stable particle ',
44897      &              'KF =',KF,': ',CHAF(KCREP,1)(1:16)
44898             IF (WIDTH.LT.0D0) THEN
44899               CALL PYERRM(19,'(PYSLHA:) Negative width forced to'//
44900      &             ' zero !')
44901               WIDTH=0D0
44902             ENDIF
44903             PMAS(KC,2)=1D-6
44904             MWID(KC)=0
44905             MDCY(KC,1)=0
44906 C...Ignore any decay lines that may be present for this KF
44907             MERR=16
44908             MDCY(KC,2)=0
44909             MDCY(KC,3)=0
44910 C...Return ok
44911             IRETRN=0
44912           ENDIF
44913 C...Finalize and start reading in decay modes.
44914           GOTO 380
44915         ELSEIF (MOD(MERR,10).GE.6) THEN
44916 C...If ignore block flag set, skip directly to next line.
44917           GOTO 170
44918         ENDIF
44919  
44920 C...READ SPECTRUM
44921         IF (MUPDA.EQ.0.AND.MERR.EQ.0) THEN
44922           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
44923      &        THEN
44924             READ(CHINL,*) INDX, IVAL
44925             IF (INDX.GE.1.AND.INDX.LE.9) KQNUM(NQNUM,INDX)=IVAL
44926             IF (INDX.EQ.1) KCHG(KCQ,1)=IVAL
44927             IF (INDX.EQ.3) KCHG(KCQ,2)=0
44928             IF (INDX.EQ.3.AND.IVAL.EQ.3) KCHG(KCQ,2)=1
44929             IF (INDX.EQ.3.AND.IVAL.EQ.-3) KCHG(KCQ,2)=-1
44930             IF (INDX.EQ.3.AND.IVAL.EQ.8) KCHG(KCQ,2)=2
44931             IF (INDX.EQ.4) THEN
44932               KCHG(KCQ,3)=IVAL
44933               IF (IVAL.EQ.1) THEN
44934                 CHTMP=CHAF(KCQ,1)
44935                 IF (CHTMP.EQ.' ') THEN
44936                   WRITE(CHAF(KCQ,1),*) KCHG(KCQ,4)
44937                   WRITE(CHAF(KCQ,2),*) -KCHG(KCQ,4)
44938                 ELSE
44939                   ILAST=17
44940   300             ILAST=ILAST-1
44941                   IF (CHTMP(ILAST:ILAST).EQ.' ') GOTO 300
44942                   IF (CHTMP(ILAST:ILAST).EQ.'+') THEN
44943                     CHTMP(ILAST:ILAST)='-'
44944                   ELSE
44945                     CHTMP(ILAST+1:MIN(16,ILAST+4))='bar'
44946                   ENDIF
44947                   CHAF(KCQ,2)=CHTMP
44948                 ENDIF
44949               ENDIF
44950             ENDIF
44951           ELSE
44952             MERR=8
44953           ENDIF
44954         ELSEIF ((MUPDA.EQ.1.OR.MUPDA.EQ.5).AND.MERR.EQ.0) THEN
44955 C...MASS: Mass spectrum
44956           IF (CHBLCK(1:4).EQ.'MASS') THEN
44957             READ(CHINL,*) KF, VAL
44958             MERR=1
44959             KC=0
44960             IF (MUPDA.EQ.1.OR.KF.EQ.KFORIG.OR.KFORIG.EQ.0) THEN
44961 C...Read in masses for anything
44962               MERR=0
44963               KC=PYCOMP(KF)
44964 C...Don't read in masses for the light quarks
44965               IF (IABS(KF).LE.3) THEN
44966                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
44967      &                 ' * (PYSLHA:) Ignoring MASS entry for KF =',
44968      &                 KF
44969                 MERR=1
44970               ENDIF
44971               IF (KC.NE.0) THEN
44972                 MSPC(1)=MSPC(1)+1
44973                 PMAS(KC,1) = ABS(VAL)
44974                 IF (MUPDA.EQ.5.AND.IMSS(1).EQ.0) THEN
44975                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
44976      &                 ' * (PYSLHA:) Reading in MASS entry for KF =',
44977      &                 KF, ', pole mass =', VAL
44978                   IRETRN=0
44979                 ENDIF
44980 C...  Signed masses
44981                 IF (KF.EQ.1000021.AND.MSPC(18).EQ.0) RMSS(3)=VAL
44982                 IF (KF.EQ.1000022) SMZ(1)=VAL
44983                 IF (KF.EQ.1000023) SMZ(2)=VAL
44984                 IF (KF.EQ.1000025) SMZ(3)=VAL
44985                 IF (KF.EQ.1000035) SMZ(4)=VAL
44986                 IF (KF.EQ.1000024) SMW(1)=VAL
44987                 IF (KF.EQ.1000037) SMW(2)=VAL
44988               ENDIF
44989             ELSEIF (MUPDA.EQ.5) THEN
44990               MERR=0
44991             ENDIF
44992 C...  MODSEL: Model selection and global switches
44993           ELSEIF (CHBLCK(1:6).EQ.'MODSEL') THEN
44994             READ(CHINL,*) INDX, IVAL
44995             IF (INDX.LE.200.AND.INDX.GT.0) THEN
44996               IF (IMSS(1).EQ.0) IMSS(1)=11
44997               MODSEL(INDX)=IVAL
44998               MMOD(1)=MMOD(1)+1
44999               IF (INDX.EQ.3.AND.IVAL.EQ.1.AND.PYCOMP(1000045).EQ.0) THEN
45000 C...  Switch on NMSSM
45001                 WRITE(MSTU(11),*) '* (PYSLHA:) switching on NMSSM'
45002                 IMSS(13)=MAX(1,IMSS(13))
45003 C...  Add NMSSM states if not already done
45004  
45005                 KFN=25
45006                 KCN=KFN
45007                 CHAF(KCN,1)='h_10'
45008                 CHAF(KCN,2)=' '
45009  
45010                 KFN=35
45011                 KCN=KFN
45012                 CHAF(KCN,1)='h_20'
45013                 CHAF(KCN,2)=' '
45014  
45015                 KFN=45
45016                 KCN=KFN
45017                 CHAF(KCN,1)='h_30'
45018                 CHAF(KCN,2)=' '
45019  
45020                 KFN=36
45021                 KCN=KFN
45022                 CHAF(KCN,1)='A_10'
45023                 CHAF(KCN,2)=' '
45024  
45025                 KFN=46
45026                 KCN=KFN
45027                 CHAF(KCN,1)='A_20'
45028                 CHAF(KCN,2)=' '
45029  
45030                 KFN=1000045
45031                 KCN=PYCOMP(KFN)
45032                 IF (KCN.EQ.0) THEN
45033                   DO 310 KCT=100,MSTU(6)
45034                     IF(KCHG(KCT,4).GT.100) KCN=KCT
45035   310             CONTINUE
45036                   KCN=KCN+1
45037                   KCHG(KCN,4)=KFN
45038                   MSTU(20)=0
45039                 ENDIF
45040 C...  Set stable for now
45041                 PMAS(KCN,2)=1D-6
45042                 MWID(KCN)=0
45043                 MDCY(KCN,1)=0
45044                 MDCY(KCN,2)=0
45045                 MDCY(KCN,3)=0
45046                 CHAF(KCN,1)='~chi_50'
45047                 CHAF(KCN,2)=' '
45048               ENDIF
45049             ELSE
45050               MERR=1
45051             ENDIF
45052           ELSEIF (MUPDA.EQ.5) THEN
45053 C...If MUPDA = 5, skip all except MASS, return if MODSEL
45054             MERR=8
45055           ELSEIF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.
45056      &          CHBLCK(1:8).EQ.'PARTICLE') THEN
45057 C...Don't print a warning for QNUMBERS when reading spectrum
45058             MERR=8
45059 C...MINPAR: Minimal model parameters
45060           ELSEIF (CHBLCK(1:6).EQ.'MINPAR') THEN
45061             READ(CHINL,*) INDX, VAL
45062             IF (INDX.LE.100.AND.INDX.GT.0) THEN
45063               PARMIN(INDX)=VAL
45064               MMOD(2)=MMOD(2)+1
45065             ELSE
45066               MERR=1
45067             ENDIF
45068             IF (MMOD(3).NE.0) THEN
45069               WRITE(MSTU(11),*)
45070      &             '* (PYSLHA:) MINPAR should come before EXTPAR !'
45071               MERR=1
45072             ENDIF
45073 C...tan(beta)
45074             IF (INDX.EQ.3) RMSS(5)=VAL
45075 C...EXTPAR: non-minimal model parameters.
45076           ELSEIF (CHBLCK(1:6).EQ.'EXTPAR') THEN
45077             IF (MMOD(1).NE.0) THEN
45078               READ(CHINL,*) INDX, VAL
45079               IF (INDX.LE.200.AND.INDX.GT.0) THEN
45080                 PAREXT(INDX)=VAL
45081                 MMOD(3)=MMOD(3)+1
45082               ELSE
45083                 MERR=1
45084               ENDIF
45085             ELSE
45086               WRITE(MSTU(11),*)
45087      &             '* (PYSLHA:) Reading EXTPAR, but no MODSEL !'
45088               MERR=1
45089             ENDIF
45090 C...tan(beta)
45091             IF (INDX.EQ.25) RMSS(5)=VAL
45092           ELSEIF (CHBLCK(1:8).EQ.'SMINPUTS') THEN
45093             READ(CHINL,*) INDX, VAL
45094             IF (INDX.LE.3.OR.INDX.EQ.5.OR.INDX.GE.7) THEN
45095               MERR=1
45096             ELSEIF (INDX.EQ.4) THEN
45097               PMAS(PYCOMP(23),1)=VAL
45098             ELSEIF (INDX.EQ.6) THEN
45099               PMAS(PYCOMP(6),1)=VAL
45100             ENDIF
45101           ELSEIF (CHBLCK(1:4).EQ.'NMIX'.OR.CHBLCK(1:4).EQ.'VMIX'.OR
45102      $           .CHBLCK(1:4).EQ.'UMIX'.OR.CHBLCK(1:7).EQ.'STOPMIX'.OR
45103      $           .CHBLCK(1:7).EQ.'SBOTMIX'.OR.CHBLCK(1:7).EQ.'STAUMIX')
45104      $           THEN
45105 C...NMIX,UMIX,VMIX,STOPMIX,SBOTMIX, and STAUMIX. Mixing.
45106             IM=0
45107             IF (CHBLCK(5:6).EQ.'IM') IM=1
45108   320       READ(CHINL,*) INDX1, INDX2, VAL
45109             IF (CHBLCK(1:1).EQ.'N'.AND.INDX1.LE.4.AND.INDX2.LE.4) THEN
45110               IF (IM.EQ.0) ZMIX(INDX1,INDX2) = VAL
45111               IF (IM.EQ.1) ZMIXI(INDX1,INDX2)= VAL
45112               MSPC(2)=MSPC(2)+1
45113             ELSEIF (CHBLCK(1:1).EQ.'U') THEN
45114               IF (IM.EQ.0) UMIX(INDX1,INDX2) = VAL
45115               IF (IM.EQ.1) UMIXI(INDX1,INDX2)= VAL
45116               MSPC(3)=MSPC(3)+1
45117             ELSEIF (CHBLCK(1:1).EQ.'V') THEN
45118               IF (IM.EQ.0) VMIX(INDX1,INDX2) = VAL
45119               IF (IM.EQ.1) VMIXI(INDX1,INDX2)= VAL
45120               MSPC(4)=MSPC(4)+1
45121             ELSEIF (CHBLCK(1:4).EQ.'STOP'.OR.CHBLCK(1:4).EQ.'SBOT'.OR
45122      $             .CHBLCK(1:4).EQ.'STAU') THEN
45123               IF (CHBLCK(1:4).EQ.'STOP') THEN
45124                 KFSM=6
45125                 ISPC=6
45126               ELSEIF (CHBLCK(1:4).EQ.'SBOT') THEN
45127                 KFSM=5
45128                 ISPC=5
45129               ELSEIF (CHBLCK(1:4).EQ.'STAU') THEN
45130                 KFSM=15
45131                 ISPC=7
45132               ENDIF
45133 C...Set SFMIX element
45134               SFMIX(KFSM,2*(INDX1-1)+INDX2)=VAL
45135               MSPC(ISPC)=MSPC(ISPC)+1
45136             ENDIF
45137 C...Running parameters
45138           ELSEIF (CHBLCK(1:4).EQ.'HMIX') THEN
45139             READ(CHBLCK(8:25),*,ERR=620) Q
45140             READ(CHINL,*) INDX, VAL
45141             MSPC(8)=MSPC(8)+1
45142             IF (INDX.EQ.1) THEN
45143               RMSS(4) = VAL
45144             ELSE
45145               MERR=1
45146               MSPC(8)=MSPC(8)-1
45147             ENDIF
45148           ELSEIF (CHBLCK(1:5).EQ.'ALPHA') THEN
45149             READ(CHINL,*,ERR=630) VAL
45150             RMSS(18)= VAL
45151             MSPC(17)=MSPC(17)+1
45152 C...Higgs parameters set manually or with FeynHiggs.
45153             IMSS(4)=MAX(2,IMSS(4))
45154           ELSEIF (CHBLCK(1:2).EQ.'AU'.OR.CHBLCK(1:2).EQ.'AD'.OR
45155      &           .CHBLCK(1:2).EQ.'AE') THEN
45156             READ(CHBLCK(9:26),*,ERR=620) Q
45157             READ(CHINL,*) INDX1, INDX2, VAL
45158             IF (CHBLCK(2:2).EQ.'U') THEN
45159               AU(INDX1,INDX2)=VAL
45160               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(16)=VAL
45161               MSPC(11)=MSPC(11)+1
45162             ELSEIF (CHBLCK(2:2).EQ.'D') THEN
45163               AD(INDX1,INDX2)=VAL
45164               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(15)=VAL
45165               MSPC(10)=MSPC(10)+1
45166             ELSEIF (CHBLCK(2:2).EQ.'E') THEN
45167               AE(INDX1,INDX2)=VAL
45168               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(17)=VAL
45169               MSPC(12)=MSPC(12)+1
45170             ELSE
45171               MERR=1
45172             ENDIF
45173           ELSEIF (CHBLCK(1:5).EQ.'MSOFT') THEN
45174             IF (MSPC(18).EQ.0) THEN
45175               READ(CHBLCK(9:25),*,ERR=620) Q
45176               RMSOFT(0)=Q
45177             ENDIF
45178             READ(CHINL,*) INDX, VAL
45179             RMSOFT(INDX)=VAL
45180             MSPC(18)=MSPC(18)+1
45181           ELSEIF (CHBLCK(1:5).EQ.'GAUGE') THEN
45182             MERR=8
45183           ELSEIF (CHBLCK(1:2).EQ.'YU'.OR.CHBLCK(1:2).EQ.'YD'.OR
45184      &           .CHBLCK(1:2).EQ.'YE') THEN
45185             MERR=8
45186           ELSEIF (CHBLCK(1:6).EQ.'SPINFO') THEN
45187             READ(CHINL(1:6),*) INDX
45188             IT=0
45189             MIRD=0
45190   330       IT=IT+1
45191             IF (CHINL(IT:IT).EQ.' ') GOTO 330
45192 C...Don't read index
45193             IF (CHINL(IT:IT).EQ.CHAR(INDX+48).AND.MIRD.EQ.0) THEN
45194               MIRD=1
45195               GOTO 330
45196             ENDIF
45197             IF (INDX.EQ.1) CPRO(1)=CHINL(IT:IT+12)
45198             IF (INDX.EQ.2) CVER(1)=CHINL(IT:IT+12)
45199           ELSE
45200 C...  Set unrecognized block flag.
45201             MERR=6
45202           ENDIF
45203  
45204 C...DECAY TABLES
45205 C...Read in decay information
45206         ELSEIF (MUPDA.EQ.2.AND.MERR.EQ.0) THEN
45207 C...Read new decay chanel
45208           IF(CHINL(1:1).EQ.' '.AND.CHBLCK(1:5).EQ.'DECAY') THEN
45209             NDC=NDC+1
45210 C...Read in branching ratio and number of daughters for this mode.
45211             READ(CHINL(4:50),*,ERR=390) BRAT(NDC)
45212             READ(CHINL(4:50),*,ERR=600) DUM, NDA
45213             IF (NDA.LE.5) THEN
45214               IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
45215      &             '(PYSLHA:) Decay data arrays full by KF ='
45216      $             //CHAF(KC,1))
45217 C...If first decay channel, set decays start point in decay table
45218               IF(BRSUM.LE.0D0.AND.BRAT(NDC).NE.0D0) THEN
45219                 IF (KFORIG.EQ.0) WRITE(MSTU(11),*)
45220      &              '* (PYSLHA:) Reading in SLHA decay table for ',
45221      &              'KF =',KF,': ',CHAF(KCREP,1)(1:16)
45222 C...Set particle parameters (mass set when reading BLOCK MASS above)
45223                 PMAS(KC,2)=WIDTH
45224                 IF (KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) THEN
45225                   WRITE(MSTU(11),*)
45226      &                '*  Note: the Pythia gg->h/H/A cross section'//
45227      &                ' is proportional to the h/H/A->gg width'
45228                 ENDIF
45229                 PMAS(KC,3)=0D0
45230                 PMAS(KC,4)=PARU(3)*1D-12/WIDTH
45231                 MWID(KC)=2
45232                 MDCY(KC,1)=1
45233                 MDCY(KC,2)=NDC
45234                 MDCY(KC,3)=0
45235 C...Add to list of DECAY blocks currently read
45236                 NDECAY=NDECAY+1
45237                 KFDEC(NDECAY)=KF
45238 C...Return ok
45239                 IRETRN=0
45240               ENDIF
45241 C...  Count up number of decay modes for this particle
45242               MDCY(KC,3)=MDCY(KC,3)+1
45243 C...  Read in decay daughters.
45244               READ(CHINL(4:120),*,ERR=610) DUM,IDM, (IDC(IDA),IDA=1,NDA)
45245 C...  Flip sign if reading antiparticle decays (if antipartner exists)
45246               DO 340 IDA=1,NDA
45247                 IF (KCHG(PYCOMP(IDC(IDA)),3).NE.0)
45248      &               IDC(IDA)=MPSIGN*IDC(IDA)
45249   340         CONTINUE
45250 C...Switch on decay channel, with products ordered in decreasing ABS(KF)
45251               MDME(NDC,1)=1
45252               IF (BRAT(NDC).LE.0D0) MDME(NDC,1)=0
45253               BRSUM=BRSUM+ABS(BRAT(NDC))
45254               BRAT(NDC)=ABS(BRAT(NDC))
45255   350         IFLIP=0
45256               DO 360 IDA=1,NDA-1
45257                 IF (IABS(IDC(IDA+1)).GT.IABS(IDC(IDA))) THEN
45258                   ITMP=IDC(IDA)
45259                   IDC(IDA)=IDC(IDA+1)
45260                   IDC(IDA+1)=ITMP
45261                   IFLIP=IFLIP+1
45262                 ENDIF
45263   360         CONTINUE
45264               IF (IFLIP.GT.0) GOTO 350
45265 C...Treat as ordinary decay, no fancy stuff.
45266               MDME(NDC,2)=0
45267               DO 370 IDA=1,5
45268                 IF (IDA.LE.NDA) THEN
45269                   KFDP(NDC,IDA)=IDC(IDA)
45270                 ELSE
45271                   KFDP(NDC,IDA)=0
45272                 ENDIF
45273   370         CONTINUE
45274 C              WRITE(MSTU(11),7510) NDC, BRAT(NDC), NDA,
45275 C     &            (KFDP(NDC,J),J=1,NDA)
45276             ELSE
45277               CALL PYERRM(7,'(PYSLHA:) Too many daughters on line'//
45278      &             CHNLIN)
45279               MERR=11
45280               NDC=NDC-1
45281             ENDIF
45282           ELSEIF(CHINL(1:1).EQ.'+') THEN
45283             MERR=11
45284           ELSEIF(CHBLCK(1:6).EQ.'DCINFO') THEN
45285             MERR=16
45286           ELSE
45287             MERR=16
45288           ENDIF
45289         ENDIF
45290 C...  Error check.
45291   380   IF (MOD(MERR,10).EQ.1.AND.(MUPDA.EQ.1.OR.MUPDA.EQ.2)) THEN
45292           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring line '//CHNLIN//': '
45293      &         //CHINL(1:40)
45294           MERR=0
45295         ELSEIF (MERR.EQ.6.AND.MUPDA.EQ.1) THEN
45296           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//
45297      &         CHBLCK(1:MIN(INL,40))//'... on line'//CHNLIN
45298         ELSEIF (MERR.EQ.8.AND.MUPDA.EQ.1) THEN
45299           WRITE(MSTU(11),*) '* (PYSLHA:) PYTHIA will not use BLOCK '
45300      &         //CHBLCK(1:INL)//'... on line'//CHNLIN
45301         ELSEIF (MERR.EQ.16.AND.MUPDA.EQ.2.AND.IMSS21.EQ.0.AND.
45302      &         CHBLCK(1:1).NE.'D'.AND.VERBOS.EQ.1) THEN
45303           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//CHBLCK(1:INL)
45304      &         //'... on line'//CHNLIN
45305         ELSEIF (MERR.EQ.7.AND.MUPDA.EQ.1) THEN
45306           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring extra BLOCK '/
45307      &         /CHBLCK(1:INL)//'... on line'//CHNLIN
45308         ELSEIF (MERR.EQ.2.AND.MUPDA.EQ.1) THEN
45309           WRITE (CHTMP,*) KF
45310           WRITE(MSTU(11),*)
45311      &         '* (PYSLHA:) Ignoring extra MASS entry for KF='//
45312      &         CHTMP(1:9)//' on line'//CHNLIN
45313         ENDIF
45314 C...Iterate read loop
45315         GOTO 170
45316 C...Error catching
45317   390   WRITE(*,*) '* (PYSLHA:) read BR error on line',NLINE,
45318      &      ', ignoring subsequent lines.'
45319         WRITE(*,*) '* (PYSLHA:) Offending line:',CHINL(1:46)
45320         CHBLCK=' '
45321         GOTO 170
45322 C...End of read loop
45323   400   CONTINUE
45324 C...Set flag that KC codes have been rearranged.
45325         MSTU(20)=0
45326         VERBOS=0
45327  
45328 C...Perform possible tests that new information is consistent.
45329         IF (MUPDA.EQ.1) THEN
45330           MSTU23=MSTU(23)
45331           MSTU27=MSTU(27)
45332 C...Check Z and top masses
45333           IF (ABS(PMAS(PYCOMP(23),1)-91.2D0).GT.1D0) THEN
45334             WRITE(CHTMP,*) PMAS(PYCOMP(23),1)
45335             CALL PYERRM(19,'(PYSLHA:) note Z boson mass, M ='//CHTMP)
45336           ENDIF
45337           IF (ABS(PMAS(PYCOMP(6),1)-175D0).GT.25D0) THEN
45338             WRITE(CHTMP,*) PMAS(PYCOMP(6),1)
45339             CALL PYERRM(19,'(PYSLHA:) note top quark mass, M ='
45340      &           //CHTMP//'GeV')
45341           ENDIF
45342 C...Check masses
45343           DO 410 ISUSY=1,37
45344             KF=KFSUSY(ISUSY)
45345 C...Don't complain about right-handed neutrinos
45346             IF (KF.EQ.KSUSY2+12.OR.KF.EQ.KSUSY2+14.OR.KF.EQ.KSUSY2
45347      &           +16) GOTO 410
45348 C...Only check gravitino in GMSB scenarios
45349             IF (MODSEL(1).NE.2.AND.KF.EQ.KSUSY1+39) GOTO 410
45350             KC=PYCOMP(KF)
45351             IF (PMAS(KC,1).EQ.0D0) THEN
45352               WRITE(CHTMP,*) KF
45353               CALL PYERRM(9
45354      &             ,'(PYSLHA:) No mass information found for KF ='
45355      &             //CHTMP)
45356             ENDIF
45357   410     CONTINUE
45358 C...Check mixing matrices (MSSM only)
45359           IF (IMSS(13).EQ.0) THEN
45360             IF (MSPC(2).NE.16.AND.MSPC(2).NE.32) CALL PYERRM(9
45361      &           ,'(PYSLHA:) Inconsistent # of elements in NMIX')
45362             IF (MSPC(3).NE.4.AND.MSPC(3).NE.8) CALL PYERRM(9
45363      &           ,'(PYSLHA:) Inconsistent # of elements in UMIX')
45364             IF (MSPC(4).NE.4.AND.MSPC(4).NE.8) CALL PYERRM(9
45365      &           ,'(PYSLHA:) Inconsistent # of elements in VMIX')
45366             IF (MSPC(5).NE.4) CALL PYERRM(9
45367      &           ,'(PYSLHA:) Inconsistent # of elements in SBOTMIX')
45368             IF (MSPC(6).NE.4) CALL PYERRM(9
45369      &           ,'(PYSLHA:) Inconsistent # of elements in STOPMIX')
45370             IF (MSPC(7).NE.4) CALL PYERRM(9
45371      &           ,'(PYSLHA:) Inconsistent # of elements in STAUMIX')
45372             IF (MSPC(8).LT.1) CALL PYERRM(9
45373      &           ,'(PYSLHA:) Too few elements in HMIX')
45374             IF (MSPC(10).EQ.0) CALL PYERRM(9
45375      &           ,'(PYSLHA:) Missing A_b trilinear coupling')
45376             IF (MSPC(11).EQ.0) CALL PYERRM(9
45377      &           ,'(PYSLHA:) Missing A_t trilinear coupling')
45378             IF (MSPC(12).EQ.0) CALL PYERRM(9
45379      &           ,'(PYSLHA:) Missing A_tau trilinear coupling')
45380             IF (MSPC(17).LT.1) CALL PYERRM(9
45381      &           ,'(PYSLHA:) Missing Higgs mixing angle alpha')
45382           ENDIF
45383 C...Check wavefunction normalizations.
45384 C...Sfermions
45385           DO 420 ISPC=5,7
45386             IF (MSPC(ISPC).EQ.4) THEN
45387               KFSM=ISPC
45388               IF (ISPC.EQ.7) KFSM=15
45389               CHECK=ABS(SFMIX(KFSM,1)*SFMIX(KFSM,4)-SFMIX(KFSM,2)
45390      &             *SFMIX(KFSM,3))
45391               IF (ABS(1D0-CHECK).GT.1D-3) THEN
45392                 KCSM=PYCOMP(KFSM)
45393                 CALL PYERRM(17
45394      &               ,'(PYSLHA:) Non-orthonormal mixing matrix for ~'
45395      &               //CHAF(KCSM,1))
45396               ENDIF
45397             ENDIF
45398   420     CONTINUE
45399 C...Neutralinos + charginos
45400           DO 440 J=1,4
45401             CN1=0D0
45402             CN2=0D0
45403             CU1=0D0
45404             CU2=0D0
45405             CV1=0D0
45406             CV2=0D0
45407             DO 430 L=1,4
45408               CN1=CN1+ZMIX(J,L)**2
45409               CN2=CN2+ZMIX(L,J)**2
45410               IF (J.LE.2.AND.L.LE.2) THEN
45411                 CU1=CU1+UMIX(J,L)**2
45412                 CU2=CU2+UMIX(L,J)**2
45413                 CV1=CV1+VMIX(J,L)**2
45414                 CV2=CV2+VMIX(L,J)**2
45415               ENDIF
45416   430       CONTINUE
45417 C...NMIX normalization
45418             IF (MSPC(2).EQ.16.AND.(ABS(1D0-CN1).GT.1D-3.OR.ABS(1D0-CN2)
45419      &           .GT.1D-3).AND.IMSS(13).EQ.0) THEN
45420               CALL PYERRM(19,
45421      &             '(PYSLHA:) NMIX: Inconsistent normalization.')
45422               WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F7.4))') J, CN1, CN2
45423             ENDIF
45424 C...UMIX, VMIX normalizations
45425             IF (MSPC(3).EQ.4.OR.MSPC(4).EQ.4.AND.IMSS(13).EQ.0) THEN
45426               IF (J.LE.2) THEN
45427                 IF (ABS(1D0-CU1).GT.1D-3.OR.ABS(1D0-CU2).GT.1D-3) THEN
45428                   CALL PYERRM(19
45429      &                ,'(PYSLHA:) UMIX: Inconsistent normalization.')
45430                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CU1,
45431      &                 CU2
45432                 ENDIF
45433                 IF (ABS(1D0-CV1).GT.1D-3.OR.ABS(1D0-CV2).GT.1D-3) THEN
45434                   CALL PYERRM(19,
45435      &                '(PYSLHA:) VMIX: Inconsistent normalization.')
45436                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CV1,
45437      &                 CV2
45438                 ENDIF
45439               ENDIF
45440             ENDIF
45441   440     CONTINUE
45442           IF (MSTU(27).EQ.MSTU27.AND.MSTU(23).EQ.MSTU23) THEN
45443             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*")')
45444      &           '*  PYSLHA:  No spectrum inconsistencies were found.'
45445           ELSE
45446             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*",A/1x,"*",A/)')
45447      &           '* (PYSLHA:) INCONSISTENT SPECTRUM WARNING.'
45448      &           ,' Warning: one or more (serious)'//
45449      &           ' inconsistencies were found in the spectrum !'
45450      &           ,' Read the error messages above and check your'//
45451      &           ' input file.'
45452           ENDIF
45453 C...Increase precision in Higgs sector using FeynHiggs
45454           IF (IMSS(4).EQ.3) THEN
45455 C...FeynHiggs needs MSOFT.
45456             IERR=0
45457             IF (MSPC(18).EQ.0) THEN
45458               WRITE(MSTU(11),'(1x,"*"/1x,A/)')
45459      &             '* (PYSLHA:) BLOCK MSOFT not found in SLHA file.'//
45460      &              ' Cannot call FeynHiggs.'
45461               IERR=-1
45462             ELSE
45463               WRITE(MSTU(11),'(1x,/1x,A/)')
45464      &             '* (PYSLHA:) Now calling FeynHiggs.'
45465               CALL PYFEYN(IERR)
45466               IF (IERR.NE.0) IMSS(4)=2
45467             ENDIF
45468           ENDIF
45469         ELSEIF (MUPDA.EQ.2.AND.IRETRN.EQ.0.AND.MERR.NE.16) THEN
45470           IBEG=1
45471           IF (KFORIG.NE.0) IBEG=NDECAY
45472           DO 490 IDECAY=IBEG,NDECAY
45473             KF = KFDEC(IDECAY)
45474             KC = PYCOMP(KF)
45475             WRITE(CHKF,8300) KF
45476             IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3
45477      $          ),PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0.OR.(MDCY(KC,3)
45478      $          .EQ.0.AND.MDCY(KC,1).GE.1)) CALL PYERRM(17
45479      $          ,'(PYSLHA:) Mass/width/life/(# channels) wrong for KF='
45480      $          //CHKF)
45481             BRSUM=0D0
45482             BROPN=0D0
45483             DO 460 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45484               IF(MDME(IDA,2).GT.80) GOTO 460
45485               KQ=KCHG(KC,1)
45486               PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
45487               MERR=0
45488               DO 450 J=1,5
45489                 KP=KFDP(IDA,J)
45490                 IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
45491                   IF(KP.EQ.81) KQ=0
45492                 ELSEIF(PYCOMP(KP).EQ.0) THEN
45493                   MERR=3
45494                 ELSE
45495                   KQ=KQ-PYCHGE(KP)
45496                   KPC=PYCOMP(KP)
45497                   PMS=PMS-PMAS(KPC,1)
45498                   IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
45499      &                PMAS(KPC,3))
45500                 ENDIF
45501   450         CONTINUE
45502               IF(KQ.NE.0) MERR=MAX(2,MERR)
45503               IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
45504      &            MERR=MAX(1,MERR)
45505               IF(MERR.EQ.3) CALL PYERRM(17,
45506      &            '(PYSLHA:) Unknown particle code in decay of KF ='
45507      $            //CHKF)
45508               IF(MERR.EQ.2) CALL PYERRM(17,
45509      &            '(PYSLHA:) Charge not conserved in decay of KF ='
45510      $            //CHKF)
45511               IF(MERR.EQ.1) CALL PYERRM(7,
45512      &            '(PYSLHA:) Kinematically unallowed decay of KF ='
45513      $            //CHKF)
45514               BRSUM=BRSUM+BRAT(IDA)
45515               IF (MDME(IDA,1).GT.0) BROPN=BROPN+BRAT(IDA)
45516   460       CONTINUE
45517 C...Check branching ratio sum.
45518             IF (BROPN.LE.0D0) THEN
45519 C...If zero, set stable.
45520               WRITE(CHTMP,8500) BROPN
45521               CALL PYERRM(7
45522      &            ,"(PYSLHA:) Effective BR sum for KF="//CHKF//' is '//
45523      &            CHTMP(9:16)//'. Changed to stable.')
45524               PMAS(KC,2)=1D-6
45525               MWID(KC)=0
45526 C...If BR's > 1, rescale.
45527             ELSEIF (BRSUM.GT.(1D0+1D-6)) THEN
45528               WRITE(CHTMP,8500) BRSUM
45529               IF (BRSUM.GT.(1D0+1D-3)) CALL PYERRM(7
45530      &            ,"(PYSLHA:) Forced rescaling of BR's for KF="//CHKF//
45531      &            ' ; sum was'//CHTMP(9:16)//'.')
45532               FAC=1D0/BRSUM
45533               DO 470 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45534                 IF(MDME(IDA,2).GT.80) GOTO 470
45535                 BRAT(IDA)=FAC*BRAT(IDA)
45536   470         CONTINUE
45537             ELSEIF (BRSUM.LT.(1D0-1D-6)) THEN
45538 C...If BR's < 1, insert dummy mode for proper cross section rescaling.
45539               WRITE(CHTMP,8500) BRSUM
45540               IF (BRSUM.LT.(1D0-1D-3)) CALL PYERRM(7
45541      &            ,"(PYSLHA:) Sum of BR's for KF="//CHKF//' is '//
45542      &            CHTMP(9:16)//'. Dummy mode will be inserted.')
45543 C...Move table and insert dummy mode
45544               DO 480 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45545                 NDC=NDC+1
45546                 BRAT(NDC)=BRAT(IDA)
45547                 KFDP(NDC,1)=KFDP(IDA,1)
45548                 KFDP(NDC,2)=KFDP(IDA,2)
45549                 KFDP(NDC,3)=KFDP(IDA,3)
45550                 KFDP(NDC,4)=KFDP(IDA,4)
45551                 KFDP(NDC,5)=KFDP(IDA,5)
45552                 MDME(NDC,1)=MDME(IDA,1)
45553   480         CONTINUE
45554               NDC=NDC+1
45555               BRAT(NDC)=1D0-BRSUM
45556               KFDP(NDC,1)=0
45557               KFDP(NDC,2)=0
45558               KFDP(NDC,3)=0
45559               KFDP(NDC,4)=0
45560               KFDP(NDC,5)=0
45561               MDME(NDC,1)=0
45562               BRSUM=1D0
45563 C...Update MDCY
45564               MDCY(KC,3)=MDCY(KC,3)+1
45565               MDCY(KC,2)=NDC-MDCY(KC,3)+1
45566             ENDIF
45567   490     CONTINUE
45568         ENDIF
45569  
45570  
45571 C...WRITE SPECTRUM ON SLHA FILE
45572       ELSEIF(MUPDA.EQ.3) THEN
45573 C...If SPYTHIA or ISASUSY runtime was called for SUGRA, update PARMIN.
45574         IF (IMSS(1).EQ.2.OR.IMSS(1).EQ.12) THEN
45575           MODSEL(1)=1
45576           PARMIN(1)=RMSS(8)
45577           PARMIN(2)=RMSS(1)
45578           PARMIN(3)=RMSS(5)
45579           PARMIN(4)=SIGN(1D0,RMSS(4))
45580           PARMIN(5)=RMSS(36)
45581         ENDIF
45582 C...Write spectrum
45583         WRITE(LFN,7000) 'SLHA MSSM spectrum'
45584         WRITE(LFN,7000) 'Pythia 6.4: T. Sjostrand, S. Mrenna,'
45585      &    // ' P. Skands.'
45586         WRITE(LFN,7010) 'MODSEL',  'Model selection'
45587         WRITE(LFN,7110) 1, MODSEL(1)
45588         WRITE(LFN,7010) 'MINPAR', 'Parameters for minimal model.'
45589         IF (MODSEL(1).EQ.1) THEN
45590           WRITE(LFN,7210) 1, PARMIN(1), 'm0'
45591           WRITE(LFN,7210) 2, PARMIN(2), 'm12'
45592           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
45593           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
45594           WRITE(LFN,7210) 5, PARMIN(5), 'a0'
45595         ELSEIF(MODSEL(2).EQ.2) THEN
45596           WRITE(LFN,7210) 1, PARMIN(1), 'Lambda'
45597           WRITE(LFN,7210) 2, PARMIN(2), 'M'
45598           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
45599           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
45600           WRITE(LFN,7210) 5, PARMIN(5), 'N5'
45601           WRITE(LFN,7210) 6, PARMIN(6), 'c_grav'
45602         ENDIF
45603         WRITE(LFN,7000) ' '
45604         WRITE(LFN,7010) 'MASS', 'Mass spectrum'
45605         DO 500 I=1,36
45606           KF=KFSUSY(I)
45607           KC=PYCOMP(KF)
45608           IF (KF.EQ.1000039.AND.MODSEL(1).NE.2) GOTO 500
45609           KFSM=KF-KSUSY1
45610           IF (KFSM.GE.22.AND.KFSM.LE.37) THEN
45611             IF (KFSM.EQ.22)  WRITE(LFN,7220) KF, SMZ(1), CHAF(KC,1)
45612             IF (KFSM.EQ.23)  WRITE(LFN,7220) KF, SMZ(2), CHAF(KC,1)
45613             IF (KFSM.EQ.25)  WRITE(LFN,7220) KF, SMZ(3), CHAF(KC,1)
45614             IF (KFSM.EQ.35)  WRITE(LFN,7220) KF, SMZ(4), CHAF(KC,1)
45615             IF (KFSM.EQ.24)  WRITE(LFN,7220) KF, SMW(1), CHAF(KC,1)
45616             IF (KFSM.EQ.37)  WRITE(LFN,7220) KF, SMW(2), CHAF(KC,1)
45617           ELSE
45618             WRITE(LFN,7220) KF, PMAS(KC,1), CHAF(KC,1)
45619           ENDIF
45620   500   CONTINUE
45621 C...SUSY scale
45622         RMSUSY=SQRT(PMAS(PYCOMP(KSUSY1+6),1)*PMAS(PYCOMP(KSUSY2+6),1))
45623         WRITE(LFN,7020) 'HMIX',RMSUSY,'Higgs parameters'
45624         WRITE(LFN,7210) 1, RMSS(4),'mu'
45625         WRITE(LFN,7010) 'ALPHA',' '
45626         WRITE(LFN,7210) 1, RMSS(18), 'alpha'
45627         WRITE(LFN,7020) 'AU',RMSUSY
45628         WRITE(LFN,7410) 3, 3, RMSS(16), 'A_t'
45629         WRITE(LFN,7020) 'AD',RMSUSY
45630         WRITE(LFN,7410) 3, 3, RMSS(15), 'A_b'
45631         WRITE(LFN,7020) 'AE',RMSUSY
45632         WRITE(LFN,7410) 3, 3, RMSS(17), 'A_tau'
45633         WRITE(LFN,7010) 'STOPMIX','~t mixing matrix'
45634         WRITE(LFN,7410) 1, 1, SFMIX(6,1)
45635         WRITE(LFN,7410) 1, 2, SFMIX(6,2)
45636         WRITE(LFN,7410) 2, 1, SFMIX(6,3)
45637         WRITE(LFN,7410) 2, 2, SFMIX(6,4)
45638         WRITE(LFN,7010) 'SBOTMIX','~b mixing matrix'
45639         WRITE(LFN,7410) 1, 1, SFMIX(5,1)
45640         WRITE(LFN,7410) 1, 2, SFMIX(5,2)
45641         WRITE(LFN,7410) 2, 1, SFMIX(5,3)
45642         WRITE(LFN,7410) 2, 2, SFMIX(5,4)
45643         WRITE(LFN,7010) 'STAUMIX','~tau mixing matrix'
45644         WRITE(LFN,7410) 1, 1, SFMIX(15,1)
45645         WRITE(LFN,7410) 1, 2, SFMIX(15,2)
45646         WRITE(LFN,7410) 2, 1, SFMIX(15,3)
45647         WRITE(LFN,7410) 2, 2, SFMIX(15,4)
45648         WRITE(LFN,7010) 'NMIX','~chi0 mixing matrix'
45649         DO 520 I1=1,4
45650           DO 510 I2=1,4
45651             WRITE(LFN,7410) I1, I2, ZMIX(I1,I2)
45652   510     CONTINUE
45653   520   CONTINUE
45654         WRITE(LFN,7010) 'UMIX','~chi^+ U mixing matrix'
45655         DO 540 I1=1,2
45656           DO 530 I2=1,2
45657             WRITE(LFN,7410) I1, I2, UMIX(I1,I2)
45658   530     CONTINUE
45659   540   CONTINUE
45660         WRITE(LFN,7010) 'VMIX','~chi^+ V mixing matrix'
45661         DO 560 I1=1,2
45662           DO 550 I2=1,2
45663             WRITE(LFN,7410) I1, I2, VMIX(I1,I2)
45664   550     CONTINUE
45665   560   CONTINUE
45666         WRITE(LFN,7010) 'SPINFO'
45667         IF (IMSS(1).EQ.2) THEN
45668           CPRO(1)='PYTHIA'
45669           CVER(1)='6.4'
45670         ELSEIF (IMSS(1).EQ.12) THEN
45671           ISAVER=VISAJE()
45672           CPRO(1)='ISASUSY'
45673           CVER(1)=ISAVER(1:12)
45674         ENDIF
45675         WRITE(LFN,7310) 1, CPRO(1), 'Spectrum Calculator'
45676         WRITE(LFN,7310) 2, CVER(1), 'Version number'
45677       ENDIF
45678  
45679 C...Print user information about spectrum
45680       IF (MUPDA.EQ.1.OR.MUPDA.EQ.3) THEN
45681         IF (CPRO(MOD(MUPDA,2)).NE.' '.AND.CVER(MOD(MUPDA,2)).NE.' ')
45682      &       WRITE(MSTU(11),5030) CPRO(1), CVER(1)
45683         IF (IMSS(4).EQ.3) WRITE(MSTU(11),5040)
45684         IF (MUPDA.EQ.1) THEN
45685           WRITE(MSTU(11),5020) LFN
45686         ELSE
45687           WRITE(MSTU(11),5010) LFN
45688         ENDIF
45689  
45690         WRITE(MSTU(11),5400)
45691         WRITE(MSTU(11),5500) 'Pole masses'
45692         WRITE(MSTU(11),5700) (RMFUN(KSUSY1+IP),IP=1,6)
45693      $       ,(RMFUN(KSUSY2+IP),IP=1,6)
45694         WRITE(MSTU(11),5800) (RMFUN(KSUSY1+IP),IP=11,16)
45695      $       ,(RMFUN(KSUSY2+IP),IP=11,16)
45696         IF (IMSS(13).EQ.0) THEN
45697           WRITE(MSTU(11),5900) RMFUN(KSUSY1+21),RMFUN(KSUSY1+22)
45698      $         ,RMFUN(KSUSY1+23),RMFUN(KSUSY1+25),RMFUN(KSUSY1+35),
45699      $         RMFUN(KSUSY1+24),RMFUN(KSUSY1+37)
45700           WRITE(MSTU(11),6000) CHAF(25,1),CHAF(35,1),CHAF(36,1),
45701      &         CHAF(37,1), ' ', ' ',' ',' ',
45702      &         RMFUN(25), RMFUN(35), RMFUN(36), RMFUN(37)
45703         ELSEIF (IMSS(13).EQ.1) THEN
45704           KF1=KSUSY1+21
45705           KF2=KSUSY1+22
45706           KF3=KSUSY1+23
45707           KF4=KSUSY1+25
45708           KF5=KSUSY1+35
45709           KF6=KSUSY1+45
45710           KF7=KSUSY1+24
45711           KF8=KSUSY1+37
45712           WRITE(MSTU(11),6000) CHAF(PYCOMP(KF1),1),CHAF(PYCOMP(KF2),1),
45713      &         CHAF(PYCOMP(KF3),1),CHAF(PYCOMP(KF4),1),
45714      &         CHAF(PYCOMP(KF5),1),CHAF(PYCOMP(KF6),1),
45715      &         CHAF(PYCOMP(KF7),1),CHAF(PYCOMP(KF8),1),
45716      &         RMFUN(KF1),RMFUN(KF2),RMFUN(KF3),RMFUN(KF4),
45717      &         RMFUN(KF5),RMFUN(KF6),RMFUN(KF7),RMFUN(KF8)
45718           WRITE(MSTU(11),6000) CHAF(25,1), CHAF(35,1), CHAF(45,1),
45719      &         CHAF(36,1), CHAF(46,1), CHAF(37,1),' ',' ',
45720      &         RMFUN(25), RMFUN(35), RMFUN(45), RMFUN(36), RMFUN(46),
45721      &         RMFUN(37)
45722         ENDIF
45723         WRITE(MSTU(11),5400)
45724         WRITE(MSTU(11),5500) 'Mixing structure'
45725         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
45726         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
45727      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
45728         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
45729      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
45730      &       ),(SFMIX(15,J),J=3,4)
45731         WRITE(MSTU(11),5400)
45732         WRITE(MSTU(11),5500) 'Couplings'
45733         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17)
45734         WRITE(MSTU(11),6450) RMSS(18), RMSS(5), RMSS(4)
45735         WRITE(MSTU(11),5400)
45736         WRITE(MSTU(11),6500)
45737  
45738       ENDIF
45739  
45740 C...Only rewind when reading
45741       IF (MUPDA.LE.2.OR.MUPDA.EQ.5) REWIND(LFN)
45742  
45743  9999 RETURN
45744  
45745 C...Serious error catching
45746   580 write(*,*) '* (PYSLHA:) read BLOCK error on line',NLINE
45747       write(*,*) CHINL(1:80)
45748       CALL PYSTOP(106)
45749   590 WRITE(*,*) '* (PYSLHA:) read DECAY error on line',NLINE
45750       WRITE(*,*) CHINL(1:72)
45751       CALL PYSTOP(106)
45752   600 WRITE(*,*) '* (PYSLHA:) read NDA error on line',NLINE
45753       WRITE(*,*) CHINL(1:80)
45754       CALL PYSTOP(106)
45755   610 WRITE(*,*) '* (PYSLHA:) decay daughter read error on line',NLINE
45756       WRITE(*,*) CHINL(1:80)
45757   620 WRITE(*,*) '* (PYSLHA:) read Q error in BLOCK ',CHBLCK
45758       CALL PYSTOP(106)
45759   630 WRITE(*,*) '* (PYSLHA:) read error in line ',NLINE,':'
45760       WRITE(*,*) CHINL(1:80)
45761       CALL PYSTOP(106)
45762  
45763  8300 FORMAT(I9)
45764  8500 FORMAT(F16.5)
45765  
45766 C...Formats for user information printout.
45767  5000 FORMAT(1x,18('*'),1x,'PYSLHA v1.10: SUSY/BSM SPECTRUM '
45768      &     ,'INTERFACE',1x,17('*')/1x,'*',2x
45769      &     ,'PYSLHA:  Last Change',1x,A,1x,'-',1x,'P.Z. Skands')
45770  5010 FORMAT(1x,'*',3x,'Wrote spectrum file on unit: ',I3)
45771  5020 FORMAT(1x,'*',3x,'Read spectrum file on unit: ',I3)
45772  5030 FORMAT(1x,'*',3x,'Spectrum Calculator was: ',A,' version ',A)
45773  5040 FORMAT(1x,'*',3x,'Higgs sector corrected with FeynHiggs')
45774  5100 FORMAT(1x,'*',1x,'Model parameters:'/1x,'*',1x,'----------------')
45775  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
45776      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
45777  5300 FORMAT(1x,'*'/1x,'*',1x,'Model spectrum :'/1x,'*',1x
45778      &     ,'----------------')
45779  5400 FORMAT(1x,'*',1x,A)
45780  5500 FORMAT(1x,'*',1x,A,':')
45781  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
45782      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
45783  5700 FORMAT(1x,'*',4x,1x,'~d',2x,1x,4x,'~u',2x,1x,4x,'~s',2x,1x,
45784      &     4x,'~c',2x,1x,4x,'~b(12)',1x,1x,1x,'~t(12)'/1x,'*',2x,'L',1x
45785      &     ,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
45786  5800 FORMAT(1x,'*'/1x,'*',4x,1x,'~e',2x,1x,4x,'~nu_e',2x,1x,1x,'~mu',2x
45787      &     ,1x,3x,'~nu_mu',2x,1x,'~tau(12)',1x,'~nu_tau'/1x,'*',2x
45788      &     ,'L',1x,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
45789  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
45790      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
45791      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
45792  6000 FORMAT(1x,'*'/1x,'*',3x,1x,8(1x,A7,1x)/1x,'*',3x,1x,8(F8.2,1x))
45793  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
45794      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
45795      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
45796      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
45797      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
45798      &     ,1x,F6.3,1x),'|')
45799  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
45800      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
45801      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
45802      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
45803      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
45804  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
45805      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
45806      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
45807      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
45808      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
45809      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
45810      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
45811  6400 FORMAT(1x,'*',3x,'  A_b = ',F8.2,4x,'      A_t = ',F8.2,4x
45812      &     ,'A_tau = ',F8.2)
45813  6450 FORMAT(1x,'*',3x,'alpha = ',F8.2,4x,'tan(beta) = ',F8.2,4x
45814      &     ,'   mu = ',F8.2)
45815  6500 FORMAT(1x,32('*'),1x,'END OF PYSLHA',1x,31('*'))
45816  
45817 C...Format to use for comments
45818  7000 FORMAT('# ',A)
45819 C...Format to use for block statements
45820  7010 FORMAT('Block',1x,A,3x,'#',1x,A)
45821  7020 FORMAT('Block',1x,A,1x,'Q=',1P,E16.8,0P,3x,'#',1x,A)
45822 C...Indexed Int
45823  7110 FORMAT(1x,I4,1x,I4,3x,'#')
45824 C...Non-Indexed Double
45825  7200 FORMAT(9x,1P,E16.8,0P,3x,'#',1x,A)
45826 C...Indexed Double
45827  7210 FORMAT(1x,I4,3x,1P,E16.8,0P,3x,'#',1x,A)
45828 C...Long Indexed Double (PDG + double)
45829  7220 FORMAT(1x,I9,3x,1P,E16.8,0P,3x,'#',1x,A)
45830 C...Indexed Char(12)
45831  7310 FORMAT(1x,I4,3x,A12,3x,'#',1x,A)
45832 C...Single matrix
45833  7410 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,0P,3x,'#',1x,A)
45834 C...Double Matrix
45835  7420 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,3x,E16.8,0P,3x,'#',1x,A)
45836 C...Write Decay Table
45837  7500 FORMAT('Decay',1x,I9,1x,'WIDTH=',1P,E16.8,0P,3x,'#',1x,A)
45838  7510 FORMAT(4x,I5,1x,1P,E16.8,0P,3x,I2,3x,'IDA=',1x,5(1x,I9),
45839      &    3x,'#',1x,A)
45840  
45841       END
45842
45843  
45844 C*********************************************************************
45845  
45846 C...PYAPPS
45847 C...Uses approximate analytical formulae to determine the full set of
45848 C...MSSM parameters from SUGRA input.
45849 C...See M. Drees and S.P. Martin, hep-ph/9504124
45850  
45851       SUBROUTINE PYAPPS
45852  
45853 C...Double precision and integer declarations.
45854       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45855       IMPLICIT INTEGER(I-N)
45856       INTEGER PYK,PYCHGE,PYCOMP
45857 C...Parameter statement to help give large particle numbers.
45858       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45859      &KEXCIT=4000000,KDIMEN=5000000)
45860 C...Commonblocks.
45861       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45862       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45863       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
45864       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
45865
45866       WRITE(MSTU(11),*) '(PYAPPS:) approximate mSUGRA relations'//
45867      &' not intended for serious physics studies'
45868       IMSS(5)=0
45869       IMSS(8)=0
45870       XMT=PMAS(6,1)
45871       XMZ2=PMAS(23,1)**2
45872       XMW2=PMAS(24,1)**2
45873       TANB=RMSS(5)
45874       BETA=ATAN(TANB)
45875       XW=PARU(102)
45876       XMG=RMSS(1)
45877       XMG2=XMG*XMG
45878       XM0=RMSS(8)
45879       XM02=XM0*XM0
45880 C...Temporary sign change for AT. Others unchanged.
45881       AT=-RMSS(16)
45882       RMSS(15)=RMSS(16)
45883       RMSS(17)=RMSS(16)
45884       SINB=TANB/SQRT(TANB**2+1D0)
45885       COSB=SINB/TANB
45886  
45887       DTERM=XMZ2*COS(2D0*BETA)
45888       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
45889       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
45890       RMSS(6)=XMEL
45891       RMSS(7)=XMER
45892       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
45893       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
45894       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
45895       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
45896       DO 100 I=1,5,2
45897         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
45898         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
45899         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
45900         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
45901   100 CONTINUE
45902       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
45903       IF(XARG.LT.0D0) THEN
45904         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
45905      &  ' FROM THE SUM RULE. '
45906         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
45907         RETURN
45908       ELSE
45909         XARG=SQRT(XARG)
45910       ENDIF
45911       DO 110 I=11,15,2
45912         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
45913         PMAS(PYCOMP(KSUSY2+I),1)=XMER
45914         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
45915         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
45916   110 CONTINUE
45917       RMT=PYMRUN(6,PMAS(6,1)**2)
45918       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
45919      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
45920       RMB=PYMRUN(5,PMAS(6,1)**2)
45921       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
45922      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
45923       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
45924       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
45925      &SINB)**2)
45926       RMSS(16)=-ATP
45927       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
45928      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
45929       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
45930       XMU=SIGN(SQRT(XMU2),RMSS(4))
45931       RMSS(4)=XMU
45932       IF(XMA2.GT.0D0) THEN
45933         RMSS(19)=SQRT(XMA2)
45934       ELSE
45935         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
45936         CALL PYSTOP(102)
45937       ENDIF
45938       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
45939       IF(ARG.GT.0D0) THEN
45940         RMSS(14)=SQRT(ARG)
45941       ELSE
45942         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
45943         CALL PYSTOP(102)
45944       ENDIF
45945       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
45946       IF(ARG.GT.0D0) THEN
45947         RMSS(13)=SQRT(ARG)
45948       ELSE
45949         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
45950         CALL PYSTOP(102)
45951       ENDIF
45952       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
45953       IF(ARG.GT.0D0) THEN
45954         RMSS(10)=SQRT(ARG)
45955       ELSE
45956         RMSS(10)=-SQRT(-ARG)
45957       ENDIF
45958       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
45959       IF(ARG.GT.0D0) THEN
45960         RMSS(12)=SQRT(ARG)
45961       ELSE
45962         RMSS(12)=-SQRT(-ARG)
45963       ENDIF
45964       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
45965       IF(ARG.GT.0D0) THEN
45966         RMSS(11)=SQRT(ARG)
45967       ELSE
45968         RMSS(11)=-SQRT(-ARG)
45969       ENDIF
45970  
45971       RETURN
45972       END
45973  
45974 C*********************************************************************
45975  
45976 C...PYSUGI
45977 C...Interface to ISASUSY version 7.71.
45978 C...Warning: this interface should not be used with earlier versions
45979 C...of ISASUSY, since common block incompatibilities may then arise.
45980 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
45981 C...Then converts to Gunion-Haber conventions.
45982  
45983       SUBROUTINE PYSUGI
45984       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45985  
45986       INTEGER PYK,PYCHGE,PYCOMP
45987       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45988      &KEXCIT=4000000,KDIMEN=5000000)
45989  
45990 C...Date of Change
45991       CHARACTER DOC*11
45992       PARAMETER (DOC='01 May 2006')
45993  
45994 C...ISASUGRA Input:
45995       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
45996 C...XISAIN contains the MSSMi inputs in natural order.
45997       COMMON /SUGXIN/ XISAIN(24),XSUGIN(7),XGMIN(14),XNRIN(4),
45998      $XAMIN(7)
45999       REAL XISAIN,XSUGIN,XGMIN,XNRIN,XAMIN
46000       SAVE /SUGXIN/
46001 C...ISASUGRA Output
46002       CHARACTER*40 ISAVER,VISAJE
46003       REAL SUPER
46004       COMMON /SSPAR/ SUPER(72)
46005       COMMON /SUGMG/ MSS(32),GSS(31),MGUTSS,GGUTSS,AGUTSS,FTGUT,
46006      $FBGUT,FTAGUT,FNGUT
46007       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
46008       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
46009      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
46010      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3,
46011      $VUMT,VDMT,ASMTP,ASMSS,M3Q
46012       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
46013      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
46014      $FNMZ,AMNRMJ,ASM3,VUMT,VDMT,ASMTP,ASMSS,M3Q
46015       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
46016       INTEGER IALLOW
46017       SAVE /SUGMG/,/SSPAR/
46018 C SUPER: Filled by ISASUGRA.
46019 C SUPER(1)        = mass of ~g
46020 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
46021 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
46022 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
46023 C                          ,~tau_2
46024 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
46025 C SUPER(29)       = Higgsino mass = - mu
46026 C SUPER(30)       = ratio v2/v1 of vev's
46027 C SUPER(31:34)    = Signed neutralino masses
46028 C SUPER(35:50)    = Neutralino mixing matrix
46029 C SUPER(51:52)    = Signed chargino masses
46030 C SUPER(53:54)    = Chargino left, right mixing angles
46031 C SUPER(55:58)    = mass of h0, H0, A0, H+
46032 C SUPER(59)       = Higgs mixing angle alpha
46033 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
46034 C SUPER(66)       = Gravitino mass
46035 C SUPER(67:69)    = Top,Bottom, and Tau masses at MSUSY (not used)
46036 C SUPER(70)       = b-Yukawa at mA scale (not used)
46037 C SUPER(71:72)    = H_u, H_d vev's at MSUSY (not used)
46038 C GSS: Filled by ISASUGRA
46039 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
46040 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
46041 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
46042 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
46043 C     GSS(13) = M_h12     GSS(14) = M_h22     GSS(15) = M_er2
46044 C     GSS(16) = M_el2     GSS(17) = M_dnr2    GSS(18) = M_upr2
46045 C     GSS(19) = M_upl2    GSS(20) = M_taur2   GSS(21) = M_taul2
46046 C     GSS(22) = M_btr2    GSS(23) = M_tpr2    GSS(24) = M_tpl2
46047 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
46048 C     GSS(28) = M_nr       GSS(29) = A_n        GSS(30) = log(vdq)
46049 C     GSS(31) = log(vuq)
46050 C MSS: Filled by ISASUGRA
46051 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
46052 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
46053 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
46054 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
46055 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
46056 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
46057 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
46058 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
46059 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
46060 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
46061 C     MSS(31) = ha0      MSS(32) = h+
46062 C Unification, filled by ISASUGRA if applicable.
46063 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
46064  
46065 C...SPYTHIA Input/Output
46066       INTEGER IMSS
46067       DOUBLE PRECISION RMSS
46068       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46069       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46070      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46071 C...SLHA Input/Output
46072       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46073      &     AU(3,3),AD(3,3),AE(3,3)
46074 C...PYTHIA common blocks
46075       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46076       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
46077       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46078  
46079       SAVE  /PYMSSM/,/PYSSMT/,/PYLH3P/,/PYDAT1/,/PYPARS/,/PYDAT2/
46080 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
46081       INTEGER IMODEL
46082       REAL M0,MHF,A0,MT
46083       CHARACTER*20 CHMOD(5)
46084       CHARACTER*32 FNAME
46085  
46086       COMMON /SUGNU/ XNUSUG(18)
46087       REAL XNUSUG
46088       SAVE /SUGNU/
46089  
46090       DATA CHMOD/'mSUGRA','mGMSB','non-universal SUGRA',
46091      &     'truly unified SUGRA', 'non-minimal GMSB'/
46092  
46093 C...Start by checking for incompatibilities/inconsistencies:
46094       DO 100 ICHK=2,9
46095         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
46096           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
46097      &         ,' option not used by PYSUGI'
46098         ENDIF
46099   100 CONTINUE
46100 C...ISAJET works with REAL numbers.
46101       MZERO=REAL(RMSS(8))
46102       MHLF=REAL(RMSS(1))
46103       AZERO=REAL(RMSS(16))
46104       TANB=REAL(RMSS(5))
46105       SGNMU=REAL(RMSS(4))
46106       MTOP=REAL(PMAS(6,1))
46107       IMODEL=0
46108       IF (IMSS(1).EQ.12) THEN
46109         IMODEL=1
46110         GOTO 130
46111       ELSEIF(IMSS(1).EQ.13) THEN
46112 C...Read from isajet par file in IMSS(20)
46113         LFN=IMSS(20)
46114 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
46115         IF (LFN.EQ.0) THEN
46116           WRITE(MSTU(11),*) '(PYSUGI:) No valid unit given in IMSS(20)'
46117           GOTO 9999
46118         ENDIF
46119         WRITE(MSTU(11),*) 'READING SUSY MODEL FROM FILE...'
46120 CMrenna change to allow any susy model
46121         WRITE(MSTU(11),*) 'ENTER 1 for mSUGRA:'
46122         WRITE(MSTU(11),*) 'ENTER 2 for mGMSB:'
46123         WRITE(MSTU(11),*) 'ENTER 3 for non-universal SUGRA:'
46124         WRITE(MSTU(11),*) 'ENTER 4 for SUGRA with truly unified'//
46125      &       ' gauge couplings:'
46126         WRITE(MSTU(11),*) 'ENTER 5 for non-minimal GMSB:'
46127         READ(LFN,*) IMODEL
46128         IF (IMODEL.EQ.4) THEN
46129           IAL3UN=1
46130           IMODEL=1
46131         ENDIF
46132         IF (IMODEL.EQ.1.OR.IMODEL.EQ.3) THEN
46133           WRITE(MSTU(11),*) 'ENTER M_0, M_(1/2), A_0, tan(beta),'
46134      &         //' sgn(mu), M_t:'
46135           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT
46136           IF (IMODEL.EQ.3) THEN
46137             IMODEL=1
46138  110        WRITE(MSTU(11),*) ' ENTER 1,...,5 for NUSUGx keyword;'
46139      &           //' 0 to continue:'
46140             WRITE(MSTU(11),*) ' NUSUG1 = GUT scale gaugino masses'
46141             WRITE(MSTU(11),*) ' NUSUG2 = GUT scale A terms'
46142             WRITE(MSTU(11),*) ' NUSUG3 = GUT scale Higgs masses'
46143             WRITE(MSTU(11),*) ' NUSUG4 = GUT scale 1st/2nd'
46144      &           //' generation masses'
46145             WRITE(MSTU(11),*)
46146      &           ' NUSUG5 = GUT scale 3rd generation masses'
46147             READ(LFN,*) INUSUG
46148             IF (INUSUG.EQ.0) THEN
46149               GOTO 120
46150             ELSEIF (INUSUG.EQ.1) THEN
46151               WRITE(MSTU(11),*) 'Enter GUT scale M_1, M_2, M_3:'
46152               READ(LFN,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
46153               IF (XNUSUG(3).LE.0.) THEN
46154                 WRITE(MSTU(11),*) ' NEGATIVE M_3 IS NOT ALLOWED'
46155                 CALL PYSTOP(109)
46156               END IF
46157             ELSEIF (INUSUG.EQ.2) THEN
46158               WRITE(MSTU(11),*) 'Enter GUT scale A_t, A_b, A_tau:'
46159               READ(LFN,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
46160             ELSEIF (INUSUG.EQ.3) THEN
46161               WRITE(MSTU(11),*) 'Enter GUT scale m_Hd, m_Hu:'
46162               READ(LFN,*) XNUSUG(7),XNUSUG(8)
46163             ELSEIF (INUSUG.EQ.4) THEN
46164               WRITE(MSTU(11),*) 'Enter GUT scale M(ul), M(dr),'
46165      &             //' M(ur), M(el), M(er):'
46166               READ(LFN,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),
46167      &             XNUSUG(10),XNUSUG(9)
46168             ELSEIF (INUSUG.EQ.5) THEN
46169               WRITE(MSTU(11),*) 'Enter GUT scale M(tl), M(br), M(tr),'
46170      &              //' M(Ll), M(Lr):'
46171               READ(LFN,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),
46172      &             XNUSUG(15),XNUSUG(14)
46173             ENDIF
46174             GOTO 110
46175           ENDIF
46176         ELSEIF (IMODEL.EQ.2.OR.IMODEL.EQ.5) THEN
46177           IMSS(11)=1
46178           WRITE(MSTU(11),*) 'ENTER Lambda, M_mes, N_5, tan(beta),'
46179      &         ,' sgn(mu), M_t, C_gv:'
46180           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT,XCMGV
46181           XGMIN(7)=XCMGV
46182           XGMIN(8)=1.
46183 C...Planck scale: AMPL = 2.4 E18 GeV = {8 pi G_newton}^{1/2}
46184           AMPL=2.4D18
46185           AMGVSS=M0*MHF*XCMGV/SQRT(3D0)/AMPL
46186           IF (IMODEL.EQ.5) THEN
46187             IMODEL=2
46188             WRITE(MSTU(11),*) 'Rsl = factor multiplying gaugino'
46189      &           ,' masses at M_mes'
46190             WRITE(MSTU(11),*) 'dmH_d2, dmH_u2 = Higgs mass**2'
46191      &           ,' shifts at M_mes'
46192             WRITE(MSTU(11),*) 'd_Y = mass**2 shifts proportional to',
46193      &           ' Y at M_mes'
46194             WRITE(MSTU(11),*) 'n5_1,n5_2,n5_3 = n5 values for U(1),'
46195      &           ,'SU(2),SU(3)'
46196             WRITE(MSTU(11),*) 'ENTER Rsl, dmH_d2, dmH_u2, d_Y, n5_1,'
46197      &           ,' n5_2, n5_3'
46198             READ(LFN,*) XGMIN(8),XGMIN(9),XGMIN(10),XGMIN(11),XGMIN(12),
46199      $           XGMIN(13),XGMIN(14)
46200           ENDIF
46201         ELSE
46202           WRITE(MSTU(11),*) 'Invalid model choice.'
46203           GOTO 9999
46204         ENDIF
46205       ENDIF
46206  
46207  120  MZERO=M0
46208       MHLF=MHF
46209       AZERO=A0
46210 C     TANB=REAL(RMSS(5))
46211 C     SGNMU=REAL(RMSS(4))
46212       MTOP=MT
46213  
46214 C...Initialize MSSM parameter array
46215  130  DO 140 IPAR=1,72
46216         SUPER(IPAR)=0.0
46217  140  CONTINUE
46218 C...Call ISASUGRA
46219       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODEL)
46220 C...Check whether ISASUSY thought the model was OK.
46221       IF (NOGOOD.NE.0) THEN
46222         IF (NOGOOD.EQ.1) CALL PYERRM(26
46223      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
46224         IF (NOGOOD.EQ.2) CALL PYERRM(26
46225      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
46226         IF (NOGOOD.EQ.3) CALL PYERRM(26
46227      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
46228         IF (NOGOOD.EQ.4) CALL PYERRM(26
46229      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
46230         IF (NOGOOD.EQ.7) CALL PYERRM(26
46231      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
46232         IF (NOGOOD.EQ.8) CALL PYERRM(26
46233      &       ,'(PYSUGI:) SUSY parameters give m(h0)2 < 0.')
46234 C...Give warning, but don't stop, if LSP not ~chi_10.
46235         IF (NOGOOD.EQ.5) CALL PYERRM(16
46236      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
46237       ENDIF
46238 C...Warn about possible GUT scale tachyons.
46239       IF (ITACHY.NE.0) CALL PYERRM(16,
46240      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
46241 C...Finalize spectrum (last iteration)
46242 C...(Thanks to A. Raklev for pointing this out.)
46243 C...NB: SSMSSM also calculates decays, but these are not used by Pythia.
46244       CALL SSMSSM(XISAIN(1),XISAIN(2),XISAIN(3),
46245      $ XISAIN(4),XISAIN(5),XISAIN(6),XISAIN(7),XISAIN(8),XISAIN(9),
46246      $ XISAIN(10),XISAIN(11),XISAIN(12),XISAIN(13),XISAIN(14),
46247      $ XISAIN(15),XISAIN(16),XISAIN(17),XISAIN(18),XISAIN(19),
46248      $ XISAIN(20),XISAIN(21),XISAIN(22),XISAIN(23),XISAIN(24),
46249      $ MTOP,IALLOW,1)
46250  
46251 C...M1, M2, M3.
46252       RMSS(1)=dble(GSS(7))
46253       RMSS(2)=dble(GSS(8))
46254       RMSS(3)=dble(GSS(9))
46255       RMSOFT(1)=dble(GSS(7))
46256       RMSOFT(2)=dble(GSS(8))
46257       RMSOFT(3)=dble(GSS(9))
46258 C...Mu = - Higgsino mass.
46259       RMSS(4)=-SUPER(29)
46260       RMSS(5)=TANB
46261 C...Slepton and squark masses. 2 first generations.
46262       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
46263       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
46264       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
46265       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
46266 C...Third generation.
46267       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
46268       RMSS(11)=SUPER(11)
46269       RMSS(12)=SUPER(15)
46270       RMSS(13)=SUPER(22)
46271       RMSS(14)=SUPER(23)
46272 C...SLHA: store exact soft spectrum in RMSOFT
46273       RMSOFT(31)=SUPER(18)
46274       RMSOFT(32)=SUPER(20)
46275       RMSOFT(33)=SUPER(22)
46276       RMSOFT(34)=SUPER(19)
46277       RMSOFT(35)=SUPER(21)
46278       RMSOFT(36)=SUPER(23)
46279       RMSOFT(41)=0.5D0*(SUPER(2)+SUPER(4))
46280       RMSOFT(42)=0.5D0*(SUPER(6)+SUPER(8))
46281       RMSOFT(43)=0.5D0*(SUPER(10)+SUPER(14))
46282       RMSOFT(44)=SUPER(3)
46283       RMSOFT(45)=SUPER(9)
46284       RMSOFT(46)=SUPER(15)
46285       RMSOFT(47)=SUPER(5)
46286       RMSOFT(48)=SUPER(7)
46287       RMSOFT(49)=SUPER(11)
46288  
46289 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
46290       RMSS(15)=SUPER(62)
46291       RMSS(16)=SUPER(60)
46292       RMSS(17)=SUPER(64)
46293       RMSS(26)=SUPER(63)
46294       RMSS(27)=SUPER(61)
46295       RMSS(28)=SUPER(65)
46296 C...SLHA trilinears
46297       DO 142 K1=1,3
46298         DO 141 K2=1,3
46299           AE(K1,K2)=0D0
46300           AU(K1,K2)=0D0
46301           AD(K1,K2)=0D0
46302  141    CONTINUE
46303  142  CONTINUE
46304       AE(3,3)=SUPER(64)
46305       AU(3,3)=SUPER(60)
46306       AD(3,3)=SUPER(62)
46307 C...Higgs mixing angle alpha (Gunion-Haber convention).
46308       RMSS(18)=-SUPER(59)
46309 C...A0 mass.
46310       RMSS(19)=SUPER(57)
46311 C...GUT scale coupling
46312       RMSS(20)=AGUTSS
46313 C...Gravitino mass (for future compatibility)
46314       RMSS(21)=MAX(RMSS(21),DBLE(SUPER(66)))
46315  
46316 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
46317 C...Higgs sector.
46318       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
46319       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
46320       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
46321       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
46322 C...Gluino.
46323       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
46324 C...Squarks and Sleptons.
46325       DO 150 ILR=1,2
46326         ILRM=ILR-1
46327         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
46328         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
46329         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
46330         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
46331         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
46332         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
46333         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
46334         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
46335         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
46336   150 CONTINUE
46337       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
46338       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
46339       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
46340 C...Neutralinos.
46341       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
46342       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
46343       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
46344       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
46345 C...Signed masses (extra minus from going to G-H convention).
46346       SMZ(1)=-SUPER(31)
46347       SMZ(2)=-SUPER(32)
46348       SMZ(3)=-SUPER(33)
46349       SMZ(4)=-SUPER(34)
46350 C...Charginos
46351       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
46352       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
46353 C...Signed masses (extra minus from going to G-H convention).
46354       SMW(1)=-SUPER(51)
46355       SMW(2)=-SUPER(52)
46356  
46357 C... Neutralino Mixing.
46358       DO 160 IN=1,4
46359         ZMIX(IN,1)= SUPER(38+4*(IN-1))
46360         ZMIX(IN,2)= SUPER(37+4*(IN-1))
46361         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
46362         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
46363   160 CONTINUE
46364 C...Chargino Mixing (PYTHIA same angle as HERWIG).
46365       THX=1D0
46366       THY=1D0
46367       IF (SUPER(53).GT.0) THX=-1D0
46368       IF (SUPER(54).GT.0) THY=-1D0
46369       UMIX(1,1) = -SIN(SUPER(53))
46370       UMIX(1,2) = -COS(SUPER(53))
46371       UMIX(2,1) = -THX*COS(SUPER(53))
46372       UMIX(2,2) = THX*SIN(SUPER(53))
46373       VMIX(1,1) = -SIN(SUPER(54))
46374       VMIX(1,2) = -COS(SUPER(54))
46375       VMIX(2,1) = -THY*COS(SUPER(54))
46376       VMIX(2,2) = THY*SIN(SUPER(54))
46377 C...Sfermion mixing (PYTHIA same angle as ISAJET)
46378       SFMIX(5,1)=COS(SUPER(63))
46379       SFMIX(5,2)=SIN(SUPER(63))
46380       SFMIX(5,3)=-SIN(SUPER(63))
46381       SFMIX(5,4)=COS(SUPER(63))
46382       SFMIX(6,1)=COS(SUPER(61))
46383       SFMIX(6,2)=SIN(SUPER(61))
46384       SFMIX(6,3)=-SIN(SUPER(61))
46385       SFMIX(6,4)=COS(SUPER(61))
46386       SFMIX(15,1)=COS(SUPER(65))
46387       SFMIX(15,2)=SIN(SUPER(65))
46388       SFMIX(15,3)=-SIN(SUPER(65))
46389       SFMIX(15,4)=COS(SUPER(65))
46390  
46391       IF (MSTP(122).NE.0) THEN
46392 C...Print a few lines to make the user know what's happening
46393         ISAVER=VISAJE()
46394         WRITE(MSTU(11),5000) DOC, ISAVER
46395         WRITE(MSTU(11),5100)
46396         IF (IMODEL.EQ.1) THEN
46397           WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU),
46398      &         MTOP
46399           WRITE(MSTU(11),5300)
46400         ENDIF
46401         WRITE(MSTU(11),5500) 'Pole masses'
46402         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
46403         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
46404      &       ,(SUPER(IP),IP=19,25,2)
46405         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
46406      &       ,IP=1,2)
46407         WRITE(MSTU(11),5400)
46408         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
46409         WRITE(MSTU(11),5400)
46410         WRITE(MSTU(11),5500) 'EW scale mixing structure'
46411         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
46412         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
46413      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
46414         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
46415      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
46416      &       ),(SFMIX(15,J),J=3,4)
46417         WRITE(MSTU(11),5400)
46418         WRITE(MSTU(11),6450) RMSS(18)
46419         WRITE(MSTU(11),5400)
46420         WRITE(MSTU(11),5500) 'Couplings'
46421         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
46422         WRITE(MSTU(11),5400)
46423       ENDIF
46424  
46425 C...Call FeynHiggs to improve Higgs sector if requested
46426       IF (IMSS(4).EQ.3) THEN
46427         IF (MSTP(122).NE.0) WRITE(MSTU(11),'(1x,"*"/1x,"*",A)')
46428      &       ' (PYSUGI:) Now calling FeynHiggs.'
46429         CALL PYFEYN(IERR)
46430         IF (IERR.EQ.0) THEN
46431           IMSS(4)=2
46432           IF (MSTP(122).NE.0) THEN
46433             WRITE(MSTU(11),5400)
46434             WRITE(MSTU(11),5500)
46435      &           'Corrected Higgs masses and mixing'
46436             WRITE(MSTU(11),6000) PMAS(25,1),PMAS(35,1),PMAS(36,1),
46437      &           PMAS(37,1)
46438             WRITE(MSTU(11),6450) RMSS(18)
46439             WRITE(MSTU(11),5400)
46440           ENDIF
46441         ENDIF
46442       ENDIF
46443  
46444       IF (MSTP(122).NE.0) WRITE(MSTU(11),6500)
46445  
46446 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
46447 C...output by ISASUSY.
46448       IMSS(4)=MAX(2,IMSS(4))
46449  
46450  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.52: PYTHIA/ISASUSY '
46451      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
46452      &     ,1x,'-',1x,'P. Skands / S. Mrenna'/1x,'*',2x,A/1x,'*')
46453  5100 FORMAT(1x,'*',1x,'ISASUSY Input:'/1x,'*',1x,'----------------')
46454  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
46455      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
46456  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUSY Output:'/1x,'*',1x
46457      &     ,'----------------')
46458  5400 FORMAT(1x,'*',1x,A)
46459  5500 FORMAT(1x,'*',1x,A,':')
46460  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
46461      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
46462  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
46463      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
46464      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
46465      &     ,1x))
46466  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
46467      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
46468      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
46469      &     .2,1x))
46470  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
46471      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
46472      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
46473  6000 FORMAT(1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
46474      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
46475  6050 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
46476      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x),3x,'(Before FeynHiggs)')
46477  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
46478      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
46479      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
46480      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
46481      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
46482      &     ,1x,F6.3,1x),'|')
46483  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
46484      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
46485      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
46486      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
46487      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
46488  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
46489      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
46490      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
46491      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
46492      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
46493      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
46494      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
46495  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
46496      &     ,4x,'Alpha_GUT = ',F8.2)
46497  6450 FORMAT(1x,'*',3x,'Alpha_Higgs = ',F8.4)
46498  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
46499  
46500  9999 RETURN
46501       END
46502  
46503 C*********************************************************************
46504  
46505 C...PYFEYN
46506 C...Interface to FeynHiggs for MSSM Higgs sector.
46507 C...Pythia6.402: Updated to FeynHiggs v.2.3.0+ w/ DOUBLE COMPLEX
46508 C...P. Skands
46509  
46510       SUBROUTINE PYFEYN(IERR)
46511  
46512 C...Double precision and integer declarations.
46513       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46514       IMPLICIT INTEGER(I-N)
46515       INTEGER PYK,PYCHGE,PYCOMP
46516 C...Commonblocks.
46517       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46518       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46519 C...SUSY blocks
46520       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46521 C...FeynHiggs variables
46522       DOUBLE PRECISION RMHIGG(4)
46523       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
46524       DOUBLE COMPLEX DMU,
46525      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
46526      &     DM1, DM2, DM3
46527 C...SLHA Common Block
46528       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46529      &     AU(3,3),AD(3,3),AE(3,3)
46530       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYLH3P/
46531  
46532       IERR=0
46533       CALL FHSETFLAGS(IERR,4,0,0,2,0,2,1,1)
46534       IF (IERR.NE.0) THEN
46535         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETFLAGS.'
46536      &       //'Will not use FeynHiggs for this run.')
46537         RETURN
46538       ENDIF
46539       Q=RMSOFT(0)
46540       DMB=PMAS(5,1)
46541       DMT=PMAS(6,1)
46542       DMZ=PMAS(23,1)
46543       DMW=PMAS(24,1)
46544       DMA=PMAS(36,1)
46545       DM1=RMSOFT(1)
46546       DM2=RMSOFT(2)
46547       DM3=RMSOFT(3)
46548       DTANB=RMSS(5)
46549       DMU=RMSS(4)
46550       DM3SL=RMSOFT(33)
46551       DM3SE=RMSOFT(36)
46552       DM3SQ=RMSOFT(43)
46553       DM3SU=RMSOFT(46)
46554       DM3SD=RMSOFT(49)
46555       DM2SL=RMSOFT(32)
46556       DM2SE=RMSOFT(35)
46557       DM2SQ=RMSOFT(42)
46558       DM2SU=RMSOFT(45)
46559       DM2SD=RMSOFT(48)
46560       DM1SL=RMSOFT(31)
46561       DM1SE=RMSOFT(34)
46562       DM1SQ=RMSOFT(41)
46563       DM1SU=RMSOFT(44)
46564       DM1SD=RMSOFT(47)
46565       AE33=AE(3,3)
46566       AE22=AE(2,2)
46567       AE11=AE(1,1)
46568       AU33=AU(3,3)
46569       AU22=AU(2,2)
46570       AU11=AU(1,1)
46571       AD33=AD(3,3)
46572       AD22=AD(2,2)
46573       AD11=AD(1,1)
46574       CALL FHSETPARA(IERR, 1D0, DMT, DMB, DMW, DMZ, DTANB,
46575      &     DMA,0D0, DM3SL, DM3SE, DM3SQ, DM3SU, DM3SD,
46576      &     DM2SL, DM2SE, DM2SQ, DM2SU, DM2SD,
46577      &     DM1SL, DM1SE, DM1SQ, DM1SU, DM1SD,DMU,
46578      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
46579      &     DM1, DM2, DM3, 0D0, 0D0,Q,Q,Q)
46580       IF (IERR.NE.0) THEN
46581         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETPARA.'
46582      &       //' Will not use FeynHiggs for this run.')
46583         RETURN
46584       ENDIF
46585 C...  Get Higgs masses & alpha_eff. (UHIGGS redundant here, only for CPV)
46586       SAEFF=0D0
46587       CALL FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
46588       IF (IERR.NE.0) THEN
46589         CALL PYERRM(11,'(PYFEYN:) Caught error from FHHIG'//
46590      &       'GSCORR. Will not use FeynHiggs for this run.')
46591         RETURN
46592       ENDIF
46593       ALPHA = ASIN(DBLE(SAEFF))
46594       R=RMSS(18)/ALPHA
46595       IF (R.LT.0D0.OR.ABS(R).GT.1.2D0.OR.ABS(R).LT.0.8D0) THEN
46596         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
46597         WRITE(MSTU(11),*) '   Old Alpha:', RMSS(18)
46598         WRITE(MSTU(11),*) '   New Alpha:', ALPHA
46599       ENDIF
46600       IF (RMHIGG(1).LT.0.85D0*PMAS(25,1).OR.RMHIGG(1).GT.
46601      &       1.15D0*PMAS(25,1)) THEN
46602         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
46603         WRITE(MSTU(11),*) '   Old m(h0):', PMAS(25,1)
46604         WRITE(MSTU(11),*) '   New m(h0):', RMHIGG(1)
46605       ENDIF
46606       RMSS(18)=ALPHA
46607       PMAS(25,1)=RMHIGG(1)
46608       PMAS(35,1)=RMHIGG(2)
46609       PMAS(36,1)=RMHIGG(3)
46610       PMAS(37,1)=RMHIGG(4)
46611  
46612       RETURN
46613       END
46614  
46615 C*********************************************************************
46616  
46617 C...PYRNMQ
46618 C...Determines the running mass of Squarks.
46619  
46620       FUNCTION PYRNMQ(ID,DTERM)
46621  
46622 C...Double precision and integer declarations.
46623       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46624       IMPLICIT INTEGER(I-N)
46625       INTEGER PYK,PYCHGE,PYCOMP
46626 C...Commonblock.
46627       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46628       SAVE /PYMSSM/
46629  
46630 C...Local variables.
46631       DOUBLE PRECISION PI,R
46632       DOUBLE PRECISION TOL
46633       DOUBLE PRECISION CI(3)
46634       EXTERNAL PYALPS
46635       DOUBLE PRECISION PYALPS
46636       DATA TOL/0.001D0/
46637       DATA PI,R/3.141592654D0,.61803399D0/
46638       DATA CI/0.47D0,0.07D0,0.02D0/
46639  
46640       C=1D0-R
46641       CA=CI(ID)
46642       AG=(0.71D0)**2/4D0/PI
46643       AG=RMSS(20)
46644       XM0=RMSS(8)
46645       XMG=RMSS(1)
46646       XM02=XM0*XM0
46647       XMG2=XMG*XMG
46648  
46649       AS=PYALPS(XM02+6D0*XMG2)
46650       CG=8D0/9D0*((AS/AG)**2-1D0)
46651       BX=XM02+(CA+CG)*XMG2+DTERM
46652       AX=MIN(50D0**2,0.5D0*BX)
46653       CX=MAX(2000D0**2,2D0*BX)
46654  
46655       X0=AX
46656       X3=CX
46657       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
46658         X1=BX
46659         X2=BX+C*(CX-BX)
46660       ELSE
46661         X2=BX
46662         X1=BX-C*(BX-AX)
46663       ENDIF
46664       AS1=PYALPS(X1)
46665       CG=8D0/9D0*((AS1/AG)**2-1D0)
46666       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
46667       AS2=PYALPS(X2)
46668       CG=8D0/9D0*((AS2/AG)**2-1D0)
46669       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
46670   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
46671         IF(F2.LT.F1) THEN
46672           X0=X1
46673           X1=X2
46674           X2=R*X1+C*X3
46675           F1=F2
46676           AS2=PYALPS(X2)
46677           CG=8D0/9D0*((AS2/AG)**2-1D0)
46678           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
46679         ELSE
46680           X3=X2
46681           X2=X1
46682           X1=R*X2+C*X0
46683           F2=F1
46684           AS1=PYALPS(X1)
46685           CG=8D0/9D0*((AS1/AG)**2-1D0)
46686           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
46687         ENDIF
46688         GOTO 100
46689       ENDIF
46690       IF(F1.LT.F2) THEN
46691         PYRNMQ=X1
46692         XMIN=X1
46693       ELSE
46694         PYRNMQ=X2
46695         XMIN=X2
46696       ENDIF
46697  
46698       RETURN
46699       END
46700  
46701 C*********************************************************************
46702  
46703 C...PYTHRG
46704 C...Calculates the mass eigenstates of the third generation sfermions.
46705 C...Created:  5-31-96
46706  
46707       SUBROUTINE PYTHRG
46708  
46709 C...Double precision and integer declarations.
46710       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46711       IMPLICIT INTEGER(I-N)
46712       INTEGER PYK,PYCHGE,PYCOMP
46713 C...Parameter statement to help give large particle numbers.
46714       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46715      &KEXCIT=4000000,KDIMEN=5000000)
46716 C...Commonblocks.
46717       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46718       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46719       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46720       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46721      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46722       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
46723  
46724 C...Local variables.
46725       DOUBLE PRECISION BETA
46726       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
46727       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
46728       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
46729       DOUBLE PRECISION ATR,AMQR,AMQL
46730       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
46731       INTEGER IF,I,J,II,JJ,IT,L
46732       LOGICAL DTERM
46733       DATA SMALL/1D-3/
46734       DATA ID1/10,10,13/
46735       DATA ID2/5,6,15/
46736       DATA ID3/15,16,17/
46737       DATA ID4/11,12,14/
46738       DATA DTERM/.TRUE./
46739  
46740       XMZ2=PMAS(23,1)**2
46741       XMW2=PMAS(24,1)**2
46742       TANB=RMSS(5)
46743       XMU=-RMSS(4)
46744       BETA=ATAN(TANB)
46745       COS2B=COS(2D0*BETA)
46746  
46747 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
46748  
46749       IOPT=IMSS(5)
46750       IF(IOPT.EQ.1) THEN
46751         CTT=DCOS(RMSS(27))
46752         CTT2=CTT**2
46753         STT=DSIN(RMSS(27))
46754         STT2=STT**2
46755         XM12=RMSS(10)**2
46756         XM22=RMSS(12)**2
46757         XMQL2=CTT2*XM12+STT2*XM22
46758         XMQR2=STT2*XM12+CTT2*XM22
46759         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
46760         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46761         RMSS(16)=ATOP
46762 C......SUBTRACT OUT D-TERM AND FERMION MASS
46763         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
46764         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
46765         IF(XMQL2.GE.0D0) THEN
46766           RMSS(10)=SQRT(XMQL2)
46767         ELSE
46768           RMSS(10)=-SQRT(-XMQL2)
46769         ENDIF
46770         IF(XMQR2.GE.0D0) THEN
46771           RMSS(12)=SQRT(XMQR2)
46772         ELSE
46773           RMSS(12)=-SQRT(-XMQR2)
46774         ENDIF
46775  
46776 C SAME FOR BOTTOM SQUARK
46777         CTT=DCOS(RMSS(26))
46778         CTT2=CTT**2
46779         STT=DSIN(RMSS(26))
46780         STT2=STT**2
46781         XM22=RMSS(11)**2
46782         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
46783         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
46784         IF(ABS(CTT).GE..9999D0) THEN
46785           ABOT=-XMU*TANB
46786           XMQR2=RMSS(11)**2
46787         ELSEIF(ABS(CTT).LE.1D-4) THEN
46788           ABOT=-XMU*TANB
46789           XMQR2=RMSS(11)**2
46790         ELSE
46791           XM12=(XMQL2-STT2*XM22)/CTT2
46792           XMQR2=STT2*XM12+CTT2*XM22
46793           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46794         ENDIF
46795         RMSS(15)=ABOT
46796 C......SUBTRACT OUT D-TERM AND FERMION MASS
46797         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
46798         IF(XMQR2.GE.0D0) THEN
46799           RMSS(11)=SQRT(XMQR2)
46800         ELSE
46801           RMSS(11)=-SQRT(-XMQR2)
46802         ENDIF
46803 C SAME FOR TAU SLEPTON
46804         CTT=DCOS(RMSS(28))
46805         CTT2=CTT**2
46806         STT=DSIN(RMSS(28))
46807         STT2=STT**2
46808         XM12=RMSS(13)**2
46809         XM22=RMSS(14)**2
46810         XMQL2=CTT2*XM12+STT2*XM22
46811         XMQR2=STT2*XM12+CTT2*XM22
46812         XMFR=PMAS(15,1)
46813         XMF2=XMFR**2
46814         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
46815         RMSS(17)=ATAU
46816 C......SUBTRACT OUT D-TERM AND FERMION MASS
46817         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
46818         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
46819         IF(XMQL2.GE.0D0) THEN
46820           RMSS(13)=SQRT(XMQL2)
46821         ELSE
46822           RMSS(13)=-SQRT(-XMQL2)
46823         ENDIF
46824         IF(XMQR2.GE.0D0) THEN
46825           RMSS(14)=SQRT(XMQR2)
46826         ELSE
46827           RMSS(14)=-SQRT(-XMQR2)
46828         ENDIF
46829       ENDIF
46830       DO 170 L=1,3
46831         AMQL=RMSS(ID1(L))
46832         IF(AMQL.LT.0D0) THEN
46833           XMQL2=-AMQL**2
46834         ELSE
46835           XMQL2=AMQL**2
46836         ENDIF
46837         ATR=RMSS(ID3(L))
46838         AMQR=RMSS(ID4(L))
46839         IF(AMQR.LT.0D0) THEN
46840           XMQR2=-AMQR**2
46841         ELSE
46842           XMQR2=AMQR**2
46843         ENDIF
46844         IF=ID2(L)
46845         XMF=PYMRUN(IF,PMAS(6,1)**2)
46846         XMF2=XMF**2
46847         AM2(1,1)=XMQL2+XMF2
46848         AM2(2,2)=XMQR2+XMF2
46849         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
46850         IF(DTERM) THEN
46851           IF(L.EQ.1) THEN
46852             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
46853             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
46854             AM2(1,2)=XMF*(ATR+XMU*TANB)
46855           ELSEIF(L.EQ.2) THEN
46856             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
46857             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
46858             AM2(1,2)=XMF*(ATR+XMU/TANB)
46859           ELSEIF(L.EQ.3) THEN
46860             IF(IMSS(8).EQ.1) THEN
46861               AM2(1,1)=RMSS(6)**2
46862               AM2(2,2)=RMSS(7)**2
46863               AM2(1,2)=0D0
46864               RMSS(13)=RMSS(6)
46865               RMSS(14)=RMSS(7)
46866             ELSE
46867               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
46868               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
46869               AM2(1,2)=XMF*(ATR+XMU*TANB)
46870             ENDIF
46871           ENDIF
46872         ENDIF
46873         AM2(2,1)=AM2(1,2)
46874         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
46875         IF(DETM.LT.0D0) THEN
46876           WRITE(MSTU(11),*) ID2(L),DETM,AM2
46877           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
46878         ENDIF
46879         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
46880         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
46881         XMF12=SAME-DIFF
46882         XMF22=SAME+DIFF
46883         IT=0
46884         IF(XMF22-XMF12.GT.0D0) THEN
46885           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
46886           RT(2,2) = RT(1,1)
46887           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
46888      &    AM2(1,2)/(XMF22-XMF12))
46889           RT(2,1) = -RT(1,2)
46890         ELSE
46891           RT(1,1) = 1D0
46892           RT(2,2) = RT(1,1)
46893           RT(1,2) = 0D0
46894           RT(2,1) = -RT(1,2)
46895         ENDIF
46896   100   CONTINUE
46897         IT=IT+1
46898  
46899         DO 140 I=1,2
46900           DO 130 JJ=1,2
46901             DI(I,JJ)=0D0
46902             DO 120 II=1,2
46903               DO 110 J=1,2
46904                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
46905   110         CONTINUE
46906   120       CONTINUE
46907   130     CONTINUE
46908   140   CONTINUE
46909  
46910         IF(DI(1,1).GT.DI(2,2)) THEN
46911           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
46912           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
46913           WRITE(MSTU(11),*) AM2
46914           WRITE(MSTU(11),*) DI
46915           WRITE(MSTU(11),*) RT
46916           DI(1,1)=-RT(2,1)
46917           DI(2,2)=RT(1,2)
46918           DI(1,2)=-RT(2,2)
46919           DI(2,1)=RT(1,1)
46920           DO 160 I=1,2
46921             DO 150 J=1,2
46922               RT(I,J)=DI(I,J)
46923   150       CONTINUE
46924   160     CONTINUE
46925           GOTO 100
46926         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
46927           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
46928      &    ' OFF DIAGONAL ELEMENTS '
46929           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
46930           WRITE(MSTU(11),*) DI
46931           WRITE(MSTU(11),*) ' ROTATION = ',RT
46932 C...STOP
46933         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
46934           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
46935      &    ' NEGATIVE MASSES '
46936           CALL PYSTOP(111)
46937         ENDIF
46938         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
46939         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
46940         SFMIX(IF,1)=RT(1,1)
46941         SFMIX(IF,2)=RT(1,2)
46942         SFMIX(IF,3)=RT(2,1)
46943         SFMIX(IF,4)=RT(2,2)
46944   170 CONTINUE
46945  
46946 C.....TAU SNEUTRINO MASS...L=3
46947  
46948       XARG=AM2(1,1)+XMW2*COS2B
46949       IF(XARG.LT.0D0) THEN
46950         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
46951      &  ' FROM THE SUM RULE. '
46952         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
46953         RETURN
46954       ELSE
46955         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
46956       ENDIF
46957  
46958       RETURN
46959       END
46960 C*********************************************************************
46961  
46962 C...PYINOM
46963 C...Finds the mass eigenstates and mixing matrices for neutralinos
46964 C...and charginos.
46965  
46966       SUBROUTINE PYINOM
46967  
46968 C...Double precision and integer declarations.
46969       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46970       IMPLICIT INTEGER(I-N)
46971       INTEGER PYCOMP
46972 C...Parameter statement to help give large particle numbers.
46973       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46974      &KEXCIT=4000000,KDIMEN=5000000)
46975 C...Commonblocks.
46976       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46977       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46978       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46979       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46980      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46981       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
46982  
46983 C...Local variables.
46984       DOUBLE PRECISION XMW,XMZ,XM(4)
46985       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),AI(5,5)
46986       DOUBLE PRECISION WI(5),FV1(5),FV2(5),FV3(5)
46987       DOUBLE PRECISION COSW,SINW
46988       DOUBLE PRECISION XMU
46989       DOUBLE PRECISION TANB,COSB,SINB
46990       DOUBLE PRECISION XM1,XM2,XM3,BETA
46991       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
46992       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
46993       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
46994       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
46995       DOUBLE PRECISION PYALPS,PYALEM
46996       DOUBLE PRECISION PYRNM3
46997       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
46998       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
46999       DATA KFNCHI/1000022,1000023,1000025,1000035/
47000  
47001       IOPT=IMSS(2)
47002       IF(IMSS(1).EQ.2) THEN
47003         IOPT=1
47004       ENDIF
47005 C...M1, M2, AND M3 ARE INDEPENDENT
47006       IF(IOPT.EQ.0) THEN
47007         XM1=RMSS(1)
47008         XM2=RMSS(2)
47009         XM3=RMSS(3)
47010       ELSEIF(IOPT.GE.1) THEN
47011         Q2=PMAS(23,1)**2
47012         AEM=PYALEM(Q2)
47013         A2=AEM/PARU(102)
47014         A1=AEM/(1D0-PARU(102))
47015         XM1=RMSS(1)
47016         XM2=RMSS(2)
47017         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
47018         IF(IOPT.EQ.1) THEN
47019           XM2=XM1*A2/A1*3D0/5D0
47020           RMSS(2)=XM2
47021         ELSEIF(IOPT.EQ.3) THEN
47022           XM1=XM2*5D0/3D0*A1/A2
47023           RMSS(1)=XM1
47024         ENDIF
47025         XM3=PYRNM3(XM2/A2)
47026         RMSS(3)=XM3
47027         IF(XM3.LE.0D0) THEN
47028           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
47029           CALL PYSTOP(105)
47030         ENDIF
47031       ENDIF
47032  
47033 C...GLUINO MASS
47034       IF(IMSS(3).EQ.1) THEN
47035         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
47036       ELSE
47037         AQ=0D0
47038         DO 110 I=1,4
47039           DO 100 ILR=1,2
47040             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47041             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
47042      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
47043   100     CONTINUE
47044   110   CONTINUE
47045  
47046         DO 130 I=5,6
47047           DO 120 ILR=1,2
47048             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47049             RM2=PMAS(I,1)**2/XM3**2
47050             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
47051             IF(ARG.GE.0D0) THEN
47052               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
47053               AX0=ABS(X0)
47054               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
47055               AX1=ABS(X1)
47056               IF(X0.EQ.1D0) THEN
47057                 AT=-1D0
47058                 BT=0.25D0
47059               ELSEIF(X0.EQ.0D0) THEN
47060                 AT=0D0
47061                 BT=-0.25D0
47062               ELSE
47063                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
47064      &          0.5D0*X0**2*LOG(AX0)
47065                 BT=(-1D0-2D0*X0)/4D0
47066               ENDIF
47067               IF(X1.EQ.1D0) THEN
47068                 AT=-1D0+AT
47069                 BT=0.25D0+BT
47070               ELSEIF(X1.EQ.0D0) THEN
47071                 AT=0D0+AT
47072                 BT=-0.25D0+BT
47073               ELSE
47074                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
47075      &          X1**2*LOG(AX1)+AT
47076                 BT=(-1D0-2D0*X1)/4D0+BT
47077               ENDIF
47078               AQ=AQ+AT+BT
47079             ELSE
47080               X0=0.5D0*(1D0+RM2-RM1)
47081               Y0=-0.5D0*SQRT(-ARG)
47082               AMGX0=SQRT(X0**2+Y0**2)
47083               AM1X0=SQRT((1D0-X0)**2+Y0**2)
47084               ARGX0=ATAN2(-X0,-Y0)
47085               AR1X0=ATAN2(1D0-X0,Y0)
47086               X1=X0
47087               Y1=-Y0
47088               AMGX1=AMGX0
47089               AM1X1=AM1X0
47090               ARGX1=ATAN2(-X1,-Y1)
47091               AR1X1=ATAN2(1D0-X1,Y1)
47092               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
47093      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
47094               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
47095               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
47096      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
47097               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
47098               AQ=AQ+AT+BT
47099             ENDIF
47100   120     CONTINUE
47101   130   CONTINUE
47102         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
47103      &  /(2D0*PARU(2))*(15D0+AQ))
47104       ENDIF
47105  
47106 C...NEUTRALINO MASSES
47107       DO 150 I=1,4
47108         DO 140 J=1,4
47109           AI(I,J)=0D0
47110   140   CONTINUE
47111   150 CONTINUE
47112       XMZ=PMAS(23,1)/100D0
47113       XMW=PMAS(24,1)/100D0
47114       XMU=RMSS(4)/100D0
47115       SINW=SQRT(PARU(102))
47116       COSW=SQRT(1D0-PARU(102))
47117       TANB=RMSS(5)
47118       BETA=ATAN(TANB)
47119       COSB=COS(BETA)
47120       SINB=TANB*COSB
47121
47122       XM2=XM2/100D0
47123       XM1=XM1/100D0
47124       
47125  
47126 C... Definitions:
47127 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
47128 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
47129       AR(1,1) = XM1*COS(RMSS(30))
47130       AI(1,1) = XM1*SIN(RMSS(30))
47131       AR(2,2) = XM2*COS(RMSS(31))
47132       AI(2,2) = XM2*SIN(RMSS(31))
47133       AR(3,3) = 0D0
47134       AR(4,4) = 0D0
47135       AR(1,2) = 0D0
47136       AR(2,1) = 0D0
47137       AR(1,3) = -XMZ*SINW*COSB
47138       AR(3,1) = AR(1,3)
47139       AR(1,4) = XMZ*SINW*SINB
47140       AR(4,1) = AR(1,4)
47141       AR(2,3) = XMZ*COSW*COSB
47142       AR(3,2) = AR(2,3)
47143       AR(2,4) = -XMZ*COSW*SINB
47144       AR(4,2) = AR(2,4)
47145       AR(3,4) = -XMU*COS(RMSS(33))
47146       AI(3,4) = -XMU*SIN(RMSS(33))
47147       AR(4,3) = -XMU*COS(RMSS(33))
47148       AI(4,3) = -XMU*SIN(RMSS(33))
47149 C      CALL PYEIG4(AR,WR,ZR)
47150       CALL PYEICG(5,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47151       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47152      & 'PROBLEM WITH PYEICG IN PYINOM ')
47153       DO 160 I=1,4
47154         INDEX(I)=I
47155         XM(I)=ABS(WR(I))
47156   160 CONTINUE
47157       DO 180 I=2,4
47158         K=I
47159         DO 170 J=I-1,1,-1
47160           IF(XM(K).LT.XM(J)) THEN
47161             ITMP=INDEX(J)
47162             XTMP=XM(J)
47163             INDEX(J)=INDEX(K)
47164             XM(J)=XM(K)
47165             INDEX(K)=ITMP
47166             XM(K)=XTMP
47167             K=K-1
47168           ELSE
47169             GOTO 180
47170           ENDIF
47171   170   CONTINUE
47172   180 CONTINUE
47173  
47174  
47175       DO 210 I=1,4
47176         K=INDEX(I)
47177         SMZ(I)=WR(K)*100D0
47178         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
47179         S=0D0
47180         DO 190 J=1,4
47181           S=S+ZR(J,K)**2+ZI(J,K)**2
47182   190   CONTINUE
47183         DO 200 J=1,4
47184           ZMIX(I,J)=ZR(J,K)/SQRT(S)
47185           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
47186           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
47187           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
47188   200   CONTINUE
47189   210 CONTINUE
47190  
47191 C...CHARGINO MASSES
47192 C.....Find eigenvectors of X X^*
47193       DO I=1,4
47194         DO J=1,4
47195           AR(I,J)=0D0
47196           AI(I,J)=0D0
47197         ENDDO
47198       ENDDO
47199       AI(1,1) = 0D0
47200       AI(2,2) = 0D0
47201       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
47202       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
47203       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
47204      &XMU*COS(RMSS(33))*SINB)
47205       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
47206      &XMU*SIN(RMSS(33))*SINB)
47207       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
47208      &XMU*COS(RMSS(33))*SINB)
47209       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
47210      &XMU*SIN(RMSS(33))*SINB)
47211       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47212       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47213      & 'PROBLEM WITH PYEICG IN PYINOM ')
47214       INDEX(1)=1
47215       INDEX(2)=2
47216       IF(WR(2).LT.WR(1)) THEN
47217         INDEX(1)=2
47218         INDEX(2)=1
47219       ENDIF
47220
47221  
47222       DO 240 I=1,2
47223         K=INDEX(I)
47224         SMW(I)=SQRT(WR(K))*100D0
47225         S=0D0
47226         DO 220 J=1,2
47227           S=S+ZR(J,K)**2+ZI(J,K)**2
47228   220   CONTINUE
47229         DO 230 J=1,2
47230           UMIX(I,J)=ZR(J,K)/SQRT(S)
47231           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
47232           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
47233           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
47234   230   CONTINUE
47235   240 CONTINUE
47236 C...Force chargino mass > neutralino mass
47237       IFRC=0
47238       IF(ABS(SMW(1)).LT.ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1)) THEN
47239         CALL PYERRM(18,'(PYINOM:) '//
47240      &      'forcing m(~chi+_1) > m(~chi0_1) + 2m(pi0)')
47241         SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
47242         IFRC=1
47243       ENDIF
47244       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
47245       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
47246  
47247 C.....Find eigenvectors of X^* X
47248       DO I=1,4
47249         DO J=1,4
47250           AR(I,J)=0D0
47251           AI(I,J)=0D0
47252           ZR(I,J)=0D0
47253           ZI(I,J)=0D0
47254         ENDDO
47255       ENDDO
47256       AI(1,1) = 0D0
47257       AI(2,2) = 0D0
47258       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
47259       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
47260       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
47261      &XMU*COS(RMSS(33))*COSB)
47262       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
47263      &XMU*SIN(RMSS(33))*COSB)
47264       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
47265      &XMU*COS(RMSS(33))*COSB)
47266       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
47267      &XMU*SIN(RMSS(33))*COSB)
47268       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
47269       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
47270      & 'PROBLEM WITH PYEICG IN PYINOM ')
47271       INDEX(1)=1
47272       INDEX(2)=2
47273       IF(WR(2).LT.WR(1)) THEN
47274         INDEX(1)=2
47275         INDEX(2)=1
47276       ENDIF
47277  
47278       SIMAG=0D0
47279       DO 270 I=1,2
47280         K=INDEX(I)
47281         S=0D0
47282         DO 250 J=1,2
47283           S=S+ZR(J,K)**2+ZI(J,K)**2
47284           SIMAG=SIMAG+ZI(J,K)**2
47285   250   CONTINUE
47286         DO 260 J=1,2
47287           VMIX(I,J)=ZR(J,K)/SQRT(S)
47288           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
47289           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
47290           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
47291   260   CONTINUE
47292   270 CONTINUE
47293
47294 C.....Simplify if no phases
47295       IF(SIMAG.LT.1D-6) THEN
47296         AR(1,1) = XM2*COS(RMSS(31))
47297         AR(2,2) = XMU*COS(RMSS(33))
47298         AR(1,2) = SQRT(2D0)*XMW*SINB
47299         AR(2,1) = SQRT(2D0)*XMW*COSB
47300         IKNT=0
47301  300    CONTINUE
47302         DO I=1,2
47303           DO J=1,2
47304             ZR(I,J)=0D0
47305           ENDDO
47306         ENDDO
47307
47308         DO I=1,2
47309           DO J=1,2
47310             DO K=1,2
47311               DO L=1,2
47312                 ZR(I,J)=ZR(I,J)+UMIX(I,K)*AR(K,L)*VMIX(J,L)
47313               ENDDO
47314             ENDDO
47315           ENDDO
47316         ENDDO
47317         VMIX(1,1)=VMIX(1,1)*SMW(1)/ZR(1,1)/100D0
47318         VMIX(1,2)=VMIX(1,2)*SMW(1)/ZR(1,1)/100D0
47319         VMIX(2,1)=VMIX(2,1)*SMW(2)/ZR(2,2)/100D0
47320         VMIX(2,2)=VMIX(2,2)*SMW(2)/ZR(2,2)/100D0
47321         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
47322           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
47323         ELSEIF(ZR(1,1).LT.0D0.OR.ZR(2,2).LT.0D0) THEN
47324           IKNT=IKNT+1
47325           GOTO 300
47326         ENDIF
47327 C.....Must deal with phases
47328       ELSE
47329         CAR(1,1) = XM2*CMPLX(COS(RMSS(31)),SIN(RMSS(31)))
47330         CAR(2,2) = XMU*CMPLX(COS(RMSS(33)),SIN(RMSS(33)))
47331         CAR(1,2) = SQRT(2D0)*XMW*SINB*CMPLX(1D0,0D0)
47332         CAR(2,1) = SQRT(2D0)*XMW*COSB*CMPLX(1D0,0D0)
47333
47334         IKNT=0
47335  310    CONTINUE
47336         DO I=1,2
47337           DO J=1,2
47338             CAI(I,J)=CMPLX(0D0,0D0)
47339           ENDDO
47340         ENDDO
47341
47342         DO I=1,2
47343           DO J=1,2
47344             DO K=1,2
47345               DO L=1,2
47346                 CAI(I,J)=CAI(I,J)+CMPLX(UMIX(I,K),-UMIXI(I,K))*CAR(K,L)*
47347      &           CMPLX(VMIX(J,L),VMIXI(J,L))
47348               ENDDO
47349             ENDDO
47350           ENDDO
47351         ENDDO
47352
47353         CA1=SMW(1)*CAI(1,1)/ABS(CAI(1,1))**2/100D0
47354         CA2=SMW(2)*CAI(2,2)/ABS(CAI(2,2))**2/100D0
47355         TEMPR=VMIX(1,1)
47356         TEMPI=VMIXI(1,1)
47357         VMIX(1,1)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
47358         VMIXI(1,1)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
47359         TEMPR=VMIX(1,2)
47360         TEMPI=VMIXI(1,2)
47361         VMIX(1,2)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
47362         VMIXI(1,2)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
47363         TEMPR=VMIX(2,1)
47364         TEMPI=VMIXI(2,1)
47365         VMIX(2,1)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
47366         VMIXI(2,1)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
47367         TEMPR=VMIX(2,2)
47368         TEMPI=VMIXI(2,2)
47369         VMIX(2,2)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
47370         VMIXI(2,2)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
47371         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
47372           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
47373         ELSEIF(DBLE(CA1).LT.0D0.OR.DBLE(CA2).LT.0D0.OR.
47374      &   ABS(IMAG(CA1)).GT.1D-3.OR.ABS(IMAG(CA2)).GT.1D-3) THEN
47375           IKNT=IKNT+1
47376           GOTO 310
47377         ENDIF
47378       ENDIF 
47379       RETURN
47380       END
47381  
47382 C*********************************************************************
47383  
47384 C...PYRNM3
47385 C...Calculates the running of M3, the SU(3) gluino mass parameter.
47386  
47387       FUNCTION PYRNM3(RGUT)
47388  
47389 C...Double precision and integer declarations.
47390       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47391       IMPLICIT INTEGER(I-N)
47392       INTEGER PYK,PYCHGE,PYCOMP
47393  
47394 C...Local variables.
47395       DOUBLE PRECISION R
47396       DOUBLE PRECISION TOL
47397       EXTERNAL PYALPS
47398       DOUBLE PRECISION PYALPS
47399       DATA TOL/0.001D0/
47400       DATA R/0.61803399D0/
47401  
47402       C=1D0-R
47403  
47404       BX=RGUT*PYALPS(RGUT**2)
47405       AX=MIN(50D0,BX*0.5D0)
47406       CX=MAX(2000D0,2D0*BX)
47407  
47408       X0=AX
47409       X3=CX
47410       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
47411         X1=BX
47412         X2=BX+C*(CX-BX)
47413       ELSE
47414         X2=BX
47415         X1=BX-C*(BX-AX)
47416       ENDIF
47417       AS1=PYALPS(X1**2)
47418       F1=ABS(X1-RGUT*AS1)
47419       AS2=PYALPS(X2**2)
47420       F2=ABS(X2-RGUT*AS2)
47421   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
47422         IF(F2.LT.F1) THEN
47423           X0=X1
47424           X1=X2
47425           X2=R*X1+C*X3
47426           F1=F2
47427           AS2=PYALPS(X2**2)
47428           F2=ABS(X2-RGUT*AS2)
47429         ELSE
47430           X3=X2
47431           X2=X1
47432           X1=R*X2+C*X0
47433           F2=F1
47434           AS1=PYALPS(X1**2)
47435           F1=ABS(X1-RGUT*AS1)
47436         ENDIF
47437         GOTO 100
47438       ENDIF
47439       IF(F1.LT.F2) THEN
47440         PYRNM3=X1
47441         XMIN=X1
47442       ELSE
47443         PYRNM3=X2
47444         XMIN=X2
47445       ENDIF
47446  
47447       RETURN
47448       END
47449  
47450 C*********************************************************************
47451  
47452 C...PYEIG4
47453 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
47454 C...Specific application: mixing in neutralino sector.
47455  
47456       SUBROUTINE PYEIG4(A,W,Z)
47457  
47458 C...Double precision and integer declarations.
47459       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47460       IMPLICIT INTEGER(I-N)
47461       INTEGER PYK,PYCHGE,PYCOMP
47462  
47463 C...Arrays: in call and local.
47464       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
47465  
47466 C...Coefficients of fourth-degree equation from matrix.
47467 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
47468       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
47469       B2=0D0
47470       DO 110 I=1,3
47471         DO 100 J=I+1,4
47472           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
47473   100   CONTINUE
47474   110 CONTINUE
47475       B1=0D0
47476       B0=0D0
47477       DO 120 I=1,4
47478         I1=MOD(I,4)+1
47479         I2=MOD(I+1,4)+1
47480         I3=MOD(I+2,4)+1
47481         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
47482      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
47483      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
47484         B0=B0+(-1D0)**(I+1)*A(1,I)*(
47485      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
47486      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
47487      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
47488   120 CONTINUE
47489  
47490 C...Coefficients of third-degree equation needed for
47491 C...separation into two second-degree equations.
47492 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
47493       C2=-B2
47494       C1=B1*B3-4D0*B0
47495       C0=-B1**2-B0*B3**2+4D0*B0*B2
47496       CQ=C1/3D0-C2**2/9D0
47497       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
47498       CQR=CQ**3+CR**2
47499  
47500 C...Cases with one or three real roots.
47501       IF(CQR.GE.0D0) THEN
47502         S1=(CR+SQRT(CQR))**(1D0/3D0)
47503         S2=(CR-SQRT(CQR))**(1D0/3D0)
47504         U=S1+S2-C2/3D0
47505       ELSE
47506         SABS=SQRT(-CQ)
47507         THE=ACOS(CR/SABS**3)/3D0
47508         SRE=SABS*COS(THE)
47509         U=2D0*SRE-C2/3D0
47510       ENDIF
47511  
47512 C...Find and solve two second-degree equations.
47513       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
47514       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
47515       Q1=U/2D0+SQRT(U**2/4D0-B0)
47516       Q2=U/2D0-SQRT(U**2/4D0-B0)
47517       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
47518         QSAV=Q1
47519         Q1=Q2
47520         Q2=QSAV
47521       ENDIF
47522       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
47523       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
47524       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
47525       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
47526  
47527 C...Order eigenvalues in asceding mass.
47528       W(1)=X(1)
47529       DO 150 I1=2,4
47530         DO 130 I2=I1-1,1,-1
47531           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
47532           W(I2+1)=W(I2)
47533   130   CONTINUE
47534   140   W(I2+1)=X(I1)
47535   150 CONTINUE
47536  
47537 C...Find equation system for eigenvectors.
47538       DO 250 I=1,4
47539         DO 170 J1=1,4
47540           D(J1,J1)=A(J1,J1)-W(I)
47541           DO 160 J2=J1+1,4
47542             D(J1,J2)=A(J1,J2)
47543             D(J2,J1)=A(J2,J1)
47544   160     CONTINUE
47545   170   CONTINUE
47546  
47547 C...Find largest element in matrix.
47548         DAMAX=0D0
47549         DO 190 J1=1,4
47550           DO 180 J2=1,4
47551             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
47552             JA=J1
47553             JB=J2
47554             DAMAX=ABS(D(J1,J2))
47555   180     CONTINUE
47556   190   CONTINUE
47557  
47558 C...Subtract others by multiple of row selected above.
47559         DAMAX=0D0
47560         DO 210 J3=JA+1,JA+3
47561           J1=J3-4*((J3-1)/4)
47562           RL=D(J1,JB)/D(JA,JB)
47563           DO 200 J2=1,4
47564             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
47565             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
47566             JC=J1
47567             JD=J2
47568             DAMAX=ABS(D(J1,J2))
47569   200     CONTINUE
47570   210   CONTINUE
47571  
47572 C...Do one more subtraction of a row.
47573         DAMAX=0D0
47574         DO 230 J3=JC+1,JC+3
47575           J1=J3-4*((J3-1)/4)
47576           IF(J1.EQ.JA) GOTO 230
47577           RL=D(J1,JD)/D(JC,JD)
47578           DO 220 J2=1,4
47579             IF(J2.EQ.JB) GOTO 220
47580             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
47581             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
47582             JE=J1
47583             DAMAX=ABS(D(J1,J2))
47584   220     CONTINUE
47585   230   CONTINUE
47586  
47587 C...Construct unnormalized eigenvector.
47588         JF1=JD+1-4*(JD/4)
47589         JF2=JD+2-4*((JD+1)/4)
47590         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
47591         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
47592         E(JF1)=-D(JE,JF2)
47593         E(JF2)=D(JE,JF1)
47594         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
47595         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
47596      &  D(JA,JB)
47597  
47598 C...Normalize and fill in final array.
47599         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
47600         SGN=(-1D0)**INT(PYR(0)+0.5D0)
47601         DO 240 J=1,4
47602           Z(I,J)=SGN*E(J)/EA
47603   240   CONTINUE
47604   250 CONTINUE
47605  
47606       RETURN
47607       END
47608  
47609 C*********************************************************************
47610  
47611 C...PYHGGM
47612 C...Determines the Higgs boson mass spectrum using several inputs.
47613  
47614       SUBROUTINE PYHGGM(ALPHA)
47615  
47616 C...Double precision and integer declarations.
47617       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47618       IMPLICIT INTEGER(I-N)
47619       INTEGER PYK,PYCHGE,PYCOMP
47620 C...Parameter statement to help give large particle numbers.
47621       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47622      &KEXCIT=4000000,KDIMEN=5000000)
47623 C...Commonblocks.
47624       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47625       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47626       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
47627       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47628       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
47629  
47630 C...Local variables.
47631       DOUBLE PRECISION AT,AB,XMU,TANB
47632       DOUBLE PRECISION ALPHA
47633       INTEGER IHOPT
47634       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
47635       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
47636       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
47637       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
47638  
47639       IHOPT=IMSS(4)
47640       IF(IHOPT.EQ.2) THEN
47641         ALPHA=RMSS(18)
47642         RETURN
47643       ENDIF
47644       AT=RMSS(16)
47645       AB=RMSS(15)
47646       DMGL=RMSS(3)
47647       XMU=RMSS(4)
47648       TANB=RMSS(5)
47649  
47650       DMA=RMSS(19)
47651       DTANB=TANB
47652       DMQ=RMSS(10)
47653       DMUR=RMSS(12)
47654       DMDR=RMSS(11)
47655       DMTOP=PMAS(6,1)
47656       DMC=PMAS(PYCOMP(KSUSY1+37),1)
47657       DAU=AT
47658       DAD=AB
47659       DMU=XMU
47660       RMSS(40)=0D0
47661       RMSS(41)=0D0
47662  
47663       IF(IHOPT.EQ.0) THEN
47664         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
47665      &  DMHCH,DSA,DCA,DTANBA)
47666       ELSEIF(IHOPT.EQ.1) THEN
47667         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
47668      &  DMHCH,DSA,DCA,DTANBA)
47669         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
47670      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
47671      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
47672         RMSS(40)=DDT
47673         RMSS(41)=DDB
47674         DMH=DMHP
47675         DHM=DHMP
47676         DMA=DAMP
47677         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
47678          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
47679          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
47680      & PMAS(PYCOMP(1000006),1),DSTOP2
47681         ENDIF
47682         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
47683          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
47684          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
47685      & PMAS(PYCOMP(2000006),1),DSTOP1
47686         ENDIF
47687         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
47688          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
47689          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
47690      & PMAS(PYCOMP(1000005),1),DSBOT2
47691         ENDIF
47692         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
47693          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
47694          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
47695      & PMAS(PYCOMP(2000005),1),DSBOT1
47696         ENDIF
47697  
47698       ELSEIF (IHOPT.EQ.3) THEN
47699 c...Use FeynHiggs to fix Higgs sector (cf feynhiggs.de)
47700 C...Currently only available for SLHA spectrum read-in.
47701         IF (IMSS(1).NE.11.AND.IMSS(1).NE.12.AND.IMSS(1).NE.13) THEN
47702           CALL PYERRM(11,'(PYHGGM:) FeynHiggs needs SLHA or ISASUSY'
47703      &         //' spectrum, change IMSS(1) or IMSS(4) option.')
47704         ENDIF
47705         ALPHA=RMSS(18)
47706         RETURN
47707       ENDIF
47708  
47709       ALPHA=ACOS(DCA)
47710  
47711       PMAS(25,1)=DMH
47712       PMAS(35,1)=DHM
47713       PMAS(36,1)=DMA
47714       PMAS(37,1)=DMHCH
47715  
47716       RETURN
47717       END
47718  
47719 C*********************************************************************
47720  
47721 C...PYSUBH
47722 C...This routine computes the renormalization group improved
47723 C...values of Higgs masses and couplings in the MSSM.
47724  
47725 C...Program based on the work by M. Carena, J.R. Espinosa,
47726 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
47727  
47728 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
47729 C...All masses in GeV units. MA is the CP-odd Higgs mass,
47730 C...MTOP is the physical top mass, MQ and MUR are the soft
47731 C...supersymmetry breaking mass parameters of left handed
47732 C...and right handed stops respectively, AU and AD are the
47733 C...stop and sbottom trilinear soft breaking terms,
47734 C...respectively,  and MU is the supersymmetric
47735 C...Higgs mass parameter. We use the  conventions from
47736 C...the physics report of Haber and Kane: left right
47737 C...stop mixing term proportional to (AU - MU/TANB)
47738 C...We use as input TANB defined at the scale MTOP
47739  
47740 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
47741 C...where MH and HM are the lightest and heaviest CP-even
47742 C...Higgs masses, MHCH is the charged Higgs mass and
47743 C...ALPHA is the Higgs mixing angle
47744 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
47745  
47746 C...Range of validity:
47747 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
47748 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
47749 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
47750 C...are the sbottom  mass eigenvalues, respectively. This
47751 C...range automatically excludes the existence of tachyons.
47752 C...For the charged Higgs mass computation, the method is
47753 C...valid if
47754 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
47755 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
47756 C...where M_SUSY**2 is the average of the squared stop mass
47757 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
47758 C...masses have been assumed to be of order of the stop ones
47759 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
47760  
47761       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
47762      &XMHCH,SA,CA,TANBA)
47763  
47764 C...Double precision and integer declarations.
47765       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47766       IMPLICIT INTEGER(I-N)
47767       INTEGER PYK,PYCHGE,PYCOMP
47768 C...Parameter statement to help give large particle numbers.
47769       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47770      &KEXCIT=4000000,KDIMEN=5000000)
47771 C...Commonblocks.
47772       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47773       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47774       COMMON/PYHTRI/HHH(7)
47775       SAVE /PYDAT1/,/PYDAT2/
47776  
47777 C...Local variables.
47778       DOUBLE PRECISION PYALEM,PYALPS
47779       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
47780       DOUBLE PRECISION XMHCH,SA,CA
47781       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
47782       DOUBLE PRECISION Q02
47783       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
47784       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
47785       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
47786       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
47787       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
47788       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
47789       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
47790       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
47791  
47792       XMZ = PMAS(23,1)
47793       Q02=XMZ**2
47794       AEM=PYALEM(Q02)
47795       ALP1=AEM/(1D0-PARU(102))
47796       ALP2=AEM/PARU(102)
47797       ALPH3Z=PYALPS(Q02)
47798  
47799       ALP1 = 0.0101D0
47800       ALP2 = 0.0337D0
47801       ALPH3Z = 0.12D0
47802  
47803       V = 174.1D0
47804       PI = PARU(1)
47805       TANBA = TANB
47806       TANBT = TANB
47807  
47808 C...MBOTTOM(MTOP) = 3. GEV
47809       XMB = PYMRUN(5,XMTOP**2)
47810       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
47811      &LOG(XMTOP**2/XMZ**2))
47812  
47813 C...RMTOP= RUNNING TOP QUARK MASS
47814       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
47815       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
47816       T = LOG(XMS**2/XMTOP**2)
47817       SINB = TANB/((1D0 + TANB**2)**0.5D0)
47818       COSB = SINB/TANB
47819 C...IF(MA.LE.XMTOP) TANBA = TANBT
47820       IF(XMA.GT.XMTOP)
47821      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
47822      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
47823      &LOG(XMA**2/XMTOP**2))
47824  
47825       SINBT = TANBT/SQRT(1D0 + TANBT**2)
47826       COSBT = 1D0/SQRT(1D0 + TANBT**2)
47827 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
47828       G1 = SQRT(ALP1*4D0*PI)
47829       G2 = SQRT(ALP2*4D0*PI)
47830       G3 = SQRT(ALP3*4D0*PI)
47831       HU = RMTOP/V/SINBT
47832       HD =  XMB/V/COSBT
47833       HU2=HU*HU
47834       HD2=HD*HD
47835       HU4=HU2*HU2
47836       HD4=HD2*HD2
47837       AU2=AU**2
47838       AD2=AD**2
47839       XMS2=XMS**2
47840       XMS3=XMS**3
47841       XMS4=XMS2*XMS2
47842       XMU2=XMU*XMU
47843       PI2=PI*PI
47844  
47845       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
47846       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
47847       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
47848      &+ 3D0*(AU + AD)**2/XMS2)/6D0
47849       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
47850      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
47851      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
47852      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
47853      &-  16D0*G3**2) *T/16D0/PI2)
47854       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
47855      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
47856      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
47857      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
47858      &-  16D0*G3**2) *T/16D0/PI2)
47859       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
47860      &(HU2 + HD2)*T/16D0/PI2)
47861      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
47862      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
47863      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
47864      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
47865      &-  16D0*G3**2) *T/16D0/PI2)
47866      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
47867      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
47868      &-  16D0*G3**2) *T/16D0/PI2)
47869       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
47870      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
47871      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
47872      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
47873      &XMS4)*
47874      &(1+ (6D0*HU2 -2D0* HD2
47875      &-  16D0*G3**2) *T/16D0/PI2)
47876      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
47877      &XMS4)*
47878      &(1+ (6D0*HD2 -2D0* HU2/2D0
47879      &-  16D0*G3**2) *T/16D0/PI2)
47880       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
47881      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
47882      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
47883      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
47884       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
47885      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47886      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
47887      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47888       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
47889      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47890      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
47891      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
47892       HHH(1)=XLAM1
47893       HHH(2)=XLAM2
47894       HHH(3)=XLAM3
47895       HHH(4)=XLAM4
47896       HHH(5)=XLAM5
47897       HHH(6)=XLAM6
47898       HHH(7)=XLAM7
47899       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
47900      &2D0* XLAM6*SINBT*COSBT
47901      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
47902      &+ XLAM5*COSBT**2)
47903       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
47904      &XLAM6*COSBT**2
47905      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
47906      &2D0* XLAM6* COSBT*SINBT
47907      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47908      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
47909      &((XLAM1* COSBT**2 +2D0*
47910      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
47911      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
47912      &*SINBT**2
47913      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
47914      &+ XLAM4) + XLAM6*COSBT**2
47915      &+ XLAM7* SINBT**2))
47916  
47917       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
47918       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
47919       XHM = SQRT(XHM2)
47920       XMH = SQRT(XMH2)
47921       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
47922       XMHCH = SQRT(XMHCH2)
47923  
47924       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
47925      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
47926      &XLAM6* COSBT*SINBT
47927      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
47928      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47929      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
47930      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
47931  
47932       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
47933      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
47934      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
47935      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
47936      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
47937      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
47938      &XLAM6* COSBT*SINBT
47939      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
47940      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
47941      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
47942  
47943       SA = -SINALP
47944       CA = -COSALP
47945  
47946   100 CONTINUE
47947  
47948       RETURN
47949       END
47950  
47951 C*********************************************************************
47952  
47953 C...PYPOLE
47954 C...This subroutine computes the CP-even higgs and CP-odd pole
47955 c...Higgs masses and mixing angles.
47956  
47957 C...Program based on the work by M. Carena, M. Quiros
47958 C...and C.E.M. Wagner, "Effective potential methods and
47959 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
47960  
47961 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
47962 C...AT,AB,MU
47963 C...where MCHI is the largest chargino mass, MA is the running
47964 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
47965 C...expectaion values at the scale MTOP, MQ is the third generation
47966 C...left handed squark mass parameter, MUR is the third generation
47967 C...right handed stop mass parameter, MDR is the third generation
47968 C...right handed sbottom mass parameter, MTOP is the pole top quark
47969 C...mass; AT,AB are the soft supersymmetry breaking trilinear
47970 C...couplings of the stop and sbottoms, respectively, and MU is the
47971 C...supersymmetric mass parameter
47972  
47973 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
47974 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
47975 C...masses are given, what makes the running of the program
47976 c...much faster and it is quite generally a good approximation
47977 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
47978 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
47979 c...and if IHIGGS=3, then h,H,A polarizations are computed
47980  
47981 C...Output: MH and MHP which are the lightest CP-even Higgs running
47982 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
47983 C...Higgs running and pole masses, repectively; SA and CA are the
47984 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
47985 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
47986 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
47987 C...the value of TANB at the CP-odd Higgs mass scale
47988  
47989 C...This subroutine makes use of CERN library subroutine
47990 C...integration package, which makes the computation of the
47991 C...pole Higgs masses somewhat faster. We thank P. Janot for this
47992 C...improvement. Those who are not able to call the CERN
47993 C...libraries, please use the subroutine SUBHPOLE2.F, which
47994 C...although somewhat slower, gives identical results
47995  
47996       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
47997      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
47998  
47999 C...Double precision and integer declarations.
48000       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48001       IMPLICIT INTEGER(I-N)
48002  
48003 C...Parameters.
48004       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48005       SAVE /PYDAT1/
48006       INTEGER PYK,PYCHGE,PYCOMP
48007  
48008 C...Local variables.
48009       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
48010      &SSBOT2(2),B(2,2),COUPB(2,2),
48011      &HCOUPT(2,2),HCOUPB(2,2),
48012      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
48013  
48014       DELTA(1,1) = 1D0
48015       DELTA(2,2) = 1D0
48016       DELTA(1,2) = 0D0
48017       DELTA(2,1) = 0D0
48018       V = 174.1D0
48019       XMZ=91.18D0
48020       PI=PARU(1)
48021       RXMT=PYMRUN(6,XMT**2)
48022       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
48023      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
48024  
48025       SINB = TANB/(TANB**2+1D0)**0.5D0
48026       COSB = 1D0/(TANB**2+1D0)**0.5D0
48027       COS2B = SINB**2 - COSB**2
48028       SINBPA = SINB*CA + COSB*SA
48029       COSBPA = COSB*CA - SINB*SA
48030       RMBOT = PYMRUN(5,XMT**2)
48031       XMQ2 = XMQ**2
48032       XMUR2 = XMUR**2
48033       IF(XMUR.LT.0D0) XMUR2=-XMUR2
48034       XMDR2 = XMDR**2
48035       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
48036       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
48037       IF(XMST11.LT.0D0) GOTO 500
48038       IF(XMST22.LT.0D0) GOTO 500
48039       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
48040       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
48041       IF(XMSB11.LT.0D0) GOTO 500
48042       IF(XMSB22.LT.0D0) GOTO 500
48043 C      WMST11 = RXMT**2 + XMQ2
48044 C      WMST22 = RXMT**2 + XMUR2
48045       XMST12 = RXMT*(AT - XMU/TANB)
48046       XMSB12 = RMBOT*(AB - XMU*TANB)
48047  
48048 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48049 C...STOP EIGENVALUES CALCULATION
48050 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48051  
48052       STOP12 = 0.5D0*(XMST11+XMST22) +
48053      &0.5D0*((XMST11+XMST22)**2 -
48054      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
48055       STOP22 = 0.5D0*(XMST11+XMST22) -
48056      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
48057      &XMST12**2))**0.5D0
48058  
48059       IF(STOP22.LT.0D0) GOTO 500
48060       SSTOP2(1) = STOP12
48061       SSTOP2(2) = STOP22
48062       STOP1 = STOP12**0.5D0
48063       STOP2 = STOP22**0.5D0
48064 C      STOP1W = STOP1
48065 C      STOP2W = STOP2
48066  
48067       IF(XMST12.EQ.0D0) XST11 = 1D0
48068       IF(XMST12.EQ.0D0) XST12 = 0D0
48069       IF(XMST12.EQ.0D0) XST21 = 0D0
48070       IF(XMST12.EQ.0D0) XST22 = 1D0
48071  
48072       IF(XMST12.EQ.0D0) GOTO 110
48073  
48074   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48075       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48076       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48077       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48078  
48079   110 T(1,1) = XST11
48080       T(2,2) = XST22
48081       T(1,2) = XST12
48082       T(2,1) = XST21
48083  
48084       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
48085      &0.5D0*((XMSB11+XMSB22)**2 -
48086      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
48087       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
48088      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
48089      &XMSB12**2))**0.5D0
48090       IF(SBOT22.LT.0D0) GOTO 500
48091       SBOT1 = SBOT12**0.5D0
48092       SBOT2 = SBOT22**0.5D0
48093  
48094       SSBOT2(1) = SBOT12
48095       SSBOT2(2) = SBOT22
48096  
48097       IF(XMSB12.EQ.0D0) XSB11 = 1D0
48098       IF(XMSB12.EQ.0D0) XSB12 = 0D0
48099       IF(XMSB12.EQ.0D0) XSB21 = 0D0
48100       IF(XMSB12.EQ.0D0) XSB22 = 1D0
48101  
48102       IF(XMSB12.EQ.0D0) GOTO 130
48103  
48104   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48105       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48106       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48107       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48108  
48109   130 B(1,1) = XSB11
48110       B(2,2) = XSB22
48111       B(1,2) = XSB12
48112       B(2,1) = XSB21
48113  
48114  
48115       SINT = 0.2320D0
48116       SQR = DSQRT(2D0)
48117       VP = 174.1D0*SQR
48118  
48119 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48120 C...STARTING OF LIGHT HIGGS
48121 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48122  
48123       IF(IHIGGS.EQ.0) GOTO 490
48124  
48125       DO 150 I = 1,2
48126         DO 140 J = 1,2
48127           COUPT(I,J) =
48128      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
48129      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
48130      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
48131      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
48132      &    T(1,J)*T(2,I))
48133   140   CONTINUE
48134   150 CONTINUE
48135  
48136  
48137       DO 170 I = 1,2
48138         DO 160 J = 1,2
48139           COUPB(I,J) =
48140      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
48141      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
48142      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
48143      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
48144      &    B(1,J)*B(2,I))
48145   160   CONTINUE
48146   170 CONTINUE
48147  
48148       PRUN = XMH
48149       EPS = 1D-4*PRUN
48150       ITER = 0
48151   180 ITER = ITER + 1
48152       DO 230  I3 = 1,3
48153  
48154         PR(I3)=PRUN+(I3-2)*EPS/2
48155         P2=PR(I3)**2
48156         POLT = 0D0
48157         DO 200 I = 1,2
48158           DO 190 J = 1,2
48159             POLT = POLT + COUPT(I,J)**2*3D0*
48160      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48161   190     CONTINUE
48162   200   CONTINUE
48163  
48164         POLB = 0D0
48165         DO 220 I = 1,2
48166           DO 210 J = 1,2
48167             POLB = POLB + COUPB(I,J)**2*3D0*
48168      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48169   210     CONTINUE
48170   220   CONTINUE
48171 C        RXMT2 = RXMT**2
48172         XMT2=XMT**2
48173  
48174         POLTT =
48175      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48176      &  CA**2/SINB**2 *
48177      &  (-2D0*XMT**2+0.5D0*P2)*
48178      &  PYFINT(P2,XMT2,XMT2)
48179  
48180         POL = POLT + POLB + POLTT
48181         POLAR(I3) = P2 - XMH**2 - POL
48182   230 CONTINUE
48183       DERIV = (POLAR(3)-POLAR(1))/EPS
48184       DRUN = - POLAR(2)/DERIV
48185       PRUN = PRUN + DRUN
48186       P2 = PRUN**2
48187       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
48188       GOTO 180
48189   240 CONTINUE
48190  
48191       XMHP = DSQRT(P2)
48192  
48193 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48194 C...END OF LIGHT HIGGS
48195 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48196  
48197   250 IF(IHIGGS.EQ.1) GOTO 490
48198  
48199 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48200 C... STARTING OF HEAVY HIGGS
48201 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48202  
48203       DO 270 I = 1,2
48204         DO 260 J = 1,2
48205           HCOUPT(I,J) =
48206      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
48207      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
48208      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
48209      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
48210      &    T(1,J)*T(2,I))
48211   260   CONTINUE
48212   270 CONTINUE
48213  
48214       DO 290 I = 1,2
48215         DO 280 J = 1,2
48216           HCOUPB(I,J) =
48217      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
48218      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
48219      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
48220      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
48221      &    B(1,J)*B(2,I))
48222           HCOUPB(I,J)=0D0
48223   280   CONTINUE
48224   290 CONTINUE
48225  
48226       PRUN = HM
48227       EPS = 1D-4*PRUN
48228       ITER = 0
48229   300 ITER = ITER + 1
48230       DO 350 I3 = 1,3
48231         PR(I3)=PRUN+(I3-2)*EPS/2
48232         HP2=PR(I3)**2
48233  
48234         HPOLT = 0D0
48235         DO 320 I = 1,2
48236           DO 310 J = 1,2
48237             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
48238      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48239   310     CONTINUE
48240   320   CONTINUE
48241  
48242         HPOLB = 0D0
48243         DO 340 I = 1,2
48244           DO 330 J = 1,2
48245             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
48246      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48247   330     CONTINUE
48248   340   CONTINUE
48249  
48250 C        RXMT2 = RXMT**2
48251         XMT2  = XMT**2
48252  
48253         HPOLTT =
48254      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48255      &  SA**2/SINB**2 *
48256      &  (-2D0*XMT**2+0.5D0*HP2)*
48257      &  PYFINT(HP2,XMT2,XMT2)
48258  
48259         HPOL = HPOLT + HPOLB + HPOLTT
48260         POLAR(I3) =HP2-HM**2-HPOL
48261   350 CONTINUE
48262       DERIV = (POLAR(3)-POLAR(1))/EPS
48263       DRUN = - POLAR(2)/DERIV
48264       PRUN = PRUN + DRUN
48265       HP2 = PRUN**2
48266       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
48267       GOTO 300
48268   360 CONTINUE
48269  
48270  
48271   370 CONTINUE
48272       HMP = HP2**0.5D0
48273  
48274 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48275 C... END OF HEAVY HIGGS
48276 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48277  
48278       IF(IHIGGS.EQ.2) GOTO 490
48279  
48280 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48281 C...BEGINNING OF PSEUDOSCALAR HIGGS
48282 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48283  
48284       DO 390 I = 1,2
48285         DO 380 J = 1,2
48286           ACOUPT(I,J) =
48287      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
48288      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
48289   380   CONTINUE
48290   390 CONTINUE
48291       DO 410 I = 1,2
48292         DO 400 J = 1,2
48293           ACOUPB(I,J) =
48294      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
48295      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
48296   400   CONTINUE
48297   410 CONTINUE
48298  
48299       PRUN = XMA
48300       EPS = 1D-4*PRUN
48301       ITER = 0
48302   420 ITER = ITER + 1
48303       DO 470 I3 = 1,3
48304         PR(I3)=PRUN+(I3-2)*EPS/2
48305         AP2=PR(I3)**2
48306         APOLT = 0D0
48307         DO 440 I = 1,2
48308           DO 430 J = 1,2
48309             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
48310      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
48311   430     CONTINUE
48312   440   CONTINUE
48313         APOLB = 0D0
48314         DO 460 I = 1,2
48315           DO 450 J = 1,2
48316             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
48317      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
48318   450     CONTINUE
48319   460   CONTINUE
48320 C        RXMT2 = RXMT**2
48321         XMT2=XMT**2
48322         APOLTT =
48323      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
48324      &  COSB**2/SINB**2 *
48325      &  (-0.5D0*AP2)*
48326      &  PYFINT(AP2,XMT2,XMT2)
48327         APOL = APOLT + APOLB + APOLTT
48328         POLAR(I3) = AP2 - XMA**2 -APOL
48329   470 CONTINUE
48330       DERIV = (POLAR(3)-POLAR(1))/EPS
48331       DRUN = - POLAR(2)/DERIV
48332       PRUN = PRUN + DRUN
48333       AP2 = PRUN**2
48334       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
48335       GOTO 420
48336   480 CONTINUE
48337  
48338       AMP = DSQRT(AP2)
48339  
48340 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48341 C...END OF PSEUDOSCALAR HIGGS
48342 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48343  
48344       IF(IHIGGS.EQ.3) GOTO 490
48345  
48346   490 CONTINUE
48347       RETURN
48348   500 CONTINUE
48349       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
48350       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
48351       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
48352       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
48353       CALL PYSTOP(107)
48354       END
48355  
48356 C*********************************************************************
48357  
48358 C...PYRGHM
48359 C...Auxiliary to PYPOLE.
48360  
48361       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
48362      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
48363       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
48364       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
48365 C...Parameters.
48366       INTEGER MSTU,MSTJ
48367       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48368       SAVE /PYDAT1/
48369  
48370       MZ = 91.18D0
48371       PI = PARU(1)
48372       V  = 174.1D0
48373       ALPHA1 = 0.0101D0
48374       ALPHA2 = 0.0337D0
48375       ALPHA3Z = 0.12D0
48376       TANBA = TANB
48377       TANBT = TANB
48378 C     MBOTTOM(MTOP) = 3. GEV
48379       MB = PYMRUN(5,MTOP**2)
48380       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
48381      *LOG(MTOP**2/MZ**2))
48382 C     RMTOP= RUNNING TOP QUARK MASS
48383       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
48384       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
48385       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
48386       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
48387 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48388 C
48389 C    NEW DEFINITION, TGLU.
48390 C
48391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48392       TGLU = LOG(MGLU**2/MTOP**2)
48393       SINB = TANB/DSQRT(1D0 + TANB**2)
48394       COSB = SINB/TANB
48395       IF(MA.GT.MTOP)
48396      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
48397      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
48398      *LOG(MA**2/MTOP**2))
48399       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
48400       SINB = TANBT/SQRT(1D0 + TANBT**2)
48401       COSB = 1D0/DSQRT(1D0 + TANBT**2)
48402       G1 = SQRT(ALPHA1*4D0*PI)
48403       G2 = SQRT(ALPHA2*4D0*PI)
48404       G3 = SQRT(ALPHA3*4D0*PI)
48405       HU = RMTOP/V/SINB
48406       HD =  MB/V/COSB
48407       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
48408      *SBOT1,SBOT2,DELTAMT,DELTAMB)
48409       IF(MQ.GT.MUR) TP = TQ - TU
48410       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
48411       IF(MQ.GT.MUR) TDP = TU
48412       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
48413       IF(MQ.GT.MD) TPD = TQ - TD
48414       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
48415       IF(MQ.GT.MD) TDPD = TD
48416       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
48417  
48418       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
48419       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
48420      * HD**2*(G1**2/3D0+G2**2)*TPD
48421  
48422       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
48423       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
48424      * HU**2*(-G1**2/3D0+G2**2)*TP
48425  
48426 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48427 C
48428 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
48429 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
48430 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
48431 C  TWO STOPS.
48432 C
48433 C
48434 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48435  
48436       DLAMBDAP2 = 0D0
48437       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
48438        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
48439         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
48440        ENDIF
48441  
48442        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
48443         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
48444        ENDIF
48445  
48446        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
48447         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
48448        ENDIF
48449  
48450        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
48451         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
48452        ENDIF
48453  
48454        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
48455         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
48456        ENDIF
48457  
48458        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
48459         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
48460        ENDIF
48461       ENDIF
48462       DLAMBDA3 = 0D0
48463       DLAMBDA4 = 0D0
48464       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
48465       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
48466      *(G2**2-G1**2/3D0)*TPD
48467       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
48468      *1D0/16D0/PI**2*G1**2*HU**2*TP
48469       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
48470      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
48471       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
48472       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
48473      *HD**2*TPD
48474       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
48475      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
48476      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
48477      *+ (3D0*HD**2/2D0 + HU**2/2D0
48478      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
48479      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
48480      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
48481       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
48482      *(TP + TDP)/8D0/PI**2)
48483      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
48484      *+ (3D0*HU**2/2D0 + HD**2/2D0
48485      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
48486      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
48487      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
48488       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
48489      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
48490      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
48491       LAMBDA4 = (- G2**2/2D0)*(1D0
48492      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
48493      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
48494  
48495       LAMBDA5 = 0D0
48496       LAMBDA6 = 0D0
48497       LAMBDA7 = 0D0
48498  
48499       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
48500      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
48501  
48502       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
48503      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
48504       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
48505      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
48506  
48507       M2(2,1) = M2(1,2)
48508 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48509 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
48510 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48511  
48512       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
48513  
48514       IF(MCHI.GT.MSSUSY) GOTO 100
48515       IF(MCHI.LT.MTOP) MCHI=MTOP
48516  
48517       TCHAR=LOG(MSSUSY**2/MCHI**2)
48518  
48519       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
48520       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
48521      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
48522  
48523       DELTAM112=2D0*DELTAL12*V**2*COSB**2
48524       DELTAM222=2D0*DELTAL12*V**2*SINB**2
48525       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
48526  
48527       M2(1,1)=M2(1,1)+DELTAM112
48528       M2(2,2)=M2(2,2)+DELTAM222
48529       M2(1,2)=M2(1,2)+DELTAM122
48530       M2(2,1)=M2(2,1)+DELTAM122
48531  
48532   100 CONTINUE
48533  
48534 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48535 CCC  END OF CHARGINOS/NEUTRALINOS
48536 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48537  
48538       DO 120 I = 1,2
48539         DO 110 J = 1,2
48540           M2P(I,J) = M2(I,J) + VH(I,J)
48541   110   CONTINUE
48542   120 CONTINUE
48543       TRM2P = M2P(1,1) + M2P(2,2)
48544       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
48545       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
48546       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
48547       HMP = DSQRT(HM2P)
48548       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
48549       MCH=DSQRT(MCH2)
48550       IF(MH2P.LT.0.) GOTO 130
48551       MHP = SQRT(MH2P)
48552       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
48553       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
48554       IF(COS2ALPHA.GE.0.) THEN
48555         ALPHA = ASIN(SIN2ALPHA)/2D0
48556       ELSE
48557         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
48558       ENDIF
48559       SA = SIN(ALPHA)
48560       CA = COS(ALPHA)
48561 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48562 C
48563 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
48564 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
48565 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
48566 C
48567 C
48568 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48569       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
48570       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
48571   130 CONTINUE
48572       RETURN
48573       END
48574  
48575 C*********************************************************************
48576  
48577 C...PYGFXX
48578 C...Auxiliary to PYRGHM.
48579  
48580       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
48581      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
48582       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
48583       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
48584 C...Commonblocks.
48585       INTEGER MSTU,MSTJ,KCHG
48586       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48587       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48588       SAVE /PYDAT1/,/PYDAT2/
48589  
48590       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
48591  
48592       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
48593      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
48594  
48595       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
48596       MQ2 = MQ**2
48597       MUR2 = MUR**2
48598       MD2 = MD**2
48599       TANBA = TANB
48600       SINBA = TANBA/DSQRT(TANBA**2+1D0)
48601       COSBA = SINBA/TANBA
48602  
48603       SINB = TANB/DSQRT(TANB**2+1D0)
48604       COSB = SINB/TANB
48605  
48606       PI = PARU(1)
48607       MZ = PMAS(23,1)
48608       MW = PMAS(24,1)
48609       SW = 1D0-MW**2/MZ**2
48610       V  = 174.1D0
48611  
48612       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
48613       G2 = DSQRT(0.0336D0*4D0*PI)
48614       G1 = DSQRT(0.0101D0*4D0*PI)
48615  
48616       IF(MQ.GT.MUR) MST = MQ
48617       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
48618  
48619       MSUSYT = DSQRT(MST**2  + MTOP**2)
48620  
48621       IF(MQ.GT.MD) MSB = MQ
48622       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
48623  
48624       MB = PYMRUN(5,MSB**2)
48625       MSUSYB = DSQRT(MSB**2 + MB**2)
48626       TT = LOG(MSUSYT**2/MTOP**2)
48627       TB = LOG(MSUSYB**2/MTOP**2)
48628  
48629       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
48630       HT = RMTOP/(V*SINB)
48631       HTST = RMTOP/V
48632       HB = MB/V/COSB
48633       G32 = ALPHA3*4D0*PI
48634       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
48635       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
48636       AL2 = 3D0/8D0/PI**2*HT**2
48637 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
48638 C      ALST = 3./8./PI**2*HTST**2
48639       AL1 = 3D0/8D0/PI**2*HB**2
48640  
48641       AL(1,1) = AL1
48642       AL(1,2) = (AL2+AL1)/2D0
48643       AL(2,1) = (AL2+AL1)/2D0
48644       AL(2,2) = AL2
48645  
48646       IF(MA.GT.MTOP) THEN
48647         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
48648      *        LOG(MTOP**2/MA**2))
48649         H1I = VI* COSBA
48650         H2I = VI*SINBA
48651         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
48652         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
48653         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
48654         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
48655       ELSE
48656         VI = V
48657         H1I = VI*COSB
48658         H2I = VI*SINB
48659         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
48660         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
48661         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
48662         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
48663       ENDIF
48664  
48665       TANBST = H2T/H1T
48666       SINBT = TANBST/DSQRT(1D0+TANBST**2)
48667  
48668       TANBSB = H2B/H1B
48669       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
48670       COSBB = SINBB/TANBSB
48671  
48672       DELTAMT = 0D0
48673       DELTAMB = 0D0
48674  
48675       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
48676       MTOP2 = DSQRT(MTOP4)
48677       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
48678      * /(1D0+DELTAMB)**4
48679       MBOT2 = DSQRT(MBOT4)
48680  
48681       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
48682      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48683      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48684      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
48685       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
48686      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48687      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48688      *  MQ2 - MUR2)**2*0.25D0
48689      *  + MTOP2*(AT-XMU/TANBST)**2)
48690       IF(STOP22.LT.0.) GOTO 120
48691       SBOT12 = (MQ2 + MD2)*.5D0
48692      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48693      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48694      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48695       SBOT22 = (MQ2 + MD2)*.5D0
48696      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48697      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48698      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48699       IF(SBOT22.LT.0.) SBOT22 = 10000D0
48700  
48701       STOP1 = DSQRT(STOP12)
48702       STOP2 = DSQRT(STOP22)
48703       SBOT1 = DSQRT(SBOT12)
48704       SBOT2 = DSQRT(SBOT22)
48705  
48706 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48707 C
48708 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
48709 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
48710 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
48711 C     INDUCED CORRECTIONS.
48712 C
48713 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48714  
48715       X=SBOT1
48716       Y=SBOT2
48717       Z=XMGL
48718       IF(X.EQ.Y) X = X - 0.00001D0
48719       IF(X.EQ.Z) X = X - 0.00002D0
48720       IF(Y.EQ.Z) Y = Y - 0.00003D0
48721  
48722       T1=T(X,Y,Z)
48723       X=STOP1
48724       Y=STOP2
48725       Z=XMU
48726       IF(X.EQ.Y) X = X - 0.00001D0
48727       IF(X.EQ.Z) X = X - 0.00002D0
48728       IF(Y.EQ.Z) Y = Y - 0.00003D0
48729       T2=T(X,Y,Z)
48730       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
48731      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
48732       X=STOP1
48733       Y=STOP2
48734       Z=XMGL
48735       IF(X.EQ.Y) X = X - 0.00001D0
48736       IF(X.EQ.Z) X = X - 0.00002D0
48737       IF(Y.EQ.Z) Y = Y - 0.00003D0
48738       T3=T(X,Y,Z)
48739       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
48740  
48741 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48742 C
48743 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
48744 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
48745 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
48746 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
48747 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
48748 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
48749 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
48750 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
48751 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
48752 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
48753 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
48754 C
48755 C
48756 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48757  
48758       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
48759       MTOP2 = DSQRT(MTOP4)
48760       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
48761      * /(1D0+DELTAMB)**4
48762       MBOT2 = DSQRT(MBOT4)
48763  
48764       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
48765      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48766      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48767      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
48768       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
48769      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
48770      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
48771      *  MQ2 - MUR2)**2*0.25D0
48772      *  + MTOP2*(AT-XMU/TANBST)**2)
48773  
48774       IF(STOP22.LT.0.) GOTO 120
48775       SBOT12 = (MQ2 + MD2)*.5D0
48776      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48777      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48778      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48779       SBOT22 = (MQ2 + MD2)*.5D0
48780      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
48781      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
48782      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
48783       IF(SBOT22.LT.0.) GOTO 120
48784  
48785  
48786       STOP1 = DSQRT(STOP12)
48787       STOP2 = DSQRT(STOP22)
48788       SBOT1 = DSQRT(SBOT12)
48789       SBOT2 = DSQRT(SBOT22)
48790  
48791 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48792 CCC   D-TERMS
48793 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48794       STW=SW
48795  
48796       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
48797      *         LOG(STOP1/STOP2)
48798      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
48799      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
48800  
48801       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
48802      *        LOG(SBOT1/SBOT2)
48803      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
48804      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
48805  
48806       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
48807      *         (-.5D0*LOG(STOP12/STOP22)
48808      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
48809      *         G(STOP12,STOP22))
48810  
48811       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
48812      *         (.5D0*LOG(SBOT12/SBOT22)
48813      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
48814      *        G(SBOT12,SBOT22))
48815  
48816       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
48817      *  (MQ2+MBOT2)/(MD2+MBOT2))
48818      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
48819      *  LOG(SBOT1**2/SBOT2**2)) +
48820      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
48821      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
48822  
48823       VH3T(1,1) =
48824      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
48825      * -STOP2**2))**2*G(STOP12,STOP22)
48826  
48827       VH3B(1,1)=VH3B(1,1)+
48828      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
48829  
48830       VH3T(1,1) = VH3T(1,1) +
48831      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
48832  
48833       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
48834      *  (MQ2+MTOP2)/(MUR2+MTOP2))
48835      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
48836      *  LOG(STOP1**2/STOP2**2)) +
48837      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
48838      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
48839  
48840       VH3B(2,2) =
48841      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
48842      * -SBOT2**2))**2*G(SBOT12,SBOT22)
48843  
48844       VH3T(2,2)=VH3T(2,2)+
48845      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
48846       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
48847       VH3T(1,2) = -
48848      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
48849      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
48850      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
48851  
48852       VH3B(1,2) =
48853      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
48854      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
48855      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
48856  
48857  
48858       VH3T(1,2)=VH3T(1,2) +
48859      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
48860  
48861       VH3B(1,2)=VH3B(1,2) +
48862      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
48863  
48864       VH3T(2,1) = VH3T(1,2)
48865       VH3B(2,1) = VH3B(1,2)
48866  
48867 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
48868 C      TU = LOG((MUR2+MTOP2)/MTOP2)
48869 C      TQD = LOG((MQ2 + MB**2)/MB**2)
48870 C      TD = LOG((MD2+MB**2)/MB**2)
48871  
48872       DO 110 I = 1,2
48873         DO 100 J = 1,2
48874           VH(I,J) =
48875      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
48876      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
48877      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
48878      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
48879   100   CONTINUE
48880   110 CONTINUE
48881  
48882       GOTO 150
48883   120 DO 140 I =1,2
48884         DO 130 J = 1,2
48885           VH(I,J) = -1D15
48886   130   CONTINUE
48887   140 CONTINUE
48888  
48889  
48890   150 RETURN
48891       END
48892  
48893  
48894  
48895  
48896  
48897 C*********************************************************************
48898  
48899 C...PYFINT
48900 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
48901  
48902       FUNCTION PYFINT(A,B,C)
48903  
48904 C...Double precision and integer declarations.
48905       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48906       IMPLICIT INTEGER(I-N)
48907       INTEGER PYK,PYCHGE,PYCOMP
48908 C...Commonblock.
48909       COMMON/PYINTS/XXM(20)
48910       SAVE/PYINTS/
48911  
48912 C...Local variables.
48913       EXTERNAL PYFISB
48914       DOUBLE PRECISION PYFISB
48915  
48916       XXM(1)=A
48917       XXM(2)=B
48918       XXM(3)=C
48919       XLO=0D0
48920       XHI=1D0
48921       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
48922  
48923       RETURN
48924       END
48925  
48926 C*********************************************************************
48927  
48928 C...PYFISB
48929 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
48930  
48931       FUNCTION PYFISB(X)
48932  
48933 C...Double precision and integer declarations.
48934       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48935       IMPLICIT INTEGER(I-N)
48936       INTEGER PYK,PYCHGE,PYCOMP
48937 C...Commonblock.
48938       COMMON/PYINTS/XXM(20)
48939       SAVE/PYINTS/
48940  
48941       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
48942      &(X*(XXM(2)-XXM(3))+XXM(3)))
48943  
48944       RETURN
48945       END
48946  
48947 C*********************************************************************
48948  
48949 C...PYSFDC
48950 C...Calculates decays of sfermions.
48951  
48952       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
48953  
48954 C...Double precision and integer declarations.
48955       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48956       IMPLICIT INTEGER(I-N)
48957       INTEGER PYK,PYCHGE,PYCOMP
48958 C...Parameter statement to help give large particle numbers.
48959       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48960      &KEXCIT=4000000,KDIMEN=5000000)
48961 C...Commonblocks.
48962       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48963       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48964       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48965       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
48966      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
48967       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
48968  
48969 C...Local variables.
48970       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
48971       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
48972       INTEGER KFIN,KCIN
48973       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
48974       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
48975       DOUBLE PRECISION PYLAMF,XL
48976       DOUBLE PRECISION TANW,XW,AEM,C1,AS
48977       DOUBLE PRECISION AL,AR,BL,BR
48978       DOUBLE PRECISION CH1,CH2,CH3,CH4
48979       DOUBLE PRECISION XMBOT,XMTOP
48980       DOUBLE PRECISION XLAM(0:400)
48981       INTEGER IDLAM(400,3)
48982       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
48983       DOUBLE PRECISION SR2
48984       DOUBLE PRECISION CBETA,SBETA
48985       DOUBLE PRECISION CW
48986       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
48987       DOUBLE PRECISION COSA,SINA,TANB
48988       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
48989       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
48990       INTEGER IG,KF1,KF2
48991       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
48992       DATA IGG/23,25,35,36/
48993       DATA PI/3.141592654D0/
48994       DATA SR2/1.4142136D0/
48995       DATA KFNCHI/1000022,1000023,1000025,1000035/
48996       DATA KFCCHI/1000024,1000037/
48997  
48998 C...COUNT THE NUMBER OF DECAY MODES
48999       LKNT=0
49000  
49001 C...NO NU_R DECAYS
49002       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
49003      &KFIN.EQ.KSUSY2+16) RETURN
49004  
49005       XMW=PMAS(24,1)
49006       XMW2=XMW**2
49007       XMZ=PMAS(23,1)
49008       XW=PARU(102)
49009       TANW = SQRT(XW/(1D0-XW))
49010       CW=SQRT(1D0-XW)
49011  
49012       DO 110 I=1,4
49013         DO 100 J=1,4
49014           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
49015   100   CONTINUE
49016   110 CONTINUE
49017       DO 130 I=1,2
49018         DO 120 J=1,2
49019            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
49020            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
49021   120   CONTINUE
49022   130 CONTINUE
49023  
49024 C...KCIN
49025       KCIN=PYCOMP(KFIN)
49026 C...ILR is 1 for left and 2 for right.
49027       ILR=KFIN/KSUSY1
49028 C...IFL is matching non-SUSY flavour.
49029       IFL=MOD(KFIN,KSUSY1)
49030 C...IDU is weak isospin, 1 for down and 2 for up.
49031       IDU=2-MOD(IFL,2)
49032  
49033       XMI=PMAS(KCIN,1)
49034       XMI2=XMI**2
49035       AEM=PYALEM(XMI2)
49036       AS =PYALPS(XMI2)
49037       C1=AEM/XW
49038       XMI3=XMI**3
49039       EI=KCHG(IFL,1)/3D0
49040  
49041       XMBOT=PYMRUN(5,XMI2)
49042       XMTOP=PYMRUN(6,XMI2)
49043  
49044       TANB=RMSS(5)
49045       BETA=ATAN(TANB)
49046       ALFA=RMSS(18)
49047       CBETA=COS(BETA)
49048       SBETA=TANB*CBETA
49049       SINA=SIN(ALFA)
49050       COSA=COS(ALFA)
49051       XMU=-RMSS(4)
49052       ATRIT=RMSS(16)
49053       ATRIB=RMSS(15)
49054       ATRIL=RMSS(17)
49055  
49056 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
49057  
49058       IF(IMSS(11).EQ.1) THEN
49059         XMP=RMSS(29)
49060         IDG=39+KSUSY1
49061         XMGR=PMAS(PYCOMP(IDG),1)
49062         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
49063         IF(IFL.EQ.5) THEN
49064           XMF=XMBOT
49065         ELSEIF(IFL.EQ.6) THEN
49066           XMF=XMTOP
49067         ELSE
49068           XMF=PMAS(IFL,1)
49069         ENDIF
49070         IF(XMI.GT.XMGR+XMF) THEN
49071           LKNT=LKNT+1
49072           IDLAM(LKNT,1)=IDG
49073           IDLAM(LKNT,2)=IFL
49074           IDLAM(LKNT,3)=0
49075           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
49076         ENDIF
49077       ENDIF
49078  
49079 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
49080  
49081 C...CHARGED DECAYS:
49082       DO 140 IX=1,2
49083 C...DI -> U CHI1-,CHI2-
49084         IF(IDU.EQ.1) THEN
49085           XMFP=PMAS(IFL+1,1)
49086           XMF =PMAS(IFL,1)
49087 C...UI -> D CHI1+,CHI2+
49088         ELSE
49089           XMFP=PMAS(IFL-1,1)
49090           XMF =PMAS(IFL,1)
49091         ENDIF
49092         XMJ=SMW(IX)
49093         AXMJ=ABS(XMJ)
49094         IF(XMI.GE.AXMJ+XMFP) THEN
49095           XMA2=XMJ**2
49096           XMB2=XMFP**2
49097           IF(IDU.EQ.2) THEN
49098             IF(IFL.EQ.6) THEN
49099               XMFP=XMBOT
49100               XMF =XMTOP
49101             ELSEIF(IFL.LT.6) THEN
49102               XMF=0D0
49103               XMFP=0D0
49104             ENDIF
49105             CBL=VMIXC(IX,1)
49106             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
49107             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
49108             CAR=0D0
49109           ELSE
49110             IF(IFL.EQ.5) THEN
49111               XMF =XMBOT
49112               XMFP=XMTOP
49113             ELSEIF(IFL.LT.5) THEN
49114               XMF=0D0
49115               XMFP=0D0
49116             ENDIF
49117             CBL=UMIXC(IX,1)
49118             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
49119             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
49120             CAR=0D0
49121           ENDIF
49122  
49123           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
49124           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
49125           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
49126           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
49127           CAL=CALP
49128           CBL=CBLP
49129           CAR=CARP
49130           CBR=CBRP
49131  
49132 C...F1 -> F` CHI
49133           IF(ILR.EQ.1) THEN
49134             CA=CAL
49135             CB=CBL
49136 C...F2 -> F` CHI
49137           ELSE
49138             CA=CAR
49139             CB=CBR
49140           ENDIF
49141           LKNT=LKNT+1
49142           XL=PYLAMF(XMI2,XMA2,XMB2)
49143 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
49144           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49145      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
49146           IDLAM(LKNT,3)=0
49147           IF(IDU.EQ.1) THEN
49148             IDLAM(LKNT,1)=-KFCCHI(IX)
49149             IDLAM(LKNT,2)=IFL+1
49150           ELSE
49151             IDLAM(LKNT,1)=KFCCHI(IX)
49152             IDLAM(LKNT,2)=IFL-1
49153           ENDIF
49154         ENDIF
49155   140 CONTINUE
49156  
49157 C...NEUTRAL DECAYS
49158       DO 150 IX=1,4
49159 C...DI -> D CHI10
49160         XMF=PMAS(IFL,1)
49161         XMJ=SMZ(IX)
49162         AXMJ=ABS(XMJ)
49163         IF(XMI.GE.AXMJ+XMF) THEN
49164           XMA2=XMJ**2
49165           XMB2=XMF**2
49166           IF(IDU.EQ.1) THEN
49167             IF(IFL.EQ.5) THEN
49168               XMF=XMBOT
49169             ELSEIF(IFL.LT.5) THEN
49170               XMF=0D0
49171             ENDIF
49172             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
49173             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
49174             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
49175             CBR=CAL
49176           ELSE
49177             IF(IFL.EQ.6) THEN
49178               XMF=XMTOP
49179             ELSEIF(IFL.LT.5) THEN
49180               XMF=0D0
49181             ENDIF
49182             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
49183             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
49184             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
49185             CBR=CAL
49186           ENDIF
49187  
49188           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
49189           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
49190           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
49191           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
49192           CAL=CALP
49193           CBL=CBLP
49194           CAR=CARP
49195           CBR=CBRP
49196  
49197 C...F1 -> F CHI
49198           IF(ILR.EQ.1) THEN
49199             CA=CAL
49200             CB=CBL
49201 C...F2 -> F CHI
49202           ELSE
49203             CA=CAR
49204             CB=CBR
49205           ENDIF
49206           LKNT=LKNT+1
49207           XL=PYLAMF(XMI2,XMA2,XMB2)
49208 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
49209           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49210      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
49211           IDLAM(LKNT,1)=KFNCHI(IX)
49212           IDLAM(LKNT,2)=IFL
49213           IDLAM(LKNT,3)=0
49214         ENDIF
49215   150 CONTINUE
49216  
49217 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
49218 C...IG=23,25,35,36
49219       DO 160 II=1,4
49220         IG=IGG(II)
49221         IF(ILR.EQ.1) GOTO 160
49222         XMB=PMAS(IG,1)
49223         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
49224         IF(XMI.LT.XMSF1+XMB) GOTO 160
49225         IF(IG.EQ.23) THEN
49226           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
49227           BR=EI*XW/CW
49228           BLR=0D0
49229         ELSEIF(IG.EQ.25) THEN
49230           IF(IFL.EQ.5) THEN
49231             XMF=XMBOT
49232           ELSEIF(IFL.EQ.6) THEN
49233             XMF=XMTOP
49234           ELSEIF(IFL.LT.5) THEN
49235             XMF=0D0
49236           ELSE
49237             XMF=PMAS(IFL,1)
49238           ENDIF
49239           IF(IDU.EQ.2) THEN
49240             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
49241      &      XMF**2/XMW*COSA/SBETA
49242             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
49243      &      XMF**2/XMW*COSA/SBETA
49244           ELSE
49245             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
49246      &      XMF**2/XMW*(-SINA)/CBETA
49247             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
49248      &      XMF**2/XMW*(-SINA)/CBETA
49249           ENDIF
49250           IF(IFL.EQ.5) THEN
49251             AT=ATRIB
49252           ELSEIF(IFL.EQ.6) THEN
49253             AT=ATRIT
49254           ELSEIF(IFL.EQ.15) THEN
49255             AT=ATRIL
49256           ELSE
49257             AT=0D0
49258           ENDIF
49259 C.........need to complexify
49260           IF(IDU.EQ.2) THEN
49261             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
49262      &      AT*COSA)
49263           ELSE
49264             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
49265      &      AT*SINA)
49266           ENDIF
49267           BL=GHLL
49268           BR=GHRR
49269           BLR=-GHLR
49270         ELSEIF(IG.EQ.35) THEN
49271           IF(IFL.EQ.5) THEN
49272             XMF=XMBOT
49273           ELSEIF(IFL.EQ.6) THEN
49274             XMF=XMTOP
49275           ELSEIF(IFL.LT.5) THEN
49276             XMF=0D0
49277           ELSE
49278             XMF=PMAS(IFL,1)
49279           ENDIF
49280           IF(IDU.EQ.2) THEN
49281             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
49282      &      XMF**2/XMW*SINA/SBETA
49283             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
49284      &      XMF**2/XMW*SINA/SBETA
49285           ELSE
49286             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
49287      &      XMF**2/XMW*COSA/CBETA
49288             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
49289      &      XMF**2/XMW*COSA/CBETA
49290           ENDIF
49291           IF(IFL.EQ.5) THEN
49292             AT=ATRIB
49293           ELSEIF(IFL.EQ.6) THEN
49294             AT=ATRIT
49295           ELSEIF(IFL.EQ.15) THEN
49296             AT=ATRIL
49297           ELSE
49298             AT=0D0
49299           ENDIF
49300 C.........Need to complexify
49301           IF(IDU.EQ.2) THEN
49302             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
49303      &      AT*SINA)
49304           ELSE
49305             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
49306      &      AT*COSA)
49307           ENDIF
49308           BL=GHLL
49309           BR=GHRR
49310           BLR=GHLR
49311         ELSEIF(IG.EQ.36) THEN
49312           GHLL=0D0
49313           GHRR=0D0
49314           IF(IFL.EQ.5) THEN
49315             XMF=XMBOT
49316           ELSEIF(IFL.EQ.6) THEN
49317             XMF=XMTOP
49318           ELSEIF(IFL.LT.5) THEN
49319             XMF=0D0
49320           ELSE
49321             XMF=PMAS(IFL,1)
49322           ENDIF
49323           IF(IFL.EQ.5) THEN
49324             AT=ATRIB
49325           ELSEIF(IFL.EQ.6) THEN
49326             AT=ATRIT
49327           ELSEIF(IFL.EQ.15) THEN
49328             AT=ATRIL
49329           ELSE
49330             AT=0D0
49331           ENDIF
49332 C.........Need to complexify
49333           IF(IDU.EQ.2) THEN
49334             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
49335           ELSE
49336             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
49337           ENDIF
49338           BL=GHLL
49339           BR=GHRR
49340           BLR=GHLR
49341         ENDIF
49342         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
49343      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
49344      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
49345         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49346         LKNT=LKNT+1
49347         IF(IG.EQ.23) THEN
49348           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
49349         ELSE
49350           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
49351         ENDIF
49352         IDLAM(LKNT,3)=0
49353         IDLAM(LKNT,1)=KFIN-KSUSY1
49354         IDLAM(LKNT,2)=IG
49355   160 CONTINUE
49356  
49357 C...SF -> SF' + W
49358       XMB=PMAS(24,1)
49359       IF(MOD(IFL,2).EQ.0) THEN
49360         KF1=KSUSY1+IFL-1
49361       ELSE
49362         KF1=KSUSY1+IFL+1
49363       ENDIF
49364       KF2=KF1+KSUSY1
49365       XMSF1=PMAS(PYCOMP(KF1),1)
49366       XMSF2=PMAS(PYCOMP(KF2),1)
49367       IF(XMI.GT.XMB+XMSF1) THEN
49368         IF(MOD(IFL,2).EQ.0) THEN
49369           IF(ILR.EQ.1) THEN
49370             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
49371           ELSE
49372             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
49373           ENDIF
49374         ELSE
49375           IF(ILR.EQ.1) THEN
49376             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
49377           ELSE
49378             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
49379           ENDIF
49380         ENDIF
49381         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49382         LKNT=LKNT+1
49383         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
49384         IDLAM(LKNT,3)=0
49385         IDLAM(LKNT,1)=KF1
49386         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
49387       ENDIF
49388       IF(XMI.GT.XMB+XMSF2) THEN
49389         IF(MOD(IFL,2).EQ.0) THEN
49390           IF(ILR.EQ.1) THEN
49391             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,3)
49392           ELSE
49393             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
49394           ENDIF
49395         ELSE
49396           IF(ILR.EQ.1) THEN
49397             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
49398           ELSE
49399             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
49400           ENDIF
49401         ENDIF
49402         XL=PYLAMF(XMI2,XMSF2**2,XMB**2)
49403         LKNT=LKNT+1
49404         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
49405         IDLAM(LKNT,3)=0
49406         IDLAM(LKNT,1)=KF2
49407         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
49408       ENDIF
49409  
49410 C...SF -> SF' + HC
49411       XMB=PMAS(37,1)
49412       IF(MOD(IFL,2).EQ.0) THEN
49413         KF1=KSUSY1+IFL-1
49414       ELSE
49415         KF1=KSUSY1+IFL+1
49416       ENDIF
49417       KF2=KF1+KSUSY1
49418       XMSF1=PMAS(PYCOMP(KF1),1)
49419       XMSF2=PMAS(PYCOMP(KF2),1)
49420       IF(XMI.GT.XMB+XMSF1) THEN
49421         XMF=0D0
49422         XMFP=0D0
49423         AT=0D0
49424         AB=0D0
49425         IF(MOD(IFL,2).EQ.0) THEN
49426 C...T1-> B1 HC
49427           IF(ILR.EQ.1) THEN
49428             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
49429             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
49430             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
49431             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
49432 C...T2-> B1 HC
49433           ELSE
49434             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
49435             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
49436             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
49437             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
49438           ENDIF
49439           IF(IFL.EQ.6) THEN
49440             XMF=XMTOP
49441             XMFP=XMBOT
49442             AT=ATRIT
49443             AB=ATRIB
49444           ENDIF
49445         ELSE
49446 C...B1 -> T1 HC
49447           IF(ILR.EQ.1) THEN
49448             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
49449             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
49450             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
49451             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
49452 C...B2-> T1 HC
49453           ELSE
49454             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
49455             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
49456             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
49457             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
49458           ENDIF
49459           IF(IFL.EQ.5) THEN
49460             XMF=XMTOP
49461             XMFP=XMBOT
49462             AT=ATRIT
49463             AB=ATRIB
49464           ENDIF
49465         ENDIF
49466         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49467         LKNT=LKNT+1
49468 C.......Need to complexify
49469         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
49470      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
49471      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
49472         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
49473         IDLAM(LKNT,3)=0
49474         IDLAM(LKNT,1)=KF1
49475         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
49476       ENDIF
49477       IF(XMI.GT.XMB+XMSF2) THEN
49478         XMF=0D0
49479         XMFP=0D0
49480         AT=0D0
49481         AB=0D0
49482         IF(MOD(IFL,2).EQ.0) THEN
49483 C...T1-> B2 HC
49484           IF(ILR.EQ.1) THEN
49485             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
49486             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
49487             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
49488             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
49489 C...T2-> B2 HC
49490           ELSE
49491             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
49492             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
49493             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
49494             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
49495           ENDIF
49496           IF(IFL.EQ.6) THEN
49497             XMF=XMTOP
49498             XMFP=XMBOT
49499             AT=ATRIT
49500             AB=ATRIB
49501           ENDIF
49502         ELSE
49503 C...B1 -> T2 HC
49504           IF(ILR.EQ.1) THEN
49505             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
49506             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
49507             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
49508             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
49509 C...B2-> T2 HC
49510           ELSE
49511             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
49512             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
49513             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
49514             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
49515           ENDIF
49516           IF(IFL.EQ.5) THEN
49517             XMF=XMTOP
49518             XMFP=XMBOT
49519             AT=ATRIT
49520             AB=ATRIB
49521           ENDIF
49522         ENDIF
49523         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
49524         LKNT=LKNT+1
49525 C.......Need to complexify
49526         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
49527      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
49528      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
49529         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
49530         IDLAM(LKNT,3)=0
49531         IDLAM(LKNT,1)=KF2
49532         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
49533       ENDIF
49534  
49535 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
49536  
49537       IF(IFL.LE.6) THEN
49538         XMFP=0D0
49539         XMF=0D0
49540         IF(IFL.EQ.6) XMF=PMAS(6,1)
49541         IF(IFL.EQ.5) XMF=PMAS(5,1)
49542         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
49543         AXMJ=ABS(XMJ)
49544         IF(XMI.GE.AXMJ+XMF) THEN
49545           AL=-SFMIX(IFL,3)
49546           BL=SFMIX(IFL,1)
49547           AR=-SFMIX(IFL,4)
49548           BR=SFMIX(IFL,2)
49549 C...F1 -> F CHI
49550           IF(ILR.EQ.1) THEN
49551             XCA=AL
49552             XCB=BL
49553 C...F2 -> F CHI
49554           ELSE
49555             XCA=AR
49556             XCB=BR
49557           ENDIF
49558           LKNT=LKNT+1
49559           XMA2=XMJ**2
49560           XMB2=XMF**2
49561           XL=PYLAMF(XMI2,XMA2,XMB2)
49562           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
49563      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
49564           IDLAM(LKNT,1)=KSUSY1+21
49565           IDLAM(LKNT,2)=IFL
49566           IDLAM(LKNT,3)=0
49567         ENDIF
49568       ENDIF
49569  
49570 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
49571       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
49572      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
49573 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
49574 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
49575 C...M*M = C1**2 * G**2/(16PI**2)
49576 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
49577         LKNT=LKNT+1
49578         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
49579         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
49580         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
49581         IDLAM(LKNT,1)=KSUSY1+22
49582         IDLAM(LKNT,2)=4
49583         IDLAM(LKNT,3)=0
49584       ENDIF
49585  
49586 C...R-violating sfermion decays (SKANDS).
49587       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
49588  
49589       IKNT=LKNT
49590       XLAM(0)=0D0
49591       DO 170 I=1,IKNT
49592         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
49593         XLAM(0)=XLAM(0)+XLAM(I)
49594   170 CONTINUE
49595       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
49596  
49597       RETURN
49598       END
49599  
49600 C*********************************************************************
49601  
49602 C...PYGLUI
49603 C...Calculates gluino decay modes.
49604  
49605       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
49606  
49607 C...Double precision and integer declarations.
49608       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49609       IMPLICIT INTEGER(I-N)
49610       INTEGER PYK,PYCHGE,PYCOMP
49611 C...Parameter statement to help give large particle numbers.
49612       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49613      &KEXCIT=4000000,KDIMEN=5000000)
49614 C...Commonblocks.
49615       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49616       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49617       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49618       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
49619      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
49620 CC     &SFMIX(16,4),
49621 C      COMMON/PYINTS/XXM(20)
49622       COMPLEX*16 CXC
49623       COMMON/PYINTC/XXC(10),CXC(8)
49624       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
49625  
49626 C...Local variables
49627       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
49628       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
49629       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
49630       DOUBLE PRECISION PYLAMF,XL
49631       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
49632       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
49633       DOUBLE PRECISION XLAM(0:400)
49634       INTEGER IDLAM(400,3)
49635       INTEGER LKNT,IX,ILR,I,IKNT,IFL
49636       DOUBLE PRECISION SR2
49637       DOUBLE PRECISION GAM
49638       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
49639       EXTERNAL PYGAUS,PYXXZ6
49640       DOUBLE PRECISION PYGAUS,PYXXZ6
49641       DOUBLE PRECISION PREC
49642       INTEGER KFNCHI(4),KFCCHI(2)
49643       DATA PI/3.141592654D0/
49644       DATA SR2/1.4142136D0/
49645       DATA PREC/1D-2/
49646       DATA KFNCHI/1000022,1000023,1000025,1000035/
49647       DATA KFCCHI/1000024,1000037/
49648  
49649 C...COUNT THE NUMBER OF DECAY MODES
49650       LKNT=0
49651       IF(KFIN.NE.KSUSY1+21) RETURN
49652       KCIN=PYCOMP(KFIN)
49653  
49654       XW=PARU(102)
49655       TANW = SQRT(XW/(1D0-XW))
49656  
49657       XMI=PMAS(KCIN,1)
49658       AXMI=ABS(XMI)
49659       XMI2=XMI**2
49660       AEM=PYALEM(XMI2)
49661       AS =PYALPS(XMI2)
49662       C1=AEM/XW
49663       XMI3=AXMI**3
49664  
49665       XMI=SIGN(XMI,RMSS(3))
49666  
49667 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
49668  
49669       IF(IMSS(11).EQ.1) THEN
49670         XMP=RMSS(29)
49671         IDG=39+KSUSY1
49672         XMGR=PMAS(PYCOMP(IDG),1)
49673         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
49674         IF(AXMI.GT.XMGR) THEN
49675           LKNT=LKNT+1
49676           IDLAM(LKNT,1)=IDG
49677           IDLAM(LKNT,2)=21
49678           IDLAM(LKNT,3)=0
49679           XLAM(LKNT)=XFAC
49680         ENDIF
49681       ENDIF
49682  
49683 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
49684  
49685       DO 110 IFL=1,6
49686         DO 100 ILR=1,2
49687           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
49688           AXMJ=ABS(XMJ)
49689           XMF=PMAS(IFL,1)
49690           IF(AXMI.GE.AXMJ+XMF) THEN
49691 C...Minus sign difference from gluino-quark-squark feynman rules
49692             AL=SFMIX(IFL,1)
49693             BL=-SFMIX(IFL,3)
49694             AR=SFMIX(IFL,2)
49695             BR=-SFMIX(IFL,4)
49696 C...F1 -> F CHI
49697             IF(ILR.EQ.1) THEN
49698               CA=AL
49699               CB=BL
49700 C...F2 -> F CHI
49701             ELSE
49702               CA=AR
49703               CB=BR
49704             ENDIF
49705             LKNT=LKNT+1
49706             XMA2=XMJ**2
49707             XMB2=XMF**2
49708             XL=PYLAMF(XMI2,XMA2,XMB2)
49709             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
49710      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
49711             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
49712             IDLAM(LKNT,2)=-IFL
49713             IDLAM(LKNT,3)=0
49714             LKNT=LKNT+1
49715             XLAM(LKNT)=XLAM(LKNT-1)
49716             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49717             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49718             IDLAM(LKNT,3)=0
49719           ENDIF
49720   100   CONTINUE
49721   110 CONTINUE
49722  
49723 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
49724 C...GLUINO -> NI Q QBAR
49725       DO 170 IX=1,4
49726         XMJ=SMZ(IX)
49727         AXMJ=ABS(XMJ)
49728         IF(AXMI.GE.AXMJ) THEN
49729           DO 120 I=1,4
49730             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
49731   120     CONTINUE
49732           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
49733           ORPP=DCONJG(OLPP)
49734           XXC(1)=0D0
49735           XXC(2)=XMJ
49736           XXC(3)=0D0
49737           XXC(4)=XMI
49738           IA=1
49739           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
49740           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
49741           XXC(7)=XXC(5)
49742           XXC(8)=XXC(6)
49743           XXC(9)=1D6
49744           XXC(10)=0D0
49745           EI=KCHG(IA,1)/3D0
49746           T3I=SIGN(1D0,EI+1D-6)/2D0
49747           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
49748           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
49749           CXC(1)=0D0
49750           CXC(2)=-GLIJ
49751           CXC(3)=0D0
49752           CXC(4)=DCONJG(GLIJ)
49753           CXC(5)=0D0
49754           CXC(6)=GRIJ
49755           CXC(7)=0D0
49756           CXC(8)=-DCONJG(GRIJ)
49757           S12MIN=0D0
49758           S12MAX=(AXMI-AXMJ)**2
49759           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
49760           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
49761             LKNT=LKNT+1
49762             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
49763      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
49764             IDLAM(LKNT,1)=KFNCHI(IX)
49765             IDLAM(LKNT,2)=1
49766             IDLAM(LKNT,3)=-1
49767           ENDIF
49768           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
49769             LKNT=LKNT+1
49770             XLAM(LKNT)=XLAM(LKNT-1)
49771             IDLAM(LKNT,1)=KFNCHI(IX)
49772             IDLAM(LKNT,2)=3
49773             IDLAM(LKNT,3)=-3
49774           ENDIF
49775   130     CONTINUE
49776           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
49777             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
49778             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
49779               GOTO 140
49780             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
49781               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
49782             ENDIF
49783             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
49784             LKNT=LKNT+1
49785             XLAM(LKNT)=GAM
49786             IDLAM(LKNT,1)=KFNCHI(IX)
49787             IDLAM(LKNT,2)=5
49788             IDLAM(LKNT,3)=-5
49789             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
49790           ENDIF
49791 C...U-TYPE QUARKS
49792   140     CONTINUE
49793           IA=2
49794           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
49795           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
49796 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
49797           XXC(7)=XXC(5)
49798           XXC(8)=XXC(6)
49799           EI=KCHG(IA,1)/3D0
49800           T3I=SIGN(1D0,EI+1D-6)/2D0
49801           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
49802           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
49803           CXC(2)=-GLIJ
49804           CXC(4)=DCONJG(GLIJ)
49805           CXC(6)=GRIJ
49806           CXC(8)=-DCONJG(GRIJ)
49807           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
49808           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
49809             LKNT=LKNT+1
49810             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
49811      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
49812             IDLAM(LKNT,1)=KFNCHI(IX)
49813             IDLAM(LKNT,2)=2
49814             IDLAM(LKNT,3)=-2
49815           ENDIF
49816           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
49817             LKNT=LKNT+1
49818             XLAM(LKNT)=XLAM(LKNT-1)
49819             IDLAM(LKNT,1)=KFNCHI(IX)
49820             IDLAM(LKNT,2)=4
49821             IDLAM(LKNT,3)=-4
49822           ENDIF
49823   150     CONTINUE
49824 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
49825 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
49826           XMF=PMAS(6,1)
49827           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
49828             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
49829             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
49830               GOTO 160
49831             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
49832               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
49833             ENDIF
49834             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
49835             LKNT=LKNT+1
49836             XLAM(LKNT)=GAM
49837             IDLAM(LKNT,1)=KFNCHI(IX)
49838             IDLAM(LKNT,2)=6
49839             IDLAM(LKNT,3)=-6
49840             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
49841           ENDIF
49842   160     CONTINUE
49843         ENDIF
49844   170 CONTINUE
49845  
49846 C...GLUINO -> CI Q QBAR'
49847       DO 210 IX=1,2
49848         XMJ=SMW(IX)
49849         AXMJ=ABS(XMJ)
49850         IF(AXMI.GE.AXMJ) THEN
49851           DO 180 I=1,2
49852             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
49853             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
49854   180     CONTINUE
49855           S12MIN=0D0
49856           S12MAX=(AXMI-AXMJ)**2
49857           XXC(1)=0D0
49858           XXC(2)=XMJ
49859           XXC(3)=0D0
49860           XXC(4)=XMI
49861           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
49862           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
49863           XXC(9)=1D6
49864           XXC(10)=0D0
49865           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
49866           ORPP=DCONJG(OLPP)
49867           CXC(1)=DCMPLX(0D0,0D0)
49868           CXC(3)=DCMPLX(0D0,0D0)
49869           CXC(5)=DCMPLX(0D0,0D0)
49870           CXC(7)=DCMPLX(0D0,0D0)
49871           CXC(2)=UMIXC(IX,1)*OLPP/SR2
49872           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
49873           CXC(6)=DCMPLX(0D0,0D0)
49874           CXC(8)=DCMPLX(0D0,0D0)
49875           IF(XXC(5).LT.AXMI) THEN
49876             XXC(5)=1D6
49877           ELSEIF(XXC(6).LT.AXMI) THEN
49878             XXC(6)=1D6
49879           ENDIF
49880           XXC(7)=XXC(6)
49881           XXC(8)=XXC(5)
49882           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
49883           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
49884             LKNT=LKNT+1
49885             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
49886      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
49887             IDLAM(LKNT,1)=KFCCHI(IX)
49888             IDLAM(LKNT,2)=1
49889             IDLAM(LKNT,3)=-2
49890             LKNT=LKNT+1
49891             XLAM(LKNT)=XLAM(LKNT-1)
49892             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49893             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49894             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49895           ENDIF
49896           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
49897             LKNT=LKNT+1
49898             XLAM(LKNT)=XLAM(LKNT-1)
49899             IDLAM(LKNT,1)=KFCCHI(IX)
49900             IDLAM(LKNT,2)=3
49901             IDLAM(LKNT,3)=-4
49902             LKNT=LKNT+1
49903             XLAM(LKNT)=XLAM(LKNT-1)
49904             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49905             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49906             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49907           ENDIF
49908   190     CONTINUE
49909  
49910           XMF=PMAS(6,1)
49911           XMFP=PMAS(5,1)
49912           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
49913             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
49914      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
49915             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
49916             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
49917             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
49918             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
49919             IF(XMI.GT.PMOLT2+XMF) PMAS(PYCOMP(KSUSY2+6),1)=100D0*AXMI
49920             IF(XMI.GT.PMOLT1+XMF) PMAS(PYCOMP(KSUSY1+6),1)=100D0*AXMI
49921             IF(XMI.GT.PMOLB2+XMFP) PMAS(PYCOMP(KSUSY2+5),1)=100D0*AXMI
49922             IF(XMI.GT.PMOLB1+XMFP) PMAS(PYCOMP(KSUSY1+5),1)=100D0*AXMI
49923             CALL PYTBBC(IX,100,XMI,GAM)
49924             LKNT=LKNT+1
49925             XLAM(LKNT)=GAM
49926             IDLAM(LKNT,1)=KFCCHI(IX)
49927             IDLAM(LKNT,2)=5
49928             IDLAM(LKNT,3)=-6
49929             LKNT=LKNT+1
49930             XLAM(LKNT)=XLAM(LKNT-1)
49931             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
49932             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
49933             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
49934             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
49935             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
49936             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
49937             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
49938           ENDIF
49939   200     CONTINUE
49940         ENDIF
49941   210 CONTINUE
49942  
49943 C...R-parity violating (3-body) decays.
49944       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
49945  
49946       IKNT=LKNT
49947       XLAM(0)=0D0
49948       DO 220 I=1,IKNT
49949         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
49950         XLAM(0)=XLAM(0)+XLAM(I)
49951   220 CONTINUE
49952       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
49953  
49954       RETURN
49955       END
49956  
49957  
49958 C*********************************************************************
49959  
49960 C...PYTBBN
49961 C...Calculates the three-body decay of gluinos into
49962 C...neutralinos and third generation fermions.
49963  
49964       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
49965  
49966 C...Double precision and integer declarations.
49967       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49968       IMPLICIT INTEGER(I-N)
49969       INTEGER PYK,PYCHGE,PYCOMP
49970 C...Parameter statement to help give large particle numbers.
49971       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49972      &KEXCIT=4000000,KDIMEN=5000000)
49973 C...Commonblocks.
49974       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49975       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49976       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49977       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
49978      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
49979       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
49980  
49981 C...Local variables.
49982       EXTERNAL PYSIMP,PYLAMF
49983       DOUBLE PRECISION PYSIMP,PYLAMF
49984       INTEGER LIN,NN
49985       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
49986       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
49987       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
49988       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
49989       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
49990       DOUBLE PRECISION XLN1,XLN2,B1,B2
49991       DOUBLE PRECISION E,XMGLU,GAM
49992       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
49993       SAVE HRB,HLB,FLB,FRB
49994       DOUBLE PRECISION ALPHAW,ALPHAS
49995       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
49996       SAVE HLT,HRT,FLT,FRT
49997       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
49998       SAVE AMN,AN,ZN
49999       DOUBLE PRECISION AMBOT,SINC,COSC
50000       DOUBLE PRECISION AMTOP,SINA,COSA
50001       DOUBLE PRECISION SINW,COSW,TANW
50002       DOUBLE PRECISION ROT1(4,4)
50003       LOGICAL IFIRST
50004       SAVE IFIRST
50005       DATA IFIRST/.TRUE./
50006  
50007       TANB=RMSS(5)
50008       SINB=TANB/SQRT(1D0+TANB**2)
50009       COSB=SINB/TANB
50010       XW=PARU(102)
50011       SINW=SQRT(XW)
50012       COSW=SQRT(1D0-XW)
50013       TANW=SINW/COSW
50014       AMW=PMAS(24,1)
50015       COSC=SFMIX(5,1)
50016       SINC=SFMIX(5,3)
50017       COSA=SFMIX(6,1)
50018       SINA=SFMIX(6,3)
50019       AMBOT=PYMRUN(5,XMGLU**2)
50020       AMTOP=PYMRUN(6,XMGLU**2)
50021       W2=SQRT(2D0)
50022       FAKT1=AMBOT/W2/AMW/COSB
50023       FAKT2=AMTOP/W2/AMW/SINB
50024       IF(IFIRST) THEN
50025         DO 110 II=1,4
50026           AMN(II)=SMZ(II)
50027           DO 100 J=1,4
50028             ROT1(II,J)=0D0
50029             AN(II,J)=0D0
50030   100     CONTINUE
50031   110   CONTINUE
50032         ROT1(1,1)=COSW
50033         ROT1(1,2)=-SINW
50034         ROT1(2,1)=-ROT1(1,2)
50035         ROT1(2,2)=ROT1(1,1)
50036         ROT1(3,3)=COSB
50037         ROT1(3,4)=SINB
50038         ROT1(4,3)=-ROT1(3,4)
50039         ROT1(4,4)=ROT1(3,3)
50040         DO 140 II=1,4
50041           DO 130 J=1,4
50042             DO 120 JJ=1,4
50043               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
50044   120       CONTINUE
50045   130     CONTINUE
50046   140   CONTINUE
50047         DO 150 J=1,4
50048           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
50049           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50050           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
50051      &    XW)*AN(J,2)/COSW
50052           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
50053           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
50054           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
50055           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
50056 C          FLU(J)=ZN(3)
50057 C          FRU(J)=ZN(2)
50058           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
50059           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50060           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
50061           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
50062           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
50063           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
50064           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
50065 C          FLD(J)=ZN(3)
50066 C          FRD(J)=ZN(2)
50067   150   CONTINUE
50068 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
50069 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
50070 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
50071 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
50072         IFIRST=.FALSE.
50073       ENDIF
50074  
50075       IF(NINT(3D0*E).EQ.2) THEN
50076         HL=HLT(I)
50077         HR=HRT(I)
50078         FL=FLT(I)
50079         FR=FRT(I)
50080         COSD=SFMIX(6,1)
50081         SIND=SFMIX(6,3)
50082         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
50083         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
50084         XM=PMAS(6,1)
50085       ELSE
50086         HL=HLB(I)
50087         HR=HRB(I)
50088         FL=FLB(I)
50089         FR=FRB(I)
50090         COSD=SFMIX(5,1)
50091         SIND=SFMIX(5,3)
50092         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
50093         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
50094         XM=PMAS(5,1)
50095       ENDIF
50096       COSD2=COSD*COSD
50097       SIND2=SIND*SIND
50098       COS2D=COSD2-SIND2
50099       SIN2D=SIND*COSD*2D0
50100       HL2=HL*HL
50101       HR2=HR*HR
50102       FL2=FL*FL
50103       FR2=FR*FR
50104       FF=FL*FR
50105       HH=HL*HR
50106       HFL=HL*FL
50107       HFR=HR*FR
50108       HRFL=HR*FL
50109       HLFR=HL*FR
50110       XM2=XM*XM
50111       XMG=XMGLU
50112       XMG2=XMG*XMG
50113       ALPHAW=PYALEM(XMG2)
50114       ALPHAS=PYALPS(XMG2)
50115       XMR=AMN(I)
50116       XMR2=XMR*XMR
50117       XMQ4=XMG*XM2*XMR
50118       XM24=(XMG2+XM2)*(XM2+XMR2)
50119       SMIN=4D0*XM2
50120       SMAX=(XMG-ABS(XMR))**2
50121       XMQA=XMG2+2D0*XM2+XMR2
50122       DO 170 LIN=1,NN-1
50123         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
50124         GRS=SBAR-XMQA
50125         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
50126         W=DSQRT(W)
50127         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
50128         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
50129         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
50130         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
50131         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
50132      &  +2D0*(FF*SIND2-HH*COSD2))*W
50133         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
50134      &  +4D0*HFL*XM*XMR)*XLN1
50135      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
50136      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
50137      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
50138      &  +8D0*HFL*XMQ4*SIN2D)*B1
50139         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
50140      &  +4D0*HFR*XMR*XM)*XLN2
50141      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
50142      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
50143      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
50144      &  -8D0*HFR*XMQ4*SIN2D)*B2
50145         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
50146      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
50147      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
50148      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
50149      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
50150         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
50151      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
50152      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
50153         G(5)=(2D0*(HH*COSD2-FF*SIND2)
50154      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
50155      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
50156      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
50157      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
50158      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
50159      &  +COS2D*XM*(SBAR+XMG2-XMR2))
50160      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
50161      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
50162         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
50163      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
50164      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
50165      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
50166      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
50167         SUMME(LIN)=0D0
50168         DO 160 J=0,6
50169           SUMME(LIN)=SUMME(LIN)+G(J)
50170   160   CONTINUE
50171   170 CONTINUE
50172       SUMME(0)=0D0
50173       SUMME(NN)=0D0
50174       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
50175      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
50176  
50177       RETURN
50178       END
50179  
50180 C*********************************************************************
50181  
50182 C...PYTBBC
50183 C...Calculates the three-body decay of gluinos into
50184 C...charginos and third generation fermions.
50185  
50186       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
50187  
50188 C...Double precision and integer declarations.
50189       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50190       IMPLICIT INTEGER(I-N)
50191       INTEGER PYK,PYCHGE,PYCOMP
50192 C...Parameter statement to help give large particle numbers.
50193       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50194      &KEXCIT=4000000,KDIMEN=5000000)
50195 C...Commonblocks.
50196       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50197       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50198       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50199       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50200      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50201       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
50202  
50203 C...Local variables.
50204       EXTERNAL PYSIMP,PYLAMF
50205       DOUBLE PRECISION PYSIMP,PYLAMF
50206       INTEGER I,NN,LIN
50207       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
50208       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
50209       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
50210       DOUBLE PRECISION SUMME(0:100),A(4,8)
50211       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
50212       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
50213       DOUBLE PRECISION XMGLU,GAM
50214       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
50215      &DDD(2),EEE(2),FFF(2)
50216       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
50217       DOUBLE PRECISION ALPHAW,ALPHAS
50218       DOUBLE PRECISION AMC(2)
50219       SAVE AMC
50220       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
50221       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
50222       SAVE AMSB,AMST
50223       LOGICAL IFIRST
50224       SAVE IFIRST
50225       DATA IFIRST/.TRUE./
50226  
50227       TANB=RMSS(5)
50228       SINB=TANB/SQRT(1D0+TANB**2)
50229       COSB=SINB/TANB
50230       XW=PARU(102)
50231       AMW=PMAS(24,1)
50232       COSC=SFMIX(5,1)
50233       SINC=SFMIX(5,3)
50234       COSA=SFMIX(6,1)
50235       SINA=SFMIX(6,3)
50236       AMBOT=PYMRUN(5,XMGLU**2)
50237       AMTOP=PYMRUN(6,XMGLU**2)
50238       W2=SQRT(2D0)
50239       AMW=PMAS(24,1)
50240       FAKT1=AMBOT/W2/AMW/COSB
50241       FAKT2=AMTOP/W2/AMW/SINB
50242       IF(IFIRST) THEN
50243         AMC(1)=SMW(1)
50244         AMC(2)=SMW(2)
50245         DO 100 JJ=1,2
50246           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
50247           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
50248           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
50249           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
50250           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
50251           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
50252           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
50253           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
50254   100   CONTINUE
50255         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
50256         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
50257         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
50258         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
50259         IFIRST=.FALSE.
50260       ENDIF
50261  
50262       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
50263       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
50264       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
50265       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
50266  
50267       COS2A=COSA**2-SINA**2
50268       SIN2A=SINA*COSA*2D0
50269       COS2C=COSC**2-SINC**2
50270       SIN2C=SINC*COSC*2D0
50271  
50272       XMG=XMGLU
50273       XMT=PMAS(6,1)
50274       XMB=PMAS(5,1)
50275       XMR=AMC(I)
50276       XMG2=XMG*XMG
50277       ALPHAW=PYALEM(XMG2)
50278       ALPHAS=PYALPS(XMG2)
50279       XMT2=XMT*XMT
50280       XMB2=XMB*XMB
50281       XMR2=XMR*XMR
50282       XMQ2=XMG2+XMT2+XMB2+XMR2
50283       XMQ4=XMG*XMT*XMB*XMR
50284       XMQ3=XMG2*XMR2+XMT2*XMB2
50285       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
50286       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
50287  
50288       XMST(1)=AMST(1)*AMST(1)
50289       XMST(2)=AMST(1)*AMST(1)
50290       XMST(3)=AMST(2)*AMST(2)
50291       XMST(4)=AMST(2)*AMST(2)
50292       XMSB(1)=AMSB(1)*AMSB(1)
50293       XMSB(2)=AMSB(2)*AMSB(2)
50294       XMSB(3)=AMSB(1)*AMSB(1)
50295       XMSB(4)=AMSB(2)*AMSB(2)
50296  
50297       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
50298       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
50299       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
50300       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
50301       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
50302       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
50303       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
50304       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
50305  
50306       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
50307       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
50308       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
50309       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
50310       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
50311       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
50312       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
50313       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
50314  
50315       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
50316       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
50317       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
50318       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
50319       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
50320       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
50321       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
50322       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
50323  
50324       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
50325       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
50326       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
50327       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
50328       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
50329       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
50330       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
50331       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
50332  
50333       SMAX=(XMG-ABS(XMR))**2
50334       SMIN=(XMB+XMT)**2+0.1D0
50335  
50336       DO 120 LIN=0,NN-1
50337         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
50338         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
50339         GRS=SBAR-XMQ2
50340         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
50341         W=DSQRT(W)/2D0/SBAR
50342         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
50343         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
50344         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
50345         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
50346         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
50347      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
50348      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
50349      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
50350      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
50351      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
50352      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
50353         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
50354      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
50355      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
50356      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
50357      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
50358      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
50359      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
50360      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
50361         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
50362      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
50363      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
50364      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
50365      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
50366      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
50367      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
50368      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
50369         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
50370      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
50371      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
50372      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
50373      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
50374      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
50375      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
50376      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
50377         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
50378      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
50379      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
50380      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
50381         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
50382      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
50383      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
50384      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
50385         DO 110 J=1,4
50386           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
50387      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
50388      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
50389      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
50390      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
50391      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
50392      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
50393      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
50394      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
50395      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
50396      &    -A(J,6)*(XMG2+XMR2-SBAR)
50397      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
50398      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
50399      &    /(GRS+XMSB(J)+XMST(J))
50400   110   CONTINUE
50401   120 CONTINUE
50402       SUMME(NN)=0D0
50403       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
50404      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
50405  
50406       RETURN
50407       END
50408  
50409 C*********************************************************************
50410  
50411 C...PYNJDC
50412 C...Calculates decay widths for the neutralinos (admixtures of
50413 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
50414  
50415 C...Input:  KCIN = KF code for particle
50416 C...Output: XLAM = widths
50417 C...        IDLAM = KF codes for decay particles
50418 C...        IKNT = number of decay channels defined
50419 C...AUTHOR: STEPHEN MRENNA
50420 C...Last change:
50421 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
50422 C...when CHIGAMMA .NE. 0
50423 C...10 FEB 96:  Calculate this decay for small tan(beta)
50424  
50425       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
50426  
50427 C...Double precision and integer declarations.
50428       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50429       IMPLICIT INTEGER(I-N)
50430       INTEGER PYK,PYCHGE,PYCOMP
50431 C...Parameter statement to help give large particle numbers.
50432       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50433      &KEXCIT=4000000,KDIMEN=5000000)
50434 C...Commonblocks.
50435       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50436       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50437       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50438 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50439 c     &SFMIX(16,4)
50440       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50441      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50442 C      COMMON/PYINTS/XXM(20)
50443       COMPLEX*16 CXC
50444       COMMON/PYINTC/XXC(10),CXC(8)
50445       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
50446  
50447 C...Local variables.
50448       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
50449       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
50450       INTEGER KFIN
50451       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
50452      &XMZ,XMZ2,AXMJ,AXMI
50453       DOUBLE PRECISION S12MIN,S12MAX
50454       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
50455       DOUBLE PRECISION PYLAMF,XL
50456       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
50457       DOUBLE PRECISION PYX2XH,PYX2XG
50458       DOUBLE PRECISION XLAM(0:400)
50459       INTEGER IDLAM(400,3)
50460       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
50461       INTEGER ITH(3),KF1,KF2
50462       INTEGER ITHC
50463       DOUBLE PRECISION DH(3),EH(3)
50464       DOUBLE PRECISION SR2
50465       DOUBLE PRECISION CBETA,SBETA
50466       DOUBLE PRECISION GAMCON,XMT1,XMT2
50467       DOUBLE PRECISION PYALEM,PI,PYALPS
50468       DOUBLE PRECISION RAT1,RAT2
50469       DOUBLE PRECISION T3T,FCOL
50470       DOUBLE PRECISION ALFA,BETA,TANB
50471       DOUBLE PRECISION PYXXGA
50472       EXTERNAL PYGAUS,PYXXZ6
50473       DOUBLE PRECISION PYGAUS,PYXXZ6
50474       DOUBLE PRECISION PREC
50475       INTEGER KFNCHI(4),KFCCHI(2)
50476       DATA ITH/25,35,36/
50477       DATA ITHC/37/
50478       DATA PREC/1D-2/
50479       DATA PI/3.141592654D0/
50480       DATA SR2/1.4142136D0/
50481       DATA KFNCHI/1000022,1000023,1000025,1000035/
50482       DATA KFCCHI/1000024,1000037/
50483  
50484 C...COUNT THE NUMBER OF DECAY MODES
50485       LKNT=0
50486  
50487       XMW=PMAS(24,1)
50488       XMW2=XMW**2
50489       XMZ=PMAS(23,1)
50490       XMZ2=XMZ**2
50491       XW=1D0-XMW2/XMZ2
50492       XW1=1D0-XW
50493       TANW = SQRT(XW/XW1)
50494  
50495 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
50496       IX=1
50497       IF(KFIN.EQ.KFNCHI(2)) IX=2
50498       IF(KFIN.EQ.KFNCHI(3)) IX=3
50499       IF(KFIN.EQ.KFNCHI(4)) IX=4
50500  
50501       XMI=SMZ(IX)
50502       XMI2=XMI**2
50503       AXMI=ABS(XMI)
50504       AEM=PYALEM(XMI2)
50505       AS =PYALPS(XMI2)
50506       C1=AEM/XW
50507       XMI3=ABS(XMI**3)
50508  
50509       TANB=RMSS(5)
50510       BETA=ATAN(TANB)
50511       ALFA=RMSS(18)
50512       CBETA=COS(BETA)
50513       SBETA=TANB*CBETA
50514       CALFA=COS(ALFA)
50515       SALFA=SIN(ALFA)
50516  
50517       DO 110 I=1,4
50518         DO 100 J=1,4
50519           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
50520   100   CONTINUE
50521   110 CONTINUE
50522       DO 130 I=1,2
50523         DO 120 J=1,2
50524            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
50525            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
50526   120   CONTINUE
50527   130 CONTINUE
50528  
50529 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
50530       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
50531  
50532 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
50533       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
50534         XMJ=SMZ(1)
50535         AXMJ=ABS(XMJ)
50536         LKNT=LKNT+1
50537         GAMCON=AEM**3/8D0/PI/XMW2/XW
50538         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
50539         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
50540         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
50541         IDLAM(LKNT,1)=KSUSY1+22
50542         IDLAM(LKNT,2)=22
50543         IDLAM(LKNT,3)=0
50544         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
50545         GOTO 340
50546       ENDIF
50547  
50548 C...GRAVITINO DECAY MODES
50549  
50550       IF(IMSS(11).EQ.1) THEN
50551         XMP=RMSS(29)
50552         IDG=39+KSUSY1
50553         XMGR=PMAS(PYCOMP(IDG),1)
50554         SINW=SQRT(XW)
50555         COSW=SQRT(1D0-XW)
50556         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
50557         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
50558           LKNT=LKNT+1
50559           IDLAM(LKNT,1)=IDG
50560           IDLAM(LKNT,2)=22
50561           IDLAM(LKNT,3)=0
50562           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
50563         ENDIF
50564         IF(AXMI.GT.XMGR+XMZ) THEN
50565           LKNT=LKNT+1
50566           IDLAM(LKNT,1)=IDG
50567           IDLAM(LKNT,2)=23
50568           IDLAM(LKNT,3)=0
50569           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
50570      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
50571      &  (1D0-XMZ2/XMI2)**4
50572         ENDIF
50573         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
50574           LKNT=LKNT+1
50575           IDLAM(LKNT,1)=IDG
50576           IDLAM(LKNT,2)=25
50577           IDLAM(LKNT,3)=0
50578           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
50579      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
50580         ENDIF
50581         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
50582           LKNT=LKNT+1
50583           IDLAM(LKNT,1)=IDG
50584           IDLAM(LKNT,2)=35
50585           IDLAM(LKNT,3)=0
50586           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
50587      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
50588         ENDIF
50589         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
50590           LKNT=LKNT+1
50591           IDLAM(LKNT,1)=IDG
50592           IDLAM(LKNT,2)=36
50593           IDLAM(LKNT,3)=0
50594           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
50595      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
50596         ENDIF
50597         IF(IX.EQ.1) GOTO 300
50598       ENDIF
50599  
50600       DO 220 IJ=1,IX-1
50601         XMJ=SMZ(IJ)
50602         AXMJ=ABS(XMJ)
50603         XMJ2=XMJ**2
50604  
50605 C...CHI0_I -> CHI0_J + GAMMA
50606         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
50607           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
50608           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
50609           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
50610           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
50611           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
50612      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
50613             LKNT=LKNT+1
50614             IDLAM(LKNT,1)=KFNCHI(IJ)
50615             IDLAM(LKNT,2)=22
50616             IDLAM(LKNT,3)=0
50617             GAMCON=AEM**3/8D0/PI/XMW2/XW
50618             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
50619             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
50620             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
50621           ENDIF
50622         ENDIF
50623  
50624 C...CHI0_I -> CHI0_J + Z0
50625         IF(AXMI.GE.AXMJ+XMZ) THEN
50626           LKNT=LKNT+1
50627           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
50628      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
50629           ORPP=-DCONJG(OLPP)
50630           GX2=ABS(OLPP)**2+ABS(ORPP)**2
50631           GLR=DBLE(OLPP*DCONJG(ORPP))
50632           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
50633           IDLAM(LKNT,1)=KFNCHI(IJ)
50634           IDLAM(LKNT,2)=23
50635           IDLAM(LKNT,3)=0
50636         ELSEIF(AXMI.GE.AXMJ) THEN
50637           XXC(1)=0D0
50638           XXC(2)=XMJ
50639           XXC(3)=0D0
50640           XXC(4)=XMI
50641           XXC(9)=XMZ
50642           XXC(10)=PMAS(23,2)
50643           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
50644      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
50645           ORPP=DCONJG(OLPP)
50646 C...CHARGED LEPTONS
50647           FID=11
50648           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50649           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50650           EI=KCHG(FID,1)/3D0
50651           T3I=SIGN(1D0,EI+1D-6)/2D0
50652           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50653      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50654           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50655           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50656           CXC(2)=-GLIJ
50657           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50658           CXC(4)=DCONJG(GLIJ)
50659           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50660           CXC(6)=GRIJ
50661           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50662           CXC(8)=-DCONJG(GRIJ)
50663           S12MIN=0D0
50664           S12MAX=(AXMI-AXMJ)**2
50665           IF( XXC(5).LT.AXMI ) THEN
50666             XXC(5)=1D6
50667           ENDIF
50668           IF(XXC(6).LT.AXMI ) THEN
50669             XXC(6)=1D6
50670           ENDIF
50671           XXC(7)=XXC(5)
50672           XXC(8)=XXC(6)
50673  
50674           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
50675             LKNT=LKNT+1
50676             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50677      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50678             IDLAM(LKNT,1)=KFNCHI(IJ)
50679             IDLAM(LKNT,2)=FID
50680             IDLAM(LKNT,3)=-FID
50681             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
50682               LKNT=LKNT+1
50683               XLAM(LKNT)=XLAM(LKNT-1)
50684               IDLAM(LKNT,1)=KFNCHI(IJ)
50685               IDLAM(LKNT,2)=13
50686               IDLAM(LKNT,3)=-13
50687             ENDIF
50688           ENDIF
50689   140     CONTINUE
50690           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
50691             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
50692             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
50693           ELSE
50694             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
50695             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
50696           ENDIF
50697           IF( XXC(5).LT.AXMI ) THEN
50698             XXC(5)=1D6
50699           ENDIF
50700           IF(XXC(6).LT.AXMI ) THEN
50701             XXC(6)=1D6
50702           ENDIF
50703           XXC(7)=XXC(5)
50704           XXC(8)=XXC(6)
50705  
50706           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
50707             LKNT=LKNT+1
50708             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50709      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50710             IDLAM(LKNT,1)=KFNCHI(IJ)
50711             IDLAM(LKNT,2)=15
50712             IDLAM(LKNT,3)=-15
50713           ENDIF
50714  
50715 C...NEUTRINOS
50716   150     CONTINUE
50717           FID=12
50718           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50719           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50720           EI=KCHG(FID,1)/3D0
50721           T3I=SIGN(1D0,EI+1D-6)/2D0
50722           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50723      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50724           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50725           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50726           CXC(2)=-GLIJ
50727           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50728           CXC(4)=DCONJG(GLIJ)
50729           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50730           CXC(6)=GRIJ
50731           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50732           CXC(8)=-DCONJG(GRIJ)
50733           S12MIN=0D0
50734           S12MAX=(AXMI-AXMJ)**2
50735           IF( XXC(5).LT.AXMI ) THEN
50736             XXC(5)=1D6
50737           ENDIF
50738           IF( XXC(6).LT.AXMI ) THEN
50739             XXC(6)=1D6
50740           ENDIF
50741           XXC(7)=XXC(5)
50742           XXC(8)=XXC(6)
50743  
50744           LKNT=LKNT+1
50745           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50746      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50747           IDLAM(LKNT,1)=KFNCHI(IJ)
50748           IDLAM(LKNT,2)=12
50749           IDLAM(LKNT,3)=-12
50750           LKNT=LKNT+1
50751           XLAM(LKNT)=XLAM(LKNT-1)
50752           IDLAM(LKNT,1)=KFNCHI(IJ)
50753           IDLAM(LKNT,2)=14
50754           IDLAM(LKNT,3)=-14
50755   160     CONTINUE
50756  
50757           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
50758      &    THEN
50759             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
50760             IF( XXC(5).LT.AXMI ) THEN
50761               XXC(5)=1D6
50762             ENDIF
50763             XXC(7)=XXC(5)
50764             LKNT=LKNT+1
50765             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50766      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
50767           ELSE
50768             LKNT=LKNT+1
50769             XLAM(LKNT)=XLAM(LKNT-1)
50770           ENDIF
50771           IDLAM(LKNT,1)=KFNCHI(IJ)
50772           IDLAM(LKNT,2)=16
50773           IDLAM(LKNT,3)=-16
50774 C...D-TYPE QUARKS
50775   170     CONTINUE
50776           FID=1
50777           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50778           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50779           EI=KCHG(FID,1)/3D0
50780           T3I=SIGN(1D0,EI+1D-6)/2D0
50781           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50782      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50783           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50784           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50785           CXC(2)=-GLIJ
50786           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50787           CXC(4)=DCONJG(GLIJ)
50788           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50789           CXC(6)=GRIJ
50790           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50791           CXC(8)=-DCONJG(GRIJ)
50792           S12MIN=0D0
50793           S12MAX=(AXMI-AXMJ)**2
50794           IF( XXC(5).LT.AXMI ) THEN
50795             XXC(5)=1D6
50796           ENDIF
50797           IF( XXC(6).LT.AXMI ) THEN
50798             XXC(6)=1D6
50799           ENDIF
50800           XXC(7)=XXC(5)
50801           XXC(8)=XXC(6)
50802  
50803           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
50804             LKNT=LKNT+1
50805             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50806      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50807             IDLAM(LKNT,1)=KFNCHI(IJ)
50808             IDLAM(LKNT,2)=1
50809             IDLAM(LKNT,3)=-1
50810             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
50811               LKNT=LKNT+1
50812               XLAM(LKNT)=XLAM(LKNT-1)
50813               IDLAM(LKNT,1)=KFNCHI(IJ)
50814               IDLAM(LKNT,2)=3
50815               IDLAM(LKNT,3)=-3
50816             ENDIF
50817           ENDIF
50818   180     CONTINUE
50819           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
50820             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
50821             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
50822           ELSE
50823             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
50824             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
50825           ENDIF
50826           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
50827           IF(XXC(5).LT.AXMI) THEN
50828             XXC(5)=1D6
50829           ELSEIF(XXC(6).LT.AXMI) THEN
50830             XXC(6)=1D6
50831           ENDIF
50832           XXC(7)=XXC(5)
50833           XXC(8)=XXC(6)
50834           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
50835             LKNT=LKNT+1
50836             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50837      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50838             IDLAM(LKNT,1)=KFNCHI(IJ)
50839             IDLAM(LKNT,2)=5
50840             IDLAM(LKNT,3)=-5
50841           ENDIF
50842  
50843 C...U-TYPE QUARKS
50844   190     CONTINUE
50845           FID=2
50846           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
50847           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
50848           EI=KCHG(FID,1)/3D0
50849           T3I=SIGN(1D0,EI+1D-6)/2D0
50850           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
50851      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
50852           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
50853           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
50854           CXC(2)=-GLIJ
50855           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
50856           CXC(4)=DCONJG(GLIJ)
50857           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
50858           CXC(6)=GRIJ
50859           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
50860           CXC(8)=-DCONJG(GRIJ)
50861  
50862           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
50863           IF(XXC(5).LT.AXMI) THEN
50864             XXC(5)=1D6
50865           ELSEIF(XXC(6).LT.AXMI) THEN
50866             XXC(6)=1D6
50867           ENDIF
50868           XXC(7)=XXC(5)
50869           XXC(8)=XXC(6)
50870  
50871           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
50872             LKNT=LKNT+1
50873             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50874      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
50875             IDLAM(LKNT,1)=KFNCHI(IJ)
50876             IDLAM(LKNT,2)=2
50877             IDLAM(LKNT,3)=-2
50878             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
50879               LKNT=LKNT+1
50880               XLAM(LKNT)=XLAM(LKNT-1)
50881               IDLAM(LKNT,1)=KFNCHI(IJ)
50882               IDLAM(LKNT,2)=4
50883               IDLAM(LKNT,3)=-4
50884             ENDIF
50885           ENDIF
50886   200     CONTINUE
50887         ENDIF
50888  
50889 C...CHI0_I -> CHI0_J + H0_K
50890         EH(1)=SIN(ALFA)
50891         EH(2)=COS(ALFA)
50892         EH(3)=-SIN(BETA)
50893         DH(1)=COS(ALFA)
50894         DH(2)=-SIN(ALFA)
50895         DH(3)=COS(BETA)
50896         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
50897      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
50898      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
50899      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
50900         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
50901      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
50902      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
50903      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
50904         DO 210 IH=1,3
50905           XMH=PMAS(ITH(IH),1)
50906           XMH2=XMH**2
50907           IF(AXMI.GE.AXMJ+XMH) THEN
50908             LKNT=LKNT+1
50909             XL=PYLAMF(XMI2,XMJ2,XMH2)
50910             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
50911             F12K=F21K
50912 C...SIGN OF MASSES I,J
50913             XMK=XMJ
50914             IF(IH.EQ.3) XMK=-XMK
50915             GX2=ABS(F21K)**2+ABS(F12K)**2
50916             GLR=DBLE(F21K*DCONJG(F12K))
50917             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
50918             IDLAM(LKNT,1)=KFNCHI(IJ)
50919             IDLAM(LKNT,2)=ITH(IH)
50920             IDLAM(LKNT,3)=0
50921           ENDIF
50922   210   CONTINUE
50923   220 CONTINUE
50924  
50925 C...CHI0_I -> CHI+_J + W-
50926       DO 260 IJ=1,2
50927         XMJ=SMW(IJ)
50928         AXMJ=ABS(XMJ)
50929         XMJ2=XMJ**2
50930         IF(AXMI.GE.AXMJ+XMW) THEN
50931           LKNT=LKNT+1
50932           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
50933      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
50934           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
50935      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
50936           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
50937           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
50938           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
50939           IDLAM(LKNT,1)=KFCCHI(IJ)
50940           IDLAM(LKNT,2)=-24
50941           IDLAM(LKNT,3)=0
50942           LKNT=LKNT+1
50943           XLAM(LKNT)=XLAM(LKNT-1)
50944           IDLAM(LKNT,1)=-KFCCHI(IJ)
50945           IDLAM(LKNT,2)=24
50946           IDLAM(LKNT,3)=0
50947         ELSEIF(AXMI.GE.AXMJ) THEN
50948           S12MIN=0D0
50949           S12MAX=(AXMI-AXMJ)**2
50950           RT2I = 1D0/SQRT(2D0)
50951           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
50952      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
50953           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
50954      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
50955           CXC(5)=DCMPLX(0D0,0D0)
50956           CXC(7)=DCMPLX(0D0,0D0)
50957           IA=11
50958           JA=12
50959           EI=KCHG(IA,1)/3D0
50960           T3I=SIGN(1D0,EI+1D-6)/2D0
50961           EJ=KCHG(JA,1)/3D0
50962           T3J=SIGN(1D0,EJ+1D-6)/2D0
50963           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
50964      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
50965           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
50966      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
50967           CXC(6)=DCMPLX(0D0,0D0)
50968           CXC(8)=DCMPLX(0D0,0D0)
50969           XXC(1)=0D0
50970           XXC(2)=XMJ
50971           XXC(3)=0D0
50972           XXC(4)=XMI
50973           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
50974           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
50975           XXC(9)=PMAS(24,1)
50976           XXC(10)=PMAS(24,2)
50977           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
50978           IF(XXC(5).LT.AXMI) THEN
50979             XXC(5)=1D6
50980           ELSEIF(XXC(6).LT.AXMI) THEN
50981             XXC(6)=1D6
50982           ENDIF
50983           XXC(7)=XXC(6)
50984           XXC(8)=XXC(5)
50985           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
50986             LKNT=LKNT+1
50987             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
50988      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
50989             IDLAM(LKNT,1)=KFCCHI(IJ)
50990             IDLAM(LKNT,2)=11
50991             IDLAM(LKNT,3)=-12
50992             LKNT=LKNT+1
50993             XLAM(LKNT)=XLAM(LKNT-1)
50994             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50995             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50996             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50997             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
50998               LKNT=LKNT+1
50999               XLAM(LKNT)=XLAM(LKNT-1)
51000               IDLAM(LKNT,1)=KFCCHI(IJ)
51001               IDLAM(LKNT,2)=13
51002               IDLAM(LKNT,3)=-14
51003               LKNT=LKNT+1
51004               XLAM(LKNT)=XLAM(LKNT-1)
51005               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51006               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51007               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51008             ENDIF
51009           ENDIF
51010   230     CONTINUE
51011           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51012             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
51013             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
51014           ELSE
51015             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
51016             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
51017           ENDIF
51018           IF(XXC(5).LT.AXMI) THEN
51019             XXC(5)=1D6
51020           ENDIF
51021           IF(XXC(6).LT.AXMI) THEN
51022             XXC(6)=1D6
51023           ENDIF
51024           XXC(7)=XXC(6)
51025           XXC(8)=XXC(5)
51026           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
51027             LKNT=LKNT+1
51028             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51029      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51030             XLAM(LKNT)=XLAM(LKNT-1)
51031             IDLAM(LKNT,1)=KFCCHI(IJ)
51032             IDLAM(LKNT,2)=15
51033             IDLAM(LKNT,3)=-16
51034             LKNT=LKNT+1
51035             XLAM(LKNT)=XLAM(LKNT-1)
51036             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51037             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51038             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51039           ENDIF
51040  
51041 C...NOW, DO THE QUARKS
51042   240     CONTINUE
51043           IA=1
51044           JA=2
51045           EI=KCHG(IA,1)/3D0
51046           T3I=SIGN(1D0,EI+1D-6)/2D0
51047           EJ=KCHG(JA,1)/3D0
51048           T3J=SIGN(1D0,EJ+1D-6)/2D0
51049           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
51050      &    TANW+ZMIXC(IX,2)*T3J)
51051           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
51052      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
51053           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
51054           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
51055           IF(XXC(5).LT.AXMI) THEN
51056             XXC(5)=1D6
51057           ENDIF
51058           IF(XXC(6).LT.AXMI) THEN
51059             XXC(6)=1D6
51060           ENDIF
51061           XXC(7)=XXC(6)
51062           XXC(8)=XXC(5)
51063           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
51064             LKNT=LKNT+1
51065             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51066      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51067             IDLAM(LKNT,1)=KFCCHI(IJ)
51068             IDLAM(LKNT,2)=1
51069             IDLAM(LKNT,3)=-2
51070             LKNT=LKNT+1
51071             XLAM(LKNT)=XLAM(LKNT-1)
51072             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51073             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51074             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51075             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51076               LKNT=LKNT+1
51077               XLAM(LKNT)=XLAM(LKNT-1)
51078               IDLAM(LKNT,1)=KFCCHI(IJ)
51079               IDLAM(LKNT,2)=3
51080               IDLAM(LKNT,3)=-4
51081               LKNT=LKNT+1
51082               XLAM(LKNT)=XLAM(LKNT-1)
51083               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51084               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51085               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51086             ENDIF
51087           ENDIF
51088   250     CONTINUE
51089         ENDIF
51090   260 CONTINUE
51091   270 CONTINUE
51092  
51093 C...CHI0_I -> CHI+_I + H-
51094       DO 280 IJ=1,2
51095         XMJ=SMW(IJ)
51096         AXMJ=ABS(XMJ)
51097         XMJ2=XMJ**2
51098         XMHP=PMAS(ITHC,1)
51099         IF(AXMI.GE.AXMJ+XMHP) THEN
51100           LKNT=LKNT+1
51101           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
51102      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
51103           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
51104      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
51105      &    UMIXC(IJ,2)/SR2)
51106           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51107           GLR=DBLE(OLPP*DCONJG(ORPP))
51108           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
51109           IDLAM(LKNT,1)=KFCCHI(IJ)
51110           IDLAM(LKNT,2)=-ITHC
51111           IDLAM(LKNT,3)=0
51112           LKNT=LKNT+1
51113           XLAM(LKNT)=XLAM(LKNT-1)
51114           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51115           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51116           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51117         ELSE
51118  
51119         ENDIF
51120   280 CONTINUE
51121  
51122 C...2-BODY DECAYS TO FERMION SFERMION
51123       DO 290 J=1,16
51124         IF(J.GE.7.AND.J.LE.10) GOTO 290
51125         KF1=KSUSY1+J
51126         KF2=KSUSY2+J
51127         XMSF1=PMAS(PYCOMP(KF1),1)
51128         XMSF2=PMAS(PYCOMP(KF2),1)
51129         XMF=PMAS(J,1)
51130         IF(J.LE.6) THEN
51131           FCOL=3D0
51132         ELSE
51133           FCOL=1D0
51134         ENDIF
51135  
51136         EI=KCHG(J,1)/3D0
51137         T3T=SIGN(1D0,EI)
51138         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
51139         IF(MOD(J,2).EQ.0) THEN
51140           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
51141           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
51142           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
51143           CBR=CAL
51144         ELSE
51145           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
51146           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
51147           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
51148           CBR=CAL
51149         ENDIF
51150  
51151 C...D~ D_L
51152         IF(AXMI.GE.XMF+XMSF1) THEN
51153           LKNT=LKNT+1
51154           XMA2=XMSF1**2
51155           XMB2=XMF**2
51156           XL=PYLAMF(XMI2,XMA2,XMB2)
51157           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
51158           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
51159           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51160      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51161           IDLAM(LKNT,1)=KF1
51162           IDLAM(LKNT,2)=-J
51163           IDLAM(LKNT,3)=0
51164           LKNT=LKNT+1
51165           XLAM(LKNT)=XLAM(LKNT-1)
51166           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51167           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51168           IDLAM(LKNT,3)=0
51169         ENDIF
51170  
51171 C...D~ D_R
51172         IF(AXMI.GE.XMF+XMSF2) THEN
51173           LKNT=LKNT+1
51174           XMA2=XMSF2**2
51175           XMB2=XMF**2
51176           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
51177           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
51178           XL=PYLAMF(XMI2,XMA2,XMB2)
51179           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51180      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51181           IDLAM(LKNT,1)=KF2
51182           IDLAM(LKNT,2)=-J
51183           IDLAM(LKNT,3)=0
51184           LKNT=LKNT+1
51185           XLAM(LKNT)=XLAM(LKNT-1)
51186           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51187           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51188           IDLAM(LKNT,3)=0
51189         ENDIF
51190   290 CONTINUE
51191   300 CONTINUE
51192 C...3-BODY DECAY TO Q Q~ GLUINO
51193       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
51194       IF(AXMI.GE.XMJ) THEN
51195         RT2I = 1D0/SQRT(2D0)
51196         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
51197         ORPP=DCONJG(OLPP)
51198         AXMJ=ABS(XMJ)
51199         XXC(1)=0D0
51200         XXC(2)=XMJ
51201         XXC(3)=0D0
51202         XXC(4)=XMI
51203         FID=1
51204         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51205         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51206         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
51207         XXC(7)=XXC(5)
51208         XXC(8)=XXC(6)
51209         XXC(9)=1D6
51210         XXC(10)=0D0
51211         EI=KCHG(FID,1)/3D0
51212         T3I=SIGN(1D0,EI+1D-6)/2D0
51213         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51214         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51215         CXC(1)=0D0
51216         CXC(2)=-GLIJ
51217         CXC(3)=0D0
51218         CXC(4)=DCONJG(GLIJ)
51219         CXC(5)=0D0
51220         CXC(6)=GRIJ
51221         CXC(7)=0D0
51222         CXC(8)=-DCONJG(GRIJ)
51223         S12MIN=0D0
51224         S12MAX=(AXMI-AXMJ)**2
51225 C...ALL QUARKS BUT T
51226         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51227           LKNT=LKNT+1
51228           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
51229      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51230           IDLAM(LKNT,1)=KSUSY1+21
51231           IDLAM(LKNT,2)=1
51232           IDLAM(LKNT,3)=-1
51233           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51234             LKNT=LKNT+1
51235             XLAM(LKNT)=XLAM(LKNT-1)
51236             IDLAM(LKNT,1)=KSUSY1+21
51237             IDLAM(LKNT,2)=3
51238             IDLAM(LKNT,3)=-3
51239           ENDIF
51240         ENDIF
51241   310   CONTINUE
51242         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
51243           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
51244           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
51245         ELSE
51246           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
51247           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
51248         ENDIF
51249         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
51250         XXC(7)=XXC(5)
51251         XXC(8)=XXC(6)
51252         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51253           LKNT=LKNT+1
51254           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
51255      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51256           IDLAM(LKNT,1)=KSUSY1+21
51257           IDLAM(LKNT,2)=5
51258           IDLAM(LKNT,3)=-5
51259         ENDIF
51260 C...U-TYPE QUARKS
51261   320   CONTINUE
51262         FID=2
51263         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51264         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51265         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
51266         XXC(7)=XXC(5)
51267         XXC(8)=XXC(6)
51268         EI=KCHG(FID,1)/3D0
51269         T3I=SIGN(1D0,EI+1D-6)/2D0
51270         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51271         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51272         CXC(2)=-GLIJ
51273         CXC(4)=DCONJG(GLIJ)
51274         CXC(6)=GRIJ
51275         CXC(8)=-DCONJG(GRIJ)
51276         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51277           LKNT=LKNT+1
51278           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
51279      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51280           IDLAM(LKNT,1)=KSUSY1+21
51281           IDLAM(LKNT,2)=2
51282           IDLAM(LKNT,3)=-2
51283           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51284             LKNT=LKNT+1
51285             XLAM(LKNT)=XLAM(LKNT-1)
51286             IDLAM(LKNT,1)=KSUSY1+21
51287             IDLAM(LKNT,2)=4
51288             IDLAM(LKNT,3)=-4
51289           ENDIF
51290         ENDIF
51291   330   CONTINUE
51292       ENDIF
51293  
51294 C...R-violating decay modes (SKANDS).
51295       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
51296  
51297   340 IKNT=LKNT
51298       XLAM(0)=0D0
51299       DO 350 I=1,IKNT
51300         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
51301         XLAM(0)=XLAM(0)+XLAM(I)
51302   350 CONTINUE
51303       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
51304  
51305       RETURN
51306       END
51307  
51308 C*********************************************************************
51309  
51310 C...PYCJDC
51311 C...Calculate decay widths for the charginos (admixtures of
51312 C...charged Wino and charged Higgsino.
51313  
51314 C...Input:  KCIN = KF code for particle
51315 C...Output: XLAM = widths
51316 C...        IDLAM = KF codes for decay particles
51317 C...        IKNT = number of decay channels defined
51318 C...AUTHOR: STEPHEN MRENNA
51319 C...Last change:
51320 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
51321 C...when CHIENU .NE. 0
51322  
51323       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
51324  
51325 C...Double precision and integer declarations.
51326       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51327       IMPLICIT INTEGER(I-N)
51328       INTEGER PYK,PYCHGE,PYCOMP
51329 C...Parameter statement to help give large particle numbers.
51330       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51331      &KEXCIT=4000000,KDIMEN=5000000)
51332 C...Commonblocks.
51333       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51334       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51335       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51336       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51337      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51338 CC     &SFMIX(16,4),
51339 C      COMMON/PYINTS/XXM(20)
51340       COMPLEX*16 CXC
51341       COMMON/PYINTC/XXC(10),CXC(8)
51342       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
51343  
51344 C...Local variables
51345       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
51346       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
51347       INTEGER KFIN,KCIN
51348       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
51349      &XMZ,XMZ2,AXMJ,AXMI
51350       DOUBLE PRECISION S12MIN,S12MAX
51351       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
51352       DOUBLE PRECISION PYLAMF,XL
51353       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
51354       DOUBLE PRECISION PYX2XH,PYX2XG
51355       DOUBLE PRECISION XLAM(0:400)
51356       INTEGER IDLAM(400,3)
51357       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
51358       INTEGER ITH(3)
51359       INTEGER ITHC
51360       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
51361       DOUBLE PRECISION SR2
51362       DOUBLE PRECISION CBETA,SBETA,TANB
51363  
51364       DOUBLE PRECISION PYALEM,PI,PYALPS
51365       DOUBLE PRECISION FCOL
51366       INTEGER KF1,KF2,ISF
51367       INTEGER KFNCHI(4),KFCCHI(2)
51368  
51369       DOUBLE PRECISION TEMP
51370       EXTERNAL PYGAUS,PYXXZ6
51371       DOUBLE PRECISION PYGAUS,PYXXZ6
51372       DOUBLE PRECISION PREC
51373       DATA ITH/25,35,36/
51374       DATA ITHC/37/
51375       DATA ETAH/1D0,1D0,-1D0/
51376       DATA SR2/1.4142136D0/
51377       DATA PI/3.141592654D0/
51378       DATA PREC/1D-2/
51379       DATA KFNCHI/1000022,1000023,1000025,1000035/
51380       DATA KFCCHI/1000024,1000037/
51381  
51382 C...COUNT THE NUMBER OF DECAY MODES
51383       LKNT=0
51384       XMW=PMAS(24,1)
51385       XMW2=XMW**2
51386       XMZ=PMAS(23,1)
51387       XMZ2=XMZ**2
51388       XW=1D0-XMW2/XMZ2
51389       XW1=1D0-XW
51390       TANW = SQRT(XW/XW1)
51391  
51392 C...1 OR 2 DEPENDING ON CHARGINO TYPE
51393       IX=1
51394       IF(KFIN.EQ.KFCCHI(2)) IX=2
51395       KCIN=PYCOMP(KFIN)
51396  
51397       XMI=SMW(IX)
51398       XMI2=XMI**2
51399       AXMI=ABS(XMI)
51400       AEM=PYALEM(XMI2)
51401       AS =PYALPS(XMI2)
51402       C1=AEM/XW
51403       XMI3=ABS(XMI**3)
51404       TANB=RMSS(5)
51405       BETA=ATAN(TANB)
51406       CBETA=COS(BETA)
51407       SBETA=TANB*CBETA
51408       ALFA=RMSS(18)
51409  
51410       DO 110 I=1,2
51411         DO 100 J=1,2
51412           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
51413           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
51414   100   CONTINUE
51415   110 CONTINUE
51416  
51417 C...GRAVITINO DECAY MODES
51418  
51419       IF(IMSS(11).EQ.1) THEN
51420         XMP=RMSS(29)
51421         IDG=39+KSUSY1
51422         XMGR=PMAS(PYCOMP(IDG),1)
51423 C        SINW=SQRT(XW)
51424 C        COSW=SQRT(1D0-XW)
51425         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
51426         IF(AXMI.GT.XMGR+XMW) THEN
51427           LKNT=LKNT+1
51428           IDLAM(LKNT,1)=IDG
51429           IDLAM(LKNT,2)=24
51430           IDLAM(LKNT,3)=0
51431           XLAM(LKNT)=XFAC*(
51432      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
51433      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
51434      &  (1D0-XMW2/XMI2)**4
51435         ENDIF
51436         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
51437           LKNT=LKNT+1
51438           IDLAM(LKNT,1)=IDG
51439           IDLAM(LKNT,2)=37
51440           IDLAM(LKNT,3)=0
51441           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
51442      &   (ABS(UMIXC(IX,2))*SBETA)**2))
51443      &   *(1D0-PMAS(37,1)**2/XMI2)**4
51444        ENDIF
51445       ENDIF
51446  
51447 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
51448       IF(IX.EQ.1) GOTO 170
51449       XMJ=SMW(1)
51450       AXMJ=ABS(XMJ)
51451       XMJ2=XMJ**2
51452  
51453 C...CHI_2+ -> CHI_1+ + Z0
51454       IF(AXMI.GE.AXMJ+XMZ) THEN
51455         LKNT=LKNT+1
51456         IJ=1
51457         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
51458      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
51459         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
51460      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
51461         GX2=ABS(OLPP)**2+ABS(ORPP)**2
51462         GLR=DBLE(OLPP*DCONJG(ORPP))
51463         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
51464         IDLAM(LKNT,1)=KFCCHI(1)
51465         IDLAM(LKNT,2)=23
51466         IDLAM(LKNT,3)=0
51467  
51468 C...CHARGED LEPTONS
51469       ELSEIF(AXMI.GE.AXMJ) THEN
51470         S12MIN=0D0
51471         S12MAX=(AXMI-AXMJ)**2
51472         IA=11
51473         JA=12
51474         EI=KCHG(IABS(IA),1)/3D0
51475         T3I=SIGN(1D0,EI+1D-6)/2D0
51476         XXC(1)=0D0
51477         XXC(2)=XMJ
51478         XXC(3)=0D0
51479         XXC(4)=XMI
51480         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51481         XXC(6)=1D6
51482         XXC(9)=PMAS(23,1)
51483         XXC(10)=PMAS(23,2)
51484         IJ=1
51485         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
51486      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
51487         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
51488      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
51489         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51490         CXC(2)=DCMPLX(0D0,0D0)
51491         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51492         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
51493         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51494         CXC(6)=DCMPLX(0D0,0D0)
51495         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51496         CXC(8)=DCMPLX(0D0,0D0)
51497         IF( XXC(5).LT.AXMI ) THEN
51498           XXC(5)=1D6
51499         ENDIF
51500         XXC(7)=XXC(5)
51501         XXC(8)=XXC(6)
51502         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
51503           LKNT=LKNT+1
51504           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51505      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51506           IDLAM(LKNT,1)=KFCCHI(1)
51507           IDLAM(LKNT,2)=11
51508           IDLAM(LKNT,3)=-11
51509           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
51510             LKNT=LKNT+1
51511             XLAM(LKNT)=XLAM(LKNT-1)
51512             IDLAM(LKNT,1)=KFCCHI(1)
51513             IDLAM(LKNT,2)=13
51514             IDLAM(LKNT,3)=-13
51515           ENDIF
51516           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
51517             LKNT=LKNT+1
51518             XLAM(LKNT)=XLAM(LKNT-1)
51519             IDLAM(LKNT,1)=KFCCHI(1)
51520             IDLAM(LKNT,2)=15
51521             IDLAM(LKNT,3)=-15
51522           ENDIF
51523         ENDIF
51524  
51525 C...NEUTRINOS
51526   120   CONTINUE
51527         IA=12
51528         JA=11
51529         EI=KCHG(IABS(IA),1)/3D0
51530         T3I=SIGN(1D0,EI+1D-6)/2D0
51531         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51532         XXC(6)=1D6
51533         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51534         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51535         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
51536         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51537         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51538         IF( XXC(5).LT.AXMI ) THEN
51539           XXC(5)=1D6
51540         ENDIF
51541         XXC(7)=XXC(5)
51542         XXC(8)=XXC(6)
51543         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
51544           LKNT=LKNT+1
51545           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51546      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51547           IDLAM(LKNT,1)=KFCCHI(1)
51548           IDLAM(LKNT,2)=12
51549           IDLAM(LKNT,3)=-12
51550           LKNT=LKNT+1
51551           XLAM(LKNT)=XLAM(LKNT-1)
51552           IDLAM(LKNT,1)=KFCCHI(1)
51553           IDLAM(LKNT,2)=14
51554           IDLAM(LKNT,3)=-14
51555         ENDIF
51556         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
51557           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51558             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
51559           ELSE
51560             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
51561           ENDIF
51562           IF( XXC(5).LT.AXMI ) THEN
51563             XXC(5)=1D6
51564           ENDIF
51565           XXC(7)=XXC(5)
51566           LKNT=LKNT+1
51567           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51568      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51569           IDLAM(LKNT,1)=KFCCHI(1)
51570           IDLAM(LKNT,2)=16
51571           IDLAM(LKNT,3)=-16
51572         ENDIF
51573  
51574 C...D-TYPE QUARKS
51575   130   CONTINUE
51576         IA=1
51577         JA=2
51578         EI=KCHG(IABS(IA),1)/3D0
51579         T3I=SIGN(1D0,EI+1D-6)/2D0
51580         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51581         XXC(6)=1D6
51582         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51583         CXC(2)=DCMPLX(0D0,0D0)
51584         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51585         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
51586         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51587         CXC(6)=DCMPLX(0D0,0D0)
51588         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51589         CXC(8)=DCMPLX(0D0,0D0)
51590         IF( XXC(5).LT.AXMI ) THEN
51591           XXC(5)=1D6
51592         ENDIF
51593         XXC(7)=XXC(5)
51594         XXC(8)=XXC(6)
51595         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51596           LKNT=LKNT+1
51597           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51598      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51599           IDLAM(LKNT,1)=KFCCHI(1)
51600           IDLAM(LKNT,2)=1
51601           IDLAM(LKNT,3)=-1
51602           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51603             LKNT=LKNT+1
51604             XLAM(LKNT)=XLAM(LKNT-1)
51605             IDLAM(LKNT,1)=KFCCHI(1)
51606             IDLAM(LKNT,2)=3
51607             IDLAM(LKNT,3)=-3
51608           ENDIF
51609         ENDIF
51610         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51611           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
51612             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
51613           ELSE
51614             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
51615           ENDIF
51616           IF( XXC(5).LT.AXMI ) THEN
51617             XXC(5)=1D6
51618           ENDIF
51619           XXC(7)=XXC(5)
51620           LKNT=LKNT+1
51621           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51622      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51623           IDLAM(LKNT,1)=KFCCHI(1)
51624           IDLAM(LKNT,2)=5
51625           IDLAM(LKNT,3)=-5
51626         ENDIF
51627  
51628 C...U-TYPE QUARKS
51629   140   CONTINUE
51630         IA=2
51631         JA=1
51632         EI=KCHG(IABS(IA),1)/3D0
51633         T3I=SIGN(1D0,EI+1D-6)/2D0
51634         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51635         XXC(6)=1D6
51636         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
51637         CXC(2)=DCMPLX(0D0,0D0)
51638         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
51639         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
51640         CXC(5)=-DCMPLX(EI/XW1)*ORPP
51641         CXC(6)=DCMPLX(0D0,0D0)
51642         CXC(7)=-DCMPLX(EI/XW1)*OLPP
51643         CXC(8)=DCMPLX(0D0,0D0)
51644         IF( XXC(5).LT.AXMI ) THEN
51645           XXC(5)=1D6
51646         ENDIF
51647         XXC(7)=XXC(5)
51648         XXC(8)=XXC(6)
51649         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51650           LKNT=LKNT+1
51651           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51652      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51653           IDLAM(LKNT,1)=KFCCHI(1)
51654           IDLAM(LKNT,2)=2
51655           IDLAM(LKNT,3)=-2
51656           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51657             LKNT=LKNT+1
51658             XLAM(LKNT)=XLAM(LKNT-1)
51659             IDLAM(LKNT,1)=KFCCHI(1)
51660             IDLAM(LKNT,2)=4
51661             IDLAM(LKNT,3)=-4
51662           ENDIF
51663         ENDIF
51664   150   CONTINUE
51665       ENDIF
51666  
51667 C...CHI_2+ -> CHI_1+ + H0_K
51668       EH(2)=COS(ALFA)
51669       EH(1)=SIN(ALFA)
51670       EH(3)=-SBETA
51671       DH(2)=-SIN(ALFA)
51672       DH(1)=COS(ALFA)
51673       DH(3)=COS(BETA)
51674       DO 160 IH=1,3
51675         XMH=PMAS(ITH(IH),1)
51676         XMH2=XMH**2
51677 C...NO 3-BODY OPTION
51678         IF(AXMI.GE.AXMJ+XMH) THEN
51679           LKNT=LKNT+1
51680           XL=PYLAMF(XMI2,XMJ2,XMH2)
51681           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
51682      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
51683           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
51684      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
51685           XMK=XMJ*ETAH(IH)
51686           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51687           GLR=DBLE(OLPP*DCONJG(ORPP))
51688           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
51689           IDLAM(LKNT,1)=KFCCHI(1)
51690           IDLAM(LKNT,2)=ITH(IH)
51691           IDLAM(LKNT,3)=0
51692         ENDIF
51693   160 CONTINUE
51694  
51695 C...CHI1 JUMPS TO HERE
51696   170 CONTINUE
51697  
51698 C...CHI+_I -> CHI0_J + W+
51699       DO 220 IJ=1,4
51700         XMJ=SMZ(IJ)
51701         AXMJ=ABS(XMJ)
51702         XMJ2=XMJ**2
51703         IF(AXMI.GE.AXMJ+XMW) THEN
51704           LKNT=LKNT+1
51705           DO 180 I=1,4
51706             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
51707   180     CONTINUE
51708           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
51709      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
51710           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
51711      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
51712           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
51713           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
51714           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
51715           IDLAM(LKNT,1)=KFNCHI(IJ)
51716           IDLAM(LKNT,2)=24
51717           IDLAM(LKNT,3)=0
51718 C...LEPTONS
51719         ELSEIF(AXMI.GE.AXMJ) THEN
51720           S12MIN=0D0
51721           S12MAX=(AXMI-AXMJ)**2
51722           DO 190 I=1,4
51723             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
51724   190     CONTINUE
51725           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
51726      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
51727           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
51728      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
51729           CXC(5)=DCMPLX(0D0,0D0)
51730           CXC(7)=DCMPLX(0D0,0D0)
51731           IA=11
51732           JA=12
51733           EI=KCHG(IA,1)/3D0
51734           T3I=SIGN(1D0,EI+1D-6)/2D0
51735           EJ=KCHG(JA,1)/3D0
51736           T3J=SIGN(1D0,EJ+1D-6)/2D0
51737           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
51738      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
51739           CXC(4)=-DCONJG(UMIXC(IX,1))*(
51740      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
51741           CXC(6)=DCMPLX(0D0,0D0)
51742           CXC(8)=DCMPLX(0D0,0D0)
51743           XXC(1)=0D0
51744           XXC(2)=XMJ
51745           XXC(3)=0D0
51746           XXC(4)=XMI
51747           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51748           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
51749           XXC(9)=PMAS(24,1)
51750           XXC(10)=PMAS(24,2)
51751 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
51752           IF(XXC(5).LT.AXMI) THEN
51753             XXC(5)=1D6
51754           ELSEIF(XXC(6).LT.AXMI) THEN
51755             XXC(6)=1D6
51756           ENDIF
51757           XXC(7)=XXC(6)
51758           XXC(8)=XXC(5)
51759 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
51760 C...--> 1/(16PI)/M**3*(AEM/XW)**2
51761           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
51762             LKNT=LKNT+1
51763             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51764             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
51765             IDLAM(LKNT,1)=KFNCHI(IJ)
51766             IDLAM(LKNT,2)=-11
51767             IDLAM(LKNT,3)=12
51768 C...ONLY DECAY CHI+1 -> E+ NU_E
51769             IF( IMSS(12).NE. 0 ) GOTO 260
51770             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
51771               LKNT=LKNT+1
51772               XLAM(LKNT)=XLAM(LKNT-1)
51773               IDLAM(LKNT,1)=KFNCHI(IJ)
51774               IDLAM(LKNT,2)=-13
51775               IDLAM(LKNT,3)=14
51776             ENDIF
51777           ENDIF
51778           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
51779             LKNT=LKNT+1
51780             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51781               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
51782             ELSE
51783               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
51784             ENDIF
51785             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
51786             IF(XXC(5).LT.AXMI) THEN
51787               XXC(5)=1D6
51788             ELSEIF(XXC(6).LT.AXMI) THEN
51789               XXC(6)=1D6
51790             ENDIF
51791             XXC(7)=XXC(6)
51792             XXC(8)=XXC(5)
51793             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51794             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
51795             IDLAM(LKNT,1)=KFNCHI(IJ)
51796             IDLAM(LKNT,2)=-15
51797             IDLAM(LKNT,3)=16
51798           ENDIF
51799  
51800 C...NOW, DO THE QUARKS
51801   200     CONTINUE
51802           IA=1
51803           JA=2
51804           EI=KCHG(IA,1)/3D0
51805           T3I=SIGN(1D0,EI+1D-6)/2D0
51806           EJ=KCHG(JA,1)/3D0
51807           T3J=SIGN(1D0,EJ+1D-6)/2D0
51808           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
51809      &    TANW+ZMIXC(IJ,2)*T3J)
51810           CXC(4)=-DCONJG(UMIXC(IX,1))*(
51811      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)
51812           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51813           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
51814           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
51815           IF(XXC(5).LT.AXMI) THEN
51816             XXC(5)=1D6
51817           ENDIF
51818           IF(XXC(6).LT.AXMI) THEN
51819             XXC(6)=1D6
51820           ENDIF
51821           XXC(7)=XXC(6)
51822           XXC(8)=XXC(5)
51823           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
51824             LKNT=LKNT+1
51825             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51826      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51827             IDLAM(LKNT,1)=KFNCHI(IJ)
51828             IDLAM(LKNT,2)=-1
51829             IDLAM(LKNT,3)=2
51830             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51831               LKNT=LKNT+1
51832               XLAM(LKNT)=XLAM(LKNT-1)
51833               IDLAM(LKNT,1)=KFNCHI(IJ)
51834               IDLAM(LKNT,2)=-3
51835               IDLAM(LKNT,3)=4
51836             ENDIF
51837           ENDIF
51838   210     CONTINUE
51839         ENDIF
51840   220 CONTINUE
51841  
51842 C...CHI+_I -> CHI0_J + H+
51843       DO 230 IJ=1,4
51844         XMJ=SMZ(IJ)
51845         AXMJ=ABS(XMJ)
51846         XMJ2=XMJ**2
51847         XMHP=PMAS(ITHC,1)
51848         IF(AXMI.GE.AXMJ+XMHP) THEN
51849           LKNT=LKNT+1
51850           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
51851      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
51852           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
51853      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
51854      &    UMIXC(IX,2)/SR2)
51855           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51856           GLR=DBLE(OLPP*DCONJG(ORPP))
51857           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
51858           IDLAM(LKNT,1)=KFNCHI(IJ)
51859           IDLAM(LKNT,2)=ITHC
51860           IDLAM(LKNT,3)=0
51861         ELSE
51862  
51863         ENDIF
51864   230 CONTINUE
51865  
51866 C...2-BODY DECAYS TO FERMION SFERMION
51867       DO 240 J=1,16
51868         IF(J.GE.7.AND.J.LE.10) GOTO 240
51869         IF(MOD(J,2).EQ.0) THEN
51870           KF1=KSUSY1+J-1
51871         ELSE
51872           KF1=KSUSY1+J+1
51873         ENDIF
51874         KF2=KF1+KSUSY1
51875         XMSF1=PMAS(PYCOMP(KF1),1)
51876         XMSF2=PMAS(PYCOMP(KF2),1)
51877         XMF=PMAS(J,1)
51878         IF(J.LE.6) THEN
51879           FCOL=3D0
51880         ELSE
51881           FCOL=1D0
51882         ENDIF
51883  
51884 C...U~ D_L
51885         IF(MOD(J,2).EQ.0) THEN
51886           XMFP=PMAS(J-1,1)
51887           CAL=UMIXC(IX,1)
51888           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
51889           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
51890           CBR=0D0
51891           ISF=J-1
51892         ELSE
51893           XMFP=PMAS(J+1,1)
51894           CAL=VMIXC(IX,1)
51895           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
51896           CBR=0D0
51897           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
51898           ISF=J+1
51899         ENDIF
51900  
51901 C...~U_L D
51902         IF(AXMI.GE.XMF+XMSF1) THEN
51903           LKNT=LKNT+1
51904           XMA2=XMSF1**2
51905           XMB2=XMF**2
51906           XL=PYLAMF(XMI2,XMA2,XMB2)
51907           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
51908           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
51909           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51910      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51911           IDLAM(LKNT,3)=0
51912           IF(MOD(J,2).EQ.0) THEN
51913             IDLAM(LKNT,1)=-KF1
51914             IDLAM(LKNT,2)=J
51915           ELSE
51916             IDLAM(LKNT,1)=KF1
51917             IDLAM(LKNT,2)=-J
51918           ENDIF
51919         ENDIF
51920  
51921 C...U~ D_R
51922         IF(AXMI.GE.XMF+XMSF2) THEN
51923           LKNT=LKNT+1
51924           XMA2=XMSF2**2
51925           XMB2=XMF**2
51926           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
51927           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
51928           XL=PYLAMF(XMI2,XMA2,XMB2)
51929           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
51930      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
51931           IDLAM(LKNT,3)=0
51932           IF(MOD(J,2).EQ.0) THEN
51933             IDLAM(LKNT,1)=-KF2
51934             IDLAM(LKNT,2)=J
51935           ELSE
51936             IDLAM(LKNT,1)=KF2
51937             IDLAM(LKNT,2)=-J
51938           ENDIF
51939         ENDIF
51940   240 CONTINUE
51941  
51942 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
51943 C...A 2-BODY -- 2-BODY CHAIN
51944       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
51945       IF(AXMI.GE.XMJ) THEN
51946         AXMJ=ABS(XMJ)
51947         S12MIN=0D0
51948         S12MAX=(AXMI-AXMJ)**2
51949         XXC(1)=0D0
51950         XXC(2)=XMJ
51951         XXC(3)=0D0
51952         XXC(4)=XMI
51953         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
51954         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
51955         XXC(9)=1D6
51956         XXC(10)=0D0
51957         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
51958         ORPP=DCONJG(OLPP)
51959         CXC(1)=DCMPLX(0D0,0D0)
51960         CXC(3)=DCMPLX(0D0,0D0)
51961         CXC(5)=DCMPLX(0D0,0D0)
51962         CXC(7)=DCMPLX(0D0,0D0)
51963         CXC(2)=UMIXC(IX,1)*OLPP/SR2
51964         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
51965         CXC(6)=DCMPLX(0D0,0D0)
51966         CXC(8)=DCMPLX(0D0,0D0)
51967         IF(XXC(5).LT.AXMI) THEN
51968           XXC(5)=1D6
51969         ELSEIF(XXC(6).LT.AXMI) THEN
51970           XXC(6)=1D6
51971         ENDIF
51972         XXC(7)=XXC(6)
51973         XXC(8)=XXC(5)
51974         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
51975         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
51976           LKNT=LKNT+1
51977           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
51978      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51979           IDLAM(LKNT,1)=KSUSY1+21
51980           IDLAM(LKNT,2)=-1
51981           IDLAM(LKNT,3)=2
51982           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51983             LKNT=LKNT+1
51984             XLAM(LKNT)=XLAM(LKNT-1)
51985             IDLAM(LKNT,1)=KSUSY1+21
51986             IDLAM(LKNT,2)=-3
51987             IDLAM(LKNT,3)=4
51988           ENDIF
51989         ENDIF
51990   250   CONTINUE
51991       ENDIF
51992  
51993 C...R-violating decay modes (SKANDS).
51994       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
51995  
51996   260 IKNT=LKNT
51997       XLAM(0)=0D0
51998       DO 270 I=1,IKNT
51999         XLAM(0)=XLAM(0)+XLAM(I)
52000         IF(XLAM(I).LT.0D0) THEN
52001           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
52002      &    (IDLAM(I,J),J=1,3)
52003           XLAM(I)=0D0
52004         ENDIF
52005   270 CONTINUE
52006       IF(XLAM(0).EQ.0D0) THEN
52007         XLAM(0)=1D-6
52008         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
52009         WRITE(MSTU(11),*) LKNT
52010         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
52011       ENDIF
52012  
52013       RETURN
52014       END
52015  
52016 C*********************************************************************
52017  
52018 C...PYXXZ6
52019 C...Used in the calculation of  inoi -> inoj + f + ~f.
52020  
52021       FUNCTION PYXXZ6(X)
52022  
52023 C...Double precision and integer declarations.
52024       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52025       IMPLICIT INTEGER(I-N)
52026       INTEGER PYK,PYCHGE,PYCOMP
52027 C...Parameter statement to help give large particle numbers.
52028       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52029      &KEXCIT=4000000,KDIMEN=5000000)
52030 C...Commonblocks.
52031       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52032 C      COMMON/PYINTS/XXM(20)
52033       COMPLEX*16 CXC
52034       COMMON/PYINTC/XXC(10),CXC(8)
52035       SAVE /PYDAT1/,/PYINTC/
52036  
52037 C...Local variables.
52038       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
52039       DOUBLE PRECISION PYXXZ6,X
52040       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
52041       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
52042       DOUBLE PRECISION SIJ
52043       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
52044       DOUBLE PRECISION OL2
52045       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
52046       INTEGER I
52047  
52048 C...Statement functions.
52049 C...Integral from x to y of (t-a)(b-t) dt.
52050       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
52051 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
52052       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
52053      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
52054 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
52055       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
52056      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
52057 C...Integral from x to y of (t-a)/(b-t) dt.
52058       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
52059 C...Integral from x to y of 1/(t-a) dt.
52060       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
52061  
52062       XM12=XXC(1)**2
52063       XM22=XXC(2)**2
52064       XM32=XXC(3)**2
52065       S=XXC(4)**2
52066       S13=X
52067  
52068       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
52069       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
52070      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
52071  
52072       S23MIN=(S23AVE-S23DEL)
52073       S23MAX=(S23AVE+S23DEL)
52074  
52075       XMSD1=XXC(5)**2
52076       XMSD2=XXC(7)**2
52077       XMSU1=XXC(6)**2
52078       XMSU2=XXC(8)**2
52079  
52080       XMV=XXC(9)
52081       XMG=XXC(10)
52082       QLLS=CXC(1)
52083       QLLU=CXC(2)
52084       QLRS=CXC(3)
52085       QLRT=CXC(4)
52086       QRLS=CXC(5)
52087       QRLT=CXC(6)
52088       QRRS=CXC(7)
52089       QRRU=CXC(8)
52090       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
52091       SIJ=2D0*XXC(2)*XXC(4)*S13
52092       IF(XMV.LE.1000D0) THEN
52093         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
52094         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
52095         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
52096      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
52097         IF(XXC(5).LE.10000D0) THEN
52098           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
52099      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
52100      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
52101      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
52102      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
52103      &    *(S13-XMV**2)/WPROP2
52104         ELSE
52105           WFL1=0D0
52106         ENDIF
52107  
52108         IF(XXC(6).LE.10000D0) THEN
52109           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
52110      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
52111      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
52112      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
52113      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
52114      &    *(S13-XMV**2)/WPROP2
52115         ELSE
52116           WFL2=0D0
52117         ENDIF
52118       ELSE
52119         WW=0D0
52120         WFL1=0D0
52121         WFL2=0D0
52122       ENDIF
52123       IF(XXC(5).LE.10000D0) THEN
52124         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
52125      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
52126      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
52127      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
52128       ELSE
52129         WF1=0D0
52130       ENDIF
52131       IF(XXC(6).LE.10000D0) THEN
52132         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
52133      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
52134      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
52135      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
52136       ELSE
52137         WF2=0D0
52138       ENDIF
52139  
52140       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
52141  
52142       IF(PYXXZ6.LT.0D0) THEN
52143         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
52144         WRITE(MSTU(11),*) (XXC(I),I=1,5)
52145         WRITE(MSTU(11),*) (XXC(I),I=6,10)
52146         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
52147         WRITE(MSTU(11),*) S23MIN,S23MAX
52148         PYXXZ6=0D0
52149       ENDIF
52150  
52151       RETURN
52152       END
52153  
52154  
52155 C*********************************************************************
52156  
52157 C...PYXXGA
52158 C...Calculates chi0_i -> chi0_j + gamma.
52159  
52160       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
52161  
52162 C...Double precision and integer declarations.
52163       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52164       IMPLICIT INTEGER(I-N)
52165       INTEGER PYK,PYCHGE,PYCOMP
52166  
52167 C...Local variables.
52168       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
52169       DOUBLE PRECISION F1,F2
52170  
52171       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
52172       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
52173       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
52174       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
52175  
52176       RETURN
52177       END
52178  
52179 C*********************************************************************
52180  
52181 C...PYX2XG
52182 C...Calculates the decay rate for ino -> ino + gauge boson.
52183  
52184       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
52185  
52186 C...Double precision and integer declarations.
52187       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52188       IMPLICIT INTEGER(I-N)
52189       INTEGER PYK,PYCHGE,PYCOMP
52190  
52191 C...Local variables.
52192       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
52193       DOUBLE PRECISION XL,PYLAMF,C1
52194       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
52195  
52196       XMI2=XM1**2
52197       XMI3=ABS(XM1**3)
52198       XMJ2=XM2**2
52199       XMV2=XM3**2
52200       XL=PYLAMF(XMI2,XMJ2,XMV2)
52201       PYX2XG=C1/8D0/XMI3*SQRT(XL)
52202      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
52203      &12D0*GLR*XM1*XM2*XMV2)
52204  
52205       RETURN
52206       END
52207  
52208 C*********************************************************************
52209  
52210 C...PYX2XH
52211 C...Calculates the decay rate for ino -> ino + H.
52212  
52213       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
52214  
52215 C...Double precision and integer declarations.
52216       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52217       IMPLICIT INTEGER(I-N)
52218       INTEGER PYK,PYCHGE,PYCOMP
52219  
52220 C...Local variables.
52221       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
52222       DOUBLE PRECISION XL,PYLAMF,C1
52223       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
52224  
52225       XMI2=XM1**2
52226       XMI3=ABS(XM1**3)
52227       XMJ2=XM2**2
52228       XMV2=XM3**2
52229       XL=PYLAMF(XMI2,XMJ2,XMV2)
52230       PYX2XH=C1/8D0/XMI3*SQRT(XL)
52231      &*(GX2*(XMI2+XMJ2-XMV2)+
52232      &4D0*GLR*XM1*XM2)
52233  
52234       RETURN
52235       END
52236  
52237 C*********************************************************************
52238  
52239 C...PYHEXT
52240 C...Calculates the non-standard decay modes of the Higgs boson.
52241 C...
52242 C...Author:  Stephen Mrenna
52243 C...Last Update:  April 2001
52244 C......Allow complex values for Z,U, and V
52245  
52246       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
52247  
52248 C...Double precision and integer declarations.
52249       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52250       IMPLICIT INTEGER(I-N)
52251       INTEGER PYK,PYCHGE,PYCOMP
52252 C...Parameter statement to help give large particle numbers.
52253       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52254      &KEXCIT=4000000,KDIMEN=5000000)
52255 C...Commonblocks.
52256       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52257       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52258       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
52259       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
52260       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52261      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52262       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
52263  
52264 C...Local variables.
52265       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
52266       COMPLEX*16 QIJ,RIJ,F21K,F12K
52267       INTEGER KFIN
52268       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
52269       DOUBLE PRECISION XMI2,XMI3,XMJ2
52270       DOUBLE PRECISION PYLAMF,XL,CF,EI
52271       INTEGER IDU,IFL
52272       DOUBLE PRECISION TANW,XW,AEM,C1,AS
52273       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
52274       DOUBLE PRECISION XLAM(0:400)
52275       INTEGER IDLAM(400,3)
52276       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
52277       INTEGER ITH(4)
52278       INTEGER KFNCHI(4),KFCCHI(2)
52279       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
52280       DOUBLE PRECISION SR2
52281       DOUBLE PRECISION BETA,ALFA
52282       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
52283       DOUBLE PRECISION PYALEM
52284       DOUBLE PRECISION AL,AR,ALR
52285       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
52286       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
52287       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
52288       DATA ITH/25,35,36,37/
52289       DATA ETAH/1D0,1D0,-1D0/
52290       DATA SR2/1.4142136D0/
52291       DATA KFNCHI/1000022,1000023,1000025,1000035/
52292       DATA KFCCHI/1000024,1000037/
52293  
52294 C...COUNT THE NUMBER OF DECAY MODES
52295       LKNT=IKNT
52296  
52297       XMW=PMAS(24,1)
52298       XMW2=XMW**2
52299       XMZ=PMAS(23,1)
52300       XW=PARU(102)
52301       TANW = SQRT(XW/(1D0-XW))
52302       CW=SQRT(1D0-XW)
52303  
52304 C...1 - 4 DEPENDING ON Higgs species.
52305       IH=1
52306       IF(KFIN.EQ.ITH(2)) IH=2
52307       IF(KFIN.EQ.ITH(3)) IH=3
52308       IF(KFIN.EQ.ITH(4)) IH=4
52309  
52310       XMI=PMAS(KFIN,1)
52311       XMI2=XMI**2
52312       AXMI=ABS(XMI)
52313       AEM=PYALEM(XMI2)
52314       C1=AEM/XW
52315       XMI3=ABS(XMI**3)
52316  
52317       TANB=RMSS(5)
52318       BETA=ATAN(TANB)
52319       CBETA=COS(BETA)
52320       SBETA=TANB*CBETA
52321       ALFA=RMSS(18)
52322       COSA=COS(ALFA)
52323       SINA=SIN(ALFA)
52324       ATRIT=RMSS(16)
52325       ATRIB=RMSS(15)
52326       ATRIL=RMSS(17)
52327       XMUZ=-RMSS(4)
52328  
52329       DO 110 I=1,4
52330         DO 100 J=1,4
52331           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
52332   100   CONTINUE
52333   110 CONTINUE
52334       DO 130 I=1,2
52335         DO 120 J=1,2
52336            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
52337            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
52338   120   CONTINUE
52339   130 CONTINUE
52340  
52341  
52342       IF(IH.EQ.4) GOTO 220
52343  
52344 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
52345 C...H0_K -> CHI0_I + CHI0_J
52346       EH(2)=SINA
52347       EH(1)=COSA
52348       EH(3)=CBETA
52349       DH(2)=COSA
52350       DH(1)=-SINA
52351       DH(3)=SBETA
52352       DO 150 IJ=1,4
52353         XMJ=SMZ(IJ)
52354         AXMJ=ABS(XMJ)
52355         DO 140 IK=1,IJ
52356           XMK=SMZ(IK)
52357           AXMK=ABS(XMK)
52358           IF(AXMI.GE.AXMJ+AXMK) THEN
52359             LKNT=LKNT+1
52360             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
52361      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
52362      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
52363      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
52364             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
52365      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
52366      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
52367      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
52368             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
52369             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
52370 C...SIGN OF MASSES I,J
52371             XML=XMK*ETAH(IH)
52372             GX2=ABS(F12K)**2+ABS(F21K)**2
52373             GLR=DBLE(F12K*DCONJG(F21K))
52374             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
52375             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
52376             IDLAM(LKNT,1)=KFNCHI(IJ)
52377             IDLAM(LKNT,2)=KFNCHI(IK)
52378             IDLAM(LKNT,3)=0
52379           ENDIF
52380   140   CONTINUE
52381   150 CONTINUE
52382  
52383 C...H0_K -> CHI+_I CHI-_J
52384       DO 170 IJ=1,2
52385         XMJ=SMW(IJ)
52386         AXMJ=ABS(XMJ)
52387         DO 160 IK=1,2
52388           XMK=SMW(IK)
52389           AXMK=ABS(XMK)
52390           IF(AXMI.GE.AXMJ+AXMK) THEN
52391             LKNT=LKNT+1
52392             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
52393      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
52394             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
52395      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
52396             GX2=ABS(OLPP)**2+ABS(ORPP)**2
52397             GLR=DBLE(OLPP*DCONJG(ORPP))
52398             XML=XMK*ETAH(IH)
52399             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
52400             IDLAM(LKNT,1)=KFCCHI(IJ)
52401             IDLAM(LKNT,2)=-KFCCHI(IK)
52402             IDLAM(LKNT,3)=0
52403           ENDIF
52404   160   CONTINUE
52405   170 CONTINUE
52406  
52407 C...HIGGS TO SFERMION SFERMION
52408       DO 200 IFL=1,16
52409         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
52410         IJ=KSUSY1+IFL
52411         XMJL=PMAS(PYCOMP(IJ),1)
52412         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
52413         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
52414           XMJ=XMJL
52415           XMJ2=XMJ**2
52416           XL=PYLAMF(XMI2,XMJ2,XMJ2)
52417           XMF=PMAS(IFL,1)
52418           EI=KCHG(IFL,1)/3D0
52419           IDU=2-MOD(IFL,2)
52420  
52421           IF(IH.EQ.1) THEN
52422             IF(IDU.EQ.1) THEN
52423               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
52424      &        XMF**2/XMW*SINA/CBETA
52425               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
52426      &        XMF**2/XMW*SINA/CBETA
52427               IF(IFL.EQ.5) THEN
52428                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
52429      &          ATRIB*SINA)
52430               ELSEIF(IFL.EQ.15) THEN
52431                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
52432      &          ATRIL*SINA)
52433               ELSE
52434                 GHLR=0D0
52435               ENDIF
52436             ELSE
52437               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
52438      &        XMF**2/XMW*COSA/SBETA
52439               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
52440      &        XMF**2/XMW*COSA/SBETA
52441               IF(IFL.EQ.6) THEN
52442                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
52443      &          ATRIT*COSA)
52444               ELSE
52445                 GHLR=0D0
52446               ENDIF
52447             ENDIF
52448  
52449           ELSEIF(IH.EQ.2) THEN
52450             IF(IDU.EQ.1) THEN
52451               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
52452      &        XMF**2/XMW*COSA/CBETA
52453               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
52454      &        XMF**2/XMW*COSA/CBETA
52455               IF(IFL.EQ.5) THEN
52456                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
52457      &          ATRIB*COSA)
52458               ELSEIF(IFL.EQ.15) THEN
52459                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
52460      &          ATRIL*COSA)
52461               ELSE
52462                 GHLR=0D0
52463               ENDIF
52464             ELSE
52465               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
52466      &        XMF**2/XMW*SINA/SBETA
52467               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
52468      &        XMF**2/XMW*SINA/SBETA
52469               IF(IFL.EQ.6) THEN
52470                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
52471      &          ATRIT*SINA)
52472               ELSE
52473                 GHLR=0D0
52474               ENDIF
52475             ENDIF
52476  
52477           ELSEIF(IH.EQ.3) THEN
52478             GHLL=0D0
52479             GHRR=0D0
52480             GHLR=0D0
52481             IF(IDU.EQ.1) THEN
52482               IF(IFL.EQ.5) THEN
52483                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
52484               ELSEIF(IFL.EQ.15) THEN
52485                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
52486               ENDIF
52487             ELSE
52488               IF(IFL.EQ.6) THEN
52489                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
52490               ENDIF
52491             ENDIF
52492           ENDIF
52493           IF(IH.EQ.3) GOTO 180
52494  
52495           AL=SFMIX(IFL,1)**2
52496           AR=SFMIX(IFL,2)**2
52497           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
52498           IF(IFL.LE.6) THEN
52499             CF=3D0
52500           ELSE
52501             CF=1D0
52502           ENDIF
52503  
52504           IF(AXMI.GE.2D0*XMJ) THEN
52505             LKNT=LKNT+1
52506             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52507      &      (GHLL*AL+GHRR*AR
52508      &      +2D0*GHLR*ALR)**2
52509             IDLAM(LKNT,1)=IJ
52510             IDLAM(LKNT,2)=-IJ
52511             IDLAM(LKNT,3)=0
52512           ENDIF
52513  
52514           IF(AXMI.GE.2D0*XMJR) THEN
52515             LKNT=LKNT+1
52516             AL=SFMIX(IFL,3)**2
52517             AR=SFMIX(IFL,4)**2
52518             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
52519             XMJ=XMJR
52520             XMJ2=XMJ**2
52521             XL=PYLAMF(XMI2,XMJ2,XMJ2)
52522             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52523      &      (GHLL*AL+GHRR*AR
52524      &      +2D0*GHLR*ALR)**2
52525             IDLAM(LKNT,1)=IJ+KSUSY1
52526             IDLAM(LKNT,2)=-(IJ+KSUSY1)
52527             IDLAM(LKNT,3)=0
52528           ENDIF
52529   180     CONTINUE
52530  
52531           IF(AXMI.GE.XMJL+XMJR) THEN
52532             LKNT=LKNT+1
52533             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
52534             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
52535             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
52536             XMJ=XMJR
52537             XMJ2=XMJ**2
52538             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
52539             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52540      &      (GHLL*AL+GHRR*AR)**2
52541             IDLAM(LKNT,1)=IJ
52542             IDLAM(LKNT,2)=-(IJ+KSUSY1)
52543             IDLAM(LKNT,3)=0
52544             LKNT=LKNT+1
52545             IDLAM(LKNT,1)=-IJ
52546             IDLAM(LKNT,2)=IJ+KSUSY1
52547             IDLAM(LKNT,3)=0
52548             XLAM(LKNT)=XLAM(LKNT-1)
52549           ENDIF
52550         ENDIF
52551   190   CONTINUE
52552   200 CONTINUE
52553   210 CONTINUE
52554  
52555       GOTO 270
52556   220 CONTINUE
52557  
52558 C...H+ -> CHI+_I + CHI0_J
52559       DO 240 IJ=1,4
52560         XMJ=SMZ(IJ)
52561         AXMJ=ABS(XMJ)
52562         XMJ2=XMJ**2
52563         DO 230 IK=1,2
52564           XMK=SMW(IK)
52565           AXMK=ABS(XMK)
52566           IF(AXMI.GE.AXMJ+AXMK) THEN
52567             LKNT=LKNT+1
52568             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
52569      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
52570             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
52571      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
52572             GX2=ABS(OLPP)**2+ABS(ORPP)**2
52573             GLR=DBLE(OLPP*DCONJG(ORPP))
52574             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
52575             IDLAM(LKNT,1)=KFNCHI(IJ)
52576             IDLAM(LKNT,2)=KFCCHI(IK)
52577             IDLAM(LKNT,3)=0
52578           ENDIF
52579   230   CONTINUE
52580   240 CONTINUE
52581  
52582       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
52583       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
52584       AL=0D0
52585       AR=0D0
52586       CF=3D0
52587  
52588 C...H+ -> T_1 B_1~
52589       XM1=PMAS(PYCOMP(KSUSY1+6),1)
52590       XM2=PMAS(PYCOMP(KSUSY1+5),1)
52591       IF(XMI.GE.XM1+XM2) THEN
52592         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52593         LKNT=LKNT+1
52594         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52595      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
52596         IDLAM(LKNT,1)=KSUSY1+6
52597         IDLAM(LKNT,2)=-(KSUSY1+5)
52598         IDLAM(LKNT,3)=0
52599       ENDIF
52600  
52601 C...H+ -> T_2 B_1~
52602       XM1=PMAS(PYCOMP(KSUSY2+6),1)
52603       XM2=PMAS(PYCOMP(KSUSY1+5),1)
52604       IF(XMI.GE.XM1+XM2) THEN
52605         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52606         LKNT=LKNT+1
52607         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52608      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
52609         IDLAM(LKNT,1)=KSUSY2+6
52610         IDLAM(LKNT,2)=-(KSUSY1+5)
52611         IDLAM(LKNT,3)=0
52612       ENDIF
52613  
52614 C...H+ -> T_1 B_2~
52615       XM1=PMAS(PYCOMP(KSUSY1+6),1)
52616       XM2=PMAS(PYCOMP(KSUSY2+5),1)
52617       IF(XMI.GE.XM1+XM2) THEN
52618         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52619         LKNT=LKNT+1
52620         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52621      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
52622         IDLAM(LKNT,1)=KSUSY1+6
52623         IDLAM(LKNT,2)=-(KSUSY2+5)
52624         IDLAM(LKNT,3)=0
52625       ENDIF
52626  
52627 C...H+ -> T_2 B_2~
52628       XM1=PMAS(PYCOMP(KSUSY2+6),1)
52629       XM2=PMAS(PYCOMP(KSUSY2+5),1)
52630       IF(XMI.GE.XM1+XM2) THEN
52631         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52632         LKNT=LKNT+1
52633         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
52634      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
52635         IDLAM(LKNT,1)=KSUSY2+6
52636         IDLAM(LKNT,2)=-(KSUSY2+5)
52637         IDLAM(LKNT,3)=0
52638       ENDIF
52639  
52640 C...H+ -> UL DL~
52641       GL=-XMW/SR2*SIN(2D0*BETA)
52642       DO 250 IJ=1,3,2
52643         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
52644         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
52645         IF(XMI.GE.XM1+XM2) THEN
52646           XL=PYLAMF(XMI2,XM1**2,XM2**2)
52647           LKNT=LKNT+1
52648           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
52649           IDLAM(LKNT,1)=-(KSUSY1+IJ)
52650           IDLAM(LKNT,2)=KSUSY1+IJ+1
52651           IDLAM(LKNT,3)=0
52652         ENDIF
52653   250 CONTINUE
52654  
52655 C...H+ -> EL~ NUL
52656       CF=1D0
52657       DO 260 IJ=11,13,2
52658         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
52659         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
52660         IF(XMI.GE.XM1+XM2) THEN
52661           XL=PYLAMF(XMI2,XM1**2,XM2**2)
52662           LKNT=LKNT+1
52663           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
52664           IDLAM(LKNT,1)=-(KSUSY1+IJ)
52665           IDLAM(LKNT,2)=KSUSY1+IJ+1
52666           IDLAM(LKNT,3)=0
52667         ENDIF
52668   260 CONTINUE
52669  
52670 C...H+ -> TAU1 NUTAUL
52671       XM1=PMAS(PYCOMP(KSUSY1+15),1)
52672       XM2=PMAS(PYCOMP(KSUSY1+16),1)
52673       IF(XMI.GE.XM1+XM2) THEN
52674         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52675         LKNT=LKNT+1
52676         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
52677         IDLAM(LKNT,1)=-(KSUSY1+15)
52678         IDLAM(LKNT,2)= KSUSY1+16
52679         IDLAM(LKNT,3)=0
52680       ENDIF
52681  
52682 C...H+ -> TAU2 NUTAUL
52683       XM1=PMAS(PYCOMP(KSUSY2+15),1)
52684       XM2=PMAS(PYCOMP(KSUSY1+16),1)
52685       IF(XMI.GE.XM1+XM2) THEN
52686         XL=PYLAMF(XMI2,XM1**2,XM2**2)
52687         LKNT=LKNT+1
52688         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
52689         IDLAM(LKNT,1)=-(KSUSY2+15)
52690         IDLAM(LKNT,2)= KSUSY1+16
52691         IDLAM(LKNT,3)=0
52692       ENDIF
52693  
52694   270 CONTINUE
52695       IKNT=LKNT
52696       XLAM(0)=0D0
52697       DO 280 I=1,IKNT
52698         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
52699         XLAM(0)=XLAM(0)+XLAM(I)
52700   280 CONTINUE
52701       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
52702  
52703       RETURN
52704       END
52705  
52706 C*********************************************************************
52707  
52708 C...PYH2XX
52709 C...Calculates the decay rate for a Higgs to an ino pair.
52710  
52711       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
52712  
52713 C...Double precision and integer declarations.
52714       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52715       IMPLICIT INTEGER(I-N)
52716       INTEGER PYK,PYCHGE,PYCOMP
52717 C...Commonblocks.
52718       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52719       SAVE /PYDAT1/
52720  
52721 C...Local variables.
52722       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
52723       DOUBLE PRECISION XL,PYLAMF,C1
52724       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
52725  
52726       XMI2=XM1**2
52727       XMI3=ABS(XM1**3)
52728       XMJ2=XM2**2
52729       XMK2=XM3**2
52730       XL=PYLAMF(XMI2,XMJ2,XMK2)
52731       PYH2XX=C1/4D0/XMI3*SQRT(XL)
52732      &*(GX2*(XMI2-XMJ2-XMK2)-
52733      &4D0*GLR*XM3*XM2)
52734       IF(PYH2XX.LT.0D0) PYH2XX=0D0
52735  
52736       RETURN
52737       END
52738  
52739 C*********************************************************************
52740  
52741 C...PYGAUS
52742 C...Integration by adaptive Gaussian quadrature.
52743 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
52744  
52745       FUNCTION PYGAUS(F, A, B, EPS)
52746  
52747 C...Double precision and integer declarations.
52748       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52749       IMPLICIT INTEGER(I-N)
52750       INTEGER PYK,PYCHGE,PYCOMP
52751  
52752 C...Local declarations.
52753       EXTERNAL F
52754       DOUBLE PRECISION F,W(12), X(12)
52755       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
52756       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
52757       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
52758       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
52759       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
52760       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
52761       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
52762       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
52763       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
52764       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
52765       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
52766       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
52767  
52768 C...The Gaussian quadrature algorithm.
52769       H = 0D0
52770       IF(B .EQ. A) GOTO 140
52771       CONST = 5D-3 / ABS(B-A)
52772       BB = A
52773   100 CONTINUE
52774       AA = BB
52775       BB = B
52776   110 CONTINUE
52777       C1 = 0.5D0*(BB+AA)
52778       C2 = 0.5D0*(BB-AA)
52779       S8 = 0D0
52780       DO 120 I = 1, 4
52781         U = C2*X(I)
52782         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
52783   120 CONTINUE
52784       S16 = 0D0
52785       DO 130 I = 5, 12
52786         U = C2*X(I)
52787         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
52788   130 CONTINUE
52789       S16 = C2*S16
52790       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
52791         H = H + S16
52792         IF(BB .NE. B) GOTO 100
52793       ELSE
52794         BB = C1
52795         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
52796         H = 0D0
52797         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
52798         GOTO 140
52799       ENDIF
52800   140 CONTINUE
52801       PYGAUS = H
52802  
52803       RETURN
52804       END
52805  
52806 C*********************************************************************
52807  
52808 C...PYGAU2
52809 C...Integration by adaptive Gaussian quadrature.
52810 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
52811 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
52812  
52813       FUNCTION PYGAU2(F, A, B, EPS)
52814  
52815 C...Double precision and integer declarations.
52816       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52817       IMPLICIT INTEGER(I-N)
52818       INTEGER PYK,PYCHGE,PYCOMP
52819  
52820 C...Local declarations.
52821       EXTERNAL F
52822       DOUBLE PRECISION F,W(12), X(12)
52823       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
52824       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
52825       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
52826       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
52827       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
52828       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
52829       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
52830       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
52831       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
52832       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
52833       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
52834       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
52835  
52836 C...The Gaussian quadrature algorithm.
52837       H = 0D0
52838       IF(B .EQ. A) GOTO 140
52839       CONST = 5D-3 / ABS(B-A)
52840       BB = A
52841   100 CONTINUE
52842       AA = BB
52843       BB = B
52844   110 CONTINUE
52845       C1 = 0.5D0*(BB+AA)
52846       C2 = 0.5D0*(BB-AA)
52847       S8 = 0D0
52848       DO 120 I = 1, 4
52849         U = C2*X(I)
52850         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
52851   120 CONTINUE
52852       S16 = 0D0
52853       DO 130 I = 5, 12
52854         U = C2*X(I)
52855         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
52856   130 CONTINUE
52857       S16 = C2*S16
52858       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
52859         H = H + S16
52860         IF(BB .NE. B) GOTO 100
52861       ELSE
52862         BB = C1
52863         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
52864         H = 0D0
52865         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
52866         GOTO 140
52867       ENDIF
52868   140 CONTINUE
52869       PYGAU2 = H
52870  
52871       RETURN
52872       END
52873  
52874 C*********************************************************************
52875  
52876 C...PYSIMP
52877 C...Simpson formula for an integral.
52878  
52879       FUNCTION PYSIMP(Y,X0,X1,N)
52880  
52881 C...Double precision and integer declarations.
52882       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52883       IMPLICIT INTEGER(I-N)
52884       INTEGER PYK,PYCHGE,PYCOMP
52885  
52886 C...Local variables.
52887       DOUBLE PRECISION Y,X0,X1,H,S
52888       DIMENSION Y(0:N)
52889  
52890       S=0D0
52891       H=(X1-X0)/N
52892       DO 100 I=0,N-2,2
52893         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
52894   100 CONTINUE
52895       PYSIMP=S*H/3D0
52896  
52897       RETURN
52898       END
52899  
52900 C*********************************************************************
52901  
52902 C...PYLAMF
52903 C...The standard lambda function.
52904  
52905       FUNCTION PYLAMF(X,Y,Z)
52906  
52907 C...Double precision and integer declarations.
52908       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52909       IMPLICIT INTEGER(I-N)
52910       INTEGER PYK,PYCHGE,PYCOMP
52911  
52912 C...Local variables.
52913       DOUBLE PRECISION PYLAMF,X,Y,Z
52914  
52915       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
52916       IF(PYLAMF.LT.0D0) PYLAMF=0D0
52917  
52918       RETURN
52919       END
52920  
52921 C*********************************************************************
52922  
52923 C...PYTBDY
52924 C...Generates 3-body decays of gauginos.
52925  
52926       SUBROUTINE PYTBDY(IDIN)
52927  
52928 C...Double precision and integer declarations.
52929       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52930       IMPLICIT INTEGER(I-N)
52931       INTEGER PYK,PYCHGE,PYCOMP
52932 C...Parameter statement to help give large particle numbers.
52933       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52934      &KEXCIT=4000000,KDIMEN=5000000)
52935 C...Commonblocks.
52936       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
52937       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52938       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52939 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
52940 C     COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
52941       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52942      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52943 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
52944       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSSMT/
52945  
52946 C...Local variables.
52947       DOUBLE PRECISION XM(5)
52948       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
52949       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
52950       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
52951       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
52952       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
52953       DOUBLE PRECISION CPHI1,SPHI1
52954       DOUBLE PRECISION S23DEL,EPS
52955       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
52956       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
52957       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
52958       INTEGER INOID(4)
52959       DATA INOID/22,23,25,35/
52960       DATA EPS/1D-6/
52961  
52962       ID=IDIN
52963       ISKIP=1
52964       XM(1)=P(N+1,5)
52965       XM(2)=P(N+2,5)
52966       XM(3)=P(N+3,5)
52967       XM(5)=P(ID,5)
52968  
52969 C...GENERATE S12
52970       S12MIN=(XM(1)+XM(2))**2
52971       S12MAX=(XM(5)-XM(3))**2
52972       YJACO1=S12MAX-S12MIN
52973  
52974 C...Initialize some parameters
52975       XW=PARU(102)
52976       XW1=1D0-XW
52977       TANW=SQRT(XW/XW1)
52978       IZID1=0
52979       IWID1=0
52980       IZID2=0
52981       IWID2=0
52982
52983       IA=K(N+2,2)
52984       JA=K(N+3,2)
52985
52986 C...Mrenna: check that we are indeed decaying a SUSY particle
52987       IF(IABS(K(ID,2)).LT.KSUSY1.OR.IABS(K(ID,2)).GE.3000000) THEN
52988       
52989       ELSE
52990         DO 100 I1=1,4
52991           IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
52992           IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
52993  100    CONTINUE
52994         IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
52995         IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
52996         IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
52997         IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
52998         ZM12=XM(5)**2
52999         ZM22=XM(1)**2
53000         EI=KCHG(PYCOMP(IABS(IA)),1)/3D0
53001         T3I=SIGN(1D0,EI+1D-6)/2D0
53002       ENDIF
53003
53004       IF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
53005         ISKIP=0
53006       ELSEIF(IZID1*IZID2.NE.0) THEN
53007         SQMZ=PMAS(23,1)**2
53008         GMMZ=PMAS(23,1)*PMAS(23,2)
53009         DO 110 I=1,4
53010           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
53011           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
53012   110   CONTINUE
53013         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
53014      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
53015         ORPP=DCONJG(OLPP)
53016         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
53017         XLR2=XLL2
53018         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
53019         XRL2=XRR2
53020         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
53021      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
53022         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
53023         XM1M2=SMZ(IZID1)*SMZ(IZID2)
53024         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
53025         QLLU=-GLIJ
53026         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
53027         QLRT=DCONJG(GLIJ)
53028         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
53029         QRLT=GRIJ
53030         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
53031         QRRU=-DCONJG(GRIJ)
53032       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
53033         IF(IZID1.NE.0) THEN
53034           XM1M2=SMZ(IZID1)*SMW(IWID2)
53035           IZID1=IWID2
53036           IZID2=IZID1
53037         ELSE
53038           XM1M2=SMZ(IZID2)*SMW(IWID1)
53039           IZID1=IWID1
53040         ENDIF
53041         RT2I = 1D0/SQRT(2D0)
53042         SQMZ=PMAS(24,1)**2
53043         GMMZ=PMAS(24,1)*PMAS(24,2)
53044         DO 120 I=1,2
53045           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53046           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53047   120   CONTINUE
53048         DO 130 I=1,4
53049           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
53050   130   CONTINUE
53051         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
53052      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
53053         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
53054      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
53055         EJ=KCHG(IABS(JA),1)/3D0
53056         T3J=SIGN(1D0,EJ+1D-6)/2D0
53057         QRLS=DCMPLX(0D0,0D0)
53058         QRLT=QRLS
53059         QRRS=QRLS
53060         QRRU=QRLS
53061         XRR2=1D6**2
53062         XRL2=XRR2
53063         XLR2  = PMAS(PYCOMP(KSUSY1+IABS(JA)),1)**2
53064         XLL2  = PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
53065         IF(MOD(IA,2).EQ.0) THEN
53066           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
53067      &    TANW+ZMIXC(IZID2,2)*T3I)
53068           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53069      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
53070         ELSE
53071           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
53072      &    TANW+ZMIXC(IZID2,2)*T3J)
53073           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53074      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
53075         ENDIF
53076       ELSEIF(IWID1*IWID2.NE.0) THEN
53077         IZID1=IWID1
53078         IZID2=IWID2
53079         XM1M2=SMW(IWID1)*SMW(IWID2)
53080         SQMZ=PMAS(23,1)**2
53081         GMMZ=PMAS(23,1)*PMAS(23,2)
53082         DO 140 I=1,2
53083           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53084           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53085           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
53086           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
53087   140   CONTINUE
53088         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
53089      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
53090         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
53091      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
53092         QRLS=-DCMPLX(EI/XW1)*ORPP
53093         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53094         QRRS=-DCMPLX(EI/XW1)*OLPP
53095         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53096         IF(MOD(IA,2).EQ.0) THEN
53097           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
53098           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
53099         ELSE
53100           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
53101           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
53102         ENDIF
53103       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
53104      &THEN
53105         ISKIP=0
53106       ELSE
53107         ISKIP=0
53108       ENDIF
53109  
53110       IF(ISKIP.NE.0) THEN
53111         WTMAX=0D0
53112         DO 160 KT=1,100
53113           S12=S12MIN+YJACO1*(KT-1)/99
53114           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
53115      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
53116           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
53117      &    -(2D0*XM(1)*XM(2))**2
53118           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
53119      &    -(2D0*XM(3)*XM(5))**2
53120           S23DF1=S23DF1*EPS
53121           S23DF2=S23DF2*EPS
53122           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
53123           S23DEL=S23DEL/EPS
53124           S23MIN=S23AVE-S23DEL
53125           S23MAX=S23AVE+S23DEL
53126           YJACO2=S23MAX-S23MIN
53127           TH=S12
53128           DO 150 KS=1,100
53129             S23=S23MIN+YJACO2*(KS-1)/99
53130             SH=S23
53131             UH=ZM12+ZM22-SH-TH
53132             WU2 = (UH-ZM12)*(UH-ZM22)
53133             WT2 = (TH-ZM12)*(TH-ZM22)
53134             WS2 = XM1M2*SH
53135             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
53136             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
53137             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
53138             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
53139             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
53140             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
53141             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
53142      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
53143      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
53144             IF(WT0.GT.WTMAX) WTMAX=WT0
53145   150     CONTINUE
53146   160   CONTINUE
53147  
53148         WTMAX=WTMAX*1.05D0
53149       ENDIF
53150  
53151 C...FIND S12*
53152       AX=S12MIN
53153       CX=S12MAX
53154       BX=S12MIN+0.5D0*YJACO1
53155       X0=AX
53156       X3=CX
53157       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
53158         X1=BX
53159         X2=BX+C*(CX-BX)
53160       ELSE
53161         X2=BX
53162         X1=BX-C*(BX-AX)
53163       ENDIF
53164  
53165 C...SOLVE FOR F1 AND F2
53166       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
53167      &-(2D0*XM(1)*XM(2))**2
53168       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
53169      &-(2D0*XM(3)*XM(5))**2
53170       S23DF1=S23DF1*EPS
53171       S23DF2=S23DF2*EPS
53172       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
53173       F1=-2D0*S23DEL/EPS
53174       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
53175      &-(2D0*XM(1)*XM(2))**2
53176       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
53177      &-(2D0*XM(3)*XM(5))**2
53178       S23DF1=S23DF1*EPS
53179       S23DF2=S23DF2*EPS
53180       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
53181       F2=-2D0*S23DEL/EPS
53182  
53183   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
53184 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
53185         IF(F2.LE.F1)THEN
53186           X0=X1
53187           X1=X2
53188           X2=R*X1+C*X3
53189           F1=F2
53190           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
53191      &    -(2D0*XM(1)*XM(2))**2
53192           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
53193      &    -(2D0*XM(3)*XM(5))**2
53194           S23DF1=S23DF1*EPS
53195           S23DF2=S23DF2*EPS
53196           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
53197           F2=-2D0*S23DEL/EPS
53198         ELSE
53199           X3=X2
53200           X2=X1
53201           X1=R*X2+C*X0
53202           F2=F1
53203           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
53204      &    -(2D0*XM(1)*XM(2))**2
53205           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
53206      &    -(2D0*XM(3)*XM(5))**2
53207           S23DF1=S23DF1*EPS
53208           S23DF2=S23DF2*EPS
53209           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
53210           F1=-2D0*S23DEL/EPS
53211         ENDIF
53212         GOTO 170
53213       ENDIF
53214 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
53215       IF(F1.LT.F2)THEN
53216         GOLDEN=-F1
53217         XMIN=X1
53218       ELSE
53219         GOLDEN=-F2
53220         XMIN=X2
53221       ENDIF
53222  
53223       IKNT=0
53224   180 S12=S12MIN+PYR(0)*YJACO1
53225       IKNT=IKNT+1
53226 C...GENERATE S23
53227       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
53228      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
53229       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
53230      &-(2D0*XM(1)*XM(2))**2
53231       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
53232      &-(2D0*XM(3)*XM(5))**2
53233       S23DF1=S23DF1*EPS
53234       S23DF2=S23DF2*EPS
53235       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
53236       S23DEL=S23DEL/EPS
53237       S23MIN=S23AVE-S23DEL
53238       S23MAX=S23AVE+S23DEL
53239       YJACO2=S23MAX-S23MIN
53240       S23=S23MIN+PYR(0)*YJACO2
53241  
53242 C...CHECK THE SAMPLING
53243       IF(IKNT.GT.100) THEN
53244         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
53245         GOTO 190
53246       ENDIF
53247       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
53248  
53249       IF(ISKIP.EQ.0) GOTO 190
53250  
53251       SH=S23
53252       TH=S12
53253       UH=ZM12+ZM22-SH-TH
53254  
53255       WU2 = (UH-ZM12)*(UH-ZM22)
53256       WT2 = (TH-ZM12)*(TH-ZM22)
53257       WS2 = XM1M2*SH
53258       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
53259       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
53260  
53261       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
53262       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
53263       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
53264       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
53265 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
53266 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
53267 c     &/DCMPLX(TH-XML2)
53268 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
53269 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
53270 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
53271       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
53272      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
53273      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
53274  
53275       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
53276       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
53277  
53278   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
53279       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
53280       D2=XM(5)-D1-D3
53281       P1=SQRT(D1*D1-XM(1)**2)
53282       P2=SQRT(D2*D2-XM(2)**2)
53283       P3=SQRT(D3*D3-XM(3)**2)
53284       CTHE1=2D0*PYR(0)-1D0
53285       ANG1=2D0*PYR(0)*PARU(1)
53286       CPHI1=COS(ANG1)
53287       SPHI1=SIN(ANG1)
53288       ARG=1D0-CTHE1**2
53289       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
53290       STHE1=SQRT(ARG)
53291       P(N+1,1)=P1*STHE1*CPHI1
53292       P(N+1,2)=P1*STHE1*SPHI1
53293       P(N+1,3)=P1*CTHE1
53294       P(N+1,4)=D1
53295  
53296 C...GET CPHI3
53297       ANG3=2D0*PYR(0)*PARU(1)
53298       CPHI3=COS(ANG3)
53299       SPHI3=SIN(ANG3)
53300       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
53301       ARG=1D0-CTHE3**2
53302       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
53303       STHE3=SQRT(ARG)
53304       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
53305      &+P3*STHE3*SPHI3*SPHI1
53306      &+P3*CTHE3*STHE1*CPHI1
53307       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
53308      &-P3*STHE3*SPHI3*CPHI1
53309      &+P3*CTHE3*STHE1*SPHI1
53310       P(N+3,3)=P3*STHE3*CPHI3*STHE1
53311      &+P3*CTHE3*CTHE1
53312       P(N+3,4)=D3
53313  
53314       DO 200 I=1,3
53315         P(N+2,I)=-P(N+1,I)-P(N+3,I)
53316   200 CONTINUE
53317       P(N+2,4)=D2
53318  
53319       RETURN
53320       END
53321  
53322  
53323 C*********************************************************************
53324  
53325 C...PYTECM
53326 C...Finds the s-hat dependent eigenvalues of the inverse propagator
53327 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
53328 C...phase space generation.  Extended to include techni-a meson, and
53329 C...to return the width.
53330  
53331       SUBROUTINE PYTECM(SMIN,SMOU,WIDO,IOPT)
53332  
53333 C...Double precision and integer declarations.
53334       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53335       IMPLICIT INTEGER(I-N)
53336       INTEGER PYK,PYCHGE,PYCOMP
53337 C...Parameter statement to help give large particle numbers.
53338       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53339      &KEXCIT=4000000,KDIMEN=5000000)
53340 C...Commonblocks.
53341       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53342       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53343       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53344       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
53345       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
53346  
53347 C...Local variables.
53348       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),WORK(12,12),
53349      &AT(5,5),WI(5),FV1(5),FV2(5),FV3(5),SH,AEM,TANW,CT2W,QUPD,ALPRHT,
53350      &FAR,FAO,FZR,FZO,SHR,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5),WX(5)
53351       INTEGER i,j,ierr
53352
53353       SH=SMIN
53354       SHR=SQRT(SH)
53355       AEM=PYALEM(SH)
53356  
53357       SINW=MIN(SQRT(PARU(102)),1D0)
53358       COSW=SQRT(1D0-SINW**2)
53359       TANW=SINW/COSW
53360       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
53361       QUPD=2D0*RTCM(2)-1D0
53362
53363       ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
53364       FAR=SQRT(AEM/ALPRHT)
53365       FAO=FAR*QUPD
53366       FZR=FAR*CT2W
53367       FZO=-FAO*TANW
53368       FZX=-FAR/RTCM(47)/(2D0*SINW*COSW)
53369       FWR=FAR/(2D0*SINW)
53370       FWX=-FWR/RTCM(47)
53371
53372       DO 110 I=1,5
53373         DO 100 J=1,5
53374           AT(I,J)=0D0
53375   100   CONTINUE
53376   110 CONTINUE
53377
53378 C...NC
53379       IF(IOPT.EQ.1) THEN
53380         AR(1,1) = SH
53381         AR(2,2) = SH-PMAS(23,1)**2
53382         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
53383         AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
53384         AR(5,5) = SH-PMAS(PYCOMP(KTECHN+115),1)**2
53385         AR(1,2) = 0D0
53386         AR(2,1) = 0D0
53387         AR(1,3) = SH*FAR
53388         AR(3,1) = AR(1,3)
53389         AR(1,4) = SH*FAO
53390         AR(4,1) = AR(1,4)
53391         AR(2,3) = SH*FZR
53392         AR(3,2) = AR(2,3)
53393         AR(2,4) = SH*FZO
53394         AR(4,2) = AR(2,4)
53395         AR(3,4) = 0D0
53396         AR(4,3) = 0D0
53397         AR(2,5) = SH*FZX
53398         AR(5,2) = AR(2,5)
53399         AR(1,5) = 0D0
53400         AR(5,1) = AR(1,5)
53401         AR(3,5) = 0D0
53402         AR(5,3) = AR(3,5)
53403         AR(4,5) = 0D0
53404         AR(5,4) = AR(4,5)
53405         CALL PYWIDT(23,SH,WDTP,WDTE)
53406         AT(2,2) = WDTP(0)*SHR
53407         CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
53408         AT(3,3) = WDTP(0)*SHR
53409         CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
53410         AT(4,4) = WDTP(0)*SHR
53411         CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
53412         AT(5,5) = WDTP(0)*SHR
53413         IDIM=5
53414 C...CC
53415       ELSE
53416         AR(1,1) = SH-PMAS(24,1)**2
53417         AR(2,2) = SH-PMAS(PYCOMP(KTECHN+213),1)**2
53418         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+215),1)**2
53419         AR(1,2) = SH*FWR
53420         AR(2,1) = AR(1,2)
53421         AR(1,3) = SH*FWX
53422         AR(3,1) = AR(1,3)
53423         AR(2,3) = 0D0
53424         AR(3,2) = 0D0
53425         CALL PYWIDT(24,SH,WDTP,WDTE)
53426         AT(1,1) = WDTP(0)*SHR
53427         CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
53428         AT(2,2) = WDTP(0)*SHR
53429         CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
53430         AT(3,3) = WDTP(0)*SHR
53431         IDIM=3
53432       ENDIF
53433       CALL PYEICG(IDIM,IDIM,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
53434
53435       IMIN=1
53436       SXMN=1D20
53437       DO 120 I=1,IDIM
53438         WX(I)=SQRT(ABS(SH-WR(I)))
53439         WR(I)=ABS(WR(I))
53440         IF(WR(I).LT.SXMN) THEN
53441           SXMN=WR(I)
53442           IMIN=I
53443         ENDIF
53444   120 CONTINUE
53445       SMOU=WX(IMIN)**2
53446       WIDO=WI(IMIN)/SHR
53447
53448       RETURN
53449       END
53450  
53451 C*********************************************************************
53452  
53453 C...PYEIGC
53454 C...Finds eigenvalues of a general complex matrix
53455 C
53456 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
53457 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
53458 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
53459 C     OF A COMPLEX GENERAL MATRIX.
53460 C
53461 C     ON INPUT
53462 C
53463 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
53464 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53465 C        DIMENSION STATEMENT.
53466 C
53467 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
53468 C
53469 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
53470 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
53471 C
53472 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
53473 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
53474 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
53475 C
53476 C     ON OUTPUT
53477 C
53478 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
53479 C        RESPECTIVELY, OF THE EIGENVALUES.
53480 C
53481 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
53482 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
53483 C
53484 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
53485 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
53486 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
53487 C
53488 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
53489 C
53490 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53491 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53492 C
53493 C     THIS VERSION DATED AUGUST 1983.
53494 C
53495  
53496       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
53497  
53498       INTEGER N,NM,IS1,IS2,IERR,MATZ
53499       DOUBLE PRECISION AR(5,5),AI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
53500      X       FV1(5),FV2(5),FV3(5)
53501       IF (N .LE. NM) GOTO 100
53502       IERR = 10 * N
53503       GOTO 120
53504 C
53505   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
53506       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
53507       IF (MATZ .NE. 0) GOTO 110
53508 C     .......... FIND EIGENVALUES ONLY ..........
53509       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
53510       GOTO 120
53511 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
53512   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
53513       IF (IERR .NE. 0) GOTO 120
53514       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
53515   120 RETURN
53516       END
53517  
53518 C*********************************************************************
53519  
53520 C...PYCMQR
53521 C...Auxiliary to PYEICG.
53522 C
53523 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
53524 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
53525 C     AND WILKINSON.
53526 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
53527 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
53528 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
53529 C
53530 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
53531 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
53532 C
53533 C     ON INPUT
53534 C
53535 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
53536 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53537 C          DIMENSION STATEMENT.
53538 C
53539 C        N IS THE ORDER OF THE MATRIX.
53540 C
53541 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
53542 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
53543 C          SET LOW=1, IGH=N.
53544 C
53545 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
53546 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
53547 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
53548 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
53549 C          THE REDUCTION BY  CORTH, IF PERFORMED.
53550 C
53551 C     ON OUTPUT
53552 C
53553 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
53554 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
53555 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
53556 C          EIGENVECTORS IS TO BE PERFORMED.
53557 C
53558 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
53559 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
53560 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
53561 C          FOR INDICES IERR+1,...,N.
53562 C
53563 C        IERR IS SET TO
53564 C          ZERO       FOR NORMAL RETURN,
53565 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
53566 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
53567 C
53568 C     CALLS PYCDIV FOR COMPLEX DIVISION.
53569 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
53570 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
53571 C
53572 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53573 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53574 C
53575 C     THIS VERSION DATED AUGUST 1983.
53576 C
53577  
53578       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
53579  
53580       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
53581       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5)
53582       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
53583      X       PYTHAG
53584  
53585       IERR = 0
53586       IF (LOW .EQ. IGH) GOTO 130
53587 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
53588       L = LOW + 1
53589 C
53590       DO 120 I = L, IGH
53591          LL = MIN0(I+1,IGH)
53592          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
53593          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
53594          YR = HR(I,I-1) / NORM
53595          YI = HI(I,I-1) / NORM
53596          HR(I,I-1) = NORM
53597          HI(I,I-1) = 0.0D0
53598 C
53599          DO 100 J = I, IGH
53600             SI = YR * HI(I,J) - YI * HR(I,J)
53601             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
53602             HI(I,J) = SI
53603   100    CONTINUE
53604 C
53605          DO 110 J = LOW, LL
53606             SI = YR * HI(J,I) + YI * HR(J,I)
53607             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
53608             HI(J,I) = SI
53609   110    CONTINUE
53610 C
53611   120 CONTINUE
53612 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
53613   130 DO 140 I = 1, N
53614          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
53615          WR(I) = HR(I,I)
53616          WI(I) = HI(I,I)
53617   140 CONTINUE
53618 C
53619       EN = IGH
53620       TR = 0.0D0
53621       TI = 0.0D0
53622       ITN = 30*N
53623 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
53624   150 IF (EN .LT. LOW) GOTO 320
53625       ITS = 0
53626       ENM1 = EN - 1
53627 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
53628 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
53629   160 DO 170 LL = LOW, EN
53630          L = EN + LOW - LL
53631          IF (L .EQ. LOW) GOTO 180
53632          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
53633      X            + DABS(HR(L,L)) + DABS(HI(L,L))
53634          TST2 = TST1 + DABS(HR(L,L-1))
53635          IF (TST2 .EQ. TST1) GOTO 180
53636   170 CONTINUE
53637 C     .......... FORM SHIFT ..........
53638   180 IF (L .EQ. EN) GOTO 300
53639       IF (ITN .EQ. 0) GOTO 310
53640       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
53641       SR = HR(EN,EN)
53642       SI = HI(EN,EN)
53643       XR = HR(ENM1,EN) * HR(EN,ENM1)
53644       XI = HI(ENM1,EN) * HR(EN,ENM1)
53645       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
53646       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
53647       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
53648       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
53649       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
53650       ZZR = -ZZR
53651       ZZI = -ZZI
53652   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
53653       SR = SR - XR
53654       SI = SI - XI
53655       GOTO 210
53656 C     .......... FORM EXCEPTIONAL SHIFT ..........
53657   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
53658       SI = 0.0D0
53659 C
53660   210 DO 220 I = LOW, EN
53661          HR(I,I) = HR(I,I) - SR
53662          HI(I,I) = HI(I,I) - SI
53663   220 CONTINUE
53664 C
53665       TR = TR + SR
53666       TI = TI + SI
53667       ITS = ITS + 1
53668       ITN = ITN - 1
53669 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
53670       LP1 = L + 1
53671 C
53672       DO 240 I = LP1, EN
53673          SR = HR(I,I-1)
53674          HR(I,I-1) = 0.0D0
53675          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
53676          XR = HR(I-1,I-1) / NORM
53677          WR(I-1) = XR
53678          XI = HI(I-1,I-1) / NORM
53679          WI(I-1) = XI
53680          HR(I-1,I-1) = NORM
53681          HI(I-1,I-1) = 0.0D0
53682          HI(I,I-1) = SR / NORM
53683 C
53684          DO 230 J = I, EN
53685             YR = HR(I-1,J)
53686             YI = HI(I-1,J)
53687             ZZR = HR(I,J)
53688             ZZI = HI(I,J)
53689             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
53690             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
53691             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
53692             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
53693   230    CONTINUE
53694 C
53695   240 CONTINUE
53696 C
53697       SI = HI(EN,EN)
53698       IF (SI .EQ. 0.0D0) GOTO 250
53699       NORM = PYTHAG(HR(EN,EN),SI)
53700       SR = HR(EN,EN) / NORM
53701       SI = SI / NORM
53702       HR(EN,EN) = NORM
53703       HI(EN,EN) = 0.0D0
53704 C     .......... INVERSE OPERATION (COLUMNS) ..........
53705   250 DO 280 J = LP1, EN
53706          XR = WR(J-1)
53707          XI = WI(J-1)
53708 C
53709          DO 270 I = L, J
53710             YR = HR(I,J-1)
53711             YI = 0.0D0
53712             ZZR = HR(I,J)
53713             ZZI = HI(I,J)
53714             IF (I .EQ. J) GOTO 260
53715             YI = HI(I,J-1)
53716             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
53717   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
53718             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
53719             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
53720   270    CONTINUE
53721 C
53722   280 CONTINUE
53723 C
53724       IF (SI .EQ. 0.0D0) GOTO 160
53725 C
53726       DO 290 I = L, EN
53727          YR = HR(I,EN)
53728          YI = HI(I,EN)
53729          HR(I,EN) = SR * YR - SI * YI
53730          HI(I,EN) = SR * YI + SI * YR
53731   290 CONTINUE
53732 C
53733       GOTO 160
53734 C     .......... A ROOT FOUND ..........
53735   300 WR(EN) = HR(EN,EN) + TR
53736       WI(EN) = HI(EN,EN) + TI
53737       EN = ENM1
53738       GOTO 150
53739 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
53740 C                CONVERGED AFTER 30*N ITERATIONS ..........
53741   310 IERR = EN
53742   320 RETURN
53743       END
53744  
53745 C*********************************************************************
53746  
53747 C...PYCMQ2
53748 C...Auxiliary to PYEICG.
53749 C
53750 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
53751 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
53752 C     AND WILKINSON.
53753 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
53754 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
53755 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
53756 C
53757 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
53758 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
53759 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
53760 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
53761 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
53762 C
53763 C     ON INPUT
53764 C
53765 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
53766 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
53767 C          DIMENSION STATEMENT.
53768 C
53769 C        N IS THE ORDER OF THE MATRIX.
53770 C
53771 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
53772 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
53773 C          SET LOW=1, IGH=N.
53774 C
53775 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
53776 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
53777 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
53778 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
53779 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
53780 C
53781 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
53782 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
53783 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
53784 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
53785 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
53786 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
53787 C          ARBITRARY.
53788 C
53789 C     ON OUTPUT
53790 C
53791 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
53792 C          HAVE BEEN DESTROYED.
53793 C
53794 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
53795 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
53796 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
53797 C          FOR INDICES IERR+1,...,N.
53798 C
53799 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
53800 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
53801 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
53802 C          THE EIGENVECTORS HAS BEEN FOUND.
53803 C
53804 C        IERR IS SET TO
53805 C          ZERO       FOR NORMAL RETURN,
53806 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
53807 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
53808 C
53809 C     CALLS PYCDIV FOR COMPLEX DIVISION.
53810 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
53811 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
53812 C
53813 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
53814 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
53815 C
53816 C     THIS VERSION DATED OCTOBER 1989.
53817 C
53818 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
53819 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
53820 C
53821  
53822       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
53823  
53824       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
53825      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
53826       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
53827      X       ORTR(5),ORTI(5)
53828       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
53829      X       PYTHAG
53830  
53831       IERR = 0
53832 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
53833       DO 110 J = 1, N
53834 C
53835          DO 100 I = 1, N
53836             ZR(I,J) = 0.0D0
53837             ZI(I,J) = 0.0D0
53838   100    CONTINUE
53839          ZR(J,J) = 1.0D0
53840   110 CONTINUE
53841 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
53842 C                FROM THE INFORMATION LEFT BY CORTH ..........
53843       IEND = IGH - LOW - 1
53844       IF (IEND.LT.0) GOTO 220
53845       IF (IEND.EQ.0) GOTO 170
53846 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
53847       DO 160 II = 1, IEND
53848          I = IGH - II
53849          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
53850          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
53851 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
53852          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
53853          IP1 = I + 1
53854 C
53855          DO 120 K = IP1, IGH
53856             ORTR(K) = HR(K,I-1)
53857             ORTI(K) = HI(K,I-1)
53858   120    CONTINUE
53859 C
53860          DO 150 J = I, IGH
53861             SR = 0.0D0
53862             SI = 0.0D0
53863 C
53864             DO 130 K = I, IGH
53865                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
53866                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
53867   130       CONTINUE
53868 C
53869             SR = SR / NORM
53870             SI = SI / NORM
53871 C
53872             DO 140 K = I, IGH
53873                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
53874                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
53875   140       CONTINUE
53876 C
53877   150    CONTINUE
53878 C
53879   160 CONTINUE
53880 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
53881   170 L = LOW + 1
53882 C
53883       DO 210 I = L, IGH
53884          LL = MIN0(I+1,IGH)
53885          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
53886          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
53887          YR = HR(I,I-1) / NORM
53888          YI = HI(I,I-1) / NORM
53889          HR(I,I-1) = NORM
53890          HI(I,I-1) = 0.0D0
53891 C
53892          DO 180 J = I, N
53893             SI = YR * HI(I,J) - YI * HR(I,J)
53894             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
53895             HI(I,J) = SI
53896   180    CONTINUE
53897 C
53898          DO 190 J = 1, LL
53899             SI = YR * HI(J,I) + YI * HR(J,I)
53900             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
53901             HI(J,I) = SI
53902   190    CONTINUE
53903 C
53904          DO 200 J = LOW, IGH
53905             SI = YR * ZI(J,I) + YI * ZR(J,I)
53906             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
53907             ZI(J,I) = SI
53908   200    CONTINUE
53909 C
53910   210 CONTINUE
53911 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
53912   220 DO 230 I = 1, N
53913          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
53914          WR(I) = HR(I,I)
53915          WI(I) = HI(I,I)
53916   230 CONTINUE
53917 C
53918       EN = IGH
53919       TR = 0.0D0
53920       TI = 0.0D0
53921       ITN = 30*N
53922 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
53923   240 IF (EN .LT. LOW) GOTO 430
53924       ITS = 0
53925       ENM1 = EN - 1
53926 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
53927 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
53928   250 DO 260 LL = LOW, EN
53929          L = EN + LOW - LL
53930          IF (L .EQ. LOW) GOTO 270
53931          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
53932      X            + DABS(HR(L,L)) + DABS(HI(L,L))
53933          TST2 = TST1 + DABS(HR(L,L-1))
53934          IF (TST2 .EQ. TST1) GOTO 270
53935   260 CONTINUE
53936 C     .......... FORM SHIFT ..........
53937   270 IF (L .EQ. EN) GOTO 420
53938       IF (ITN .EQ. 0) GOTO 550
53939       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
53940       SR = HR(EN,EN)
53941       SI = HI(EN,EN)
53942       XR = HR(ENM1,EN) * HR(EN,ENM1)
53943       XI = HI(ENM1,EN) * HR(EN,ENM1)
53944       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
53945       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
53946       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
53947       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
53948       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
53949       ZZR = -ZZR
53950       ZZI = -ZZI
53951   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
53952       SR = SR - XR
53953       SI = SI - XI
53954       GOTO 300
53955 C     .......... FORM EXCEPTIONAL SHIFT ..........
53956   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
53957       SI = 0.0D0
53958 C
53959   300 DO 310 I = LOW, EN
53960          HR(I,I) = HR(I,I) - SR
53961          HI(I,I) = HI(I,I) - SI
53962   310 CONTINUE
53963 C
53964       TR = TR + SR
53965       TI = TI + SI
53966       ITS = ITS + 1
53967       ITN = ITN - 1
53968 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
53969       LP1 = L + 1
53970 C
53971       DO 330 I = LP1, EN
53972          SR = HR(I,I-1)
53973          HR(I,I-1) = 0.0D0
53974          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
53975          XR = HR(I-1,I-1) / NORM
53976          WR(I-1) = XR
53977          XI = HI(I-1,I-1) / NORM
53978          WI(I-1) = XI
53979          HR(I-1,I-1) = NORM
53980          HI(I-1,I-1) = 0.0D0
53981          HI(I,I-1) = SR / NORM
53982 C
53983          DO 320 J = I, N
53984             YR = HR(I-1,J)
53985             YI = HI(I-1,J)
53986             ZZR = HR(I,J)
53987             ZZI = HI(I,J)
53988             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
53989             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
53990             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
53991             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
53992   320    CONTINUE
53993 C
53994   330 CONTINUE
53995 C
53996       SI = HI(EN,EN)
53997       IF (SI .EQ. 0.0D0) GOTO 350
53998       NORM = PYTHAG(HR(EN,EN),SI)
53999       SR = HR(EN,EN) / NORM
54000       SI = SI / NORM
54001       HR(EN,EN) = NORM
54002       HI(EN,EN) = 0.0D0
54003       IF (EN .EQ. N) GOTO 350
54004       IP1 = EN + 1
54005 C
54006       DO 340 J = IP1, N
54007          YR = HR(EN,J)
54008          YI = HI(EN,J)
54009          HR(EN,J) = SR * YR + SI * YI
54010          HI(EN,J) = SR * YI - SI * YR
54011   340 CONTINUE
54012 C     .......... INVERSE OPERATION (COLUMNS) ..........
54013   350 DO 390 J = LP1, EN
54014          XR = WR(J-1)
54015          XI = WI(J-1)
54016 C
54017          DO 370 I = 1, J
54018             YR = HR(I,J-1)
54019             YI = 0.0D0
54020             ZZR = HR(I,J)
54021             ZZI = HI(I,J)
54022             IF (I .EQ. J) GOTO 360
54023             YI = HI(I,J-1)
54024             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
54025   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
54026             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
54027             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
54028   370    CONTINUE
54029 C
54030          DO 380 I = LOW, IGH
54031             YR = ZR(I,J-1)
54032             YI = ZI(I,J-1)
54033             ZZR = ZR(I,J)
54034             ZZI = ZI(I,J)
54035             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
54036             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
54037             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
54038             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
54039   380    CONTINUE
54040 C
54041   390 CONTINUE
54042 C
54043       IF (SI .EQ. 0.0D0) GOTO 250
54044 C
54045       DO 400 I = 1, EN
54046          YR = HR(I,EN)
54047          YI = HI(I,EN)
54048          HR(I,EN) = SR * YR - SI * YI
54049          HI(I,EN) = SR * YI + SI * YR
54050   400 CONTINUE
54051 C
54052       DO 410 I = LOW, IGH
54053          YR = ZR(I,EN)
54054          YI = ZI(I,EN)
54055          ZR(I,EN) = SR * YR - SI * YI
54056          ZI(I,EN) = SR * YI + SI * YR
54057   410 CONTINUE
54058 C
54059       GOTO 250
54060 C     .......... A ROOT FOUND ..........
54061   420 HR(EN,EN) = HR(EN,EN) + TR
54062       WR(EN) = HR(EN,EN)
54063       HI(EN,EN) = HI(EN,EN) + TI
54064       WI(EN) = HI(EN,EN)
54065       EN = ENM1
54066       GOTO 240
54067 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
54068 C                VECTORS OF UPPER TRIANGULAR FORM ..........
54069   430 NORM = 0.0D0
54070 C
54071       DO 440 I = 1, N
54072 C
54073          DO 440 J = I, N
54074             TR = DABS(HR(I,J)) + DABS(HI(I,J))
54075             IF (TR .GT. NORM) NORM = TR
54076   440 CONTINUE
54077 C
54078       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
54079 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
54080       DO 500 NN = 2, N
54081          EN = N + 2 - NN
54082          XR = WR(EN)
54083          XI = WI(EN)
54084          HR(EN,EN) = 1.0D0
54085          HI(EN,EN) = 0.0D0
54086          ENM1 = EN - 1
54087 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
54088          DO 490 II = 1, ENM1
54089             I = EN - II
54090             ZZR = 0.0D0
54091             ZZI = 0.0D0
54092             IP1 = I + 1
54093 C
54094             DO 450 J = IP1, EN
54095                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
54096                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
54097   450       CONTINUE
54098 C
54099             YR = XR - WR(I)
54100             YI = XI - WI(I)
54101             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
54102                TST1 = NORM
54103                YR = TST1
54104   460          YR = 0.01D0 * YR
54105                TST2 = NORM + YR
54106                IF (TST2 .GT. TST1) GOTO 460
54107   470       CONTINUE
54108             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
54109 C     .......... OVERFLOW CONTROL ..........
54110             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
54111             IF (TR .EQ. 0.0D0) GOTO 490
54112             TST1 = TR
54113             TST2 = TST1 + 1.0D0/TST1
54114             IF (TST2 .GT. TST1) GOTO 490
54115             DO 480 J = I, EN
54116                HR(J,EN) = HR(J,EN)/TR
54117                HI(J,EN) = HI(J,EN)/TR
54118   480       CONTINUE
54119 C
54120   490    CONTINUE
54121 C
54122   500 CONTINUE
54123 C     .......... END BACKSUBSTITUTION ..........
54124 C     .......... VECTORS OF ISOLATED ROOTS ..........
54125       DO 520 I = 1, N
54126          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
54127 C
54128          DO 510 J = I, N
54129             ZR(I,J) = HR(I,J)
54130             ZI(I,J) = HI(I,J)
54131   510    CONTINUE
54132 C
54133   520 CONTINUE
54134 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
54135 C                VECTORS OF ORIGINAL FULL MATRIX.
54136 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
54137       DO 540 JJ = LOW, N
54138          J = N + LOW - JJ
54139          M = MIN0(J,IGH)
54140 C
54141          DO 540 I = LOW, IGH
54142             ZZR = 0.0D0
54143             ZZI = 0.0D0
54144 C
54145             DO 530 K = LOW, M
54146                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
54147                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
54148   530       CONTINUE
54149 C
54150             ZR(I,J) = ZZR
54151             ZI(I,J) = ZZI
54152   540 CONTINUE
54153 C
54154       GOTO 560
54155 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
54156 C                CONVERGED AFTER 30*N ITERATIONS ..........
54157   550 IERR = EN
54158   560 RETURN
54159       END
54160  
54161 C*********************************************************************
54162  
54163 C...PYCDIV
54164 C...Auxiliary to PYCMQR
54165 C
54166 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
54167 C
54168  
54169       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
54170  
54171       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
54172       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
54173  
54174       S = DABS(BR) + DABS(BI)
54175       ARS = AR/S
54176       AIS = AI/S
54177       BRS = BR/S
54178       BIS = BI/S
54179       S = BRS**2 + BIS**2
54180       CR = (ARS*BRS + AIS*BIS)/S
54181       CI = (AIS*BRS - ARS*BIS)/S
54182       RETURN
54183       END
54184  
54185 C*********************************************************************
54186  
54187 C...PYCSRT
54188 C...Auxiliary to PYCMQR
54189 C
54190 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
54191 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
54192 C
54193  
54194       SUBROUTINE PYCSRT(XR,XI,YR,YI)
54195  
54196       DOUBLE PRECISION XR,XI,YR,YI
54197       DOUBLE PRECISION S,TR,TI,PYTHAG
54198  
54199       TR = XR
54200       TI = XI
54201       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
54202       IF (TR .GE. 0.0D0) YR = S
54203       IF (TI .LT. 0.0D0) S = -S
54204       IF (TR .LE. 0.0D0) YI = S
54205       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
54206       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
54207       RETURN
54208       END
54209  
54210       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
54211       DOUBLE PRECISION A,B
54212 C
54213 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
54214 C
54215       DOUBLE PRECISION P,R,S,T,U
54216       P = DMAX1(DABS(A),DABS(B))
54217       IF (P .EQ. 0.0D0) GOTO 110
54218       R = (DMIN1(DABS(A),DABS(B))/P)**2
54219   100 CONTINUE
54220          T = 4.0D0 + R
54221          IF (T .EQ. 4.0D0) GOTO 110
54222          S = R/T
54223          U = 1.0D0 + 2.0D0*S
54224          P = U*P
54225          R = (S/U)**2 * R
54226       GOTO 100
54227   110 PYTHAG = P
54228       RETURN
54229       END
54230  
54231 C*********************************************************************
54232  
54233 C...PYCBAL
54234 C...Auxiliary to PYEICG
54235 C
54236 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
54237 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
54238 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
54239 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
54240 C
54241 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
54242 C     EIGENVALUES WHENEVER POSSIBLE.
54243 C
54244 C     ON INPUT
54245 C
54246 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54247 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54248 C          DIMENSION STATEMENT.
54249 C
54250 C        N IS THE ORDER OF THE MATRIX.
54251 C
54252 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54253 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
54254 C
54255 C     ON OUTPUT
54256 C
54257 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54258 C          RESPECTIVELY, OF THE BALANCED MATRIX.
54259 C
54260 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
54261 C          ARE EQUAL TO ZERO IF
54262 C           (1) I IS GREATER THAN J AND
54263 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
54264 C
54265 C        SCALE CONTAINS INFORMATION DETERMINING THE
54266 C           PERMUTATIONS AND SCALING FACTORS USED.
54267 C
54268 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
54269 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
54270 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
54271 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
54272 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
54273 C                 = D(J,J)       J = LOW,...,IGH
54274 C                 = P(J)         J = IGH+1,...,N.
54275 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
54276 C     THEN 1 TO LOW-1.
54277 C
54278 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
54279 C
54280 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
54281 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
54282 C     K,L HAVE BEEN REVERSED.)
54283 C
54284 C     ARITHMETIC IS REAL THROUGHOUT.
54285 C
54286 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54287 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54288 C
54289 C     THIS VERSION DATED AUGUST 1983.
54290 C
54291  
54292       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
54293  
54294       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
54295       DOUBLE PRECISION AR(5,5),AI(5,5),SCALE(5)
54296       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
54297       LOGICAL NOCONV
54298  
54299       RADIX = 16.0D0
54300 C
54301       B2 = RADIX * RADIX
54302       K = 1
54303       L = N
54304       GOTO 150
54305 C     .......... IN-LINE PROCEDURE FOR ROW AND
54306 C                COLUMN EXCHANGE ..........
54307   100 SCALE(M) = J
54308       IF (J .EQ. M) GOTO 130
54309 C
54310       DO 110 I = 1, L
54311          F = AR(I,J)
54312          AR(I,J) = AR(I,M)
54313          AR(I,M) = F
54314          F = AI(I,J)
54315          AI(I,J) = AI(I,M)
54316          AI(I,M) = F
54317   110 CONTINUE
54318 C
54319       DO 120 I = K, N
54320          F = AR(J,I)
54321          AR(J,I) = AR(M,I)
54322          AR(M,I) = F
54323          F = AI(J,I)
54324          AI(J,I) = AI(M,I)
54325          AI(M,I) = F
54326   120 CONTINUE
54327 C
54328   130 IF(IEXC.EQ.1) GOTO 140
54329       IF(IEXC.EQ.2) GOTO 180
54330 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
54331 C                AND PUSH THEM DOWN ..........
54332   140 IF (L .EQ. 1) GOTO 320
54333       L = L - 1
54334 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
54335   150 DO 170 JJ = 1, L
54336          J = L + 1 - JJ
54337 C
54338          DO 160 I = 1, L
54339             IF (I .EQ. J) GOTO 160
54340             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
54341   160    CONTINUE
54342 C
54343          M = L
54344          IEXC = 1
54345          GOTO 100
54346   170 CONTINUE
54347 C
54348       GOTO 190
54349 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
54350 C                AND PUSH THEM LEFT ..........
54351   180 K = K + 1
54352 C
54353   190 DO 210 J = K, L
54354 C
54355          DO 200 I = K, L
54356             IF (I .EQ. J) GOTO 200
54357             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
54358   200    CONTINUE
54359 C
54360          M = K
54361          IEXC = 2
54362          GOTO 100
54363   210 CONTINUE
54364 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
54365       DO 220 I = K, L
54366   220 SCALE(I) = 1.0D0
54367 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
54368   230 NOCONV = .FALSE.
54369 C
54370       DO 310 I = K, L
54371          C = 0.0D0
54372          R = 0.0D0
54373 C
54374          DO 240 J = K, L
54375             IF (J .EQ. I) GOTO 240
54376             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
54377             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
54378   240    CONTINUE
54379 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
54380          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
54381          G = R / RADIX
54382          F = 1.0D0
54383          S = C + R
54384   250    IF (C .GE. G) GOTO 260
54385          F = F * RADIX
54386          C = C * B2
54387          GOTO 250
54388   260    G = R * RADIX
54389   270    IF (C .LT. G) GOTO 280
54390          F = F / RADIX
54391          C = C / B2
54392          GOTO 270
54393 C     .......... NOW BALANCE ..........
54394   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
54395          G = 1.0D0 / F
54396          SCALE(I) = SCALE(I) * F
54397          NOCONV = .TRUE.
54398 C
54399          DO 290 J = K, N
54400             AR(I,J) = AR(I,J) * G
54401             AI(I,J) = AI(I,J) * G
54402   290    CONTINUE
54403 C
54404          DO 300 J = 1, L
54405             AR(J,I) = AR(J,I) * F
54406             AI(J,I) = AI(J,I) * F
54407   300    CONTINUE
54408 C
54409   310 CONTINUE
54410 C
54411       IF (NOCONV) GOTO 230
54412 C
54413   320 LOW = K
54414       IGH = L
54415       RETURN
54416       END
54417  
54418 C*********************************************************************
54419  
54420 C...PYCBA2
54421 C...Auxiliary to PYEICG.
54422 C
54423 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
54424 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
54425 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
54426 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
54427 C
54428 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
54429 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
54430 C     BALANCED MATRIX DETERMINED BY  CBAL.
54431 C
54432 C     ON INPUT
54433 C
54434 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54435 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54436 C          DIMENSION STATEMENT.
54437 C
54438 C        N IS THE ORDER OF THE MATRIX.
54439 C
54440 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
54441 C
54442 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
54443 C          AND SCALING FACTORS USED BY  CBAL.
54444 C
54445 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
54446 C
54447 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
54448 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
54449 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
54450 C
54451 C     ON OUTPUT
54452 C
54453 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
54454 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
54455 C          IN THEIR FIRST M COLUMNS.
54456 C
54457 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54458 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54459 C
54460 C     THIS VERSION DATED AUGUST 1983.
54461 C
54462  
54463       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
54464  
54465       INTEGER I,J,K,M,N,II,NM,IGH,LOW
54466       DOUBLE PRECISION SCALE(5),ZR(5,5),ZI(5,5)
54467       DOUBLE PRECISION S
54468  
54469       IF (M .EQ. 0) GOTO 150
54470       IF (IGH .EQ. LOW) GOTO 120
54471 C
54472       DO 110 I = LOW, IGH
54473          S = SCALE(I)
54474 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
54475 C                IF THE FOREGOING STATEMENT IS REPLACED BY
54476 C                S=1.0D0/SCALE(I). ..........
54477          DO 100 J = 1, M
54478             ZR(I,J) = ZR(I,J) * S
54479             ZI(I,J) = ZI(I,J) * S
54480   100    CONTINUE
54481 C
54482   110 CONTINUE
54483 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
54484 C                IGH+1 STEP 1 UNTIL N DO -- ..........
54485   120 DO 140 II = 1, N
54486          I = II
54487          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
54488          IF (I .LT. LOW) I = LOW - II
54489          K = SCALE(I)
54490          IF (K .EQ. I) GOTO 140
54491 C
54492          DO 130 J = 1, M
54493             S = ZR(I,J)
54494             ZR(I,J) = ZR(K,J)
54495             ZR(K,J) = S
54496             S = ZI(I,J)
54497             ZI(I,J) = ZI(K,J)
54498             ZI(K,J) = S
54499   130    CONTINUE
54500 C
54501   140 CONTINUE
54502 C
54503   150 RETURN
54504       END
54505  
54506 C*********************************************************************
54507  
54508 C...PYCRTH
54509 C...Auxiliary to PYEICG.
54510 C
54511 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
54512 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
54513 C     BY MARTIN AND WILKINSON.
54514 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
54515 C
54516 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
54517 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
54518 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
54519 C     UNITARY SIMILARITY TRANSFORMATIONS.
54520 C
54521 C     ON INPUT
54522 C
54523 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
54524 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
54525 C          DIMENSION STATEMENT.
54526 C
54527 C        N IS THE ORDER OF THE MATRIX.
54528 C
54529 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
54530 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
54531 C          SET LOW=1, IGH=N.
54532 C
54533 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54534 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
54535 C
54536 C     ON OUTPUT
54537 C
54538 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
54539 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
54540 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
54541 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
54542 C          HESSENBERG MATRIX.
54543 C
54544 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
54545 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
54546 C
54547 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
54548 C
54549 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
54550 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
54551 C
54552 C     THIS VERSION DATED AUGUST 1983.
54553 C
54554  
54555       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
54556  
54557       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
54558       DOUBLE PRECISION AR(5,5),AI(5,5),ORTR(5),ORTI(5)
54559       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
54560  
54561       LA = IGH - 1
54562       KP1 = LOW + 1
54563       IF (LA .LT. KP1) GOTO 210
54564 C
54565       DO 200 M = KP1, LA
54566          H = 0.0D0
54567          ORTR(M) = 0.0D0
54568          ORTI(M) = 0.0D0
54569          SCALE = 0.0D0
54570 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
54571          DO 100 I = M, IGH
54572   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
54573 C
54574          IF (SCALE .EQ. 0.0D0) GOTO 200
54575          MP = M + IGH
54576 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
54577          DO 110 II = M, IGH
54578             I = MP - II
54579             ORTR(I) = AR(I,M-1) / SCALE
54580             ORTI(I) = AI(I,M-1) / SCALE
54581             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
54582   110    CONTINUE
54583 C
54584          G = DSQRT(H)
54585          F = PYTHAG(ORTR(M),ORTI(M))
54586          IF (F .EQ. 0.0D0) GOTO 120
54587          H = H + F * G
54588          G = G / F
54589          ORTR(M) = (1.0D0 + G) * ORTR(M)
54590          ORTI(M) = (1.0D0 + G) * ORTI(M)
54591          GOTO 130
54592 C
54593   120    ORTR(M) = G
54594          AR(M,M-1) = SCALE
54595 C     .......... FORM (I-(U*UT)/H) * A ..........
54596   130    DO 160 J = M, N
54597             FR = 0.0D0
54598             FI = 0.0D0
54599 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
54600             DO 140 II = M, IGH
54601                I = MP - II
54602                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
54603                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
54604   140       CONTINUE
54605 C
54606             FR = FR / H
54607             FI = FI / H
54608 C
54609             DO 150 I = M, IGH
54610                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
54611                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
54612   150       CONTINUE
54613 C
54614   160    CONTINUE
54615 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
54616          DO 190 I = 1, IGH
54617             FR = 0.0D0
54618             FI = 0.0D0
54619 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
54620             DO 170 JJ = M, IGH
54621                J = MP - JJ
54622                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
54623                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
54624   170       CONTINUE
54625 C
54626             FR = FR / H
54627             FI = FI / H
54628 C
54629             DO 180 J = M, IGH
54630                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
54631                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
54632   180       CONTINUE
54633 C
54634   190    CONTINUE
54635 C
54636          ORTR(M) = SCALE * ORTR(M)
54637          ORTI(M) = SCALE * ORTI(M)
54638          AR(M,M-1) = -G * AR(M,M-1)
54639          AI(M,M-1) = -G * AI(M,M-1)
54640   200 CONTINUE
54641 C
54642   210 RETURN
54643       END
54644  
54645 C*********************************************************************
54646  
54647 C...PYLDCM
54648 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
54649 C...processes.
54650  
54651       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
54652       IMPLICIT NONE
54653       INTEGER N,NP,INDX(N)
54654       REAL*8 D,TINY
54655       COMPLEX*16 A(NP,NP)
54656       PARAMETER (TINY=1.0D-20)
54657       INTEGER I,IMAX,J,K
54658       REAL*8 AAMAX,VV(6),DUM
54659       COMPLEX*16 SUM,DUMC
54660  
54661       D=1D0
54662       DO 110 I=1,N
54663         AAMAX=0D0
54664         DO 100 J=1,N
54665           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
54666   100   CONTINUE
54667         IF (AAMAX.EQ.0D0) CALL PYERRM(28,'(PYLDCM:) singular matrix')
54668         VV(I)=1D0/AAMAX
54669   110 CONTINUE
54670       DO 180 J=1,N
54671         DO 130 I=1,J-1
54672           SUM=A(I,J)
54673           DO 120 K=1,I-1
54674             SUM=SUM-A(I,K)*A(K,J)
54675   120     CONTINUE
54676           A(I,J)=SUM
54677   130   CONTINUE
54678         AAMAX=0D0
54679         DO 150 I=J,N
54680           SUM=A(I,J)
54681           DO 140 K=1,J-1
54682             SUM=SUM-A(I,K)*A(K,J)
54683   140     CONTINUE
54684           A(I,J)=SUM
54685           DUM=VV(I)*ABS(SUM)
54686           IF (DUM.GE.AAMAX) THEN
54687             IMAX=I
54688             AAMAX=DUM
54689           ENDIF
54690   150   CONTINUE
54691         IF (J.NE.IMAX)THEN
54692           DO 160 K=1,N
54693             DUMC=A(IMAX,K)
54694             A(IMAX,K)=A(J,K)
54695             A(J,K)=DUMC
54696   160     CONTINUE
54697           D=-D
54698           VV(IMAX)=VV(J)
54699         ENDIF
54700         INDX(J)=IMAX
54701         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
54702         IF(J.NE.N)THEN
54703           DO 170 I=J+1,N
54704             A(I,J)=A(I,J)/A(J,J)
54705   170     CONTINUE
54706         ENDIF
54707   180 CONTINUE
54708  
54709       RETURN
54710       END
54711  
54712 C*********************************************************************
54713  
54714 C...PYBKSB
54715 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
54716 C...processes.
54717  
54718       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
54719       IMPLICIT NONE
54720       INTEGER N,NP,INDX(N)
54721       COMPLEX*16 A(NP,NP),B(N)
54722       INTEGER I,II,J,LL
54723       COMPLEX*16 SUM
54724  
54725       II=0
54726       DO 110 I=1,N
54727         LL=INDX(I)
54728         SUM=B(LL)
54729         B(LL)=B(I)
54730         IF (II.NE.0)THEN
54731           DO 100 J=II,I-1
54732             SUM=SUM-A(I,J)*B(J)
54733   100     CONTINUE
54734         ELSE IF (ABS(SUM).NE.0D0) THEN
54735           II=I
54736         ENDIF
54737         B(I)=SUM
54738   110 CONTINUE
54739       DO 130 I=N,1,-1
54740         SUM=B(I)
54741         DO 120 J=I+1,N
54742           SUM=SUM-A(I,J)*B(J)
54743   120   CONTINUE
54744         B(I)=SUM/A(I,I)
54745   130 CONTINUE
54746       RETURN
54747       END
54748  
54749 C***********************************************************************
54750  
54751 C...PYWIDX
54752 C...Calculates full and partial widths of resonances.
54753 C....copy of PYWIDT, used for techniparticle widths
54754  
54755       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
54756  
54757 C...Double precision and integer declarations.
54758       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54759       IMPLICIT INTEGER(I-N)
54760       INTEGER PYK,PYCHGE,PYCOMP
54761 C...Parameter statement to help give large particle numbers.
54762       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54763      &KEXCIT=4000000,KDIMEN=5000000)
54764 C...Commonblocks.
54765       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54766       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54767       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54768       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
54769       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54770       COMMON/PYINT1/MINT(400),VINT(400)
54771       COMMON/PYINT4/MWID(500),WIDS(500,5)
54772       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
54773       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
54774       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
54775      &/PYINT4/,/PYMSSM/,/PYTCSM/
54776 C...Local arrays and saved variables.
54777       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
54778      &WID2SV(3,2)
54779       SAVE MOFSV,WIDWSV,WID2SV
54780       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
54781  
54782 C...Compressed code and sign; mass.
54783       KFLA=IABS(KFLR)
54784       KFLS=ISIGN(1,KFLR)
54785       KC=PYCOMP(KFLA)
54786       SHR=SQRT(SH)
54787       PMR=PMAS(KC,1)
54788  
54789 C...Reset width information.
54790       DO I=0,400
54791         WDTP(I)=0D0
54792       ENDDO
54793  
54794 C...Common electroweak and strong constants.
54795       XW=PARU(102)
54796       XWV=XW
54797       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
54798       XW1=1D0-XW
54799       AEM=PYALEM(SH)
54800       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
54801       AS=PYALPS(SH)
54802       RADC=1D0+AS/PARU(1)
54803  
54804       IF(KFLA.EQ.23) THEN
54805 C...Z0:
54806         XWC=1D0/(16D0*XW*XW1)
54807         FAC=(AEM*XWC/3D0)*SHR
54808   120   CONTINUE
54809         DO 130 I=1,MDCY(KC,3)
54810           IDC=I+MDCY(KC,2)-1
54811           IF(MDME(IDC,1).LT.0) GOTO 130
54812           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
54813           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
54814           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
54815           IF(I.LE.8) THEN
54816 C...Z0 -> q + qbar
54817             EF=KCHG(I,1)/3D0
54818             AF=SIGN(1D0,EF+0.1D0)
54819             VF=AF-4D0*EF*XWV
54820             FCOF=3D0*RADC
54821             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
54822           ELSEIF(I.LE.16) THEN
54823 C...Z0 -> l+ + l-, nu + nubar
54824             EF=KCHG(I+2,1)/3D0
54825             AF=SIGN(1D0,EF+0.1D0)
54826             VF=AF-4D0*EF*XWV
54827             FCOF=1D0
54828           ENDIF
54829           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
54830           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
54831      &    BE34
54832           WDTP(0)=WDTP(0)+WDTP(I)
54833   130   CONTINUE
54834  
54835  
54836       ELSEIF(KFLA.EQ.24) THEN
54837 C...W+/-:
54838         FAC=(AEM/(24D0*XW))*SHR
54839         DO 140 I=1,MDCY(KC,3)
54840           IDC=I+MDCY(KC,2)-1
54841           IF(MDME(IDC,1).LT.0) GOTO 140
54842           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
54843           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
54844           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
54845           WID2=1D0
54846           IF(I.LE.16) THEN
54847 C...W+/- -> q + qbar'
54848             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
54849           ELSEIF(I.LE.20) THEN
54850 C...W+/- -> l+/- + nu
54851             FCOF=1D0
54852           ENDIF
54853           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
54854      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
54855           WDTP(0)=WDTP(0)+WDTP(I)
54856   140   CONTINUE
54857  
54858 C.....V8 -> quark anti-quark
54859       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
54860         FAC=AS/6D0*SHR
54861         TANT3=RTCM(21)
54862         IF(ITCM(2).EQ.0) THEN
54863           IMDL=1
54864         ELSEIF(ITCM(2).EQ.1) THEN
54865           IMDL=2
54866         ENDIF
54867         DO 150 I=1,MDCY(KC,3)
54868           IDC=I+MDCY(KC,2)-1
54869           IF(MDME(IDC,1).LT.0) GOTO 150
54870           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
54871           RM1=PM1**2/SH
54872           IF(RM1.GT.0.25D0) GOTO 150
54873           WID2=1D0
54874           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
54875             FMIX=1D0/TANT3**2
54876           ELSE
54877             FMIX=TANT3**2
54878           ENDIF
54879           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
54880           IF(I.EQ.6) WID2=WIDS(6,1)
54881           WDTP(0)=WDTP(0)+WDTP(I)
54882   150   CONTINUE
54883       ENDIF
54884  
54885       RETURN
54886       END
54887  
54888 C*********************************************************************
54889  
54890 C...PYRVSF
54891 C...Calculates R-violating decays of sfermions.
54892 C...P. Z. Skands
54893  
54894       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
54895  
54896 C...Double precision and integer declarations.
54897       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54898       IMPLICIT INTEGER(I-N)
54899 C...Parameter statement to help give large particle numbers.
54900       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54901      &KEXCIT=4000000,KDIMEN=5000000)
54902 C...Commonblocks.
54903       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54904       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
54905       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
54906      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
54907       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
54908 C...Local variables.
54909       DOUBLE PRECISION XLAM(0:400)
54910       INTEGER IDLAM(400,3), PYCOMP
54911       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
54912  
54913 C...IS R-VIOLATION ON ?
54914       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
54915 C...Mass eigenstate counter
54916         ICNT=INT(KFIN/KSUSY1)
54917 C...SM KF code of SUSY particle
54918         KFSM=KFIN-ICNT*KSUSY1
54919 C...Squared Sparticle Mass
54920         SM=PMAS(PYCOMP(KFIN),1)**2
54921 C... Squared mass of top quark
54922         SMT=PMAS(PYCOMP(6),1)**2
54923 C...IS L-VIOLATION ON ?
54924         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
54925 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
54926           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
54927      &         THEN
54928             K=INT((KFSM-9)/2)
54929             DO 110 I=1,3
54930               DO 100 J=1,3
54931                 IF(I.NE.J) THEN
54932 C...~e,~mu,~tau -> nu_I + lepton-_J
54933                   LKNT = LKNT+1
54934                   IDLAM(LKNT,1)= 12 +2*(I-1)
54935                   IDLAM(LKNT,2)= 11 +2*(J-1)
54936                   IDLAM(LKNT,3)= 0
54937                   XLAM(LKNT)=0D0
54938                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
54939                   IF (IMSS(51).NE.0) XLAM(LKNT) =
54940      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54941 C...KINEMATICS CHECK
54942                   IF (XLAM(LKNT).EQ.0D0) THEN
54943                     LKNT=LKNT-1
54944                   ENDIF
54945                 ENDIF
54946   100         CONTINUE
54947   110       CONTINUE
54948 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
54949             J=INT((KFSM-9)/2)
54950             DO 130 I=1,3
54951               IF(I.NE.J) THEN
54952                 DO 120 K=1,3
54953                   LKNT = LKNT+1
54954                   IDLAM(LKNT,1)=-12 -2*(I-1)
54955                   IDLAM(LKNT,2)= 11 +2*(K-1)
54956                   IDLAM(LKNT,3)= 0
54957                   XLAM(LKNT)=0D0
54958                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
54959                   IF (IMSS(51).NE.0) XLAM(LKNT) =
54960      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54961 C...KINEMATICS CHECK
54962                   IF (XLAM(LKNT).EQ.0D0) THEN
54963                     LKNT=LKNT-1
54964                   ENDIF
54965   120           CONTINUE
54966               ENDIF
54967   130       CONTINUE
54968 C...~e,~mu,~tau -> u_Jbar + d_K
54969             I=INT((KFSM-9)/2)
54970             DO 150 J=1,3
54971               DO 140 K=1,3
54972                 LKNT = LKNT+1
54973                 IDLAM(LKNT,1)=-2 -2*(J-1)
54974                 IDLAM(LKNT,2)= 1 +2*(K-1)
54975                 IDLAM(LKNT,3)= 0
54976                 XLAM(LKNT)=0
54977                 IF (IMSS(52).NE.0) THEN
54978 C...Use massive top quark
54979                   IF (IDLAM(LKNT,1).EQ.-6) THEN
54980                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
54981      &                   * (SM-SMT)
54982                     XLAM(LKNT) =
54983      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
54984 C...If no top quark, all decay products massless
54985                   ELSE
54986                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
54987                     XLAM(LKNT) =
54988      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
54989                   ENDIF
54990 C...KINEMATICS CHECK
54991                   IF (XLAM(LKNT).EQ.0D0) THEN
54992                     LKNT=LKNT-1
54993                   ENDIF
54994                 ENDIF
54995   140         CONTINUE
54996   150       CONTINUE
54997           ENDIF
54998 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
54999 C...No right-handed neutrinos
55000           IF(ICNT.EQ.1) THEN
55001             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
55002               J=INT((KFSM-10)/2)
55003               DO 170 I=1,3
55004                 DO 160 K=1,3
55005                   IF (I.NE.J) THEN
55006 C...~nu_J -> lepton+_I + lepton-_K
55007                     LKNT = LKNT+1
55008                     IDLAM(LKNT,1)=-11 -2*(I-1)
55009                     IDLAM(LKNT,2)= 11 +2*(K-1)
55010                     IDLAM(LKNT,3)=  0
55011                     XLAM(LKNT)=0D0
55012                     RM2=RVLAM(I,J,K)**2 * SM
55013                     IF (IMSS(51).NE.0) XLAM(LKNT) =
55014      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55015 C...KINEMATICS CHECK
55016                     IF (XLAM(LKNT).EQ.0D0) THEN
55017                       LKNT=LKNT-1
55018                     ENDIF
55019                   ENDIF
55020   160           CONTINUE
55021   170         CONTINUE
55022 C...~nu_I -> dbar_J + d_K
55023               I=INT((KFSM-10)/2)
55024               DO 190 J=1,3
55025                 DO 180 K=1,3
55026                   LKNT = LKNT+1
55027                   IDLAM(LKNT,1)=-1 -2*(J-1)
55028                   IDLAM(LKNT,2)= 1 +2*(K-1)
55029                   IDLAM(LKNT,3)= 0
55030                   XLAM(LKNT)=0D0
55031                   RM2=3*RVLAMP(I,J,K)**2 * SM
55032                   IF (IMSS(52).NE.0) XLAM(LKNT) =
55033      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55034 C...KINEMATICS CHECK
55035                   IF (XLAM(LKNT).EQ.0D0) THEN
55036                     LKNT=LKNT-1
55037                   ENDIF
55038   180           CONTINUE
55039   190         CONTINUE
55040             ENDIF
55041           ENDIF
55042 C * SDOWN -> NU(BAR) + D and LEPTON- + U
55043           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
55044             J=INT((KFSM+1)/2)
55045             DO 210 I=1,3
55046               DO 200 K=1,3
55047 C...~d_J -> nu_Ibar + d_K
55048                 LKNT = LKNT+1
55049                 IDLAM(LKNT,1)=-12 -2*(I-1)
55050                 IDLAM(LKNT,2)=  1 +2*(K-1)
55051                 IDLAM(LKNT,3)=  0
55052                 XLAM(LKNT)=0D0
55053                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
55054                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55055      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55056 C...KINEMATICS CHECK
55057                 IF (XLAM(LKNT).EQ.0D0) THEN
55058                   LKNT=LKNT-1
55059                 ENDIF
55060   200         CONTINUE
55061   210       CONTINUE
55062             K=INT((KFSM+1)/2)
55063             DO 240 I=1,3
55064               DO 230 J=1,3
55065 C...~d_K -> nu_I + d_J
55066                 LKNT = LKNT+1
55067                 IDLAM(LKNT,1)= 12 +2*(I-1)
55068                 IDLAM(LKNT,2)=  1 +2*(J-1)
55069                 IDLAM(LKNT,3)=  0
55070                 XLAM(LKNT)=0D0
55071                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55072                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55073      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55074 C...KINEMATICS CHECK
55075                 IF (XLAM(LKNT).EQ.0D0) THEN
55076                   LKNT=LKNT-1
55077                 ENDIF
55078 C...~d_K -> lepton_I- + u_J
55079   220           LKNT = LKNT+1
55080                 IDLAM(LKNT,1)= 11 +2*(I-1)
55081                 IDLAM(LKNT,2)=  2 +2*(J-1)
55082                 IDLAM(LKNT,3)=  0
55083                 XLAM(LKNT)=0D0
55084                 IF (IMSS(52).NE.0) THEN
55085 C...Use massive top quark
55086                   IF (IDLAM(LKNT,2).EQ.6) THEN
55087                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
55088                     XLAM(LKNT) =
55089      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
55090 C...If no top quark, all decay products massless
55091                   ELSE
55092                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55093                     XLAM(LKNT) =
55094      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55095                   ENDIF
55096 C...KINEMATICS CHECK
55097                   IF (XLAM(LKNT).EQ.0D0) THEN
55098                     LKNT=LKNT-1
55099                   ENDIF
55100                 ENDIF
55101   230         CONTINUE
55102   240       CONTINUE
55103           ENDIF
55104 C * SUP -> LEPTON+ + D
55105           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
55106             J=NINT(KFSM/2.)
55107             DO 260 I=1,3
55108               DO 250 K=1,3
55109 C...~u_J -> lepton_I+ + d_K
55110                 LKNT = LKNT+1
55111                 IDLAM(LKNT,1)=-11 -2*(I-1)
55112                 IDLAM(LKNT,2)=  1 +2*(K-1)
55113                 IDLAM(LKNT,3)=  0
55114                 XLAM(LKNT)=0D0
55115                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
55116                 IF (IMSS(52).NE.0) XLAM(LKNT) =
55117      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55118 C...KINEMATICS CHECK
55119                 IF (XLAM(LKNT).EQ.0D0) THEN
55120                   LKNT=LKNT-1
55121                 ENDIF
55122   250         CONTINUE
55123   260       CONTINUE
55124           ENDIF
55125         ENDIF
55126 C...BARYON NUMBER VIOLATING DECAYS
55127         IF (IMSS(53).GE.1) THEN
55128 C * SUP -> DBAR + DBAR
55129           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
55130             I = KFSM/2
55131             DO 280 J=1,3
55132               DO 270 K=1,3
55133 C...~u_I -> dbar_J + dbar_K
55134                 IF (J.LT.K) THEN
55135 C...(anti-) symmetry J <-> K.
55136                   LKNT = LKNT + 1
55137                   IDLAM(LKNT,1) = -1 -2*(J-1)
55138                   IDLAM(LKNT,2) = -1 -2*(K-1)
55139                   IDLAM(LKNT,3) =  0
55140                   XLAM(LKNT)    =  0D0
55141                   RM2 = 2.*(RVLAMB(I,J,K)**2)
55142      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
55143                   XLAM(LKNT)    =
55144      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55145 C...KINEMATICS CHECK
55146                   IF (XLAM(LKNT).EQ.0D0) THEN
55147                     LKNT = LKNT-1
55148                   ENDIF
55149                 ENDIF
55150   270         CONTINUE
55151   280       CONTINUE
55152           ENDIF
55153 C * SDOWN -> UBAR + DBAR
55154           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
55155             K=(KFSM+1)/2
55156             DO 300 I=1,3
55157               DO 290 J=1,3
55158 C...LAMB coupling antisymmetric in J and K.
55159                 IF (J.NE.K) THEN
55160 C...~d_K -> ubar_I + dbar_K
55161                   LKNT = LKNT + 1
55162                   IDLAM(LKNT,1)= -2 -2*(I-1)
55163                   IDLAM(LKNT,2)= -1 -2*(J-1)
55164                   IDLAM(LKNT,3)=  0
55165                   XLAM(LKNT)=0D0
55166 C...Use massive top quark
55167                   IF (IDLAM(LKNT,1).EQ.-6) THEN
55168                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
55169      &                   )
55170                     XLAM(LKNT) =
55171      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
55172 C...If no top quark, all decay products massless
55173                   ELSE
55174                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
55175                     XLAM(LKNT) =
55176      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
55177                   ENDIF
55178 C...KINEMATICS CHECK
55179                   IF (XLAM(LKNT).EQ.0D0) THEN
55180                     LKNT=LKNT-1
55181                   ENDIF
55182                 ENDIF
55183   290         CONTINUE
55184   300       CONTINUE
55185           ENDIF
55186         ENDIF
55187       ENDIF
55188  
55189       RETURN
55190       END
55191  
55192 C*********************************************************************
55193  
55194 C...PYRVNE
55195 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
55196 C...P. Z. Skands
55197  
55198       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
55199  
55200 C...Double precision and integer declarations.
55201       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55202       IMPLICIT INTEGER(I-N)
55203 C...Parameter statement to help give large particle numbers.
55204       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55205      &KEXCIT=4000000,KDIMEN=5000000)
55206 C...Commonblocks.
55207       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55208       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55209       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55210       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55211      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55212       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55213 C...Local variables.
55214       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55215      &     ,DCMASS,KFR(3)
55216       DOUBLE PRECISION XLAM(0:400)
55217       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
55218       INTEGER IDLAM(400,3), PYCOMP
55219       LOGICAL DCMASS
55220       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
55221  
55222 C...R-VIOLATING DECAYS
55223       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
55224         KFSM=KFIN-KSUSY1
55225         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
55226 C...WHICH NEUTRALINO ?
55227           NCHI=1
55228           IF (KFSM.EQ.23) NCHI=2
55229           IF (KFSM.EQ.25) NCHI=3
55230           IF (KFSM.EQ.35) NCHI=4
55231 C...SIGN OF MASS (Opposite convention as HERWIG)
55232           ISM = 1
55233           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
55234  
55235 C...Useful parameters for the calculation of the A and B constants.
55236           WMASS = PMAS(PYCOMP(24),1)
55237           ECHG = 2*SQRT(PARU(103)*PARU(1))
55238           COSB=1/(SQRT(1+RMSS(5)**2))
55239           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
55240           COSW=SQRT(1-PARU(102))
55241           SINW=SQRT(PARU(102))
55242           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
55243 C...Run quark masses to neutralino mass squared (for Higgs-type
55244 C...couplings)
55245           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
55246           DO 100 I=1,6
55247             RMQ(I)=PYMRUN(I,SQMCHI)
55248   100     CONTINUE
55249 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
55250             DO 110 NCHJ=1,4
55251               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
55252               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
55253               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
55254               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
55255   110       CONTINUE
55256             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
55257             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
55258             C2=ECHG*ZPMIX(NCHI,1)
55259             C3=GW*ZPMIX(NCHI,2)/COSW
55260             EU=2D0/3D0
55261             ED=-1D0/3D0
55262 C... AB(x,y,z):
55263 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
55264 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55265 C                                    11-16:e,nu_e,mu,...)
55266 C       z=1-2  : Mass eigenstate number
55267 C...CALCULATE COUPLINGS
55268           DO 120 I = 11,15,2
55269             CMS=PMAS(PYCOMP(I),1)
55270 C...Intermediate sleptons
55271             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
55272      &           *(C2-C3*SINW**2))
55273             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
55274      &           *(C2-C3*SINW**2))
55275             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
55276      &           **2))
55277             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
55278      &           **2))
55279 C...Inermediate sneutrinos
55280             AB(1,I+1,1)=0D0
55281             AB(2,I+1,1)=5D-1*C3
55282             AB(1,I+1,2)=0D0
55283             AB(2,I+1,2)=0D0
55284 C...Inermediate sdown
55285             J=I-10
55286             CMS=RMQ(J)
55287             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
55288      &           *ED*(C2-C3*SINW**2))
55289             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
55290      &           *ED*(C2-C3*SINW**2))
55291             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
55292      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
55293             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
55294      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
55295 C...Inermediate sup
55296             J=J+1
55297             CMS=RMQ(J)
55298             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
55299      &           *EU*(C2-C3*SINW**2))
55300             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
55301      &           *EU*(C2-C3*SINW**2))
55302             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
55303      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
55304             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
55305      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
55306   120     CONTINUE
55307  
55308           IF (IMSS(51).GE.1) THEN
55309 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
55310 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
55311 C...STEP IN I,J,K USING SINGLE COUNTER
55312             DO 130 ISC=0,26
55313 C...LAMBDA COUPLING ASYM IN I,J
55314               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
55315                 LKNT = LKNT+1
55316                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55317                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
55318                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
55319                 XLAM(LKNT)    = 0D0
55320 C...Set coupling, and decay product masses on/off
55321                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55322      &               ,MOD(ISC,3)+1)**2
55323                 DCMASS=.FALSE.
55324                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
55325      &               DCMASS = .TRUE.
55326 C...Resonance KF codes (1=I,2=J,3=K)
55327                 KFR(1)=-IDLAM(LKNT,1)
55328                 KFR(2)=-IDLAM(LKNT,2)
55329                 KFR(3)=-IDLAM(LKNT,3)
55330 C...Calculate width.
55331                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55332      &               IDLAM(LKNT,3),XLAM(LKNT))
55333                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55334 C...Charge conjugate mode.
55335                 LKNT=LKNT+1
55336                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55337                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55338                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55339                 XLAM(LKNT)=XLAM(LKNT-1)
55340 C...KINEMATICS CHECK
55341                 IF (XLAM(LKNT).EQ.0D0) THEN
55342                   LKNT=LKNT-2
55343                 ENDIF
55344               ENDIF
55345   130       CONTINUE
55346           ENDIF
55347  
55348           IF (IMSS(52).GE.1) THEN
55349 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
55350 C * CHI0 -> NUBAR_I + DBAR_J + D_K
55351             DO 140 ISC=0,26
55352               LKNT = LKNT+1
55353               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55354               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55355               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55356               XLAM(LKNT)    =  0D0
55357 C...Set coupling, and decay product masses on/off
55358               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55359      &             ,MOD(ISC,3)+1)**2
55360               DCMASS=.FALSE.
55361               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
55362      &             DCMASS = .TRUE.
55363 C...Resonance KF codes (1=I,2=J,3=K)
55364               KFR(1)=-IDLAM(LKNT,1)
55365               KFR(2)=-IDLAM(LKNT,2)
55366               KFR(3)=-IDLAM(LKNT,3)
55367 C...Calculate width.
55368               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55369      &             ,XLAM(LKNT))
55370               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55371 C...Charge conjugate mode.
55372               LKNT=LKNT+1
55373               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55374               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55375               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55376               XLAM(LKNT)=XLAM(LKNT-1)
55377 C...KINEMATICS CHECK
55378               IF (XLAM(LKNT).EQ.0D0) THEN
55379                 LKNT=LKNT-2
55380               ENDIF
55381  
55382 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
55383               LKNT = LKNT+1
55384               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55385               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
55386               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55387               XLAM(LKNT)    =  0D0
55388 C...Set coupling, and decay product masses on/off
55389               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
55390      &             ,MOD(ISC,3)+1)**2
55391               DCMASS=.FALSE.
55392               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
55393      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
55394 C...Resonance KF codes (1=I,2=J,3=K)
55395               KFR(1)=-IDLAM(LKNT,1)
55396               KFR(2)=-IDLAM(LKNT,2)
55397               KFR(3)=-IDLAM(LKNT,3)
55398 C...Calculate width.
55399               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55400      &             ,XLAM(LKNT))
55401               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55402 C...Charge conjugate mode.
55403               LKNT=LKNT+1
55404               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55405               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55406               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55407               XLAM(LKNT)=XLAM(LKNT-1)
55408 C...KINEMATICS CHECK
55409               IF (XLAM(LKNT).EQ.0D0) THEN
55410                 LKNT=LKNT-2
55411               ENDIF
55412   140       CONTINUE
55413           ENDIF
55414  
55415           IF (IMSS(53).GE.1) THEN
55416 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
55417 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
55418             DO 150 ISC=0,26
55419 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
55420               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
55421                 LKNT = LKNT+1
55422                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
55423                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55424                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55425                 XLAM(LKNT)    =  0D0
55426 C...Set coupling, and decay product masses on/off
55427                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
55428      &               +1,MOD(ISC,3)+1)**2
55429                 DCMASS=.FALSE.
55430                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
55431      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
55432 C...Resonance KF codes (1=I,2=J,3=K)
55433                 KFR(1) = IDLAM(LKNT,1)
55434                 KFR(2) = IDLAM(LKNT,2)
55435                 KFR(3) = IDLAM(LKNT,3)
55436 C...Calculate width.
55437                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55438      &               IDLAM(LKNT,3),XLAM(LKNT))
55439                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55440 C...Charge conjugate mode.
55441                 LKNT=LKNT+1
55442                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
55443                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
55444                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
55445                 XLAM(LKNT)=XLAM(LKNT-1)
55446 C...KINEMATICS CHECK
55447                 IF (XLAM(LKNT).EQ.0D0) THEN
55448                   LKNT=LKNT-2
55449                 ENDIF
55450               ENDIF
55451   150       CONTINUE
55452           ENDIF
55453         ENDIF
55454       ENDIF
55455  
55456       RETURN
55457       END
55458  
55459 C*********************************************************************
55460  
55461 C...PYRVCH
55462 C...Calculates R-violating chargino decay widths.
55463 C...P. Z. Skands
55464  
55465       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
55466  
55467 C...Double precision and integer declarations.
55468       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55469       IMPLICIT INTEGER(I-N)
55470 C...Parameter statement to help give large particle numbers.
55471       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55472      &KEXCIT=4000000,KDIMEN=5000000)
55473 C...Commonblocks.
55474       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55475       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55476       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55477       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55478      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55479       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55480 C...Local variables.
55481       DOUBLE PRECISION XLAM(0:400)
55482       INTEGER IDLAM(400,3), PYCOMP
55483 C...Information from main routine to PYRVGW
55484       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55485      &     ,DCMASS,KFR(3)
55486 C...Auxiliary variables needed for BV (RV Gauge STOre)
55487       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
55488      &     ,RVLJKI,RVLJIK
55489 C...Running quark masses
55490       DOUBLE PRECISION RMQ(6)
55491 C...Decay product masses on/off
55492       LOGICAL DCMASS
55493       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
55494      &     /RVGSTO/
55495  
55496  
55497 C...IF R-VIOLATION ON.
55498       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
55499         KFSM=KFIN-KSUSY1
55500         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
55501 C...WHICH CHARGINO ?
55502           NCHI = 1
55503           IF (KFSM.EQ.37) NCHI = 2
55504  
55505 C...Useful parameters for calculating the A and B constants.
55506 C...SIGN OF MASS (Opposite convention as HERWIG)
55507           ISM  = 1
55508           IF (SMW(NCHI).LT.0D0) ISM = -1
55509           WMASS   = PMAS(PYCOMP(24),1)
55510           COSB    = 1/(SQRT(1+RMSS(5)**2))
55511           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
55512           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
55513           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
55514           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
55515           C2      = UMIX(NCHI,1)
55516           C3      = VMIX(NCHI,1)
55517 C...Running masses at Q^2=MCHI^2.
55518           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
55519           DO 100 I=1,6
55520             RMQ(I)=PYMRUN(I,SQMCHI)
55521   100     CONTINUE
55522  
55523 C... AB(x,y,z) coefficients:
55524 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
55525 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55526 C                                    11-16:e,nu_e,mu,...)
55527 C       z=1-2  : Mass eigenstate number
55528           DO 110 I = 11,15,2
55529 C...Intermediate sleptons
55530             AB(1,I,1)   = 0D0
55531             AB(1,I,2)   = 0D0
55532             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
55533      &           SFMIX(I,1)*C2
55534             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
55535      &           SFMIX(I,3)*C2
55536 C...Intermediate sneutrinos
55537             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
55538             AB(1,I+1,2) = 0D0
55539             AB(2,I+1,1) = ISM*C3
55540             AB(2,I+1,2) = 0D0
55541 C...Intermediate sdown
55542             J=I-10
55543             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
55544             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
55545             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
55546             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
55547 C...Intermediate sup
55548             J=J+1
55549             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
55550             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
55551             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
55552             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
55553   110     CONTINUE
55554  
55555 C...LLE TYPE R-VIOLATION
55556           IF (IMSS(51).GE.1) THEN
55557 C...LOOP OVER DECAY MODES
55558             DO 140 ISC=0,26
55559  
55560 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
55561               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
55562                 LKNT = LKNT+1
55563                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
55564                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
55565                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
55566                 XLAM(LKNT)    =  0D0
55567 C...Set coupling, and decay product masses on/off
55568                 RVLAMC        = GW2 * 5D-1 *
55569      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
55570      &               **2
55571                 DCMASS=.FALSE.
55572                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
55573 C...Resonance KF codes (1=I,2=J,3=K).
55574                 KFR(1) = 0
55575                 KFR(2) = 0
55576                 KFR(3) = -IDLAM(LKNT,3)+1
55577 C...Calculate width.
55578                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55579      &               IDLAM(LKNT,3),XLAM(LKNT))
55580                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55581 C...KINEMATICS CHECK
55582                 IF (XLAM(LKNT).EQ.0D0) THEN
55583                   LKNT=LKNT-1
55584                 ENDIF
55585  
55586 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
55587   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
55588                   LKNT = LKNT+1
55589                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
55590                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
55591                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
55592                   XLAM(LKNT)    = 0D0
55593 C...Set coupling, and decay product masses on/off
55594                   RVLAMC = GW2 * 5D-1 *
55595      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55596 C...I,J SYMMETRY => FACTOR 2
55597                   RVLAMC=2*RVLAMC
55598                   DCMASS=.FALSE.
55599                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
55600 C...Resonance KF codes (1=I,2=J,3=K)
55601                   KFR(1)=IDLAM(LKNT,1)-1
55602                   KFR(2)=IDLAM(LKNT,2)-1
55603                   KFR(3)=0
55604 C...Calculate width.
55605                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55606      &                 IDLAM(LKNT,3),XLAM(LKNT))
55607                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55608 C...KINEMATICS CHECK
55609                   IF (XLAM(LKNT).EQ.0D0) THEN
55610                     LKNT=LKNT-1
55611                   ENDIF
55612   130           ENDIF
55613  
55614 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K
55615                 LKNT = LKNT+1
55616                 IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55617                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
55618                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
55619                 XLAM(LKNT)    = 0D0
55620 C...Set coupling, and decay product masses on/off
55621                 RVLAMC = GW2 * 5D-1 *
55622      &             RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55623 C...I,J SYMMETRY => FACTOR 2
55624                 RVLAMC=2*RVLAMC
55625                 DCMASS=.FALSE.
55626                 IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
55627      &               .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
55628 C...Resonance KF codes (1=I,2=J,3=K)
55629                 KFR(1) =-IDLAM(LKNT,1)+1
55630                 KFR(2) =-IDLAM(LKNT,2)+1
55631                 KFR(3) = 0
55632 C...Calculate width.
55633                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55634      &               IDLAM(LKNT,3),XLAM(LKNT))
55635                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55636 C...KINEMATICS CHECK
55637                 IF (XLAM(LKNT).EQ.0D0) THEN
55638                   LKNT=LKNT-1
55639                 ENDIF
55640               ENDIF
55641   140       CONTINUE
55642           ENDIF
55643  
55644 C...LQD TYPE R-VIOLATION
55645           IF (IMSS(52).GE.1) THEN
55646 C...LOOP OVER DECAY MODES
55647             DO 180 ISC=0,26
55648  
55649 C...CHI+ -> NUBAR_I + DBAR_J + U_K
55650               LKNT = LKNT+1
55651               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55652               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55653               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
55654               XLAM(LKNT)    =  0D0
55655 C...Set coupling, and decay product masses on/off
55656               RVLAMC = 3. * GW2 * 5D-1 *
55657      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55658               DCMASS=.FALSE.
55659               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
55660      &             DCMASS = .TRUE.
55661 C...Resonance KF codes (1=I,2=J,3=K)
55662               KFR(1)=0
55663               KFR(2)=0
55664               KFR(3)=-IDLAM(LKNT,3)+1
55665 C...Calculate width.
55666               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55667      &             ,XLAM(LKNT))
55668               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55669 C...KINEMATICS CHECK
55670               IF (XLAM(LKNT).EQ.0D0) THEN
55671                 LKNT=LKNT-1
55672               ENDIF
55673  
55674 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
55675   150         LKNT = LKNT+1
55676               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55677               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
55678               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
55679               XLAM(LKNT)    =  0D0
55680 C...Set coupling, and decay product masses on/off
55681               RVLAMC = 3. * GW2 * 5D-1 *
55682      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55683               DCMASS=.FALSE.
55684               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
55685      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
55686 C...Resonance KF codes (1=I,2=J,3=K)
55687               KFR(1)=0
55688               KFR(2)=0
55689               KFR(3)=-IDLAM(LKNT,3)+1
55690 C...Calculate width.
55691               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55692      &             ,XLAM(LKNT))
55693               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55694 C...KINEMATICS CHECK
55695               IF (XLAM(LKNT).EQ.0D0) THEN
55696                 LKNT=LKNT-1
55697               ENDIF
55698  
55699 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
55700   160         LKNT = LKNT+1
55701               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
55702               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55703               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55704               XLAM(LKNT)    =  0D0
55705 C...Set coupling, and decay product masses on/off
55706               RVLAMC = 3. * GW2 * 5D-1 *
55707      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55708               DCMASS = .FALSE.
55709               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
55710      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
55711 C...Resonance KF codes (1=I,2=J,3=K)
55712               KFR(1)=-IDLAM(LKNT,1)+1
55713               KFR(2)=-IDLAM(LKNT,2)+1
55714               KFR(3)=0
55715 C...Calculate width.
55716               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55717      &             ,XLAM(LKNT))
55718               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55719 C...KINEMATICS CHECK
55720               IF (XLAM(LKNT).EQ.0D0) THEN
55721                 LKNT=LKNT-1
55722               ENDIF
55723  
55724 C * CHI+ -> NU_I + U_J + DBAR_K.
55725   170         LKNT = LKNT+1
55726               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
55727               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
55728               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55729               XLAM(LKNT)    =  0D0
55730 C...Set coupling, and decay product masses on/off
55731               DCMASS = .FALSE.
55732               RVLAMC = 3. * GW2 * 5D-1 *
55733      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
55734               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
55735      &             DCMASS = .TRUE.
55736 C...Resonance KF codes (1=I,2=J,3=K)
55737               KFR(1)=IDLAM(LKNT,1)-1
55738               KFR(2)=IDLAM(LKNT,2)-1
55739               KFR(3)=0
55740 C...Calculate width.
55741               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
55742      &             ,XLAM(LKNT))
55743               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55744 C...KINEMATICS CHECK
55745               IF (XLAM(LKNT).EQ.0D0) THEN
55746                 LKNT=LKNT-1
55747               ENDIF
55748  
55749   180       CONTINUE
55750           ENDIF
55751  
55752 C...UDD TYPE R-VIOLATION
55753 C...These decays need special treatment since more than one BV coupling
55754 C...contributes (with interference). Consider e.g. (symbolically)
55755 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
55756 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
55757 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
55758 C...The problem is that a single call to PYRVGW would evaluate all
55759 C...these terms and sum them, but without the different couplings. The
55760 C...way out is to call PYRVGW three times, once for the first line, once
55761 C...for the second line, and then once for all the lines (it is
55762 C...impossible to get just the last line out) without multiplying by
55763 C...couplings. The last line is then obtained as the result of the third
55764 C...call minus the results of the two first calls. Each term is then
55765 C...multiplied by its respective coupling before the whole thing is
55766 C...summed up in XLAM.
55767 C...Note that with three interfering resonances, this procedure becomes
55768 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
55769  
55770           IF (IMSS(53).GE.1) THEN
55771 C...LOOP OVER DECAY MODES
55772             DO 190 ISC=1,25
55773  
55774 C...CHI+ -> U_I + U_J + D_K
55775 C...Decay mode I<->J symmetric.
55776               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
55777                 LKNT = LKNT+1
55778                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
55779                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
55780                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55781                 XLAM(LKNT)    =  0D0
55782 C...Set coupling, and decay product masses on/off
55783                 RVLAMC= 6. * GW2 * 5D-1
55784                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
55785      &               +1)
55786                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
55787      &               +1)
55788                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
55789      &               * RVLAMC
55790                 DCMASS=.FALSE.
55791                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
55792      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
55793 C...Resonance KF codes (1=I,2=J,3=K)
55794                 KFR(1) = -IDLAM(LKNT,1)+1
55795                 KFR(2) = 0
55796                 KFR(3) = 0
55797 C...Calculate width.
55798                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55799      &               IDLAM(LKNT,3),XRESI)
55800 C...Resonance KF codes (1=I,2=J,3=K)
55801                 KFR(1) = 0
55802                 KFR(2) = -IDLAM(LKNT,2)+1
55803                 KFR(3) = 0
55804 C...Calculate width.
55805                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55806      &               IDLAM(LKNT,3),XRESJ)
55807 C...Resonance KF codes (1=I,2=J,3=K)
55808                 KFR(1) = -IDLAM(LKNT,1)+1
55809                 KFR(2) = -IDLAM(LKNT,2)+1
55810                 KFR(3) = 0
55811 C...Calculate width.
55812                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55813      &               IDLAM(LKNT,3),XRESIJ)
55814                 IF (ABS((XRESI+XRESJ)/XRESIJ-1.).GT.1D-4) THEN
55815                   XRESIJ = XRESIJ-XRESI-XRESJ
55816                 ELSE
55817                   XRESIJ = 0D0
55818                 ENDIF
55819 C...CALCULATE TOTAL WIDTH
55820                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
55821      &               + RVLJIK*RVLIJK * XRESIJ
55822                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
55823 C...KINEMATICS CHECK
55824                 IF (XLAM(LKNT).EQ.0D0) THEN
55825                   LKNT=LKNT-1
55826                 ENDIF
55827               ENDIF
55828 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
55829 C...Symmetry I<->J<->K.
55830               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
55831      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
55832                 LKNT = LKNT+1
55833                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
55834                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55835                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
55836                 XLAM(LKNT)    =  0D0
55837 C...Set coupling, and decay product masses on/off
55838                 RVLAMC = 6. * GW2 * 5D-1
55839                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
55840      &               +1)
55841                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
55842      &               +1)
55843                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
55844      &               +1)
55845                 DCMASS = .FALSE.
55846                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
55847      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
55848 C...Collect symmetry factors
55849                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
55850      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
55851      &               RVLAMC = 5D-1 * RVLAMC
55852 C...Resonance KF codes (1=I,2=J,3=K)
55853                 KFR(1) = IDLAM(LKNT,1)-1
55854                 KFR(2) = 0
55855                 KFR(3) = 0
55856 C...Calculate width.
55857                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55858      &               IDLAM(LKNT,3),XRESI)
55859 C...Resonance KF codes (1=I,2=J,3=K)
55860                 KFR(1) = 0
55861                 KFR(2) = IDLAM(LKNT,2)-1
55862                 KFR(3) = 0
55863 C...Calculate width.
55864                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55865      &               IDLAM(LKNT,3),XRESJ)
55866 C...Resonance KF codes (1=I,2=J,3=K)
55867                 KFR(1) = 0
55868                 KFR(2) = 0
55869                 KFR(3) = IDLAM(LKNT,3)-1
55870 C...Calculate width.
55871                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55872      &               IDLAM(LKNT,3),XRESK)
55873 C...Resonance KF codes (1=I,2=J,3=K)
55874                 KFR(1) = IDLAM(LKNT,1)-1
55875                 KFR(2) = IDLAM(LKNT,2)-1
55876                 KFR(3) = 0
55877 C...Calculate width.
55878                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55879      &               IDLAM(LKNT,3),XRESIJ)
55880                 IF (ABS(XRESIJ/(XRESI+XRESJ)-1.).GT.1D-4) THEN
55881                   XRESIJ = XRESI+XRESJ-XRESIJ
55882                 ELSE
55883                   XRESIJ = 0D0
55884                 ENDIF
55885 C...Resonance KF codes (1=I,2=J,3=K)
55886                 KFR(1) = 0
55887                 KFR(2) = IDLAM(LKNT,2)-1
55888                 KFR(3) = IDLAM(LKNT,3)-1
55889 C...Calculate width.
55890                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55891      &               IDLAM(LKNT,3),XRESJK)
55892                 IF (ABS(XRESJK/(XRESJ+XRESK)-1.).GT.1D-4) THEN
55893                   XRESJK = XRESJ+XRESK-XRESJK
55894                 ELSE
55895                   XRESJK = 0D0
55896                 ENDIF
55897 C...Resonance KF codes (1=I,2=J,3=K)
55898                 KFR(1) = IDLAM(LKNT,1)-1
55899                 KFR(2) = 0
55900                 KFR(3) = IDLAM(LKNT,3)-1
55901 C...Calculate width.
55902                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
55903      &               IDLAM(LKNT,3),XRESIK)
55904                 IF (ABS(XRESIK/(XRESI+XRESK)-1.).GT.1D-4) THEN
55905                   XRESIK = XRESI+XRESK-XRESIK
55906                 ELSE
55907                   XRESIK = 0D0
55908                 ENDIF
55909 C...CALCULATE TOTAL WIDTH
55910                 XLAM(LKNT) =
55911      &                 RVLIJK**2 * XRESI
55912      &               + RVLJKI**2 * XRESJ
55913      &               + RVLKIJ**2 * XRESK
55914      &               + RVLIJK*RVLJKI * XRESIJ
55915      &               + RVLIJK*RVLKIJ * XRESIK
55916      &               + RVLJKI*RVLKIJ * XRESJK
55917                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
55918 C...KINEMATICS CHECK
55919                 IF (XLAM(LKNT).EQ.0D0) THEN
55920                   LKNT=LKNT-1
55921                 ENDIF
55922               ENDIF
55923   190       CONTINUE
55924           ENDIF
55925         ENDIF
55926       ENDIF
55927  
55928       RETURN
55929       END
55930  
55931 C*********************************************************************
55932  
55933 C...PYRVGL
55934 C...Calculates R-violating gluino decay widths.
55935 C...See BV part of PYRVCH for comments about the way the BV decay width
55936 C...is calculated. Same comments apply here.
55937 C...P. Z. Skands
55938  
55939       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
55940  
55941 C...Double precision and integer declarations.
55942       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55943       IMPLICIT INTEGER(I-N)
55944 C...Parameter statement to help give large particle numbers.
55945       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55946      &KEXCIT=4000000,KDIMEN=5000000)
55947 C...Commonblocks.
55948       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55949       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55950       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
55951       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
55952      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
55953       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
55954 C...Local variables.
55955       DOUBLE PRECISION XLAM(0:400)
55956       INTEGER IDLAM(400,3), PYCOMP
55957 C...Information from main routine to PYRVGW
55958       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
55959      &     ,DCMASS,KFR(3)
55960 C...Auxiliary variables needed for BV (RV Gauge STOre)
55961       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
55962      &     ,RVLJKI,RVLJIK
55963 C...Running quark masses
55964       DOUBLE PRECISION RMQ(6)
55965 C...Decay product masses on/off
55966       LOGICAL DCMASS
55967       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
55968      &     /RVGSTO/
55969  
55970 C...IF LQD OR UDD TYPE R-VIOLATION ON.
55971       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
55972         KFSM=KFIN-KSUSY1
55973  
55974 C... AB(x,y,z):
55975 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
55976 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
55977 C                                    11-16:e,nu_e,mu,... not used here)
55978 C       z=1-2  : Mass eigenstate number
55979         DO 100 I = 1,6
55980 C...A Couplings
55981           AB(1,I,1) = SFMIX(I,2)
55982           AB(1,I,2) = SFMIX(I,4)
55983 C...B Couplings
55984           AB(2,I,1) = -SFMIX(I,1)
55985           AB(2,I,2) = -SFMIX(I,3)
55986   100   CONTINUE
55987         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
55988 C...LQD DECAYS.
55989         IF (IMSS(52).GE.1) THEN
55990 C...STEP IN I,J,K USING SINGLE COUNTER
55991           DO 120 ISC=0,26
55992 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
55993             LKNT          = LKNT+1
55994             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
55995             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
55996             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
55997             XLAM(LKNT)=0D0
55998 C...Set coupling, and decay product masses on/off
55999             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
56000      &           * 5D-1 * GSTR2
56001             DCMASS        = .FALSE.
56002             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
56003 C...Resonance KF codes (1=I,2=J,3=K)
56004             KFR(1)        = 0
56005             KFR(2)        = -IDLAM(LKNT,2)
56006             KFR(3)        = -IDLAM(LKNT,3)
56007 C...Calculate width.
56008             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56009      &           ,XLAM(LKNT))
56010 C...Normalize
56011             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
56012 C...Charge conjugate mode.
56013   110       LKNT          = LKNT+1
56014             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
56015             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
56016             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
56017             XLAM(LKNT)    = XLAM(LKNT-1)
56018 C...KINEMATICS CHECK
56019             IF (XLAM(LKNT).EQ.0D0) THEN
56020               LKNT=LKNT-2
56021             ENDIF
56022  
56023 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
56024             LKNT = LKNT+1
56025             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
56026             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
56027             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
56028             XLAM(LKNT)=0D0
56029 C...Set coupling, and decay product masses on/off
56030             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
56031      &           **2* 5D-1 * GSTR2
56032             DCMASS        = .FALSE.
56033             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
56034      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
56035 C...Resonance KF codes (1=I,2=J,3=K)
56036             KFR(1)        = 0
56037             KFR(2)        = -IDLAM(LKNT,2)
56038             KFR(3)        = -IDLAM(LKNT,3)
56039 C...Calculate width.
56040             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56041      &           ,XLAM(LKNT))
56042             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
56043 C...Charge conjugate mode.
56044             LKNT=LKNT+1
56045             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
56046             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
56047             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
56048             XLAM(LKNT)    =  XLAM(LKNT-1)
56049 C...KINEMATICS CHECK
56050             IF (XLAM(LKNT).EQ.0D0) THEN
56051               LKNT=LKNT-2
56052             ENDIF
56053  
56054   120     CONTINUE
56055         ENDIF
56056  
56057 C...UDD DECAYS.
56058         IF (IMSS(53).GE.1) THEN
56059 C...STEP IN I,J,K USING SINGLE COUNTER
56060           DO 130 ISC=0,26
56061 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
56062             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
56063               LKNT          = LKNT+1
56064               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
56065               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
56066               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
56067               XLAM(LKNT)=0D0
56068 C...Set coupling, and decay product masses on/off. A factor of 2 for
56069 C...(N_C-1) has been used to cancel a factor 0.5.
56070               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
56071      &             **2 * GSTR2
56072               DCMASS        = .FALSE.
56073               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
56074      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
56075 C...Resonance KF codes (1=I,2=J,3=K)
56076               KFR(1)        = IDLAM(LKNT,1)
56077               KFR(2)        = 0
56078               KFR(3)        = 0
56079 C...Calculate width.
56080               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56081      &             ,XRESI)
56082 C...Resonance KF codes (1=I,2=J,3=K)
56083               KFR(1)        = 0
56084               KFR(2)        = IDLAM(LKNT,2)
56085               KFR(3)        = 0
56086 C...Calculate width.
56087               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56088      &             ,XRESJ)
56089 C...Resonance KF codes (1=I,2=J,3=K)
56090               KFR(1)        = 0
56091               KFR(2)        = 0
56092               KFR(3)        = IDLAM(LKNT,3)
56093 C...Calculate width.
56094               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56095      &             ,XRESK)
56096 C...Resonance KF codes (1=I,2=J,3=K)
56097               KFR(1)        = IDLAM(LKNT,1)
56098               KFR(2)        = IDLAM(LKNT,2)
56099               KFR(3)        = 0
56100 C...Calculate width.
56101               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56102      &             ,XRESIJ)
56103 C...Calculate interference function. (Factor -1/2 to make up for factor
56104 C...-2 in PYRVGW.
56105               IF (ABS((XRESI+XRESJ)/XRESIJ-1D0).GT.1D-4) THEN
56106                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
56107               ELSE
56108                 XRESIJ = 0D0
56109               ENDIF
56110 C...Resonance KF codes (1=I,2=J,3=K)
56111               KFR(1)        = 0
56112               KFR(2)        = IDLAM(LKNT,2)
56113               KFR(3)        = IDLAM(LKNT,3)
56114 C...Calculate width.
56115               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56116      &             ,XRESJK)
56117               IF (ABS((XRESJ+XRESK)/XRESJK-1).GT.1D-4) THEN
56118                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
56119               ELSE
56120                 XRESJK = 0D0
56121               ENDIF
56122 C...Resonance KF codes (1=I,2=J,3=K)
56123               KFR(1)        = IDLAM(LKNT,1)
56124               KFR(2)        = 0
56125               KFR(3)        = IDLAM(LKNT,3)
56126 C...Calculate width.
56127               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
56128      &             ,XRESIK)
56129               IF (ABS((XRESI+XRESK)/XRESIK-1).GT.1D-4) THEN
56130                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
56131               ELSE
56132                 XRESIK = 0D0
56133               ENDIF
56134 C...Calculate total width (factor 1/2 from 1/(N_C-1))
56135               XLAM(LKNT) = XRESI + XRESJ + XRESK
56136      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
56137 C...Normalize
56138               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
56139 C...Charge conjugate mode.
56140               LKNT          = LKNT+1
56141               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
56142               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
56143               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
56144               XLAM(LKNT)    = XLAM(LKNT-1)
56145 C...KINEMATICS CHECK
56146               IF (XLAM(LKNT).EQ.0D0) THEN
56147                 LKNT=LKNT-2
56148               ENDIF
56149             ENDIF
56150   130     CONTINUE
56151         ENDIF
56152       ENDIF
56153       RETURN
56154       END
56155  
56156 C*********************************************************************
56157  
56158 C...PYRVSB
56159 C...Auxiliary function to PYRVSF for calculating R-Violating
56160 C...sfermion widths. Though the decay products are most often treated
56161 C...as massless in the calculation, the kinematical boundary of phase
56162 C...space is tested using the true masses.
56163 C...MODE = 1: All decay products massive
56164 C...MODE = 2: Decay product 1 massless
56165 C...MODE = 3: Decay product 2 massless
56166 C...MODE = 4: All decay products  massless
56167  
56168       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
56169  
56170       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56171       IMPLICIT INTEGER (I-N)
56172       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56173       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56174       SAVE /PYDAT1/,/PYDAT2/
56175       DOUBLE PRECISION SM(3)
56176       INTEGER PYCOMP, KC(3)
56177       KC(1)=PYCOMP(KFIN)
56178       KC(2)=PYCOMP(ID1)
56179       KC(3)=PYCOMP(ID2)
56180       SM(1)=PMAS(KC(1),1)**2
56181       SM(2)=PMAS(KC(2),1)**2
56182       SM(3)=PMAS(KC(3),1)**2
56183 C...Kinematics check
56184       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
56185         PYRVSB=0D0
56186         RETURN
56187       ENDIF
56188 C...CM momenta squared
56189       IF (MODE.EQ.1) THEN
56190         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
56191      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
56192       ELSE IF (MODE.EQ.2) THEN
56193         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
56194       ELSE IF (MODE.EQ.3) THEN
56195         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
56196       ELSE
56197         P2CM=SM(1)/4.
56198       ENDIF
56199 C...Calculate Width
56200       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
56201       RETURN
56202       END
56203  
56204 C*********************************************************************
56205  
56206 C...PYRVGW
56207 C...Generalized Matrix Element for R-Violating 3-body widths.
56208 C...P. Z. Skands
56209       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
56210  
56211       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56212       IMPLICIT INTEGER (I-N)
56213       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
56214      &KEXCIT=4000000,KDIMEN=5000000)
56215       PARAMETER (EPS=1D-4)
56216       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56217       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56218      &     ,DCMASS,KFR(3)
56219       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
56220      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
56221       DOUBLE PRECISION XLIM(3,3)
56222       INTEGER KC(0:3), PYCOMP
56223       LOGICAL DCMASS, DCHECK(6)
56224       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
56225  
56226       XLAM   = 0D0
56227  
56228       KC(0)  = PYCOMP(KFIN)
56229       KC(1)  = PYCOMP(ID1)
56230       KC(2)  = PYCOMP(ID2)
56231       KC(3)  = PYCOMP(ID3)
56232       RMS(0) = PMAS(KC(0),1)
56233       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
56234       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
56235       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
56236 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
56237       XLIM(1,1)=(RMS(1)+RMS(2))**2
56238       XLIM(1,2)=(RMS(0)-RMS(3))**2
56239       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
56240       XLIM(2,1)=(RMS(2)+RMS(3))**2
56241       XLIM(2,2)=(RMS(0)-RMS(1))**2
56242       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
56243       XLIM(3,1)=(RMS(1)+RMS(3))**2
56244       XLIM(3,2)=(RMS(0)-RMS(2))**2
56245       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
56246 C...Check Phase Space
56247       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
56248         RETURN
56249       ENDIF
56250  
56251 C...INITIALIZE RESONANCE INFORMATION
56252       DO 110 JRES = 1,3
56253         DO 100 IMASS = 1,2
56254           IRES = 2*(JRES-1)+IMASS
56255           INTRES(IRES,1) = 0
56256           DCHECK(IRES)   =.FALSE.
56257 C...NO RIGHT-HANDED NEUTRINOS
56258           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
56259      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
56260      &         .KFR(JRES).EQ.0) GOTO 100
56261           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
56262           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
56263           INTRES(IRES,1) = IABS(KFR(JRES))
56264           INTRES(IRES,2) = IMASS
56265           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
56266           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
56267   100   CONTINUE
56268   110 CONTINUE
56269  
56270 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
56271  
56272 C...RESONANCE CONTRIBUTIONS
56273 C...(Only sum contributions where the resonance is off shell).
56274 C...Store whether diagram on/off in DCHECK.
56275 C...LOOP OVER MASS STATES
56276       DO 120 J=1,2
56277         IDR=J
56278         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56279         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
56280      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56281           DCHECK(IDR) =.TRUE.
56282           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
56283         ENDIF
56284  
56285         IDR=J+2
56286         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56287         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
56288      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56289           DCHECK(IDR) =.TRUE.
56290           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
56291         ENDIF
56292  
56293         IDR=J+4
56294         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
56295         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
56296      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
56297           DCHECK(IDR) =.TRUE.
56298           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
56299         ENDIF
56300   120 CONTINUE
56301 C... L-R INTERFERENCES
56302 C... (Only add contributions where both contributing diagrams
56303 C... are non-resonant).
56304       IDR=1
56305       IF (DCHECK(1).AND.DCHECK(2)) THEN
56306 C...Bug corrected 11/12 2001. Skands.
56307         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
56308      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
56309      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
56310       ENDIF
56311  
56312       IDR=3
56313       IF (DCHECK(3).AND.DCHECK(4)) THEN
56314         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
56315      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
56316      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
56317       ENDIF
56318  
56319       IDR=5
56320       IF (DCHECK(5).AND.DCHECK(6)) THEN
56321         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
56322      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
56323      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
56324       ENDIF
56325 C... TRUE INTERFERENCES
56326 C... (Only add contributions where both contributing diagrams
56327 C... are non-resonant).
56328       PREF=-2D0
56329       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
56330       DO 140 IKR1 = 1,2
56331         DO 130 IKR2 = 1,2
56332           IDR  = IKR1+2
56333           IDR2 = IKR2
56334           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56335             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
56336      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56337      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56338           ENDIF
56339  
56340           IDR  = IKR1+4
56341           IDR2 = IKR2
56342           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56343             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
56344      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56345      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56346           ENDIF
56347  
56348           IDR  = IKR1+4
56349           IDR2 = IKR2+2
56350           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
56351             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
56352      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
56353      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
56354           ENDIF
56355   130   CONTINUE
56356   140 CONTINUE
56357  
56358       RETURN
56359       END
56360  
56361 C*********************************************************************
56362  
56363 C...PYRVI1
56364 C...Function to integrate resonance contributions
56365  
56366       FUNCTION PYRVI1(ID1,ID2,ID3)
56367  
56368       IMPLICIT NONE
56369       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
56370       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56371       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56372       LOGICAL MFLAG,DCMASS
56373       EXTERNAL PYRVG1,PYGAUS
56374       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56375      &     ,DCMASS,KFR(3)
56376       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56377       SAVE/PYRVNV/,/PYRVPM/
56378 C...Initialize mass and width information
56379       PYRVI1 = 0D0
56380       RM(0)  = RMS(0)
56381       RM(1)  = RMS(ID1)
56382       RM(2)  = RMS(ID2)
56383       RM(3)  = RMS(ID3)
56384       RESM(1)= RES(IDR,1)
56385       RESW(1)= RES(IDR,2)
56386 C...A->B and B->A for antisparticles
56387       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56388       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56389 C...Integration boundaries and mass flag
56390       LO     = (RM(1)+RM(2))**2
56391       HI     = (RM(0)-RM(3))**2
56392       MFLAG  = DCMASS
56393       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
56394       RETURN
56395       END
56396  
56397 C*********************************************************************
56398  
56399 C...PYRVI2
56400 C...Function to integrate L-R interference contributions
56401  
56402       FUNCTION PYRVI2(ID1,ID2,ID3)
56403  
56404       IMPLICIT NONE
56405       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
56406       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56407       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56408       LOGICAL MFLAG,DCMASS
56409       EXTERNAL PYRVG2,PYGAUS
56410       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56411      &     ,DCMASS,KFR(3)
56412       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56413       SAVE/PYRVNV/,/PYRVPM/
56414 C...Initialize mass and width information
56415       PYRVI2 = 0D0
56416       RM(0)  = RMS(0)
56417       RM(1)  = RMS(ID1)
56418       RM(2)  = RMS(ID2)
56419       RM(3)  = RMS(ID3)
56420       RESM(1)= RES(IDR,1)
56421       RESW(1)= RES(IDR,2)
56422       RESM(2)= RES(IDR+1,1)
56423       RESW(2)= RES(IDR+1,2)
56424 C...A->B and B->A for antisparticles
56425       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56426       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56427       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
56428       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
56429 C...Boundaries and mass flag
56430       LO     = (RM(1)+RM(2))**2
56431       HI     = (RM(0)-RM(3))**2
56432       MFLAG  = DCMASS
56433       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
56434       RETURN
56435       END
56436  
56437 C*********************************************************************
56438  
56439 C...PYRVI3
56440 C...Function to integrate true interference contributions
56441  
56442       FUNCTION PYRVI3(ID1,ID2,ID3)
56443  
56444       IMPLICIT NONE
56445       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
56446       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
56447       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
56448       LOGICAL MFLAG,DCMASS
56449       EXTERNAL PYRVG3,PYGAUS
56450       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56451      &     ,DCMASS,KFR(3)
56452       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56453       SAVE/PYRVNV/,/PYRVPM/
56454 C...Initialize mass and width information
56455       PYRVI3 = 0D0
56456       RM(0)  = RMS(0)
56457       RM(1)  = RMS(ID1)
56458       RM(2)  = RMS(ID2)
56459       RM(3)  = RMS(ID3)
56460       RESM(1)= RES(IDR,1)
56461       RESW(1)= RES(IDR,2)
56462       RESM(2)= RES(IDR2,1)
56463       RESW(2)= RES(IDR2,2)
56464 C...A -> B and B -> A for antisparticles
56465       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56466       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
56467       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
56468       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
56469 C...Boundaries and mass flag
56470       LO     = (RM(1)+RM(2))**2
56471       HI     = (RM(0)-RM(3))**2
56472       MFLAG  = DCMASS
56473       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
56474       RETURN
56475       END
56476  
56477 C*********************************************************************
56478  
56479 C...PYRVG1
56480 C...Integrand for resonance contributions
56481  
56482       FUNCTION PYRVG1(X)
56483  
56484       IMPLICIT NONE
56485       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56486       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
56487       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
56488       LOGICAL MFLAG
56489       SAVE/PYRVPM/
56490       RVR    = PYRVR(X,RESM(1),RESW(1))
56491       C1     = 2D0*SQRT(MAX(0D0,X))
56492       IF (.NOT.MFLAG) THEN
56493         E2     = X/C1
56494         E3     = (RM(0)**2-X)/C1
56495         DELTAY = 4D0*E2*E3
56496         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
56497       ELSE
56498         E2     = (X-RM(1)**2+RM(2)**2)/C1
56499         E3     = (RM(0)**2-X-RM(3)**2)/C1
56500         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
56501         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
56502         DELTAY = 4D0*SR1*SR2
56503         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
56504         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
56505         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
56506       ENDIF
56507       RETURN
56508       END
56509  
56510 C*********************************************************************
56511  
56512 C...PYRVG2
56513 C...Integrand for L-R interference contributions
56514  
56515       FUNCTION PYRVG2(X)
56516  
56517       IMPLICIT NONE
56518       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56519       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
56520       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
56521       LOGICAL MFLAG
56522       SAVE/PYRVPM/
56523       C1     = 2D0*SQRT(MAX(0D0,X))
56524       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
56525       IF (.NOT.MFLAG) THEN
56526         E2     = X/C1
56527         E3     = (RM(0)**2-X)/C1
56528         DELTAY = 4D0*E2*E3
56529         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
56530       ELSE
56531         E2     = (X-RM(1)**2+RM(2)**2)/C1
56532         E3     = (RM(0)**2-X-RM(3)**2)/C1
56533         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
56534         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
56535         DELTAY = 4D0*SR1*SR2
56536         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
56537      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
56538      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
56539       ENDIF
56540       RETURN
56541       END
56542  
56543 C*********************************************************************
56544  
56545 C...PYRVG3
56546 C...Function to do Y integration over true interference contributions
56547  
56548       FUNCTION PYRVG3(X)
56549  
56550       IMPLICIT NONE
56551       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56552 C...Second Dalitz variable for PYRVG4
56553       COMMON/PYG2DX/X1
56554       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
56555       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
56556       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
56557       LOGICAL MFLAG
56558       EXTERNAL PYGAU2,PYRVG4
56559       SAVE/PYRVPM/,/PYG2DX/
56560       PYRVG3=0D0
56561       C1=2D0*SQRT(MAX(1D-9,X))
56562       X1=X
56563       IF (.NOT.MFLAG) THEN
56564         E2    = X/C1
56565         E3    = (RM(0)**2-X)/C1
56566         YMIN  = 0D0
56567         YMAX  = 4D0*E2*E3
56568       ELSE
56569         E2    = (X-RM(1)**2+RM(2)**2)/C1
56570         E3    = (RM(0)**2-X-RM(3)**2)/C1
56571         SQ1   = (E2+E3)**2
56572         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
56573         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
56574         YMIN  = SQ1-(SR1+SR2)**2
56575         YMAX  = SQ1-(SR1-SR2)**2
56576       ENDIF
56577       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
56578       RETURN
56579       END
56580  
56581 C*********************************************************************
56582  
56583 C...PYRVG4
56584 C...Integrand for true intereference contributions
56585  
56586       FUNCTION PYRVG4(Y)
56587  
56588       IMPLICIT NONE
56589       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
56590       COMMON/PYG2DX/X
56591       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
56592       LOGICAL MFLAG
56593       SAVE /PYRVPM/,/PYG2DX/
56594       PYRVG4=0D0
56595       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
56596       IF (.NOT.MFLAG) THEN
56597         PYRVG4 = RVS*B(1)*B(2)*X*Y
56598       ELSE
56599         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
56600      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
56601      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
56602      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
56603       ENDIF
56604       RETURN
56605       END
56606  
56607 C*********************************************************************
56608  
56609 C...PYRVR
56610 C...Breit-Wigner for resonance contributions
56611  
56612       FUNCTION PYRVR(Mab2,RM,RW)
56613  
56614       IMPLICIT NONE
56615       DOUBLE PRECISION Mab2,RM,RW,PYRVR
56616       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
56617       RETURN
56618       END
56619  
56620 C*********************************************************************
56621  
56622 C...PYRVS
56623 C...Interference function
56624  
56625       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
56626  
56627       IMPLICIT NONE
56628       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
56629       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
56630      &     +W1*W2*M1*M2)
56631       RETURN
56632       END
56633  
56634 C*********************************************************************
56635  
56636 C...PY1ENT
56637 C...Stores one parton/particle in commonblock PYJETS.
56638  
56639       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
56640  
56641 C...Double precision and integer declarations.
56642       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56643       IMPLICIT INTEGER(I-N)
56644       INTEGER PYK,PYCHGE,PYCOMP
56645 C...Commonblocks.
56646       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56647       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56648       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56649       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56650  
56651 C...Standard checks.
56652       MSTU(28)=0
56653       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56654       IPA=MAX(1,IABS(IP))
56655       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
56656      &'(PY1ENT:) writing outside PYJETS memory')
56657       KC=PYCOMP(KF)
56658       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
56659  
56660 C...Find mass. Reset K, P and V vectors.
56661       PM=0D0
56662       IF(MSTU(10).EQ.1) PM=P(IPA,5)
56663       IF(MSTU(10).GE.2) PM=PYMASS(KF)
56664       DO 100 J=1,5
56665         K(IPA,J)=0
56666         P(IPA,J)=0D0
56667         V(IPA,J)=0D0
56668   100 CONTINUE
56669  
56670 C...Store parton/particle in K and P vectors.
56671       K(IPA,1)=1
56672       IF(IP.LT.0) K(IPA,1)=2
56673       K(IPA,2)=KF
56674       P(IPA,5)=PM
56675       P(IPA,4)=MAX(PE,PM)
56676       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
56677       P(IPA,1)=PA*SIN(THE)*COS(PHI)
56678       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
56679       P(IPA,3)=PA*COS(THE)
56680  
56681 C...Set N. Optionally fragment/decay.
56682       N=IPA
56683       IF(IP.EQ.0) CALL PYEXEC
56684  
56685       RETURN
56686       END
56687  
56688 C*********************************************************************
56689  
56690 C...PY2ENT
56691 C...Stores two partons/particles in their CM frame,
56692 C...with the first along the +z axis.
56693  
56694       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
56695  
56696 C...Double precision and integer declarations.
56697       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56698       IMPLICIT INTEGER(I-N)
56699       INTEGER PYK,PYCHGE,PYCOMP
56700 C...Commonblocks.
56701       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56702       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56703       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56704       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56705  
56706 C...Standard checks.
56707       MSTU(28)=0
56708       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56709       IPA=MAX(1,IABS(IP))
56710       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
56711      &'(PY2ENT:) writing outside PYJETS memory')
56712       KC1=PYCOMP(KF1)
56713       KC2=PYCOMP(KF2)
56714       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
56715      &'(PY2ENT:) unknown flavour code')
56716  
56717 C...Find masses. Reset K, P and V vectors.
56718       PM1=0D0
56719       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56720       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56721       PM2=0D0
56722       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56723       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56724       DO 110 I=IPA,IPA+1
56725         DO 100 J=1,5
56726           K(I,J)=0
56727           P(I,J)=0D0
56728           V(I,J)=0D0
56729   100   CONTINUE
56730   110 CONTINUE
56731  
56732 C...Check flavours.
56733       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56734       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56735       IF(MSTU(19).EQ.1) THEN
56736         MSTU(19)=0
56737       ELSE
56738         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
56739      &  '(PY2ENT:) unphysical flavour combination')
56740       ENDIF
56741       K(IPA,2)=KF1
56742       K(IPA+1,2)=KF2
56743  
56744 C...Store partons/particles in K vectors for normal case.
56745       IF(IP.GE.0) THEN
56746         K(IPA,1)=1
56747         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
56748         K(IPA+1,1)=1
56749  
56750 C...Store partons in K vectors for parton shower evolution.
56751       ELSE
56752         K(IPA,1)=3
56753         K(IPA+1,1)=3
56754         K(IPA,4)=MSTU(5)*(IPA+1)
56755         K(IPA,5)=K(IPA,4)
56756         K(IPA+1,4)=MSTU(5)*IPA
56757         K(IPA+1,5)=K(IPA+1,4)
56758       ENDIF
56759  
56760 C...Check kinematics and store partons/particles in P vectors.
56761       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
56762      &'(PY2ENT:) energy smaller than sum of masses')
56763       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
56764      &(2D0*PECM)
56765       P(IPA,3)=PA
56766       P(IPA,4)=SQRT(PM1**2+PA**2)
56767       P(IPA,5)=PM1
56768       P(IPA+1,3)=-PA
56769       P(IPA+1,4)=SQRT(PM2**2+PA**2)
56770       P(IPA+1,5)=PM2
56771  
56772 C...Set N. Optionally fragment/decay.
56773       N=IPA+1
56774       IF(IP.EQ.0) CALL PYEXEC
56775  
56776       RETURN
56777       END
56778  
56779 C*********************************************************************
56780  
56781 C...PY3ENT
56782 C...Stores three partons or particles in their CM frame,
56783 C...with the first along the +z axis and the third in the (x,z)
56784 C...plane with x > 0.
56785  
56786       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
56787  
56788 C...Double precision and integer declarations.
56789       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56790       IMPLICIT INTEGER(I-N)
56791       INTEGER PYK,PYCHGE,PYCOMP
56792 C...Commonblocks.
56793       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56794       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56795       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56796       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56797  
56798 C...Standard checks.
56799       MSTU(28)=0
56800       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56801       IPA=MAX(1,IABS(IP))
56802       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
56803      &'(PY3ENT:) writing outside PYJETS memory')
56804       KC1=PYCOMP(KF1)
56805       KC2=PYCOMP(KF2)
56806       KC3=PYCOMP(KF3)
56807       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
56808      &'(PY3ENT:) unknown flavour code')
56809  
56810 C...Find masses. Reset K, P and V vectors.
56811       PM1=0D0
56812       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56813       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56814       PM2=0D0
56815       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56816       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56817       PM3=0D0
56818       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
56819       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
56820       DO 110 I=IPA,IPA+2
56821         DO 100 J=1,5
56822           K(I,J)=0
56823           P(I,J)=0D0
56824           V(I,J)=0D0
56825   100   CONTINUE
56826   110 CONTINUE
56827  
56828 C...Check flavours.
56829       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56830       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56831       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
56832       IF(MSTU(19).EQ.1) THEN
56833         MSTU(19)=0
56834       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
56835       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
56836      &  KQ1+KQ3.EQ.4)) THEN
56837       ELSE
56838         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
56839       ENDIF
56840       K(IPA,2)=KF1
56841       K(IPA+1,2)=KF2
56842       K(IPA+2,2)=KF3
56843  
56844 C...Store partons/particles in K vectors for normal case.
56845       IF(IP.GE.0) THEN
56846         K(IPA,1)=1
56847         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
56848         K(IPA+1,1)=1
56849         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
56850         K(IPA+2,1)=1
56851  
56852 C...Store partons in K vectors for parton shower evolution.
56853       ELSE
56854         K(IPA,1)=3
56855         K(IPA+1,1)=3
56856         K(IPA+2,1)=3
56857         KCS=4
56858         IF(KQ1.EQ.-1) KCS=5
56859         K(IPA,KCS)=MSTU(5)*(IPA+1)
56860         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
56861         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
56862         K(IPA+1,9-KCS)=MSTU(5)*IPA
56863         K(IPA+2,KCS)=MSTU(5)*IPA
56864         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
56865       ENDIF
56866  
56867 C...Check kinematics.
56868       MKERR=0
56869       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
56870      &0.5D0*X3*PECM.LE.PM3) MKERR=1
56871       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
56872       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
56873       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
56874       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
56875       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
56876       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
56877       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
56878       IF(MKERR.NE.0) CALL PYERRM(13,
56879      &'(PY3ENT:) unphysical kinematical variable setup')
56880  
56881 C...Store partons/particles in P vectors.
56882       P(IPA,3)=PA1
56883       P(IPA,4)=SQRT(PA1**2+PM1**2)
56884       P(IPA,5)=PM1
56885       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
56886       P(IPA+2,3)=PA3*CTHE3
56887       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
56888       P(IPA+2,5)=PM3
56889       P(IPA+1,1)=-P(IPA+2,1)
56890       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
56891       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
56892       P(IPA+1,5)=PM2
56893  
56894 C...Set N. Optionally fragment/decay.
56895       N=IPA+2
56896       IF(IP.EQ.0) CALL PYEXEC
56897  
56898       RETURN
56899       END
56900  
56901 C*********************************************************************
56902  
56903 C...PY4ENT
56904 C...Stores four partons or particles in their CM frame, with
56905 C...the first along the +z axis, the last in the xz plane with x > 0
56906 C...and the second having y < 0 and y > 0 with equal probability.
56907  
56908       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
56909  
56910 C...Double precision and integer declarations.
56911       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56912       IMPLICIT INTEGER(I-N)
56913       INTEGER PYK,PYCHGE,PYCOMP
56914 C...Commonblocks.
56915       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
56916       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56917       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56918       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
56919  
56920 C...Standard checks.
56921       MSTU(28)=0
56922       IF(MSTU(12).NE.12345) CALL PYLIST(0)
56923       IPA=MAX(1,IABS(IP))
56924       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
56925      &'(PY4ENT:) writing outside PYJETS momory')
56926       KC1=PYCOMP(KF1)
56927       KC2=PYCOMP(KF2)
56928       KC3=PYCOMP(KF3)
56929       KC4=PYCOMP(KF4)
56930       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
56931      &'(PY4ENT:) unknown flavour code')
56932  
56933 C...Find masses. Reset K, P and V vectors.
56934       PM1=0D0
56935       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
56936       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
56937       PM2=0D0
56938       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
56939       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
56940       PM3=0D0
56941       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
56942       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
56943       PM4=0D0
56944       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
56945       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
56946       DO 110 I=IPA,IPA+3
56947         DO 100 J=1,5
56948           K(I,J)=0
56949           P(I,J)=0D0
56950           V(I,J)=0D0
56951   100   CONTINUE
56952   110 CONTINUE
56953  
56954 C...Check flavours.
56955       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
56956       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
56957       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
56958       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
56959       IF(MSTU(19).EQ.1) THEN
56960         MSTU(19)=0
56961       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
56962       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
56963      &  KQ1+KQ4.EQ.4)) THEN
56964       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
56965      &  THEN
56966       ELSE
56967         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
56968       ENDIF
56969       K(IPA,2)=KF1
56970       K(IPA+1,2)=KF2
56971       K(IPA+2,2)=KF3
56972       K(IPA+3,2)=KF4
56973  
56974 C...Store partons/particles in K vectors for normal case.
56975       IF(IP.GE.0) THEN
56976         K(IPA,1)=1
56977         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
56978         K(IPA+1,1)=1
56979         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
56980      &  K(IPA+1,1)=2
56981         K(IPA+2,1)=1
56982         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
56983         K(IPA+3,1)=1
56984  
56985 C...Store partons for parton shower evolution from q-g-g-qbar or
56986 C...g-g-g-g event.
56987       ELSEIF(KQ1+KQ2.NE.0) THEN
56988         K(IPA,1)=3
56989         K(IPA+1,1)=3
56990         K(IPA+2,1)=3
56991         K(IPA+3,1)=3
56992         KCS=4
56993         IF(KQ1.EQ.-1) KCS=5
56994         K(IPA,KCS)=MSTU(5)*(IPA+1)
56995         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
56996         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
56997         K(IPA+1,9-KCS)=MSTU(5)*IPA
56998         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
56999         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
57000         K(IPA+3,KCS)=MSTU(5)*IPA
57001         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
57002  
57003 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
57004       ELSE
57005         K(IPA,1)=3
57006         K(IPA+1,1)=3
57007         K(IPA+2,1)=3
57008         K(IPA+3,1)=3
57009         K(IPA,4)=MSTU(5)*(IPA+1)
57010         K(IPA,5)=K(IPA,4)
57011         K(IPA+1,4)=MSTU(5)*IPA
57012         K(IPA+1,5)=K(IPA+1,4)
57013         K(IPA+2,4)=MSTU(5)*(IPA+3)
57014         K(IPA+2,5)=K(IPA+2,4)
57015         K(IPA+3,4)=MSTU(5)*(IPA+2)
57016         K(IPA+3,5)=K(IPA+3,4)
57017       ENDIF
57018  
57019 C...Check kinematics.
57020       MKERR=0
57021       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
57022      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
57023      &MKERR=1
57024       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
57025       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
57026       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
57027       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
57028       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
57029       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
57030       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
57031       STHE4=SQRT(1D0-CTHE4**2)
57032       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
57033       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
57034       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
57035       STHE2=SQRT(1D0-CTHE2**2)
57036       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
57037      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
57038       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
57039       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
57040       IF(MKERR.EQ.1) CALL PYERRM(13,
57041      &'(PY4ENT:) unphysical kinematical variable setup')
57042  
57043 C...Store partons/particles in P vectors.
57044       P(IPA,3)=PA1
57045       P(IPA,4)=SQRT(PA1**2+PM1**2)
57046       P(IPA,5)=PM1
57047       P(IPA+3,1)=PA4*STHE4
57048       P(IPA+3,3)=PA4*CTHE4
57049       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
57050       P(IPA+3,5)=PM4
57051       P(IPA+1,1)=PA2*STHE2*CPHI2
57052       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
57053       P(IPA+1,3)=PA2*CTHE2
57054       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
57055       P(IPA+1,5)=PM2
57056       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
57057       P(IPA+2,2)=-P(IPA+1,2)
57058       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
57059       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
57060       P(IPA+2,5)=PM3
57061  
57062 C...Set N. Optionally fragment/decay.
57063       N=IPA+3
57064       IF(IP.EQ.0) CALL PYEXEC
57065  
57066       RETURN
57067       END
57068  
57069 C*********************************************************************
57070  
57071 C...PY2FRM
57072 C...An interface from a two-fermion generator to include
57073 C...parton showers and hadronization.
57074  
57075       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
57076  
57077 C...Double precision and integer declarations.
57078       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57079       IMPLICIT INTEGER(I-N)
57080       INTEGER PYK,PYCHGE,PYCOMP
57081 C...Commonblocks.
57082       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57083       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57084       SAVE /PYJETS/,/PYDAT1/
57085 C...Local arrays.
57086       DIMENSION IJOIN(2),INTAU(2)
57087  
57088 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57089       IF(ICOM.EQ.0) THEN
57090         MSTU(28)=0
57091         CALL PYHEPC(2)
57092       ENDIF
57093  
57094 C...Loop through entries and pick up all final fermions/antifermions.
57095       I1=0
57096       I2=0
57097       DO 100 I=1,N
57098       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57099       KFA=IABS(K(I,2))
57100       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57101         IF(K(I,2).GT.0) THEN
57102           IF(I1.EQ.0) THEN
57103             I1=I
57104           ELSE
57105             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
57106           ENDIF
57107         ELSE
57108           IF(I2.EQ.0) THEN
57109             I2=I
57110           ELSE
57111             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
57112           ENDIF
57113         ENDIF
57114       ENDIF
57115   100 CONTINUE
57116  
57117 C...Check that event is arranged according to conventions.
57118       IF(I1.EQ.0.OR.I2.EQ.0) THEN
57119         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
57120       ENDIF
57121       IF(I2.LT.I1) THEN
57122         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
57123       ENDIF
57124  
57125 C...Check whether fermion pair is quarks or leptons.
57126       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57127         IQL12=1
57128       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57129         IQL12=2
57130       ELSE
57131         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
57132       ENDIF
57133  
57134 C...Decide whether to allow or not photon radiation in showers.
57135       MSTJ(41)=2
57136       IF(IRAD.EQ.0) MSTJ(41)=1
57137  
57138 C...Do colour joining and parton showers.
57139       IP1=I1
57140       IP2=I2
57141       IF(IQL12.EQ.1) THEN
57142         IJOIN(1)=IP1
57143         IJOIN(2)=IP2
57144         CALL PYJOIN(2,IJOIN)
57145       ENDIF
57146       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57147         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57148      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57149       if(parj(200).ne.1.) CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57150       if(parj(200).eq.1.) CALL PYSHOWQ(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57151       ENDIF
57152  
57153 C...Do fragmentation and decays. Possibly except tau decay.
57154       IF(ITAU.EQ.0) THEN
57155         NTAU=0
57156         DO 110 I=1,N
57157         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57158           NTAU=NTAU+1
57159           INTAU(NTAU)=I
57160           K(I,1)=11
57161         ENDIF
57162   110   CONTINUE
57163       ENDIF
57164       CALL PYEXEC
57165       IF(ITAU.EQ.0) THEN
57166         DO 120 I=1,NTAU
57167         K(INTAU(I),1)=1
57168   120   CONTINUE
57169       ENDIF
57170  
57171 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57172       IF(ICOM.EQ.0) THEN
57173         MSTU(28)=0
57174         CALL PYHEPC(1)
57175       ENDIF
57176  
57177       END
57178  
57179 C*********************************************************************
57180  
57181 C...PY4FRM
57182 C...An interface from a four-fermion generator to include
57183 C...parton showers and hadronization.
57184  
57185       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
57186  
57187 C...Double precision and integer declarations.
57188       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57189       IMPLICIT INTEGER(I-N)
57190       INTEGER PYK,PYCHGE,PYCOMP
57191 C...Commonblocks.
57192       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57193       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57194       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
57195       COMMON/PYINT1/MINT(400),VINT(400)
57196       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
57197 C...Local arrays.
57198       DIMENSION IJOIN(2),INTAU(4)
57199  
57200 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57201       IF(ICOM.EQ.0) THEN
57202         MSTU(28)=0
57203         CALL PYHEPC(2)
57204       ENDIF
57205  
57206 C...Loop through entries and pick up all final fermions/antifermions.
57207       I1=0
57208       I2=0
57209       I3=0
57210       I4=0
57211       DO 100 I=1,N
57212       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57213       KFA=IABS(K(I,2))
57214       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57215         IF(K(I,2).GT.0) THEN
57216           IF(I1.EQ.0) THEN
57217             I1=I
57218           ELSEIF(I3.EQ.0) THEN
57219             I3=I
57220           ELSE
57221             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
57222           ENDIF
57223         ELSE
57224           IF(I2.EQ.0) THEN
57225             I2=I
57226           ELSEIF(I4.EQ.0) THEN
57227             I4=I
57228           ELSE
57229             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
57230           ENDIF
57231         ENDIF
57232       ENDIF
57233   100 CONTINUE
57234  
57235 C...Check that event is arranged according to conventions.
57236       IF(I3.EQ.0.OR.I4.EQ.0) THEN
57237         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
57238       ENDIF
57239       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
57240         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
57241       ENDIF
57242  
57243 C...Check which fermion pairs are quarks and which leptons.
57244       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57245         IQL12=1
57246       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57247         IQL12=2
57248       ELSE
57249         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
57250       ENDIF
57251       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57252         IQL34=1
57253       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
57254         IQL34=2
57255       ELSE
57256         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
57257       ENDIF
57258  
57259 C...Decide whether to allow or not photon radiation in showers.
57260       MSTJ(41)=2
57261       IF(IRAD.EQ.0) MSTJ(41)=1
57262  
57263 C...Decide on dipole pairing.
57264       IP1=I1
57265       IP2=I2
57266       IP3=I3
57267       IP4=I4
57268       IF(IQL12.EQ.IQL34) THEN
57269         R1SQ=A1SQ
57270         R2SQ=A2SQ
57271         DELTA=ATOTSQ-A1SQ-A2SQ
57272         IF(ISTRAT.EQ.1) THEN
57273           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
57274           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
57275         ELSEIF(ISTRAT.EQ.2) THEN
57276           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
57277           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
57278         ENDIF
57279         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
57280           IP2=I4
57281           IP4=I2
57282         ENDIF
57283       ENDIF
57284  
57285 C...If colour reconnection then bookkeep W+W- or Z0Z0
57286 C...and copy q qbar q qbar consecutively.
57287       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
57288         K(N+1,1)=11
57289         K(N+1,3)=IP1
57290         K(N+1,4)=N+3
57291         K(N+1,5)=N+4
57292         K(N+2,1)=11
57293         K(N+2,3)=IP3
57294         K(N+2,4)=N+5
57295         K(N+2,5)=N+6
57296         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
57297           K(N+1,2)=23
57298           K(N+2,2)=23
57299           MINT(1)=22
57300         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
57301           K(N+1,2)=24
57302           K(N+2,2)=-24
57303           MINT(1)=25
57304         ELSE
57305           K(N+1,2)=-24
57306           K(N+2,2)=24
57307           MINT(1)=25
57308         ENDIF
57309         DO 110 J=1,5
57310           K(N+3,J)=K(IP1,J)
57311           K(N+4,J)=K(IP2,J)
57312           K(N+5,J)=K(IP3,J)
57313           K(N+6,J)=K(IP4,J)
57314           P(N+1,J)=P(IP1,J)+P(IP2,J)
57315           P(N+2,J)=P(IP3,J)+P(IP4,J)
57316           P(N+3,J)=P(IP1,J)
57317           P(N+4,J)=P(IP2,J)
57318           P(N+5,J)=P(IP3,J)
57319           P(N+6,J)=P(IP4,J)
57320           V(N+1,J)=V(IP1,J)
57321           V(N+2,J)=V(IP3,J)
57322           V(N+3,J)=V(IP1,J)
57323           V(N+4,J)=V(IP2,J)
57324           V(N+5,J)=V(IP3,J)
57325           V(N+6,J)=V(IP4,J)
57326   110   CONTINUE
57327         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
57328      &  P(N+1,3)**2))
57329         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
57330      &  P(N+2,3)**2))
57331         K(N+3,3)=N+1
57332         K(N+4,3)=N+1
57333         K(N+5,3)=N+2
57334         K(N+6,3)=N+2
57335 C...Remove original q qbar q qbar and update counters.
57336         K(IP1,1)=K(IP1,1)+10
57337         K(IP2,1)=K(IP2,1)+10
57338         K(IP3,1)=K(IP3,1)+10
57339         K(IP4,1)=K(IP4,1)+10
57340         IW1=N+1
57341         IW2=N+2
57342         NSD1=N+2
57343         IP1=N+3
57344         IP2=N+4
57345         IP3=N+5
57346         IP4=N+6
57347         N=N+6
57348       ENDIF
57349  
57350 C...Do colour joinings and parton showers.
57351       IF(IQL12.EQ.1) THEN
57352         IJOIN(1)=IP1
57353         IJOIN(2)=IP2
57354         CALL PYJOIN(2,IJOIN)
57355       ENDIF
57356       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57357         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57358      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57359         if(parj(200).ne.1.) CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57360         if(parj(200).eq.1.) CALL PYSHOWQ(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57361       ENDIF
57362       NAFT1=N
57363       IF(IQL34.EQ.1) THEN
57364         IJOIN(1)=IP3
57365         IJOIN(2)=IP4
57366         CALL PYJOIN(2,IJOIN)
57367       ENDIF
57368       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
57369         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
57370      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
57371       if(parj(200).ne.1.) CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57372       if(parj(200).eq.1.) CALL PYSHOWQ(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57373       ENDIF
57374  
57375 C...Optionally do colour reconnection.
57376       MINT(32)=0
57377       MSTI(32)=0
57378       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
57379         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
57380         MSTI(32)=MINT(32)
57381       ENDIF
57382  
57383 C...Do fragmentation and decays. Possibly except tau decay.
57384       IF(ITAU.EQ.0) THEN
57385         NTAU=0
57386         DO 120 I=1,N
57387         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57388           NTAU=NTAU+1
57389           INTAU(NTAU)=I
57390           K(I,1)=11
57391         ENDIF
57392   120   CONTINUE
57393       ENDIF
57394       CALL PYEXEC
57395       IF(ITAU.EQ.0) THEN
57396         DO 130 I=1,NTAU
57397         K(INTAU(I),1)=1
57398   130   CONTINUE
57399       ENDIF
57400  
57401 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57402       IF(ICOM.EQ.0) THEN
57403         MSTU(28)=0
57404         CALL PYHEPC(1)
57405       ENDIF
57406  
57407       END
57408  
57409 C*********************************************************************
57410  
57411 C...PY6FRM
57412 C...An interface from a six-fermion generator to include
57413 C...parton showers and hadronization.
57414  
57415       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
57416  
57417 C...Double precision and integer declarations.
57418       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57419       IMPLICIT INTEGER(I-N)
57420       INTEGER PYK,PYCHGE,PYCOMP
57421 C...Commonblocks.
57422       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57423       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57424       SAVE /PYJETS/,/PYDAT1/
57425 C...Local arrays.
57426       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
57427  
57428 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57429       IF(ICOM.EQ.0) THEN
57430         MSTU(28)=0
57431         CALL PYHEPC(2)
57432       ENDIF
57433  
57434 C...Loop through entries and pick up all final fermions/antifermions.
57435       I1=0
57436       I2=0
57437       I3=0
57438       I4=0
57439       I5=0
57440       I6=0
57441       DO 100 I=1,N
57442       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57443       KFA=IABS(K(I,2))
57444       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
57445         IF(K(I,2).GT.0) THEN
57446           IF(I1.EQ.0) THEN
57447             I1=I
57448           ELSEIF(I3.EQ.0) THEN
57449             I3=I
57450           ELSEIF(I5.EQ.0) THEN
57451             I5=I
57452           ELSE
57453             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
57454           ENDIF
57455         ELSE
57456           IF(I2.EQ.0) THEN
57457             I2=I
57458           ELSEIF(I4.EQ.0) THEN
57459             I4=I
57460           ELSEIF(I6.EQ.0) THEN
57461             I6=I
57462           ELSE
57463             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
57464           ENDIF
57465         ENDIF
57466       ENDIF
57467   100 CONTINUE
57468  
57469 C...Check that event is arranged according to conventions.
57470       IF(I5.EQ.0.OR.I6.EQ.0) THEN
57471         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
57472       ENDIF
57473       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
57474         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
57475       ENDIF
57476  
57477 C...Check which fermion pairs are quarks and which leptons.
57478       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
57479         IQL12=1
57480       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
57481         IQL12=2
57482       ELSE
57483         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
57484       ENDIF
57485       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57486         IQL34=1
57487       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
57488         IQL34=2
57489       ELSE
57490         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
57491       ENDIF
57492       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
57493         IQL56=1
57494       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
57495         IQL56=2
57496       ELSE
57497         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
57498       ENDIF
57499  
57500 C...Decide whether to allow or not photon radiation in showers.
57501       MSTJ(41)=2
57502       IF(IRAD.EQ.0) MSTJ(41)=1
57503  
57504 C...Allow dipole pairings only among leptons and quarks separately.
57505       P12D=P12
57506       P13D=0D0
57507       IF(IQL34.EQ.IQL56) P13D=P13
57508       P21D=0D0
57509       IF(IQL12.EQ.IQL34) P21D=P21
57510       P23D=0D0
57511       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
57512       P31D=0D0
57513       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
57514       P32D=0D0
57515       IF(IQL12.EQ.IQL56) P32D=P32
57516  
57517 C...Decide whether t+tbar.
57518       ITOP=0
57519       IF(PYR(0).LT.PTOP) THEN
57520         ITOP=1
57521  
57522 C...If t+tbar: reconstruct t's.
57523         IT=N+1
57524         ITB=N+2
57525         DO 110 J=1,5
57526           K(IT,J)=0
57527           K(ITB,J)=0
57528           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
57529           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
57530           V(IT,J)=0D0
57531           V(ITB,J)=0D0
57532   110   CONTINUE
57533         K(IT,1)=1
57534         K(ITB,1)=1
57535         K(IT,2)=6
57536         K(ITB,2)=-6
57537         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
57538      &  P(IT,3)**2))
57539         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
57540      &  P(ITB,3)**2))
57541         N=N+2
57542  
57543 C...If t+tbar: colour join t's and let them shower.
57544         IJOIN(1)=IT
57545         IJOIN(2)=ITB
57546         CALL PYJOIN(2,IJOIN)
57547         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
57548      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
57549         if(parj(200).ne.1.) CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
57550         if(parj(200).eq.1.) CALL PYSHOWQ(IT,ITB,SQRT(MAX(0D0,PMTTS))) 
57551 C...If t+tbar: pick up the t's after shower.
57552         ITNEW=IT
57553         ITBNEW=ITB
57554         DO 120 I=ITB+1,N
57555           IF(K(I,2).EQ.6) ITNEW=I
57556           IF(K(I,2).EQ.-6) ITBNEW=I
57557   120   CONTINUE
57558  
57559 C...If t+tbar: loop over two top systems.
57560         DO 200 IT1=1,2
57561           IF(IT1.EQ.1) THEN
57562             ITO=IT
57563             ITN=ITNEW
57564             IBO=I1
57565             IW1=I3
57566             IW2=I4
57567           ELSE
57568             ITO=ITB
57569             ITN=ITBNEW
57570             IBO=I2
57571             IW1=I5
57572             IW2=I6
57573           ENDIF
57574           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
57575      &    '(PY6FRM:) not b in t decay')
57576  
57577 C...If t+tbar: find boost from original to new top frame.
57578           DO 130 J=1,3
57579             BETAO(J)=P(ITO,J)/P(ITO,4)
57580             BETAN(J)=P(ITN,J)/P(ITN,4)
57581   130     CONTINUE
57582  
57583 C...If t+tbar: boost copy of b by t shower and connect it in colour.
57584           N=N+1
57585           IB=N
57586           K(IB,1)=3
57587           K(IB,2)=K(IBO,2)
57588           K(IB,3)=ITN
57589           DO 140 J=1,5
57590             P(IB,J)=P(IBO,J)
57591             V(IB,J)=0D0
57592   140     CONTINUE
57593           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57594           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57595           K(IB,4)=MSTU(5)*ITN
57596           K(IB,5)=MSTU(5)*ITN
57597           K(ITN,4)=K(ITN,4)+IB
57598           K(ITN,5)=K(ITN,5)+IB
57599           K(ITN,1)=K(ITN,1)+10
57600           K(IBO,1)=K(IBO,1)+10
57601  
57602 C...If t+tbar: construct W recoiling against b.
57603           N=N+1
57604           IW=N
57605           DO 150 J=1,5
57606             K(IW,J)=0
57607             V(IW,J)=0D0
57608   150     CONTINUE
57609           K(IW,1)=1
57610           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
57611           IF(IABS(KCHW).EQ.3) THEN
57612             K(IW,2)=ISIGN(24,KCHW)
57613           ELSE
57614             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
57615           ENDIF
57616           K(IW,3)=IW1
57617  
57618 C...If t+tbar: construct W momentum, including boost by t shower.
57619           DO 160 J=1,4
57620             P(IW,J)=P(IW1,J)+P(IW2,J)
57621   160     CONTINUE
57622           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
57623      &    P(IW,3)**2))
57624           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57625           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57626  
57627 C...If t+tbar: boost b and W to top rest frame.
57628           DO 170 J=1,3
57629             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
57630   170     CONTINUE
57631           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57632           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57633  
57634 C...If t+tbar: let b shower and pick up modified W.
57635           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
57636      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
57637        if(parj(200).ne.1.) CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
57638        if(parj(200).eq.1.) CALL PYSHOWQ(IB,IW,SQRT(MAX(0D0,PMTS)))
57639           DO 180 I=IW,N
57640             IF(IABS(K(I,2)).EQ.24) IWM=I
57641   180     CONTINUE
57642  
57643 C...If t+tbar: take copy of W decay products.
57644           DO 190 J=1,5
57645             K(N+1,J)=K(IW1,J)
57646             P(N+1,J)=P(IW1,J)
57647             V(N+1,J)=V(IW1,J)
57648             K(N+2,J)=K(IW2,J)
57649             P(N+2,J)=P(IW2,J)
57650             V(N+2,J)=V(IW2,J)
57651   190     CONTINUE
57652           K(IW1,1)=K(IW1,1)+10
57653           K(IW2,1)=K(IW2,1)+10
57654           K(IWM,1)=K(IWM,1)+10
57655           K(IWM,4)=N+1
57656           K(IWM,5)=N+2
57657           K(N+1,3)=IWM
57658           K(N+2,3)=IWM
57659           IF(IT1.EQ.1) THEN
57660             I3=N+1
57661             I4=N+2
57662           ELSE
57663             I5=N+1
57664             I6=N+2
57665           ENDIF
57666           N=N+2
57667  
57668 C...If t+tbar: boost W decay products, first by effects of t shower,
57669 C...then by those of b shower. b and its shower simple boost back.
57670           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
57671           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
57672           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57673           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
57674      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
57675           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
57676      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
57677           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
57678           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
57679   200   CONTINUE
57680       ENDIF
57681  
57682 C...Decide on dipole pairing.
57683       IP1=I1
57684       IP3=I3
57685       IP5=I5
57686       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
57687       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
57688         IP2=I2
57689         IP4=I4
57690         IP6=I6
57691       ELSEIF(PRN.LT.P12D+P13D) THEN
57692         IP2=I2
57693         IP4=I6
57694         IP6=I4
57695       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
57696         IP2=I4
57697         IP4=I2
57698         IP6=I6
57699       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
57700         IP2=I4
57701         IP4=I6
57702         IP6=I2
57703       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
57704         IP2=I6
57705         IP4=I2
57706         IP6=I4
57707       ELSE
57708         IP2=I6
57709         IP4=I4
57710         IP6=I2
57711       ENDIF
57712  
57713 C...Do colour joinings and parton showers
57714 C...(except ones already made for t+tbar).
57715       IF(ITOP.EQ.0) THEN
57716         IF(IQL12.EQ.1) THEN
57717           IJOIN(1)=IP1
57718           IJOIN(2)=IP2
57719           CALL PYJOIN(2,IJOIN)
57720         ENDIF
57721         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
57722           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
57723      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
57724         if(parj(200).ne.1.) CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57725         if(parj(200).eq.1.) CALL PYSHOWQ(IP1,IP2,SQRT(MAX(0D0,PM12S)))
57726         ENDIF
57727       ENDIF
57728       IF(IQL34.EQ.1) THEN
57729         IJOIN(1)=IP3
57730         IJOIN(2)=IP4
57731         CALL PYJOIN(2,IJOIN)
57732       ENDIF
57733       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
57734         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
57735      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
57736       if(parj(200).ne.1.) CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57737       if(parj(200).eq.1.) CALL PYSHOWQ(IP3,IP4,SQRT(MAX(0D0,PM34S)))
57738       ENDIF
57739       IF(IQL56.EQ.1) THEN
57740         IJOIN(1)=IP5
57741         IJOIN(2)=IP6
57742         CALL PYJOIN(2,IJOIN)
57743       ENDIF
57744       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
57745         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
57746      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
57747       if(parj(200).ne.1.) CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
57748       if(parj(200).eq.1.) CALL PYSHOWQ(IP5,IP6,SQRT(MAX(0D0,PM56S)))
57749       ENDIF
57750  
57751 C...Do fragmentation and decays. Possibly except tau decay.
57752       IF(ITAU.EQ.0) THEN
57753         NTAU=0
57754         DO 210 I=1,N
57755         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
57756           NTAU=NTAU+1
57757           INTAU(NTAU)=I
57758           K(I,1)=11
57759         ENDIF
57760   210   CONTINUE
57761       ENDIF
57762       CALL PYEXEC
57763       IF(ITAU.EQ.0) THEN
57764         DO 220 I=1,NTAU
57765         K(INTAU(I),1)=1
57766   220   CONTINUE
57767       ENDIF
57768  
57769 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57770       IF(ICOM.EQ.0) THEN
57771         MSTU(28)=0
57772         CALL PYHEPC(1)
57773       ENDIF
57774  
57775       END
57776  
57777 C*********************************************************************
57778  
57779 C...PY4JET
57780 C...An interface from a four-parton generator to include
57781 C...parton showers and hadronization.
57782  
57783       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
57784  
57785 C...Double precision and integer declarations.
57786       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57787       IMPLICIT INTEGER(I-N)
57788       INTEGER PYK,PYCHGE,PYCOMP
57789 C...Commonblocks.
57790       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
57791       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57792       SAVE /PYJETS/,/PYDAT1/
57793 C...Local arrays.
57794       DIMENSION IJOIN(2),PTOT(4),BETA(3)
57795  
57796 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
57797       IF(ICOM.EQ.0) THEN
57798         MSTU(28)=0
57799         CALL PYHEPC(2)
57800       ENDIF
57801  
57802 C...Loop through entries and pick up all final partons.
57803       I1=0
57804       I2=0
57805       I3=0
57806       I4=0
57807       DO 100 I=1,N
57808       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
57809       KFA=IABS(K(I,2))
57810       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
57811         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
57812           IF(I1.EQ.0) THEN
57813             I1=I
57814           ELSEIF(I3.EQ.0) THEN
57815             I3=I
57816           ELSE
57817             CALL PYERRM(16,'(PY4JET:) more than two quarks')
57818           ENDIF
57819         ELSEIF(K(I,2).LT.0) THEN
57820           IF(I2.EQ.0) THEN
57821             I2=I
57822           ELSEIF(I4.EQ.0) THEN
57823             I4=I
57824           ELSE
57825             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
57826           ENDIF
57827         ELSE
57828           IF(I3.EQ.0) THEN
57829             I3=I
57830           ELSEIF(I4.EQ.0) THEN
57831             I4=I
57832           ELSE
57833             CALL PYERRM(16,'(PY4JET:) more than two gluons')
57834           ENDIF
57835         ENDIF
57836       ENDIF
57837   100 CONTINUE
57838  
57839 C...Check that event is arranged according to conventions.
57840       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
57841         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
57842       ENDIF
57843       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
57844         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
57845       ENDIF
57846  
57847 C...Check whether second pair are quarks or gluons.
57848       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
57849         IQG34=1
57850       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
57851         IQG34=2
57852       ELSE
57853         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
57854       ENDIF
57855  
57856 C...Boost partons to their cm frame.
57857       DO 110 J=1,4
57858         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
57859   110 CONTINUE
57860       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
57861       DO 120 J=1,3
57862         BETA(J)=PTOT(J)/PTOT(4)
57863   120 CONTINUE
57864       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57865       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57866       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57867       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
57868       NSAV=N
57869  
57870 C...Decide and set up shower history for q qbar q' qbar' events.
57871       IF(IQG34.EQ.1) THEN
57872         W1=PY4JTW(0,I1,I3,I4)
57873         W2=PY4JTW(0,I2,I3,I4)
57874         IF(W1.GT.PYR(0)*(W1+W2)) THEN
57875           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
57876         ELSE
57877           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
57878         ENDIF
57879  
57880 C...Decide and set up shower history for q qbar g g events.
57881       ELSE
57882         W1=PY4JTW(I1,I3,I2,I4)
57883         W2=PY4JTW(I1,I4,I2,I3)
57884         W3=PY4JTW(0,I3,I1,I4)
57885         W4=PY4JTW(0,I4,I1,I3)
57886         W5=PY4JTW(0,I3,I2,I4)
57887         W6=PY4JTW(0,I4,I2,I3)
57888         W7=PY4JTW(0,I1,I3,I4)
57889         W8=PY4JTW(0,I2,I3,I4)
57890         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
57891         IF(W1.GT.WR) THEN
57892           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
57893         ELSEIF(W1+W2.GT.WR) THEN
57894           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
57895         ELSEIF(W1+W2+W3.GT.WR) THEN
57896           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
57897         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
57898           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
57899         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
57900           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
57901         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
57902           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
57903         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
57904           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
57905         ELSE
57906           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
57907         ENDIF
57908       ENDIF
57909  
57910 C...Boost back original partons and mark them as deleted.
57911       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
57912       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
57913       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
57914       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
57915       K(I1,1)=K(I1,1)+10
57916       K(I2,1)=K(I2,1)+10
57917       K(I3,1)=K(I3,1)+10
57918       K(I4,1)=K(I4,1)+10
57919  
57920 C...Rotate shower initiating partons to be along z axis.
57921       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
57922       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
57923       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
57924       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
57925  
57926 C...Set up copy of shower initiating partons as on mass shell.
57927       DO 140 I=N+1,N+2
57928         DO 130 J=1,5
57929           K(I,J)=0
57930           P(I,J)=0D0
57931           V(I,J)=V(I1,J)
57932   130   CONTINUE
57933         K(I,1)=1
57934         K(I,2)=K(I-6,2)
57935   140 CONTINUE
57936       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
57937         K(N+1,3)=I1
57938         P(N+1,5)=P(I1,5)
57939         K(N+2,3)=I2
57940         P(N+2,5)=P(I2,5)
57941       ELSE
57942         K(N+1,3)=I2
57943         P(N+1,5)=P(I2,5)
57944         K(N+2,3)=I1
57945         P(N+2,5)=P(I1,5)
57946       ENDIF
57947       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
57948      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
57949       P(N+1,3)=PABS
57950       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
57951       P(N+2,3)=-PABS
57952       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
57953       N=N+2
57954  
57955 C...Decide whether to allow or not photon radiation in showers.
57956 C...Connect up colours.
57957       MSTJ(41)=2
57958       IF(IRAD.EQ.0) MSTJ(41)=1
57959       IJOIN(1)=N-1
57960       IJOIN(2)=N
57961       CALL PYJOIN(2,IJOIN)
57962  
57963 C...Decide on maximum virtuality and do parton shower.
57964       IF(PMAX.LT.PARJ(82)) THEN
57965         PQMAX=QMAX
57966       ELSE
57967         PQMAX=PMAX
57968       ENDIF
57969       if(parj(200).ne.1.) CALL PYSHOW(NSAV+1,-100,PQMAX)
57970       if(parj(200).eq.1.) CALL PYSHOWQ(NSAV+1,-100,PQMAX) 
57971
57972 C...Rotate and boost back system.
57973       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
57974  
57975 C...Do fragmentation and decays.
57976       CALL PYEXEC
57977  
57978 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
57979       IF(ICOM.EQ.0) THEN
57980         MSTU(28)=0
57981         CALL PYHEPC(1)
57982       ENDIF
57983  
57984       RETURN
57985       END
57986  
57987 C*********************************************************************
57988  
57989 C...PY4JTW
57990 C...Auxiliary to PY4JET, to evaluate weight of configuration.
57991  
57992       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
57993  
57994 C...Double precision and integer declarations.
57995       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57996       IMPLICIT INTEGER(I-N)
57997       INTEGER PYK,PYCHGE,PYCOMP
57998 C...Commonblocks.
57999       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58000       SAVE /PYJETS/
58001  
58002 C...First case: when both original partons radiate.
58003 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
58004       IF(IA1.NE.0) THEN
58005         DO 100 J=1,4
58006           P(N+1,J)=P(IA1,J)+P(IA2,J)
58007           P(N+2,J)=P(IA3,J)+P(IA4,J)
58008   100   CONTINUE
58009         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58010      &  P(N+1,3)**2))
58011         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
58012      &  P(N+2,3)**2))
58013         Z1=P(IA1,4)/P(N+1,4)
58014         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
58015         Z2=P(IA3,4)/P(N+2,4)
58016         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
58017  
58018 C...Second case: when one original parton radiates to three.
58019 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
58020       ELSE
58021         DO 110 J=1,4
58022           P(N+2,J)=P(IA3,J)+P(IA4,J)
58023           P(N+1,J)=P(N+2,J)+P(IA2,J)
58024   110   CONTINUE
58025         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58026      &  P(N+1,3)**2))
58027         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
58028      &  P(N+2,3)**2))
58029         IF(K(IA2,2).EQ.21) THEN
58030           Z1=P(N+2,4)/P(N+1,4)
58031           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
58032      &    P(IA3,5)**2)
58033         ELSE
58034           Z1=P(IA2,4)/P(N+1,4)
58035           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
58036      &    P(IA2,5)**2)
58037         ENDIF
58038         Z2=P(IA3,4)/P(N+2,4)
58039         IF(K(IA2,2).EQ.21) THEN
58040           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
58041      &    P(IA3,5)**2)
58042         ELSEIF(K(IA3,2).EQ.21) THEN
58043           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
58044         ELSE
58045           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
58046         ENDIF
58047       ENDIF
58048  
58049 C...Total weight.
58050       PY4JTW=WT1*WT2
58051  
58052       RETURN
58053       END
58054  
58055 C*********************************************************************
58056  
58057 C...PY4JTS
58058 C...Auxiliary to PY4JET, to set up chosen configuration.
58059  
58060       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
58061  
58062 C...Double precision and integer declarations.
58063       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58064       IMPLICIT INTEGER(I-N)
58065       INTEGER PYK,PYCHGE,PYCOMP
58066 C...Commonblocks.
58067       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58068       SAVE /PYJETS/
58069  
58070 C...Reset info.
58071       DO 110 I=N+1,N+6
58072         DO 100 J=1,5
58073           K(I,J)=0
58074           V(I,J)=V(IA2,J)
58075   100   CONTINUE
58076         K(I,1)=16
58077   110 CONTINUE
58078  
58079 C...First case: when both original partons radiate.
58080 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
58081       IF(IA1.NE.0) THEN
58082  
58083 C...Set up flavour and history pointers for new partons.
58084         K(N+1,2)=K(IA1,2)
58085         K(N+2,2)=K(IA3,2)
58086         K(N+3,2)=K(IA1,2)
58087         K(N+4,2)=K(IA2,2)
58088         K(N+5,2)=K(IA3,2)
58089         K(N+6,2)=K(IA4,2)
58090         K(N+1,3)=IA1
58091         K(N+1,4)=N+3
58092         K(N+1,5)=N+4
58093         K(N+2,3)=IA3
58094         K(N+2,4)=N+5
58095         K(N+2,5)=N+6
58096         K(N+3,3)=N+1
58097         K(N+4,3)=N+1
58098         K(N+5,3)=N+2
58099         K(N+6,3)=N+2
58100  
58101 C...Set up momenta for new partons.
58102         DO 120 J=1,5
58103           P(N+1,J)=P(IA1,J)+P(IA2,J)
58104           P(N+2,J)=P(IA3,J)+P(IA4,J)
58105           P(N+3,J)=P(IA1,J)
58106           P(N+4,J)=P(IA2,J)
58107           P(N+5,J)=P(IA3,J)
58108           P(N+6,J)=P(IA4,J)
58109   120   CONTINUE
58110         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58111      &  P(N+1,3)**2))
58112         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
58113      &  P(N+2,3)**2))
58114         QMAX=MIN(P(N+1,5),P(N+2,5))
58115  
58116 C...Second case: q radiates twice.
58117 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
58118 C...IA5=N+2 does not radiate.
58119       ELSEIF(K(IA2,2).EQ.21) THEN
58120  
58121 C...Set up flavour and history pointers for new partons.
58122         K(N+1,2)=K(IA3,2)
58123         K(N+2,2)=K(IA5,2)
58124         K(N+3,2)=K(IA3,2)
58125         K(N+4,2)=K(IA2,2)
58126         K(N+5,2)=K(IA3,2)
58127         K(N+6,2)=K(IA4,2)
58128         K(N+1,3)=IA3
58129         K(N+1,4)=N+3
58130         K(N+1,5)=N+4
58131         K(N+2,3)=IA5
58132         K(N+3,3)=N+1
58133         K(N+3,4)=N+5
58134         K(N+3,5)=N+6
58135         K(N+4,3)=N+1
58136         K(N+5,3)=N+3
58137         K(N+6,3)=N+3
58138  
58139 C...Set up momenta for new partons.
58140         DO 130 J=1,5
58141           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
58142           P(N+2,J)=P(IA5,J)
58143           P(N+3,J)=P(IA3,J)+P(IA4,J)
58144           P(N+4,J)=P(IA2,J)
58145           P(N+5,J)=P(IA3,J)
58146           P(N+6,J)=P(IA4,J)
58147   130   CONTINUE
58148         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58149      &  P(N+1,3)**2))
58150         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
58151      &  P(N+3,3)**2))
58152         QMAX=P(N+3,5)
58153  
58154 C...Third case: q radiates g, g branches.
58155 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
58156 C...IA5=N+2 does not radiate.
58157       ELSE
58158  
58159 C...Set up flavour and history pointers for new partons.
58160         K(N+1,2)=K(IA2,2)
58161         K(N+2,2)=K(IA5,2)
58162         K(N+3,2)=K(IA2,2)
58163         K(N+4,2)=21
58164         K(N+5,2)=K(IA3,2)
58165         K(N+6,2)=K(IA4,2)
58166         K(N+1,3)=IA2
58167         K(N+1,4)=N+3
58168         K(N+1,5)=N+4
58169         K(N+2,3)=IA5
58170         K(N+3,3)=N+1
58171         K(N+4,3)=N+1
58172         K(N+4,4)=N+5
58173         K(N+4,5)=N+6
58174         K(N+5,3)=N+4
58175         K(N+6,3)=N+4
58176  
58177 C...Set up momenta for new partons.
58178         DO 140 J=1,5
58179           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
58180           P(N+2,J)=P(IA5,J)
58181           P(N+3,J)=P(IA2,J)
58182           P(N+4,J)=P(IA3,J)+P(IA4,J)
58183           P(N+5,J)=P(IA3,J)
58184           P(N+6,J)=P(IA4,J)
58185   140   CONTINUE
58186         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
58187      &  P(N+1,3)**2))
58188         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
58189      &  P(N+4,3)**2))
58190         QMAX=P(N+4,5)
58191  
58192       ENDIF
58193       N=N+6
58194  
58195       RETURN
58196       END
58197  
58198 C*********************************************************************
58199  
58200 C...PYJOIN
58201 C...Connects a sequence of partons with colour flow indices,
58202 C...as required for subsequent shower evolution (or other operations).
58203  
58204       SUBROUTINE PYJOIN(NJOIN,IJOIN)
58205  
58206 C...Double precision and integer declarations.
58207       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58208       IMPLICIT INTEGER(I-N)
58209       INTEGER PYK,PYCHGE,PYCOMP
58210 C...Commonblocks.
58211       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58212       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58213       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58214       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58215 C...Local array.
58216       DIMENSION IJOIN(*)
58217  
58218 C...Check that partons are of right types to be connected.
58219       IF(NJOIN.LT.2) GOTO 120
58220       KQSUM=0
58221       DO 100 IJN=1,NJOIN
58222         I=IJOIN(IJN)
58223         IF(I.LE.0.OR.I.GT.N) GOTO 120
58224         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
58225         KC=PYCOMP(K(I,2))
58226         IF(KC.EQ.0) GOTO 120
58227         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
58228         IF(KQ.EQ.0) GOTO 120
58229         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
58230         IF(KQ.NE.2) KQSUM=KQSUM+KQ
58231         IF(IJN.EQ.1) KQS=KQ
58232   100 CONTINUE
58233       IF(KQSUM.NE.0) GOTO 120
58234  
58235 C...Connect the partons sequentially (closing for gluon loop).
58236       KCS=(9-KQS)/2
58237       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
58238       DO 110 IJN=1,NJOIN
58239         I=IJOIN(IJN)
58240         K(I,1)=3
58241         IF(IJN.NE.1) IP=IJOIN(IJN-1)
58242         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
58243         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
58244         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
58245         K(I,KCS)=MSTU(5)*IN
58246         K(I,9-KCS)=MSTU(5)*IP
58247         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
58248         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
58249   110 CONTINUE
58250  
58251 C...Error exit: no action taken.
58252       RETURN
58253   120 CALL PYERRM(12,
58254      &'(PYJOIN:) given entries can not be joined by one string')
58255  
58256       RETURN
58257       END
58258  
58259 C*********************************************************************
58260  
58261 C...PYGIVE
58262 C...Sets values of commonblock variables.
58263  
58264       SUBROUTINE PYGIVE(CHIN)
58265  
58266 C...Double precision and integer declarations.
58267       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58268       IMPLICIT INTEGER(I-N)
58269       INTEGER PYK,PYCHGE,PYCOMP
58270 C...Commonblocks.
58271       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58272       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58273       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58274       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
58275       COMMON/PYDAT4/CHAF(500,2)
58276       CHARACTER CHAF*16
58277       COMMON/PYDATR/MRPY(6),RRPY(100)
58278       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
58279       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
58280       COMMON/PYINT1/MINT(400),VINT(400)
58281       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
58282       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
58283       COMMON/PYINT4/MWID(500),WIDS(500,5)
58284       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
58285       COMMON/PYINT6/PROC(0:500)
58286       CHARACTER PROC*28
58287       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
58288       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
58289      &XPDIR(-6:6)
58290       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
58291       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
58292       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
58293       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
58294      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
58295      &/PYINT5/,/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/
58296 C...Local arrays and character variables.
58297       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
58298      &CHNEW2*28,CHNAM*6,CHVAR(54)*6,CHALP(2)*26,CHIND*8,CHINI*10,
58299      &CHINR*16,CHDIG*10
58300       DIMENSION MSVAR(54,8)
58301  
58302 C...For each variable to be translated give: name,
58303 C...integer/real/character, no. of indices, lower&upper index bounds.
58304       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
58305      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
58306      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
58307      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
58308      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
58309      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
58310      &'ITCM','RTCM'/
58311       DATA ((MSVAR(I,J),J=1,8),I=1,54)/ 1,7*0,  1,2,1,4000,1,5,2*0,
58312      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
58313      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
58314      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
58315      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
58316      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
58317      &1,1,1,6,4*0,  2,1,1,100,4*0,
58318      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
58319      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
58320      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
58321      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
58322      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
58323      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
58324      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
58325      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
58326      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
58327      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
58328      &1,1,0,99,4*0,  2,1,0,99,4*0/
58329       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
58330      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/, CHDIG/'1234567890'/
58331  
58332 C...Length of character variable. Subdivide it into instructions.
58333       IF(MSTU(12).NE.12345.AND.CHIN.NE.'mstu(12)=12345'.AND.
58334      &CHIN.NE.'MSTU(12)=12345') CALL PYLIST(0)
58335       CHBIT=CHIN//' '
58336       LBIT=101
58337   100 LBIT=LBIT-1
58338       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
58339       LTOT=0
58340       DO 110 LCOM=1,LBIT
58341         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
58342         LTOT=LTOT+1
58343         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
58344   110 CONTINUE
58345       LLOW=0
58346   120 LHIG=LLOW+1
58347   130 LHIG=LHIG+1
58348       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
58349       LBIT=LHIG-LLOW-1
58350       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
58351
58352 C...Send off decay-mode on/off commands to PYONOF.
58353       IONOF=0
58354       DO 135 LDIG=1,10
58355         IF(CHBIT(1:1).EQ.CHDIG(LDIG:LDIG)) IONOF=1
58356   135 CONTINUE
58357       IF(IONOF.EQ.1) THEN
58358         CALL PYONOF(CHIN)
58359         RETURN
58360       ENDIF   
58361  
58362 C...Peel off any text following exclamation mark.
58363       LHIG2=LBIT
58364       DO 140 LLOW2=LHIG2,1,-1
58365         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
58366   140 CONTINUE
58367       IF(LBIT.EQ.0) RETURN
58368  
58369 C...Identify commonblock variable.
58370       LNAM=1
58371   150 LNAM=LNAM+1
58372       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
58373      &LNAM.LE.6) GOTO 150
58374       CHNAM=CHBIT(1:LNAM-1)//' '
58375       DO 170 LCOM=1,LNAM-1
58376         DO 160 LALP=1,26
58377           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
58378      &    CHALP(2)(LALP:LALP)
58379   160   CONTINUE
58380   170 CONTINUE
58381       IVAR=0
58382       DO 180 IV=1,54
58383         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
58384   180 CONTINUE
58385       IF(IVAR.EQ.0) THEN
58386         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
58387         LLOW=LHIG
58388         IF(LLOW.LT.LTOT) GOTO 120
58389         RETURN
58390       ENDIF
58391  
58392 C...Identify any indices.
58393       I1=0
58394       I2=0
58395       I3=0
58396       NINDX=0
58397       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
58398         LIND=LNAM
58399   190   LIND=LIND+1
58400         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
58401         CHIND=' '
58402         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
58403      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
58404      &  IVAR.EQ.37)) THEN
58405           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
58406           READ(CHIND,'(I8)') KF
58407           I1=PYCOMP(KF)
58408         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
58409      &    'c') THEN
58410           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
58411      &    CHNAM)
58412           LLOW=LHIG
58413           IF(LLOW.LT.LTOT) GOTO 120
58414           RETURN
58415         ELSE
58416           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58417           READ(CHIND,'(I8)') I1
58418         ENDIF
58419         LNAM=LIND
58420         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
58421         NINDX=1
58422       ENDIF
58423       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
58424         LIND=LNAM
58425   200   LIND=LIND+1
58426         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
58427         CHIND=' '
58428         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58429         READ(CHIND,'(I8)') I2
58430         LNAM=LIND
58431         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
58432         NINDX=2
58433       ENDIF
58434       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
58435         LIND=LNAM
58436   210   LIND=LIND+1
58437         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
58438         CHIND=' '
58439         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
58440         READ(CHIND,'(I8)') I3
58441         LNAM=LIND+1
58442         NINDX=3
58443       ENDIF
58444  
58445 C...Check that indices allowed.
58446       IERR=0
58447       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
58448       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
58449      &IERR=2
58450       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
58451      &IERR=3
58452       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
58453      &IERR=4
58454       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
58455       IF(IERR.GE.1) THEN
58456         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
58457      &  CHBIT(1:LNAM-1))
58458         LLOW=LHIG
58459         IF(LLOW.LT.LTOT) GOTO 120
58460         RETURN
58461       ENDIF
58462  
58463 C...Save old value of variable.
58464       IF(IVAR.EQ.1) THEN
58465         IOLD=N
58466       ELSEIF(IVAR.EQ.2) THEN
58467         IOLD=K(I1,I2)
58468       ELSEIF(IVAR.EQ.3) THEN
58469         ROLD=P(I1,I2)
58470       ELSEIF(IVAR.EQ.4) THEN
58471         ROLD=V(I1,I2)
58472       ELSEIF(IVAR.EQ.5) THEN
58473         IOLD=MSTU(I1)
58474       ELSEIF(IVAR.EQ.6) THEN
58475         ROLD=PARU(I1)
58476       ELSEIF(IVAR.EQ.7) THEN
58477         IOLD=MSTJ(I1)
58478       ELSEIF(IVAR.EQ.8) THEN
58479         ROLD=PARJ(I1)
58480       ELSEIF(IVAR.EQ.9) THEN
58481         IOLD=KCHG(I1,I2)
58482       ELSEIF(IVAR.EQ.10) THEN
58483         ROLD=PMAS(I1,I2)
58484       ELSEIF(IVAR.EQ.11) THEN
58485         ROLD=PARF(I1)
58486       ELSEIF(IVAR.EQ.12) THEN
58487         ROLD=VCKM(I1,I2)
58488       ELSEIF(IVAR.EQ.13) THEN
58489         IOLD=MDCY(I1,I2)
58490       ELSEIF(IVAR.EQ.14) THEN
58491         IOLD=MDME(I1,I2)
58492       ELSEIF(IVAR.EQ.15) THEN
58493         ROLD=BRAT(I1)
58494       ELSEIF(IVAR.EQ.16) THEN
58495         IOLD=KFDP(I1,I2)
58496       ELSEIF(IVAR.EQ.17) THEN
58497         CHOLD=CHAF(I1,I2)(1:8)
58498       ELSEIF(IVAR.EQ.18) THEN
58499         IOLD=MRPY(I1)
58500       ELSEIF(IVAR.EQ.19) THEN
58501         ROLD=RRPY(I1)
58502       ELSEIF(IVAR.EQ.20) THEN
58503         IOLD=MSEL
58504       ELSEIF(IVAR.EQ.21) THEN
58505         IOLD=MSUB(I1)
58506       ELSEIF(IVAR.EQ.22) THEN
58507         IOLD=KFIN(I1,I2)
58508       ELSEIF(IVAR.EQ.23) THEN
58509         ROLD=CKIN(I1)
58510       ELSEIF(IVAR.EQ.24) THEN
58511         IOLD=MSTP(I1)
58512       ELSEIF(IVAR.EQ.25) THEN
58513         ROLD=PARP(I1)
58514       ELSEIF(IVAR.EQ.26) THEN
58515         IOLD=MSTI(I1)
58516       ELSEIF(IVAR.EQ.27) THEN
58517         ROLD=PARI(I1)
58518       ELSEIF(IVAR.EQ.28) THEN
58519         IOLD=MINT(I1)
58520       ELSEIF(IVAR.EQ.29) THEN
58521         ROLD=VINT(I1)
58522       ELSEIF(IVAR.EQ.30) THEN
58523         IOLD=ISET(I1)
58524       ELSEIF(IVAR.EQ.31) THEN
58525         IOLD=KFPR(I1,I2)
58526       ELSEIF(IVAR.EQ.32) THEN
58527         ROLD=COEF(I1,I2)
58528       ELSEIF(IVAR.EQ.33) THEN
58529         IOLD=ICOL(I1,I2,I3)
58530       ELSEIF(IVAR.EQ.34) THEN
58531         ROLD=XSFX(I1,I2)
58532       ELSEIF(IVAR.EQ.35) THEN
58533         IOLD=ISIG(I1,I2)
58534       ELSEIF(IVAR.EQ.36) THEN
58535         ROLD=SIGH(I1)
58536       ELSEIF(IVAR.EQ.37) THEN
58537         IOLD=MWID(I1)
58538       ELSEIF(IVAR.EQ.38) THEN
58539         ROLD=WIDS(I1,I2)
58540       ELSEIF(IVAR.EQ.39) THEN
58541         IOLD=NGEN(I1,I2)
58542       ELSEIF(IVAR.EQ.40) THEN
58543         ROLD=XSEC(I1,I2)
58544       ELSEIF(IVAR.EQ.41) THEN
58545         CHOLD2=PROC(I1)
58546       ELSEIF(IVAR.EQ.42) THEN
58547         ROLD=SIGT(I1,I2,I3)
58548       ELSEIF(IVAR.EQ.43) THEN
58549         ROLD=XPVMD(I1)
58550       ELSEIF(IVAR.EQ.44) THEN
58551         ROLD=XPANL(I1)
58552       ELSEIF(IVAR.EQ.45) THEN
58553         ROLD=XPANH(I1)
58554       ELSEIF(IVAR.EQ.46) THEN
58555         ROLD=XPBEH(I1)
58556       ELSEIF(IVAR.EQ.47) THEN
58557         ROLD=XPDIR(I1)
58558       ELSEIF(IVAR.EQ.48) THEN
58559         IOLD=IMSS(I1)
58560       ELSEIF(IVAR.EQ.49) THEN
58561         ROLD=RMSS(I1)
58562       ELSEIF(IVAR.EQ.50) THEN
58563         ROLD=RVLAM(I1,I2,I3)
58564       ELSEIF(IVAR.EQ.51) THEN
58565         ROLD=RVLAMP(I1,I2,I3)
58566       ELSEIF(IVAR.EQ.52) THEN
58567         ROLD=RVLAMB(I1,I2,I3)
58568       ELSEIF(IVAR.EQ.53) THEN
58569         IOLD=ITCM(I1)
58570       ELSEIF(IVAR.EQ.54) THEN
58571         ROLD=RTCM(I1)
58572       ENDIF
58573  
58574 C...Print current value of variable. Loop back.
58575       IF(LNAM.GE.LBIT) THEN
58576         CHBIT(LNAM:14)=' '
58577         CHBIT(15:60)=' has the value                                '
58578         IF(MSVAR(IVAR,1).EQ.1) THEN
58579           WRITE(CHBIT(51:60),'(I10)') IOLD
58580         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58581           WRITE(CHBIT(47:60),'(F14.5)') ROLD
58582         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58583           CHBIT(53:60)=CHOLD
58584         ELSE
58585           CHBIT(33:60)=CHOLD
58586         ENDIF
58587         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58588         LLOW=LHIG
58589         IF(LLOW.LT.LTOT) GOTO 120
58590         RETURN
58591       ENDIF
58592  
58593 C...Read in new variable value.
58594       IF(MSVAR(IVAR,1).EQ.1) THEN
58595         CHINI=' '
58596         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
58597         READ(CHINI,'(I10)') INEW
58598       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58599         CHINR=' '
58600         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
58601         READ(CHINR,*) RNEW
58602       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58603         CHNEW=CHBIT(LNAM+1:LBIT)//' '
58604       ELSE
58605         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
58606       ENDIF
58607  
58608 C...Store new variable value.
58609       IF(IVAR.EQ.1) THEN
58610         N=INEW
58611       ELSEIF(IVAR.EQ.2) THEN
58612         K(I1,I2)=INEW
58613       ELSEIF(IVAR.EQ.3) THEN
58614         P(I1,I2)=RNEW
58615       ELSEIF(IVAR.EQ.4) THEN
58616         V(I1,I2)=RNEW
58617       ELSEIF(IVAR.EQ.5) THEN
58618         MSTU(I1)=INEW
58619       ELSEIF(IVAR.EQ.6) THEN
58620         PARU(I1)=RNEW
58621       ELSEIF(IVAR.EQ.7) THEN
58622         MSTJ(I1)=INEW
58623       ELSEIF(IVAR.EQ.8) THEN
58624         PARJ(I1)=RNEW
58625       ELSEIF(IVAR.EQ.9) THEN
58626         KCHG(I1,I2)=INEW
58627       ELSEIF(IVAR.EQ.10) THEN
58628         PMAS(I1,I2)=RNEW
58629       ELSEIF(IVAR.EQ.11) THEN
58630         PARF(I1)=RNEW
58631       ELSEIF(IVAR.EQ.12) THEN
58632         VCKM(I1,I2)=RNEW
58633       ELSEIF(IVAR.EQ.13) THEN
58634         MDCY(I1,I2)=INEW
58635       ELSEIF(IVAR.EQ.14) THEN
58636         MDME(I1,I2)=INEW
58637       ELSEIF(IVAR.EQ.15) THEN
58638         BRAT(I1)=RNEW
58639       ELSEIF(IVAR.EQ.16) THEN
58640         KFDP(I1,I2)=INEW
58641       ELSEIF(IVAR.EQ.17) THEN
58642         CHAF(I1,I2)=CHNEW
58643       ELSEIF(IVAR.EQ.18) THEN
58644         MRPY(I1)=INEW
58645       ELSEIF(IVAR.EQ.19) THEN
58646         RRPY(I1)=RNEW
58647       ELSEIF(IVAR.EQ.20) THEN
58648         MSEL=INEW
58649       ELSEIF(IVAR.EQ.21) THEN
58650         MSUB(I1)=INEW
58651       ELSEIF(IVAR.EQ.22) THEN
58652         KFIN(I1,I2)=INEW
58653       ELSEIF(IVAR.EQ.23) THEN
58654         CKIN(I1)=RNEW
58655       ELSEIF(IVAR.EQ.24) THEN
58656         MSTP(I1)=INEW
58657       ELSEIF(IVAR.EQ.25) THEN
58658         PARP(I1)=RNEW
58659       ELSEIF(IVAR.EQ.26) THEN
58660         MSTI(I1)=INEW
58661       ELSEIF(IVAR.EQ.27) THEN
58662         PARI(I1)=RNEW
58663       ELSEIF(IVAR.EQ.28) THEN
58664         MINT(I1)=INEW
58665       ELSEIF(IVAR.EQ.29) THEN
58666         VINT(I1)=RNEW
58667       ELSEIF(IVAR.EQ.30) THEN
58668         ISET(I1)=INEW
58669       ELSEIF(IVAR.EQ.31) THEN
58670         KFPR(I1,I2)=INEW
58671       ELSEIF(IVAR.EQ.32) THEN
58672         COEF(I1,I2)=RNEW
58673       ELSEIF(IVAR.EQ.33) THEN
58674         ICOL(I1,I2,I3)=INEW
58675       ELSEIF(IVAR.EQ.34) THEN
58676         XSFX(I1,I2)=RNEW
58677       ELSEIF(IVAR.EQ.35) THEN
58678         ISIG(I1,I2)=INEW
58679       ELSEIF(IVAR.EQ.36) THEN
58680         SIGH(I1)=RNEW
58681       ELSEIF(IVAR.EQ.37) THEN
58682         MWID(I1)=INEW
58683       ELSEIF(IVAR.EQ.38) THEN
58684         WIDS(I1,I2)=RNEW
58685       ELSEIF(IVAR.EQ.39) THEN
58686         NGEN(I1,I2)=INEW
58687       ELSEIF(IVAR.EQ.40) THEN
58688         XSEC(I1,I2)=RNEW
58689       ELSEIF(IVAR.EQ.41) THEN
58690         PROC(I1)=CHNEW2
58691       ELSEIF(IVAR.EQ.42) THEN
58692         SIGT(I1,I2,I3)=RNEW
58693       ELSEIF(IVAR.EQ.43) THEN
58694         XPVMD(I1)=RNEW
58695       ELSEIF(IVAR.EQ.44) THEN
58696         XPANL(I1)=RNEW
58697       ELSEIF(IVAR.EQ.45) THEN
58698         XPANH(I1)=RNEW
58699       ELSEIF(IVAR.EQ.46) THEN
58700         XPBEH(I1)=RNEW
58701       ELSEIF(IVAR.EQ.47) THEN
58702         XPDIR(I1)=RNEW
58703       ELSEIF(IVAR.EQ.48) THEN
58704         IMSS(I1)=INEW
58705       ELSEIF(IVAR.EQ.49) THEN
58706         RMSS(I1)=RNEW
58707       ELSEIF(IVAR.EQ.50) THEN
58708         RVLAM(I1,I2,I3)=RNEW
58709       ELSEIF(IVAR.EQ.51) THEN
58710         RVLAMP(I1,I2,I3)=RNEW
58711       ELSEIF(IVAR.EQ.52) THEN
58712         RVLAMB(I1,I2,I3)=RNEW
58713       ELSEIF(IVAR.EQ.53) THEN
58714         ITCM(I1)=INEW
58715       ELSEIF(IVAR.EQ.54) THEN
58716         RTCM(I1)=RNEW
58717       ENDIF
58718  
58719 C...Write old and new value. Loop back.
58720       CHBIT(LNAM:14)=' '
58721       CHBIT(15:60)=' changed from                to               '
58722       IF(MSVAR(IVAR,1).EQ.1) THEN
58723         WRITE(CHBIT(33:42),'(I10)') IOLD
58724         WRITE(CHBIT(51:60),'(I10)') INEW
58725         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58726       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
58727         WRITE(CHBIT(29:42),'(F14.5)') ROLD
58728         WRITE(CHBIT(47:60),'(F14.5)') RNEW
58729         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58730       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
58731         CHBIT(35:42)=CHOLD
58732         CHBIT(53:60)=CHNEW
58733         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
58734       ELSE
58735         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
58736         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
58737       ENDIF
58738       LLOW=LHIG
58739       IF(LLOW.LT.LTOT) GOTO 120
58740  
58741 C...Format statement for output on unit MSTU(11) (by default 6).
58742  5000 FORMAT(5X,A60)
58743  5100 FORMAT(5X,A88)
58744  
58745       RETURN
58746       END
58747  
58748 C*********************************************************************
58749  
58750 C...PYONOF
58751 C...Switches on and off decay channel by search for match.
58752  
58753       SUBROUTINE PYONOF(CHIN)
58754  
58755 C...Double precision and integer declarations.
58756       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58757       IMPLICIT INTEGER(I-N)
58758       INTEGER PYK,PYCHGE,PYCOMP
58759 C...Commonblocks.
58760       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58761       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
58762       SAVE /PYDAT1/,/PYDAT3/
58763 C...Local arrays and character variables.
58764       INTEGER KFCMP(10),KFTMP(10)
58765       CHARACTER CHIN*(*),CHTMP*104,CHFIX*104,CHMODE*10,CHCODE*8,
58766      &CHALP(2)*26
58767       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
58768      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
58769
58770 C...Determine length of character variable.
58771       CHTMP=CHIN//' '
58772       LBEG=0
58773   100 LBEG=LBEG+1
58774       IF(CHTMP(LBEG:LBEG).EQ.' ') GOTO 100
58775       LEND=LBEG-1
58776   105 LEND=LEND+1
58777       IF(LEND.LE.100.AND.CHTMP(LEND:LEND).NE.'!') GOTO 105
58778   110 LEND=LEND-1
58779       IF(CHTMP(LEND:LEND).EQ.' ') GOTO 110
58780       LEN=1+LEND-LBEG
58781       CHFIX(1:LEN)=CHTMP(LBEG:LEND)
58782
58783 C...Find colon separator and particle code.
58784       LCOLON=0
58785   120 LCOLON=LCOLON+1
58786       IF(CHFIX(LCOLON:LCOLON).NE.':') GOTO 120
58787       CHCODE=' '
58788       CHCODE(10-LCOLON:8)=CHFIX(1:LCOLON-1)
58789       READ(CHCODE,'(I8)',ERR=300) KF
58790       KC=PYCOMP(KF)
58791
58792 C...Done if unknown code or no decay channels.
58793       IF(KC.EQ.0) THEN
58794         CALL PYERRM(18,'(PYONOF:) unrecognized particle '//CHCODE)
58795         RETURN
58796       ENDIF
58797       IDCBEG=MDCY(KC,2)
58798       IDCLEN=MDCY(KC,3)
58799       IF(IDCBEG.EQ.0.OR.IDCLEN.EQ.0) THEN
58800         CALL PYERRM(18,'(PYONOF:) no decay channels for '//CHCODE)
58801         RETURN
58802       ENDIF
58803
58804 C...Find command name up to blank or equal sign.
58805       LSEP=LCOLON
58806   130 LSEP=LSEP+1
58807       IF(LSEP.LE.LEN.AND.CHFIX(LSEP:LSEP).NE.' '.AND.
58808      &CHFIX(LSEP:LSEP).NE.'=') GOTO 130
58809       CHMODE=' '
58810       LMODE=LSEP-LCOLON-1
58811       CHMODE(1:LMODE)=CHFIX(LCOLON+1:LSEP-1)
58812
58813 C...Convert to uppercase.
58814       DO 150 LCOM=1,LMODE
58815         DO 140 LALP=1,26
58816           IF(CHMODE(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) 
58817      &    CHMODE(LCOM:LCOM)=CHALP(2)(LALP:LALP)
58818   140   CONTINUE
58819   150 CONTINUE
58820
58821 C...Identify command. Failed if not identified.
58822       MODE=0
58823       IF(CHMODE.EQ.'ALLOFF') MODE=1
58824       IF(CHMODE.EQ.'ALLON') MODE=2
58825       IF(CHMODE.EQ.'OFFIFANY') MODE=3
58826       IF(CHMODE.EQ.'ONIFANY') MODE=4
58827       IF(CHMODE.EQ.'OFFIFALL') MODE=5
58828       IF(CHMODE.EQ.'ONIFALL') MODE=6
58829       IF(CHMODE.EQ.'OFFIFMATCH') MODE=7
58830       IF(CHMODE.EQ.'ONIFMATCH') MODE=8
58831       IF(MODE.EQ.0) THEN
58832         CALL PYERRM(18,'(PYONOF:) unknown command '//CHMODE)
58833         RETURN
58834       ENDIF
58835
58836 C...Simple cases when all on or all off.
58837       IF(MODE.EQ.1.OR.MODE.EQ.2) THEN
58838         WRITE(MSTU(11),1000) KF,CHMODE
58839         DO 160 IDC=IDCBEG,IDCBEG+IDCLEN-1
58840           IF(MDME(IDC,1).LT.0) GOTO 160
58841           MDME(IDC,1)=MODE-1
58842   160   CONTINUE
58843         RETURN
58844       ENDIF
58845
58846 C...Identify matching list.
58847       NCMP=0
58848       LBEG=LSEP
58849   170 LBEG=LBEG+1
58850       IF(LBEG.GT.LEN) GOTO 190
58851       IF(LBEG.LT.LEN.AND.(CHFIX(LBEG:LBEG).EQ.' '.OR.
58852      &CHFIX(LBEG:LBEG).EQ.'='.OR.CHFIX(LBEG:LBEG).EQ.',')) GOTO 170
58853       LEND=LBEG-1
58854   180 LEND=LEND+1
58855       IF(LEND.LT.LEN.AND.CHFIX(LEND:LEND).NE.' '.AND.
58856      &CHFIX(LEND:LEND).NE.'='.AND.CHFIX(LEND:LEND).NE.',') GOTO 180
58857       IF(LEND.LT.LEN) LEND=LEND-1
58858       CHCODE=' '
58859       CHCODE(8-LEND+LBEG:8)=CHFIX(LBEG:LEND)
58860       READ(CHCODE,'(I8)',ERR=300) KFREAD
58861       NCMP=NCMP+1
58862       KFCMP(NCMP)=IABS(KFREAD)
58863       LBEG=LEND
58864       IF(NCMP.LT.10) GOTO 170
58865   190 CONTINUE
58866       WRITE(MSTU(11),1100) KF,CHMODE,(KFCMP(ICMP),ICMP=1,NCMP)
58867
58868 C...Only one matching required.
58869       IF(MODE.EQ.3.OR.MODE.EQ.4) THEN
58870         DO 220 IDC=IDCBEG,IDCBEG+IDCLEN-1
58871           IF(MDME(IDC,1).LT.0) GOTO 220
58872           DO 210 IKF=1,5
58873             KFNOW=IABS(KFDP(IDC,IKF))
58874             IF(KFNOW.EQ.0) GOTO 210
58875             DO 200 ICMP=1,NCMP
58876               IF(KFCMP(ICMP).EQ.KFNOW) THEN
58877                 MDME(IDC,1)=MODE-3
58878                 GOTO 220
58879               ENDIF
58880   200      CONTINUE
58881   210     CONTINUE
58882   220   CONTINUE
58883         RETURN
58884       ENDIF
58885
58886 C...Multiple matchings required.
58887       DO 260 IDC=IDCBEG,IDCBEG+IDCLEN-1
58888         IF(MDME(IDC,1).LT.0) GOTO 260
58889         NTMP=NCMP
58890         DO 230 ITMP=1,NTMP
58891           KFTMP(ITMP)=KFCMP(ITMP)
58892   230   CONTINUE  
58893         NFIN=0 
58894         DO 250 IKF=1,5
58895           KFNOW=IABS(KFDP(IDC,IKF))
58896           IF(KFNOW.EQ.0) GOTO 250
58897           NFIN=NFIN+1
58898           DO 240 ITMP=1,NTMP
58899             IF(KFTMP(ITMP).EQ.KFNOW) THEN
58900               KFTMP(ITMP)=KFTMP(NTMP) 
58901               NTMP=NTMP-1
58902               GOTO 250
58903             ENDIF
58904   240     CONTINUE
58905   250   CONTINUE
58906         IF(NTMP.EQ.0.AND.MODE.LE.6) MDME(IDC,1)=MODE-5
58907         IF(NTMP.EQ.0.AND.NFIN.EQ.NCMP.AND.MODE.GE.7) 
58908      &  MDME(IDC,1)=MODE-7
58909   260 CONTINUE
58910       RETURN
58911
58912 C...Error exit for impossible read of particle code.
58913   300 CALL PYERRM(18,'(PYONOF:) could not interpret particle code '
58914      &//CHCODE)
58915
58916 C...Formats for output.
58917  1000 FORMAT(' Decays for',I8,' set ',A10)
58918  1100 FORMAT(' Decays for',I8,' set ',A10,' if match',10I8)
58919
58920       RETURN
58921       END
58922 C*********************************************************************
58923  
58924 C...PYTUNE
58925 C...Presets for a few specific underlying-event and min-bias tunes
58926 C...Note some tunes require external pdfs to be linked (e.g. 105:QW), 
58927 C...others require particular versions of pythia (e.g. the SCI and GAL 
58928 C...models). See below for details.
58929       SUBROUTINE PYTUNE(ITUNE) 
58930 C
58931 C ITUNE    NAME (detailed descriptions below)
58932 C     0 Default : No settings changed => linked Pythia version's defaults.
58933 C ====== Old UE, Q2-ordered showers ==========================================
58934 C   100       A : Rick Field's CDF Tune A 
58935 C   101      AW : Rick Field's CDF Tune AW
58936 C   102      BW : Rick Field's CDF Tune BW
58937 C   103      DW : Rick Field's CDF Tune DW
58938 C   104     DWT : Rick Field's CDF Tune DW with slower UE energy scaling
58939 C   105      QW : Rick Field's CDF Tune QW (NB: needs CTEQ6.1M pdfs externally)
58940 C   106 ATLAS-DC2: Arthur Moraes' (old) ATLAS tune (ATLAS DC2 / Rome)
58941 C   107     ACR : Tune A modified with annealing CR
58942 C   108      D6 : Rick Field's CDF Tune D6 (NB: needs CTEQ6L pdfs externally)
58943 C   109     D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally)
58944 C ====== Intermediate Models =================================================
58945 C   200    IM 1 : Intermediate model: new UE, Q2-ordered showers, annealing CR
58946 C   201     APT : Tune A modified to use pT-ordered final-state showers
58947 C ====== New UE, interleaved pT-ordered showers, annealing CR ================
58948 C   300      S0 : Sandhoff-Skands Tune 0 
58949 C   301      S1 : Sandhoff-Skands Tune 1
58950 C   302      S2 : Sandhoff-Skands Tune 2
58951 C   303     S0A : S0 with "Tune A" UE energy scaling
58952 C   304    NOCR : New UE "best try" without colour reconnections
58953 C   305     Old : New UE, original (primitive) colour reconnections
58954 C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally)
58955 C ======= The Uppsala models =================================================
58956 C   ( NB! must be run with special modified Pythia 6.215 version )
58957 C   ( available from http://www.isv.uu.se/thep/MC/scigal/        )
58958 C   400   GAL 0 : Generalized area-law model. Old parameters
58959 C   401   SCI 0 : Soft-Colour-Interaction model. Old parameters
58960 C   402   GAL 1 : Generalized area-law model. Tevatron MB retuned (Skands)
58961 C   403   SCI 1 : Soft-Colour-Interaction model. Tevatron MB retuned (Skands)
58962 C
58963 C More details;
58964 C
58965 C Quick Dictionary:
58966 C      BE : Bose-Einstein
58967 C      BR : Beam Remnants
58968 C      CR : Colour Reconnections
58969 C      HAD: Hadronization
58970 C      ISR/FSR: Initial-State Radiation / Final-State Radiation
58971 C      FSI: Final-State Interactions (=CR+BE)
58972 C      MB : Minimum-bias
58973 C      MI : Multiple Interactions
58974 C      UE : Underlying Event 
58975 C       
58976 C   A (100) and AW (101). Old UE model, Q2-ordered showers.
58977 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58978 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58979 C...Key feature: extensively compared to CDF data (R.D. Field).
58980 C...* Large starting scale for ISR (PARP(67)=4)
58981 C...* AW has even more radiation due to smaller mu_R choice in alpha_s.
58982 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
58983 C
58984 C   BW (102). Old UE model, Q2-ordered showers.
58985 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58986 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58987 C...Key feature: extensively compared to CDF data (R.D. Field).
58988 C...NB: Can also be run with Pythia 6.2 or 6.312+
58989 C...* Small starting scale for ISR (PARP(67)=1)
58990 C...* BW has more radiation due to smaller mu_R choice in alpha_s.
58991 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
58992 C
58993 C   DW (103) and DWT (104). Old UE model, Q2-ordered showers.
58994 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
58995 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
58996 C...Key feature: extensively compared to CDF data (R.D. Field).
58997 C...NB: Can also be run with Pythia 6.2 or 6.312+
58998 C...* Intermediate starting scale for ISR (PARP(67)=2.5)
58999 C...* DWT has a different reference energy, the same as the "S" models
59000 C...  below, leading to more UE activity at the LHC, but less at RHIC.
59001 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
59002 C
59003 C   QW (105). Old UE model, Q2-ordered showers.
59004 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
59005 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
59006 C...Key feature: uses CTEQ61 (external pdf library must be linked)
59007 C
59008 C   ATLAS-DC2 (106). Old UE model, Q2-ordered showers.
59009 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
59010 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
59011 C...Key feature: tune used by the ATLAS collaboration.
59012 C
59013 C   ACR (107). Old UE model, Q2-ordered showers, annealing CR.
59014 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.412+    ***
59015 C...Key feature: Tune A modified to use annealing CR. 
59016 C...NB: PARP(85)=0D0 and amount of CR is regulated by PARP(78).
59017 C
59018 C   D6 (108) and D6T (109). Old UE model, Q2-ordered showers, CTEQ6L PDF.
59019 C...Key feature: Like DW and DWT but retuned to use CTEQ6L PDFs.
59020 C
59021 C...IM1 (200). Intermediate model, Q2-ordered showers.
59022 C...Key feature: new UE model with Q2-ordered showers and no interleaving.
59023 C...* "Rap" tune of hep-ph/0402078, modified with new annealing CR.
59024 C...* See: Sjostrand & Skands: JHEP 03(2004)053, hep-ph/0402078.
59025 C
59026 C...APT (201). Old UE model, pT-ordered final-state showers
59027 C...Key feature: Rick Field's Tune A, but with new final-state showers
59028 C
59029 C   S0 (300) and S0A (303). New UE model, pT-ordered showers. 
59030 C...Key feature: large amount of multiple interactions
59031 C...* Somewhat faster than the other colour annealing scenarios.
59032 C...* S0A has a faster energy scaling of the UE IR cutoff, borrowed 
59033 C...  from Tune A, leading to less UE at the LHC, but more at RHIC.
59034 C...* Small amount of radiation.
59035 C...* Large amount of low-pT MI
59036 C...* Low degree of proton lumpiness (broad matter dist.)
59037 C...* CR Type S (driven by free triplets), of medium strength.
59038 C...* See: Pythia6402 update notes or later.
59039 C
59040 C   S1 (301). New UE model, pT-ordered showers.
59041 C...Key feature: large amount of radiation.
59042 C...* Large amount of low-pT perturbative ISR
59043 C...* Large amount of FSR off ISR partons
59044 C...* Small amount of low-pT multiple interactions
59045 C...* Moderate degree of proton lumpiness
59046 C...* Least aggressive CR type (S+S Type I), but with large strength
59047 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
59048 C
59049 C   S2 (302). New UE model, pT-ordered showers. 
59050 C...Key feature: very lumpy proton + gg string cluster formation allowed
59051 C...* Small amount of radiation
59052 C...* Moderate amount of low-pT MI
59053 C...* High degree of proton lumpiness (more spiky matter distribution)
59054 C...* Most aggressive CR type (S+S Type II), but with small strength
59055 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
59056
59057 C   NOCR (304). New UE model, pT-ordered showers.
59058 C...Key feature: no colour reconnections (NB: "Best fit" only).
59059 C...* NB: <pT>(Nch) problematic in this tune.
59060 C...* Small amount of radiation
59061 C...* Small amount of low-pT MI
59062 C...* Low degree of proton lumpiness
59063 C...* Large BR composite x enhancement factor
59064 C...* Most clever colour flow without CR ("Lambda ordering")
59065 C
59066 C   ATLAS-CSC (306). New UE mode, pT-ordered showers, CTEQ6L.
59067 C...Key feature: 11-parameter ATLAS tune of the new framework.
59068 C...* Old (pre-annealing) colour reconnections a la 305.
59069 C...* Uses CTEQ6 Leading Order PDFs (must be interfaced externally)
59070 C
59071 C...The GAL and SCI models (400+) are special and *SHOULD NOT* be run 
59072 C...with an unmodified Pythia distribution. 
59073 C...See http://www.isv.uu.se/thep/MC/scigal/ for more information.
59074 C
59075 C ::: + Future improvements?
59076 C        Include also QCD K-factor a la M. Heinz / ATLAS TDR ? RDF's QK?
59077 C       (problem: K-factor affects everything so only works as
59078 C        intended for min-bias, not for UE ... probably need a 
59079 C        better long-term solution to handle UE as well. Anyway,
59080 C        Mark uses MSTP(33) and PARP(31)-PARP(33).)
59081
59082 C...Global statements
59083       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59084       INTEGER PYK,PYCHGE,PYCOMP
59085
59086 C...Commonblocks.
59087       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59088       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
59089
59090 C...SCI and GAL Commonblocks
59091       COMMON /SCIPAR/MSWI(2),PARSCI(2)
59092
59093 C...Internal parameters      
59094       PARAMETER(MXTUNS=500)
59095       CHARACTER*8 CHVERS, CHDOC
59096       PARAMETER (CHVERS='1.012   ',CHDOC='Sep 2007')      
59097       CHARACTER*16 CHNAMS(0:MXTUNS), CHNAME
59098       CHARACTER*42 CHMSTJ(50), CHMSTP(51:100), CHPARP(61:100), 
59099      &    CHPARJ(41:100), CH40
59100       CHARACTER*60 CH60
59101       CHARACTER*70 CH70
59102       DATA (CHNAMS(I),I=0,1)/'Default',' '/
59103       DATA (CHNAMS(I),I=100,110)/
59104      &    'Tune A','Tune AW','Tune BW','Tune DW','Tune DWT','Tune QW',
59105      &    'ATLAS Tune','Tune ACR','Tune D6','Tune D6T',' '/
59106       DATA (CHNAMS(I),I=300,310)/
59107      &    'Tune S0','Tune S1','Tune S2','Tune S0A','NOCR','Old',
59108      5    'ATLAS-CSC Tune','Yale Tune','Yale-K Tune',2*' '/
59109       DATA (CHNAMS(I),I=200,210)/
59110      &    'IM Tune 1','Tune APT',9*' '/
59111       DATA (CHNAMS(I),I=400,410)/
59112      &    'GAL Tune 0','SCI Tune 0','GAL Tune 1','SCI Tune 1',7*' '/
59113       DATA (CHMSTJ(I),I=11,20)/
59114      &    'HAD choice of fragmentation function(s)',4*' ',
59115      &    'HAD treatment of small-mass systems',4*' '/
59116       DATA (CHMSTJ(I),I=41,50)/
59117      &    'FSR type (Q2 or pT) for old framework',9*' '/
59118       DATA (CHMSTP(I),I=51,100)/
59119      5    'PDF set','PDF set internal (=1) or pdflib (=2)',8*' ',
59120      6    'ISR master switch',6*' ',
59121      6    'ISR phase space choice & ME corrections',' ',
59122      7    'ISR IR regularization scheme',' ',
59123      7    'ISR scheme for FSR off ISR',8*' ',
59124      8    'UE model',
59125      8    'UE hadron transverse mass distribution',5*' ',
59126      8    'BR composite scheme','BR colour scheme',
59127      9    'BR primordial kT compensation',
59128      9    'BR primordial kT distribution',
59129      9    'BR energy partitioning scheme',2*' ',
59130      9    'FSI colour (re-)connection model',5*' '/  
59131       DATA (CHPARP(I),I=61,100)/
59132      6    ' ','ISR IR cutoff',' ','ISR renormalization scale prefactor',
59133      6    2*' ','ISR Q2max factor',3*' ',
59134      7    'FSR Q2max factor for non-s-channel procs',5*' ', 
59135      7    'FSI colour reconnection turnoff scale',
59136      7    'FSI colour reconnection strength',
59137      7    'BR composite x enhancement','BR breakup suppression',
59138      8    2*'UE IR cutoff at reference ecm',
59139      8    2*'UE mass distribution parameter',
59140      8    'UE gg colour correlated fraction','UE total gg fraction',
59141      8    2*' ',
59142      8    'UE IR cutoff reference ecm','UE IR cutoff ecm scaling power',
59143      9    'BR primordial kT width <|kT|>',' ',
59144      9    'BR primordial kT UV cutoff',7*' '/    
59145       DATA (CHPARJ(I),I=41,90)/
59146      4    ' ','HAD string parameter b',8*' ',
59147      5    3*' ','HAD charm parameter','HAD bottom parameter',5*' ',
59148      6    10*' ',10*' ',
59149      8    'FSR Lambda_QCD scale','FSR IR cutoff',8*' '/    
59150       SAVE /PYDAT1/,/PYPARS/
59151       SAVE /SCIPAR/
59152
59153 C...1) Shorthand notation
59154       M13=MSTU(13)
59155       M11=MSTU(11)
59156       IF (ITUNE.LE.MXTUNS.AND.ITUNE.GE.0) THEN
59157         CHNAME=CHNAMS(ITUNE)
59158         IF (ITUNE.EQ.0) GOTO 9999
59159       ELSE
59160         CALL PYERRM(9,'(PYTUNE:) Tune number > max. Using defaults.')       
59161         GOTO 9999
59162       ENDIF
59163
59164 C...2) Hello World 
59165       IF (M13.GE.1) WRITE(M11,5000) CHVERS, CHDOC
59166
59167 C...3) Tune parameters
59168
59169 C=============================================================================
59170 C...Tunes S0, S1, S2, S0A, NOCR, and RAP (by P. Skands)
59171       IF (ITUNE.GE.300.AND.ITUNE.LE.305) THEN 
59172         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
59173         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59174           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59175      &        ' with tune.')       
59176         ENDIF
59177
59178 C...PDFs
59179         MSTP(52)=1
59180         MSTP(51)=7
59181 C...ISR
59182         PARP(64)=1D0
59183 C...UE on, new model.
59184         MSTP(81)=21 
59185 C...Slow IR cutoff energy scaling by default
59186         PARP(89)=1800D0
59187         PARP(90)=0.16D0
59188 C...Switch off trial joinings
59189         MSTP(96)=0
59190 C...Primordial kT cutoff
59191         PARP(93)=5D0
59192
59193 C...S0 (300), S0A (303)
59194         IF (ITUNE.EQ.300.OR.ITUNE.EQ.303) THEN
59195           IF (M13.GE.1) THEN
59196             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
59197             WRITE(M11,5030) CH60
59198             CH60='M. Sandhoff & P. Skands, in hep-ph/0604120'
59199             WRITE(M11,5030) CH60 
59200             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59201             WRITE(M11,5030) CH60
59202           ENDIF
59203 C...Smooth ISR, low FSR
59204           MSTP(70)=2
59205           MSTP(72)=0
59206 C...pT0
59207           PARP(82)=1.85D0     
59208 C...Transverse density profile.
59209           MSTP(82)=5
59210           PARP(83)=1.6D0
59211 C...Colour Reconnections
59212           MSTP(95)=6
59213           PARP(78)=0.20D0
59214           PARP(77)=0.0D0
59215 C...  Reference energy for pT0 and energy scaling pace.
59216           IF (ITUNE.EQ.303) PARP(90)=0.25D0
59217 C...Lambda_FSR scale.
59218           PARJ(81)=0.23D0
59219 C...FSR activity.
59220           PARP(71)=4D0 
59221 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59222           MSTP(89)=1
59223           MSTP(88)=0
59224           PARP(79)=2D0         
59225           PARP(80)=0.01D0
59226
59227 C...S1 (301)
59228         ELSEIF(ITUNE.EQ.301) THEN  
59229           IF (M13.GE.1) THEN
59230             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
59231             WRITE(M11,5030) CH60
59232             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59233             WRITE(M11,5030) CH60
59234           ENDIF
59235 C...Sharp ISR, high FSR
59236           MSTP(70)=0
59237           MSTP(72)=1 
59238 C...pT0 
59239           PARP(82)=2.1D0
59240 C...Colour Reconnections
59241           MSTP(95)=2
59242           PARP(78)=0.35D0
59243 C...Transverse density profile.
59244           MSTP(82)=5
59245           PARP(83)=1.4D0
59246 C...Lambda_FSR scale.
59247           PARJ(81)=0.23D0
59248 C...FSR activity.
59249           PARP(71)=4D0 
59250 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59251           MSTP(89)=1
59252           MSTP(88)=0
59253           PARP(79)=2D0           
59254           PARP(80)=0.01D0
59255
59256 C...S2 (302)
59257         ELSEIF(ITUNE.EQ.302) THEN  
59258           IF (M13.GE.1) THEN
59259             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
59260             WRITE(M11,5030) CH60
59261             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59262             WRITE(M11,5030) CH60
59263           ENDIF
59264 C...Smooth ISR, low FSR
59265           MSTP(70)=2
59266           MSTP(72)=0
59267 C...pT0
59268           PARP(82)=1.9D0 
59269 C...Transverse density profile.
59270           MSTP(82)=5
59271           PARP(83)=1.2D0
59272 C...Colour Reconnections
59273           MSTP(95)=4
59274           PARP(78)=0.15D0
59275 C...Lambda_FSR scale.
59276           PARJ(81)=0.23D0
59277 C...FSR activity.
59278           PARP(71)=4D0 
59279 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59280           MSTP(89)=1
59281           MSTP(88)=0
59282           PARP(79)=2D0          
59283           PARP(80)=0.01D0
59284           
59285 C...NOCR (304)
59286         ELSEIF(ITUNE.EQ.304) THEN  
59287           IF (M13.GE.1) THEN
59288             CH60='"best try" without colour reconnections'
59289             WRITE(M11,5030) CH60
59290             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
59291             WRITE(M11,5030) CH60
59292             CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59293             WRITE(M11,5030) CH60
59294           ENDIF
59295 C...Smooth ISR, low FSR
59296           MSTP(70)=2
59297           MSTP(72)=0
59298 C...pT0
59299           PARP(82)=2.05D0 
59300 C...Transverse density profile.
59301           MSTP(82)=5
59302           PARP(83)=1.8D0
59303 C...Colour Reconnections
59304           MSTP(95)=0       
59305 C...Lambda_FSR scale.
59306           PARJ(81)=0.23D0
59307 C...FSR activity.
59308           PARP(71)=4D0 
59309 C...Lambda order, Valence qq, large qq x enhc, BR-g-BR supp
59310           MSTP(89)=2
59311           MSTP(88)=0
59312           PARP(79)=3D0
59313           PARP(80)=0.01D0
59314
59315 C..."Lo FSR" retune (305)
59316         ELSEIF(ITUNE.EQ.305) THEN  
59317           IF (M13.GE.1) THEN
59318             CH60='"Lo FSR retune" with primitive colour reconnections'
59319             WRITE(M11,5030) CH60
59320             CH60='see T. Sjostrand & P. Skands, EPJC39(2005)129'
59321             WRITE(M11,5030) CH60
59322           ENDIF
59323 C...Smooth ISR, low FSR
59324           MSTP(70)=2
59325           MSTP(72)=0
59326 C...pT0
59327           PARP(82)=1.9D0         
59328 C...Transverse density profile.
59329           MSTP(82)=5
59330           PARP(83)=2.0D0
59331 C...Colour Reconnections
59332           MSTP(95)=1
59333           PARP(78)=1.0D0
59334 C...Lambda_FSR scale.
59335           PARJ(81)=0.23D0
59336 C...FSR activity.
59337           PARP(71)=4D0 
59338 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59339           MSTP(89)=1
59340           MSTP(88)=0
59341           PARP(79)=2D0          
59342           PARP(80)=0.01D0          
59343         ENDIF
59344 C...Output
59345         IF (M13.GE.1) THEN 
59346           WRITE(M11,5030) ' '
59347           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59348           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59349           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59350           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59351           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59352           WRITE(M11,5030) CH60
59353           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
59354           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
59355           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59356           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59357           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59358           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59359           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59360           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59361           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59362           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59363           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59364           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59365           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59366           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59367           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59368           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59369           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59370         ENDIF
59371
59372 C=============================================================================
59373 C...ATLAS-CSC 11-parameter tune (By A. Moraes) 
59374       ELSEIF (ITUNE.EQ.306) THEN 
59375         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
59376         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59377           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59378      &        ' with tune.')       
59379         ENDIF
59380
59381 C...PDFs
59382         MSTP(52)=2
59383         MSTP(54)=2
59384         MSTP(56)=2
59385         MSTP(51)=10042
59386         MSTP(53)=10042
59387         MSTP(55)=10042
59388 C...ISR
59389 C        PARP(64)=1D0
59390 C...UE on, new model.
59391         MSTP(81)=21 
59392 C...Energy scaling
59393         PARP(89)=1800D0
59394         PARP(90)=0.22D0
59395 C...Switch off trial joinings
59396         MSTP(96)=0
59397 C...Primordial kT cutoff
59398
59399         IF (M13.GE.1) THEN
59400           CH60='see presentations by A. Moraes (ATLAS),'
59401           WRITE(M11,5030) CH60
59402           CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59403           WRITE(M11,5030) CH60
59404           WRITE(M11,5030) ' '
59405           CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
59406      &        'externally linked and'
59407           WRITE(M11,5035) CH70
59408           CH70='MSTP(51) should be set manually according to '//
59409      &        'the library used'
59410           WRITE(M11,5035) CH70
59411         ENDIF
59412 C...Smooth ISR, low FSR
59413         MSTP(70)=2
59414         MSTP(72)=0
59415 C...pT0
59416         PARP(82)=1.9D0     
59417 C...Transverse density profile.
59418         MSTP(82)=4
59419         PARP(83)=0.3D0
59420         PARP(84)=0.5D0
59421 C...ISR & FSR in interactions after the first (default)
59422         MSTP(84)=1
59423         MSTP(85)=1
59424 C...No double-counting (default)
59425         MSTP(86)=2
59426 C...Companion quark parent gluon (1-x) power
59427         MSTP(87)=4
59428 C...Primordial kT compensation along chaings (default = 0 : uniform)
59429         MSTP(90)=1 
59430 C...Colour Reconnections
59431         MSTP(95)=1
59432         PARP(78)=0.2D0
59433 C...Lambda_FSR scale.
59434         PARJ(81)=0.23D0
59435 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
59436         MSTP(89)=1
59437         MSTP(88)=0
59438 C   PARP(79)=2D0         
59439         PARP(80)=0.01D0
59440 C...Peterson charm frag, and c and b hadr parameters
59441         MSTJ(11)=3
59442         PARJ(54)=-0.07
59443         PARJ(55)=-0.006
59444 C...  Output
59445         IF (M13.GE.1) THEN 
59446           WRITE(M11,5030) ' '
59447           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59448           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59449           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59450           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59451           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59452           WRITE(M11,5030) CH60
59453           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
59454           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
59455           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59456           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59457           CH60='(Note: PARJ(81) changed from 0.14! See update notes)'
59458           WRITE(M11,5030) CH60
59459           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59460           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59461           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59462           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59463           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59464           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59465           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59466           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59467           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59468           WRITE(M11,5040) 90, MSTP(90), CHMSTP(90)
59469           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59470           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59471           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59472           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59473           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59474           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59475           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59476           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59477         ENDIF
59478
59479 C=============================================================================
59480 C...Tunes A, AW, BW, DW, DWT, QW, D6, D6T (by R.D. Field, CDF) 
59481 C...(100-105,108-109) and ATLAS-DC2 Tune (by A. Moraes, ATLAS) (106)
59482       ELSEIF ((ITUNE.GE.100.AND.ITUNE.LE.106).OR.ITUNE.EQ.108.OR.
59483      &      ITUNE.EQ.109) THEN
59484         IF (M13.GE.1.AND.ITUNE.NE.106) THEN 
59485           WRITE(M11,5010) ITUNE, CHNAME
59486           CH60='see R.D. Field (CDF), in hep-ph/0610012'
59487           WRITE(M11,5030) CH60 
59488           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59489           WRITE(M11,5030) CH60
59490         ENDIF
59491 C...Multiple interactions on, old framework
59492         MSTP(81)=1
59493 C...Fast IR cutoff energy scaling by default
59494         PARP(89)=1800D0
59495         PARP(90)=0.25D0
59496 C...Default CTEQ5L (internal), except for QW: CTEQ61 (external)
59497         MSTP(51)=7
59498         MSTP(52)=1
59499         IF (ITUNE.EQ.105) THEN 
59500           MSTP(51)=10150
59501           MSTP(52)=2
59502         ELSEIF(ITUNE.EQ.108.OR.ITUNE.EQ.109) THEN
59503           MSTP(52)=2
59504           MSTP(54)=2
59505           MSTP(56)=2
59506           MSTP(51)=10042
59507           MSTP(53)=10042
59508           MSTP(55)=10042
59509         ENDIF
59510 C...Double Gaussian matter distribution. 
59511         MSTP(82)=4
59512         PARP(83)=0.5D0
59513         PARP(84)=0.4D0
59514 C...FSR activity. 
59515         PARP(71)=4D0
59516 C...Lambda_FSR scale. 
59517         PARJ(81)=0.29D0     
59518 C...Fragmentation functions and c and b parameters
59519         MSTJ(11)=4
59520         PARJ(54)=-0.05
59521         PARJ(55)=-0.005
59522
59523 C...Tune A and AW 
59524         IF(ITUNE.EQ.100.OR.ITUNE.EQ.101) THEN
59525 C...pT0.
59526           PARP(82)=2.0D0
59527 c...String drawing almost completely minimizes string length.
59528           PARP(85)=0.9D0
59529           PARP(86)=0.95D0
59530 C...ISR cutoff, muR scale factor, and phase space size
59531           PARP(62)=1D0
59532           PARP(64)=1D0
59533           PARP(67)=4D0
59534 C...Intrinsic kT, size, and max
59535           MSTP(91)=1
59536           PARP(91)=1D0
59537           PARP(93)=5D0
59538 C...AW : higher ISR IR cutoff, but also larger alpha_s and more intrinsic kT.
59539           IF (ITUNE.EQ.101) THEN
59540             PARP(62)=1.25D0
59541             PARP(64)=0.2D0
59542             PARP(91)=2.1D0
59543             PARP(92)=15.0D0
59544           ENDIF
59545           
59546 C...Tune BW (larger alpha_s, more intrinsic kT. Smaller ISR phase space.)
59547         ELSEIF (ITUNE.EQ.102) THEN
59548 C...pT0.
59549           PARP(82)=1.9D0
59550 c...String drawing completely minimizes string length.
59551           PARP(85)=1.0D0
59552           PARP(86)=1.0D0
59553 C...ISR cutoff, muR scale factor, and phase space size
59554           PARP(62)=1.25D0
59555           PARP(64)=0.2D0
59556           PARP(67)=1D0
59557 C...Intrinsic kT, size, and max
59558           MSTP(91)=1
59559           PARP(91)=2.1D0
59560           PARP(93)=15D0
59561
59562 C...Tune DW
59563         ELSEIF (ITUNE.EQ.103) THEN
59564 C...pT0.
59565           PARP(82)=1.9D0
59566 c...String drawing completely minimizes string length.
59567           PARP(85)=1.0D0
59568           PARP(86)=1.0D0
59569 C...ISR cutoff, muR scale factor, and phase space size
59570           PARP(62)=1.25D0
59571           PARP(64)=0.2D0
59572           PARP(67)=2.5D0
59573 C...Intrinsic kT, size, and max
59574           MSTP(91)=1
59575           PARP(91)=2.1D0
59576           PARP(93)=15D0
59577
59578 C...Tune DWT
59579         ELSEIF (ITUNE.EQ.104) THEN
59580 C...pT0.
59581           PARP(82)=1.9409D0
59582 C...Run II ref scale and slow scaling
59583           PARP(89)=1960D0
59584           PARP(90)=0.16D0
59585 c...String drawing completely minimizes string length.
59586           PARP(85)=1.0D0
59587           PARP(86)=1.0D0
59588 C...ISR cutoff, muR scale factor, and phase space size
59589           PARP(62)=1.25D0
59590           PARP(64)=0.2D0
59591           PARP(67)=2.5D0
59592 C...Intrinsic kT, size, and max
59593           MSTP(91)=1
59594           PARP(91)=2.1D0
59595           PARP(93)=15D0
59596
59597 C...Tune QW
59598         ELSEIF(ITUNE.EQ.105) THEN
59599           IF (M13.GE.1) THEN 
59600             WRITE(M11,5030) ' '
59601             CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
59602      &           'externally linked and'
59603             WRITE(M11,5035) CH70
59604             CH70='MSTP(51) should be set manually according to '//
59605      &          'the library used'
59606             WRITE(M11,5035) CH70
59607           ENDIF
59608 C...pT0.
59609           PARP(82)=1.1D0
59610 c...String drawing completely minimizes string length.
59611           PARP(85)=1.0D0
59612           PARP(86)=1.0D0
59613 C...ISR cutoff, muR scale factor, and phase space size
59614           PARP(62)=1.25D0
59615           PARP(64)=0.2D0
59616           PARP(67)=2.5D0
59617 C...Intrinsic kT, size, and max
59618           MSTP(91)=1
59619           PARP(91)=2.1D0
59620           PARP(93)=15D0
59621
59622 C...Tune D6 and D6T
59623         ELSEIF(ITUNE.EQ.108.OR.ITUNE.EQ.109) THEN
59624           IF (M13.GE.1) THEN 
59625             WRITE(M11,5030) ' '
59626             CH70='NB! This tune requires CTEQ6L pdfs to be '//
59627      &           'externally linked and'
59628             WRITE(M11,5035) CH70
59629             CH70='MSTP(51) should be set manually according to '//
59630      &          'the library used'
59631             WRITE(M11,5035) CH70
59632           ENDIF
59633 C...The "Rick" proton, double gauss with 0.5/0.4
59634           MSTP(82)=4
59635           PARP(83)=0.5D0
59636           PARP(84)=0.4D0
59637 c...String drawing completely minimizes string length.
59638           PARP(85)=1.0D0
59639           PARP(86)=1.0D0
59640           IF (ITUNE.EQ.108) THEN
59641 C...D6: pT0, Run I ref scale, and fast energy scaling
59642             PARP(82)=1.8D0
59643             PARP(89)=1800D0
59644             PARP(90)=0.25D0
59645           ELSE
59646 C...D6T: pT0, Run II ref scale, and slow energy scaling
59647             PARP(82)=1.8387D0
59648             PARP(89)=1960D0
59649             PARP(90)=0.16D0
59650           ENDIF
59651 C...ISR cutoff, muR scale factor, and phase space size
59652           PARP(62)=1.25D0
59653           PARP(64)=0.2D0
59654           PARP(67)=2.5D0
59655 C...Intrinsic kT, size, and max
59656           MSTP(91)=1
59657           PARP(91)=2.1D0
59658           PARP(93)=15D0
59659           
59660 C...Old ATLAS-DC2 5-parameter tune
59661         ELSEIF(ITUNE.EQ.106) THEN
59662           IF (M13.GE.1) THEN 
59663             WRITE(M11,5010) ITUNE, CHNAME
59664             CH60='see A. Moraes et al., SN-ATLAS-2006-057'
59665             WRITE(M11,5030) CH60
59666             CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59667             WRITE(M11,5030) CH60
59668           ENDIF
59669 C...  pT0.
59670           PARP(82)=1.8D0
59671 C...  Different ref and rescaling pacee
59672           PARP(89)=1000D0
59673           PARP(90)=0.16D0
59674 C...  Parameters of mass distribution
59675           PARP(83)=0.5D0
59676           PARP(84)=0.5D0
59677 C...  Old default string drawing
59678           PARP(85)=0.33D0
59679           PARP(86)=0.66D0
59680 C...  ISR, phase space equivalent to Tune B
59681           PARP(62)=1D0
59682           PARP(64)=1D0
59683           PARP(67)=1D0
59684 C...  FSR
59685           PARP(71)=4D0
59686           PARJ(81)=0.29D0
59687 C...  Intrinsic kT
59688           MSTP(91)=1
59689           PARP(91)=1D0
59690           PARP(93)=5D0
59691         ENDIF
59692         
59693 C...  Output
59694         IF (M13.GE.1) THEN 
59695           WRITE(M11,5030) ' '
59696           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59697           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59698           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59699           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59700           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59701           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59702           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59703           WRITE(M11,5030) CH60
59704           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59705           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59706           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59707           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59708           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59709           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59710           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59711           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59712           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59713           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59714           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59715           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59716           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59717           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59718           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59719           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59720           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59721         ENDIF     
59722
59723 C=============================================================================
59724 C... ACR, tune A with new CR (107)
59725       ELSEIF(ITUNE.EQ.107) THEN
59726         IF (M13.GE.1) THEN 
59727           WRITE(M11,5010) ITUNE, CHNAME
59728           CH60='Tune A modified with new colour reconnections'
59729           WRITE(M11,5030) CH60
59730           CH60='PARP(85)=0D0 and amount of CR is regulated by PARP(78)'
59731           WRITE(M11,5030) CH60 
59732           CH60='see P. Skands & D. Wicke, hep-ph/0703081,'
59733           WRITE(M11,5030) CH60 
59734           CH60='R.D. Field (CDF), in hep-ph/0610012 (Tune A)'
59735           WRITE(M11,5030) CH60 
59736           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59737           WRITE(M11,5030) CH60
59738         ENDIF
59739         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.406))THEN
59740           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59741      &        ' with tune. Using defaults.')       
59742           GOTO 9998
59743         ENDIF
59744         MSTP(81)=1
59745         PARP(89)=1800D0
59746         PARP(90)=0.25D0
59747         MSTP(82)=4
59748         PARP(83)=0.5D0
59749         PARP(84)=0.4D0
59750         MSTP(51)=7
59751         MSTP(52)=1
59752         PARP(71)=4D0
59753         PARJ(81)=0.29D0
59754         PARP(82)=2.0D0
59755         PARP(85)=0.0D0
59756         PARP(86)=0.66D0
59757         PARP(62)=1D0
59758         PARP(64)=1D0
59759         PARP(67)=4D0
59760         MSTP(91)=1
59761         PARP(91)=1D0
59762         PARP(93)=5D0
59763         MSTP(95)=6
59764         PARP(78)=0.25D0
59765 C...Fragmentation functions and c and b parameters
59766         MSTJ(11)=4
59767         PARJ(54)=-0.05
59768         PARJ(55)=-0.005
59769 C...Output
59770         IF (M13.GE.1) THEN 
59771           WRITE(M11,5030) ' '
59772           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59773           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59774           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59775           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59776           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59777           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59778           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59779           WRITE(M11,5030) CH60
59780           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59781           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59782           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59783           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59784           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59785           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59786           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59787           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59788           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59789           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59790           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59791           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59792           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59793           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59794           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59795           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59796           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59797           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59798           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59799         ENDIF
59800
59801 C=============================================================================
59802 C...  Intermediate model. Rap tune (retuned to post-6.406 IR factorization)
59803       ELSEIF(ITUNE.EQ.200) THEN
59804         IF (M13.GE.1) THEN 
59805           WRITE(M11,5010) ITUNE, CHNAME
59806           CH60='see T. Sjostrand & P. Skands, JHEP03(2004)053'
59807           WRITE(M11,5030) CH60
59808         ENDIF
59809         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
59810           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59811      &        ' with tune.')       
59812         ENDIF
59813 C...PDF
59814         MSTP(51)=7
59815         MSTP(52)=1
59816 C...ISR 
59817         PARP(62)=1D0
59818         PARP(64)=1D0
59819         PARP(67)=4D0
59820 C...FSR
59821         PARP(71)=4D0
59822         PARJ(81)=0.29D0
59823 C...UE
59824         MSTP(81)=11
59825         PARP(82)=2.25D0
59826         PARP(89)=1800D0
59827         PARP(90)=0.25D0
59828 C...  ExpOfPow(1.8) overlap profile
59829         MSTP(82)=5
59830         PARP(83)=1.8D0
59831 C...  Valence qq
59832         MSTP(88)=0
59833 C...  Rap Tune
59834         MSTP(89)=1
59835 C...  Default diquark, BR-g-BR supp
59836         PARP(79)=2D0           
59837         PARP(80)=0.01D0
59838 C...  Final state reconnect.
59839         MSTP(95)=1
59840         PARP(78)=0.55D0 
59841 C...Fragmentation functions and c and b parameters
59842         MSTJ(11)=4
59843         PARJ(54)=-0.05
59844         PARJ(55)=-0.005
59845 C...  Output
59846         IF (M13.GE.1) THEN 
59847           WRITE(M11,5030) ' '
59848           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59849           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59850           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59851           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59852           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59853           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59854           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59855           WRITE(M11,5030) CH60
59856           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59857           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59858           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59859           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59860           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59861           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59862           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59863           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59864           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
59865           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
59866           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
59867           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
59868           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59869           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
59870           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
59871           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59872           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59873           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59874         ENDIF
59875
59876 C...APT. Tune A modified to use new pT-ordered FSR.
59877       ELSEIF(ITUNE.EQ.201) THEN
59878         IF (M13.GE.1) THEN 
59879           WRITE(M11,5010) ITUNE, CHNAME
59880           CH60='see P. Skands & D. Wicke, hep-ph/0703081 (Tune APT),'
59881           WRITE(M11,5030) CH60 
59882           CH60='R.D. Field (CDF), in hep-ph/0610012 (Tune A)'
59883           WRITE(M11,5030) CH60
59884           CH60='T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59885           WRITE(M11,5030) CH60
59886           CH60='and T. Sjostrand & P. Skands, EPJC39(2005)129'
59887           WRITE(M11,5030) CH60
59888         ENDIF
59889         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.411))THEN
59890           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
59891      &        ' with tune.')       
59892         ENDIF
59893 C...First set as if Pythia tune A
59894 C...Multiple interactions on, old framework
59895         MSTP(81)=1
59896 C...Fast IR cutoff energy scaling by default
59897         PARP(89)=1800D0
59898         PARP(90)=0.25D0
59899 C...Default CTEQ5L (internal)
59900         MSTP(51)=7
59901         MSTP(52)=1
59902 C...Double Gaussian matter distribution. 
59903         MSTP(82)=4
59904         PARP(83)=0.5D0
59905         PARP(84)=0.4D0
59906 C...FSR activity. 
59907         PARP(71)=4D0
59908 c...String drawing almost completely minimizes string length.
59909         PARP(85)=0.9D0
59910         PARP(86)=0.95D0
59911 C...ISR cutoff, muR scale factor, and phase space size
59912         PARP(62)=1D0
59913         PARP(64)=1D0
59914         PARP(67)=4D0
59915 C...Intrinsic kT, size, and max
59916         MSTP(91)=1
59917         PARP(91)=1D0
59918         PARP(93)=5D0
59919 C...Use pT-ordered FSR
59920         MSTJ(41)=12
59921 C...Lambda_FSR scale for pT-ordering 
59922         PARJ(81)=0.23D0
59923 C...Retune pT0
59924         PARP(82)=2.1D0
59925 C...Fragmentation functions and c and b parameters
59926         MSTJ(11)=4
59927         PARJ(54)=-0.05
59928         PARJ(55)=-0.005
59929
59930 C...  Output
59931         IF (M13.GE.1) THEN 
59932           WRITE(M11,5030) ' '
59933           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
59934           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
59935           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
59936           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
59937           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
59938           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
59939           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
59940           WRITE(M11,5030) CH60
59941           WRITE(M11,5070) 41, MSTJ(41), CHMSTJ(41)
59942           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
59943           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
59944           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
59945           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
59946           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
59947           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
59948           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
59949           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
59950           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
59951           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
59952           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
59953           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
59954           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
59955           WRITE(M11,5050) 93, PARP(93), CHPARP(93)          
59956           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
59957           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
59958           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
59959         ENDIF     
59960
59961 C=============================================================================
59962 C...Uppsala models: Generalized Area Law and Soft Colour Interactions
59963       ELSEIF(CHNAME.EQ.'GAL Tune 0'.OR.CHNAME.EQ.'GAL Tune 1') THEN
59964         IF (M13.GE.1) THEN 
59965           WRITE(M11,5010) ITUNE, CHNAME
59966           CH60='see J. Rathsman, PLB452(1999)364'
59967           WRITE(M11,5030) CH60
59968 C ?         CH60='A. Edin, G. Ingelman, J. Rathsman, hep-ph/9912539,'
59969 C ?         WRITE(M11,5030)
59970           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
59971           WRITE(M11,5030) CH60          
59972           WRITE(M11,5030) ' '    
59973           CH70='NB! The GAL model must be run with modified '//
59974      &        'Pythia v6.215:'
59975           WRITE(M11,5035) CH70
59976           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
59977           WRITE(M11,5035) CH70
59978           WRITE(M11,5030) ' '
59979         ENDIF
59980 C...GAL Recommended settings from Uppsala web page (as per 22/08 2006)
59981         MSWI(2) = 3
59982         PARSCI(2) = 0.10
59983         MSWI(1) = 2
59984         PARSCI(1) = 0.44
59985         MSTJ(16) = 0
59986         PARJ(42) = 0.45
59987         PARJ(82) = 2.0
59988         PARP(62) = 2.0  
59989         MSTP(81) = 1
59990         MSTP(82) = 1
59991         PARP(81) = 1.9
59992         MSTP(92) = 1
59993         IF(CHNAME.EQ.'GAL Tune 1') THEN
59994 C...GAL retune (P. Skands) to get better min-bias <Nch> at Tevatron
59995           MSTP(82)=4
59996           PARP(83)=0.25D0
59997           PARP(84)=0.5D0
59998           PARP(82) = 1.75
59999           IF (M13.GE.1) THEN 
60000             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60001             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
60002             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60003             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
60004             WRITE(M11,5050) 84, PARP(84), CHPARP(84)
60005           ENDIF
60006         ELSE
60007           IF (M13.GE.1) THEN
60008             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60009             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
60010             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60011           ENDIF
60012         ENDIF
60013 C...Output
60014         IF (M13.GE.1) THEN
60015           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
60016           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
60017           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
60018           CH40='FSI SCI/GAL selection'
60019           WRITE(M11,6040) 1, MSWI(1), CH40
60020           CH40='FSI SCI/GAL sea quark treatment'
60021           WRITE(M11,6040) 2, MSWI(2), CH40
60022           CH40='FSI SCI/GAL sea quark treatment parm'
60023           WRITE(M11,6050) 1, PARSCI(1), CH40
60024           CH40='FSI SCI/GAL string reco probability R_0'
60025           WRITE(M11,6050) 2, PARSCI(2), CH40 
60026           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
60027           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
60028         ENDIF
60029       ELSEIF(CHNAME.EQ.'SCI Tune 0'.OR.CHNAME.EQ.'SCI Tune 1') THEN
60030         IF (M13.GE.1) THEN 
60031           WRITE(M11,5010) ITUNE, CHNAME
60032           CH60='see A.Edin et al, PLB366(1996)371, Z.Phys.C75(1997)57,'
60033           WRITE(M11,5030) CH60
60034           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
60035           WRITE(M11,5030) CH60          
60036           WRITE(M11,5030) ' '    
60037           CH70='NB! The SCI model must be run with modified '//
60038      &        'Pythia v6.215:'
60039           WRITE(M11,5035) CH70
60040           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
60041           WRITE(M11,5035) CH70
60042           WRITE(M11,5030) ' '
60043         ENDIF
60044 C...SCI Recommended settings from Uppsala web page (as per 22/08 2006)
60045         MSTP(81)=1
60046         MSTP(82)=1
60047         PARP(81)=2.2
60048         MSTP(92)=1        
60049         MSWI(2)=2               
60050         PARSCI(2)=0.50          
60051         MSWI(1)=2               
60052         PARSCI(1)=0.44          
60053         MSTJ(16)=0              
60054         IF (CHNAME.EQ.'SCI Tune 1') THEN
60055 C...SCI retune (P. Skands) to get better min-bias <Nch> at Tevatron
60056           MSTP(81) = 1
60057           MSTP(82) = 3
60058           PARP(82) = 2.4
60059           PARP(83) = 0.5D0
60060           PARP(62) = 1.5
60061           PARP(84)=0.25D0        
60062           IF (M13.GE.1) THEN 
60063             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60064             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
60065             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60066             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
60067             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
60068           ENDIF
60069         ELSE
60070           IF (M13.GE.1) THEN
60071             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
60072             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
60073             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
60074           ENDIF
60075         ENDIF
60076 C...Output
60077         IF (M13.GE.1) THEN 
60078           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
60079           CH40='FSI SCI/GAL selection'
60080           WRITE(M11,6040) 1, MSWI(1), CH40
60081           CH40='FSI SCI/GAL sea quark treatment'
60082           WRITE(M11,6040) 2, MSWI(2), CH40
60083           CH40='FSI SCI/GAL sea quark treatment parm'
60084           WRITE(M11,6050) 1, PARSCI(1), CH40
60085           CH40='FSI SCI/GAL string reco probability R_0'
60086           WRITE(M11,6050) 2, PARSCI(2), CH40 
60087           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
60088         ENDIF
60089
60090       ELSE
60091         IF (MSTU(13).GE.1) WRITE(M11,5020) ITUNE
60092
60093       ENDIF   
60094  
60095  9998 IF (MSTU(13).GE.1) WRITE(M11,6000) 
60096
60097  9999 RETURN 
60098
60099  5000 FORMAT(1x,78('*')/' *',76x,'*'/' *',3x,'PYTUNE v',A6,' : ',
60100      &    'Presets for underlying-event (and min-bias)',13x,'*'/' *',
60101      &    20x,'Last Change : ',A8,' - P. Skands',22x,'*'/' *',76x,'*')
60102  5010 FORMAT(' *',3x,I4,1x,A16,52x,'*')
60103  5020 FORMAT(' *',3x,'Tune ',I4, ' not recognized. Using defaults.')
60104  5030 FORMAT(' *',3x,10x,A60,3x,'*')
60105  5035 FORMAT(' *',3x,A70,3x,'*')
60106  5040 FORMAT(' *',5x,'MSTP(',I2,') = ',I12,3x,A42,3x,'*')
60107  5050 FORMAT(' *',5x,'PARP(',I2,') = ',F12.4,3x,A40,5x,'*')
60108  5060 FORMAT(' *',5x,'PARJ(',I2,') = ',F12.4,3x,A40,5x,'*')
60109  5070 FORMAT(' *',5x,'MSTJ(',I2,') = ',I12,3x,A40,5x,'*')
60110  5140 FORMAT(' *',5x,'MSTP(',I3,')= ',I12,3x,A40,5x,'*')
60111  5150 FORMAT(' *',5x,'PARP(',I3,')= ',F12.4,3x,A40,5x,'*')
60112  6000 FORMAT(' *',76x,'*'/1x,32('*'),1x,'END OF PYTUNE',1x,31('*')) 
60113  6040 FORMAT(' *',5x,'MSWI(',I1,')  = ',I12,3x,A40,5x,'*')
60114  6050 FORMAT(' *',5x,'PARSCI(',I1,')= ',F12.4,3x,A40,5x,'*')
60115
60116       END 
60117
60118 C*********************************************************************
60119  
60120 C...PYEXEC
60121 C...Administrates the fragmentation and decay chain.
60122  
60123       SUBROUTINE PYEXEC
60124  
60125 C...Double precision and integer declarations.
60126       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60127       IMPLICIT INTEGER(I-N)
60128       INTEGER PYK,PYCHGE,PYCOMP
60129 C...Commonblocks.
60130       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
60131       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60132       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60133       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60134       COMMON/PYINT1/MINT(400),VINT(400)
60135       COMMON/PYINT4/MWID(500),WIDS(500,5)
60136       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYINT4/
60137 C...Local array.
60138       DIMENSION PS(2,6),IJOIN(100)
60139  
60140 C...Initialize and reset.
60141       MSTU(24)=0
60142       IF(MSTU(12).NE.12345) CALL PYLIST(0)
60143       MSTU(29)=0
60144       MSTU(31)=MSTU(31)+1
60145       MSTU(1)=0
60146       MSTU(2)=0
60147       MSTU(3)=0
60148       IF(MSTU(17).LE.0) MSTU(90)=0
60149       MCONS=1
60150  
60151 C...Sum up momentum, energy and charge for starting entries.
60152       NSAV=N
60153       DO 110 I=1,2
60154         DO 100 J=1,6
60155           PS(I,J)=0D0
60156   100   CONTINUE
60157   110 CONTINUE
60158       DO 130 I=1,N
60159         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
60160         DO 120 J=1,4
60161           PS(1,J)=PS(1,J)+P(I,J)
60162   120   CONTINUE
60163         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
60164   130 CONTINUE
60165       PARU(21)=PS(1,4)
60166  
60167 C...Start by all decays of coloured resonances involved in shower.
60168       NORIG=N
60169       DO 140 I=1,NORIG
60170         IF(K(I,1).EQ.3) THEN
60171           KC=PYCOMP(K(I,2))
60172           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
60173         ENDIF
60174   140 CONTINUE
60175  
60176 C...Prepare system for subsequent fragmentation/decay.
60177       CALL PYPREP(0)
60178       IF(MINT(51).NE.0) RETURN
60179  
60180 C...Loop through jet fragmentation and particle decays.
60181       MBE=0
60182   150 MBE=MBE+1
60183       IP=0
60184   160 IP=IP+1
60185       KC=0
60186       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
60187       IF(KC.EQ.0) THEN
60188  
60189 C...Deal with any remaining undecayed resonance
60190 C...(normally the task of PYEVNT, so seldom used).
60191       ELSEIF(MWID(KC).NE.0) THEN
60192         IBEG=IP
60193         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
60194           IBEG=IP+1
60195   170     IBEG=IBEG-1
60196           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
60197           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
60198           IEND=IP-1
60199   180     IEND=IEND+1
60200           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
60201           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
60202           NJOIN=0
60203           DO 190 I=IBEG,IEND
60204             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
60205               NJOIN=NJOIN+1
60206               IJOIN(NJOIN)=I
60207             ENDIF
60208   190     CONTINUE
60209         ENDIF
60210         CALL PYRESD(IP)
60211         CALL PYPREP(IBEG)
60212         IF(MINT(51).NE.0) RETURN
60213  
60214 C...Particle decay if unstable and allowed. Save long-lived particle
60215 C...decays until second pass after Bose-Einstein effects.
60216       ELSEIF(KCHG(KC,2).EQ.0) THEN
60217         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
60218      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
60219      &  CALL PYDECY(IP)
60220  
60221 C...Decay products may develop a shower.
60222         IF(MSTJ(92).GT.0) THEN
60223           IP1=MSTJ(92)
60224           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
60225      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
60226           MINT(33)=0
60227           if(parj(200).ne.1.) CALL PYSHOW(IP1,IP1+1,QMAX)
60228           if(parj(200).eq.1.) CALL PYSHOWQ(IP1,IP1+1,QMAX)
60229           CALL PYPREP(IP1)
60230           IF(MINT(51).NE.0) RETURN
60231           MSTJ(92)=0
60232         ELSEIF(MSTJ(92).LT.0) THEN
60233           IP1=-MSTJ(92)
60234           MINT(33)=0
60235           if(parj(200).ne.1.) CALL PYSHOW(IP1,-3,P(IP,5))
60236           if(parj(200).eq.1.) CALL PYSHOWQ(IP1,-3,P(IP,5))
60237           CALL PYPREP(IP1)
60238           IF(MINT(51).NE.0) RETURN
60239           MSTJ(92)=0
60240         ENDIF
60241  
60242 C...Jet fragmentation: string or independent fragmentation.
60243       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
60244         MFRAG=MSTJ(1)
60245         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
60246         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
60247           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
60248      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
60249             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
60250           ENDIF
60251         ENDIF
60252         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
60253         IF(MFRAG.EQ.2) CALL PYINDF(IP)
60254         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
60255         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
60256       ENDIF
60257  
60258 C...Loop back if enough space left in PYJETS and no error abort.
60259       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
60260       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
60261         GOTO 160
60262       ELSEIF(IP.LT.N) THEN
60263         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
60264       ENDIF
60265  
60266 C...Include simple Bose-Einstein effect parametrization if desired.
60267       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
60268         CALL PYBOEI(NSAV)
60269         GOTO 150
60270       ENDIF
60271  
60272 C...Check that momentum, energy and charge were conserved.
60273       DO 210 I=1,N
60274         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
60275         DO 200 J=1,4
60276           PS(2,J)=PS(2,J)+P(I,J)
60277   200   CONTINUE
60278         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
60279   210 CONTINUE
60280       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
60281      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
60282       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
60283      &'(PYEXEC:) four-momentum was not conserved')
60284       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
60285      &'(PYEXEC:) charge was not conserved')
60286  
60287       RETURN
60288       END
60289  
60290 C*********************************************************************
60291  
60292 C...PYPREP
60293 C...Rearranges partons along strings.
60294 C...Special considerations for systems with junctions, with
60295 C...possibility of junction-antijunction annihilation.
60296 C...Allows small systems to collapse into one or two particles.
60297 C...Checks flavours and colour singlet invariant masses.
60298  
60299       SUBROUTINE PYPREP(IP)
60300  
60301 C...Double precision and integer declarations.
60302       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60303       INTEGER PYK,PYCHGE,PYCOMP
60304 C...Commonblocks.
60305       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
60306       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60307       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
60308       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60309       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60310       COMMON/PYINT1/MINT(400),VINT(400)
60311 C...The common block of colour tags.
60312       COMMON/PYCTAG/NCT,MCT(4000,2)
60313       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYCTAG/,
60314      &/PYPARS/
60315       DATA NERRPR/0/
60316       SAVE NERRPR
60317 C...Local arrays.
60318       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
60319      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
60320      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
60321      &IJCP(0:6),TJUOLD(5)
60322       CHARACTER CHTMP*6
60323  
60324 C...Function to give four-product.
60325       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)
60326  
60327 C...Rearrange parton shower product listing along strings: begin loop.
60328       MSTU(24)=0
60329       NOLD=N
60330       I1=N
60331       NJUNC=0
60332       NPIECE=0
60333       NJJSTR=0
60334       MSTU32=MSTU(32)+1
60335       DO 100 I=MAX(1,IP),N
60336 C...First store junction positions.
60337         IF(K(I,1).EQ.42) THEN
60338           NJUNC=NJUNC+1
60339           IJUNC(NJUNC,0)=I
60340           IJUNC(NJUNC,4)=0
60341         ENDIF
60342   100 CONTINUE
60343  
60344       DO 250 MQGST=1,3
60345         DO 240 I=MAX(1,IP),N
60346 C...Special treatment for junctions
60347           IF (K(I,1).LE.0) GOTO 240
60348           IF(K(I,1).EQ.42) THEN
60349 C...MQGST=2: Look for junction-junction strings (not detected in the
60350 C...main search below).
60351             IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
60352               IF (NJJSTR.EQ.0) THEN
60353                 NJJSTR = (3*NJUNC-NPIECE)/2
60354               ENDIF
60355 C...Check how many already identified strings end on this junction
60356               ILC=0
60357               DO 110 J=1,NPIECE
60358                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
60359   110         CONTINUE
60360 C...If less than 3, remaining must be to another junction
60361               IF (ILC.LT.3) THEN
60362                 IF (ILC.NE.2) THEN
60363 C...Multiple j-j connections not handled yet.
60364                   CALL PYERRM(2,
60365      &            '(PYPREP:) Too many junction-junction strings.')
60366                   MINT(51)=1
60367                   RETURN
60368                 ENDIF
60369 C...The colour information in the junction is unreadable for the
60370 C...colour space search further down in this routine, so we must
60371 C...start on the colour mother of this junction and then "artificially"
60372 C...prevent the colour mother from connecting here again.
60373                 ITJUNC=MOD(K(I,4)/MSTU(5),MSTU(5))
60374                 KCS=4
60375                 IF (MOD(ITJUNC,2).EQ.0) KCS=5
60376 C...Switch colour if the junction-junction leg is presumably a
60377 C...junction mother leg rather than a junction daughter leg.
60378                 IF (ITJUNC.GE.3) KCS=9-KCS
60379                 IF (MINT(33).EQ.0) THEN
60380 C...Find the unconnected leg and reorder junction daughter pointers so
60381 C...MOD(K(I,4),MSTU(5)) always points to the junction-junction string
60382 C...piece.
60383                   IA=MOD(K(I,4),MSTU(5))
60384                   IF (K(IA,KCS)/MSTU(5)**2.GE.2) THEN
60385                     ITMP=MOD(K(I,5),MSTU(5))
60386                     IF (K(ITMP,KCS)/MSTU(5)**2.GE.2) THEN
60387                       ITMP=MOD(K(I,5)/MSTU(5),MSTU(5))
60388                       K(I,5)=K(I,5)+(IA-ITMP)*MSTU(5)
60389                     ELSE
60390                       K(I,5)=K(I,5)+(IA-ITMP)
60391                     ENDIF
60392                     K(I,4)=K(I,4)+(ITMP-IA)
60393                     IA=ITMP
60394                   ENDIF
60395                   IF (ITJUNC.LE.2) THEN
60396 C...Beam baryon junction
60397                     K(IA,KCS)   = K(IA,KCS) + 2*MSTU(5)**2
60398                     K(I,KCS)    = K(I,KCS) + 1*MSTU(5)**2
60399 C...Else 1 -> 2 decay junction
60400                   ELSE
60401                     K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
60402                     K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
60403                   ENDIF
60404                   I1BEG = I1
60405                   NSTP = 0
60406                   GOTO 170
60407 C...Alternatively use colour tag information.
60408                 ELSE
60409 C...Find a final state parton with appropriate dangling colour tag.
60410                   JCT=0
60411                   IA=0
60412                   IJUMO=K(I,3)
60413                   DO 140 J1=MAX(1,IP),N
60414                     IF (K(J1,1).NE.3) GOTO 140
60415 C...Check for matching final-state colour tag
60416                     IMATCH=0
60417                     DO 120 J2=MAX(1,IP),N
60418                       IF (K(J2,1).NE.3) GOTO 120
60419                       IF (MCT(J1,KCS-3).EQ.MCT(J2,6-KCS)) IMATCH=1
60420   120               CONTINUE
60421                     IF (IMATCH.EQ.1) GOTO 140
60422 C...Check whether this colour tag belongs to the present junction
60423 C...by seeing whether any parton with this colour tag has the same
60424 C...mother as the junction.
60425                     JCT=MCT(J1,KCS-3)
60426                     IMATCH=0
60427                     DO 130 J2=MINT(84)+1,N
60428                       IMO2=K(J2,3)
60429 C...First scattering partons have IMO1 = 3 and 4.
60430                       IF (IMO2.EQ.MINT(83)+3.OR.IMO2.EQ.MINT(83)+4)
60431      &                     IMO2=IMO2-2
60432                       IF (MCT(J2,KCS-3).EQ.JCT.AND.IMO2.EQ.IJUMO)
60433      &                     IMATCH=1
60434   130               CONTINUE
60435                     IF (IMATCH.EQ.0) GOTO 140
60436                     IA=J1
60437   140             CONTINUE
60438 C...Check for junction-junction strings without intermediate final state
60439 C...glue (not detected above).
60440                   IF (IA.EQ.0) THEN
60441                     DO 160 MJU=1,NJUNC
60442                       IJU2=IJUNC(MJU,0)
60443                       IF (IJU2.EQ.I) GOTO 160
60444                       ITJU2=MOD(K(IJU2,4)/MSTU(5),MSTU(5))
60445 C...Only opposite types of junctions can connect to each other.
60446                       IF (MOD(ITJU2,2).EQ.MOD(ITJUNC,2)) GOTO 160
60447                       IS=0
60448                       DO 150 J=1,NPIECE
60449                         IF (IPIECE(J,4).EQ.IJU2) IS=IS+1
60450   150                 CONTINUE
60451                       IF (IS.EQ.3) GOTO 160
60452                       IB=I
60453                       IA=IJU2
60454   160               CONTINUE
60455                   ENDIF
60456 C...Switch to other side of adjacent parton and step from there.
60457                   KCS=9-KCS
60458                   I1BEG = I1
60459                   NSTP = 0
60460                   GOTO 170
60461                 ENDIF
60462               ELSE IF (ILC.NE.3) THEN
60463               ENDIF
60464             ENDIF
60465           ENDIF
60466  
60467 C...Look for coloured string endpoint, or (later) leftover gluon.
60468           IF(K(I,1).NE.3) GOTO 240
60469           KC=PYCOMP(K(I,2))
60470           IF(KC.EQ.0) GOTO 240
60471           KQ=KCHG(KC,2)
60472           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 240
60473  
60474 C...Pick up loose string end.
60475           KCS=4
60476           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
60477           IA=I
60478           IB=I
60479           I1BEG=I1
60480           NSTP=0
60481   170     NSTP=NSTP+1
60482           IF(NSTP.GT.4*N) THEN
60483             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
60484             MINT(51)=1
60485             RETURN
60486           ENDIF
60487  
60488 C...Copy undecayed parton. Finished if reached string endpoint.
60489           IF(K(IA,1).EQ.3) THEN
60490             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
60491               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
60492               MINT(51)=1
60493               MSTU(24)=1
60494               RETURN
60495             ENDIF
60496             I1=I1+1
60497             K(I1,1)=2
60498             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
60499             K(I1,2)=K(IA,2)
60500             K(I1,3)=IA
60501             K(I1,4)=0
60502             K(I1,5)=0
60503             DO 180 J=1,5
60504               P(I1,J)=P(IA,J)
60505               V(I1,J)=V(IA,J)
60506   180       CONTINUE
60507             K(IA,1)=K(IA,1)+10
60508             IF(K(I1,1).EQ.1) GOTO 240
60509           ENDIF
60510  
60511 C...Also finished (for now) if reached junction; then copy to end.
60512           IF(K(IA,1).EQ.42) THEN
60513             NCOPY=I1-I1BEG
60514             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
60515               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
60516               MINT(51)=1
60517               MSTU(24)=1
60518               RETURN
60519             ENDIF
60520             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
60521               DO 200 ICOPY=1,NCOPY
60522                 DO 190 J=1,5
60523                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
60524                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
60525                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
60526   190           CONTINUE
60527   200         CONTINUE
60528             ENDIF
60529 C...For junction-junction strings, find end leg and reorder junction
60530 C...daughter pointers so MOD(K(I,4),MSTU(5)) always points to the
60531 C...junction-junction string piece.
60532             IF (K(I,1).EQ.42.AND.MINT(33).EQ.0) THEN
60533               ITMP=MOD(K(IA,4),MSTU(5))
60534               IF (ITMP.NE.IB) THEN
60535                 IF (MOD(K(IA,5),MSTU(5)).EQ.IB) THEN
60536                   K(IA,5)=K(IA,5)+(ITMP-IB)
60537                 ELSE
60538                   K(IA,5)=K(IA,5)+(ITMP-IB)*MSTU(5)
60539                 ENDIF
60540                 K(IA,4)=K(IA,4)+(IB-ITMP)
60541               ENDIF
60542             ENDIF
60543             NPIECE=NPIECE+1
60544 C...IPIECE:
60545 C...0: endpoint in original ER
60546 C...1:
60547 C...2:
60548 C...3: Parton immediately next to junction
60549 C...4: Junction
60550             IPIECE(NPIECE,0)=I
60551             IPIECE(NPIECE,1)=MSTU32+1
60552             IPIECE(NPIECE,2)=MSTU32+NCOPY
60553             IPIECE(NPIECE,3)=IB
60554             IPIECE(NPIECE,4)=IA
60555             MSTU32=MSTU32+NCOPY
60556             I1=I1BEG
60557             GOTO 240
60558           ENDIF
60559  
60560 C...GOTO next parton in colour space.
60561           IB=IA
60562           IF (MINT(33).EQ.0) THEN
60563             IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5
60564      &           )).NE.0) THEN
60565               IA=MOD(K(IB,KCS),MSTU(5))
60566               K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
60567               MREV=0
60568             ELSE
60569               IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
60570      &             MSTU(5)).EQ.0) KCS=9-KCS
60571               IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
60572               K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
60573               MREV=1
60574             ENDIF
60575             IF(IA.LE.0.OR.IA.GT.N) THEN
60576               CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
60577               IF(NERRPR.LT.5) THEN
60578                 NERRPR=NERRPR+1
60579                 WRITE(MSTU(11),*) 'started at:', I
60580                 WRITE(MSTU(11),*) 'ended going from',IB,' to',IA
60581                 WRITE(MSTU(11),*) 'MQGST =',MQGST
60582                 CALL PYLIST(4)
60583               ENDIF
60584               MINT(51)=1
60585               RETURN
60586             ENDIF
60587             IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5)
60588      &           ,MSTU(5)).EQ.IB) THEN
60589               IF(MREV.EQ.1) KCS=9-KCS
60590               IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
60591               K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
60592             ELSE
60593               IF(MREV.EQ.0) KCS=9-KCS
60594               IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
60595               K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
60596             ENDIF
60597             IF(IA.NE.I) GOTO 170
60598 C...Use colour tag information
60599           ELSE
60600 C...First create colour tags starting on IB if none already present.
60601             IF (MCT(IB,KCS-3).EQ.0) THEN
60602               CALL PYCTTR(IB,KCS,IB)
60603               IF(MINT(51).NE.0) RETURN
60604             ENDIF
60605             JCT=MCT(IB,KCS-3)
60606             IFOUND=0
60607 C...Find final state tag partner
60608             DO 210 IT=MAX(1,IP),N
60609               IF (IT.EQ.IB) GOTO 210
60610               IF (MCT(IT,6-KCS).EQ.JCT.AND.K(IT,1).LT.10.AND.K(IT,1).GT
60611      &             .0) THEN
60612                 IFOUND=IFOUND+1
60613                 IA=IT
60614               ENDIF
60615   210       CONTINUE
60616 C...Just copy and goto next if exactly one partner found.
60617             IF (IFOUND.EQ.1) THEN
60618               GOTO 170
60619 C...When no match found, match is presumably junction.
60620             ELSEIF (IFOUND.EQ.0.AND.MQGST.LE.2) THEN
60621 C...Check whether this colour tag matches a junction
60622 C...by seeing whether any parton with this colour tag has the same
60623 C...mother as a junction.
60624 C...NB: Only type 1 and 2 junctions handled presently.
60625               DO 230 IJU=1,NJUNC
60626                 IJUMO=K(IJUNC(IJU,0),3)
60627                 ITJUNC=MOD(K(IJUNC(IJU,0),4)/MSTU(5),MSTU(5))
60628 C...Colours only connect to junctions, anti-colours to antijunctions:
60629                 IF (MOD(ITJUNC+1,2)+1.NE.KCS-3) GOTO 230
60630                 IMATCH=0
60631                 DO 220 J1=MAX(1,IP),N
60632                   IF (K(J1,1).LE.0) GOTO 220
60633 C...First scattering partons have IMO1 = 3 and 4.
60634                   IMO=K(J1,3)
60635                   IF (IMO.EQ.MINT(83)+3.OR.IMO.EQ.MINT(83)+4)
60636      &                 IMO=IMO-2
60637                   IF (MCT(J1,KCS-3).EQ.JCT.AND.IMO.EQ.IJUMO.AND.MOD(K(J1
60638      &                 ,3+ITJUNC)/MSTU(5),MSTU(5)).EQ.IJUNC(IJU,0))
60639      &                 IMATCH=1
60640 C...Attempt at handling type > 3 junctions also. Not tested.
60641                   IF (ITJUNC.GE.3.AND.MCT(J1,6-KCS).EQ.JCT.AND.IMO.EQ
60642      &                 .IJUMO) IMATCH=1
60643   220           CONTINUE
60644                 IF (IMATCH.EQ.0) GOTO 230
60645                 IA=IJUNC(IJU,0)
60646                 IFOUND=IFOUND+1
60647   230         CONTINUE
60648  
60649               IF (IFOUND.EQ.1) THEN
60650                 GOTO 170
60651               ELSEIF (IFOUND.EQ.0) THEN
60652                 WRITE(CHTMP,*) JCT
60653                 CALL PYERRM(12,'(PYPREP:) no matching colour tag: '
60654      &               //CHTMP)
60655                 IF(NERRPR.LT.5) THEN
60656                   NERRPR=NERRPR+1
60657                   CALL PYLIST(4)
60658                 ENDIF
60659                 MINT(51)=1
60660                 RETURN
60661               ENDIF
60662             ELSEIF (IFOUND.GE.2) THEN
60663               WRITE(CHTMP,*) JCT
60664               CALL PYERRM(12
60665      &             ,'(PYPREP:) too many occurences of colour line: '//
60666      &             CHTMP)
60667               IF(NERRPR.LT.5) THEN
60668                 NERRPR=NERRPR+1
60669                 CALL PYLIST(4)
60670               ENDIF
60671               MINT(51)=1
60672               RETURN
60673             ENDIF
60674           ENDIF
60675           K(I1,1)=1
60676   240   CONTINUE
60677   250 CONTINUE
60678  
60679 C...Junction systems remain.
60680       IJU=0
60681       IJUS=0
60682       IJUCNT=0
60683       MREV=0
60684       IJJSTR=0
60685   260 IJUCNT=IJUCNT+1
60686       IF (IJUCNT.LE.NJUNC) THEN
60687 C...If we are not processing a j-j string, treat this junction as new.
60688         IF (IJJSTR.EQ.0) THEN
60689           IJU=IJUNC(IJUCNT,0)
60690           MREV=0
60691 C...If junction has already been read, ignore it.
60692           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 260
60693 C...If we are on a j-j string, goto second j-j junction.
60694         ELSE
60695           IJUCNT=IJUCNT-1
60696           IJU=IJUS
60697         ENDIF
60698 C...Mark selected junction read.
60699         DO 270 J=1,NJUNC
60700           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
60701   270   CONTINUE
60702 C...Determine junction type
60703         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
60704 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
60705 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
60706 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
60707         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
60708           IHK=0
60709   280     IHK=IHK+1
60710 C...Find which quarks belong to given junction.
60711           IHF=0
60712           DO 290 IPC=1,NPIECE
60713             IF (IPIECE(IPC,4).EQ.IJU) THEN
60714               IHF=IHF+1
60715               IF (IHF.EQ.IHK) IEND=IPIECE(IPC,3)
60716             ENDIF
60717             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJU) IEND=IPIECE(IPC,3)
60718   290     CONTINUE
60719 C...IHK = 3 is special. Either normal string piece, or j-j string.
60720           IF(IHK.EQ.3) THEN
60721             IF (MREV.NE.1) THEN
60722               DO 300 IPC=1,NPIECE
60723 C...If there is a j-j string starting on the present junction which has
60724 C...zero length, insert next junction immediately.
60725                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
60726      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
60727                   IJJSTR = 1
60728                   GOTO 340
60729                 ENDIF
60730   300         CONTINUE
60731               MREV = 1
60732 C...If MREV is 1 and IHK is 3 we are finished with this system.
60733             ELSE
60734               MREV=0
60735               GOTO 260
60736             ENDIF
60737           ENDIF
60738  
60739 C...If we've gotten this far, then either IHK < 3, or
60740 C...an interjunction string exists, or just a third normal string.
60741           IJUNC(IJUCNT,IHK)=0
60742           IJJSTR = 0
60743 C..Order pieces belonging to this junction. Also look for j-j.
60744           DO 310 IPC=1,NPIECE
60745             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
60746             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
60747      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
60748               IJUNC(IJUCNT,IHK)=IPC
60749               IJJSTR = 1
60750               MREV = 0
60751             ENDIF
60752   310     CONTINUE
60753 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
60754           IPC=IJUNC(IJUCNT,IHK)
60755 C...Temporary solution to cover for bug.
60756           IF(IPC.LE.0) THEN
60757             CALL PYERRM(12,'(PYPREP:) fails to hook up junctions')
60758             MINT(51)=1
60759             RETURN
60760           ENDIF
60761           DO 330 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
60762             I1=I1+1
60763             DO 320 J=1,5
60764               K(I1,J)=K(MSTU(4)-ICP,J)
60765               P(I1,J)=P(MSTU(4)-ICP,J)
60766               V(I1,J)=V(MSTU(4)-ICP,J)
60767   320       CONTINUE
60768   330     CONTINUE
60769           K(I1,1)=2
60770 C...Mark last quark.
60771           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
60772 C...Do not insert junctions at wrong places.
60773           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 360
60774 C...Insert junction.
60775   340     IJUS = IJU
60776           IF (IHK.EQ.3) THEN
60777 C...Shift to end junction if a j-j string has been processed.
60778             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
60779             MREV= 1
60780           ENDIF
60781           I1=I1+1
60782           DO 350 J=1,5
60783             K(I1,J)=0
60784             P(I1,J)=0.
60785             V(I1,J)=0.
60786   350     CONTINUE
60787           K(I1,1)=41
60788           K(IJUS,1)=K(IJUS,1)+10
60789           K(I1,2)=K(IJUS,2)
60790           K(I1,3)=IJUS
60791   360     IF (IHK.LT.3) GOTO 280
60792         ELSE
60793           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
60794           MINT(51)=1
60795           RETURN
60796         ENDIF
60797         IF (IJUCNT.NE.NJUNC) GOTO 260
60798       ENDIF
60799       N=I1
60800  
60801 C...Rearrange three strings from junction, e.g. in case one has been
60802 C...shortened by shower, so the last is the largest-energy one.
60803       IF(NJUNC.GE.1) THEN
60804 C...Find systems with exactly one junction.
60805         MJUN1=0
60806         NBEG=NOLD+1
60807         DO 470 I=NOLD+1,N
60808           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
60809           ELSEIF(K(I,1).EQ.41) THEN
60810             MJUN1=MJUN1+1
60811           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
60812             MJUN1=0
60813             NBEG=I+1
60814           ELSE
60815             NEND=I
60816 C...Sum up energy-momentum in each junction string.
60817             DO 370 J=1,5
60818               PJU(1,J)=0D0
60819               PJU(2,J)=0D0
60820               PJU(3,J)=0D0
60821   370       CONTINUE
60822             NJU=0
60823             DO 390 I1=NBEG,NEND
60824               IF(K(I1,2).NE.21) THEN
60825                 NJU=NJU+1
60826                 IJUR(NJU)=I1
60827               ENDIF
60828               DO 380 J=1,5
60829                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
60830   380         CONTINUE
60831   390       CONTINUE
60832 C...Find which of them has highest energy (minus mass) in rest frame.
60833             DO 400 J=1,5
60834               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
60835   400       CONTINUE
60836             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
60837      &      PJU(4,3)**2))
60838             DO 410 I2=1,3
60839               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
60840      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
60841   410       CONTINUE
60842             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
60843 C...Decide how to rearrange so that new last has highest energy.
60844               IF(PJU(1,6).LT.PJU(2,6)) THEN
60845                 IRNG(1,1)=IJUR(1)
60846                 IRNG(1,2)=IJUR(2)-1
60847                 IRNG(2,1)=IJUR(4)
60848                 IRNG(2,2)=IJUR(3)+1
60849                 IRNG(4,1)=IJUR(3)-1
60850                 IRNG(4,2)=IJUR(2)
60851               ELSE
60852                 IRNG(1,1)=IJUR(4)
60853                 IRNG(1,2)=IJUR(3)+1
60854                 IRNG(2,1)=IJUR(2)
60855                 IRNG(2,2)=IJUR(3)-1
60856                 IRNG(4,1)=IJUR(2)-1
60857                 IRNG(4,2)=IJUR(1)
60858               ENDIF
60859               IRNG(3,1)=IJUR(3)
60860               IRNG(3,2)=IJUR(3)
60861 C...Copy in correct order below bottom of current event record.
60862               I2=N
60863               DO 440 II=1,4
60864                 DO 430 I1=IRNG(II,1),IRNG(II,2),
60865      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
60866                   I2=I2+1
60867                   IF(I2.GE.MSTU(4)-MSTU32-5) THEN
60868                     CALL PYERRM(11,
60869      &              '(PYPREP:) no more memory left in PYJETS')
60870                     MINT(51)=1
60871                     MSTU(24)=1
60872                     RETURN
60873                   ENDIF
60874                   DO 420 J=1,5
60875                     K(I2,J)=K(I1,J)
60876                     P(I2,J)=P(I1,J)
60877                     V(I2,J)=V(I1,J)
60878   420             CONTINUE
60879                   IF(K(I2,1).EQ.1) K(I2,1)=2
60880   430           CONTINUE
60881   440         CONTINUE
60882               K(I2,1)=1
60883 C...Copy back up, overwriting but now in correct order.
60884               DO 460 I1=NBEG,NEND
60885                 I2=I1-NBEG+N+1
60886                 DO 450 J=1,5
60887                   K(I1,J)=K(I2,J)
60888                   P(I1,J)=P(I2,J)
60889                   V(I1,J)=V(I2,J)
60890   450           CONTINUE
60891   460         CONTINUE
60892             ENDIF
60893             MJUN1=0
60894             NBEG=I+1
60895           ENDIF
60896   470   CONTINUE
60897  
60898 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
60899 C...to two q-qbar systems.
60900 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
60901         IF (MSTJ(19).NE.1) THEN
60902           MJUN1  = 0
60903           JJGLUE = 0
60904           NBEG   = NOLD+1
60905 C...Force collapse when MSTJ(19)=2.
60906           IF (MSTJ(19).EQ.2) THEN
60907             DELMJJ = 1D9
60908             DELMQQ = 0D0
60909           ENDIF
60910 C...Find systems with exactly two junctions.
60911           DO 700 I=NOLD+1,N
60912 C...Count junctions
60913             IF (K(I,1).EQ.41) THEN
60914               MJUN1 = MJUN1+1
60915 C...Check for interjunction gluons
60916               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
60917                 JJGLUE = 1
60918               ENDIF
60919             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
60920 C...If end of system reached with either zero or one junction, restart
60921 C...with next system.
60922               MJUN1  = 0
60923               JJGLUE = 0
60924               NBEG   = I+1
60925             ELSEIF(K(I,1).EQ.1) THEN
60926 C...If end of system reached with exactly two junctions, compute string
60927 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
60928 C...length measure for the (q-qbar)(q-qbar) topology.
60929               NEND=I
60930 C...Loop down through chain.
60931               ISID=0
60932               DO 480 I1=NBEG,NEND
60933 C...Store string piece division locations in event record
60934                 IF (K(I1,2).NE.21) THEN
60935                   ISID       = ISID+1
60936                   IJCP(ISID) = I1
60937                 ENDIF
60938   480         CONTINUE
60939 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
60940               ISW=0
60941               IF (PYR(0).LT.0.5D0) ISW=1
60942 C...Randomly choose which qqbar string gets the jj gluons.
60943               IGS=1
60944               IF (PYR(0).GT.0.5D0) IGS=2
60945 C...Only compute string lengths when no topology forced.
60946               IF (MSTJ(19).EQ.0) THEN
60947 C...Repeat following for each junction
60948                 DO 570 IJU=1,2
60949 C...Initialize iterative procedure for finding JRF
60950                   IJRFIT=0
60951                   DO 490 IX=1,3
60952                     TJUOLD(IX)=0D0
60953   490             CONTINUE
60954                   TJUOLD(4)=1D0
60955 C...Start iteration. Sum up momenta in string pieces
60956   500             DO 540 IJS=1,3
60957 C...JD=-1 for first junction, +1 for second junction.
60958 C...Find out where piece starts and ends and which direction to go.
60959                     JD=2*IJU-3
60960                     IF (IJS.LE.2) THEN
60961                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
60962                       IB = IJCP((IJU-1)*7 - JD*IJS)
60963                     ELSEIF (IJS.EQ.3) THEN
60964                       JD =-JD
60965                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
60966                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
60967                     ENDIF
60968 C...Initialize junction pull 4-vector.
60969                     DO 510 J=1,5
60970                       PUL(IJS,J)=0D0
60971   510               CONTINUE
60972 C...Initialize weight
60973                     PWT = 0D0
60974                     PWTOLD = 0D0
60975 C...Sum up (weighted) momenta along each string piece
60976                     DO 530 ISP=IA,IB,JD
60977 C...If present parton not last in chain
60978                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
60979 C...If last parton was a junction, store present weight
60980                         IF (K(ISP-JD,2).EQ.88) THEN
60981                           PWTOLD = PWT
60982 C...If last parton was a quark, reset to stored weight.
60983                         ELSEIF (K(ISP-JD,2).NE.21) THEN
60984                           PWT = PWTOLD
60985                         ENDIF
60986                       ENDIF
60987 C...Skip next parton if weight already large
60988                       IF (PWT.GT.10D0) GOTO 530
60989 C...Compute momentum in TJUOLD frame:
60990                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
60991      &                     )*P(ISP,3)
60992                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
60993                       DO 520 J=1,3
60994                         TMP=P(ISP,J)+TJUOLD(J)*BFC
60995                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
60996   520                 CONTINUE
60997 C...Boosted energy
60998                       TMP=TJUOLD(4)*P(ISP,4)+TDP
60999                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
61000 C...Update weight
61001                       PWT=PWT+TMP/PARJ(48)
61002 C...Put |p| rather than m in 5th slot
61003                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
61004      &                     +PUL(IJS,3)**2)
61005   530               CONTINUE
61006   540             CONTINUE
61007 C...Compute boost
61008                   IJRFIT=IJRFIT+1
61009                   CALL PYJURF(PUL,T)
61010 C...Combine new boost (T) with old boost (TJUOLD)
61011                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
61012                   DO 550 IX=1,3
61013                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
61014      &                   ))
61015   550             CONTINUE
61016                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
61017      &                 **2)
61018 C...If last boost small, accept JRF, else iterate.
61019 C...Also prevent possibility of infinite loop.
61020                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
61021      &                 IJRFIT.LT.MSTJ(18))THEN
61022                     GOTO 500
61023                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
61024                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
61025                   ENDIF
61026 C...Store final boost, with change of sign since TJJ motion vector.
61027                   DO 560 IX=1,3
61028                     TJJ(IJU,IX)=-TJUOLD(IX)
61029   560             CONTINUE
61030                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
61031      &                 +TJJ(IJU,3)**2)
61032   570           CONTINUE
61033 C...String length measure for (q-qbar)(q-qbar) topology.
61034 C...Note only momenta of nearest partons used (since rest of system
61035 C...identical).
61036                 IF (JJGLUE.EQ.0) THEN
61037                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
61038      &                 -1,IJCP(5-ISW)+1)
61039                 ELSE
61040 C...Put jj gluons on selected string (IGS selected randomly above).
61041                   IF (IGS.EQ.1) THEN
61042                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
61043      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
61044                   ELSE
61045                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
61046      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
61047      &                   ,IJCP(5-ISW)+1)
61048                   ENDIF
61049                 ENDIF
61050 C...String length measure for q-q-j-j-q-q topology.
61051                 T1G1=0D0
61052                 T2G2=0D0
61053                 T1T2=0D0
61054                 T1P1=0D0
61055                 T1P2=0D0
61056                 T2P3=0D0
61057                 T2P4=0D0
61058                 ISGN=-1
61059 C...Note only momenta of nearest partons used (since rest of system
61060 C...identical).
61061                 DO 580 IX=1,4
61062                   IF (IX.EQ.4) ISGN=1
61063                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
61064                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
61065                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
61066                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
61067                   IF (JJGLUE.EQ.0) THEN
61068 C...Junction motion vector dot product gives length when inter-junction
61069 C...gluons absent.
61070                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
61071                   ELSE
61072 C...Junction motion vector dot products with gluon momenta give length
61073 C...when inter-junction gluons present.
61074                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
61075                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
61076                   ENDIF
61077   580           CONTINUE
61078                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
61079                 IF (JJGLUE.EQ.0) THEN
61080                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
61081                 ELSE
61082                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
61083                 ENDIF
61084               ENDIF
61085 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
61086 C...(Always the case for MSTJ(19)=2 due to initialization above)
61087               IF (DELMJJ.GT.DELMQQ) THEN
61088 C...Put new system at end of event record
61089                 NCOP=N
61090                 DO 650 IST=1,2
61091                   DO 600 ICOP=IJCP(IST),IJCP(IST+1)-1
61092                     NCOP=NCOP+1
61093                     DO 590 IX=1,5
61094                       P(NCOP,IX)=P(ICOP,IX)
61095                       K(NCOP,IX)=K(ICOP,IX)
61096   590               CONTINUE
61097   600             CONTINUE
61098                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
61099 C...Insert inter-junction gluon string piece (reversed)
61100                     NJJGL=0
61101                     DO 620 ICOP=IJCP(4)-1,IJCP(3)+1,-1
61102                       NJJGL=NJJGL+1
61103                       NCOP=NCOP+1
61104                       DO 610 IX=1,5
61105                         P(NCOP,IX)=P(ICOP,IX)
61106                         K(NCOP,IX)=K(ICOP,IX)
61107   610                 CONTINUE
61108   620               CONTINUE
61109                     ENDIF
61110                   IFC=-2*IST+3
61111                   DO 640 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
61112                     NCOP=NCOP+1
61113                     DO 630 IX=1,5
61114                       P(NCOP,IX)=P(ICOP,IX)
61115                       K(NCOP,IX)=K(ICOP,IX)
61116   630               CONTINUE
61117   640             CONTINUE
61118                   K(NCOP,1)=1
61119   650           CONTINUE
61120 C...Copy system back in right order
61121                 DO 670 ICOP=NBEG,NEND-2
61122                   DO 660 IX=1,5
61123                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
61124                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
61125   660             CONTINUE
61126   670           CONTINUE
61127 C...Shift down rest of event record
61128                 DO 690 ICOP=NEND+1,N
61129                   DO 680 IX=1,5
61130                     P(ICOP-2,IX)=P(ICOP,IX)
61131                     K(ICOP-2,IX)=K(ICOP,IX)
61132   680             CONTINUE
61133   690             CONTINUE
61134 C...Update length of event record.
61135                 N=N-2
61136               ENDIF
61137               MJUN1=0
61138               NBEG=I+1
61139             ENDIF
61140   700     CONTINUE
61141         ENDIF
61142       ENDIF
61143  
61144 C...Done if no checks on small-mass systems.
61145       IF(MSTJ(14).LT.0) RETURN
61146       IF(MSTJ(14).EQ.0) GOTO 1140
61147  
61148 C...Find lowest-mass colour singlet jet system.
61149       NS=N
61150   710 NSIN=N-NS
61151       PDMIN=1D0+PARJ(32)
61152       IC=0
61153       DO 770 I=MAX(1,IP),N
61154         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
61155         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
61156           NSIN=NSIN+1
61157           IC=I
61158           DO 720 J=1,4
61159             DPS(J)=P(I,J)
61160   720     CONTINUE
61161           MSTJ(93)=1
61162           DPS(5)=PYMASS(K(I,2))
61163         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
61164           DO 730 J=1,4
61165             DPS(J)=DPS(J)+P(I,J)
61166   730     CONTINUE
61167           MSTJ(93)=1
61168           DPS(5)=DPS(5)+PYMASS(K(I,2))
61169         ELSEIF(K(I,1).EQ.2) THEN
61170           DO 740 J=1,4
61171             DPS(J)=DPS(J)+P(I,J)
61172   740     CONTINUE
61173         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61174           DO 750 J=1,4
61175             DPS(J)=DPS(J)+P(I,J)
61176   750     CONTINUE
61177           MSTJ(93)=1
61178           DPS(5)=DPS(5)+PYMASS(K(I,2))
61179           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
61180      &    DPS(5)
61181           IF(PD.LT.PDMIN) THEN
61182             PDMIN=PD
61183             DO 760 J=1,5
61184               DPC(J)=DPS(J)
61185   760       CONTINUE
61186             IC1=IC
61187             IC2=I
61188           ENDIF
61189           IC=0
61190         ELSE
61191           NSIN=NSIN+1
61192         ENDIF
61193   770 CONTINUE
61194  
61195 C...Done if lowest-mass system above threshold for string frag.
61196       IF(PDMIN.GE.PARJ(32)) GOTO 1140
61197  
61198 C...Fill small-mass system as cluster.
61199       NSAV=N
61200       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
61201       K(N+1,1)=11
61202       K(N+1,2)=91
61203       K(N+1,3)=IC1
61204       P(N+1,1)=DPC(1)
61205       P(N+1,2)=DPC(2)
61206       P(N+1,3)=DPC(3)
61207       P(N+1,4)=DPC(4)
61208       P(N+1,5)=PECM
61209  
61210 C...Set up history, assuming cluster -> 2 hadrons.
61211       NBODY=2
61212       K(N+1,4)=N+2
61213       K(N+1,5)=N+3
61214       K(N+2,1)=1
61215       K(N+3,1)=1
61216       IF(MSTU(16).NE.2) THEN
61217         K(N+2,3)=N+1
61218         K(N+3,3)=N+1
61219       ELSE
61220         K(N+2,3)=IC1
61221         K(N+3,3)=IC2
61222       ENDIF
61223       K(N+2,4)=0
61224       K(N+3,4)=0
61225       K(N+2,5)=0
61226       K(N+3,5)=0
61227       V(N+1,5)=0D0
61228       V(N+2,5)=0D0
61229       V(N+3,5)=0D0
61230  
61231 C...Find total flavour content - complicated by presence of junctions.
61232       NQ=0
61233       NDIQ=0
61234       DO 780 I=IC1,IC2
61235         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
61236           NQ=NQ+1
61237           KFQ(NQ)=K(I,2)
61238           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
61239         ENDIF
61240   780 CONTINUE
61241  
61242 C...If several diquarks, split up one to give even number of flavours.
61243       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
61244         I1=3
61245         IF(IABS(KFQ(3)).LT.1000) I1=1
61246         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
61247         KFQ(I1)=KFQ(I1)/1000
61248         NQ=4
61249         NDIQ=NDIQ-1
61250       ENDIF
61251  
61252 C...If four quark ends, join two to diquark.
61253       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
61254         I1=1
61255         I2=2
61256         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
61257         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
61258         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
61259         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
61260         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
61261      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
61262         KFQ(I2)=KFQ(4)
61263         NQ=3
61264         NDIQ=1
61265       ENDIF
61266  
61267 C...If two quark ends, plus quark or diquark, join quarks to diquark.
61268       IF(NQ.EQ.3) THEN
61269         I1=1
61270         I2=2
61271         IF(IABS(KFQ(I1)).GT.1000) I1=3
61272         IF(IABS(KFQ(I2)).GT.1000) I2=3
61273         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
61274         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
61275         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
61276      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
61277         KFQ(I2)=KFQ(3)
61278         NQ=2
61279         NDIQ=NDIQ+1
61280       ENDIF
61281  
61282 C...Form two particles from flavours of lowest-mass system, if feasible.
61283       NTRY = 0
61284   790 NTRY = NTRY + 1
61285  
61286 C...Open string with two specified endpoint flavours.
61287       IF(NQ.EQ.2) THEN
61288         KC1=PYCOMP(KFQ(1))
61289         KC2=PYCOMP(KFQ(2))
61290         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1140
61291         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
61292         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
61293         IF(KQ1+KQ2.NE.0) GOTO 1140
61294 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
61295   800   K1=KFQ(1)
61296         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
61297         MSTU(125)=0
61298         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
61299         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
61300         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 800
61301  
61302 C...Open string with four specified flavours.
61303       ELSEIF(NQ.EQ.4) THEN
61304         KC1=PYCOMP(KFQ(1))
61305         KC2=PYCOMP(KFQ(2))
61306         KC3=PYCOMP(KFQ(3))
61307         KC4=PYCOMP(KFQ(4))
61308         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1140
61309         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
61310         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
61311         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
61312         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
61313         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1140
61314 C...Combine flavours pairwise to form two hadrons.
61315   810   I1=1
61316         I2=2
61317         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
61318      &  IABS(KFQ(2)).GT.1000)) I2=3
61319         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
61320      &  IABS(KFQ(3)).GT.1000))) I2=4
61321         I3=3
61322         IF(I2.EQ.3) I3=2
61323         I4=10-I1-I2-I3
61324         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
61325         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
61326         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 810
61327  
61328 C...Closed string.
61329       ELSE
61330         IF(IABS(K(IC2,2)).NE.21) GOTO 1140
61331 C...No room for popcorn mesons in closed string -> 2 hadrons.
61332         MSTU(125)=0
61333   820   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
61334         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
61335         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
61336         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 820
61337       ENDIF
61338       P(N+2,5)=PYMASS(K(N+2,2))
61339       P(N+3,5)=PYMASS(K(N+3,2))
61340  
61341 C...If it does not work: try again (a number of times), give up (if no
61342 C...place to shuffle momentum or too many flavours), or form one hadron.
61343       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
61344         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
61345           GOTO 790
61346         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
61347           GOTO 1140
61348         ELSE
61349           GOTO 890
61350         END IF
61351       END IF
61352  
61353 C...Perform two-particle decay of jet system.
61354 C...First step: find reference axis in decaying system rest frame.
61355 C...(Borrow slot N+2 for temporary direction.)
61356       DO 830 J=1,4
61357         P(N+2,J)=P(IC1,J)
61358   830 CONTINUE
61359       DO 850 I=IC1+1,IC2-1
61360         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
61361      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61362           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
61363           DO 840 J=1,4
61364             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
61365   840     CONTINUE
61366         ENDIF
61367   850 CONTINUE
61368       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
61369      &-DPC(3)/DPC(4))
61370       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
61371       PHI1=PYANGL(P(N+2,1),P(N+2,2))
61372  
61373 C...Second step: generate isotropic/anisotropic decay.
61374       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
61375      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
61376   860 UE(3)=PYR(0)
61377       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
61378       PT2=(1D0-UE(3)**2)*PA**2
61379       IF(MSTJ(16).LE.0) THEN
61380         PREV=0.5D0
61381       ELSE
61382         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 860
61383         PR1=P(N+2,5)**2+PT2
61384         PR2=P(N+3,5)**2+PT2
61385         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
61386         PREVCF=PARJ(42)
61387         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
61388         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
61389       ENDIF
61390       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
61391       PHI=PARU(2)*PYR(0)
61392       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
61393       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
61394       DO 870 J=1,3
61395         P(N+2,J)=PA*UE(J)
61396         P(N+3,J)=-PA*UE(J)
61397   870 CONTINUE
61398       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
61399       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
61400  
61401 C...Third step: move back to event frame and set production vertex.
61402       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
61403      &DPC(3)/DPC(4))
61404       DO 880 J=1,4
61405         V(N+1,J)=V(IC1,J)
61406         V(N+2,J)=V(IC1,J)
61407         V(N+3,J)=V(IC2,J)
61408   880 CONTINUE
61409       N=N+3
61410       GOTO 1120
61411  
61412 C...Else form one particle, if possible.
61413   890 NBODY=1
61414       K(N+1,5)=N+2
61415       DO 900 J=1,4
61416         V(N+1,J)=V(IC1,J)
61417         V(N+2,J)=V(IC1,J)
61418   900 CONTINUE
61419  
61420 C...Select hadron flavour from available quark flavours.
61421   910 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
61422         GOTO 1140
61423       ELSEIF(NQ.EQ.2) THEN
61424         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
61425       ELSE
61426         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
61427         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
61428       ENDIF
61429       IF(K(N+2,2).EQ.0) GOTO 910
61430       P(N+2,5)=PYMASS(K(N+2,2))
61431  
61432 C...Use old algorithm for E/p conservation? (EN)
61433       IF (MSTJ(16).LE.0) GOTO 1080
61434  
61435 C...Find the string piece closest to the cluster by a loop
61436 C...over the undecayed partons not in present cluster. (EN)
61437       DGLOMI=1D30
61438       IBEG=0
61439       I0=0
61440       NJUNC=0
61441       DO 940 I1=MAX(1,IP),N-1
61442         IF(K(I1,1).EQ.1) NJUNC=0
61443         IF(K(I1,1).EQ.41) NJUNC=NJUNC+1
61444         IF(K(I1,1).EQ.41) GOTO 940
61445         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
61446           I0=0
61447         ELSEIF(K(I1,1).EQ.2) THEN
61448           IF(I0.EQ.0) I0=I1
61449           I2=I1
61450   920     I2=I2+1
61451           IF(K(I2,1).EQ.41) GOTO 940
61452           IF(K(I2,1).GT.10) GOTO 920
61453           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 920
61454           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
61455      &    NJUNC.EQ.0) GOTO 940
61456           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 940
61457           IF(K(I1,2).NE.21.AND.K(I2,2).NE.21.AND.(I1.GT.I0.OR.
61458      &    K(I2,1).NE.1)) GOTO 940
61459  
61460 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
61461           DO 930 J=1,3
61462             E1(J)=P(I1,J)/P(I1,4)
61463             E2(J)=P(I2,J)/P(I2,4)
61464             ECL(J)=P(N+1,J)/P(N+1,4)
61465             E3(J)=E2(J)-E1(J)
61466             E4(J)=ECL(J)-E1(J)
61467   930     CONTINUE
61468  
61469 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
61470           E3S=E3(1)**2+E3(2)**2+E3(3)**2
61471           E4S=E4(1)**2+E4(2)**2+E4(3)**2
61472           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
61473           IF(E34.LE.0D0) THEN
61474             DDMIN=E4S
61475           ELSEIF(E34.LT.E3S) THEN
61476             DDMIN=E4S-E34**2/E3S
61477           ELSE
61478             DDMIN=E4S-2D0*E34+E3S
61479           ENDIF
61480  
61481 C...Is this the smallest so far?
61482           IF(DDMIN.LT.DGLOMI) THEN
61483             DGLOMI=DDMIN
61484             IBEG=I0
61485             IPCS=I1
61486           ENDIF
61487         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
61488           I0=0
61489         ENDIF
61490   940 CONTINUE
61491  
61492 C... Check if there are any strings to connect to the new gluon. (EN)
61493       IF (IBEG.EQ.0) GOTO 1080
61494  
61495 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
61496       IF (P(N+1,5).GE.P(N+2,5)) THEN
61497  
61498 C...Construct 'gluon' that is needed to put hadron on the mass shell.
61499         FRAC=P(N+2,5)/P(N+1,5)
61500         DO 950 J=1,5
61501           P(N+2,J)=FRAC*P(N+1,J)
61502           PG(J)=(1D0-FRAC)*P(N+1,J)
61503   950   CONTINUE
61504  
61505 C... Copy string with new gluon put in.
61506         N=N+2
61507         I=IBEG-1
61508   960   I=I+1
61509         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 960
61510         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 960
61511         N=N+1
61512         DO 970 J=1,5
61513           K(N,J)=K(I,J)
61514           P(N,J)=P(I,J)
61515           V(N,J)=V(I,J)
61516   970   CONTINUE
61517         K(I,1)=K(I,1)+10
61518         K(I,4)=N
61519         K(I,5)=N
61520         K(N,3)=I
61521         IF(I.EQ.IPCS) THEN
61522           N=N+1
61523           DO 980 J=1,5
61524             K(N,J)=K(N-1,J)
61525             P(N,J)=PG(J)
61526             V(N,J)=V(N-1,J)
61527   980     CONTINUE
61528           K(N,2)=21
61529           K(N,3)=NSAV+1
61530         ENDIF
61531         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 960
61532         GOTO 1120
61533  
61534 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
61535 C...from string piece endpoints.
61536       ELSE
61537  
61538 C...Begin by copying string that should give energy to cluster.
61539         N=N+2
61540         I=IBEG-1
61541   990   I=I+1
61542         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 990
61543         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 990
61544         N=N+1
61545         DO 1000 J=1,5
61546           K(N,J)=K(I,J)
61547           P(N,J)=P(I,J)
61548           V(N,J)=V(I,J)
61549  1000   CONTINUE
61550         K(I,1)=K(I,1)+10
61551         K(I,4)=N
61552         K(I,5)=N
61553         K(N,3)=I
61554         IF(I.EQ.IPCS) I1=N
61555         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 990
61556         I2=I1+1
61557  
61558 C...Set initial Phad.
61559         DO 1010 J=1,4
61560           P(NSAV+2,J)=P(NSAV+1,J)
61561  1010   CONTINUE
61562  
61563 C...Calculate Pg, a part of which will be added to Phad later. (EN)
61564  1020   IF(MSTJ(16).EQ.1) THEN
61565           ALPHA=1D0
61566           BETA=1D0
61567         ELSE
61568           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
61569           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
61570         ENDIF
61571         DO 1030 J=1,4
61572           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
61573  1030   CONTINUE
61574         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
61575  
61576 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
61577         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
61578      &  P(NSAV+2,3)**2
61579         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
61580      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
61581         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
61582  
61583 C...If all gluon energy eaten, zero it and take a step back.
61584         ITER=0
61585         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3.AND.K(I1,2).EQ.21) THEN
61586           ITER=1
61587           DO 1040 J=1,4
61588             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
61589             P(I1,J)=0D0
61590  1040     CONTINUE
61591           P(I1,5)=0D0
61592           K(I1,1)=K(I1,1)+10
61593           I1=I1-1
61594           IF(K(I1,1).EQ.41) ITER=-1
61595         ENDIF
61596         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N.AND.K(I2,2).EQ.21) THEN
61597           ITER=1
61598           DO 1050 J=1,4
61599             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
61600             P(I2,J)=0D0
61601  1050     CONTINUE
61602           P(I2,5)=0D0
61603           K(I2,1)=K(I2,1)+10
61604           I2=I2+1
61605           IF(K(I2,1).EQ.41) ITER=-1
61606         ENDIF
61607         IF(ITER.EQ.1) GOTO 1020
61608  
61609 C...If also all endpoint energy eaten, revert to old procedure.
61610         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
61611      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
61612           DO 1060 I=NSAV+3,N
61613             IM=K(I,3)
61614             K(IM,1)=K(IM,1)-10
61615             K(IM,4)=0
61616             K(IM,5)=0
61617  1060     CONTINUE
61618           N=NSAV
61619           GOTO 1080
61620         ENDIF
61621  
61622 C... Construct the collapsed hadron and modified string partons.
61623         DO 1070 J=1,4
61624           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
61625           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
61626           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
61627  1070   CONTINUE
61628           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
61629           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
61630  
61631 C...Finished with string collapse in new scheme.
61632         GOTO 1120
61633       ENDIF
61634  
61635 C... Use old algorithm; by choice or when in trouble.
61636  1080 CONTINUE
61637 C...Find parton/particle which combines to largest extra mass.
61638       IR=0
61639       HA=0D0
61640       HSM=0D0
61641       DO 1100 MCOMB=1,3
61642         IF(IR.NE.0) GOTO 1100
61643         DO 1090 I=MAX(1,IP),N
61644           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
61645      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1090
61646           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
61647           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1090
61648           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1090
61649           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
61650      &    GOTO 1090
61651           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
61652           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
61653           IF(HSR.GT.HSM) THEN
61654             IR=I
61655             HA=HCR
61656             HSM=HSR
61657           ENDIF
61658  1090   CONTINUE
61659  1100 CONTINUE
61660  
61661 C...Shuffle energy and momentum to put new particle on mass shell.
61662       IF(IR.NE.0) THEN
61663         HB=PECM**2+HA
61664         HC=P(N+2,5)**2+HA
61665         HD=P(IR,5)**2+HA
61666         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
61667      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
61668         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
61669         DO 1110 J=1,4
61670           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
61671           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
61672  1110   CONTINUE
61673         N=N+2
61674       ELSE
61675         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
61676         RETURN
61677       ENDIF
61678  
61679 C...Mark collapsed system and store daughter pointers. Iterate.
61680  1120 DO 1130 I=IC1,IC2
61681         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
61682      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
61683           K(I,1)=K(I,1)+10
61684           IF(MSTU(16).NE.2) THEN
61685             K(I,4)=NSAV+1
61686             K(I,5)=NSAV+1
61687           ELSE
61688             K(I,4)=NSAV+2
61689             K(I,5)=NSAV+1+NBODY
61690           ENDIF
61691         ENDIF
61692         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
61693  1130 CONTINUE
61694       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 710
61695  
61696 C...Check flavours and invariant masses in parton systems.
61697  1140 NP=0
61698       KFN=0
61699       KQS=0
61700       NJU=0
61701       DO 1150 J=1,5
61702         DPS(J)=0D0
61703  1150 CONTINUE
61704       DO 1180 I=MAX(1,IP),N
61705         IF(K(I,1).EQ.41) NJU=NJU+1
61706         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1180
61707         KC=PYCOMP(K(I,2))
61708         IF(KC.EQ.0) GOTO 1180
61709         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
61710         IF(KQ.EQ.0) GOTO 1180
61711         NP=NP+1
61712         IF(KQ.NE.2) THEN
61713           KFN=KFN+1
61714           KQS=KQS+KQ
61715           MSTJ(93)=1
61716           DPS(5)=DPS(5)+PYMASS(K(I,2))
61717         ENDIF
61718         DO 1160 J=1,4
61719           DPS(J)=DPS(J)+P(I,J)
61720  1160   CONTINUE
61721         IF(K(I,1).EQ.1) THEN
61722           NFERR=0
61723           IF(NJU.EQ.0.AND.NP.NE.1) THEN
61724             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
61725           ELSEIF(NJU.EQ.1) THEN
61726             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
61727           ELSEIF(NJU.EQ.2) THEN
61728             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
61729           ELSEIF(NJU.GE.3) THEN
61730             NFERR=1
61731           ENDIF
61732           IF(NFERR.EQ.1) THEN
61733             CALL PYERRM(2,'(PYPREP:) unphysical flavour combination')
61734             MINT(51)=1
61735             RETURN
61736           ENDIF
61737           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
61738      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
61739      &    '(PYPREP:) too small mass in jet system')
61740           NP=0
61741           KFN=0
61742           KQS=0
61743           NJU=0
61744           DO 1170 J=1,5
61745             DPS(J)=0D0
61746  1170     CONTINUE
61747         ENDIF
61748  1180 CONTINUE
61749  
61750       RETURN
61751       END
61752  
61753 C*********************************************************************
61754  
61755 C...PYSTRF
61756 C...Handles the fragmentation of an arbitrary colour singlet
61757 C...jet system according to the Lund string fragmentation model.
61758  
61759       SUBROUTINE PYSTRF(IP)
61760  
61761 C...Double precision and integer declarations.
61762       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
61763       IMPLICIT INTEGER(I-N)
61764       INTEGER PYK,PYCHGE,PYCOMP
61765 C...Commonblocks.
61766       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
61767       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
61768       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
61769       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
61770 C...Local arrays. All MOPS variables ends with MO
61771       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
61772      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
61773      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
61774      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
61775      &PBST(3,5),TJUOLD(5)
61776  
61777 C...Function: four-product of two vectors.
61778       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)
61779       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
61780      &DP(I,3)*DP(J,3)
61781  
61782 C...Reset counters.
61783       MSTJ(91)=0
61784       NSAV=N
61785       MSTU90=MSTU(90)
61786       NP=0
61787       KQSUM=0
61788       DO 100 J=1,5
61789         DPS(J)=0D0
61790   100 CONTINUE
61791       MJU(1)=0
61792       MJU(2)=0
61793       NTRYFN=0
61794       IJUORI(1)=0
61795       IJUORI(2)=0
61796  
61797 C...Identify parton system.
61798       I=IP-1
61799   110 I=I+1
61800       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
61801         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
61802         IF(MSTU(21).GE.1) RETURN
61803       ENDIF
61804       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
61805       KC=PYCOMP(K(I,2))
61806       IF(KC.EQ.0) GOTO 110
61807       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
61808       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
61809       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
61810         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
61811         IF(MSTU(21).GE.1) RETURN
61812       ENDIF
61813  
61814 C...Take copy of partons to be considered. Check flavour sum.
61815       NP=NP+1
61816       DO 120 J=1,5
61817         K(N+NP,J)=K(I,J)
61818         P(N+NP,J)=P(I,J)
61819         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
61820   120 CONTINUE
61821       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
61822       K(N+NP,3)=I
61823       IF(KQ.NE.2) KQSUM=KQSUM+KQ
61824       IF(K(I,1).EQ.41) THEN
61825         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
61826           MJU(1)=N+NP
61827           IJUORI(1)=I
61828         ELSE
61829           MJU(2)=N+NP
61830           IJUORI(2)=I
61831         ENDIF
61832       ENDIF
61833       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
61834       IF(MOD(KQSUM,3).NE.0) THEN
61835         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
61836         IF(MSTU(21).GE.1) RETURN
61837       ENDIF
61838       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
61839  
61840 C...Boost copied system to CM frame (for better numerical precision).
61841       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
61842         MBST=0
61843         MSTU(33)=1
61844         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
61845      &  -DPS(3)/DPS(4))
61846       ELSE
61847         MBST=1
61848         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
61849         DO 130 I=N+1,N+NP
61850           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
61851           IF(P(I,3).GT.0D0) THEN
61852             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
61853             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
61854             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
61855           ELSE
61856             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
61857             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
61858             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
61859           ENDIF
61860   130   CONTINUE
61861       ENDIF
61862  
61863 C...Search for very nearby partons that may be recombined.
61864       NTRYR=0
61865       NTRYWR=0
61866       PARU12=PARU(12)
61867       PARU13=PARU(13)
61868       MJU(3)=MJU(1)
61869       MJU(4)=MJU(2)
61870       NR=NP
61871       NRMIN=2
61872       IF(MJU(1).GT.0) NRMIN=NRMIN+2
61873       IF(MJU(2).GT.0) NRMIN=NRMIN+2
61874   140 IF(NR.GT.NRMIN) THEN
61875         PDRMIN=2D0*PARU12
61876         DO 150 I=N+1,N+NR
61877           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
61878           I1=I+1
61879           IF(I.EQ.N+NR) I1=N+1
61880           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
61881           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
61882      &    GOTO 150
61883           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
61884      &    GOTO 150
61885           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
61886      &    P(I1,2)**2+P(I1,3)**2))
61887           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
61888           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
61889           IF(PDR.LT.PDRMIN) THEN
61890             IR=I
61891             PDRMIN=PDR
61892           ENDIF
61893   150   CONTINUE
61894  
61895 C...Recombine very nearby partons to avoid machine precision problems.
61896         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
61897           DO 160 J=1,4
61898             P(N+1,J)=P(N+1,J)+P(N+NR,J)
61899   160     CONTINUE
61900           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
61901      &    P(N+1,3)**2))
61902           NR=NR-1
61903           GOTO 140
61904         ELSEIF(PDRMIN.LT.PARU12) THEN
61905           DO 170 J=1,4
61906             P(IR,J)=P(IR,J)+P(IR+1,J)
61907   170     CONTINUE
61908           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
61909      &    P(IR,3)**2))
61910           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
61911           DO 190 I=IR+1,N+NR-1
61912             K(I,1)=K(I+1,1)
61913             K(I,2)=K(I+1,2)
61914             DO 180 J=1,5
61915               P(I,J)=P(I+1,J)
61916   180       CONTINUE
61917   190     CONTINUE
61918           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
61919           NR=NR-1
61920           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
61921           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
61922           GOTO 140
61923         ENDIF
61924       ENDIF
61925       NTRYR=NTRYR+1
61926  
61927 C...Reset particle counter. Skip ahead if no junctions are present;
61928 C...this is usually the case!
61929       NRS=MAX(5*NR+11,NP)
61930       NTRY=0
61931   200 NTRY=NTRY+1
61932       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
61933         PARU12=4D0*PARU12
61934         PARU13=2D0*PARU13
61935         GOTO 140
61936       ELSEIF(NTRY.GT.100.OR.NTRYR.GT.100) THEN
61937         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
61938         IF(MSTU(21).GE.1) RETURN
61939       ENDIF
61940       I=N+NRS
61941       MSTU(90)=MSTU90
61942       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 650
61943       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
61944      &     ' junction strings not handled by MSTJ(12)>3 options')
61945       DO 640 JT=1,2
61946         NJS(JT)=0
61947         IF(MJU(JT).EQ.0) GOTO 640
61948         JS=3-2*JT
61949  
61950 C++SKANDS
61951 C...Find and sum up momentum on three sides of junction.
61952 C...Begin with previous boost = zero.
61953         IJRFIT=0
61954         DO 210 IX=1,3
61955           TJUOLD(IX)=0D0
61956   210   CONTINUE
61957         TJUOLD(4)=1D0
61958   220   IU=0
61959 C...Beginning and end of string system in event record.
61960         I1BEG=N+1+(JT-1)*(NR-1)
61961         I1END=N+NR+(JT-1)*(1-NR)
61962 C...Look for junction string piece end points
61963         DO 230 I1=I1BEG,I1END,JS
61964           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
61965 C...Store junction string piece end points.
61966 C                 1-junction systems        2-junction systems
61967 C           IU :  1     2     3   4     1     2   3     4   5     6
61968 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
61969             IU=IU+1
61970             IJU(IU)=I1
61971           ENDIF
61972 C...Sum over momenta, from junction outwards.
61973   230   CONTINUE
61974         DO 280 IU=1,3
61975           PWT=0D0
61976 C...Initialize junction drag and string piece 4-vectors.
61977           DO 240 J=1,5
61978             PBST(IU,J)=0D0
61979             PJU(IU,J)=0D0
61980   240     CONTINUE
61981 C...First two branches. Inwards out means opposite direction to JS.
61982 C...(JS is 1 for JT=1, -1 for JT=2)
61983           IF (IU.LT.3) THEN
61984             I1A=IJU(IU+1)-JS
61985             I1B=IJU(IU)
61986             IDIR=-JS
61987 C...Last branch (gq or gjgqgq). Direction now reversed.
61988           ELSE
61989             I1A=IJU(IU)+JS
61990             I1B=I1END
61991             IDIR=JS
61992           ENDIF
61993           DO 270 I1=I1A,I1B,IDIR
61994 C...Sum up momentum directions with exponential suppression
61995 C...for use in finding junction rest frame below.
61996             IF (K(I1,2).EQ.88) THEN
61997 C...gjgqgq type system encountered. Use current PWT as start
61998 C...for both strings.
61999               PWTOLD=PWT
62000             ELSE
62001               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
62002 C...Sum up string piece (boosted) 4-momenta.
62003               DO 250 J=1,4
62004                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
62005   250         CONTINUE
62006 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
62007 C...boost is zero, see above). Skip parton if suppression factor large.
62008               IF (PWT.GT.10D0) GOTO 270
62009 C...Compute momentum in current frame:
62010               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
62011               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
62012               DO 260 J=1,3
62013                 PTMP=P(I1,J)+TJUOLD(J)*BFC
62014                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
62015   260         CONTINUE
62016 C...Boosted energy
62017               PTMP=TJUOLD(4)*P(I1,4)+TDP
62018               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
62019               PWT=PWT+PTMP/PARJ(48)
62020             ENDIF
62021   270     CONTINUE
62022 C...Put |p| rather than m in 5th slot.
62023           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
62024           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
62025   280   CONTINUE
62026  
62027 C...Calculate boost from present frame to next JRF candidate.
62028         IJRFIT=IJRFIT+1
62029         CALL PYJURF(PBST,TJU)
62030  
62031 C...After some iterations do not take full step in new direction.
62032         IF(IJRFIT.GT.5) THEN
62033           REDUCE=0.8D0**(IJRFIT-5)
62034           TJU(1)=REDUCE*TJU(1)
62035           TJU(2)=REDUCE*TJU(2)
62036           TJU(3)=REDUCE*TJU(3)
62037           TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
62038         ENDIF
62039  
62040 C...Combine new boost (TJU) with old boost (TJUOLD)
62041         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
62042         DO 290 IX=1,3
62043           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
62044   290   CONTINUE
62045         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
62046  
62047 C...If last boost small, accept JRF, else iterate.
62048 C...Also prevent possibility of infinite loop.
62049         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
62050      &  IJRFIT.LT.MSTJ(18)) THEN
62051           GOTO 220
62052         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
62053           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
62054         ENDIF
62055  
62056 C...Now store total boost in TJU and change perception.
62057 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
62058 C...TJU = junction motion vector in string CM, so the sign changes.
62059         DO 300 J=1,3
62060           TJU(J)=-TJUOLD(J)
62061   300   CONTINUE
62062         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
62063  
62064 C--SKANDS
62065  
62066 C...Calculate string piece energies in junction rest frame.
62067         DO 310 IU=1,3
62068           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
62069      &    TJU(3)*PJU(IU,3)
62070           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
62071      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
62072   310   CONTINUE
62073  
62074 C...Start preparing for fragmentation of two strings from junction.
62075         ISTA=I
62076         NTRYER=0
62077   320   NTRYER=NTRYER+1
62078         I=ISTA
62079         DO 620 IU=1,2
62080           NS=IABS(IJU(IU+1)-IJU(IU))
62081  
62082 C...Junction strings: find longitudinal string directions.
62083           DO 350 IS=1,NS
62084             IS1=IJU(IU)+JS*(IS-1)
62085             IS2=IJU(IU)+JS*IS
62086             DO 330 J=1,5
62087               DP(1,J)=0.5D0*P(IS1,J)
62088               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
62089               DP(2,J)=0.5D0*P(IS2,J)
62090               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
62091      &        (PJU(IU,5)/PBST(IU,5))
62092   330       CONTINUE
62093             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
62094      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
62095             DP(3,5)=DFOUR(1,1)
62096             DP(4,5)=DFOUR(2,2)
62097             DHKC=DFOUR(1,2)
62098             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
62099               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62100               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62101               DP(3,5)=0D0
62102               DP(4,5)=0D0
62103               DHKC=DFOUR(1,2)
62104             ENDIF
62105             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
62106             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
62107             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
62108             IN1=N+NR+4*IS-3
62109             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
62110             DO 340 J=1,4
62111               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
62112               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
62113   340       CONTINUE
62114   350     CONTINUE
62115  
62116 C...Junction strings: initialize flavour, momentum and starting pos.
62117           ISAV=I
62118           MSTU91=MSTU(90)
62119   360     NTRY=NTRY+1
62120           IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
62121             PARU12=4D0*PARU12
62122             PARU13=2D0*PARU13
62123             GOTO 140
62124           ELSEIF(NTRY.GT.100) THEN
62125             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
62126             IF(MSTU(21).GE.1) RETURN
62127           ENDIF
62128           I=ISAV
62129           MSTU(90)=MSTU91
62130           IRANKJ=0
62131           IE(1)=K(N+1+(JT/2)*(NP-1),3)
62132           IF (MOD(JT+IU,2).NE.0) THEN
62133             IE(1)=K(IJU(IU),3)
62134             IF (NP-NR.NE.0) THEN
62135 C...If gluons have disappeared. Original IJU must be used.
62136               IT=IP
62137               NE=1
62138   370         IT=IT+1
62139               IF (K(IT,2).NE.21) THEN
62140                 NE=NE+1
62141               ENDIF
62142               IF (NE.EQ.IU+4*(JT-1)) THEN
62143                 IE(1)=IT
62144               ELSEIF (IT.LE.IP+NP) THEN
62145                 GOTO 370
62146               ELSE
62147                 CALL PYERRM(14,'(PYSTRF:) '//
62148      &               'Original IJU could not be reconstructed!')
62149               ENDIF
62150             ENDIF
62151           ENDIF
62152           IN(4)=N+NR+1
62153           IN(5)=IN(4)+1
62154           IN(6)=N+NR+4*NS+1
62155           DO 390 JQ=1,2
62156             DO 380 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
62157               P(IN1,1)=2-JQ
62158               P(IN1,2)=JQ-1
62159               P(IN1,3)=1D0
62160   380       CONTINUE
62161   390     CONTINUE
62162           KFL(1)=K(IJU(IU),2)
62163           PX(1)=0D0
62164           PY(1)=0D0
62165           GAM(1)=0D0
62166           DO 400 J=1,5
62167             PJU(IU+3,J)=0D0
62168   400     CONTINUE
62169  
62170 C...Junction strings: find initial transverse directions.
62171           DO 410 J=1,4
62172             DP(1,J)=P(IN(4),J)
62173             DP(2,J)=P(IN(4)+1,J)
62174             DP(3,J)=0D0
62175             DP(4,J)=0D0
62176   410     CONTINUE
62177           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62178           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62179           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62180           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62181           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62182           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62183           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62184           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62185           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62186           DHC12=DFOUR(1,2)
62187           DHCX1=DFOUR(3,1)/DHC12
62188           DHCX2=DFOUR(3,2)/DHC12
62189           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62190           DHCY1=DFOUR(4,1)/DHC12
62191           DHCY2=DFOUR(4,2)/DHC12
62192           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62193           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62194           DO 420 J=1,4
62195             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62196             P(IN(6),J)=DP(3,J)
62197             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62198      &      DHCYX*DP(3,J))
62199   420     CONTINUE
62200  
62201 C...Junction strings: produce new particle, origin.
62202   430     I=I+1
62203           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
62204             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
62205             IF(MSTU(21).GE.1) RETURN
62206           ENDIF
62207           IRANKJ=IRANKJ+1
62208           K(I,1)=1
62209           K(I,3)=IE(1)
62210           K(I,4)=0
62211           K(I,5)=0
62212  
62213 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
62214   440     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
62215           IF(K(I,2).EQ.0) GOTO 360
62216           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
62217      &    IABS(KFL(3)).GT.10) THEN
62218             IF(PYR(0).GT.PARJ(19)) GOTO 440
62219           ENDIF
62220           P(I,5)=PYMASS(K(I,2))
62221           CALL PYPTDI(KFL(1),PX(3),PY(3))
62222           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
62223           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
62224           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
62225      &    MSTU(90).LT.8) THEN
62226             MSTU(90)=MSTU(90)+1
62227             MSTU(90+MSTU(90))=I
62228             PARU(90+MSTU(90))=Z
62229           ENDIF
62230           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
62231           DO 450 J=1,3
62232             IN(J)=IN(3+J)
62233   450     CONTINUE
62234  
62235 C...Junction strings: stepping within 'low' string region.
62236           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
62237      &    P(IN(1),5)**2.GE.PR(1)) THEN
62238             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
62239             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
62240             DO 460 J=1,4
62241               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
62242   460       CONTINUE
62243             GOTO 560
62244 C...Has used up energy of junction string, i.e. no more hadrons in it.
62245           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
62246             DO 470 J=1,5
62247               P(I,J)=0D0
62248   470       CONTINUE
62249             GOTO 600
62250 C...Stepping from 'low' string region
62251           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
62252             P(IN(2)+2,4)=P(IN(2)+2,3)
62253             P(IN(2)+2,1)=1D0
62254             IN(2)=IN(2)+4
62255             IF(IN(2).GT.N+NR+4*NS) GOTO 360
62256             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62257               P(IN(1)+2,4)=P(IN(1)+2,3)
62258               P(IN(1)+2,1)=0D0
62259               IN(1)=IN(1)+4
62260             ENDIF
62261           ENDIF
62262  
62263 C...Junction strings: find new transverse directions.
62264   480     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
62265      &    IN(1).GT.IN(2)) GOTO 360
62266           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
62267             DO 490 J=1,4
62268               DP(1,J)=P(IN(1),J)
62269               DP(2,J)=P(IN(2),J)
62270               DP(3,J)=0D0
62271               DP(4,J)=0D0
62272   490       CONTINUE
62273             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62274             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62275             DHC12=DFOUR(1,2)
62276             IF(DHC12.LE.1D-2) THEN
62277               P(IN(1)+2,4)=P(IN(1)+2,3)
62278               P(IN(1)+2,1)=0D0
62279               IN(1)=IN(1)+4
62280               GOTO 480
62281             ENDIF
62282             IN(3)=N+NR+4*NS+5
62283             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62284             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62285             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62286             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62287             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62288             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62289             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62290             DHCX1=DFOUR(3,1)/DHC12
62291             DHCX2=DFOUR(3,2)/DHC12
62292             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62293             DHCY1=DFOUR(4,1)/DHC12
62294             DHCY2=DFOUR(4,2)/DHC12
62295             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62296             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62297             DO 500 J=1,4
62298               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62299               P(IN(3),J)=DP(3,J)
62300               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62301      &        DHCYX*DP(3,J))
62302   500       CONTINUE
62303 C...Express pT with respect to new axes, if sensible.
62304             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
62305             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
62306             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
62307               PX(3)=PXP
62308               PY(3)=PYP
62309             ENDIF
62310           ENDIF
62311  
62312 C...Junction strings: sum up known four-momentum, coefficients for m2.
62313           DO 530 J=1,4
62314             DHG(J)=0D0
62315             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
62316      &      PY(3)*P(IN(3)+1,J)
62317             DO 510 IN1=IN(4),IN(1)-4,4
62318               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
62319   510       CONTINUE
62320             DO 520 IN2=IN(5),IN(2)-4,4
62321               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
62322   520       CONTINUE
62323   530     CONTINUE
62324           DHM(1)=FOUR(I,I)
62325           DHM(2)=2D0*FOUR(I,IN(1))
62326           DHM(3)=2D0*FOUR(I,IN(2))
62327           DHM(4)=2D0*FOUR(IN(1),IN(2))
62328  
62329 C...Junction strings: find coefficients for Gamma expression.
62330           DO 550 IN2=IN(1)+1,IN(2),4
62331             DO 540 IN1=IN(1),IN2-1,4
62332               DHC=2D0*FOUR(IN1,IN2)
62333               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
62334               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
62335               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
62336               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
62337   540       CONTINUE
62338   550     CONTINUE
62339  
62340 C...Junction strings: solve (m2, Gamma) equation system for energies.
62341           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
62342           IF(ABS(DHS1).LT.1D-4) GOTO 360
62343           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
62344      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
62345           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
62346           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
62347      &    ABS(DHS1)-DHS2/DHS1)
62348           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
62349           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
62350      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
62351  
62352 C...Junction strings: step to new region if necessary.
62353           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
62354             P(IN(2)+2,4)=P(IN(2)+2,3)
62355             P(IN(2)+2,1)=1D0
62356             IN(2)=IN(2)+4
62357             IF(IN(2).GT.N+NR+4*NS) GOTO 360
62358             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62359               P(IN(1)+2,4)=P(IN(1)+2,3)
62360               P(IN(1)+2,1)=0D0
62361               IN(1)=IN(1)+4
62362             ENDIF
62363             GOTO 480
62364           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
62365             P(IN(1)+2,4)=P(IN(1)+2,3)
62366             P(IN(1)+2,1)=0D0
62367             IN(1)=IN(1)+4
62368             GOTO 480
62369           ENDIF
62370  
62371 C...Junction strings: particle four-momentum, remainder, loop back.
62372   560     DO 570 J=1,4
62373             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
62374      &      P(IN(2)+2,4)*P(IN(2),J)
62375             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
62376   570     CONTINUE
62377           IF(P(I,4).LT.P(I,5)) GOTO 360
62378           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
62379      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
62380           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
62381             KFL(1)=-KFL(3)
62382             PX(1)=-PX(3)
62383             PY(1)=-PY(3)
62384             GAM(1)=GAM(3)
62385             IF(IN(3).NE.IN(6)) THEN
62386               DO 580 J=1,4
62387                 P(IN(6),J)=P(IN(3),J)
62388                 P(IN(6)+1,J)=P(IN(3)+1,J)
62389   580         CONTINUE
62390             ENDIF
62391             DO 590 JQ=1,2
62392               IN(3+JQ)=IN(JQ)
62393               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
62394               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
62395   590       CONTINUE
62396             GOTO 430
62397           ENDIF
62398  
62399 C...Junction strings: save quantities left after each string.
62400           IF(IABS(KFL(1)).GT.10) GOTO 360
62401   600     I=I-1
62402           KFJH(IU)=KFL(1)
62403           DO 610 J=1,4
62404             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
62405   610     CONTINUE
62406  
62407 C...Junction strings: loopback if much unused energy in both strings.
62408           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
62409      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
62410           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
62411   620   CONTINUE
62412         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
62413      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
62414      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
62415      &  .AND.NTRYER.LT.10) GOTO 320
62416  
62417 C...Junction strings: put together to new effective string endpoint.
62418         NJS(JT)=I-ISTA
62419         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
62420         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
62421         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
62422      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
62423         DO 630 J=1,4
62424           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
62425           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
62426   630   CONTINUE
62427         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
62428      &  PJS(JT,3)**2))
62429         PJS(JT+2,5)=0D0
62430   640 CONTINUE
62431  
62432 C...Open versus closed strings. Choose breakup region for latter.
62433   650 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
62434         NS=MJU(2)-MJU(1)
62435         NB=MJU(1)-N
62436       ELSEIF(MJU(1).NE.0) THEN
62437         NS=N+NR-MJU(1)
62438         NB=MJU(1)-N
62439       ELSEIF(MJU(2).NE.0) THEN
62440         NS=MJU(2)-N
62441         NB=1
62442       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
62443         NS=NR-1
62444         NB=1
62445       ELSE
62446         NS=NR+1
62447         W2SUM=0D0
62448         DO 660 IS=1,NR
62449           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
62450           W2SUM=W2SUM+P(N+NR+IS,1)
62451   660   CONTINUE
62452         W2RAN=PYR(0)*W2SUM
62453         NB=0
62454   670   NB=NB+1
62455         W2SUM=W2SUM-P(N+NR+NB,1)
62456         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 670
62457       ENDIF
62458  
62459 C...Find longitudinal string directions (i.e. lightlike four-vectors).
62460       DO 700 IS=1,NS
62461         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
62462         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
62463         DO 680 J=1,5
62464           DP(1,J)=P(IS1,J)
62465           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
62466           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
62467           DP(2,J)=P(IS2,J)
62468           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
62469           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
62470   680   CONTINUE
62471         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
62472      &  DP(1,2)**2-DP(1,3)**2))
62473         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
62474      &  DP(2,2)**2-DP(2,3)**2))
62475         DP(3,5)=DFOUR(1,1)
62476         DP(4,5)=DFOUR(2,2)
62477         DHKC=DFOUR(1,2)
62478         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
62479         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
62480         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
62481         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
62482         IN1=N+NR+4*IS-3
62483         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
62484         DO 690 J=1,4
62485           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
62486           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
62487   690   CONTINUE
62488   700 CONTINUE
62489  
62490 C...Begin initialization: sum up energy, set starting position.
62491       ISAV=I
62492       MSTU91=MSTU(90)
62493   710 NTRY=NTRY+1
62494       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
62495         PARU12=4D0*PARU12
62496         PARU13=2D0*PARU13
62497         GOTO 140
62498       ELSEIF(NTRY.GT.100) THEN
62499         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
62500         IF(MSTU(21).GE.1) RETURN
62501       ENDIF
62502       I=ISAV
62503       MSTU(90)=MSTU91
62504       DO 730 J=1,4
62505         P(N+NRS,J)=0D0
62506         DO 720 IS=1,NR
62507           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
62508   720   CONTINUE
62509   730 CONTINUE
62510       DO 750 JT=1,2
62511         IRANK(JT)=0
62512         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
62513         IF(NS.GT.NR) IRANK(JT)=1
62514         IBARRK(JT)=0
62515         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
62516         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
62517         IN(3*JT+2)=IN(3*JT+1)+1
62518         IN(3*JT+3)=N+NR+4*NS+2*JT-1
62519         DO 740 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
62520           P(IN1,1)=2-JT
62521           P(IN1,2)=JT-1
62522           P(IN1,3)=1D0
62523   740   CONTINUE
62524   750 CONTINUE
62525  
62526 C.. MOPS variables and switches
62527       NRVMO=0
62528       XBMO=1D0
62529       MSTU(121)=0
62530       MSTU(122)=0
62531  
62532 C...Initialize flavour and pT variables for open string.
62533       IF(NS.LT.NR) THEN
62534         PX(1)=0D0
62535         PY(1)=0D0
62536         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
62537         PX(2)=-PX(1)
62538         PY(2)=-PY(1)
62539         DO 760 JT=1,2
62540           KFL(JT)=K(IE(JT),2)
62541           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
62542           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
62543           MSTJ(93)=1
62544           PMQ(JT)=PYMASS(KFL(JT))
62545           GAM(JT)=0D0
62546   760   CONTINUE
62547  
62548 C...Closed string: random initial breakup flavour, pT and vertex.
62549       ELSE
62550         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
62551         IBMO=0
62552   770   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
62553 C.. Closed string: first vertex diq attempt => enforced second
62554 C.. vertex diq
62555         IF(IABS(KFL(1)).GT.10)THEN
62556            IBMO=1
62557            MSTU(121)=0
62558            GOTO 770
62559         ENDIF
62560         IF(IBMO.EQ.1) MSTU(121)=-1
62561         KFL(2)=-KFL(1)
62562         CALL PYPTDI(KFL(1),PX(1),PY(1))
62563         PX(2)=-PX(1)
62564         PY(2)=-PY(1)
62565         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
62566   780   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
62567         ZR=PR3/(Z*P(N+NR+1,5)**2)
62568         IF(ZR.GE.1D0) GOTO 780
62569         DO 790 JT=1,2
62570           MSTJ(93)=1
62571           PMQ(JT)=PYMASS(KFL(JT))
62572           GAM(JT)=PR3*(1D0-Z)/Z
62573           IN1=N+NR+3+4*(JT/2)*(NS-1)
62574           P(IN1,JT)=1D0-Z
62575           P(IN1,3-JT)=JT-1
62576           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
62577           P(IN1+1,JT)=ZR
62578           P(IN1+1,3-JT)=2-JT
62579           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
62580   790   CONTINUE
62581       ENDIF
62582 C.. MOPS variables
62583       DO 800 JT=1,2
62584          XTMO(JT)=1D0
62585          PM2QMO(JT)=PMQ(JT)**2
62586          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
62587   800 CONTINUE
62588  
62589 C...Find initial transverse directions (i.e. spacelike four-vectors).
62590       DO 840 JT=1,2
62591         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
62592           IN1=IN(3*JT+1)
62593           IN3=IN(3*JT+3)
62594           DO 810 J=1,4
62595             DP(1,J)=P(IN1,J)
62596             DP(2,J)=P(IN1+1,J)
62597             DP(3,J)=0D0
62598             DP(4,J)=0D0
62599   810     CONTINUE
62600           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62601           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62602           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62603           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62604           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62605           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62606           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62607           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62608           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62609           DHC12=DFOUR(1,2)
62610           DHCX1=DFOUR(3,1)/DHC12
62611           DHCX2=DFOUR(3,2)/DHC12
62612           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62613           DHCY1=DFOUR(4,1)/DHC12
62614           DHCY2=DFOUR(4,2)/DHC12
62615           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62616           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62617           DO 820 J=1,4
62618             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62619             P(IN3,J)=DP(3,J)
62620             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62621      &      DHCYX*DP(3,J))
62622   820     CONTINUE
62623         ELSE
62624           DO 830 J=1,4
62625             P(IN3+2,J)=P(IN3,J)
62626             P(IN3+3,J)=P(IN3+1,J)
62627   830     CONTINUE
62628         ENDIF
62629   840 CONTINUE
62630  
62631 C...Remove energy used up in junction string fragmentation.
62632       IF(MJU(1)+MJU(2).GT.0) THEN
62633         DO 860 JT=1,2
62634           IF(NJS(JT).EQ.0) GOTO 860
62635           DO 850 J=1,4
62636             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
62637   850     CONTINUE
62638   860   CONTINUE
62639         PARJST=PARJ(33)
62640         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
62641         WMIN=PARJST+PMQ(1)+PMQ(2)
62642         WREM2=FOUR(N+NRS,N+NRS)
62643         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
62644           NTRYWR=NTRYWR+1
62645           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
62646           GOTO 140
62647         ENDIF
62648       ENDIF
62649  
62650 C...Produce new particle: side, origin.
62651   870 I=I+1
62652       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
62653         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
62654         IF(MSTU(21).GE.1) RETURN
62655       ENDIF
62656 C.. New side priority for popcorn systems
62657       IF(MSTU(121).LE.0)THEN
62658          JT=1.5D0+PYR(0)
62659          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
62660          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
62661       ENDIF
62662       JR=3-JT
62663       JS=3-2*JT
62664       IRANK(JT)=IRANK(JT)+1
62665       K(I,1)=1
62666       K(I,4)=0
62667       K(I,5)=0
62668  
62669 C...Generate flavour, hadron and pT.
62670   880 K(I,3)=IE(JT)
62671       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
62672       IF(K(I,2).EQ.0) GOTO 710
62673       MU90MO=MSTU(90)
62674       IF(MSTU(121).EQ.-1) GOTO 910
62675       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
62676      &IABS(KFL(3)).GT.10) THEN
62677         IF(PYR(0).GT.PARJ(19)) GOTO 880
62678       ENDIF
62679       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62680      &K(I,3)=IJUORI(JT)
62681       P(I,5)=PYMASS(K(I,2))
62682       CALL PYPTDI(KFL(JT),PX(3),PY(3))
62683       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
62684  
62685 C...Final hadrons for small invariant mass.
62686       MSTJ(93)=1
62687       PMQ(3)=PYMASS(KFL(3))
62688       PARJST=PARJ(33)
62689       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
62690       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
62691       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
62692      &WMIN-0.5D0*PARJ(36)*PMQ(3)
62693       WREM2=FOUR(N+NRS,N+NRS)
62694       IF(WREM2.LT.0.10D0) GOTO 710
62695       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
62696      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1080
62697  
62698 C...Choose z, which gives Gamma. Shift z for heavy flavours.
62699       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
62700       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
62701      &MSTU(90).LT.8) THEN
62702         MSTU(90)=MSTU(90)+1
62703         MSTU(90+MSTU(90))=I
62704         PARU(90+MSTU(90))=Z
62705       ENDIF
62706       KFL1A=IABS(KFL(1))
62707       KFL2A=IABS(KFL(2))
62708       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
62709      &MOD(KFL2A/1000,10)).GE.4) THEN
62710         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62711         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
62712         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
62713         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62714         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1080
62715       ENDIF
62716       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
62717  
62718 C.. MOPS baryon model modification
62719       XTMO3=(1D0-Z)*XTMO(JT)
62720       IF(IABS(KFL(3)).LE.10) NRVMO=0
62721       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
62722          GTSTMO=1D0
62723          PTSTMO=1D0
62724          RTSTMO=PYR(0)
62725          IF(IABS(KFL(JT)).LE.10)THEN
62726             XBMO=MIN(XTMO3,1D0-(2D-10))
62727             GBMO=GAM(3)
62728             PMMO=0D0
62729             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
62730             GTSTMO=1D0-PARF(192)**PGMO
62731          ELSE
62732             IF(IRANK(JT).EQ.1) THEN
62733                GBMO=GAM(JT)
62734                PMMO=0D0
62735                XBMO=1D0
62736             ENDIF
62737             IF(XBMO.LT.1D0-(1D-10))THEN
62738                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
62739                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
62740                PGMO=PGNMO
62741             ENDIF
62742             IF(MSTJ(12).GE.5)THEN
62743                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
62744                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
62745                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
62746                PMMO=PMNMO
62747             ENDIF
62748          ENDIF
62749  
62750 C.. MOPS Accepting popcorn system hadron.
62751          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
62752             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
62753                NRVMO=I-N-NR
62754                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
62755                   CALL PYERRM(11,
62756      &                 '(PYSTRF:) no more memory left in PYJETS')
62757                   IF(MSTU(21).GE.1) RETURN
62758                ENDIF
62759                IMO=I
62760                KFLMO=KFL(JT)
62761                PMQMO=PMQ(JT)
62762                PXMO=PX(JT)
62763                PYMO=PY(JT)
62764                GAMMO=GAM(JT)
62765                IRMO=IRANK(JT)
62766                XMO=XTMO(JT)
62767                DO 900 J=1,9
62768                   IF(J.LE.5) THEN
62769                      DO 890 LINE=1,I-N-NR
62770                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
62771                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
62772   890                CONTINUE
62773                   ENDIF
62774                   INMO(J)=IN(J)
62775   900          CONTINUE
62776             ENDIF
62777          ELSE
62778 C..Reject popcorn system, flag=-1 if enforcing new one
62779             MSTU(121)=-1
62780             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
62781          ENDIF
62782       ENDIF
62783  
62784  
62785 C..Lift restoring string outside MOPS block
62786   910 IF(MSTU(121).LT.0) THEN
62787          IF(MSTU(121).EQ.-2) MSTU(121)=0
62788          MSTU(90)=MU90MO
62789          NRVMO=0
62790          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 880
62791          I=IMO
62792          KFL(JT)=KFLMO
62793          PMQ(JT)=PMQMO
62794          PX(JT)=PXMO
62795          PY(JT)=PYMO
62796          GAM(JT)=GAMMO
62797          IRANK(JT)=IRMO
62798          XTMO(JT)=XMO
62799          DO 930 J=1,9
62800             IF(J.LE.5) THEN
62801                DO 920 LINE=1,I-N-NR
62802                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
62803                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
62804   920          CONTINUE
62805             ENDIF
62806             IN(J)=INMO(J)
62807   930    CONTINUE
62808          GOTO 880
62809       ENDIF
62810       XTMO(JT)=XTMO3
62811 C.. MOPS end of modification
62812  
62813       DO 940 J=1,3
62814         IN(J)=IN(3*JT+J)
62815   940 CONTINUE
62816  
62817 C...Stepping within or from 'low' string region easy.
62818       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
62819      &P(IN(1),5)**2.GE.PR(JT)) THEN
62820         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
62821         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
62822         DO 950 J=1,4
62823           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
62824   950   CONTINUE
62825         GOTO 1040
62826       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
62827         P(IN(JR)+2,4)=P(IN(JR)+2,3)
62828         P(IN(JR)+2,JT)=1D0
62829         IN(JR)=IN(JR)+4*JS
62830         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
62831         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62832           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62833           P(IN(JT)+2,JT)=0D0
62834           IN(JT)=IN(JT)+4*JS
62835         ENDIF
62836       ENDIF
62837  
62838 C...Find new transverse directions (i.e. spacelike string vectors).
62839   960 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
62840      &IN(1).GT.IN(2)) GOTO 710
62841       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
62842         DO 970 J=1,4
62843           DP(1,J)=P(IN(1),J)
62844           DP(2,J)=P(IN(2),J)
62845           DP(3,J)=0D0
62846           DP(4,J)=0D0
62847   970   CONTINUE
62848         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
62849         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
62850         DHC12=DFOUR(1,2)
62851         IF(DHC12.LE.1D-2) THEN
62852           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62853           P(IN(JT)+2,JT)=0D0
62854           IN(JT)=IN(JT)+4*JS
62855           GOTO 960
62856         ENDIF
62857         IN(3)=N+NR+4*NS+5
62858         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
62859         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
62860         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
62861         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
62862         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
62863         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
62864         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
62865         DHCX1=DFOUR(3,1)/DHC12
62866         DHCX2=DFOUR(3,2)/DHC12
62867         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
62868         DHCY1=DFOUR(4,1)/DHC12
62869         DHCY2=DFOUR(4,2)/DHC12
62870         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
62871         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
62872         DO 980 J=1,4
62873           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
62874           P(IN(3),J)=DP(3,J)
62875           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
62876      &    DHCYX*DP(3,J))
62877   980   CONTINUE
62878 C...Express pT with respect to new axes, if sensible.
62879         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
62880      &  FOUR(IN(3*JT+3)+1,IN(3)))
62881         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
62882      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
62883         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
62884           PX(3)=PXP
62885           PY(3)=PYP
62886         ENDIF
62887       ENDIF
62888  
62889 C...Sum up known four-momentum. Gives coefficients for m2 expression.
62890       DO 1010 J=1,4
62891         DHG(J)=0D0
62892         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
62893      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
62894         DO 990 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
62895           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
62896   990   CONTINUE
62897         DO 1000 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
62898           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
62899  1000   CONTINUE
62900  1010 CONTINUE
62901       DHM(1)=FOUR(I,I)
62902       DHM(2)=2D0*FOUR(I,IN(1))
62903       DHM(3)=2D0*FOUR(I,IN(2))
62904       DHM(4)=2D0*FOUR(IN(1),IN(2))
62905  
62906 C...Find coefficients for Gamma expression.
62907       DO 1030 IN2=IN(1)+1,IN(2),4
62908         DO 1020 IN1=IN(1),IN2-1,4
62909           DHC=2D0*FOUR(IN1,IN2)
62910           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
62911           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
62912           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
62913           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
62914  1020   CONTINUE
62915  1030 CONTINUE
62916  
62917 C...Solve (m2, Gamma) equation system for energies taken.
62918       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
62919       IF(ABS(DHS1).LT.1D-4) GOTO 710
62920       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
62921      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
62922       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
62923       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
62924      &ABS(DHS1)-DHS2/DHS1)
62925       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 710
62926       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
62927      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
62928  
62929 C...Step to new region if necessary.
62930       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
62931         P(IN(JR)+2,4)=P(IN(JR)+2,3)
62932         P(IN(JR)+2,JT)=1D0
62933         IN(JR)=IN(JR)+4*JS
62934         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
62935         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
62936           P(IN(JT)+2,4)=P(IN(JT)+2,3)
62937           P(IN(JT)+2,JT)=0D0
62938           IN(JT)=IN(JT)+4*JS
62939         ENDIF
62940         GOTO 960
62941       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
62942         P(IN(JT)+2,4)=P(IN(JT)+2,3)
62943         P(IN(JT)+2,JT)=0D0
62944         IN(JT)=IN(JT)+4*JS
62945         GOTO 960
62946       ENDIF
62947  
62948 C...Four-momentum of particle. Remaining quantities. Loop back.
62949  1040 DO 1050 J=1,4
62950         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
62951         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
62952  1050 CONTINUE
62953       IF(P(IN(1)+2,4).GT.1D0+PARU(14).OR.P(IN(1)+2,4).LT.-PARU(14).OR.
62954      &P(IN(2)+2,4).GT.1D0+PARU(14).OR.P(IN(2)+2,4).LT.-PARU(14))
62955      &GOTO 200
62956       IF(P(I,4).LT.P(I,5)) GOTO 710
62957       KFL(JT)=-KFL(3)
62958       PMQ(JT)=PMQ(3)
62959       PX(JT)=-PX(3)
62960       PY(JT)=-PY(3)
62961       GAM(JT)=GAM(3)
62962       IF(IN(3).NE.IN(3*JT+3)) THEN
62963         DO 1060 J=1,4
62964           P(IN(3*JT+3),J)=P(IN(3),J)
62965           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
62966  1060   CONTINUE
62967       ENDIF
62968       DO 1070 JQ=1,2
62969         IN(3*JT+JQ)=IN(JQ)
62970         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
62971         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
62972  1070 CONTINUE
62973       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62974      &IBARRK(JT)=0
62975       GOTO 870
62976  
62977 C...Final hadron: side, flavour, hadron, mass.
62978  1080 I=I+1
62979       K(I,1)=1
62980       K(I,3)=IE(JR)
62981       K(I,4)=0
62982       K(I,5)=0
62983       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
62984       IF(K(I,2).EQ.0) GOTO 710
62985       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
62986      &IBARRK(JT)=0
62987       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62988      &K(I,3)=IJUORI(JT)
62989       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
62990      &K(I,3)=IJUORI(JR)
62991       P(I,5)=PYMASS(K(I,2))
62992       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
62993  
62994 C...Final two hadrons: find common setup of four-vectors.
62995       JQ=1
62996       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
62997      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
62998       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
62999       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
63000       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
63001       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
63002         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
63003         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
63004         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
63005      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
63006       ENDIF
63007  
63008 C...Solve kinematics for final two hadrons, if possible.
63009       WREM2=2D0*DHR1*DHR2*DHC12
63010       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
63011       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
63012       IF(FD.GE.1D0) GOTO 710
63013       FA=WREM2+PR(JT)-PR(JR)
63014       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
63015       PREVCF=PARJ(42)
63016       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
63017       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
63018       FB=SIGN(FB,JS*(PYR(0)-PREV))
63019       KFL1A=IABS(KFL(1))
63020       KFL2A=IABS(KFL(2))
63021       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
63022      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
63023      &4D0*WREM2*PR(JT))),DBLE(JS))
63024       DO 1090 J=1,4
63025         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
63026      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
63027      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
63028         P(I,J)=P(N+NRS,J)-P(I-1,J)
63029  1090 CONTINUE
63030       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 710
63031       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
63032       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
63033       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
63034         NTRYFN=NTRYFN+1
63035         IF(NTRYFN.LT.100) GOTO 140
63036         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
63037       ENDIF
63038  
63039 C...Mark jets as fragmented and give daughter pointers.
63040       N=I-NRS+1
63041       DO 1100 I=NSAV+1,NSAV+NP
63042         IM=K(I,3)
63043         K(IM,1)=K(IM,1)+10
63044         IF(MSTU(16).NE.2) THEN
63045           K(IM,4)=NSAV+1
63046           K(IM,5)=NSAV+1
63047         ELSE
63048           K(IM,4)=NSAV+2
63049           K(IM,5)=N
63050         ENDIF
63051  1100 CONTINUE
63052  
63053 C...Document string system. Move up particles.
63054       NSAV=NSAV+1
63055       K(NSAV,1)=11
63056       K(NSAV,2)=92
63057       K(NSAV,3)=IP
63058       K(NSAV,4)=NSAV+1
63059       K(NSAV,5)=N
63060       DO 1110 J=1,4
63061         P(NSAV,J)=DPS(J)
63062         V(NSAV,J)=V(IP,J)
63063  1110 CONTINUE
63064       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
63065       V(NSAV,5)=0D0
63066       DO 1130 I=NSAV+1,N
63067         DO 1120 J=1,5
63068           K(I,J)=K(I+NRS-1,J)
63069           P(I,J)=P(I+NRS-1,J)
63070           V(I,J)=0D0
63071  1120   CONTINUE
63072  1130 CONTINUE
63073       MSTU91=MSTU(90)
63074       DO 1140 IZ=MSTU90+1,MSTU91
63075         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
63076         PARU9T(IZ)=PARU(90+IZ)
63077  1140 CONTINUE
63078       MSTU(90)=MSTU90
63079  
63080 C...Order particles in rank along the chain. Update mother pointer.
63081       DO 1160 I=NSAV+1,N
63082         DO 1150 J=1,5
63083           K(I-NSAV+N,J)=K(I,J)
63084           P(I-NSAV+N,J)=P(I,J)
63085  1150   CONTINUE
63086  1160 CONTINUE
63087       I1=NSAV
63088       DO 1190 I=N+1,2*N-NSAV
63089         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1190
63090         I1=I1+1
63091         DO 1170 J=1,5
63092           K(I1,J)=K(I,J)
63093           P(I1,J)=P(I,J)
63094  1170   CONTINUE
63095         IF(MSTU(16).NE.2) K(I1,3)=NSAV
63096         DO 1180 IZ=MSTU90+1,MSTU91
63097           IF(MSTU9T(IZ).EQ.I) THEN
63098             MSTU(90)=MSTU(90)+1
63099             MSTU(90+MSTU(90))=I1
63100             PARU(90+MSTU(90))=PARU9T(IZ)
63101           ENDIF
63102  1180   CONTINUE
63103  1190 CONTINUE
63104       DO 1220 I=2*N-NSAV,N+1,-1
63105         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1220
63106         I1=I1+1
63107         DO 1200 J=1,5
63108           K(I1,J)=K(I,J)
63109           P(I1,J)=P(I,J)
63110  1200   CONTINUE
63111         IF(MSTU(16).NE.2) K(I1,3)=NSAV
63112         DO 1210 IZ=MSTU90+1,MSTU91
63113           IF(MSTU9T(IZ).EQ.I) THEN
63114             MSTU(90)=MSTU(90)+1
63115             MSTU(90+MSTU(90))=I1
63116             PARU(90+MSTU(90))=PARU9T(IZ)
63117           ENDIF
63118  1210   CONTINUE
63119  1220 CONTINUE
63120  
63121 C...Boost back particle system. Set production vertices.
63122       IF(MBST.EQ.0) THEN
63123         MSTU(33)=1
63124         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
63125      &  DPS(3)/DPS(4))
63126       ELSE
63127         DO 1230 I=NSAV+1,N
63128           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
63129           IF(P(I,3).GT.0D0) THEN
63130             HHPEZ=(P(I,4)+P(I,3))*HHBZ
63131             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
63132             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
63133           ELSE
63134             HHPEZ=(P(I,4)-P(I,3))/HHBZ
63135             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
63136             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
63137           ENDIF
63138  1230   CONTINUE
63139       ENDIF
63140       DO 1250 I=NSAV+1,N
63141         DO 1240 J=1,4
63142           V(I,J)=V(IP,J)
63143  1240   CONTINUE
63144  1250 CONTINUE
63145  
63146       RETURN
63147       END
63148  
63149 C*********************************************************************
63150  
63151 C...PYJURF
63152 C...From three given input vectors in PJU the boost VJU from
63153 C...the "lab frame" to the junction rest frame is constructed.
63154  
63155       SUBROUTINE PYJURF(PJU,VJU)
63156  
63157 C...Double precision and integer declarations.
63158       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63159       IMPLICIT INTEGER(I-N)
63160  
63161 C...Input, output and local arrays.
63162       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
63163       DATA TWOPI/6.283186D0/
63164  
63165 C...Calculate masses and other invariants.
63166       DO 100 J=1,4
63167         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
63168   100 CONTINUE
63169       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
63170       PSUM(5)=SQRT(PSUM2)
63171       DO 120 I=1,3
63172         DO 110 J=1,3
63173           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
63174      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
63175   110   CONTINUE
63176   120 CONTINUE
63177  
63178 C...Pick I to be most massive parton and J to be the one closest to I.
63179       ITRY=0
63180       I=1
63181       IF(A(2,2).GT.A(1,1)) I=2
63182       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
63183   130 ITRY=ITRY+1
63184       J=1+MOD(I,3)
63185       K=1+MOD(J,3)
63186       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
63187         K=1+MOD(I,3)
63188         J=1+MOD(K,3)
63189       ENDIF
63190       PMI2=A(I,I)
63191       PMJ2=A(J,J)
63192       PMK2=A(K,K)
63193       AIJ=A(I,J)
63194       AIK=A(I,K)
63195       AJK=A(J,K)
63196  
63197 C...Trivial find new parton energies if all three partons are massless.
63198       IF(PMI2.LT.1D-4) THEN
63199         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
63200         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
63201         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
63202  
63203 C...Else find momentum range for parton I and values at extremes.
63204       ELSE
63205         PAIMIN=0D0
63206         PEIMIN=SQRT(PMI2)
63207         PEJMIN=AIJ/PEIMIN
63208         PEKMIN=AIK/PEIMIN
63209         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
63210         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
63211         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
63212         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
63213         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
63214         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
63215         HI=PEIMAX**2-0.25D0*PAIMAX**2
63216         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
63217      &  0.5D0*PAIMAX*AIJ)/HI
63218         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
63219      &  0.5D0*PAIMAX*AIK)/HI
63220         PEJMAX=SQRT(PAJMAX**2+PMJ2)
63221         PEKMAX=SQRT(PAKMAX**2+PMK2)
63222         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
63223  
63224 C...If unexpected values at upper endpoint then pick another parton.
63225         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
63226           I1=1+MOD(I,3)
63227           IF(A(I1,I1).GE.1D-4) THEN
63228             I=I1
63229             GOTO 130
63230           ENDIF
63231           ITRY=ITRY+1
63232           I1=1+MOD(I,3)
63233           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
63234             I=I1
63235             GOTO 130
63236           ENDIF
63237         ENDIF
63238  
63239 C..Start binary + linear search to find solution inside range.
63240         ITER=0
63241         ITMIN=0
63242         ITMAX=0
63243         PAI=0.5D0*(PAIMIN+PAIMAX)
63244   140   ITER=ITER+1
63245  
63246 C...Derive momentum of other two partons and distance to root.
63247         PEI=SQRT(PAI**2+PMI2)
63248         HI=PEI**2-0.25D0*PAI**2
63249         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
63250         PEJ=SQRT(PAJ**2+PMJ2)
63251         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
63252         PEK=SQRT(PAK**2+PMK2)
63253         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
63254  
63255 C...Pick next I momentum to explore, hopefully closer to root.
63256         IF(FNOW.GT.0D0) THEN
63257           PAIMIN=PAI
63258           FMIN=FNOW
63259           ITMIN=ITMIN+1
63260         ELSE
63261           PAIMAX=PAI
63262           FMAX=FNOW
63263           ITMAX=ITMAX+1
63264         ENDIF
63265         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
63266      &  THEN
63267           PAI=0.5D0*(PAIMIN+PAIMAX)
63268           GOTO 140
63269         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
63270      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
63271           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
63272           GOTO 140
63273         ENDIF
63274       ENDIF
63275  
63276 C...Now know energies in junction rest frame.
63277       PENEW(I)=PEI
63278       PENEW(J)=PEJ
63279       PENEW(K)=PEK
63280  
63281 C...Boost (copy of) partons to their rest frame.
63282       VXCM=-PSUM(1)/PSUM(5)
63283       VYCM=-PSUM(2)/PSUM(5)
63284       VZCM=-PSUM(3)/PSUM(5)
63285       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
63286       DO 150 I=1,3
63287         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
63288         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
63289         PCM(I,1)=PJU(I,1)+FAC2*VXCM
63290         PCM(I,2)=PJU(I,2)+FAC2*VYCM
63291         PCM(I,3)=PJU(I,3)+FAC2*VZCM
63292         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
63293         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
63294   150 CONTINUE
63295  
63296 C...Construct difference vectors and boost to junction rest frame.
63297       DO 160 J=1,3
63298         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
63299         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
63300   160 CONTINUE
63301       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
63302       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
63303       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
63304       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
63305       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
63306       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
63307       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
63308       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
63309       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
63310       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
63311       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
63312  
63313 C...Add two boosts, giving final result.
63314       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
63315       VJU(1)=VXJU+FCM*VXCM
63316       VJU(2)=VYJU+FCM*VYCM
63317       VJU(3)=VZJU+FCM*VZCM
63318       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
63319       VJU(5)=1D0
63320  
63321 C...In case of error in reconstruction: revert to CM frame of system.
63322       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
63323      &(PCM(1,5)*PCM(2,5))
63324       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
63325      &(PCM(1,5)*PCM(3,5))
63326       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
63327      &(PCM(2,5)*PCM(3,5))
63328       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
63329       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
63330       DO 170 I=1,3
63331         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
63332         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
63333         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
63334         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
63335         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
63336         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
63337         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
63338   170 CONTINUE
63339       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
63340      &(PCM(1,5)*PCM(2,5))
63341       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
63342      &(PCM(1,5)*PCM(3,5))
63343       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
63344      &(PCM(2,5)*PCM(3,5))
63345       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
63346       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
63347       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
63348         VJU(1)=VXCM
63349         VJU(2)=VYCM
63350         VJU(3)=VZCM
63351         VJU(4)=GAMCM
63352       ENDIF
63353  
63354       RETURN
63355       END
63356  
63357 C*********************************************************************
63358  
63359 C...PYINDF
63360 C...Handles the fragmentation of a jet system (or a single
63361 C...jet) according to independent fragmentation models.
63362  
63363       SUBROUTINE PYINDF(IP)
63364  
63365 C...Double precision and integer declarations.
63366       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63367       IMPLICIT INTEGER(I-N)
63368       INTEGER PYK,PYCHGE,PYCOMP
63369 C...Commonblocks.
63370       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
63371       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
63372       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
63373       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
63374 C...Local arrays.
63375       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
63376      &KFLO(2),PXO(2),PYO(2),WO(2)
63377  
63378 C.. MOPS error message
63379       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
63380      &' are not treated as expected in independent fragmentation')
63381  
63382 C...Reset counters. Identify parton system and take copy. Check flavour.
63383       NSAV=N
63384       MSTU90=MSTU(90)
63385       NJET=0
63386       KQSUM=0
63387       DO 100 J=1,5
63388         DPS(J)=0D0
63389   100 CONTINUE
63390       I=IP-1
63391   110 I=I+1
63392       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
63393         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
63394         IF(MSTU(21).GE.1) RETURN
63395       ENDIF
63396       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
63397       KC=PYCOMP(K(I,2))
63398       IF(KC.EQ.0) GOTO 110
63399       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
63400       IF(KQ.EQ.0) GOTO 110
63401       NJET=NJET+1
63402       IF(KQ.NE.2) KQSUM=KQSUM+KQ
63403       DO 120 J=1,5
63404         K(NSAV+NJET,J)=K(I,J)
63405         P(NSAV+NJET,J)=P(I,J)
63406         DPS(J)=DPS(J)+P(I,J)
63407   120 CONTINUE
63408       K(NSAV+NJET,3)=I
63409       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
63410      &K(I+1,1).EQ.2)) GOTO 110
63411       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
63412         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
63413         IF(MSTU(21).GE.1) RETURN
63414       ENDIF
63415  
63416 C...Boost copied system to CM frame. Find CM energy and sum flavours.
63417       IF(NJET.NE.1) THEN
63418         MSTU(33)=1
63419         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
63420      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
63421       ENDIF
63422       PECM=0D0
63423       DO 130 J=1,3
63424         NFI(J)=0
63425   130 CONTINUE
63426       DO 140 I=NSAV+1,NSAV+NJET
63427         PECM=PECM+P(I,4)
63428         KFA=IABS(K(I,2))
63429         IF(KFA.LE.3) THEN
63430           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
63431         ELSEIF(KFA.GT.1000) THEN
63432           KFLA=MOD(KFA/1000,10)
63433           KFLB=MOD(KFA/100,10)
63434           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
63435           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
63436         ENDIF
63437   140 CONTINUE
63438  
63439 C...Loop over attempts made. Reset counters.
63440       NTRY=0
63441   150 NTRY=NTRY+1
63442       IF(NTRY.GT.200) THEN
63443         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
63444         IF(MSTU(21).GE.1) RETURN
63445       ENDIF
63446       N=NSAV+NJET
63447       MSTU(90)=MSTU90
63448       DO 160 J=1,3
63449         NFL(J)=NFI(J)
63450         IFET(J)=0
63451         KFLF(J)=0
63452   160 CONTINUE
63453  
63454 C...Loop over jets to be fragmented.
63455       DO 230 IP1=NSAV+1,NSAV+NJET
63456         MSTJ(91)=0
63457         NSAV1=N
63458         MSTU91=MSTU(90)
63459  
63460 C...Initial flavour and momentum values. Jet along +z axis.
63461         KFLH=IABS(K(IP1,2))
63462         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
63463         KFLO(2)=0
63464         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
63465  
63466 C...Initial values for quark or diquark jet.
63467   170   IF(IABS(K(IP1,2)).NE.21) THEN
63468           NSTR=1
63469           KFLO(1)=K(IP1,2)
63470           CALL PYPTDI(0,PXO(1),PYO(1))
63471           WO(1)=WF
63472  
63473 C...Initial values for gluon treated like random quark jet.
63474         ELSEIF(MSTJ(2).LE.2) THEN
63475           NSTR=1
63476           IF(MSTJ(2).EQ.2) MSTJ(91)=1
63477           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
63478           CALL PYPTDI(0,PXO(1),PYO(1))
63479           WO(1)=WF
63480  
63481 C...Initial values for gluon treated like quark-antiquark jet pair,
63482 C...sharing energy according to Altarelli-Parisi splitting function.
63483         ELSE
63484           NSTR=2
63485           IF(MSTJ(2).EQ.4) MSTJ(91)=1
63486           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
63487           KFLO(2)=-KFLO(1)
63488           CALL PYPTDI(0,PXO(1),PYO(1))
63489           PXO(2)=-PXO(1)
63490           PYO(2)=-PYO(1)
63491           WO(1)=WF*PYR(0)**(1D0/3D0)
63492           WO(2)=WF-WO(1)
63493         ENDIF
63494  
63495 C...Initial values for rank, flavour, pT and W+.
63496         DO 220 ISTR=1,NSTR
63497   180     I=N
63498           MSTU(90)=MSTU91
63499           IRANK=0
63500           KFL1=KFLO(ISTR)
63501           PX1=PXO(ISTR)
63502           PY1=PYO(ISTR)
63503           W=WO(ISTR)
63504  
63505 C...New hadron. Generate flavour and hadron species.
63506   190     I=I+1
63507           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
63508             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
63509             IF(MSTU(21).GE.1) RETURN
63510           ENDIF
63511           IRANK=IRANK+1
63512           K(I,1)=1
63513           K(I,3)=IP1
63514           K(I,4)=0
63515           K(I,5)=0
63516   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
63517           IF(K(I,2).EQ.0) GOTO 180
63518           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
63519             IF(PYR(0).GT.PARJ(19)) GOTO 200
63520           ENDIF
63521  
63522 C...Find hadron mass. Generate four-momentum.
63523           P(I,5)=PYMASS(K(I,2))
63524           CALL PYPTDI(KFL1,PX2,PY2)
63525           P(I,1)=PX1+PX2
63526           P(I,2)=PY1+PY2
63527           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
63528           CALL PYZDIS(KFL1,KFL2,PR,Z)
63529           MZSAV=0
63530           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
63531             MZSAV=1
63532             MSTU(90)=MSTU(90)+1
63533             MSTU(90+MSTU(90))=I
63534             PARU(90+MSTU(90))=Z
63535           ENDIF
63536           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
63537           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
63538           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
63539      &    P(I,3).LE.0.001D0) THEN
63540             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
63541             P(I,3)=0.0001D0
63542             P(I,4)=SQRT(PR)
63543             Z=P(I,4)/W
63544           ENDIF
63545  
63546 C...Remaining flavour and momentum.
63547           KFL1=-KFL2
63548           PX1=-PX2
63549           PY1=-PY2
63550           W=(1D0-Z)*W
63551           DO 210 J=1,5
63552             V(I,J)=0D0
63553   210     CONTINUE
63554  
63555 C...Check if pL acceptable. Go back for new hadron if enough energy.
63556           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
63557             I=I-1
63558             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
63559           ENDIF
63560           IF(W.GT.PARJ(31)) GOTO 190
63561           N=I
63562   220   CONTINUE
63563         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
63564         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
63565  
63566 C...Rotate jet to new direction.
63567         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
63568         PHI=PYANGL(P(IP1,1),P(IP1,2))
63569         MSTU(33)=1
63570         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
63571         K(K(IP1,3),4)=NSAV1+1
63572         K(K(IP1,3),5)=N
63573  
63574 C...End of jet generation loop. Skip conservation in some cases.
63575   230 CONTINUE
63576       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
63577       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
63578  
63579 C...Subtract off produced hadron flavours, finished if zero.
63580       DO 240 I=NSAV+NJET+1,N
63581         KFA=IABS(K(I,2))
63582         KFLA=MOD(KFA/1000,10)
63583         KFLB=MOD(KFA/100,10)
63584         KFLC=MOD(KFA/10,10)
63585         IF(KFLA.EQ.0) THEN
63586           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
63587           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
63588         ELSE
63589           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
63590           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
63591           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
63592         ENDIF
63593   240 CONTINUE
63594       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
63595      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
63596       IF(NREQ.EQ.0) GOTO 320
63597  
63598 C...Take away flavour of low-momentum particles until enough freedom.
63599       NREM=0
63600   250 IREM=0
63601       P2MIN=PECM**2
63602       DO 260 I=NSAV+NJET+1,N
63603         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
63604         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
63605         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
63606   260 CONTINUE
63607       IF(IREM.EQ.0) GOTO 150
63608       K(IREM,1)=7
63609       KFA=IABS(K(IREM,2))
63610       KFLA=MOD(KFA/1000,10)
63611       KFLB=MOD(KFA/100,10)
63612       KFLC=MOD(KFA/10,10)
63613       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
63614       IF(K(IREM,1).EQ.8) GOTO 250
63615       IF(KFLA.EQ.0) THEN
63616         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
63617         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
63618         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
63619       ELSE
63620         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
63621         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
63622         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
63623       ENDIF
63624       NREM=NREM+1
63625       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
63626      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
63627       IF(NREQ.GT.NREM) GOTO 250
63628       DO 270 I=NSAV+NJET+1,N
63629         IF(K(I,1).EQ.8) K(I,1)=1
63630   270 CONTINUE
63631  
63632 C...Find combination of existing and new flavours for hadron.
63633   280 NFET=2
63634       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
63635       IF(NREQ.LT.NREM) NFET=1
63636       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
63637       DO 290 J=1,NFET
63638         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
63639         KFLF(J)=ISIGN(1,NFL(1))
63640         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
63641         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
63642   290 CONTINUE
63643       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
63644      &GOTO 280
63645       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
63646      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
63647      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
63648       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
63649       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
63650       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
63651       IF(NFET.LE.2) KFLF(3)=0
63652       IF(KFLF(3).NE.0) THEN
63653         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
63654      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
63655         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
63656      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
63657       ELSE
63658         KFLFC=KFLF(1)
63659       ENDIF
63660       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
63661       IF(KF.EQ.0) GOTO 280
63662       DO 300 J=1,MAX(2,NFET)
63663         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
63664   300 CONTINUE
63665  
63666 C...Store hadron at random among free positions.
63667       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
63668       DO 310 I=NSAV+NJET+1,N
63669         IF(K(I,1).EQ.7) NPOS=NPOS-1
63670         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
63671         K(I,1)=1
63672         K(I,2)=KF
63673         P(I,5)=PYMASS(K(I,2))
63674         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63675   310 CONTINUE
63676       NREM=NREM-1
63677       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
63678      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
63679       IF(NREM.GT.0) GOTO 280
63680  
63681 C...Compensate for missing momentum in global scheme (3 options).
63682   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
63683         DO 340 J=1,3
63684           PSI(J)=0D0
63685           DO 330 I=NSAV+NJET+1,N
63686             PSI(J)=PSI(J)+P(I,J)
63687   330     CONTINUE
63688   340   CONTINUE
63689         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
63690         PWS=0D0
63691         DO 350 I=NSAV+NJET+1,N
63692           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
63693           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
63694      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
63695           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
63696   350   CONTINUE
63697         DO 370 I=NSAV+NJET+1,N
63698           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
63699           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
63700      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
63701           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
63702           DO 360 J=1,3
63703             P(I,J)=P(I,J)-PSI(J)*PW/PWS
63704   360     CONTINUE
63705           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63706   370   CONTINUE
63707  
63708 C...Compensate for missing momentum withing each jet separately.
63709       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
63710         DO 390 I=N+1,N+NJET
63711           K(I,1)=0
63712           DO 380 J=1,5
63713             P(I,J)=0D0
63714   380     CONTINUE
63715   390   CONTINUE
63716         DO 410 I=NSAV+NJET+1,N
63717           IR1=K(I,3)
63718           IR2=N+IR1-NSAV
63719           K(IR2,1)=K(IR2,1)+1
63720           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
63721      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
63722           DO 400 J=1,3
63723             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
63724   400     CONTINUE
63725           P(IR2,4)=P(IR2,4)+P(I,4)
63726           P(IR2,5)=P(IR2,5)+PLS
63727   410   CONTINUE
63728         PSS=0D0
63729         DO 420 I=N+1,N+NJET
63730           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
63731   420   CONTINUE
63732         DO 440 I=NSAV+NJET+1,N
63733           IR1=K(I,3)
63734           IR2=N+IR1-NSAV
63735           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
63736      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
63737           DO 430 J=1,3
63738             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
63739      &      PLS*P(IR1,J)
63740   430     CONTINUE
63741           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63742   440   CONTINUE
63743       ENDIF
63744  
63745 C...Scale momenta for energy conservation.
63746       IF(MOD(MSTJ(3),5).NE.0) THEN
63747         PMS=0D0
63748         PES=0D0
63749         PQS=0D0
63750         DO 450 I=NSAV+NJET+1,N
63751           PMS=PMS+P(I,5)
63752           PES=PES+P(I,4)
63753           PQS=PQS+P(I,5)**2/P(I,4)
63754   450   CONTINUE
63755         IF(PMS.GE.PECM) GOTO 150
63756         NECO=0
63757   460   NECO=NECO+1
63758         PFAC=(PECM-PQS)/(PES-PQS)
63759         PES=0D0
63760         PQS=0D0
63761         DO 480 I=NSAV+NJET+1,N
63762           DO 470 J=1,3
63763             P(I,J)=PFAC*P(I,J)
63764   470     CONTINUE
63765           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
63766           PES=PES+P(I,4)
63767           PQS=PQS+P(I,5)**2/P(I,4)
63768   480   CONTINUE
63769         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
63770       ENDIF
63771  
63772 C...Origin of produced particles and parton daughter pointers.
63773   490 DO 500 I=NSAV+NJET+1,N
63774         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
63775         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
63776   500 CONTINUE
63777       DO 510 I=NSAV+1,NSAV+NJET
63778         I1=K(I,3)
63779         K(I1,1)=K(I1,1)+10
63780         IF(MSTU(16).NE.2) THEN
63781           K(I1,4)=NSAV+1
63782           K(I1,5)=NSAV+1
63783         ELSE
63784           K(I1,4)=K(I1,4)-NJET+1
63785           K(I1,5)=K(I1,5)-NJET+1
63786           IF(K(I1,5).LT.K(I1,4)) THEN
63787             K(I1,4)=0
63788             K(I1,5)=0
63789           ENDIF
63790         ENDIF
63791   510 CONTINUE
63792  
63793 C...Document independent fragmentation system. Remove copy of jets.
63794       NSAV=NSAV+1
63795       K(NSAV,1)=11
63796       K(NSAV,2)=93
63797       K(NSAV,3)=IP
63798       K(NSAV,4)=NSAV+1
63799       K(NSAV,5)=N-NJET+1
63800       DO 520 J=1,4
63801         P(NSAV,J)=DPS(J)
63802         V(NSAV,J)=V(IP,J)
63803   520 CONTINUE
63804       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
63805       V(NSAV,5)=0D0
63806       DO 540 I=NSAV+NJET,N
63807         DO 530 J=1,5
63808           K(I-NJET+1,J)=K(I,J)
63809           P(I-NJET+1,J)=P(I,J)
63810           V(I-NJET+1,J)=V(I,J)
63811   530   CONTINUE
63812   540 CONTINUE
63813       N=N-NJET+1
63814       DO 550 IZ=MSTU90+1,MSTU(90)
63815         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
63816   550 CONTINUE
63817  
63818 C...Boost back particle system. Set production vertices.
63819       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
63820      &DPS(2)/DPS(4),DPS(3)/DPS(4))
63821       DO 570 I=NSAV+1,N
63822         DO 560 J=1,4
63823           V(I,J)=V(IP,J)
63824   560   CONTINUE
63825   570 CONTINUE
63826  
63827       RETURN
63828       END
63829  
63830 C*********************************************************************
63831  
63832 C...PYDECY
63833 C...Handles the decay of unstable particles.
63834  
63835       SUBROUTINE PYDECY(IP)
63836  
63837 C...Double precision and integer declarations.
63838       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
63839       IMPLICIT INTEGER(I-N)
63840       INTEGER PYK,PYCHGE,PYCOMP
63841 C...Commonblocks.
63842       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
63843       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
63844       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
63845       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
63846       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
63847 C...Local arrays.
63848       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
63849      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
63850       CHARACTER CIDC*4
63851       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
63852  
63853 C...Functions: momentum in two-particle decays and four-product.
63854       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
63855       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)
63856  
63857 C...Initial values.
63858       NTRY=0
63859       NSAV=N
63860       KFA=IABS(K(IP,2))
63861       KFS=ISIGN(1,K(IP,2))
63862       KC=PYCOMP(KFA)
63863       MSTJ(92)=0
63864  
63865 C...Choose lifetime and determine decay vertex.
63866       IF(K(IP,1).EQ.5) THEN
63867         V(IP,5)=0D0
63868       ELSEIF(K(IP,1).NE.4) THEN
63869         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
63870       ENDIF
63871       DO 100 J=1,4
63872         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
63873   100 CONTINUE
63874  
63875 C...Determine whether decay allowed or not.
63876       MOUT=0
63877       IF(MSTJ(22).EQ.2) THEN
63878         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
63879       ELSEIF(MSTJ(22).EQ.3) THEN
63880         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
63881       ELSEIF(MSTJ(22).EQ.4) THEN
63882         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
63883         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
63884       ENDIF
63885       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
63886         K(IP,1)=4
63887         RETURN
63888       ENDIF
63889  
63890 C...Interface to external tau decay library (for tau polarization).
63891       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
63892  
63893 C...Starting values for pointers and momenta.
63894         ITAU=IP
63895         DO 110 J=1,4
63896           PTAU(J)=P(ITAU,J)
63897           PCMTAU(J)=P(ITAU,J)
63898   110   CONTINUE
63899  
63900 C...Iterate to find position and code of mother of tau.
63901         IMTAU=ITAU
63902   120   IMTAU=K(IMTAU,3)
63903  
63904         IF(IMTAU.EQ.0) THEN
63905 C...If no known origin then impossible to do anything further.
63906           KFORIG=0
63907           IORIG=0
63908  
63909         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
63910 C...If tau -> tau + gamma then add gamma energy and loop.
63911           IF(K(K(IMTAU,4),2).EQ.22) THEN
63912             DO 130 J=1,4
63913               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
63914   130       CONTINUE
63915           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
63916             DO 140 J=1,4
63917               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
63918   140       CONTINUE
63919           ENDIF
63920           GOTO 120
63921  
63922         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
63923 C...If coming from weak decay of hadron then W is not stored in record,
63924 C...but can be reconstructed by adding neutrino momentum.
63925           KFORIG=-ISIGN(24,K(ITAU,2))
63926           IORIG=0
63927           DO 160 II=K(IMTAU,4),K(IMTAU,5)
63928             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
63929               DO 150 J=1,4
63930                 PCMTAU(J)=PCMTAU(J)+P(II,J)
63931   150         CONTINUE
63932             ENDIF
63933   160     CONTINUE
63934  
63935         ELSE
63936 C...If coming from resonance decay then find latest copy of this
63937 C...resonance (may not completely agree).
63938           KFORIG=K(IMTAU,2)
63939           IORIG=IMTAU
63940           DO 170 II=IMTAU+1,IP-1
63941             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
63942      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
63943   170     CONTINUE
63944           DO 180 J=1,4
63945             PCMTAU(J)=P(IORIG,J)
63946   180     CONTINUE
63947         ENDIF
63948  
63949 C...Boost tau to rest frame of production process (where known)
63950 C...and rotate it to sit along +z axis.
63951         DO 190 J=1,3
63952           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
63953   190   CONTINUE
63954         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
63955      &  -DBETAU(2),-DBETAU(3))
63956         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
63957         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
63958         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
63959         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
63960  
63961 C...Call tau decay routine (if meaningful) and fill extra info.
63962         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
63963           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
63964           DO 200 II=NSAV+1,NSAV+NDECAY
63965             K(II,1)=1
63966             K(II,3)=IP
63967             K(II,4)=0
63968             K(II,5)=0
63969   200     CONTINUE
63970           N=NSAV+NDECAY
63971         ENDIF
63972  
63973 C...Boost back decay tau and decay products.
63974         DO 210 J=1,4
63975           P(ITAU,J)=PTAU(J)
63976   210   CONTINUE
63977         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
63978           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
63979           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
63980      &    DBETAU(2),DBETAU(3))
63981  
63982 C...Skip past ordinary tau decay treatment.
63983           MMAT=0
63984           MBST=0
63985           ND=0
63986           GOTO 630
63987         ENDIF
63988       ENDIF
63989  
63990 C...B-Bbar mixing: flip sign of meson appropriately.
63991       MMIX=0
63992       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
63993         XBBMIX=PARJ(76)
63994         IF(KFA.EQ.531) XBBMIX=PARJ(77)
63995         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
63996         IF(MMIX.EQ.1) KFS=-KFS
63997       ENDIF
63998  
63999 C...Check existence of decay channels. Particle/antiparticle rules.
64000       KCA=KC
64001       IF(MDCY(KC,2).GT.0) THEN
64002         MDMDCY=MDME(MDCY(KC,2),2)
64003         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
64004       ENDIF
64005       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
64006         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
64007         RETURN
64008       ENDIF
64009       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
64010       IF(KCHG(KC,3).EQ.0) THEN
64011         KFSP=1
64012         KFSN=0
64013         IF(PYR(0).GT.0.5D0) KFS=-KFS
64014       ELSEIF(KFS.GT.0) THEN
64015         KFSP=1
64016         KFSN=0
64017       ELSE
64018         KFSP=0
64019         KFSN=1
64020       ENDIF
64021  
64022 C...Sum branching ratios of allowed decay channels.
64023   220 NOPE=0
64024       BRSU=0D0
64025       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
64026         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
64027      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
64028         IF(MDME(IDL,2).GT.100) GOTO 230
64029         NOPE=NOPE+1
64030         BRSU=BRSU+BRAT(IDL)
64031   230 CONTINUE
64032       IF(NOPE.EQ.0) THEN
64033         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
64034         RETURN
64035       ENDIF
64036  
64037 C...Select decay channel among allowed ones.
64038   240 RBR=BRSU*PYR(0)
64039       IDL=MDCY(KCA,2)-1
64040   250 IDL=IDL+1
64041       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
64042      &KFSN*MDME(IDL,1).NE.3) THEN
64043         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
64044       ELSEIF(MDME(IDL,2).GT.100) THEN
64045         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
64046       ELSE
64047         IDC=IDL
64048         RBR=RBR-BRAT(IDL)
64049         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
64050       ENDIF
64051  
64052 C...Start readout of decay channel: matrix element, reset counters.
64053       MMAT=MDME(IDC,2)
64054   260 NTRY=NTRY+1
64055       IF(MOD(NTRY,200).EQ.0) THEN
64056         WRITE(CIDC,'(I4)') IDC
64057 C...Do not print warning for some well-known special cases.
64058         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
64059      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
64060      &  CIDC)
64061         GOTO 240
64062       ENDIF
64063       IF(NTRY.GT.1000) THEN
64064         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
64065         IF(MSTU(21).GE.1) RETURN
64066       ENDIF
64067       I=N
64068       NP=0
64069       NQ=0
64070       MBST=0
64071       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
64072       DO 270 J=1,4
64073         PV(1,J)=0D0
64074         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
64075   270 CONTINUE
64076       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
64077       PV(1,5)=P(IP,5)
64078       PS=0D0
64079       PSQ=0D0
64080       MREM=0
64081       MHADDY=0
64082       IF(KFA.GT.80) MHADDY=1
64083 C.. Random flavour and popcorn system memory.
64084       IRNDMO=0
64085       JTMO=0
64086       MSTU(121)=0
64087       MSTU(125)=10
64088  
64089 C...Read out decay products. Convert to standard flavour code.
64090       JTMAX=5
64091       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
64092       DO 280 JT=1,JTMAX
64093         IF(JT.LE.5) KP=KFDP(IDC,JT)
64094         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
64095         IF(KP.EQ.0) GOTO 280
64096         KPA=IABS(KP)
64097         KCP=PYCOMP(KPA)
64098         IF(KPA.GT.80) MHADDY=1
64099         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
64100           KFP=KP
64101         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
64102           KFP=KFS*KP
64103         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
64104           KFP=-KFS*MOD(KFA/10,10)
64105         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
64106           KFP=KFS*(100*MOD(KFA/10,100)+3)
64107         ELSEIF(KPA.EQ.81) THEN
64108           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
64109         ELSEIF(KP.EQ.82) THEN
64110           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
64111           IF(KFP.EQ.0) GOTO 260
64112           KFP=-KFP
64113           IRNDMO=1
64114           MSTJ(93)=1
64115           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
64116         ELSEIF(KP.EQ.-82) THEN
64117           KFP=MSTU(124)
64118         ENDIF
64119         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
64120  
64121 C...Add decay product to event record or to quark flavour list.
64122         KFPA=IABS(KFP)
64123         KQP=KCHG(KCP,2)
64124         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
64125           NQ=NQ+1
64126           KFLO(NQ)=KFP
64127 C...set rndmflav popcorn system pointer
64128           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
64129           MSTJ(93)=2
64130           PSQ=PSQ+PYMASS(KFLO(NQ))
64131         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
64132      &    MOD(NQ,2).EQ.1) THEN
64133           NQ=NQ-1
64134           PS=PS-P(I,5)
64135           K(I,1)=1
64136           KFI=K(I,2)
64137           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
64138           IF(K(I,2).EQ.0) GOTO 260
64139           MSTJ(93)=1
64140           P(I,5)=PYMASS(K(I,2))
64141           PS=PS+P(I,5)
64142         ELSE
64143           I=I+1
64144           NP=NP+1
64145           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
64146           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
64147           K(I,1)=1+MOD(NQ,2)
64148           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
64149           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
64150           K(I,2)=KFP
64151           K(I,3)=IP
64152           K(I,4)=0
64153           K(I,5)=0
64154           P(I,5)=PYMASS(KFP)
64155           PS=PS+P(I,5)
64156         ENDIF
64157   280 CONTINUE
64158  
64159 C...Check masses for resonance decays.
64160       IF(MHADDY.EQ.0) THEN
64161         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
64162       ENDIF
64163  
64164 C...Choose decay multiplicity in phase space model.
64165   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
64166         PSP=PS
64167         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
64168         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
64169   300   NTRY=NTRY+1
64170 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
64171         IF(IRNDMO.EQ.0) THEN
64172            MSTU(121)=0
64173            JTMO=0
64174         ELSEIF(IRNDMO.EQ.1) THEN
64175            IRNDMO=2
64176         ELSE
64177            GOTO 260
64178         ENDIF
64179         IF(NTRY.GT.1000) THEN
64180           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
64181           IF(MSTU(21).GE.1) RETURN
64182         ENDIF
64183         IF(MMAT.LE.20) THEN
64184           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
64185      &    SIN(PARU(2)*PYR(0))
64186           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
64187           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
64188           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
64189           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
64190           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
64191         ELSE
64192           ND=MMAT-20
64193         ENDIF
64194 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
64195         MSTU(125)=ND-NQ/2
64196         IF(MSTU(121).GT.MSTU(125)) GOTO 300
64197  
64198 C...Form hadrons from flavour content.
64199         DO 310 JT=1,NQ
64200           KFL1(JT)=KFLO(JT)
64201   310   CONTINUE
64202         IF(ND.EQ.NP+NQ/2) GOTO 330
64203         DO 320 I=N+NP+1,N+ND-NQ/2
64204 C.. Stick to started popcorn system, else pick side at random
64205           JT=JTMO
64206           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
64207           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
64208           IF(K(I,2).EQ.0) GOTO 300
64209           MSTU(125)=MSTU(125)-1
64210           JTMO=0
64211           IF(MSTU(121).GT.0) JTMO=JT
64212           KFL1(JT)=-KFL2
64213   320   CONTINUE
64214   330   JT=2
64215         JT2=3
64216         JT3=4
64217         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
64218         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
64219      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
64220         IF(JT.EQ.3) JT2=2
64221         IF(JT.EQ.4) JT3=2
64222         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
64223         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
64224         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
64225         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
64226  
64227 C...Check that sum of decay product masses not too large.
64228         PS=PSP
64229         DO 340 I=N+NP+1,N+ND
64230           K(I,1)=1
64231           K(I,3)=IP
64232           K(I,4)=0
64233           K(I,5)=0
64234           P(I,5)=PYMASS(K(I,2))
64235           PS=PS+P(I,5)
64236   340   CONTINUE
64237         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
64238  
64239 C...Rescale energy to subtract off spectator quark mass.
64240       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
64241      &  .AND.NP.GE.3) THEN
64242         PS=PS-P(N+NP,5)
64243         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
64244         DO 350 J=1,5
64245           P(N+NP,J)=PQT*PV(1,J)
64246           PV(1,J)=(1D0-PQT)*PV(1,J)
64247   350   CONTINUE
64248         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
64249         ND=NP-1
64250         MREM=1
64251  
64252 C...Fully specified final state: check mass broadening effects.
64253       ELSE
64254         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
64255         ND=NP
64256       ENDIF
64257  
64258 C...Determine position of grandmother, number of sisters.
64259       NM=0
64260       KFAS=0
64261       MSGN=0
64262       IF(MMAT.EQ.3) THEN
64263         IM=K(IP,3)
64264         IF(IM.LT.0.OR.IM.GE.IP) IM=0
64265         IF(IM.NE.0) KFAM=IABS(K(IM,2))
64266         IF(IM.NE.0) THEN
64267           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
64268             IF(K(IL,3).EQ.IM) NM=NM+1
64269             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
64270   360     CONTINUE
64271           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
64272      &    MOD(KFAM/1000,10).NE.0) NM=0
64273           IF(NM.EQ.2) THEN
64274             KFAS=IABS(K(ISIS,2))
64275             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
64276      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
64277           ENDIF
64278         ENDIF
64279       ENDIF
64280  
64281 C...Kinematics of one-particle decays.
64282       IF(ND.EQ.1) THEN
64283         DO 370 J=1,4
64284           P(N+1,J)=P(IP,J)
64285   370   CONTINUE
64286         GOTO 630
64287       ENDIF
64288  
64289 C...Calculate maximum weight ND-particle decay.
64290       PV(ND,5)=P(N+ND,5)
64291       IF(ND.GE.3) THEN
64292         WTMAX=1D0/WTCOR(ND-2)
64293         PMAX=PV(1,5)-PS+P(N+ND,5)
64294         PMIN=0D0
64295         DO 380 IL=ND-1,1,-1
64296           PMAX=PMAX+P(N+IL,5)
64297           PMIN=PMIN+P(N+IL+1,5)
64298           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
64299   380   CONTINUE
64300       ENDIF
64301  
64302 C...Find virtual gamma mass in Dalitz decay.
64303   390 IF(ND.EQ.2) THEN
64304       ELSEIF(MMAT.EQ.2) THEN
64305         PMES=4D0*PMAS(11,1)**2
64306         PMRHO2=PMAS(131,1)**2
64307         PGRHO2=PMAS(131,2)**2
64308   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
64309         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
64310      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
64311      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
64312         IF(WT.LT.PYR(0)) GOTO 400
64313         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
64314  
64315 C...M-generator gives weight. If rejected, try again.
64316       ELSE
64317   410   RORD(1)=1D0
64318         DO 440 IL1=2,ND-1
64319           RSAV=PYR(0)
64320           DO 420 IL2=IL1-1,1,-1
64321             IF(RSAV.LE.RORD(IL2)) GOTO 430
64322             RORD(IL2+1)=RORD(IL2)
64323   420     CONTINUE
64324   430     RORD(IL2+1)=RSAV
64325   440   CONTINUE
64326         RORD(ND)=0D0
64327         WT=1D0
64328         DO 450 IL=ND-1,1,-1
64329           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
64330      &    (PV(1,5)-PS)
64331           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
64332   450   CONTINUE
64333         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
64334       ENDIF
64335  
64336 C...Perform two-particle decays in respective CM frame.
64337   460 DO 480 IL=1,ND-1
64338         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
64339         UE(3)=2D0*PYR(0)-1D0
64340         PHI=PARU(2)*PYR(0)
64341         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
64342         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
64343         DO 470 J=1,3
64344           P(N+IL,J)=PA*UE(J)
64345           PV(IL+1,J)=-PA*UE(J)
64346   470   CONTINUE
64347         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
64348         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
64349   480 CONTINUE
64350  
64351 C...Lorentz transform decay products to lab frame.
64352       DO 490 J=1,4
64353         P(N+ND,J)=PV(ND,J)
64354   490 CONTINUE
64355       DO 530 IL=ND-1,1,-1
64356         DO 500 J=1,3
64357           BE(J)=PV(IL,J)/PV(IL,4)
64358   500   CONTINUE
64359         GA=PV(IL,4)/PV(IL,5)
64360         DO 520 I=N+IL,N+ND
64361           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
64362           DO 510 J=1,3
64363             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
64364   510     CONTINUE
64365           P(I,4)=GA*(P(I,4)+BEP)
64366   520   CONTINUE
64367   530 CONTINUE
64368  
64369 C...Check that no infinite loop in matrix element weight.
64370       NTRY=NTRY+1
64371       IF(NTRY.GT.800) GOTO 560
64372  
64373 C...Matrix elements for omega and phi decays.
64374       IF(MMAT.EQ.1) THEN
64375         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
64376      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
64377      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
64378         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
64379  
64380 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
64381       ELSEIF(MMAT.EQ.2) THEN
64382         FOUR12=FOUR(N+1,N+2)
64383         FOUR13=FOUR(N+1,N+3)
64384         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
64385      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
64386         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
64387  
64388 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
64389 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
64390 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
64391       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
64392         FOUR10=FOUR(IP,IM)
64393         FOUR12=FOUR(IP,N+1)
64394         FOUR02=FOUR(IM,N+1)
64395         PMS1=P(IP,5)**2
64396         PMS0=P(IM,5)**2
64397         PMS2=P(N+1,5)**2
64398         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
64399         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
64400      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
64401         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
64402         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
64403         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
64404  
64405 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
64406       ELSEIF(MMAT.EQ.4) THEN
64407         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
64408         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
64409         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
64410         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
64411      &  ((1D0-HX3)/(HX1*HX2))**2
64412         IF(WT.LT.2D0*PYR(0)) GOTO 390
64413         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
64414      &  GOTO 390
64415  
64416 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
64417       ELSEIF(MMAT.EQ.41) THEN
64418         IF(MBST.EQ.0) HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
64419         IF(MBST.EQ.1) HX1=2D0*P(N+1,4)/P(IP,5)
64420         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
64421         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
64422  
64423 C...Matrix elements for weak decays (only semileptonic for c and b)
64424       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
64425      &  .AND.ND.EQ.3) THEN
64426         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
64427         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
64428         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
64429       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
64430         DO 550 J=1,4
64431           P(N+NP+1,J)=0D0
64432           DO 540 IS=N+3,N+NP
64433             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
64434   540     CONTINUE
64435   550   CONTINUE
64436         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
64437         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
64438         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
64439       ENDIF
64440  
64441 C...Scale back energy and reattach spectator.
64442   560 IF(MREM.EQ.1) THEN
64443         DO 570 J=1,5
64444           PV(1,J)=PV(1,J)/(1D0-PQT)
64445   570   CONTINUE
64446         ND=ND+1
64447         MREM=0
64448       ENDIF
64449  
64450 C...Low invariant mass for system with spectator quark gives particle,
64451 C...not two jets. Readjust momenta accordingly.
64452       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
64453         MSTJ(93)=1
64454         PM2=PYMASS(K(N+2,2))
64455         MSTJ(93)=1
64456         PM3=PYMASS(K(N+3,2))
64457         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
64458      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
64459         K(N+2,1)=1
64460         KFTEMP=K(N+2,2)
64461         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
64462         IF(K(N+2,2).EQ.0) GOTO 260
64463         P(N+2,5)=PYMASS(K(N+2,2))
64464         PS=P(N+1,5)+P(N+2,5)
64465         PV(2,5)=P(N+2,5)
64466         MMAT=0
64467         ND=2
64468         GOTO 460
64469       ELSEIF(MMAT.EQ.44) THEN
64470         MSTJ(93)=1
64471         PM3=PYMASS(K(N+3,2))
64472         MSTJ(93)=1
64473         PM4=PYMASS(K(N+4,2))
64474         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
64475      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
64476         K(N+3,1)=1
64477         KFTEMP=K(N+3,2)
64478         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
64479         IF(K(N+3,2).EQ.0) GOTO 260
64480         P(N+3,5)=PYMASS(K(N+3,2))
64481         DO 580 J=1,3
64482           P(N+3,J)=P(N+3,J)+P(N+4,J)
64483   580   CONTINUE
64484         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)
64485         HA=P(N+1,4)**2-P(N+2,4)**2
64486         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
64487         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
64488      &  (P(N+1,3)-P(N+2,3))**2
64489         HD=(PV(1,4)-P(N+3,4))**2
64490         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
64491         HF=HD*HC-HB**2
64492         HG=HD*HC-HA*HB
64493         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
64494         DO 590 J=1,3
64495           PCOR=HH*(P(N+1,J)-P(N+2,J))
64496           P(N+1,J)=P(N+1,J)+PCOR
64497           P(N+2,J)=P(N+2,J)-PCOR
64498   590   CONTINUE
64499         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)
64500         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)
64501         ND=ND-1
64502       ENDIF
64503  
64504 C...Check invariant mass of W jets. May give one particle or start over.
64505   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
64506      &.AND.IABS(K(N+1,2)).LT.10) THEN
64507         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
64508         MSTJ(93)=1
64509         PM1=PYMASS(K(N+1,2))
64510         MSTJ(93)=1
64511         PM2=PYMASS(K(N+2,2))
64512         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
64513         KFLDUM=INT(1.5D0+PYR(0))
64514         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
64515         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
64516         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
64517         PSM=PYMASS(KF1)+PYMASS(KF2)
64518         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
64519         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
64520         IF(MMAT.EQ.48) GOTO 390
64521         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
64522         K(N+1,1)=1
64523         KFTEMP=K(N+1,2)
64524         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
64525         IF(K(N+1,2).EQ.0) GOTO 260
64526         P(N+1,5)=PYMASS(K(N+1,2))
64527         K(N+2,2)=K(N+3,2)
64528         P(N+2,5)=P(N+3,5)
64529         PS=P(N+1,5)+P(N+2,5)
64530         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
64531         PV(2,5)=P(N+3,5)
64532         MMAT=0
64533         ND=2
64534         GOTO 460
64535       ENDIF
64536  
64537 C...Phase space decay of partons from W decay.
64538   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
64539         KFLO(1)=K(N+1,2)
64540         KFLO(2)=K(N+2,2)
64541         K(N+1,1)=K(N+3,1)
64542         K(N+1,2)=K(N+3,2)
64543         DO 620 J=1,5
64544           PV(1,J)=P(N+1,J)+P(N+2,J)
64545           P(N+1,J)=P(N+3,J)
64546   620   CONTINUE
64547         PV(1,5)=PMR
64548         N=N+1
64549         NP=0
64550         NQ=2
64551         PS=0D0
64552         MSTJ(93)=2
64553         PSQ=PYMASS(KFLO(1))
64554         MSTJ(93)=2
64555         PSQ=PSQ+PYMASS(KFLO(2))
64556         MMAT=11
64557         GOTO 290
64558       ENDIF
64559  
64560 C...Boost back for rapidly moving particle.
64561   630 N=N+ND
64562       IF(MBST.EQ.1) THEN
64563         DO 640 J=1,3
64564           BE(J)=P(IP,J)/P(IP,4)
64565   640   CONTINUE
64566         GA=P(IP,4)/P(IP,5)
64567         DO 660 I=NSAV+1,N
64568           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
64569           DO 650 J=1,3
64570             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
64571   650     CONTINUE
64572           P(I,4)=GA*(P(I,4)+BEP)
64573   660   CONTINUE
64574       ENDIF
64575  
64576 C...Fill in position of decay vertex.
64577       DO 680 I=NSAV+1,N
64578         DO 670 J=1,4
64579           V(I,J)=VDCY(J)
64580   670   CONTINUE
64581         V(I,5)=0D0
64582   680 CONTINUE
64583  
64584 C...Set up for parton shower evolution from jets.
64585       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
64586         K(NSAV+1,1)=3
64587         K(NSAV+2,1)=3
64588         K(NSAV+3,1)=3
64589         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
64590         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
64591         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
64592         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
64593         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
64594         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
64595         MSTJ(92)=-(NSAV+1)
64596       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
64597         K(NSAV+2,1)=3
64598         K(NSAV+3,1)=3
64599         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
64600         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
64601         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
64602         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
64603         MSTJ(92)=NSAV+2
64604       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
64605      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
64606         K(NSAV+1,1)=3
64607         K(NSAV+2,1)=3
64608         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
64609         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
64610         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
64611         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
64612         MSTJ(92)=NSAV+1
64613       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
64614      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
64615         MSTJ(92)=NSAV+1
64616       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
64617      &  THEN
64618         K(NSAV+1,1)=3
64619         K(NSAV+2,1)=3
64620         K(NSAV+3,1)=3
64621         KCP=PYCOMP(K(NSAV+1,2))
64622         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
64623         JCON=4
64624         IF(KQP.LT.0) JCON=5
64625         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
64626         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
64627         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
64628         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
64629         MSTJ(92)=NSAV+1
64630       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
64631         K(NSAV+1,1)=3
64632         K(NSAV+3,1)=3
64633         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
64634         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
64635         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
64636         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
64637         MSTJ(92)=NSAV+1
64638       ENDIF
64639  
64640 C...Mark decayed particle; special option for B-Bbar mixing.
64641       IF(K(IP,1).EQ.5) K(IP,1)=15
64642       IF(K(IP,1).LE.10) K(IP,1)=11
64643       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
64644       K(IP,4)=NSAV+1
64645       K(IP,5)=N
64646  
64647       RETURN
64648       END
64649  
64650  
64651 C*********************************************************************
64652  
64653 C...PYDCYK
64654 C...Handles flavour production in the decay of unstable particles
64655 C...and small string clusters.
64656  
64657       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
64658  
64659 C...Double precision and integer declarations.
64660       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64661       IMPLICIT INTEGER(I-N)
64662       INTEGER PYK,PYCHGE,PYCOMP
64663 C...Commonblocks.
64664       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64665       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64666       SAVE /PYDAT1/,/PYDAT2/
64667  
64668  
64669 C.. Call PYKFDI directly if no popcorn option is on
64670       IF(MSTJ(12).LT.2) THEN
64671          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
64672          MSTU(124)=KFL3
64673          RETURN
64674       ENDIF
64675  
64676       KFL3=0
64677       KF=0
64678       IF(KFL1.EQ.0) RETURN
64679       KF1A=IABS(KFL1)
64680       KF2A=IABS(KFL2)
64681  
64682       NSTO=130
64683       NMAX=MIN(MSTU(125),10)
64684  
64685 C.. Identify rank 0 cluster qq
64686       IRANK=1
64687       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
64688  
64689       IF(KF2A.GT.0)THEN
64690 C.. Join jets: Fails if store not empty
64691          IF(MSTU(121).GT.0) THEN
64692             MSTU(121)=0
64693             RETURN
64694          ENDIF
64695          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
64696       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
64697 C.. Pick popcorn meson from store, return same qq, decrease store
64698          KF=MSTU(NSTO+MSTU(121))
64699          KFL3=-KFL1
64700          MSTU(121)=MSTU(121)-1
64701       ELSE
64702 C.. Generate new flavour. Then done if no diquark is generated
64703   100    CALL PYKFDI(KFL1,0,KFL3,KF)
64704          IF(MSTU(121).EQ.-1) GOTO 100
64705          MSTU(124)=KFL3
64706          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
64707  
64708 C.. Simple case if no dynamical popcorn suppressions are considered
64709          IF(MSTJ(12).LT.4) THEN
64710             IF(MSTU(121).EQ.0) RETURN
64711             NMES=1
64712             KFPREV=-KFL3
64713             CALL PYKFDI(KFPREV,0,KFL3,KFM)
64714 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
64715             IF(IABS(KFL3).LE.10)THEN
64716                KFL3=-KFPREV
64717                RETURN
64718             ENDIF
64719             GOTO 120
64720          ENDIF
64721  
64722 C test output qq against fake Gamma, then return if no popcorn.
64723          GB=2D0
64724          IF(IRANK.NE.0)THEN
64725             CALL PYZDIS(1,2103,5D0,Z)
64726             GB=5D0*(1D0-Z)/Z
64727             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
64728                MSTU(121)=0
64729                GOTO 100
64730             ENDIF
64731          ENDIF
64732          IF(MSTU(121).EQ.0) RETURN
64733  
64734 C..Set store size memory. Pick fake dynamical variables of qq.
64735          NMES=MSTU(121)
64736          CALL PYPTDI(1,PX3,PY3)
64737          X=1D0
64738          POPM=0D0
64739          G=GB
64740          POPG=GB
64741  
64742 C.. Pick next popcorn meson, test with fake dynamical variables
64743   110    KFPREV=-KFL3
64744          PX1=-PX3
64745          PY1=-PY3
64746          CALL PYKFDI(KFPREV,0,KFL3,KFM)
64747          IF(MSTU(121).EQ.-1) GOTO 100
64748          CALL PYPTDI(KFL3,PX3,PY3)
64749          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
64750          CALL PYZDIS(KFPREV,KFL3,PM,Z)
64751          G=(1D0-Z)*(G+PM/Z)
64752          X=(1D0-Z)*X
64753  
64754          PTST=1D0
64755          GTST=1D0
64756          RTST=PYR(0)
64757          IF(MSTJ(12).GT.4)THEN
64758             POPMN=SQRT((1D0-X)*(G/X-GB))
64759             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
64760             PTST=EXP((POPM-POPMN)*PARF(193))
64761             POPM=POPMN
64762          ENDIF
64763          IF(IRANK.NE.0)THEN
64764             POPGN=X*GB
64765             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
64766             POPG=POPGN
64767          ENDIF
64768          IF(RTST.GT.PTST*GTST)THEN
64769             MSTU(121)=0
64770             IF(RTST.GT.PTST) MSTU(121)=-1
64771             GOTO 100
64772          ENDIF
64773  
64774 C.. Store meson
64775   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
64776          IF(MSTU(121).GT.0) GOTO 110
64777  
64778 C.. Test accepted system size. If OK set global popcorn size variable.
64779          IF(NMES.GT.NMAX)THEN
64780             KF=0
64781             KFL3=0
64782             RETURN
64783          ENDIF
64784          MSTU(121)=NMES
64785       ENDIF
64786  
64787       RETURN
64788       END
64789  
64790 C********************************************************************
64791  
64792 C...PYKFDI
64793 C...Generates a new flavour pair and combines off a hadron
64794  
64795       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
64796  
64797 C...Double precision and integer declarations.
64798       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64799       IMPLICIT INTEGER(I-N)
64800       INTEGER PYK,PYCHGE,PYCOMP
64801 C...Commonblocks.
64802       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64803       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64804       SAVE /PYDAT1/,/PYDAT2/
64805 C...Local arrays.
64806       DIMENSION PD(7)
64807  
64808       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
64809  
64810 C...Default flavour values. Input consistency checks.
64811       KF1A=IABS(KFL1)
64812       KF2A=IABS(KFL2)
64813       KFL3=0
64814       KF=0
64815       IF(KF1A.EQ.0) RETURN
64816       IF(KF2A.NE.0)THEN
64817         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
64818         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
64819         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
64820       ENDIF
64821  
64822 C...Check if tabulated flavour probabilities are to be used.
64823       IF(MSTJ(15).EQ.1) THEN
64824         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
64825      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
64826      &        ' together with MSTJ(12)>=5 modification')
64827         KTAB1=-1
64828         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
64829         KFL1A=MOD(KF1A/1000,10)
64830         KFL1B=MOD(KF1A/100,10)
64831         KFL1S=MOD(KF1A,10)
64832         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
64833      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
64834         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
64835         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
64836         KTAB2=0
64837         IF(KF2A.NE.0) THEN
64838           KTAB2=-1
64839           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
64840           KFL2A=MOD(KF2A/1000,10)
64841           KFL2B=MOD(KF2A/100,10)
64842           KFL2S=MOD(KF2A,10)
64843           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
64844      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
64845           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
64846         ENDIF
64847         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
64848       ENDIF
64849  
64850 C.. Recognize rank 0 diquark case
64851   100 IRANK=1
64852       KFDIQ=MAX(KF1A,KF2A)
64853       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
64854  
64855 C.. Join two flavours to meson or baryon. Test for popcorn.
64856       IF(KF2A.GT.0)THEN
64857         MBARY=0
64858         IF(KFDIQ.GT.10) THEN
64859           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
64860      &         CALL PYNMES(KFDIQ)
64861           IF(MSTU(121).NE.0) THEN
64862              MSTU(121)=0
64863              RETURN
64864           ENDIF
64865           MBARY=2
64866         ENDIF
64867         KFQOLD=KF1A
64868         KFQVER=KF2A
64869         GOTO 130
64870       ENDIF
64871  
64872 C.. Separate incoming flavours, curtain flavour consistency check
64873       KFIN=KFL1
64874       KFQOLD=KF1A
64875       KFQPOP=KF1A/10000
64876       IF(KF1A.GT.10)THEN
64877          KFIN=-KFL1
64878          KFL1A=MOD(KF1A/1000,10)
64879          KFL1B=MOD(KF1A/100,10)
64880          IF(IRANK.EQ.0)THEN
64881             QAWT=1D0
64882             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
64883             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
64884             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
64885          ENDIF
64886          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
64887              MSTU(121)=0
64888              RETURN
64889           ENDIF
64890          KFQOLD=KFL1A+KFL1B-KFQPOP
64891       ENDIF
64892  
64893 C...Meson/baryon choice. Set number of mesons if starting a popcorn
64894 C...system.
64895   110 MBARY=0
64896       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
64897          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
64898             MBARY=1
64899             CALL PYNMES(0)
64900          ENDIF
64901       ELSEIF(KF1A.GT.10)THEN
64902          MBARY=2
64903          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
64904          IF(MSTU(121).GT.0) MBARY=-1
64905       ENDIF
64906  
64907 C..x->H+q: Choose single vertex quark. Jump to form hadron.
64908       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
64909          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
64910          KFL3=ISIGN(KFQVER,-KFIN)
64911          GOTO 130
64912       ENDIF
64913  
64914 C..x->H+qq: (IDW=proper PARF position for diquark weights)
64915       IDW=160
64916       IF(MBARY.EQ.1)THEN
64917          IF(MSTU(121).EQ.0) IDW=150
64918          SQWT=PARF(IDW+1)
64919          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
64920          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
64921 C..   Shift to s-curtain parameters if needed
64922          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
64923             PARF(194)=PARF(138)*PARF(139)
64924             PARF(193)=PARJ(8)+PARJ(9)
64925          ENDIF
64926       ENDIF
64927  
64928 C.. x->H+qq: Get vertex quark
64929       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
64930          IDW=MSTU(122)
64931          MSTU(121)=MSTU(121)-1
64932          IF(IDW.EQ.170) THEN
64933             IF(MSTU(121).EQ.0)THEN
64934                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
64935             ELSE
64936                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
64937             ENDIF
64938          ELSE
64939             IF(MSTU(121).EQ.0)THEN
64940                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
64941             ELSE
64942                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
64943             ENDIF
64944          ENDIF
64945          IPOS=200+30*IPOS+1
64946  
64947          IMES=-1
64948          RMES=PYR(0)*PARF(194)
64949   120    IMES=IMES+1
64950          RMES=RMES-PARF(IPOS+IMES)
64951          IF(IMES.EQ.30) THEN
64952             MSTU(121)=-1
64953             KF=-111
64954             RETURN
64955          ENDIF
64956          IF(RMES.GT.0D0) GOTO 120
64957          KMUL=IMES/5
64958          KFJ=2*KMUL+1
64959          IF(KMUL.EQ.2) KFJ=10003
64960          IF(KMUL.EQ.3) KFJ=10001
64961          IF(KMUL.EQ.4) KFJ=20003
64962          IF(KMUL.EQ.5) KFJ=5
64963          IDIAG=0
64964          KFQVER=MOD(IMES,5)+1
64965          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
64966          IF(KFQVER.GT.3)THEN
64967             IDIAG=KFQVER-3
64968             KFQVER=KFQOLD
64969          ENDIF
64970       ELSE
64971          IF(MBARY.EQ.-1) IDW=170
64972          SQWT=PARF(IDW+2)
64973          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
64974          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
64975          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
64976          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
64977             KFQVER=KFQPOP
64978             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
64979          ENDIF
64980       ENDIF
64981  
64982 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
64983       KFLDS=3
64984       IF(KFQPOP.NE.KFQVER)THEN
64985          SWT=PARF(IDW+7)
64986          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
64987          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
64988          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
64989       ENDIF
64990       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
64991      &      +10000*KFQPOP
64992       KFL3=ISIGN(KFDIQ,KFIN)
64993  
64994 C..x->M+y: flavour for meson.
64995   130 IF(MBARY.LE.0)THEN
64996         KFLA=MAX(KFQOLD,KFQVER)
64997         KFLB=MIN(KFQOLD,KFQVER)
64998         KFS=ISIGN(1,KFL1)
64999         IF(KFLA.NE.KFQOLD) KFS=-KFS
65000 C... Form meson, with spin and flavour mixing for diagonal states.
65001         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
65002            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
65003            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
65004            RETURN
65005         ENDIF
65006         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
65007         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
65008         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
65009         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
65010           IF(PYR(0).LT.PARJ(14)) KMUL=2
65011         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
65012           RMUL=PYR(0)
65013           IF(RMUL.LT.PARJ(15)) KMUL=3
65014           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
65015           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
65016         ENDIF
65017         KFLS=3
65018         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
65019         IF(KMUL.EQ.5) KFLS=5
65020         IF(KFLA.NE.KFLB)THEN
65021           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
65022         ELSE
65023           RMIX=PYR(0)
65024           IMIX=2*KFLA+10*KMUL
65025           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
65026      &    INT(RMIX+PARF(IMIX)))+KFLS
65027           IF(KFLA.GE.4) KF=110*KFLA+KFLS
65028         ENDIF
65029         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
65030         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
65031  
65032 C..Optional extra suppression of eta and eta'.
65033 C..Allow shift to qq->B+q in old version (set IRANK to 0)
65034         IF(KF.EQ.221.OR.KF.EQ.331)THEN
65035            IF(PYR(0).GT.PARJ(25+KF/300))THEN
65036               IF(KF2A.GT.0) GOTO 130
65037               IF(MSTJ(12).LT.4) IRANK=0
65038               GOTO 110
65039            ENDIF
65040         ENDIF
65041         MSTU(121)=0
65042  
65043 C.. x->B+y: Flavour for baryon
65044       ELSE
65045         KFLA=KFQVER
65046         IF(KF1A.LE.10) KFLA=KFQOLD
65047         KFLB=MOD(KFDIQ/1000,10)
65048         KFLC=MOD(KFDIQ/100,10)
65049         KFLDS=MOD(KFDIQ,10)
65050         KFLD=MAX(KFLA,KFLB,KFLC)
65051         KFLF=MIN(KFLA,KFLB,KFLC)
65052         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
65053  
65054 C...  SU(6) factors for formation of baryon.
65055         KBARY=3
65056         KDMAX=5
65057         KFLG=KFLB
65058         IF(KFLB.NE.KFLC)THEN
65059            KBARY=2*KFLDS-1
65060            KDMAX=1+KFLDS/2
65061            IF(KFLB.GT.2) KDMAX=KDMAX+2
65062         ENDIF
65063         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
65064            KBARY=KBARY+1
65065            KFLG=KFLA
65066         ENDIF
65067  
65068         SU6MAX=PARF(140+KDMAX)
65069         SU6DEC=PARJ(18)
65070         SU6S  =PARF(146)
65071         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
65072            SU6MAX=1D0
65073            SU6DEC=1D0
65074            SU6S  =1D0
65075         ENDIF
65076         SU6OCT=PARF(60+KBARY)
65077         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
65078            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
65079            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
65080         ELSE
65081            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
65082         ENDIF
65083         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
65084  
65085 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
65086         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
65087            MSTU(121)=0
65088            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
65089            GOTO 110
65090         ENDIF
65091  
65092 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
65093         KSIG=1
65094         KFLS=2
65095         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
65096         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
65097           KSIG=KFLDS/3
65098           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
65099         ENDIF
65100         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
65101         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
65102       ENDIF
65103       RETURN
65104  
65105 C...Use tabulated probabilities to select new flavour and hadron.
65106   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
65107         KT3L=1
65108         KT3U=6
65109       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
65110         KT3L=1
65111         KT3U=6
65112       ELSEIF(KTAB2.EQ.0) THEN
65113         KT3L=1
65114         KT3U=22
65115       ELSE
65116         KT3L=KTAB2
65117         KT3U=KTAB2
65118       ENDIF
65119       RFL=0D0
65120       DO 160 KTS=0,2
65121         DO 150 KT3=KT3L,KT3U
65122           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
65123   150   CONTINUE
65124   160 CONTINUE
65125       RFL=PYR(0)*RFL
65126       DO 180 KTS=0,2
65127         KTABS=KTS
65128         DO 170 KT3=KT3L,KT3U
65129           KTAB3=KT3
65130           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
65131           IF(RFL.LE.0D0) GOTO 190
65132   170   CONTINUE
65133   180 CONTINUE
65134   190 CONTINUE
65135  
65136 C...Reconstruct flavour of produced quark/diquark.
65137       IF(KTAB3.LE.6) THEN
65138         KFL3A=KTAB3
65139         KFL3B=0
65140         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
65141       ELSE
65142         KFL3A=1
65143         IF(KTAB3.GE.8) KFL3A=2
65144         IF(KTAB3.GE.11) KFL3A=3
65145         IF(KTAB3.GE.16) KFL3A=4
65146         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
65147         KFL3=1000*KFL3A+100*KFL3B+1
65148         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
65149      &  KFL3+2
65150         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
65151       ENDIF
65152  
65153 C...Reconstruct meson code.
65154       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
65155      &KFL3B.NE.0)) THEN
65156         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
65157      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
65158         KF=110+2*KTABS+1
65159         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
65160         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
65161      &  25*KTABS)) KF=330+2*KTABS+1
65162       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
65163         KFLA=MAX(KTAB1,KTAB3)
65164         KFLB=MIN(KTAB1,KTAB3)
65165         KFS=ISIGN(1,KFL1)
65166         IF(KFLA.NE.KF1A) KFS=-KFS
65167         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
65168       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
65169         KFS=ISIGN(1,KFL1)
65170         IF(KFL1A.EQ.KFL3A) THEN
65171           KFLA=MAX(KFL1B,KFL3B)
65172           KFLB=MIN(KFL1B,KFL3B)
65173           IF(KFLA.NE.KFL1B) KFS=-KFS
65174         ELSEIF(KFL1A.EQ.KFL3B) THEN
65175           KFLA=KFL3A
65176           KFLB=KFL1B
65177           KFS=-KFS
65178         ELSEIF(KFL1B.EQ.KFL3A) THEN
65179           KFLA=KFL1A
65180           KFLB=KFL3B
65181         ELSEIF(KFL1B.EQ.KFL3B) THEN
65182           KFLA=MAX(KFL1A,KFL3A)
65183           KFLB=MIN(KFL1A,KFL3A)
65184           IF(KFLA.NE.KFL1A) KFS=-KFS
65185         ELSE
65186           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
65187           GOTO 100
65188         ENDIF
65189         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
65190  
65191 C...Reconstruct baryon code.
65192       ELSE
65193         IF(KTAB1.GE.7) THEN
65194           KFLA=KFL3A
65195           KFLB=KFL1A
65196           KFLC=KFL1B
65197         ELSE
65198           KFLA=KFL1A
65199           KFLB=KFL3A
65200           KFLC=KFL3B
65201         ENDIF
65202         KFLD=MAX(KFLA,KFLB,KFLC)
65203         KFLF=MIN(KFLA,KFLB,KFLC)
65204         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
65205         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
65206         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
65207       ENDIF
65208  
65209 C...Check that constructed flavour code is an allowed one.
65210       IF(KFL2.NE.0) KFL3=0
65211       KC=PYCOMP(KF)
65212       IF(KC.EQ.0) THEN
65213         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
65214      &  'failed')
65215         GOTO 100
65216       ENDIF
65217  
65218       RETURN
65219       END
65220  
65221 C*********************************************************************
65222  
65223 C...PYNMES
65224 C...Generates number of popcorn mesons and stores some relevant
65225 C...parameters.
65226  
65227       SUBROUTINE PYNMES(KFDIQ)
65228  
65229 C...Double precision and integer declarations.
65230       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65231       IMPLICIT INTEGER(I-N)
65232       INTEGER PYK,PYCHGE,PYCOMP
65233 C...Commonblocks.
65234       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65235       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65236       SAVE /PYDAT1/,/PYDAT2/
65237  
65238       MSTU(121)=0
65239       IF(MSTJ(12).LT.2) RETURN
65240  
65241 C..Old version: Get 1 or 0 popcorn mesons
65242       IF(MSTJ(12).LT.5)THEN
65243          POPWT=PARF(131)
65244          IF(KFDIQ.NE.0) THEN
65245             KFDIQA=IABS(KFDIQ)
65246             KFA=MOD(KFDIQA/1000,10)
65247             KFB=MOD(KFDIQA/100,10)
65248             KFS=MOD(KFDIQA,10)
65249             POPWT=PARF(132)
65250             IF(KFA.EQ.3) POPWT=PARF(133)
65251             IF(KFB.EQ.3) POPWT=PARF(134)
65252             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
65253          ENDIF
65254          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
65255          RETURN
65256       ENDIF
65257  
65258 C..New version: Store popcorn- or rank 0 diquark parameters
65259       MSTU(122)=170
65260       PARF(193)=PARJ(8)
65261       PARF(194)=PARF(139)
65262       IF(KFDIQ.NE.0) THEN
65263          MSTU(122)=180
65264          PARF(193)=PARJ(10)
65265          PARF(194)=PARF(140)
65266       ENDIF
65267       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
65268          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
65269      &        '(PYNMES:) Neglecting too large popcorn possibility')
65270          RETURN
65271       ENDIF
65272  
65273 C..New version: Get number of popcorn mesons
65274   100 RTST=PYR(0)
65275       MSTU(121)=-1
65276   110 MSTU(121)=MSTU(121)+1
65277       RTST=RTST/PARF(194)
65278       IF(RTST.LT.1D0) GOTO 110
65279       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
65280      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
65281       RETURN
65282       END
65283  
65284 C***************************************************************
65285  
65286 C...PYKFIN
65287 C...Precalculates a set of diquark and popcorn weights.
65288  
65289       SUBROUTINE PYKFIN
65290  
65291 C...Double precision and integer declarations.
65292       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65293       IMPLICIT INTEGER(I-N)
65294       INTEGER PYK,PYCHGE,PYCOMP
65295 C...Commonblocks.
65296       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65297       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65298       SAVE /PYDAT1/,/PYDAT2/
65299  
65300       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
65301  
65302  
65303       MSTU(123)=1
65304 C..Diquark indices for dimensional variables
65305       IUD1=1
65306       IUU1=2
65307       IUS0=3
65308       ISU0=4
65309       IUS1=5
65310       ISU1=6
65311       ISS1=7
65312  
65313 C.. *** SU(6) factors **
65314 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
65315       PARF(146)=1D0
65316       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
65317       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
65318      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
65319       DO 100 I=1,6
65320          SU6(I)=PARF(60+I)
65321          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
65322   100 CONTINUE
65323       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
65324       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
65325       DO 110 I=1,6
65326          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
65327          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
65328   110 CONTINUE
65329  
65330 C..SU(6)max            q       q'     s,c,b
65331       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
65332       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
65333       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
65334       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
65335       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
65336       SU6M(IUS0)=SU6M(ISU0)
65337       SU6M(ISS1)=SU6M(IUU1)
65338       SU6M(IUS1)=SU6M(ISU1)
65339  
65340 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
65341       PARF(141)=SU6MUD
65342       PARF(142)=SU6M(IUD1)
65343       PARF(143)=SU6M(ISU0)
65344       PARF(144)=SU6M(ISU1)
65345       PARF(145)=SU6M(ISS1)
65346  
65347 C..diquark SU(6) survival =
65348 C..sum over quark (quark tunnel weight)*(SU(6)).
65349       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
65350       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
65351       DMB(IUS0)=DMB(ISU0)
65352       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
65353       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
65354       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
65355       DMB(IUS1)=DMB(ISU1)
65356       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
65357  
65358 C.. *** Tunneling factors for Diquark production***
65359 C.. T: half a curtain pair = sqrt(curtain pair factor)
65360       IF(MSTJ(12).GE.5) THEN
65361          PMUD0=PYMASS(2101)
65362          PMUD1=PYMASS(2103)-PMUD0
65363          PMUS0=PYMASS(3201)-PMUD0
65364          PMUS1=PYMASS(3203)-PMUS0-PMUD0
65365          PMSS1=PYMASS(3303)-PMUS0-PMUD0
65366          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
65367          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
65368          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
65369          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
65370          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
65371          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
65372          QBB(IUD1)=QBB(IUU1)
65373       ELSE
65374          PAR2M=SQRT(PARJ(2))
65375          PAR3M=SQRT(PARJ(3))
65376          PAR4M=SQRT(PARJ(4))
65377          QBB(ISU0)=PAR2M*PAR3M
65378          QBB(IUS0)=PAR3M
65379          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
65380          QBB(IUU1)=PAR4M
65381          QBB(ISU1)=PAR4M*QBB(ISU0)
65382          QBB(IUS1)=PAR4M*QBB(IUS0)
65383          QBB(IUD1)=PAR4M
65384       ENDIF
65385  
65386 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
65387       QBM(ISU0)=QBB(ISU0)
65388       QBM(IUS0)=PARJ(2)*QBB(IUS0)
65389       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
65390       QBM(IUU1)=6D0*QBB(IUU1)
65391       QBM(ISU1)=3D0*QBB(ISU1)
65392       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
65393       QBM(IUD1)=3D0*QBB(IUD1)
65394  
65395 C.. Combine T and tau to diquark weight for q-> B+B+..
65396       DO 120 I=1,7
65397          QBB(I)=QBB(I)*QBM(I)
65398   120 CONTINUE
65399  
65400       IF(MSTJ(12).GE.5)THEN
65401 C..New version: tau  for rank 0 diquark.
65402          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
65403          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
65404          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
65405          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
65406          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
65407          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
65408          DMB(7+IUD1)=DMB(7+IUU1)/2D0
65409  
65410 C..New version: curtain flavour ratios.
65411 C.. s/u for q->B+M+...
65412 C.. s/u for rank 0 diquark: su -> ...M+B+...
65413 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
65414          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
65415          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
65416          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
65417          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
65418          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
65419      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
65420       ELSE
65421 C..Old version: reset unused rank 0 diquark weights and
65422 C..             unused diquark SU(6) survival weights
65423          DO 130 I=1,7
65424             IF(MSTJ(12).LT.3) DMB(I)=1D0
65425             DMB(7+I)=1D0
65426   130    CONTINUE
65427  
65428 C..Old version: Shuffle PARJ(7) into tau
65429          QBM(IUS0)=QBM(IUS0)*PARJ(7)
65430          QBM(ISS1)=QBM(ISS1)*PARJ(7)
65431          QBM(IUS1)=QBM(IUS1)*PARJ(7)
65432  
65433 C..Old version: curtain flavour ratios.
65434 C.. s/u for q->B+M+...
65435 C.. s/u for rank 0 diquark: su -> ...M+B+...
65436 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
65437          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
65438          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
65439          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
65440          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
65441       ENDIF
65442  
65443 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
65444 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
65445       DO 140 I=1,7
65446          DMB(7+I)=DMB(7+I)*DMB(I)
65447          DMB(I)=DMB(I)*QBM(I)
65448          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
65449          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
65450   140 CONTINUE
65451  
65452 C.. *** Popcorn factors ***
65453  
65454       IF(MSTJ(12).LT.5)THEN
65455 C.. Old version: Resulting popcorn weights.
65456          PARF(138)=PARJ(6)
65457          WS=PARF(135)*PARF(138)
65458          WQ=WU*PARJ(5)/3D0
65459          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
65460          PARF(133)=WQ*
65461      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
65462          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
65463          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
65464      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
65465      &        (1D0+QBB(IUD1)+QBB(IUU1)+
65466      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
65467       ELSE
65468 C..New version: Store weights for popcorn mesons,
65469 C..get prel. popcorn weights.
65470          DO 150 IPOS=201,1400
65471             PARF(IPOS)=0D0
65472   150    CONTINUE
65473          DO 160 I=138,140
65474             PARF(I)=0D0
65475   160    CONTINUE
65476          IPOS=200
65477          PARF(193)=PARJ(8)
65478          DO 240 MR=0,7,7
65479            IF(MR.EQ.7) PARF(193)=PARJ(10)
65480            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
65481      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
65482            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
65483            DO 230 NMES=0,1
65484              IF(NMES.EQ.1) SQWT=PARJ(2)
65485              DO 220 KFQPOP=1,4
65486                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
65487                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
65488                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
65489                   QQWT=0.5D0
65490                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
65491                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
65492                ENDIF
65493                DO 210 KFQOLD =1,5
65494                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
65495                   IF(NMES.EQ.1) THEN
65496                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
65497                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
65498                   ENDIF
65499                   WTTOT=0D0
65500                   WTFAIL=0D0
65501       DO 190 KMUL=0,5
65502          PJWT=PARJ(12+KMUL)
65503          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
65504          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
65505          IF(PJWT.LE.0D0) GOTO 190
65506          IF(PJWT.GT.1D0) PJWT=1D0
65507          IMES=5*KMUL
65508          IMIX=2*KFQOLD+10*KMUL
65509          KFJ=2*KMUL+1
65510          IF(KMUL.EQ.2) KFJ=10003
65511          IF(KMUL.EQ.3) KFJ=10001
65512          IF(KMUL.EQ.4) KFJ=20003
65513          IF(KMUL.EQ.5) KFJ=5
65514          DO 180 KFQVER =1,3
65515             KFLA=MAX(KFQOLD,KFQVER)
65516             KFLB=MIN(KFQOLD,KFQVER)
65517             SWT=PARJ(11+KFLA/3+KFLA/4)
65518             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
65519             SWT=SWT*PJWT
65520             QWT=SQWT/(2D0+SQWT)
65521             IF(KFQVER.LT.3)THEN
65522                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
65523                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
65524             ENDIF
65525             IF(KFQVER.NE.KFQOLD)THEN
65526                IMES=IMES+1
65527                KFM=100*KFLA+10*KFLB+KFJ
65528                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
65529                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
65530                WTTOT=WTTOT+PARF(IPOS+IMES)
65531             ELSE
65532                DO 170 ID=3,5
65533                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
65534                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
65535                   IF(ID.EQ.5) DWT=PARF(IMIX)
65536                   KFM=110*(ID-2)+KFJ
65537                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
65538                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
65539                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
65540                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
65541                      PARF(IPOS+5*KMUL+ID)=
65542      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
65543                   ENDIF
65544                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
65545   170          CONTINUE
65546             ENDIF
65547   180    CONTINUE
65548   190 CONTINUE
65549                   DO 200 IMES=1,30
65550                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
65551   200             CONTINUE
65552                   IF(MR.EQ.7) PARF(140)=
65553      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
65554                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
65555      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
65556                   IPOS=IPOS+30
65557   210           CONTINUE
65558   220         CONTINUE
65559   230       CONTINUE
65560   240    CONTINUE
65561          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
65562          MSTU(121)=0
65563  
65564       ENDIF
65565  
65566 C..Recombine diquark weights to flavour and spin ratios
65567       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
65568      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
65569       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
65570       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
65571       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
65572       PARF(155)=QBB(ISU1)/QBB(ISU0)
65573       PARF(156)=QBB(IUS1)/QBB(IUS0)
65574       PARF(157)=QBB(IUD1)
65575  
65576       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
65577      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
65578       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
65579       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
65580       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
65581       PARF(165)=QBM(ISU1)/QBM(ISU0)
65582       PARF(166)=QBM(IUS1)/QBM(IUS0)
65583       PARF(167)=QBM(IUD1)
65584  
65585       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
65586      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
65587       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
65588       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
65589       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
65590       PARF(175)=DMB(ISU1)/DMB(ISU0)
65591       PARF(176)=DMB(IUS1)/DMB(IUS0)
65592       PARF(177)=DMB(IUD1)
65593  
65594       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
65595       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
65596       PARF(187)=DMB(7+IUD1)
65597  
65598       RETURN
65599       END
65600  
65601  
65602 C*********************************************************************
65603  
65604 C...PYPTDI
65605 C...Generates transverse momentum according to a Gaussian.
65606  
65607       SUBROUTINE PYPTDI(KFL,PX,PY)
65608  
65609 C...Double precision and integer declarations.
65610       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65611       IMPLICIT INTEGER(I-N)
65612       INTEGER PYK,PYCHGE,PYCOMP
65613 C...Commonblocks.
65614       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65615       SAVE /PYDAT1/
65616  
65617 C...Generate p_T and azimuthal angle, gives p_x and p_y.
65618       KFLA=IABS(KFL)
65619       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
65620       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
65621       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
65622       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
65623       PHI=PARU(2)*PYR(0)
65624       PX=PT*COS(PHI)
65625       PY=PT*SIN(PHI)
65626  
65627       RETURN
65628       END
65629  
65630 C*********************************************************************
65631  
65632 C...PYZDIS
65633 C...Generates the longitudinal splitting variable z.
65634  
65635       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
65636  
65637 C...Double precision and integer declarations.
65638       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65639       IMPLICIT INTEGER(I-N)
65640       INTEGER PYK,PYCHGE,PYCOMP
65641 C...Commonblocks.
65642       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65643       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65644       SAVE /PYDAT1/,/PYDAT2/
65645  
65646 C...Check if heavy flavour fragmentation.
65647       KFLA=IABS(KFL1)
65648       KFLB=IABS(KFL2)
65649       KFLH=KFLA
65650       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
65651  
65652 C...Lund symmetric scaling function: determine parameters of shape.
65653       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
65654      &MSTJ(11).GE.4) THEN
65655         FA=PARJ(41)
65656         IF(MSTJ(91).EQ.1) FA=PARJ(43)
65657         IF(KFLB.GE.10) FA=FA+PARJ(45)
65658         FBB=PARJ(42)
65659         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
65660         FB=FBB*PR
65661         FC=1D0
65662         IF(KFLA.GE.10) FC=FC-PARJ(45)
65663         IF(KFLB.GE.10) FC=FC+PARJ(45)
65664         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
65665           FRED=PARJ(46)
65666           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
65667           FC=FC+FRED*FBB*PARF(100+KFLH)**2
65668         ENDIF
65669         MC=1
65670         IF(ABS(FC-1D0).GT.0.01D0) MC=2
65671  
65672 C...Determine position of maximum. Special cases for a = 0 or a = c.
65673         IF(FA.LT.0.02D0) THEN
65674           MA=1
65675           ZMAX=1D0
65676           IF(FC.GT.FB) ZMAX=FB/FC
65677         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
65678           MA=2
65679           ZMAX=FB/(FB+FC)
65680         ELSE
65681           MA=3
65682           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
65683           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
65684         ENDIF
65685  
65686 C...Subdivide z range if distribution very peaked near endpoint.
65687         MMAX=2
65688         IF(ZMAX.LT.0.1D0) THEN
65689           MMAX=1
65690           ZDIV=2.75D0*ZMAX
65691           IF(MC.EQ.1) THEN
65692             FINT=1D0-LOG(ZDIV)
65693           ELSE
65694             ZDIVC=ZDIV**(1D0-FC)
65695             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
65696           ENDIF
65697         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
65698           MMAX=3
65699           FSCB=SQRT(4D0+(FC/FB)**2)
65700           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
65701           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
65702           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
65703           FINT=1D0+FB*(1D0-ZDIV)
65704         ENDIF
65705  
65706 C...Choice of z, preweighted for peaks at low or high z.
65707   100   Z=PYR(0)
65708         FPRE=1D0
65709         IF(MMAX.EQ.1) THEN
65710           IF(FINT*PYR(0).LE.1D0) THEN
65711             Z=ZDIV*Z
65712           ELSEIF(MC.EQ.1) THEN
65713             Z=ZDIV**Z
65714             FPRE=ZDIV/Z
65715           ELSE
65716             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
65717             FPRE=(ZDIV/Z)**FC
65718           ENDIF
65719         ELSEIF(MMAX.EQ.3) THEN
65720           IF(FINT*PYR(0).LE.1D0) THEN
65721             Z=ZDIV+LOG(Z)/FB
65722             FPRE=EXP(FB*(Z-ZDIV))
65723           ELSE
65724             Z=ZDIV+Z*(1D0-ZDIV)
65725           ENDIF
65726         ENDIF
65727  
65728 C...Weighting according to correct formula.
65729         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
65730         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
65731         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
65732         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
65733         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
65734  
65735 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
65736       ELSE
65737         FC=PARJ(50+MAX(1,KFLH))
65738         IF(MSTJ(91).EQ.1) FC=PARJ(59)
65739   110   Z=PYR(0)
65740         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
65741           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
65742         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
65743           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
65744      &    GOTO 110
65745         ELSE
65746           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
65747           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
65748         ENDIF
65749       ENDIF
65750  
65751       RETURN
65752       END
65753  
65754 C*********************************************************************
65755  
65756 C...PYSHOW
65757 C...Generates timelike parton showers from given partons.
65758  
65759       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
65760  
65761 C...Double precision and integer declarations.
65762       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65763       IMPLICIT INTEGER(I-N)
65764       INTEGER PYK,PYCHGE,PYCOMP
65765 C...Parameter statement to help give large particle numbers.
65766       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
65767      &KEXCIT=4000000,KDIMEN=5000000)
65768       PARAMETER (MAXNUR=1000)
65769 C...Commonblocks.
65770       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
65771       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
65772       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65773       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65774       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
65775       COMMON/PYINT1/MINT(400),VINT(400)
65776       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
65777 C...Local arrays.
65778       DIMENSION PMTH(5,140),PS(5),PMA(100),PMSD(100),IEP(100),IPA(100),
65779      &KFLA(100),KFLD(100),KFL(100),ITRY(100),ISI(100),ISL(100),DP(100),
65780      &DPT(5,4),KSH(0:140),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
65781      &PHIIIS(2,2),ISII(2),ISSET(2),ISCOL(0:140),ISCHG(0:140),
65782      &IREF(1000)
65783       
65784 C...Check that QMAX not too low.
65785       IF(MSTJ(41).LE.0) THEN
65786         RETURN
65787       ELSEIF(MSTJ(41).EQ.1.OR.MSTJ(41).EQ.11) THEN
65788         IF(QMAX.LE.PARJ(82).AND.IP2.GE.-80) RETURN
65789       ELSE
65790         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GE.-80)
65791      &  RETURN
65792       ENDIF
65793  
65794 C...Store positions of shower initiating partons.
65795       MPSPD=0
65796       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
65797         NPA=1
65798         IPA(1)=IP1
65799       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
65800      &  MSTU(32))) THEN
65801         NPA=2
65802         IPA(1)=IP1
65803         IPA(2)=IP2
65804       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
65805      &  .AND.IP2.GE.-80) THEN
65806         NPA=IABS(IP2)
65807         DO 100 I=1,NPA
65808           IPA(I)=IP1+I-1
65809   100   CONTINUE
65810       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
65811      &IP2.EQ.-100) THEN
65812         MPSPD=1
65813         NPA=2
65814         IPA(1)=IP1+6
65815         IPA(2)=IP1+7
65816       ELSE
65817         CALL PYERRM(12,
65818      &  '(PYSHOW:) failed to reconstruct showering system')
65819         IF(MSTU(21).GE.1) RETURN
65820       ENDIF
65821  
65822 C...Send off to PYPTFS for pT-ordered evolution if requested,
65823 C...if at least 2 partons, and without predefined shower branchings.
65824       IF((MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12).AND.NPA.GE.2.AND.
65825      &MPSPD.EQ.0) THEN
65826         NPART=NPA
65827         DO 110 II=1,NPART
65828           IPART(II)=IPA(II)
65829           PTPART(II)=0.5D0*QMAX
65830   110   CONTINUE
65831         CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
65832         RETURN
65833       ENDIF
65834  
65835 C...Initialization of cutoff masses etc.
65836       DO 120 IFL=0,40
65837         ISCOL(IFL)=0
65838         ISCHG(IFL)=0
65839         KSH(IFL)=0
65840   120 CONTINUE
65841       ISCOL(21)=1
65842       KSH(21)=1
65843       PMTH(1,21)=PYMASS(21)
65844       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
65845       PMTH(3,21)=2D0*PMTH(2,21)
65846       PMTH(4,21)=PMTH(3,21)
65847       PMTH(5,21)=PMTH(3,21)
65848       PMTH(1,22)=PYMASS(22)
65849       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
65850       PMTH(3,22)=2D0*PMTH(2,22)
65851       PMTH(4,22)=PMTH(3,22)
65852       PMTH(5,22)=PMTH(3,22)
65853       PMQTH1=PARJ(82)
65854       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
65855       PMQT1E=MIN(PMQTH1,PARJ(90))
65856       PMQTH2=PMTH(2,21)
65857       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
65858       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
65859       DO 130 IFL=1,5
65860         ISCOL(IFL)=1
65861         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
65862         KSH(IFL)=1
65863         PMTH(1,IFL)=PYMASS(IFL)
65864         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
65865         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
65866         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
65867         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
65868   130 CONTINUE
65869       DO 140 IFL=11,15,2
65870         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
65871         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
65872         PMTH(1,IFL)=PYMASS(IFL)
65873         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
65874         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
65875         PMTH(4,IFL)=PMTH(3,IFL)
65876         PMTH(5,IFL)=PMTH(3,IFL)
65877   140 CONTINUE
65878       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
65879       ALAMS=PARJ(81)**2
65880       ALFM=LOG(PT2MIN/ALAMS)
65881  
65882 C...Check on phase space available for emission.
65883       IREJ=0
65884       DO 150 J=1,5
65885         PS(J)=0D0
65886   150 CONTINUE
65887       PM=0D0
65888       KFLA(2)=0
65889       DO 170 I=1,NPA
65890         KFLA(I)=IABS(K(IPA(I),2))
65891         PMA(I)=P(IPA(I),5)
65892 C...Special cutoff masses for initial partons (may be a heavy quark,
65893 C...squark, ..., and need not be on the mass shell).
65894         IR=30+I
65895         IF(NPA.LE.1) IREF(I)=IR
65896         IF(NPA.GE.2) IREF(I+1)=IR
65897         ISCOL(IR)=0
65898         ISCHG(IR)=0
65899         KSH(IR)=0
65900         IF(KFLA(I).LE.8) THEN
65901           ISCOL(IR)=1
65902           IF(MSTJ(41).GE.2) ISCHG(IR)=1
65903         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
65904      &  KFLA(I).EQ.17) THEN
65905           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
65906         ELSEIF(KFLA(I).EQ.21) THEN
65907           ISCOL(IR)=1
65908         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
65909      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
65910           ISCOL(IR)=1
65911         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
65912           ISCOL(IR)=1
65913 C...QUARKONIA+++
65914 C...same for QQ~[3S18]
65915         ELSEIF(MSTP(148).GE.1.AND.(KFLA(I).EQ.9900443.OR.
65916      &  KFLA(I).EQ.9900553)) THEN
65917           ISCOL(IR)=1
65918 C...QUARKONIA---
65919         ENDIF
65920         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
65921         PMTH(1,IR)=PMA(I)
65922         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
65923           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
65924           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
65925           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
65926           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
65927         ELSEIF(ISCOL(IR).EQ.1) THEN
65928           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
65929           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
65930           PMTH(4,IR)=PMTH(3,IR)
65931           PMTH(5,IR)=PMTH(3,IR)
65932         ELSEIF(ISCHG(IR).EQ.1) THEN
65933           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
65934           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
65935           PMTH(4,IR)=PMTH(3,IR)
65936           PMTH(5,IR)=PMTH(3,IR)
65937         ENDIF
65938         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
65939         PM=PM+PMA(I)
65940         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
65941         DO 160 J=1,4
65942           PS(J)=PS(J)+P(IPA(I),J)
65943   160   CONTINUE
65944   170 CONTINUE
65945       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
65946       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
65947       IF(NPA.EQ.1) PS(5)=PS(4)
65948       IF(PS(5).LE.PM+PMQT1E) RETURN
65949  
65950 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
65951       KFSRCE=0
65952       IF(IP2.LE.0) THEN
65953       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
65954         KFSRCE=IABS(K(K(IP1,3),2))
65955       ELSE
65956         IPAR1=MAX(1,K(IP1,3))
65957         IPAR2=MAX(1,K(IP2,3))
65958         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
65959      &       KFSRCE=IABS(K(K(IPAR1,3),2))
65960       ENDIF
65961       ITYPES=0
65962       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
65963       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
65964       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
65965       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
65966       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
65967       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
65968       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
65969       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
65970  
65971 C...Identify two primary showerers.
65972       ITYPE1=0
65973       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
65974       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
65975       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
65976       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
65977       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
65978       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
65979       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
65980       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
65981       ITYPE2=0
65982       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
65983       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
65984       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
65985       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
65986       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
65987       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
65988       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
65989       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
65990  
65991 C...Order of showerers. Presence of gluino.
65992       ITYPMN=MIN(ITYPE1,ITYPE2)
65993       ITYPMX=MAX(ITYPE1,ITYPE2)
65994       IORD=1
65995       IF(ITYPE1.GT.ITYPE2) IORD=2
65996       IGLUI=0
65997       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
65998  
65999 C...Check if 3-jet matrix elements to be used.
66000       M3JC=0
66001       ALPHA=0.5D0
66002       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
66003         IF(MSTJ(38).NE.0) THEN
66004           M3JC=MSTJ(38)
66005           ALPHA=PARJ(80)
66006           MSTJ(38)=0
66007         ELSEIF(MSTJ(47).GE.6) THEN
66008           M3JC=MSTJ(47)
66009         ELSE
66010           ICLASS=1
66011           ICOMBI=4
66012  
66013 C...Vector/axial vector -> q + qbar; q -> q + V.
66014           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
66015      &    ITYPES.EQ.3)) THEN
66016             ICLASS=2
66017             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
66018               ICOMBI=1
66019             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
66020      &      K(IPA(1),2)+K(IPA(2),2).EQ.0)) THEN
66021 C...gamma*/Z0: assume e+e- initial state if unknown.
66022               EI=-1D0
66023               IF(KFSRCE.EQ.23) THEN
66024                 IANNFL=K(K(IP1,3),3)
66025                 IF(IANNFL.NE.0) THEN
66026                   KANNFL=IABS(K(IANNFL,2))
66027                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
66028                 ENDIF
66029               ENDIF
66030               AI=SIGN(1D0,EI+0.1D0)
66031               VI=AI-4D0*EI*PARU(102)
66032               EF=KCHG(KFLA(1),1)/3D0
66033               AF=SIGN(1D0,EF+0.1D0)
66034               VF=AF-4D0*EF*PARU(102)
66035               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
66036               SH=PS(5)**2
66037               SQMZ=PMAS(23,1)**2
66038               SQWZ=PS(5)*PMAS(23,2)
66039               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
66040               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
66041      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
66042               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
66043               ICOMBI=3
66044               ALPHA=VECT/(VECT+AXIV)
66045             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
66046               ICOMBI=4
66047             ENDIF
66048 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
66049           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
66050             ICLASS=2
66051           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
66052      &    ITYPES.EQ.1)) THEN
66053             ICLASS=3
66054  
66055 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
66056           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
66057             ICLASS=4
66058             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
66059               ICOMBI=1
66060             ELSEIF(KFSRCE.EQ.36) THEN
66061               ICOMBI=2
66062             ENDIF
66063           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
66064      &    ITYPES.EQ.1)) THEN
66065             ICLASS=5
66066  
66067 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
66068           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
66069      &    ITYPES.EQ.3)) THEN
66070             ICLASS=6
66071           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
66072      &    ITYPES.EQ.2)) THEN
66073             ICLASS=7
66074           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
66075             ICLASS=8
66076           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
66077      &    ITYPES.EQ.2)) THEN
66078             ICLASS=9
66079  
66080 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
66081           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
66082      &    ITYPES.EQ.5)) THEN
66083             ICLASS=10
66084           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
66085      &    ITYPES.EQ.2)) THEN
66086             ICLASS=11
66087           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
66088      &    ITYPES.EQ.1)) THEN
66089             ICLASS=12
66090  
66091 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
66092           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
66093             ICLASS=13
66094           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
66095      &    ITYPES.EQ.2)) THEN
66096             ICLASS=14
66097           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
66098      &    ITYPES.EQ.1)) THEN
66099             ICLASS=15
66100  
66101 C...g -> ~g + ~g (eikonal approximation).
66102           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
66103             ICLASS=16
66104           ENDIF
66105           M3JC=5*ICLASS+ICOMBI
66106         ENDIF
66107       ENDIF
66108  
66109 C...Find if interference with initial state partons.
66110       MIIS=0
66111       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
66112      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
66113       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
66114      &MIIS=MSTJ(50)-3
66115       IF(MIIS.NE.0) THEN
66116         DO 190 I=1,2
66117           KCII(I)=0
66118           KCA=PYCOMP(KFLA(I))
66119           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
66120           NIIS(I)=0
66121           IF(KCII(I).NE.0) THEN
66122             DO 180 J=1,2
66123               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
66124               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
66125      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
66126                 NIIS(I)=NIIS(I)+1
66127                 IIIS(I,NIIS(I))=ICSI
66128               ENDIF
66129   180       CONTINUE
66130           ENDIF
66131   190   CONTINUE
66132         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
66133       ENDIF
66134  
66135 C...Boost interfering initial partons to rest frame
66136 C...and reconstruct their polar and azimuthal angles.
66137       IF(MIIS.NE.0) THEN
66138         DO 210 I=1,2
66139           DO 200 J=1,5
66140             K(N+I,J)=K(IPA(I),J)
66141             P(N+I,J)=P(IPA(I),J)
66142             V(N+I,J)=0D0
66143   200     CONTINUE
66144   210   CONTINUE
66145         DO 230 I=3,2+NIIS(1)
66146           DO 220 J=1,5
66147             K(N+I,J)=K(IIIS(1,I-2),J)
66148             P(N+I,J)=P(IIIS(1,I-2),J)
66149             V(N+I,J)=0D0
66150   220     CONTINUE
66151   230   CONTINUE
66152         DO 250 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
66153           DO 240 J=1,5
66154             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
66155             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
66156             V(N+I,J)=0D0
66157   240     CONTINUE
66158   250   CONTINUE
66159         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
66160      &  -PS(2)/PS(4),-PS(3)/PS(4))
66161         PHI=PYANGL(P(N+1,1),P(N+1,2))
66162         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
66163         THE=PYANGL(P(N+1,3),P(N+1,1))
66164         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
66165         DO 260 I=3,2+NIIS(1)
66166           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
66167           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
66168   260   CONTINUE
66169         DO 270 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
66170           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
66171      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
66172           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
66173   270   CONTINUE
66174       ENDIF
66175  
66176 C...Boost 3 or more partons to their rest frame.
66177       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
66178      &-PS(2)/PS(4),-PS(3)/PS(4))
66179  
66180 C...Define imagined single initiator of shower for parton system.
66181       NS=N
66182       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
66183         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
66184         IF(MSTU(21).GE.1) RETURN
66185       ENDIF
66186   280 N=NS
66187       IF(NPA.GE.2) THEN
66188         K(N+1,1)=11
66189         K(N+1,2)=21
66190         K(N+1,3)=0
66191         K(N+1,4)=0
66192         K(N+1,5)=0
66193         P(N+1,1)=0D0
66194         P(N+1,2)=0D0
66195         P(N+1,3)=0D0
66196         P(N+1,4)=PS(5)
66197         P(N+1,5)=PS(5)
66198         V(N+1,5)=PS(5)**2
66199         N=N+1
66200         IREF(1)=21
66201       ENDIF
66202  
66203 C...Loop over partons that may branch.
66204       NEP=NPA
66205       IM=NS
66206       IF(NPA.EQ.1) IM=NS-1
66207   290 IM=IM+1
66208       IF(N.GT.NS) THEN
66209         IF(IM.GT.N) GOTO 600
66210         KFLM=IABS(K(IM,2))
66211         IR=IREF(IM-NS)
66212         IF(KSH(IR).EQ.0) GOTO 290
66213         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 290
66214         IGM=K(IM,3)
66215       ELSE
66216         IGM=-1
66217       ENDIF
66218       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
66219         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
66220         IF(MSTU(21).GE.1) RETURN
66221       ENDIF
66222  
66223 C...Position of aunt (sister to branching parton).
66224 C...Origin and flavour of daughters.
66225       IAU=0
66226       IF(IGM.GT.0) THEN
66227         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
66228         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
66229       ENDIF
66230       IF(IGM.GE.0) THEN
66231         K(IM,4)=N+1
66232         DO 300 I=1,NEP
66233           K(N+I,3)=IM
66234   300   CONTINUE
66235       ELSE
66236         K(N+1,3)=IPA(1)
66237       ENDIF
66238       IF(IGM.LE.0) THEN
66239         DO 310 I=1,NEP
66240           K(N+I,2)=K(IPA(I),2)
66241   310   CONTINUE
66242       ELSEIF(KFLM.NE.21) THEN
66243         K(N+1,2)=K(IM,2)
66244         K(N+2,2)=K(IM,5)
66245         IREF(N+1-NS)=IREF(IM-NS)
66246         IREF(N+2-NS)=IABS(K(N+2,2))
66247       ELSEIF(K(IM,5).EQ.21) THEN
66248         K(N+1,2)=21
66249         K(N+2,2)=21
66250         IREF(N+1-NS)=21
66251         IREF(N+2-NS)=21
66252       ELSE
66253         K(N+1,2)=K(IM,5)
66254         K(N+2,2)=-K(IM,5)
66255         IREF(N+1-NS)=IABS(K(N+1,2))
66256         IREF(N+2-NS)=IABS(K(N+2,2))
66257       ENDIF
66258  
66259 C...Reset flags on daughters and tries made.
66260       DO 320 IP=1,NEP
66261         K(N+IP,1)=3
66262         K(N+IP,4)=0
66263         K(N+IP,5)=0
66264         KFLD(IP)=IABS(K(N+IP,2))
66265         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
66266         ITRY(IP)=0
66267         ISL(IP)=0
66268         ISI(IP)=0
66269         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
66270   320 CONTINUE
66271       ISLM=0
66272  
66273 C...Maximum virtuality of daughters.
66274       IF(IGM.LE.0) THEN
66275         DO 330 I=1,NPA
66276           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
66277           P(N+I,5)=MIN(QMAX,PS(5))
66278           IR=IREF(N+I-NS)
66279           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
66280           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
66281   330   CONTINUE
66282       ELSE
66283         IF(MSTJ(43).LE.2) PEM=V(IM,2)
66284         IF(MSTJ(43).GE.3) PEM=P(IM,4)
66285         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
66286         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
66287         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
66288       ENDIF
66289       DO 340 I=1,NEP
66290         PMSD(I)=P(N+I,5)
66291         IF(ISI(I).EQ.1) THEN
66292           IR=IREF(N+I-NS)
66293           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
66294         ENDIF
66295         V(N+I,5)=P(N+I,5)**2
66296   340 CONTINUE
66297  
66298 C...Choose one of the daughters for evolution.
66299   350 INUM=0
66300       IF(NEP.EQ.1) INUM=1
66301       DO 360 I=1,NEP
66302         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
66303   360 CONTINUE
66304       DO 370 I=1,NEP
66305         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
66306           IR=IREF(N+I-NS)
66307           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
66308         ENDIF
66309   370 CONTINUE
66310       IF(INUM.EQ.0) THEN
66311         RMAX=0D0
66312         DO 380 I=1,NEP
66313           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
66314             RPM=P(N+I,5)/PMSD(I)
66315             IR=IREF(N+I-NS)
66316             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
66317               RMAX=RPM
66318               INUM=I
66319             ENDIF
66320           ENDIF
66321   380   CONTINUE
66322       ENDIF
66323  
66324 C...Cancel choice of predetermined daughter already treated.
66325       INUM=MAX(1,INUM)
66326       INUMT=INUM
66327       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
66328         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
66329       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
66330         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
66331         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
66332       ENDIF
66333  
66334 C...Store information on choice of evolving daughter.
66335       IEP(1)=N+INUM
66336       DO 390 I=2,NEP
66337         IEP(I)=IEP(I-1)+1
66338         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
66339   390 CONTINUE
66340       DO 400 I=1,NEP
66341         KFL(I)=IABS(K(IEP(I),2))
66342   400 CONTINUE
66343       ITRY(INUM)=ITRY(INUM)+1
66344       IF(ITRY(INUM).GT.200) THEN
66345         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
66346         IF(MSTU(21).GE.1) RETURN
66347       ENDIF
66348       Z=0.5D0
66349       IR=IREF(IEP(1)-NS)
66350       IF(KSH(IR).EQ.0) GOTO 450
66351       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 450
66352  
66353 C...Check if evolution already predetermined for daughter.
66354       IPSPD=0
66355       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
66356         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
66357       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
66358         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
66359         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
66360       ENDIF
66361       IF(INUM.EQ.1.OR.INUM.EQ.2) THEN
66362         ISSET(INUM)=0
66363         IF(IPSPD.NE.0) ISSET(INUM)=1
66364       ENDIF
66365  
66366 C...Select side for interference with initial state partons.
66367       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
66368         III=IEP(1)-NS-1
66369         ISII(III)=0
66370         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
66371           ISII(III)=1
66372         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
66373           IF(PYR(0).GT.0.5D0) ISII(III)=1
66374         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
66375           ISII(III)=1
66376           IF(PYR(0).GT.0.5D0) ISII(III)=2
66377         ENDIF
66378       ENDIF
66379  
66380 C...Calculate allowed z range.
66381       IF(NEP.EQ.1) THEN
66382         PMED=PS(4)
66383       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66384         PMED=P(IM,5)
66385       ELSE
66386         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
66387         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
66388       ENDIF
66389       IF(MOD(MSTJ(43),2).EQ.1) THEN
66390         ZC=PMTH(2,21)/PMED
66391         ZCE=PMTH(2,22)/PMED
66392         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
66393       ELSE
66394         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
66395         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
66396         PMTMPE=PMTH(2,22)
66397         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
66398         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
66399         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
66400       ENDIF
66401       ZC=MIN(ZC,0.491D0)
66402       ZCE=MIN(ZCE,0.49991D0)
66403       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
66404      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
66405         P(IEP(1),5)=PMTH(1,IR)
66406         V(IEP(1),5)=P(IEP(1),5)**2
66407         GOTO 450
66408       ENDIF
66409  
66410 C...Integral of Altarelli-Parisi z kernel for QCD.
66411 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
66412       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
66413         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
66414 C...QUARKONIA+++
66415 C...Evolution of QQ~[3S18] state if MSTP(148)=1.
66416       ELSEIF(MSTJ(49).EQ.0.AND.MSTP(149).GE.0.AND.
66417      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
66418         FBR=6D0*LOG((1D0-ZC)/ZC)
66419 C...QUARKONIA---
66420       ELSEIF(MSTJ(49).EQ.0) THEN
66421         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
66422         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
66423  
66424 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
66425       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
66426         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
66427       ELSEIF(MSTJ(49).EQ.1) THEN
66428         FBR=(1D0-2D0*ZC)/3D0
66429         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
66430  
66431 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
66432       ELSEIF(KFL(1).EQ.21) THEN
66433         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
66434       ELSE
66435         FBR=2D0*LOG((1D0-ZC)/ZC)
66436       ENDIF
66437  
66438 C...Reset QCD probability for colourless.
66439       IF(ISCOL(IR).EQ.0) FBR=0D0
66440  
66441 C...Integral of Altarelli-Parisi kernel for photon emission.
66442       FBRE=0D0
66443       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
66444         IF(KFL(1).LE.18) THEN
66445           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
66446         ENDIF
66447         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
66448       ENDIF
66449  
66450 C...Inner veto algorithm starts. Find maximum mass for evolution.
66451   410 PMS=V(IEP(1),5)
66452       IF(IGM.GE.0) THEN
66453         PM2=0D0
66454         DO 420 I=2,NEP
66455           PM=P(IEP(I),5)
66456           IRI=IREF(IEP(I)-NS)
66457           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
66458           PM2=PM2+PM
66459   420   CONTINUE
66460         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
66461       ENDIF
66462  
66463 C...Select mass for daughter in QCD evolution.
66464       B0=27D0/6D0
66465       DO 430 IFF=4,MSTJ(45)
66466         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
66467   430 CONTINUE
66468 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
66469       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
66470 C...Already predetermined choice.
66471       IF(IPSPD.NE.0) THEN
66472         PMSQCD=P(IPSPD,5)**2
66473       ELSEIF(FBR.LT.1D-3) THEN
66474         PMSQCD=0D0
66475       ELSEIF(MSTJ(44).LE.0) THEN
66476         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
66477       ELSEIF(MSTJ(44).EQ.1) THEN
66478         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
66479       ELSE
66480         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
66481       ENDIF
66482 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
66483       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
66484       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
66485       V(IEP(1),5)=PMSQCD
66486       MCE=1
66487  
66488 C...Select mass for daughter in QED evolution.
66489       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
66490 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
66491         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
66492         IF(FBRE.LT.1D-3) THEN
66493           PMSQED=0D0
66494         ELSE
66495           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
66496      &    (PARU(101)*FBRE)))
66497         ENDIF
66498 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
66499         PMSQED=PMSQED+PMTH(1,IR)**2
66500         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
66501      &  PMTH(2,IR)**2
66502         IF(PMSQED.GT.PMSQCD) THEN
66503           V(IEP(1),5)=PMSQED
66504           MCE=2
66505         ENDIF
66506       ENDIF
66507  
66508 C...Check whether daughter mass below cutoff.
66509       P(IEP(1),5)=SQRT(V(IEP(1),5))
66510       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
66511         P(IEP(1),5)=PMTH(1,IR)
66512         V(IEP(1),5)=P(IEP(1),5)**2
66513         GOTO 450
66514       ENDIF
66515  
66516 C...Already predetermined choice of z, and flavour in g -> qqbar.
66517       IF(IPSPD.NE.0) THEN
66518         IPSGD1=K(IPSPD,4)
66519         IPSGD2=K(IPSPD,5)
66520         PMSGD1=P(IPSGD1,5)**2
66521         PMSGD2=P(IPSGD2,5)**2
66522         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
66523      &  4D0*PMSGD1*PMSGD2))
66524         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
66525      &  PMSGD1+PMSGD2)/ALAMPS
66526         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
66527         IF(KFL(1).NE.21) THEN
66528           K(IEP(1),5)=21
66529         ELSE
66530           K(IEP(1),5)=IABS(K(IPSGD1,2))
66531         ENDIF
66532  
66533 C...Select z value of branching: q -> qgamma.
66534       ELSEIF(MCE.EQ.2) THEN
66535         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
66536         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
66537         K(IEP(1),5)=22
66538  
66539 C...QUARKONIA+++
66540 C...Select z value of branching: QQ~[3S18] -> QQ~[3S18]g.
66541       ELSEIF(MSTJ(49).EQ.0.AND.
66542      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
66543         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66544 C...Select always the harder 'gluon' if the switch MSTP(149)<=0.
66545         IF(MSTP(149).LE.0.OR.PYR(0).GT.0.5D0) Z=1D0-Z
66546         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
66547         K(IEP(1),5)=21
66548 C...QUARKONIA---
66549  
66550 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
66551       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
66552         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66553 C...Only do z weighting when no ME correction afterwards.
66554         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
66555         K(IEP(1),5)=21
66556       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
66557         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
66558         IF(PYR(0).GT.0.5D0) Z=1D0-Z
66559         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
66560         K(IEP(1),5)=21
66561       ELSEIF(MSTJ(49).NE.1) THEN
66562         Z=PYR(0)
66563         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 410
66564         KFLB=1+INT(MSTJ(45)*PYR(0))
66565         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
66566         IF(PMQ.GE.1D0) GOTO 410
66567         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
66568           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 410
66569           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
66570           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
66571      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 410
66572         ELSE
66573           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 410
66574         ENDIF
66575         K(IEP(1),5)=KFLB
66576  
66577 C...Ditto for scalar gluon model.
66578       ELSEIF(KFL(1).NE.21) THEN
66579         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
66580         K(IEP(1),5)=21
66581       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
66582         Z=ZC+(1D0-2D0*ZC)*PYR(0)
66583         K(IEP(1),5)=21
66584       ELSE
66585         Z=ZC+(1D0-2D0*ZC)*PYR(0)
66586         KFLB=1+INT(MSTJ(45)*PYR(0))
66587         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
66588         IF(PMQ.GE.1D0) GOTO 410
66589         K(IEP(1),5)=KFLB
66590       ENDIF
66591  
66592 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
66593       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
66594         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
66595      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66596           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 410
66597         ELSE
66598           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
66599           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
66600      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
66601           IF(PT2APP.LT.PT2MIN) GOTO 410
66602           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 410
66603         ENDIF
66604       ENDIF
66605  
66606 C...Check if z consistent with chosen m.
66607       IF(KFL(1).EQ.21) THEN
66608         IRGD1=IABS(K(IEP(1),5))
66609         IRGD2=IRGD1
66610       ELSE
66611         IRGD1=IR
66612         IRGD2=IABS(K(IEP(1),5))
66613       ENDIF
66614       IF(NEP.EQ.1) THEN
66615         PED=PS(4)
66616       ELSEIF(NEP.GE.3) THEN
66617         PED=P(IEP(1),4)
66618       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66619         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
66620       ELSE
66621         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
66622         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
66623       ENDIF
66624       IF(MOD(MSTJ(43),2).EQ.1) THEN
66625         PMQTH3=0.5D0*PARJ(82)
66626         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
66627         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
66628         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
66629         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
66630         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
66631      &  4D0*PMQ1*PMQ2)))
66632         ZH=1D0+PMQ1-PMQ2
66633       ELSE
66634         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
66635         ZH=1D0
66636       ENDIF
66637       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
66638      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66639       ELSEIF(IPSPD.NE.0) THEN
66640       ELSE
66641         ZL=0.5D0*(ZH-ZD)
66642         ZU=0.5D0*(ZH+ZD)
66643         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 410
66644       ENDIF
66645       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
66646      &(1D0-ZU)))
66647       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
66648  
66649 C...Width suppression for q -> q + g.
66650       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
66651         IF(IGM.EQ.0) THEN
66652           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
66653         ELSE
66654           EGLU=PMED*(1D0-Z)
66655         ENDIF
66656         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
66657         IF(MSTJ(40).EQ.1) THEN
66658           IF(CHI.LT.PYR(0)) GOTO 410
66659         ELSEIF(MSTJ(40).EQ.2) THEN
66660           IF(1D0-CHI.LT.PYR(0)) GOTO 410
66661         ENDIF
66662       ENDIF
66663  
66664 C...Three-jet matrix element correction.
66665       IF(M3JC.GE.1) THEN
66666         WME=1D0
66667         WSHOW=1D0
66668  
66669 C...QED matrix elements: only for massless case so far.
66670         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
66671           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
66672           X2=1D0-V(IEP(1),5)/V(NS+1,5)
66673           X3=(1D0-X1)+(1D0-X2)
66674           KI1=K(IPA(INUM),2)
66675           KI2=K(IPA(3-INUM),2)
66676           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
66677           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
66678           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
66679      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
66680           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
66681         ELSEIF(MCE.EQ.2) THEN
66682  
66683 C...QCD matrix elements, including mass effects.
66684         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
66685           PS1ME=V(IEP(1),5)
66686           PM1ME=PMTH(1,IR)
66687           M3JCC=M3JC
66688           IF(IR.GE.31.AND.IGM.EQ.0) THEN
66689 C...QCD ME: original parton, first branching.
66690             PM2ME=PMTH(1,63-IR)
66691             ECMME=PS(5)
66692           ELSEIF(IR.GE.31) THEN
66693 C...QCD ME: original parton, subsequent branchings.
66694             PM2ME=PMTH(1,63-IR)
66695             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
66696             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66697           ELSEIF(K(IM,2).EQ.21) THEN
66698 C...QCD ME: secondary partons, first branching.
66699             PM2ME=PM1ME
66700             ZMME=V(IM,1)
66701             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
66702             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
66703      &      4D0*PS1ME*PM2ME**2))
66704             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
66705      &      V(IM,5)
66706             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66707             M3JCC=66
66708           ELSE
66709 C...QCD ME: secondary partons, subsequent branchings.
66710             PM2ME=PM1ME
66711             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
66712             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
66713             M3JCC=66
66714           ENDIF
66715 C...Construct ME variables.
66716           R1ME=PM1ME/ECMME
66717           R2ME=PM2ME/ECMME
66718           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
66719           X2=1D0+R2ME**2-PS1ME/ECMME**2
66720 C...Call ME, with right order important for two inequivalent showerers.
66721           IF(IR.EQ.IORD+30) THEN
66722             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
66723           ELSE
66724             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
66725           ENDIF
66726 C...Split up total ME when two radiating partons.
66727           ISPRAD=1
66728           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
66729      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
66730      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
66731      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
66732      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
66733           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
66734      &    MAX(1D-10,2D0-X1-X2)
66735 C...Evaluate shower rate to be compared with.
66736           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
66737      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
66738           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
66739         ELSEIF(MSTJ(49).NE.1) THEN
66740  
66741 C...Toy model scalar theory matrix elements; no mass effects.
66742         ELSE
66743           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
66744           X2=1D0-V(IEP(1),5)/V(NS+1,5)
66745           X3=(1D0-X1)+(1D0-X2)
66746           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
66747           WME=X3**2
66748           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
66749      &    PARJ(171)
66750         ENDIF
66751  
66752         IF(WME.LT.PYR(0)*WSHOW) GOTO 410
66753       ENDIF
66754  
66755 C...Impose angular ordering by rejection of nonordered emission.
66756       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
66757         PEMAO=V(IM,1)*P(IM,4)
66758         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
66759         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
66760           MAOD=0
66761         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
66762      &  .OR.MSTJ(42).EQ.7)) THEN
66763           MAOD=0
66764         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
66765      &  .OR.MSTJ(42).EQ.6)) THEN
66766           MAOD=1
66767           PMDAO=PMTH(2,K(IEP(1),5))
66768           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
66769         ELSE
66770           MAOD=1
66771           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
66772           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
66773      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
66774         ENDIF
66775         MAOM=1
66776         IAOM=IM
66777   440   IF(K(IAOM,5).EQ.22) THEN
66778           IAOM=K(IAOM,3)
66779           IF(K(IAOM,3).LE.NS) MAOM=0
66780           IF(MAOM.EQ.1) GOTO 440
66781         ENDIF
66782         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
66783           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
66784           IF(THE2ID.LT.THE2IM) GOTO 410
66785         ENDIF
66786       ENDIF
66787  
66788 C...Impose user-defined maximum angle at first branching.
66789       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
66790         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
66791           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
66792           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
66793         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
66794           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
66795           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
66796         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
66797           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
66798           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 410
66799         ENDIF
66800       ENDIF
66801  
66802 C...Impose angular constraint in first branching from interference
66803 C...with initial state partons.
66804       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
66805         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
66806         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
66807           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 410
66808         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
66809           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 410
66810         ENDIF
66811       ENDIF
66812  
66813 C...End of inner veto algorithm. Check if only one leg evolved so far.
66814   450 V(IEP(1),1)=Z
66815       ISL(1)=0
66816       ISL(2)=0
66817       IF(NEP.EQ.1) GOTO 490
66818       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 350
66819       DO 460 I=1,NEP
66820         IR=IREF(N+I-NS)
66821         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
66822           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 350
66823         ENDIF
66824   460 CONTINUE
66825  
66826 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
66827       IF(NEP.GE.3) THEN
66828         PMSUM=0D0
66829         DO 470 I=1,NEP
66830           PMSUM=PMSUM+P(N+I,5)
66831   470   CONTINUE
66832         IF(PMSUM.GE.PS(5)) GOTO 350
66833       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
66834         DO 480 I1=N+1,N+2
66835           IRDA=IREF(I1-NS)
66836           IF(KSH(IRDA).EQ.0) GOTO 480
66837           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 480
66838           IF(IRDA.EQ.21) THEN
66839             IRGD1=IABS(K(I1,5))
66840             IRGD2=IRGD1
66841           ELSE
66842             IRGD1=IRDA
66843             IRGD2=IABS(K(I1,5))
66844           ENDIF
66845           I2=2*N+3-I1
66846           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
66847             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
66848           ELSE
66849             IF(I1.EQ.N+1) ZM=V(IM,1)
66850             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
66851             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
66852      &      4D0*V(N+1,5)*V(N+2,5))
66853             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
66854      &      V(IM,5)
66855           ENDIF
66856           IF(MOD(MSTJ(43),2).EQ.1) THEN
66857             PMQTH3=0.5D0*PARJ(82)
66858             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
66859             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
66860             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
66861             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
66862             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
66863      &      4D0*PMQ1*PMQ2)))
66864             ZH=1D0+PMQ1-PMQ2
66865           ELSE
66866             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
66867             ZH=1D0
66868           ENDIF
66869           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
66870      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66871           ELSE
66872             ZL=0.5D0*(ZH-ZD)
66873             ZU=0.5D0*(ZH+ZD)
66874             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
66875      &      ISSET(1).EQ.0) THEN
66876               ISL(1)=1
66877             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
66878      &      ISSET(2).EQ.0) THEN
66879               ISL(2)=1
66880             ENDIF
66881           ENDIF
66882           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
66883      &    ZL*(1D0-ZU)))
66884           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
66885   480   CONTINUE
66886         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
66887           ISL(3-ISLM)=0
66888           ISLM=3-ISLM
66889         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
66890           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
66891           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
66892           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
66893           IF(ISL(1).EQ.1) ISL(2)=0
66894           IF(ISL(1).EQ.0) ISLM=1
66895           IF(ISL(2).EQ.0) ISLM=2
66896         ENDIF
66897         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 350
66898       ENDIF
66899       IRD1=IREF(N+1-NS)
66900       IRD2=IREF(N+2-NS)
66901       IF(IGM.GT.0) THEN
66902         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
66903      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
66904           PMQ1=V(N+1,5)/V(IM,5)
66905           PMQ2=V(N+2,5)/V(IM,5)
66906           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
66907      &    4D0*PMQ1*PMQ2)))
66908           ZH=1D0+PMQ1-PMQ2
66909           ZL=0.5D0*(ZH-ZD)
66910           ZU=0.5D0*(ZH+ZD)
66911           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 350
66912         ENDIF
66913       ENDIF
66914  
66915 C...Accepted branch. Construct four-momentum for initial partons.
66916   490 MAZIP=0
66917       MAZIC=0
66918       IF(NEP.EQ.1) THEN
66919         P(N+1,1)=0D0
66920         P(N+1,2)=0D0
66921         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
66922      &  P(N+1,5))))
66923         P(N+1,4)=P(IPA(1),4)
66924         V(N+1,2)=P(N+1,4)
66925       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
66926         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
66927         P(N+1,1)=0D0
66928         P(N+1,2)=0D0
66929         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
66930         P(N+1,4)=PED1
66931         P(N+2,1)=0D0
66932         P(N+2,2)=0D0
66933         P(N+2,3)=-P(N+1,3)
66934         P(N+2,4)=P(IM,5)-PED1
66935         V(N+1,2)=P(N+1,4)
66936         V(N+2,2)=P(N+2,4)
66937       ELSEIF(NEP.GE.3) THEN
66938 C...Rescale all momenta for energy conservation.
66939         LOOP=0
66940         PES=0D0
66941         PQS=0D0
66942         DO 510 I=1,NEP
66943           DO 500 J=1,4
66944             P(N+I,J)=P(IPA(I),J)
66945   500     CONTINUE
66946           PES=PES+P(N+I,4)
66947           PQS=PQS+P(N+I,5)**2/P(N+I,4)
66948   510   CONTINUE
66949   520   LOOP=LOOP+1
66950         FAC=(PS(5)-PQS)/(PES-PQS)
66951         PES=0D0
66952         PQS=0D0
66953         DO 540 I=1,NEP
66954           DO 530 J=1,3
66955             P(N+I,J)=FAC*P(N+I,J)
66956   530     CONTINUE
66957           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)
66958           V(N+I,2)=P(N+I,4)
66959           PES=PES+P(N+I,4)
66960           PQS=PQS+P(N+I,5)**2/P(N+I,4)
66961   540   CONTINUE
66962         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 520
66963  
66964 C...Construct transverse momentum for ordinary branching in shower.
66965       ELSE
66966         ZM=V(IM,1)
66967         LOOPPT=0
66968   550   LOOPPT=LOOPPT+1
66969         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
66970         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
66971         IF(PZM.LE.0D0) THEN
66972           PTS=0D0
66973         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
66974      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
66975           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
66976         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
66977           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
66978      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
66979         ELSE
66980           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
66981         ENDIF
66982         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
66983           ZM=0.05D0+0.9D0*ZM
66984           GOTO 550
66985         ELSEIF(PTS.LT.0D0) THEN
66986           GOTO 280
66987         ENDIF
66988         PT=SQRT(MAX(0D0,PTS))
66989  
66990 C...Global statistics.
66991         MINT(353)=MINT(353)+1
66992         VINT(353)=VINT(353)+PT
66993         IF (MINT(353).EQ.1) VINT(358)=PT
66994  
66995 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
66996         HAZIP=0D0
66997         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
66998      &  .AND.IAU.NE.0) THEN
66999           IF(K(IGM,3).NE.0) MAZIP=1
67000           ZAU=V(IGM,1)
67001           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
67002           IF(MAZIP.EQ.0) ZAU=0D0
67003           IF(K(IGM,2).NE.21) THEN
67004             HAZIP=2D0*ZAU/(1D0+ZAU**2)
67005           ELSE
67006             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
67007           ENDIF
67008           IF(K(N+1,2).NE.21) THEN
67009             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
67010           ELSE
67011             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
67012           ENDIF
67013         ENDIF
67014  
67015 C...Find coefficient of azimuthal asymmetry due to soft gluon
67016 C...interference.
67017         HAZIC=0D0
67018         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
67019      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
67020           IF(K(IGM,3).NE.0) MAZIC=N+1
67021           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
67022           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
67023      &    ZM.GT.0.5D0) MAZIC=N+2
67024           IF(K(IAU,2).EQ.22) MAZIC=0
67025           ZS=ZM
67026           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
67027           ZGM=V(IGM,1)
67028           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
67029           IF(MAZIC.EQ.0) ZGM=1D0
67030           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
67031      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
67032           HAZIC=MIN(0.95D0,HAZIC)
67033         ENDIF
67034       ENDIF
67035  
67036 C...Construct energies for ordinary branching in shower.
67037   560 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
67038         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
67039      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
67040           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
67041      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
67042         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
67043           P(N+1,4)=PEM*V(IM,1)
67044         ELSE
67045           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
67046      &    SQRT(PMLS)*ZM)/V(IM,5)
67047         ENDIF
67048  
67049 C...Already predetermined choice of phi angle or not
67050         PHI=PARU(2)*PYR(0)
67051         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
67052           IPSPD=IP1+IM-NS-2
67053           IF(K(IPSPD,4).GT.0) THEN
67054             IPSGD1=K(IPSPD,4)
67055             IF(IM.EQ.NS+2) THEN
67056               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
67057             ELSE
67058               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
67059             ENDIF
67060           ENDIF
67061         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
67062           IPSPD=IP1+IM-NS-2
67063           IF(K(IPSPD,4).GT.0) THEN
67064             IPSGD1=K(IPSPD,4)
67065             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
67066             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
67067             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
67068             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
67069             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
67070             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
67071           ENDIF
67072         ENDIF
67073  
67074 C...Construct momenta for ordinary branching in shower.
67075         P(N+1,1)=PT*COS(PHI)
67076         P(N+1,2)=PT*SIN(PHI)
67077         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
67078      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
67079           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
67080      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
67081         ELSEIF(PZM.GT.0D0) THEN
67082           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
67083      &    2D0*PEM*P(N+1,4))/PZM
67084         ELSE
67085           P(N+1,3)=0D0
67086         ENDIF
67087         P(N+2,1)=-P(N+1,1)
67088         P(N+2,2)=-P(N+1,2)
67089         P(N+2,3)=PZM-P(N+1,3)
67090         P(N+2,4)=PEM-P(N+1,4)
67091         IF(MSTJ(43).LE.2) THEN
67092           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
67093           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
67094         ENDIF
67095       ENDIF
67096  
67097 C...Rotate and boost daughters.
67098       IF(IGM.GT.0) THEN
67099         IF(MSTJ(43).LE.2) THEN
67100           BEX=P(IGM,1)/P(IGM,4)
67101           BEY=P(IGM,2)/P(IGM,4)
67102           BEZ=P(IGM,3)/P(IGM,4)
67103           GA=P(IGM,4)/P(IGM,5)
67104           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
67105      &    P(IM,4))
67106         ELSE
67107           BEX=0D0
67108           BEY=0D0
67109           BEZ=0D0
67110           GA=1D0
67111           GABEP=0D0
67112         ENDIF
67113         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
67114         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
67115         IF(PTIMB.GT.1D-4) THEN
67116           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
67117         ELSE
67118           PHI=0D0
67119         ENDIF
67120         DO 570 I=N+1,N+2
67121           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
67122      &    SIN(THE)*COS(PHI)*P(I,3)
67123           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
67124      &    SIN(THE)*SIN(PHI)*P(I,3)
67125           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
67126           DP(4)=P(I,4)
67127           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
67128           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
67129           P(I,1)=DP(1)+DGABP*BEX
67130           P(I,2)=DP(2)+DGABP*BEY
67131           P(I,3)=DP(3)+DGABP*BEZ
67132           P(I,4)=GA*(DP(4)+DBP)
67133   570   CONTINUE
67134       ENDIF
67135  
67136 C...Weight with azimuthal distribution, if required.
67137       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
67138         DO 580 J=1,3
67139           DPT(1,J)=P(IM,J)
67140           DPT(2,J)=P(IAU,J)
67141           DPT(3,J)=P(N+1,J)
67142   580   CONTINUE
67143         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
67144         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
67145         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
67146         DO 590 J=1,3
67147           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
67148           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
67149   590   CONTINUE
67150         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
67151         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
67152         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
67153           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
67154      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
67155           IF(MAZIP.NE.0) THEN
67156             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
67157      &      GOTO 560
67158           ENDIF
67159           IF(MAZIC.NE.0) THEN
67160             IF(MAZIC.EQ.N+2) CAD=-CAD
67161             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
67162      &      .LT.PYR(0)) GOTO 560
67163           ENDIF
67164         ENDIF
67165       ENDIF
67166  
67167 C...Azimuthal anisotropy due to interference with initial state partons.
67168       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
67169      &K(N+2,2).EQ.21)) THEN
67170         III=IM-NS-1
67171         IF(ISII(III).GE.1) THEN
67172           IAZIID=N+1
67173           IF(K(N+1,2).NE.21) IAZIID=N+2
67174           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
67175      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
67176           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
67177           IF(III.EQ.2) THEIID=PARU(1)-THEIID
67178           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
67179           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
67180           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
67181           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
67182           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
67183           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
67184      &    .LT.PYR(0)) GOTO 560
67185         ENDIF
67186       ENDIF
67187  
67188 C...Continue loop over partons that may branch, until none left.
67189       IF(IGM.GE.0) K(IM,1)=14
67190       N=N+NEP
67191       NEP=2
67192       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
67193         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
67194         IF(MSTU(21).GE.1) N=NS
67195         IF(MSTU(21).GE.1) RETURN
67196       ENDIF
67197       GOTO 290
67198  
67199 C...Set information on imagined shower initiator.
67200   600 IF(NPA.GE.2) THEN
67201         K(NS+1,1)=11
67202         K(NS+1,2)=94
67203         K(NS+1,3)=IP1
67204         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
67205         K(NS+1,4)=NS+2
67206         K(NS+1,5)=NS+1+NPA
67207         IIM=1
67208       ELSE
67209         IIM=0
67210       ENDIF
67211  
67212 C...Reconstruct string drawing information.
67213       DO 610 I=NS+1+IIM,N
67214         KQ=KCHG(PYCOMP(K(I,2)),2)
67215         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
67216           K(I,1)=1
67217         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
67218      &    IABS(K(I,2)).LE.18) THEN
67219           K(I,1)=1
67220         ELSEIF(K(I,1).LE.10) THEN
67221           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
67222           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
67223         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
67224           ID1=MOD(K(I,4),MSTU(5))
67225           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
67226           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
67227      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
67228           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
67229           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
67230           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
67231           K(ID1,4)=K(ID1,4)+MSTU(5)*I
67232           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
67233           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
67234           K(ID2,5)=K(ID2,5)+MSTU(5)*I
67235         ELSE
67236           ID1=MOD(K(I,4),MSTU(5))
67237           ID2=ID1+1
67238           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
67239           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
67240           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
67241             K(ID1,4)=K(ID1,4)+MSTU(5)*I
67242             K(ID1,5)=K(ID1,5)+MSTU(5)*I
67243           ELSE
67244             K(ID1,4)=0
67245             K(ID1,5)=0
67246           ENDIF
67247           K(ID2,4)=0
67248           K(ID2,5)=0
67249         ENDIF
67250   610 CONTINUE
67251  
67252 C...Transformation from CM frame.
67253       IF(NPA.EQ.1) THEN
67254         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
67255         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
67256         MSTU(33)=1
67257         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
67258       ELSEIF(NPA.EQ.2) THEN
67259         BEX=PS(1)/PS(4)
67260         BEY=PS(2)/PS(4)
67261         BEZ=PS(3)/PS(4)
67262         GA=PS(4)/PS(5)
67263         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
67264      &  /(1D0+GA)-P(IPA(1),4))
67265         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
67266      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
67267         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
67268         MSTU(33)=1
67269         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
67270       ELSE
67271         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
67272      &  PS(3)/PS(4))
67273         MSTU(33)=1
67274         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
67275       ENDIF
67276  
67277 C...Decay vertex of shower.
67278       DO 630 I=NS+1,N
67279         DO 620 J=1,5
67280           V(I,J)=V(IP1,J)
67281   620   CONTINUE
67282   630 CONTINUE
67283  
67284 C...Delete trivial shower, else connect initiators.
67285       IF(N.LE.NS+NPA+IIM) THEN
67286         N=NS
67287       ELSE
67288         DO 640 IP=1,NPA
67289           K(IPA(IP),1)=14
67290           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
67291           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
67292           K(NS+IIM+IP,3)=IPA(IP)
67293           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
67294           IF(K(NS+IIM+IP,1).NE.1) THEN
67295             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
67296             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
67297           ENDIF
67298   640   CONTINUE
67299       ENDIF
67300  
67301       RETURN
67302       END
67303  
67304 C*********************************************************************
67305  
67306 C...PYPTFS
67307 C...Generates pT-ordered timelike final-state parton showers.
67308  
67309 C...MODE defines how to find radiators and recoilers.
67310 C... = 0 : based on colour flow between undecayed partons.
67311 C... = 1 : for IPART <= NPARTD only consider primary partons,
67312 C...       whether decayed or not; else as above.
67313 C... = 2 : based on common history, whether decayed or not.
67314  
67315       SUBROUTINE PYPTFS(MODE,PTMAX,PTMIN,PTGEN)
67316  
67317 C...Double precision and integer declarations.
67318       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67319       IMPLICIT INTEGER(I-N)
67320       INTEGER PYK,PYCHGE,PYCOMP
67321 C...Parameter statement to help give large particle numbers.
67322       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
67323      &KEXCIT=4000000,KDIMEN=5000000)
67324 C...Parameter statement for maximum size of showers.
67325       PARAMETER (MAXNUR=1000)
67326 C...Commonblocks.
67327       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
67328       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
67329       COMMON/PYCTAG/NCT,MCT(4000,2)
67330       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67331       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67332       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
67333       COMMON/PYINT1/MINT(400),VINT(400)
67334       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYPARS/,
67335      &/PYINT1/
67336 C...Local arrays.
67337       DIMENSION IPOS(2*MAXNUR),IREC(2*MAXNUR),IFLG(2*MAXNUR),
67338      &ISCOL(2*MAXNUR),ISCHG(2*MAXNUR),PTSCA(2*MAXNUR),IMESAV(2*MAXNUR),
67339      &PT2SAV(2*MAXNUR),ZSAV(2*MAXNUR),SHTSAV(2*MAXNUR),
67340      &MESYS(MAXNUR,0:2),PSUM(5),DPT(5,4)
67341 C...Statement functions.
67342       SHAT(I,J)=(P(I,4)+P(J,4))**2-(P(I,1)+P(J,1))**2-
67343      &(P(I,2)+P(J,2))**2-(P(I,3)+P(J,3))**2
67344  
67345 C...Initial values. Check that valid system.
67346       PTGEN=0D0
67347       IF(MSTJ(41).NE.1.AND.MSTJ(41).NE.2.AND.MSTJ(41).NE.11.AND.
67348      &MSTJ(41).NE.12) RETURN
67349       IF(NPART.LE.0) THEN
67350         CALL PYERRM(2,'(PYPTFS:) showering system too small')
67351         RETURN
67352       ENDIF
67353       PT2CMX=PTMAX**2
67354  
67355 C...Mass thresholds and Lambda for QCD evolution.
67356       PMB=PMAS(5,1)
67357       PMC=PMAS(4,1)
67358       ALAM5=PARJ(81)
67359       ALAM4=ALAM5*(PMB/ALAM5)**(2D0/25D0)
67360       ALAM3=ALAM4*(PMC/ALAM4)**(2D0/27D0)
67361       PMBS=PMB**2
67362       PMCS=PMC**2
67363       ALAM5S=ALAM5**2
67364       ALAM4S=ALAM4**2
67365       ALAM3S=ALAM3**2
67366  
67367 C...Cutoff scale for QCD evolution. Starting pT2.
67368       NFLAV=MAX(0,MIN(5,MSTJ(45)))
67369       PT0C=0.5D0*PARJ(82)
67370       PT2CMN=MAX(PTMIN,PT0C,1.1D0*ALAM3)**2
67371  
67372 C...Parameters for QED evolution.
67373       AEM2PI=PARU(101)/PARU(2)
67374       PT0EQ=0.5D0*PARJ(83)
67375       PT0EL=0.5D0*PARJ(90)
67376
67377 C...Reset. Remove irrelevant colour tags.
67378       NEVOL=0
67379       DO 100 J=1,4
67380         PSUM(J)=0D0
67381   100 CONTINUE
67382       DO 110 I=MINT(84)+1,N
67383         IF(K(I,2).GT.0.AND.K(I,2).LT.6) THEN
67384           K(I,5)=0
67385           MCT(I,2)=0
67386         ENDIF
67387         IF(K(I,2).LT.0.AND.K(I,2).GT.-6) THEN
67388           K(I,4)=0
67389           MCT(I,1)=0
67390         ENDIF
67391   110 CONTINUE
67392       NPARTS=NPART
67393  
67394 C...Begin loop to set up showering partons. Sum four-momenta.
67395       DO 210 IP=1,NPART
67396         I=IPART(IP)
67397         IF(MODE.NE.1.OR.I.GT.NPARTD) THEN
67398           IF(K(I,1).GT.10) GOTO 210
67399         ELSEIF(K(I,3).GT.MINT(84)) THEN
67400           IF(K(I,3).GT.MINT(84)+2) GOTO 210
67401         ELSE
67402           IF(K(K(I,3),3).GT.MINT(83)+6) GOTO 210
67403         ENDIF
67404         DO 120 J=1,4
67405           PSUM(J)=PSUM(J)+P(I,J)
67406   120   CONTINUE
67407  
67408 C...Find colour and charge, but skip diquarks.
67409         IF(IABS(K(I,2)).GT.1000.AND.IABS(K(I,2)).LT.10000) GOTO 210
67410         KCOL=ISIGN(KCHG(PYCOMP(K(I,2)),2),K(I,2))
67411         KCHA=ISIGN(KCHG(PYCOMP(K(I,2)),1),K(I,2))
67412  
67413 C...Either colour or anticolour charge radiates; for gluon both.
67414         DO 160 JSGCOL=1,-1,-2
67415           IF(KCOL.EQ.JSGCOL.OR.KCOL.EQ.2) THEN
67416             JCOL=4+(1-JSGCOL)/2
67417             JCOLR=9-JCOL
67418  
67419 C...Basic info about radiating parton.
67420             NEVOL=NEVOL+1
67421             IPOS(NEVOL)=I
67422             IFLG(NEVOL)=0
67423             ISCOL(NEVOL)=JSGCOL
67424             ISCHG(NEVOL)=0
67425             PTSCA(NEVOL)=PTPART(IP)
67426  
67427 C...Begin search for colour recoiler when MODE = 0 or 1.
67428             IF(MODE.LE.1) THEN
67429 C...Find sister with matching anticolour to the radiating parton.
67430               IROLD=I
67431               IRNEW=K(IROLD,JCOL)/MSTU(5)
67432               MOVE=1
67433  
67434 C...The following will add MCT colour tracing for unprepped events
67435 C...If not done, trace Les Houches colour tags for this dipole
67436 C              IF (MCT(I,JCOL-3).EQ.0) THEN 
67437 C                CALL PYCTTR(I,JCOL,INEW)
67438 C...Clean up mother/daughter 'read' tags set by PYCTTR
67439 C                DO 125 IR=1,N
67440 C                  K(IR,4)=MOD(K(IR,4),MSTU(5)**2)
67441 C                  K(IR,5)=MOD(K(IR,5),MSTU(5)**2)
67442 C 125            CONTINUE
67443 C              ENDIF
67444
67445 C...Skip radiation off loose colour ends.
67446   130         IF(IRNEW.EQ.0) THEN
67447                 NEVOL=NEVOL-1
67448                 GOTO 160
67449  
67450 C...Optionally skip radiation on dipole to beam remnant.
67451               ELSEIF(MSTP(72).LE.1.AND.IRNEW.GT.MINT(53)) THEN
67452                 NEVOL=NEVOL-1
67453                 GOTO 160
67454  
67455 C...For now always skip radiation on dipole to junction.
67456               ELSEIF(K(IRNEW,2).EQ.88) THEN
67457                 NEVOL=NEVOL-1
67458                 GOTO 160
67459  
67460 C...For MODE=1: if reached primary then done.
67461               ELSEIF(MODE.EQ.1.AND.IRNEW.GT.MINT(84)+2.AND.
67462      &        IRNEW.LE.NPARTD) THEN
67463  
67464 C...If sister stable and points back then done.
67465               ELSEIF(MOVE.EQ.1.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
67466      &        THEN
67467                 IF(K(IRNEW,1).LT.10) THEN
67468  
67469 C...If sister unstable then go to her daughter.
67470                 ELSE
67471                   IROLD=IRNEW
67472                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67473                   MOVE=2
67474                   GOTO 130
67475                ENDIF
67476  
67477 C...If found mother then look for aunt.
67478               ELSEIF(MOVE.EQ.1.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
67479      &        IROLD) THEN
67480                 IROLD=IRNEW
67481                 IRNEW=K(IROLD,JCOL)/MSTU(5)
67482                 GOTO 130
67483  
67484 C...If daughter stable then done.
67485               ELSEIF(MOVE.EQ.2.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
67486      &        THEN
67487                 IF(K(IRNEW,1).LT.10) THEN
67488  
67489 C...If daughter unstable then go to granddaughter.
67490                 ELSE
67491                   IROLD=IRNEW
67492                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67493                   MOVE=2
67494                   GOTO 130
67495                 ENDIF
67496  
67497 C...If daughter points to another daughter then done or move up.
67498               ELSEIF(MOVE.EQ.2.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
67499      &        IROLD) THEN
67500                 IF(K(IRNEW,1).LT.10) THEN
67501                 ELSE
67502                   IROLD=IRNEW
67503                   IRNEW=K(IRNEW,JCOL)/MSTU(5)
67504                   MOVE=1
67505                   GOTO 130
67506                 ENDIF
67507               ENDIF
67508  
67509 C...Begin search for colour recoiler when MODE = 2.
67510             ELSE
67511               IROLD=I
67512               IRNEW=K(IROLD,JCOL)/MSTU(5)
67513   140         IF(K(IRNEW,JCOLR)/MSTU(5).NE.IROLD) THEN
67514 C...Step up to mother if radiating parton already branched.
67515                 IF(K(IRNEW,2).EQ.K(IROLD,2)) THEN
67516                   IROLD=IRNEW
67517                   IRNEW=K(IROLD,JCOL)/MSTU(5)
67518                   GOTO 140
67519 C...Pick sister by history if no anticolour available.
67520                 ELSE
67521                   IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
67522                     IRNEW=IROLD-1
67523                   ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3))
67524      &            THEN
67525                     IRNEW=IROLD+1
67526 C...Last resort: pick at random among other primaries.
67527                   ELSE
67528                     ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
67529                     IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
67530                   ENDIF
67531                 ENDIF
67532               ENDIF
67533 C...Trace down if sister branched.
67534   150         IF(K(IRNEW,1).GT.10) THEN
67535                 IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
67536                 GOTO 150
67537               ENDIF
67538             ENDIF
67539  
67540 C...Now found other end of colour dipole.
67541             IREC(NEVOL)=IRNEW
67542           ENDIF
67543   160   CONTINUE
67544  
67545 C...Also electrical charge may radiate; so far only quarks and leptons.
67546         IF((MSTJ(41).EQ.2.OR.MSTJ(41).EQ.12).AND.KCHA.NE.0.AND.
67547      &  IABS(K(I,2)).LE.18) THEN
67548  
67549 C...Basic info about radiating parton.
67550           NEVOL=NEVOL+1
67551           IPOS(NEVOL)=I
67552           IFLG(NEVOL)=0
67553           ISCOL(NEVOL)=0
67554           ISCHG(NEVOL)=KCHA
67555           PTSCA(NEVOL)=PTPART(IP)
67556  
67557 C...Pick nearest (= smallest invariant mass) charged particle
67558 C...as recoiler when MODE = 0 or 1 (but for latter among primaries).
67559           IF(MODE.LE.1) THEN
67560             IRNEW=0
67561             PM2MIN=VINT(2)
67562             DO 170 IP2=1,NPART+N-MINT(53)
67563               IF(IP2.EQ.IP) GOTO 170
67564               IF(IP2.LE.NPART) THEN
67565                 I2=IPART(IP2)
67566                 IF(MODE.NE.1.OR.I2.GT.NPARTD) THEN
67567                   IF(K(I2,1).GT.10) GOTO 170
67568                 ELSEIF(K(I2,3).GT.MINT(84)) THEN
67569                   IF(K(I2,3).GT.MINT(84)+2) GOTO 170
67570                 ELSE
67571                   IF(K(K(I2,3),3).GT.MINT(83)+6) GOTO 170
67572                 ENDIF
67573               ELSE
67574                 I2=MINT(53)+IP2-NPART
67575               ENDIF
67576               IF(KCHG(PYCOMP(K(I2,2)),1).EQ.0) GOTO 170
67577               PM2INV=(P(I,4)+P(I2,4))**2-(P(I,1)+P(I2,1))**2-
67578      &        (P(I,2)+P(I2,2))**2-(P(I,3)+P(I2,3))**2
67579               IF(PM2INV.LT.PM2MIN) THEN
67580                 IRNEW=I2
67581                 PM2MIN=PM2INV
67582               ENDIF
67583   170       CONTINUE
67584             IF(IRNEW.EQ.0) THEN
67585               NEVOL=NEVOL-1
67586               GOTO 210
67587             ENDIF
67588  
67589 C...Begin search for charge recoiler when MODE = 2.
67590           ELSE
67591             IROLD=I
67592 C...Pick sister by history; step up if parton already branched.
67593   180       IF(K(IROLD,3).GT.0.AND.K(K(IROLD,3),2).EQ.K(IROLD,2)) THEN
67594               IROLD=K(IROLD,3)
67595               GOTO 180
67596             ENDIF
67597             IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
67598               IRNEW=IROLD-1
67599             ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3)) THEN
67600               IRNEW=IROLD+1
67601 C...Last resort: pick at random among other primaries.
67602             ELSE
67603               ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
67604               IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
67605             ENDIF
67606 C...Trace down if sister branched.
67607   190       IF(K(IRNEW,1).GT.10) THEN
67608               DO 200 IR=IRNEW+1,N
67609                 IF(K(IR,3).EQ.IRNEW.AND.K(IR,2).EQ.K(IRNEW,2)) THEN
67610                   IRNEW=IR
67611                   GOTO 190
67612                 ENDIF
67613   200         CONTINUE
67614             ENDIF
67615           ENDIF
67616           IREC(NEVOL)=IRNEW
67617         ENDIF
67618  
67619 C...End loop to set up showering partons. System invariant mass.
67620   210 CONTINUE
67621       IF(NEVOL.LE.0) RETURN
67622       PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
67623  
67624 C...Check if 3-jet matrix elements to be used.
67625       M3JC=0
67626       ALPHA=0.5D0
67627       NMESYS=0
67628       IF(MSTJ(47).GE.1) THEN
67629  
67630 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
67631         KFSRCE=0
67632         IPART1=K(IPART(1),3)
67633         IPART2=K(IPART(2),3)
67634   220   IF(IPART1.EQ.IPART2.AND.IPART1.GT.0) THEN
67635           KFSRCE=IABS(K(IPART1,2))
67636         ELSEIF(IPART1.GT.IPART2.AND.IPART2.GT.0) THEN
67637           IPART1=K(IPART1,3)
67638           GOTO 220
67639         ELSEIF(IPART2.GT.IPART1.AND.IPART1.GT.0) THEN
67640           IPART2=K(IPART2,3)
67641           GOTO 220
67642         ENDIF
67643         ITYPES=0
67644         IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
67645         IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
67646         IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
67647         IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
67648         IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
67649         IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
67650         IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
67651         IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
67652  
67653 C...Identify two primary showerers.
67654         KFLA1=IABS(K(IPART(1),2))
67655         ITYPE1=0
67656         IF(KFLA1.GE.1.AND.KFLA1.LE.8) ITYPE1=1
67657         IF(KFLA1.GE.KSUSY1+1.AND.KFLA1.LE.KSUSY1+8) ITYPE1=2
67658         IF(KFLA1.GE.KSUSY2+1.AND.KFLA1.LE.KSUSY2+8) ITYPE1=2
67659         IF(KFLA1.GE.21.AND.KFLA1.LE.24) ITYPE1=3
67660         IF(KFLA1.GE.32.AND.KFLA1.LE.34) ITYPE1=3
67661         IF(KFLA1.EQ.25.OR.(KFLA1.GE.35.AND.KFLA1.LE.37)) ITYPE1=4
67662         IF(KFLA1.GE.KSUSY1+22.AND.KFLA1.LE.KSUSY1+37) ITYPE1=5
67663         IF(KFLA1.EQ.KSUSY1+21) ITYPE1=6
67664         KFLA2=IABS(K(IPART(2),2))
67665         ITYPE2=0
67666         IF(KFLA2.GE.1.AND.KFLA2.LE.8) ITYPE2=1
67667         IF(KFLA2.GE.KSUSY1+1.AND.KFLA2.LE.KSUSY1+8) ITYPE2=2
67668         IF(KFLA2.GE.KSUSY2+1.AND.KFLA2.LE.KSUSY2+8) ITYPE2=2
67669         IF(KFLA2.GE.21.AND.KFLA2.LE.24) ITYPE2=3
67670         IF(KFLA2.GE.32.AND.KFLA2.LE.34) ITYPE2=3
67671         IF(KFLA2.EQ.25.OR.(KFLA2.GE.35.AND.KFLA2.LE.37)) ITYPE2=4
67672         IF(KFLA2.GE.KSUSY1+22.AND.KFLA2.LE.KSUSY1+37) ITYPE2=5
67673         IF(KFLA2.EQ.KSUSY1+21) ITYPE2=6
67674  
67675 C...Order of showerers. Presence of gluino.
67676         ITYPMN=MIN(ITYPE1,ITYPE2)
67677         ITYPMX=MAX(ITYPE1,ITYPE2)
67678         IORD=1
67679         IF(ITYPE1.GT.ITYPE2) IORD=2
67680         IGLUI=0
67681         IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
67682  
67683 C...Require exactly two primary showerers for ME corrections.
67684         NPRIM=0
67685         IF(IPART1.GT.0) THEN
67686           DO 230 I=1,N
67687             IF(K(I,3).EQ.IPART1.AND.K(I,2).NE.K(IPART1,2)) NPRIM=NPRIM+1
67688   230     CONTINUE
67689         ENDIF
67690         IF(NPRIM.NE.2) THEN
67691  
67692 C...Predetermined and default matrix element kinds.
67693         ELSEIF(MSTJ(38).NE.0) THEN
67694           M3JC=MSTJ(38)
67695           ALPHA=PARJ(80)
67696           MSTJ(38)=0
67697         ELSEIF(MSTJ(47).GE.6) THEN
67698           M3JC=MSTJ(47)
67699         ELSE
67700           ICLASS=1
67701           ICOMBI=4
67702  
67703 C...Vector/axial vector -> q + qbar; q -> q + V.
67704           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
67705      &    ITYPES.EQ.3)) THEN
67706             ICLASS=2
67707             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
67708               ICOMBI=1
67709             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
67710      &      K(IPART(1),2)+K(IPART(2),2).EQ.0)) THEN
67711 C...gamma*/Z0: assume e+e- initial state if unknown.
67712               EI=-1D0
67713               IF(KFSRCE.EQ.23) THEN
67714                 IANNFL=IPART1
67715                 IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
67716                 IF(IANNFL.GT.0) THEN
67717                   IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
67718                 ENDIF
67719                 IF(IANNFL.NE.0) THEN
67720                   KANNFL=IABS(K(IANNFL,2))
67721                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
67722                 ENDIF
67723               ENDIF
67724               AI=SIGN(1D0,EI+0.1D0)
67725               VI=AI-4D0*EI*PARU(102)
67726               EF=KCHG(KFLA1,1)/3D0
67727               AF=SIGN(1D0,EF+0.1D0)
67728               VF=AF-4D0*EF*PARU(102)
67729               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
67730               SH=PSUM(5)**2
67731               SQMZ=PMAS(23,1)**2
67732               SQWZ=PSUM(5)*PMAS(23,2)
67733               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
67734               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
67735      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
67736               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
67737               ICOMBI=3
67738               ALPHA=VECT/(VECT+AXIV)
67739             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
67740               ICOMBI=4
67741             ENDIF
67742 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
67743           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
67744             ICLASS=2
67745           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
67746      &    ITYPES.EQ.1)) THEN
67747             ICLASS=3
67748  
67749 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
67750           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
67751             ICLASS=4
67752             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
67753               ICOMBI=1
67754             ELSEIF(KFSRCE.EQ.36) THEN
67755               ICOMBI=2
67756             ENDIF
67757           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
67758      &    ITYPES.EQ.1)) THEN
67759             ICLASS=5
67760  
67761 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
67762           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
67763      &    ITYPES.EQ.3)) THEN
67764             ICLASS=6
67765           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
67766      &    ITYPES.EQ.2)) THEN
67767             ICLASS=7
67768           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
67769             ICLASS=8
67770           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
67771      &    ITYPES.EQ.2)) THEN
67772             ICLASS=9
67773  
67774 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
67775           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
67776      &    ITYPES.EQ.5)) THEN
67777             ICLASS=10
67778           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
67779      &    ITYPES.EQ.2)) THEN
67780             ICLASS=11
67781           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
67782      &    ITYPES.EQ.1)) THEN
67783             ICLASS=12
67784  
67785 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
67786           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
67787             ICLASS=13
67788           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
67789      &    ITYPES.EQ.2)) THEN
67790             ICLASS=14
67791           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
67792      &    ITYPES.EQ.1)) THEN
67793             ICLASS=15
67794  
67795 C...g -> ~g + ~g (eikonal approximation).
67796           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
67797             ICLASS=16
67798           ENDIF
67799           M3JC=5*ICLASS+ICOMBI
67800         ENDIF
67801  
67802 C...Store pair that together define matrix element treatment.
67803         IF(M3JC.NE.0) THEN
67804           NMESYS=1
67805           MESYS(NMESYS,0)=M3JC
67806           MESYS(NMESYS,1)=IPART(1)
67807           MESYS(NMESYS,2)=IPART(2)
67808         ENDIF
67809  
67810 C...Store qqbar or l+l- pairs for QED radiation.
67811         IF(KFLA1.LE.18.AND.KFLA2.LE.18) THEN
67812           NMESYS=NMESYS+1
67813           MESYS(NMESYS,0)=101
67814           IF(K(IPART(1),2)+K(IPART(2),2).EQ.0) MESYS(NMESYS,0)=102
67815           MESYS(NMESYS,1)=IPART(1)
67816           MESYS(NMESYS,2)=IPART(2)
67817         ENDIF
67818  
67819 C...Store other qqbar/l+l- pairs from g/gamma branchings.
67820         DO 270 I1=1,N
67821           IF(K(I1,1).GT.10.OR.IABS(K(I1,2)).GT.18) GOTO 270
67822           I1M=K(I1,3)
67823   240     IF(I1M.GT.0.AND.K(I1M,2).EQ.K(I1,2)) THEN
67824             I1M=K(I1M,3)
67825             GOTO 240
67826           ENDIF
67827 C...Move up this check to avoid out-of-bounds.
67828           IF(I1M.EQ.0) GOTO 270
67829           IF(K(I1M,2).NE.21.AND.K(I1M,2).NE.22) GOTO 270
67830           DO 260 I2=I1+1,N
67831             IF(K(I2,1).GT.10.OR.K(I2,2)+K(I1,2).NE.0) GOTO 260
67832             I2M=K(I2,3)
67833   250       IF(I2M.GT.0.AND.K(I2M,2).EQ.K(I2,2)) THEN
67834               I2M=K(I2M,3)
67835               GOTO 250
67836             ENDIF
67837             IF(I1M.EQ.I2M.AND.I1M.GT.0) THEN
67838               NMESYS=NMESYS+1
67839               MESYS(NMESYS,0)=66
67840               MESYS(NMESYS,1)=I1
67841               MESYS(NMESYS,2)=I2
67842               NMESYS=NMESYS+1
67843               MESYS(NMESYS,0)=102
67844               MESYS(NMESYS,1)=I1
67845               MESYS(NMESYS,2)=I2
67846             ENDIF
67847   260     CONTINUE
67848   270   CONTINUE
67849       ENDIF
67850  
67851 C..Loopback point for counting number of emissions.
67852       NGEN=0
67853   280 NGEN=NGEN+1
67854  
67855 C...Begin loop to evolve all existing partons, if required.
67856   290 IMX=0
67857       PT2MX=0D0
67858       DO 360 IEVOL=1,NEVOL
67859         IF(IFLG(IEVOL).EQ.0) THEN
67860  
67861 C...Basic info on radiator and recoil.
67862           I=IPOS(IEVOL)
67863           IR=IREC(IEVOL)
67864           SHT=SHAT(I,IR)
67865           PM2I=P(I,5)**2
67866           PM2R=P(IR,5)**2
67867  
67868 C...Invariant mass of "dipole".Starting value for pT evolution.
67869           SHTCOR=(SQRT(SHT)-P(IR,5))**2-PM2I
67870           PT2=MIN(PT2CMX,0.25D0*SHTCOR,PTSCA(IEVOL)**2)
67871  
67872 C...Case of evolution by QCD branching.
67873           IF(ISCOL(IEVOL).NE.0) THEN
67874  
67875 C...Parton-by-parton maximum scale from initial conditions.
67876           IF(MSTP(72).EQ.0) THEN
67877             DO 300 IPRT=1,NPARTS
67878               IF(IR.EQ.IPART(IPRT)) PT2=MIN(PT2,PTPART(IPRT)**2)
67879   300       CONTINUE
67880           ENDIF
67881  
67882 C...If kinematically impossible then do not evolve.
67883             IF(PT2.LT.PT2CMN) THEN
67884               IFLG(IEVOL)=-1
67885               GOTO 360
67886             ENDIF
67887  
67888 C...Check if part of system for which ME corrections should be applied.
67889             IMESYS=0
67890             DO 310 IME=1,NMESYS
67891               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
67892      &        MESYS(IME,0).LT.100) IMESYS=IME
67893   310       CONTINUE
67894  
67895 C...Special flag for colour octet states.
67896             MOCT=0
67897             IF(K(I,2).EQ.21) MOCT=1
67898             IF(K(I,2).EQ.KSUSY1+21) MOCT=2
67899  
67900 C...Upper estimate for matrix element weighting and colour factor.
67901 C...Note that g->gg and g->qqbar is split on two sides = "dipoles".
67902             WTPSGL=2D0
67903             COLFAC=4D0/3D0
67904             IF(MOCT.GE.1) COLFAC=3D0/2D0
67905             IF(IGLUI.EQ.1.AND.IMESYS.EQ.1.AND.MOCT.EQ.0) COLFAC=3D0
67906             WTPSQQ=0.5D0*0.5D0*NFLAV
67907  
67908 C...Determine overestimated z range: switch at c and b masses.
67909   320       IZRG=1
67910             PT2MNE=PT2CMN
67911             B0=27D0/6D0
67912             ALAMS=ALAM3S
67913             IF(PT2.GT.1.01D0*PMCS) THEN
67914               IZRG=2
67915               PT2MNE=PMCS
67916               B0=25D0/6D0
67917               ALAMS=ALAM4S
67918             ENDIF
67919             IF(PT2.GT.1.01D0*PMBS) THEN
67920               IZRG=3
67921               PT2MNE=PMBS
67922               B0=23D0/6D0
67923               ALAMS=ALAM5S
67924             ENDIF
67925             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2MNE/SHTCOR))
67926             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2MNE/SHTCOR
67927  
67928 C...Find evolution coefficients for q->qg/g->gg and g->qqbar.
67929             EVEMGL=WTPSGL*COLFAC*LOG(1D0/ZMNCUT-1D0)/B0
67930             EVCOEF=EVEMGL
67931             IF(MOCT.EQ.1) THEN
67932               EVEMQQ=WTPSQQ*(1D0-2D0*ZMNCUT)/B0
67933               EVCOEF=EVCOEF+EVEMQQ
67934             ENDIF
67935  
67936 C...Pick pT2 (in overestimated z range).
67937   330       PT2=ALAMS*(PT2/ALAMS)**(PYR(0)**(1D0/EVCOEF))
67938  
67939 C...Loopback if crossed c/b mass thresholds.
67940             IF(IZRG.EQ.3.AND.PT2.LT.PMBS) THEN
67941               PT2=PMBS
67942               GOTO 320
67943             ENDIF
67944             IF(IZRG.EQ.2.AND.PT2.LT.PMCS) THEN
67945               PT2=PMCS
67946               GOTO 320
67947             ENDIF
67948  
67949 C...Finish if below lower cutoff.
67950             IF(PT2.LT.PT2CMN) THEN
67951               IFLG(IEVOL)=-1
67952               GOTO 360
67953             ENDIF
67954  
67955 C...Pick kind of branching: q->qg/g->gg/X->Xg or g->qqbar.
67956             IFLAG=1
67957             IF(MOCT.EQ.1.AND.EVEMGL.LT.PYR(0)*EVCOEF) IFLAG=2
67958  
67959 C...Pick z: dz/(1-z) or dz.
67960             IF(IFLAG.EQ.1) THEN
67961               Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
67962             ELSE
67963               Z=ZMNCUT+PYR(0)*(1D0-2D0*ZMNCUT)
67964             ENDIF
67965  
67966 C...Loopback if outside allowed range for given pT2.
67967             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
67968             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
67969             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 330
67970             PM2=PM2I+PT2/(Z*(1D0-Z))
67971             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 330
67972  
67973 C...No weighting for primary partons; to be done later on.
67974             IF(IMESYS.GT.0) THEN
67975  
67976 C...Weighting of q->qg/X->Xg branching.
67977             ELSEIF(IFLAG.EQ.1.AND.MOCT.NE.1) THEN
67978               IF(1D0+Z**2.LT.WTPSGL*PYR(0)) GOTO 330
67979  
67980 C...Weighting of g->gg branching.
67981             ELSEIF(IFLAG.EQ.1) THEN
67982               IF(1D0+Z**3.LT.WTPSGL*PYR(0)) GOTO 330
67983  
67984 C...Flavour choice and weighting of g->qqbar branching.
67985             ELSE
67986               KFQ=MIN(5,1+INT(NFLAV*PYR(0)))
67987               PMQ=PMAS(KFQ,1)
67988               ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
67989               WTME=ROOTQQ*(Z**2+(1D0-Z)**2)
67990               IF(WTME.LT.PYR(0)) GOTO 330
67991               IFLAG=10+KFQ
67992             ENDIF
67993  
67994 C...Case of evolution by QED branching.
67995           ELSEIF(ISCHG(IEVOL).NE.0) THEN
67996  
67997 C...If kinematically impossible then do not evolve.
67998             PT2EMN=PT0EQ**2
67999             IF(IABS(K(I,2)).GT.10) PT2EMN=PT0EL**2
68000             IF(PT2.LT.PT2EMN) THEN
68001               IFLG(IEVOL)=-1
68002               GOTO 360
68003             ENDIF
68004  
68005 C...Check if part of system for which ME corrections should be applied.
68006            IMESYS=0
68007             DO 340 IME=1,NMESYS
68008               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
68009      &        MESYS(IME,0).GT.100) IMESYS=IME
68010   340      CONTINUE
68011  
68012 C...Charge. Matrix element weighting factor.
68013             CHG=ISCHG(IEVOL)/3D0
68014             WTPSGA=2D0
68015  
68016 C...Determine overestimated z range. Find evolution coefficient.
68017             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2EMN/SHTCOR))
68018             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2EMN/SHTCOR
68019             EVCOEF=AEM2PI*CHG**2*WTPSGA*LOG(1D0/ZMNCUT-1D0)
68020  
68021 C...Pick pT2 (in overestimated z range).
68022   350       PT2=PT2*PYR(0)**(1D0/EVCOEF)
68023  
68024 C...Finish if below lower cutoff.
68025             IF(PT2.LT.PT2EMN) THEN
68026               IFLG(IEVOL)=-1
68027               GOTO 360
68028             ENDIF
68029  
68030 C...Pick z: dz/(1-z).
68031             Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
68032  
68033 C...Loopback if outside allowed range for given pT2.
68034             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
68035             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
68036             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 350
68037             PM2=PM2I+PT2/(Z*(1D0-Z))
68038             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 350
68039  
68040 C...Weighting by branching kernel, except if ME weighting later.
68041             IF(IMESYS.EQ.0) THEN
68042               IF(1D0+Z**2.LT.WTPSGA*PYR(0)) GOTO 350
68043             ENDIF
68044             IFLAG=3
68045           ENDIF
68046  
68047 C...Save acceptable branching.
68048           IFLG(IEVOL)=IFLAG
68049           IMESAV(IEVOL)=IMESYS
68050           PT2SAV(IEVOL)=PT2
68051           ZSAV(IEVOL)=Z
68052           SHTSAV(IEVOL)=SHT
68053         ENDIF
68054  
68055 C...Check if branching has highest pT.
68056         IF(IFLG(IEVOL).GE.1.AND.PT2SAV(IEVOL).GT.PT2MX) THEN
68057           IMX=IEVOL
68058           PT2MX=PT2SAV(IEVOL)
68059         ENDIF
68060   360 CONTINUE
68061  
68062 C...Finished if no more branchings to be done.
68063       IF(IMX.EQ.0) GOTO 480
68064  
68065 C...Restore info on hardest branching to be processed.
68066       I=IPOS(IMX)
68067       IR=IREC(IMX)
68068       KCOL=ISCOL(IMX)
68069       KCHA=ISCHG(IMX)
68070       IMESYS=IMESAV(IMX)
68071       PT2=PT2SAV(IMX)
68072       Z=ZSAV(IMX)
68073       SHT=SHTSAV(IMX)
68074       PM2I=P(I,5)**2
68075       PM2R=P(IR,5)**2
68076       PM2=PM2I+PT2/(Z*(1D0-Z))
68077  
68078 C...Special flag for colour octet states.
68079       MOCT=0
68080       IF(K(I,2).EQ.21) MOCT=1
68081       IF(K(I,2).EQ.KSUSY1+21) MOCT=2
68082  
68083 C...Restore further info for g->qqbar branching.
68084       KFQ=0
68085       IF(IFLG(IMX).GT.10) THEN
68086         KFQ=IFLG(IMX)-10
68087         PMQ=PMAS(KFQ,1)
68088         ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
68089       ENDIF
68090  
68091 C...For branching g include azimuthal asymmetries from polarization.
68092       ASYPOL=0D0
68093       IF(MOCT.EQ.1.AND.MOD(MSTJ(46),2).EQ.1) THEN
68094 C...Trace grandmother via intermediate recoil copies.
68095         KFGM=0
68096         IM=I
68097   370   IF(K(IM,3).NE.K(IM-1,3).AND.K(IM,3).NE.K(IM+1,3).AND.
68098      &  K(IM,3).GT.0) THEN
68099           IM=K(IM,3)
68100           IF(IM.GT.MINT(84)) GOTO 370
68101         ENDIF
68102         IGM=K(IM,3)
68103         IF(IGM.GT.MINT(84).AND.IGM.LT.IM.AND.IM.LE.I)
68104      &  KFGM=IABS(K(IGM,2))
68105 C...Define approximate energy sharing by identifying aunt.
68106         IAU=IM+1
68107         IF(IAU.GT.N-3.OR.K(IAU,3).NE.IGM) IAU=IM-1
68108         IF(KFGM.NE.0.AND.(KFGM.LE.6.OR.KFGM.EQ.21)) THEN
68109           ZOLD=P(IM,4)/(P(IM,4)+P(IAU,4))
68110 C...Coefficient from gluon production.
68111           IF(KFGM.LE.6) THEN
68112             ASYPOL=2D0*(1D0-ZOLD)/(1D0+(1D0-ZOLD)**2)
68113           ELSE
68114             ASYPOL=((1D0-ZOLD)/(1D0-ZOLD*(1D0-ZOLD)))**2
68115           ENDIF
68116 C...Coefficient from gluon decay.
68117           IF(KFQ.EQ.0) THEN
68118             ASYPOL=ASYPOL*(Z*(1D0-Z)/(1D0-Z*(1D0-Z)))**2
68119           ELSE
68120             ASYPOL=-ASYPOL*2D0*Z*(1D0-Z)/(1D0-2D0*Z*(1D0-Z))
68121           ENDIF
68122         ENDIF
68123       ENDIF
68124  
68125 C...Create new slots for branching products and recoil.
68126       INEW=N+1
68127       IGNEW=N+2
68128       IRNEW=N+3
68129       N=N+3
68130  
68131 C...Set status, flavour and mother of new ones.
68132       K(INEW,1)=K(I,1)
68133       K(IGNEW,1)=3
68134       IF(KCHA.NE.0)  K(IGNEW,1)=1
68135       K(IRNEW,1)=K(IR,1)
68136       IF(KFQ.EQ.0) THEN
68137         K(INEW,2)=K(I,2)
68138         K(IGNEW,2)=21
68139         IF(KCHA.NE.0)  K(IGNEW,2)=22
68140       ELSE
68141         K(INEW,2)=-ISIGN(KFQ,KCOL)
68142         K(IGNEW,2)=-K(INEW,2)
68143       ENDIF
68144       K(IRNEW,2)=K(IR,2)
68145       K(INEW,3)=I
68146       K(IGNEW,3)=I
68147       K(IRNEW,3)=IR
68148  
68149 C...Find rest frame and angles of branching+recoil.
68150       DO 380 J=1,5
68151         P(INEW,J)=P(I,J)
68152         P(IGNEW,J)=0D0
68153         P(IRNEW,J)=P(IR,J)
68154   380 CONTINUE
68155       BETAX=(P(INEW,1)+P(IRNEW,1))/(P(INEW,4)+P(IRNEW,4))
68156       BETAY=(P(INEW,2)+P(IRNEW,2))/(P(INEW,4)+P(IRNEW,4))
68157       BETAZ=(P(INEW,3)+P(IRNEW,3))/(P(INEW,4)+P(IRNEW,4))
68158       CALL PYROBO(INEW,IRNEW,0D0,0D0,-BETAX,-BETAY,-BETAZ)
68159       PHI=PYANGL(P(INEW,1),P(INEW,2))
68160       THETA=PYANGL(P(INEW,3),SQRT(P(INEW,1)**2+P(INEW,2)**2))
68161  
68162 C...Derive kinematics of branching: generics (like g->gg).
68163       DO 390 J=1,4
68164         P(INEW,J)=0D0
68165         P(IRNEW,J)=0D0
68166   390 CONTINUE
68167       PEM=0.5D0*(SHT+PM2-PM2R)/SQRT(SHT)
68168       PZM=0.5D0*SQRT(MAX(0D0,(SHT-PM2-PM2R)**2-4D0*PM2*PM2R)/SHT)
68169       PT2COR=PM2*(PEM**2*Z*(1D0-Z)-0.25D0*PM2)/PZM**2
68170       PTCOR=SQRT(MAX(0D0,PT2COR))
68171       PZN=(PEM**2*Z-0.5D0*PM2)/PZM
68172       PZG=(PEM**2*(1D0-Z)-0.5D0*PM2)/PZM
68173 C...Specific kinematics reduction for q->qg with m_q > 0.
68174       IF(MOCT.NE.1) THEN
68175         PTCOR=(1D0-PM2I/PM2)*PTCOR
68176         PZN=PZN+PM2I*PZG/PM2
68177         PZG=(1D0-PM2I/PM2)*PZG
68178 C...Specific kinematics reduction for g->qqbar with m_q > 0.
68179       ELSEIF(KFQ.NE.0) THEN
68180         P(INEW,5)=PMQ
68181         P(IGNEW,5)=PMQ
68182         PTCOR=ROOTQQ*PTCOR
68183         PZN=0.5D0*((1D0+ROOTQQ)*PZN+(1D0-ROOTQQ)*PZG)
68184         PZG=PZM-PZN
68185       ENDIF
68186  
68187 C...Pick phi and construct kinematics of branching.
68188   400 PHIROT=PARU(2)*PYR(0)
68189       P(INEW,1)=PTCOR*COS(PHIROT)
68190       P(INEW,2)=PTCOR*SIN(PHIROT)
68191       P(INEW,3)=PZN
68192       P(INEW,4)=SQRT(PTCOR**2+P(INEW,3)**2+P(INEW,5)**2)
68193       P(IGNEW,1)=-P(INEW,1)
68194       P(IGNEW,2)=-P(INEW,2)
68195       P(IGNEW,3)=PZG
68196       P(IGNEW,4)=SQRT(PTCOR**2+P(IGNEW,3)**2+P(IGNEW,5)**2)
68197       P(IRNEW,1)=0D0
68198       P(IRNEW,2)=0D0
68199       P(IRNEW,3)=-PZM
68200       P(IRNEW,4)=0.5D0*(SHT+PM2R-PM2)/SQRT(SHT)
68201  
68202 C...Boost branching system to lab frame.
68203       CALL PYROBO(INEW,IRNEW,THETA,PHI,BETAX,BETAY,BETAZ)
68204  
68205 C...Renew choice of phi angle according to polarization asymmetry.
68206       IF(ABS(ASYPOL).GT.1D-3) THEN
68207         DO 410 J=1,3
68208           DPT(1,J)=P(I,J)
68209           DPT(2,J)=P(IAU,J)
68210           DPT(3,J)=P(INEW,J)
68211   410   CONTINUE
68212         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
68213         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
68214         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
68215         DO 420 J=1,3
68216           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
68217           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
68218   420   CONTINUE
68219         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
68220         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
68221         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
68222           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
68223      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
68224           IF(1D0+ASYPOL*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(ASYPOL)))
68225      &    GOTO 400
68226         ENDIF
68227       ENDIF
68228  
68229 C...Matrix element corrections for primary partons when requested.
68230       IF(IMESYS.GT.0) THEN
68231         M3JC=MESYS(IMESYS,0)
68232  
68233 C...Identify recoiling partner and set up three-body kinematics.
68234         IRP=MESYS(IMESYS,1)
68235         IF(IRP.EQ.I) IRP=MESYS(IMESYS,2)
68236         IF(IRP.EQ.IR) IRP=IRNEW
68237         DO 430 J=1,4
68238           PSUM(J)=P(INEW,J)+P(IRP,J)+P(IGNEW,J)
68239   430   CONTINUE
68240         PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
68241      &  PSUM(3)**2))
68242         X1=2D0*(PSUM(4)*P(INEW,4)-PSUM(1)*P(INEW,1)-PSUM(2)*P(INEW,2)-
68243      &  PSUM(3)*P(INEW,3))/PSUM(5)**2
68244         X2=2D0*(PSUM(4)*P(IRP,4)-PSUM(1)*P(IRP,1)-PSUM(2)*P(IRP,2)-
68245      &  PSUM(3)*P(IRP,3))/PSUM(5)**2
68246         X3=2D0-X1-X2
68247         R1ME=P(INEW,5)/PSUM(5)
68248         R2ME=P(IRP,5)/PSUM(5)
68249  
68250 C...Matrix elements for gluon emission.
68251         IF(M3JC.LT.100) THEN
68252  
68253 C...Call ME, with right order important for two inequivalent showerers.
68254           IF(MESYS(IMESYS,IORD).EQ.I) THEN
68255             WME=PYMAEL(M3JC,X1,X2,R1ME,R2ME,ALPHA)
68256           ELSE
68257             WME=PYMAEL(M3JC,X2,X1,R2ME,R1ME,ALPHA)
68258           ENDIF
68259  
68260 C...Split up total ME when two radiating partons.
68261           ISPRAD=1
68262           IF((M3JC.GE.16.AND.M3JC.LE.19).OR.(M3JC.GE.26.AND.M3JC.LE.29)
68263      &    .OR.(M3JC.GE.36.AND.M3JC.LE.39).OR.(M3JC.GE.46.AND.M3JC.LE.49)
68264      &    .OR.(M3JC.GE.56.AND.M3JC.LE.64)) ISPRAD=0
68265           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
68266      &    MAX(1D-10,2D0-X1-X2)
68267  
68268 C...Evaluate shower rate.
68269           WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
68270      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
68271           IF(IGLUI.EQ.1) WPS=(9D0/4D0)*WPS
68272  
68273 C...Matrix elements for photon emission: still rather primitive.
68274         ELSE
68275  
68276 C...For generic charge combination currently only massless expression.
68277           IF(M3JC.EQ.101) THEN
68278             CHG1=KCHG(PYCOMP(K(I,2)),1)*ISIGN(1,K(I,2))/3D0
68279             CHG2=KCHG(PYCOMP(K(IRP,2)),1)*ISIGN(1,K(IRP,2))/3D0
68280             WME=(CHG1*(1D0-X1)/X3-CHG2*(1D0-X2)/X3)**2*(X1**2+X2**2)
68281             WPS=2D0*(CHG1**2*(1D0-X1)/X3+CHG2**2*(1D0-X2)/X3)
68282  
68283 C...For flavour neutral system assume vector source and include masses.
68284           ELSE
68285             WME=PYMAEL(11,X1,X2,R1ME,R2ME,0D0)*MAX(1D-10,
68286      &      1D0+R1ME**2-R2ME**2-X1)/MAX(1D-10,2D0-X1-X2)
68287             WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
68288      &      MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
68289           ENDIF
68290         ENDIF
68291  
68292 C...Perform weighting with W_ME/W_PS.
68293         IF(WME.LT.PYR(0)*WPS) THEN
68294           N=N-3
68295           IFLG(IMX)=0
68296           PT2CMX=PT2
68297           GOTO 290
68298         ENDIF
68299       ENDIF
68300  
68301 C...Now for sure accepted branching. Save highest pT.
68302       IF(NGEN.EQ.1) PTGEN=SQRT(PT2)
68303  
68304 C...Update status for obsolete ones. Bookkkep the moved original parton
68305 C...and new daughter (arbitrary choice for g->gg or g->qqbar).
68306 C...Do not bookkeep radiated photon, since it cannot radiate further.
68307       K(I,1)=K(I,1)+10
68308       K(IR,1)=K(IR,1)+10
68309       DO 440 IP=1,NPART
68310         IF(IPART(IP).EQ.I) IPART(IP)=INEW
68311         IF(IPART(IP).EQ.IR) IPART(IP)=IRNEW
68312   440 CONTINUE
68313       IF(KCHA.EQ.0) THEN
68314         NPART=NPART+1
68315         IPART(NPART)=IGNEW
68316       ENDIF
68317  
68318 C...Initialize colour flow of branching.
68319 C...Use both old and new style colour tags for flexibility.
68320       K(INEW,4)=0
68321       K(IGNEW,4)=0
68322       K(INEW,5)=0
68323       K(IGNEW,5)=0
68324       JCOLP=4+(1-KCOL)/2
68325       JCOLN=9-JCOLP
68326       MCT(INEW,1)=0
68327       MCT(INEW,2)=0
68328       MCT(IGNEW,1)=0
68329       MCT(IGNEW,2)=0
68330       MCT(IRNEW,1)=0
68331       MCT(IRNEW,2)=0
68332  
68333 C...Trivial colour flow for l->lgamma and q->qgamma.
68334       IF(IABS(KCHA).EQ.3) THEN
68335         K(I,4)=INEW
68336         K(I,5)=IGNEW
68337       ELSEIF(KCHA.NE.0) THEN
68338         IF(K(I,4).NE.0) THEN
68339           K(I,4)=K(I,4)+INEW
68340           K(INEW,4)=MSTU(5)*I
68341           MCT(INEW,1)=MCT(I,1)
68342         ENDIF
68343         IF(K(I,5).NE.0) THEN
68344           K(I,5)=K(I,5)+INEW
68345           K(INEW,5)=MSTU(5)*I
68346           MCT(INEW,2)=MCT(I,2)
68347         ENDIF
68348  
68349 C...Set colour flow for q->qg and g->gg.
68350       ELSEIF(KFQ.EQ.0) THEN
68351         K(I,JCOLP)=K(I,JCOLP)+IGNEW
68352         K(IGNEW,JCOLP)=MSTU(5)*I
68353         K(INEW,JCOLP)=MSTU(5)*IGNEW
68354         K(IGNEW,JCOLN)=MSTU(5)*INEW
68355         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
68356         NCT=NCT+1
68357         MCT(INEW,JCOLP-3)=NCT
68358         MCT(IGNEW,JCOLN-3)=NCT
68359         IF(MOCT.GE.1) THEN
68360           K(I,JCOLN)=K(I,JCOLN)+INEW
68361           K(INEW,JCOLN)=MSTU(5)*I
68362           MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
68363         ENDIF
68364  
68365 C...Set colour flow for g->qqbar.
68366       ELSE
68367         K(I,JCOLN)=K(I,JCOLN)+INEW
68368         K(INEW,JCOLN)=MSTU(5)*I
68369         K(I,JCOLP)=K(I,JCOLP)+IGNEW
68370         K(IGNEW,JCOLP)=MSTU(5)*I
68371         MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
68372         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
68373       ENDIF
68374  
68375 C...Daughter info for colourless recoiling parton.
68376       IF(K(IR,4).EQ.0.AND.K(IR,5).EQ.0) THEN
68377         K(IR,4)=IRNEW
68378         K(IR,5)=IRNEW
68379         K(IRNEW,4)=0
68380         K(IRNEW,5)=0
68381  
68382 C...Colour of recoiling parton sails through unchanged.
68383       ELSE
68384         IF(K(IR,4).NE.0) THEN
68385           K(IR,4)=K(IR,4)+IRNEW
68386           K(IRNEW,4)=MSTU(5)*IR
68387           MCT(IRNEW,1)=MCT(IR,1)
68388         ENDIF
68389         IF(K(IR,5).NE.0) THEN
68390           K(IR,5)=K(IR,5)+IRNEW
68391           K(IRNEW,5)=MSTU(5)*IR
68392           MCT(IRNEW,2)=MCT(IR,2)
68393         ENDIF
68394       ENDIF
68395  
68396 C...Vertex information trivial.
68397       DO 450 J=1,5
68398         V(INEW,J)=V(I,J)
68399         V(IGNEW,J)=V(I,J)
68400         V(IRNEW,J)=V(IR,J)
68401   450 CONTINUE
68402  
68403 C...Update list of old radiators.
68404         DO 460 IEVOL=1,NEVOL
68405           IF(IPOS(IEVOL).EQ.I.AND.IREC(IEVOL).EQ.IR) THEN
68406             IPOS(IEVOL)=INEW
68407             IF(KCOL.NE.0.AND.ISCOL(IEVOL).EQ.KCOL) IPOS(IEVOL)=IGNEW
68408             IREC(IEVOL)=IRNEW
68409             IFLG(IEVOL)=0
68410           ELSEIF(IPOS(IEVOL).EQ.I) THEN
68411             IPOS(IEVOL)=INEW
68412             IFLG(IEVOL)=0
68413           ELSEIF(IPOS(IEVOL).EQ.IR.AND.IREC(IEVOL).EQ.I) THEN
68414             IPOS(IEVOL)=IRNEW
68415             IREC(IEVOL)=INEW
68416             IF(KCOL.NE.0.AND.ISCOL(IEVOL).NE.KCOL) IREC(IEVOL)=IGNEW
68417             IFLG(IEVOL)=0
68418           ELSEIF(IPOS(IEVOL).EQ.IR) THEN
68419             IPOS(IEVOL)=IRNEW
68420             IFLG(IEVOL)=0
68421           ENDIF
68422 C...Update links of old connected partons.
68423           IF(IREC(IEVOL).EQ.I) THEN
68424             IREC(IEVOL)=INEW
68425             IFLG(IEVOL)=0
68426           ELSEIF(IREC(IEVOL).EQ.IR) THEN
68427             IREC(IEVOL)=IRNEW
68428             IFLG(IEVOL)=0
68429           ENDIF
68430   460   CONTINUE
68431  
68432 C...q->qg or g->gg: create new gluon radiators.
68433       IF(KCOL.NE.0.AND.KFQ.EQ.0) THEN
68434         NEVOL=NEVOL+1
68435         IPOS(NEVOL)=INEW
68436         IREC(NEVOL)=IGNEW
68437         IFLG(NEVOL)=0
68438         ISCOL(NEVOL)=KCOL
68439         ISCHG(NEVOL)=0
68440         PTSCA(NEVOL)=SQRT(PT2)
68441         NEVOL=NEVOL+1
68442         IPOS(NEVOL)=IGNEW
68443         IREC(NEVOL)=INEW
68444         IFLG(NEVOL)=0
68445         ISCOL(NEVOL)=-KCOL
68446         ISCHG(NEVOL)=0
68447         PTSCA(NEVOL)=PTSCA(NEVOL-1)
68448       ENDIF
68449  
68450 C...Update matrix elements parton list and add new for g/gamma->qqbar.
68451       DO 470 IME=1,NMESYS
68452         IF(MESYS(IME,1).EQ.I) MESYS(IME,1)=INEW
68453         IF(MESYS(IME,2).EQ.I) MESYS(IME,2)=INEW
68454         IF(MESYS(IME,1).EQ.IR) MESYS(IME,1)=IRNEW
68455         IF(MESYS(IME,2).EQ.IR) MESYS(IME,2)=IRNEW
68456   470 CONTINUE
68457       IF(KFQ.NE.0) THEN
68458         NMESYS=NMESYS+1
68459         MESYS(NMESYS,0)=66
68460         MESYS(NMESYS,1)=INEW
68461         MESYS(NMESYS,2)=IGNEW
68462         NMESYS=NMESYS+1
68463         MESYS(NMESYS,0)=102
68464         MESYS(NMESYS,1)=INEW
68465         MESYS(NMESYS,2)=IGNEW
68466       ENDIF
68467  
68468 C...Global statistics.
68469       MINT(353)=MINT(353)+1
68470       VINT(353)=VINT(353)+PTCOR
68471       IF (MINT(353).EQ.1) VINT(358)=PTCOR
68472  
68473 C...Loopback for more emissions if enough space.
68474       PT2CMX=PT2
68475       IF(NPART.LT.MAXNUR-1.AND.NEVOL.LT.2*MAXNUR-2.AND.
68476      &NMESYS.LT.MAXNUR-2.AND.N.LT.MSTU(4)-MSTU(32)-5) THEN
68477         GOTO 280
68478       ELSE
68479         CALL PYERRM(11,'(PYPTFS:) no more memory left for shower')
68480       ENDIF
68481  
68482 C...Done.
68483   480 CONTINUE
68484  
68485       RETURN
68486       END
68487  
68488 C*********************************************************************
68489  
68490 C...PYMAEL
68491 C...Auxiliary to PYSHOW and PYPTFS.
68492 C...Matrix elements for gluon (or photon) emission from
68493 C...a two-body state; to be used by the parton shower routine.
68494 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
68495 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
68496 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
68497 C...i.e. normalization is such that one recovers the familiar
68498 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
68499 C...Coupling structure:
68500 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
68501 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
68502 C...   = 16-19 : q -> q V
68503 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
68504 C...   = 26-29 : q -> q S
68505 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
68506 C...   = 36-39 : ~q -> ~q V
68507 C...   = 41-44 : S -> ~q ~qbar
68508 C...   = 46-49 : ~q -> ~q S
68509 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
68510 C...   = 56-59 : ~q -> q chi
68511 C...   = 61-64 : q -> ~q chi
68512 C...   = 66-69 : ~g -> q ~qbar
68513 C...   = 71-74 : ~q -> q ~g
68514 C...   = 76-79 : q -> ~q ~g
68515 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
68516 C...Note that the order of the decay products is important.
68517 C...In each set of four, the variants are ordered as:
68518 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
68519 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
68520 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
68521 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
68522  
68523       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
68524  
68525 C...Double precision and integer declarations.
68526       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
68527       IMPLICIT INTEGER(I-N)
68528  
68529 C...Check input values. Return zero outside allowed phase space.
68530       PYMAEL=0D0
68531       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
68532       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
68533       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
68534       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
68535      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
68536       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
68537  
68538 C...Initial values and flags.
68539       ICLASS=NI/5
68540       ICOMBI=NI-5*ICLASS
68541       ISSET1=0
68542       ISSET2=0
68543       ISSET4=0
68544  
68545 C... Phase space.
68546       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
68547  
68548 C...Eikonal expression; also acts as default.
68549       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
68550         RLO=PS
68551         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
68552           ANUM=0D0
68553         ELSEIF(ICOMBI.EQ.2) THEN
68554           ANUM=(2D0-X1-X2)**2
68555         ELSEIF(ICOMBI.EQ.3) THEN
68556           ANUM=ALPCOR*(2D0-X1-X2)**2
68557         ELSE
68558           ANUM=0.5D0*(2D0-X1-X2)**2
68559         ENDIF
68560         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
68561      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
68562      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
68563      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
68564         ICOMBI=0
68565  
68566 C...V -> q qbar (V = gamma*/Z0/W+-/...).
68567       ELSEIF(ICLASS.EQ.2) THEN
68568         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68569         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
68570         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
68571      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
68572      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
68573      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
68574      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
68575      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
68576      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
68577      &       (-1+R1**2-R2**2+X2)**2
68578         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
68579      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
68580      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
68581      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
68582      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
68583      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
68584      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68585         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
68586      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
68587      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
68588      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
68589      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
68590         RFO1=RFO1/2.D0
68591         ISSET1=1
68592         ENDIF
68593         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68594         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
68595         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
68596      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
68597      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
68598      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
68599      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
68600      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
68601      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
68602         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
68603      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
68604      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
68605      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
68606      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
68607      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
68608      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68609         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
68610      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
68611      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
68612      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
68613      &       +X2)/(-1-R1**2+R2**2+X1)**2
68614         RFO2=RFO2/2.D0
68615         ISSET2=1
68616         ENDIF
68617         IF(ICOMBI.EQ.4) THEN
68618         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
68619         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
68620      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
68621      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
68622      &       (-1-R1**2+R2**2+X1)**2
68623         RFO4=RFO4
68624      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
68625      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
68626      &       -R1**2*X2**2+X1*X2**2)/
68627      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68628         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
68629      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
68630      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
68631      &       (-1+R1**2-R2**2+X2)**2
68632         RFO4=RFO4/2.D0
68633         ISSET4=1
68634         ENDIF
68635  
68636 C...q -> q V.
68637       ELSEIF(ICLASS.EQ.3) THEN
68638         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68639         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
68640      &        +R1**2*R2**2-2D0*R2**4)
68641         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
68642      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
68643      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
68644      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
68645      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
68646      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
68647      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
68648         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
68649      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
68650      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
68651      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68652      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68653         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
68654      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
68655      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
68656      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
68657      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68658      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
68659      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
68660         ISSET1=1
68661         ENDIF
68662         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68663         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
68664      &        +R1**2*R2**2-2D0*R2**4)
68665         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
68666      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
68667      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
68668      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
68669      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
68670      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
68671      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68672         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
68673      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
68674      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
68675      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68676      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68677         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
68678      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
68679      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
68680      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
68681      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68682      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
68683      &       +X1*X2**2)/(-2+X1+X2)**2
68684         ISSET2=1
68685         ENDIF
68686         IF(ICOMBI.EQ.4) THEN
68687         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
68688         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
68689      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
68690      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
68691      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
68692      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68693         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
68694      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
68695      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
68696      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
68697         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
68698      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
68699      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
68700      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
68701      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
68702      &       +X1*X2**2)/(2-X1-X2)**2
68703         ISSET4=1
68704         ENDIF
68705  
68706 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
68707       ELSEIF(ICLASS.EQ.4) THEN
68708         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68709         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
68710         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68711      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68712      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68713      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
68714      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
68715      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68716      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68717      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
68718      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68719         ISSET1=1
68720         ENDIF
68721         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68722         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
68723         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68724      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
68725      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68726      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68727      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
68728      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68729      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
68730      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
68731      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
68732      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68733         ISSET2=1
68734         ENDIF
68735         IF(ICOMBI.EQ.4) THEN
68736         RLO4=PS*(1D0-R1**2-R2**2)
68737         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
68738      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
68739      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
68740      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
68741      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68742      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
68743      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68744         ISSET4=1
68745         ENDIF
68746  
68747 C...q -> q S.
68748       ELSEIF(ICLASS.EQ.5) THEN
68749         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68750         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68751         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
68752      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68753      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
68754      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68755      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
68756      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
68757      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68758      &       (-1+R1**2-R2**2+X2)**2
68759         ISSET1=1
68760         ENDIF
68761         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68762         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
68763         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
68764      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68765      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
68766      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68767      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
68768      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
68769      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68770      &       (-1+R1**2-R2**2+X2)**2
68771         ISSET2=1
68772         ENDIF
68773         IF(ICOMBI.EQ.4) THEN
68774         RLO4=PS*(1D0+R1**2-R2**2)
68775         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
68776      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
68777      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
68778      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
68779      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
68780      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
68781         ISSET4=1
68782         ENDIF
68783  
68784 C...V -> ~q ~qbar  (~q = squark).
68785       ELSEIF(ICLASS.EQ.6) THEN
68786         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
68787         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
68788      &       (-1-R1**2+R2**2+X1)**2
68789      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
68790      &       (-1-R1**2+R2**2+X1)
68791      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
68792      &       /(-1+R1**2-R2**2+X2)**2
68793      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
68794      &       (-1+R1**2-R2**2+X2)
68795      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
68796      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
68797      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
68798      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68799         ISSET1=1
68800  
68801 C...~q -> ~q V.
68802       ELSEIF(ICLASS.EQ.7) THEN
68803         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
68804         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
68805      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
68806      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
68807      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
68808      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
68809      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
68810      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
68811      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
68812      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
68813      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
68814      &       (3*(-2+X1+X2))
68815         RFO1=3D0*RFO1/8D0
68816         ISSET1=1
68817  
68818 C...S -> ~q ~qbar.
68819       ELSEIF(ICLASS.EQ.8) THEN
68820         RLO1=PS
68821         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
68822      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
68823      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
68824      &       -R1**2*X2**2+X1*X2**2)/
68825      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
68826         RFO1=2D0*RFO1
68827         ISSET1=1
68828  
68829 C...~q -> ~q S.
68830       ELSEIF(ICLASS.EQ.9) THEN
68831         RLO1=PS
68832         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68833      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68834      &       -(X1+X2)/(-2+X1+X2)**2
68835         ISSET1=1
68836  
68837 C...chi -> q ~qbar   (chi = neutralino/chargino).
68838       ELSEIF(ICLASS.EQ.10) THEN
68839         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68840         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68841         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
68842      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
68843      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
68844      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68845      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
68846      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68847      &       (-1+R1**2-R2**2+X2)**2
68848         ISSET1=1
68849         ENDIF
68850         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68851         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
68852         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
68853      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
68854      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
68855      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68856      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
68857      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68858      &       (-1+R1**2-R2**2+X2)**2
68859         ISSET2=1
68860         ENDIF
68861         IF(ICOMBI.EQ.4) THEN
68862         RLO4=PS*(1+R1**2-R2**2)
68863         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
68864      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
68865      &       +X2+R1**2*X2-X1*X2/2)/
68866      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
68867      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
68868      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
68869         ISSET4=1
68870         ENDIF
68871  
68872 C...~q -> q chi.
68873       ELSEIF(ICLASS.EQ.11) THEN
68874         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68875         RLO1=PS*(1D0-(R1+R2)**2)
68876         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
68877      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
68878      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
68879      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68880      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
68881      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
68882      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68883         ISSET1=1
68884         ENDIF
68885         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68886         RLO2=PS*(1D0-(R1-R2)**2)
68887         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
68888      &       (-2+X1+X2)**2
68889      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
68890      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
68891      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
68892      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
68893      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
68894      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
68895         ISSET2=1
68896         ENDIF
68897         IF(ICOMBI.EQ.4) THEN
68898         RLO4=PS*(1D0-R1**2-R2**2)
68899         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
68900      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
68901      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
68902      &       (-1+R1**2-R2**2+X2)**2
68903      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
68904      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
68905      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68906         ISSET4=1
68907         ENDIF
68908  
68909 C...q -> ~q chi.
68910       ELSEIF(ICLASS.EQ.12) THEN
68911         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68912         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
68913         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68914      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
68915      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
68916      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
68917      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
68918      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68919         ISSET1=1
68920         END IF
68921         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68922         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
68923         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
68924      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
68925      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
68926      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
68927      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
68928      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68929         ISSET2=1
68930         END IF
68931         IF(ICOMBI.EQ.4) THEN
68932         RLO4=PS*(1D0-R1**2+R2**2)
68933         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
68934      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
68935      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
68936      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
68937      &       +R1**2*X2-X1*X2/2-X2**2/2)/
68938      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
68939         ISSET4=1
68940         END IF
68941  
68942 C...~g -> q ~qbar.
68943       ELSEIF(ICLASS.EQ.13) THEN
68944         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
68945         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
68946         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
68947      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
68948      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
68949      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
68950      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
68951      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
68952      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
68953      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
68954      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
68955      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
68956      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
68957      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68958      &       (3*(-1+R1**2-R2**2+X2)**2)
68959         RFO1=3D0*RFO1/4D0
68960         ISSET1=1
68961         ENDIF
68962         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
68963         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
68964         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
68965      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
68966      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
68967      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
68968      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
68969      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
68970      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
68971      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
68972      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
68973      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68974      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
68975      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
68976      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68977      &       (3*(-1+R1**2-R2**2+X2)**2)
68978         RFO2=3D0*RFO2/4D0
68979         ISSET2=1
68980         ENDIF
68981         IF(ICOMBI.EQ.4) THEN
68982         RLO4=PS*(1D0+R1**2-R2**2)
68983         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
68984      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
68985      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
68986      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
68987      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
68988      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68989      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
68990      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68991      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
68992      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
68993      &       (3*(-1+R1**2-R2**2+X2)**2)
68994         RFO4=3D0*RFO4/8D0
68995         ISSET4=1
68996         ENDIF
68997  
68998 C...~q -> q ~g.
68999       ELSEIF(ICLASS.EQ.14) THEN
69000         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
69001         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
69002         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
69003      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
69004      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
69005      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
69006      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
69007      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
69008      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
69009      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
69010      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
69011      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
69012      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
69013      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
69014      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
69015         RFO1=RFO1
69016      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
69017      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
69018      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69019         RFO1=9D0*RFO1/64D0
69020         ISSET1=1
69021         ENDIF
69022         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
69023         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
69024         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
69025      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
69026      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
69027      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
69028      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
69029      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
69030      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
69031      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
69032      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
69033      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
69034         RFO2=RFO2
69035      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
69036      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
69037      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
69038      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
69039      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
69040      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69041         RFO2=9D0*RFO2/64D0
69042         ISSET2=1
69043         ENDIF
69044         IF(ICOMBI.EQ.4) THEN
69045         RLO4=PS*(1-R1**2-R2**2)
69046         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
69047      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
69048      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
69049      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
69050      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
69051      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
69052      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
69053      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
69054      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
69055      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
69056      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
69057         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
69058      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
69059      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
69060         RFO4=9D0*RFO4/128D0
69061         ISSET4=1
69062         ENDIF
69063  
69064 C...q -> ~q ~g.
69065       ELSEIF(ICLASS.EQ.15) THEN
69066         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
69067         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
69068         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
69069      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
69070      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
69071      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
69072      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
69073      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
69074      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
69075      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
69076      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
69077         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
69078      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
69079      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
69080      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
69081      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69082         RFO1=9D0*RFO1/32D0
69083         ISSET1=1
69084         END IF
69085         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
69086         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
69087         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
69088      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
69089      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
69090      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
69091      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
69092      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
69093      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
69094      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
69095      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
69096         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
69097      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
69098      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
69099      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
69100      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69101         RFO2=9D0*RFO2/32D0
69102         ISSET2=1
69103         END IF
69104         IF(ICOMBI.EQ.4) THEN
69105         RLO4=PS*(1D0-R1**2+R2**2)
69106         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
69107      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
69108      &       -R2**2*X2/2-X1*X2/2)/
69109      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
69110      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
69111      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
69112      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
69113      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
69114         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
69115      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
69116      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
69117      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
69118         RFO4=9D0*RFO4/64D0
69119         ISSET4=1
69120         END IF
69121  
69122 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
69123       ELSEIF(ICLASS.EQ.16) THEN
69124         RLO=PS
69125         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
69126           ANUM=0D0
69127         ELSEIF(ICOMBI.EQ.2) THEN
69128           ANUM=(2D0-X1-X2)**2
69129         ELSEIF(ICOMBI.EQ.3) THEN
69130           ANUM=ALPCOR*(2D0-X1-X2)**2
69131         ELSE
69132           ANUM=0.5D0*(2D0-X1-X2)**2
69133         ENDIF
69134         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
69135      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
69136      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
69137      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
69138         RFO=9D0*RFO/4D0
69139         ICOMBI=0
69140       ENDIF
69141  
69142 C...Find relevant LO and FO expression.
69143       IF(ICOMBI.EQ.0) THEN
69144       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
69145         RLO=RLO1
69146         RFO=RFO1
69147       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
69148         RLO=RLO2
69149         RFO=RFO2
69150       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
69151         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
69152         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
69153       ELSEIF(ISSET4.EQ.1) THEN
69154         RLO=RLO4
69155         RFO=RFO4
69156       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
69157         RLO=0.5D0*(RLO1+RLO2)
69158         RFO=0.5D0*(RFO1+RFO2)
69159       ELSEIF(ISSET1.EQ.1) THEN
69160         RLO=RLO1
69161         RFO=RFO1
69162       ELSE
69163         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
69164         RLO=1D0
69165         RFO=0D0
69166       ENDIF
69167  
69168 C...Output.
69169       PYMAEL=RFO/RLO
69170  
69171       RETURN
69172       END
69173  
69174 C*********************************************************************
69175  
69176 C...PYBOEI
69177 C...Modifies an event so as to approximately take into account
69178 C...Bose-Einstein effects according to a simple phenomenological
69179 C...parametrization.
69180  
69181       SUBROUTINE PYBOEI(NSAV)
69182  
69183 C...Double precision and integer declarations.
69184       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69185       IMPLICIT INTEGER(I-N)
69186       INTEGER PYK,PYCHGE,PYCOMP
69187 C...Parameter statement to help give large particle numbers.
69188       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69189      &KEXCIT=4000000,KDIMEN=5000000)
69190 C...Commonblocks.
69191       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69192       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69193       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69194       COMMON/PYINT1/MINT(400),VINT(400)
69195       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
69196 C...Local arrays and data.
69197       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
69198      &BEIW(100),BEI3W(100)
69199       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
69200 C...Statement function: squared invariant mass.
69201       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
69202      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
69203  
69204 C...Boost event to overall CM frame. Calculate CM energy.
69205       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
69206       DO 100 J=1,4
69207         DPS(J)=0D0
69208   100 CONTINUE
69209       DO 120 I=1,N
69210         KFA=IABS(K(I,2))
69211         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
69212      &  .AND.K(I,3).GT.0) THEN
69213           KFMA=IABS(K(K(I,3),2))
69214           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
69215         ENDIF
69216         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
69217         DO 110 J=1,4
69218           DPS(J)=DPS(J)+P(I,J)
69219   110   CONTINUE
69220   120 CONTINUE
69221       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
69222      &-DPS(3)/DPS(4))
69223       PECM=0D0
69224       DO 130 I=1,N
69225         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
69226   130 CONTINUE
69227  
69228 C...Check if we have separated strings
69229  
69230 C...Reserve copy of particles by species at end of record.
69231       IWP=0
69232       IWN=0
69233       NBE(0)=N+MSTU(3)
69234       NMAX=NBE(0)
69235       SMMIN=PECM
69236       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
69237         NBE(IBE)=NBE(IBE-1)
69238         DO 180 I=NSAV+1,N
69239           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
69240             DO 140 IIBE=1,IBE-1
69241               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
69242   140       CONTINUE
69243           ELSE
69244             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
69245           ENDIF
69246           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
69247           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
69248             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
69249             RETURN
69250           ENDIF
69251           NBE(IBE)=NBE(IBE)+1
69252           NMAX=NBE(IBE)
69253           K(NBE(IBE),1)=I
69254           K(NBE(IBE),2)=0
69255           K(NBE(IBE),3)=0
69256           K(NBE(IBE),4)=0
69257           K(NBE(IBE),5)=0
69258           P(NBE(IBE),1)=0.0D0
69259           P(NBE(IBE),2)=0.0D0
69260           P(NBE(IBE),3)=0.0D0
69261           P(NBE(IBE),4)=0.0D0
69262           P(NBE(IBE),5)=0.0D0
69263           SMMIN=MIN(SMMIN,P(I,5))
69264 C...Check if particles comes from different W's or Z's
69265           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
69266             IM=I
69267   150       IF(K(IM,3).GT.0) THEN
69268               IM=K(IM,3)
69269               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
69270               K(NBE(IBE),5)=IM
69271               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
69272               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
69273               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
69274               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
69275             ENDIF
69276           ENDIF
69277 C...Check if particles comes from different strings.
69278           IF(PARJ(94).GT.0.0D0) THEN
69279             IM=I
69280   160       IF(K(IM,3).GT.0) THEN
69281               IM=K(IM,3)
69282               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
69283               K(NBE(IBE),5)=IM
69284             ENDIF
69285           ENDIF
69286           DO 170 J=1,3
69287             P(NBE(IBE),J)=0D0
69288             V(NBE(IBE),J)=0D0
69289   170     CONTINUE
69290           P(NBE(IBE),5)=-1.0D0
69291   180   CONTINUE
69292   190 CONTINUE
69293       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
69294  
69295 C...Calculate separation between W+ and W- or between two Z0's.
69296 C...No separation if there has been re-connections.
69297       SIGW=PARJ(93)
69298       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
69299         IF(K(IWP,2).EQ.23) THEN
69300           DMW=PMAS(23,1)
69301           DGW=PMAS(23,2)
69302         ELSE
69303           DMW=PMAS(24,1)
69304           DGW=PMAS(24,2)
69305         ENDIF
69306         DMP=P(IWP,5)
69307         DMN=P(IWN,5)
69308         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
69309         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
69310         TAUP=-TAUPD*LOG(PYR(IDUM))
69311         TAUN=-TAUND*LOG(PYR(IDUM))
69312         DXP=TAUP*PYP(IWP,8)/DMP
69313         DXN=TAUN*PYP(IWN,8)/DMN
69314         DX=DXP+DXN
69315         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
69316         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
69317       ENDIF
69318  
69319 C...Add separation between strings.
69320       IF(PARJ(94).GT.0.0D0) THEN
69321         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
69322         IWP=-1
69323         IWN=-1
69324       ENDIF
69325  
69326       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
69327         DO 220 IBE=1,MIN(9,MSTJ(52))
69328           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
69329             Q2MIN=PECM**2
69330             I1=K(I1M,1)
69331             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
69332               IF(I2M.EQ.I1M) GOTO 200
69333               I2=K(I2M,1)
69334               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
69335      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
69336      &        (P(I1,5)+P(I2,5))**2
69337               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
69338                 Q2MIN=Q2
69339               ENDIF
69340   200       CONTINUE
69341             P(I1M,5)=Q2MIN
69342   210     CONTINUE
69343   220   CONTINUE
69344       ENDIF
69345  
69346 C...Tabulate integral for subsequent momentum shift.
69347       DO 400 IBE=1,MIN(9,MSTJ(52))
69348         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
69349         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
69350      &  .LE.1) GOTO 270
69351         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
69352      &  NBE(7)-NBE(6)).LE.1) GOTO 270
69353         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
69354         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
69355         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
69356         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
69357         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
69358         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
69359         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
69360         QDELW=0.1D0*MIN(PMHQ,SIGW)
69361         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
69362         IF(MSTJ(51).EQ.1) THEN
69363           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
69364           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
69365           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
69366           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
69367           BEEX=EXP(0.5D0*QDEL/PARJ(93))
69368           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
69369           BEEXW=EXP(0.5D0*QDELW/SIGW)
69370           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
69371           BERT=EXP(-QDEL/PARJ(93))
69372           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
69373           BERTW=EXP(-QDELW/SIGW)
69374           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
69375         ELSE
69376           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
69377           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
69378           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
69379           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
69380         ENDIF
69381         DO 230 IBIN=1,NBIN
69382           QBIN=QDEL*(IBIN-0.5D0)
69383           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69384           IF(MSTJ(51).EQ.1) THEN
69385             BEEX=BEEX*BERT
69386             BEI(IBIN)=BEI(IBIN)*BEEX
69387           ELSE
69388             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
69389           ENDIF
69390           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
69391   230   CONTINUE
69392         DO 240 IBIN=1,NBIN3
69393           QBIN=QDEL3*(IBIN-0.5D0)
69394           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69395           IF(MSTJ(51).EQ.1) THEN
69396             BEEX3=BEEX3*BERT3
69397             BEI3(IBIN)=BEI3(IBIN)*BEEX3
69398           ELSE
69399             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
69400           ENDIF
69401           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
69402   240   CONTINUE
69403         DO 250 IBIN=1,NBINW
69404           QBIN=QDELW*(IBIN-0.5D0)
69405           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
69406           IF(MSTJ(51).EQ.1) THEN
69407             BEEXW=BEEXW*BERTW
69408             BEIW(IBIN)=BEIW(IBIN)*BEEXW
69409           ELSE
69410             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
69411           ENDIF
69412           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
69413   250   CONTINUE
69414         DO 260 IBIN=1,NBIN3W
69415           QBIN=QDEL3W*(IBIN-0.5D0)
69416           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
69417      &    SQRT(QBIN**2+PMHQ**2)
69418           IF(MSTJ(51).EQ.1) THEN
69419             BEEX3W=BEEX3W*BERT3W
69420             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
69421           ELSE
69422             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
69423           ENDIF
69424           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
69425   260   CONTINUE
69426  
69427 C...Loop through particle pairs and find old relative momentum.
69428   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
69429           I1=K(I1M,1)
69430           DO 380 I2M=I1M+1,NBE(IBE)
69431             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
69432             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
69433             I2=K(I2M,1)
69434             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
69435      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
69436             IF(Q2OLD.LE.0.0D0) GOTO 380
69437             QOLD=SQRT(Q2OLD)
69438  
69439 C...Calculate new relative momentum.
69440             QMOV=0.0D0
69441             QMOV3=0.0D0
69442             QMOVW=0.0D0
69443             QMOV3W=0.0D0
69444             IF(QOLD.LT.1D-3*QDEL) THEN
69445               GOTO 280
69446             ELSEIF(QOLD.LE.QDEL) THEN
69447               QMOV=QOLD/3D0
69448             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
69449               RBIN=QOLD/QDEL
69450               IBIN=RBIN
69451               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
69452               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
69453      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69454             ELSE
69455               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69456             ENDIF
69457   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
69458             IF(QOLD.LT.1D-3*QDEL3) THEN
69459               GOTO 290
69460             ELSEIF(QOLD.LE.QDEL3) THEN
69461               QMOV3=QOLD/3D0
69462             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
69463               RBIN3=QOLD/QDEL3
69464               IBIN3=RBIN3
69465               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
69466               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
69467      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69468             ELSE
69469               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69470             ENDIF
69471   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
69472             RSCALE=1.0D0
69473             IF(MSTJ(54).EQ.2)
69474      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
69475             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
69476      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
69477  
69478             IF(QOLD.LT.1D-3*QDELW) THEN
69479               GOTO 300
69480             ELSEIF(QOLD.LE.QDELW) THEN
69481               QMOVW=QOLD/3D0
69482             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
69483               RBINW=QOLD/QDELW
69484               IBINW=RBINW
69485               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
69486               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
69487      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
69488             ELSE
69489               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69490             ENDIF
69491   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
69492             IF(QOLD.LT.1D-3*QDEL3W) THEN
69493               GOTO 310
69494             ELSEIF(QOLD.LE.QDEL3W) THEN
69495               QMOV3W=QOLD/3D0
69496             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
69497               RBIN3W=QOLD/QDEL3W
69498               IBIN3W=RBIN3W
69499               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
69500               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
69501      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69502             ELSE
69503               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
69504             ENDIF
69505   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
69506             IF(MSTJ(54).EQ.2)
69507      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
69508  
69509   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
69510             DO 330 J=1,3
69511               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
69512               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
69513   330       CONTINUE
69514             IF(MSTJ(54).GE.1) THEN
69515               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
69516               DO 340 J=1,3
69517                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
69518                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
69519   340         CONTINUE
69520             ELSEIF(MSTJ(54).LE.-1) THEN
69521               EDEL=P(I1,4)+P(I2,4)-
69522      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
69523               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
69524      &        (P(I1,3)-P(I2,3))**2
69525               WMAX=-1.0D20
69526               MI3=0
69527               MI4=0
69528               S12=SDIP(I1,I2)
69529               SM1=(P(I1,5)+SMMIN)**2
69530               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69531                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
69532                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
69533                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
69534      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
69535                 I3=K(I3M,1)
69536                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
69537                 S13=SDIP(I1,I3)
69538                 S23=SDIP(I2,I3)
69539                 SM3=(P(I3,5)+SMMIN)**2
69540                 IF(MSTJ(54).EQ.-2) THEN
69541                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
69542      &            S23*MIN(SM1,SM3))*SM1)
69543                 ELSE
69544                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
69545      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
69546      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
69547      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
69548                 ENDIF
69549                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
69550                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
69551      &                 GOTO 360
69552                 ELSE
69553                   IF(WMAX*WI.GE.1.0) GOTO 360
69554                 ENDIF
69555                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
69556                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
69557                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
69558                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
69559      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
69560                   I4=K(I4M,1)
69561                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
69562      &            GOTO 350
69563                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
69564      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
69565      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
69566      &            GOTO 350
69567                   IF(MSTJ(54).EQ.-2) THEN
69568                     S14=SDIP(I1,I4)
69569                     S24=SDIP(I2,I4)
69570                     S34=SDIP(I3,I4)
69571                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
69572                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
69573                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
69574                     W=MIN(W,MIN(S23,S24)*S13*S14)
69575                     W=1.0D0/W
69576                   ELSE
69577 C...weight=1-cos(theta)/mtot2
69578                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
69579      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
69580      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
69581      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
69582                     W=1.0D0/S1234
69583                     IF(W.LE.WMAX) GOTO 350
69584                   ENDIF
69585                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
69586      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
69587                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
69588      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
69589                   IF(W.LE.WMAX) GOTO 350
69590                   MI3=I3M
69591                   MI4=I4M
69592                   WMAX=W
69593   350           CONTINUE
69594   360         CONTINUE
69595               IF(MI4.EQ.0) GOTO 380
69596               I3=K(MI3,1)
69597               I4=K(MI4,1)
69598               EOLD=P(I3,4)+P(I4,4)
69599               ENEW=EOLD+EDEL
69600               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
69601      &        (P(I3,3)+P(I4,3))**2
69602               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
69603               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
69604               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
69605               DO 370 J=1,3
69606                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
69607                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
69608   370         CONTINUE
69609             ENDIF
69610   380     CONTINUE
69611   390   CONTINUE
69612   400 CONTINUE
69613  
69614 C...Shift momenta and recalculate energies.
69615       ESUMP=0.0D0
69616       ESUM=0.0D0
69617       PROD=0.0D0
69618       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69619         I=K(IM,1)
69620         ESUMP=ESUMP+P(I,4)
69621         DO 410 J=1,3
69622           P(I,J)=P(I,J)+P(IM,J)
69623   410   CONTINUE
69624         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69625         ESUM=ESUM+P(I,4)
69626         DO 420 J=1,3
69627           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
69628   420   CONTINUE
69629   430 CONTINUE
69630  
69631       PARJ(96)=0.0D0
69632       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
69633   440   ALPHA=(ESUMP-ESUM)/PROD
69634         PARJ(96)=PARJ(96)+ALPHA
69635         PROD=0.0D0
69636         ESUM=0.0D0
69637         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
69638           I=K(IM,1)
69639           DO 450 J=1,3
69640             P(I,J)=P(I,J)+ALPHA*V(IM,J)
69641   450     CONTINUE
69642           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69643           ESUM=ESUM+P(I,4)
69644           DO 460 J=1,3
69645             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
69646   460     CONTINUE
69647   470   CONTINUE
69648         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
69649      &  GOTO 440
69650       ENDIF
69651  
69652 C...Rescale all momenta for energy conservation.
69653       PES=0D0
69654       PQS=0D0
69655       DO 480 I=1,N
69656         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
69657         PES=PES+P(I,4)
69658         PQS=PQS+P(I,5)**2/P(I,4)
69659   480 CONTINUE
69660       PARJ(95)=PES-PECM
69661       FAC=(PECM-PQS)/(PES-PQS)
69662       DO 500 I=1,N
69663         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
69664         DO 490 J=1,3
69665           P(I,J)=FAC*P(I,J)
69666   490   CONTINUE
69667         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
69668   500 CONTINUE
69669  
69670 C...Boost back to correct reference frame.
69671   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
69672       DO 520 I=1,N
69673         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
69674   520 CONTINUE
69675  
69676       RETURN
69677       END
69678  
69679 C*********************************************************************
69680  
69681 C...PYBESQ
69682 C...Calculates the momentum shift in a system of two particles assuming
69683 C...the relative momentum squared should be shifted to Q2NEW. NI is the
69684 C...last position occupied in /PYJETS/.
69685  
69686       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
69687  
69688 C...Double precision and integer declarations.
69689       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69690       IMPLICIT INTEGER(I-N)
69691       INTEGER PYK,PYCHGE,PYCOMP
69692 C...Parameter statement to help give large particle numbers.
69693       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69694      &KEXCIT=4000000,KDIMEN=5000000)
69695 C...Commonblocks.
69696       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69697       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69698       SAVE /PYJETS/,/PYDAT1/
69699 C...Local arrays and data.
69700       DIMENSION DP(5)
69701       SAVE HC1
69702  
69703       IF(MSTJ(55).EQ.0) THEN
69704         DQ2=Q2NEW-Q2OLD
69705         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
69706      &  (P(I1,3)-P(I2,3))**2
69707         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
69708      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
69709         SE=P(I1,4)+P(I2,4)
69710         DE=P(I1,4)-P(I2,4)
69711         DQ2SE=DQ2+SE**2
69712         DA=SE*DE*DP12-DP2*DQ2SE
69713         DB=DP2*DQ2SE-DP12**2
69714         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
69715         DO 100 J=1,3
69716           PD=HA*(P(I1,J)-P(I2,J))
69717           P(NI+1,J)=PD
69718           P(NI+2,J)=-PD
69719   100   CONTINUE
69720         RETURN
69721       ENDIF
69722  
69723       K(NI+1,1)=1
69724       K(NI+2,1)=1
69725       DO 110 J=1,5
69726         P(NI+1,J)=P(I1,J)
69727         P(NI+2,J)=P(I2,J)
69728         DP(J)=P(I1,J)+P(I2,J)
69729   110 CONTINUE
69730  
69731 C...Boost to cms and rotate first particle to z-axis
69732       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
69733      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
69734       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
69735       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
69736       S=Q2NEW+(P(I1,5)+P(I2,5))**2
69737       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
69738       P(NI+1,1)=0.0D0
69739       P(NI+1,2)=0.0D0
69740       P(NI+1,3)=PZ
69741       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
69742       P(NI+2,1)=0.0D0
69743       P(NI+2,2)=0.0D0
69744       P(NI+2,3)=-PZ
69745       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
69746       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
69747       CALL PYROBO(NI+1,NI+2,THE,PHI,
69748      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
69749  
69750       DO 120 J=1,3
69751         P(NI+1,J)=P(NI+1,J)-P(I1,J)
69752         P(NI+2,J)=P(NI+2,J)-P(I2,J)
69753   120 CONTINUE
69754  
69755       RETURN
69756       END
69757  
69758 C*********************************************************************
69759  
69760 C...PYMASS
69761 C...Gives the mass of a particle/parton.
69762  
69763       FUNCTION PYMASS(KF)
69764  
69765 C...Double precision and integer declarations.
69766       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69767       IMPLICIT INTEGER(I-N)
69768       INTEGER PYK,PYCHGE,PYCOMP
69769 C...Commonblocks.
69770       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69771       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69772       SAVE /PYDAT1/,/PYDAT2/
69773  
69774 C...Reset variables. Compressed code. Special case for popcorn diquarks.
69775       PYMASS=0D0
69776       KFA=IABS(KF)
69777       KC=PYCOMP(KF)
69778       IF(KC.EQ.0) THEN
69779         MSTJ(93)=0
69780         RETURN
69781       ENDIF
69782  
69783 C...Guarantee use of constituent masses for internal checks.
69784       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
69785      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
69786         IF(KFA.LE.5) THEN
69787           PYMASS=PARF(100+KFA)
69788           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
69789         ELSEIF(KFA.LE.10) THEN
69790           PYMASS=PMAS(KFA,1)
69791         ELSEIF(MSTJ(93).EQ.1) THEN
69792           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
69793         ELSE
69794           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
69795         ENDIF
69796  
69797 C...Other masses can be read directly off table.
69798       ELSE
69799         PYMASS=PMAS(KC,1)
69800       ENDIF
69801  
69802 C...Optional mass broadening according to truncated Breit-Wigner
69803 C...(either in m or in m^2).
69804       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
69805         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
69806           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
69807      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
69808         ELSE
69809           PM0=PYMASS
69810           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
69811      &    (PM0*PMAS(KC,2)))
69812           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
69813           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
69814      &    (PMUPP-PMLOW)*PYR(0))))
69815         ENDIF
69816       ENDIF
69817       MSTJ(93)=0
69818  
69819       RETURN
69820       END
69821  
69822 C*********************************************************************
69823  
69824 C...PYMRUN
69825 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
69826 C...for Higgs couplings. Everything else sent on to PYMASS.
69827  
69828       FUNCTION PYMRUN(KF,Q2)
69829  
69830 C...Double precision and integer declarations.
69831       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69832       IMPLICIT INTEGER(I-N)
69833       INTEGER PYK,PYCHGE,PYCOMP
69834 C...Commonblocks.
69835       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69836       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69837       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
69838       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
69839  
69840 C...Most masses not handled here.
69841       KFA=IABS(KF)
69842       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
69843         PYMRUN=PYMASS(KF)
69844  
69845 C...Current-algebra masses, but no Q2 dependence.
69846       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
69847         PYMRUN=PARF(90+KFA)
69848  
69849 C...Running current-algebra masses.
69850       ELSE
69851         AS=PYALPS(Q2)
69852         PYMRUN=PARF(90+KFA)*
69853      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
69854      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
69855       ENDIF
69856  
69857       RETURN
69858       END
69859  
69860 C*********************************************************************
69861  
69862 C...PYNAME
69863 C...Gives the particle/parton name as a character string.
69864  
69865       SUBROUTINE PYNAME(KF,CHAU)
69866  
69867 C...Double precision and integer declarations.
69868       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69869       IMPLICIT INTEGER(I-N)
69870       INTEGER PYK,PYCHGE,PYCOMP
69871 C...Commonblocks.
69872       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69873       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69874       COMMON/PYDAT4/CHAF(500,2)
69875       CHARACTER CHAF*16
69876       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
69877 C...Local character variable.
69878       CHARACTER CHAU*16
69879  
69880 C...Read out code with distinction particle/antiparticle.
69881       CHAU=' '
69882       KC=PYCOMP(KF)
69883       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
69884  
69885  
69886       RETURN
69887       END
69888  
69889 C*********************************************************************
69890  
69891 C...PYCHGE
69892 C...Gives three times the charge for a particle/parton.
69893  
69894       FUNCTION PYCHGE(KF)
69895  
69896 C...Double precision and integer declarations.
69897       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69898       IMPLICIT INTEGER(I-N)
69899       INTEGER PYK,PYCHGE,PYCOMP
69900 C...Commonblocks.
69901       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69902       SAVE /PYDAT2/
69903  
69904 C...Read out charge and change sign for antiparticle.
69905       PYCHGE=0
69906       KC=PYCOMP(KF)
69907       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
69908  
69909       RETURN
69910       END
69911  
69912 C*********************************************************************
69913  
69914 C...PYCOMP
69915 C...Compress the standard KF codes for use in mass and decay arrays;
69916 C...also checks whether a given code actually is defined.
69917  
69918       FUNCTION PYCOMP(KF)
69919  
69920 C...Double precision and integer declarations.
69921       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69922       IMPLICIT INTEGER(I-N)
69923       INTEGER PYK,PYCHGE,PYCOMP
69924 C...Commonblocks.
69925       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69926       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69927       SAVE /PYDAT1/,/PYDAT2/
69928 C...Local arrays and saved data.
69929       DIMENSION KFORD(100:500),KCORD(101:500)
69930       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
69931  
69932 C...Whenever necessary reorder codes for faster search.
69933       IF(MSTU(20).EQ.0) THEN
69934         NFORD=100
69935         KFORD(100)=0
69936         DO 120 I=101,500
69937           KFA=KCHG(I,4)
69938           IF(KFA.LE.100) GOTO 120
69939           NFORD=NFORD+1
69940           DO 100 I1=NFORD-1,0,-1
69941             IF(KFA.GE.KFORD(I1)) GOTO 110
69942             KFORD(I1+1)=KFORD(I1)
69943             KCORD(I1+1)=KCORD(I1)
69944   100     CONTINUE
69945   110     KFORD(I1+1)=KFA
69946           KCORD(I1+1)=I
69947   120   CONTINUE
69948         MSTU(20)=1
69949         KFLAST=0
69950         KCLAST=0
69951       ENDIF
69952  
69953 C...Fast action if same code as in latest call.
69954       IF(KF.EQ.KFLAST) THEN
69955         PYCOMP=KCLAST
69956         RETURN
69957       ENDIF
69958  
69959 C...Starting values. Remove internal diquark flags.
69960       PYCOMP=0
69961       KFA=IABS(KF)
69962       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
69963      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
69964  
69965 C...Simple cases: direct translation.
69966       IF(KFA.GT.KFORD(NFORD)) THEN
69967       ELSEIF(KFA.LE.100) THEN
69968         PYCOMP=KFA
69969  
69970 C...Else binary search.
69971       ELSE
69972         IMIN=100
69973         IMAX=NFORD+1
69974   130   IAVG=(IMIN+IMAX)/2
69975         IF(KFORD(IAVG).GT.KFA) THEN
69976           IMAX=IAVG
69977           IF(IMAX.GT.IMIN+1) GOTO 130
69978         ELSEIF(KFORD(IAVG).LT.KFA) THEN
69979           IMIN=IAVG
69980           IF(IMAX.GT.IMIN+1) GOTO 130
69981         ELSE
69982           PYCOMP=KCORD(IAVG)
69983         ENDIF
69984       ENDIF
69985  
69986 C...Check if antiparticle allowed.
69987       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
69988         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
69989       ENDIF
69990  
69991 C...Save codes for possible future fast action.
69992       KFLAST=KF
69993       KCLAST=PYCOMP
69994  
69995       RETURN
69996       END
69997  
69998 C*********************************************************************
69999  
70000 C...PYERRM
70001 C...Informs user of errors in program execution.
70002  
70003       SUBROUTINE PYERRM(MERR,CHMESS)
70004  
70005 C...Double precision and integer declarations.
70006       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70007       IMPLICIT INTEGER(I-N)
70008       INTEGER PYK,PYCHGE,PYCOMP
70009 C...Commonblocks.
70010       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70011       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70012       SAVE /PYJETS/,/PYDAT1/
70013 C...Local character variable.
70014       CHARACTER CHMESS*(*)
70015  
70016 C...Write first few warnings, then be silent.
70017       IF(MERR.LE.10) THEN
70018         MSTU(27)=MSTU(27)+1
70019         MSTU(28)=MERR
70020         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
70021      &  MERR,MSTU(31),CHMESS
70022  
70023 C...Write first few errors, then be silent or stop program.
70024       ELSEIF(MERR.LE.20) THEN
70025         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
70026         MSTU(30)=MSTU(30)+1
70027         MSTU(24)=MERR-10
70028         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
70029      &  MERR-10,MSTU(31),CHMESS
70030         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
70031           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
70032           WRITE(MSTU(11),5200)
70033           IF(MERR.NE.17) CALL PYLIST(2)
70034           CALL PYSTOP(3)
70035         ENDIF
70036  
70037 C...Stop program in case of irreparable error.
70038       ELSE
70039         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
70040         CALL PYSTOP(3)
70041       ENDIF
70042  
70043 C...Formats for output.
70044  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
70045      &' PYEXEC calls:'/5X,A)
70046  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
70047      &' PYEXEC calls:'/5X,A)
70048  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
70049      &'event!')
70050  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
70051      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
70052  
70053       RETURN
70054       END
70055  
70056 C*********************************************************************
70057  
70058 C...PYALEM
70059 C...Calculates the running alpha_electromagnetic.
70060  
70061       FUNCTION PYALEM(Q2)
70062  
70063 C...Double precision and integer declarations.
70064       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70065       IMPLICIT INTEGER(I-N)
70066       INTEGER PYK,PYCHGE,PYCOMP
70067 C...Commonblocks.
70068       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70069       SAVE /PYDAT1/
70070  
70071 C...Calculate real part of photon vacuum polarization.
70072 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
70073 C...For hadrons use parametrization of H. Burkhardt et al.
70074 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
70075       AEMPI=PARU(101)/(3D0*PARU(1))
70076       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
70077         RPIGG=0D0
70078       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
70079         RPIGG=0D0
70080       ELSEIF(MSTU(101).EQ.2) THEN
70081         RPIGG=1D0-PARU(101)/PARU(103)
70082       ELSEIF(Q2.LT.0.09D0) THEN
70083         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
70084       ELSEIF(Q2.LT.9D0) THEN
70085         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
70086      &  0.00238D0*LOG(1D0+3.927D0*Q2)
70087       ELSEIF(Q2.LT.1D4) THEN
70088         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
70089      &  0.00299D0*LOG(1D0+Q2)
70090       ELSE
70091         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
70092      &  0.00293D0*LOG(1D0+Q2)
70093       ENDIF
70094  
70095 C...Calculate running alpha_em.
70096       PYALEM=PARU(101)/(1D0-RPIGG)
70097       PARU(108)=PYALEM
70098  
70099       RETURN
70100       END
70101  
70102 C*********************************************************************
70103  
70104 C...PYALPS
70105 C...Gives the value of alpha_strong.
70106  
70107       FUNCTION PYALPS(Q2)
70108  
70109 C...Double precision and integer declarations.
70110       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70111       IMPLICIT INTEGER(I-N)
70112       INTEGER PYK,PYCHGE,PYCOMP
70113 C...Commonblocks.
70114       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70115       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70116       SAVE /PYDAT1/,/PYDAT2/
70117 C...Coefficients for second-order threshold matching.
70118 C...From W.J. Marciano, Phys. Rev. D29 (1984) 580.
70119       DIMENSION STEPDN(6),STEPUP(6)
70120 c      DATA STEPDN/0D0,0D0,(2D0*107D0/2025D0),(2D0*963D0/14375D0),
70121 c     &(2D0*321D0/3703D0),0D0/
70122 c      DATA STEPUP/0D0,0D0,0D0,(-2D0*107D0/1875D0),
70123 c     &(-2D0*963D0/13225D0),(-2D0*321D0/3381D0)/
70124       DATA STEPDN/0D0,0D0,0.10568D0,0.13398D0,0.17337D0,0D0/
70125       DATA STEPUP/0D0,0D0,0D0,-0.11413D0,-0.14563D0,-0.18988D0/
70126  
70127 C...Constant alpha_strong trivial. Pick artificial Lambda.
70128       IF(MSTU(111).LE.0) THEN
70129         PYALPS=PARU(111)
70130         MSTU(118)=MSTU(112)
70131         PARU(117)=0.2D0
70132         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
70133      &  ((33D0-2D0*MSTU(112))*PARU(111)))
70134         PARU(118)=PARU(111)
70135         RETURN
70136       ENDIF
70137  
70138 C...Find effective Q2, number of flavours and Lambda.
70139       Q2EFF=Q2
70140       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
70141       NF=MSTU(112)
70142       ALAM2=PARU(112)**2
70143   100 IF(NF.GT.MAX(3,MSTU(113))) THEN
70144         Q2THR=PARU(113)*PMAS(NF,1)**2
70145         IF(Q2EFF.LT.Q2THR) THEN
70146           NF=NF-1
70147           Q2RAT=Q2THR/ALAM2
70148           ALAM2=ALAM2*Q2RAT**(2D0/(33D0-2D0*NF))
70149           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPDN(NF)
70150           GOTO 100
70151         ENDIF
70152       ENDIF
70153   110 IF(NF.LT.MIN(6,MSTU(114))) THEN
70154         Q2THR=PARU(113)*PMAS(NF+1,1)**2
70155         IF(Q2EFF.GT.Q2THR) THEN
70156           NF=NF+1
70157           Q2RAT=Q2THR/ALAM2
70158           ALAM2=ALAM2*Q2RAT**(-2D0/(33D0-2D0*NF))
70159           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPUP(NF)
70160           GOTO 110
70161         ENDIF
70162       ENDIF
70163       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
70164       PARU(117)=SQRT(ALAM2)
70165  
70166 C...Evaluate first or second order alpha_strong.
70167       B0=(33D0-2D0*NF)/6D0
70168       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
70169       IF(MSTU(111).EQ.1) THEN
70170         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
70171       ELSE
70172         B1=(153D0-19D0*NF)/6D0
70173         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
70174      &  (B0**2*ALGQ)))
70175       ENDIF
70176       MSTU(118)=NF
70177       PARU(118)=PYALPS
70178  
70179       RETURN
70180       END
70181  
70182 C*********************************************************************
70183  
70184 C...PYANGL
70185 C...Reconstructs an angle from given x and y coordinates.
70186  
70187       FUNCTION PYANGL(X,Y)
70188  
70189 C...Double precision and integer declarations.
70190       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70191       IMPLICIT INTEGER(I-N)
70192       INTEGER PYK,PYCHGE,PYCOMP
70193 C...Commonblocks.
70194       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70195       SAVE /PYDAT1/
70196  
70197       PYANGL=0D0
70198       R=SQRT(X**2+Y**2)
70199       IF(R.LT.1D-20) RETURN
70200       IF(ABS(X)/R.LT.0.8D0) THEN
70201         PYANGL=SIGN(ACOS(X/R),Y)
70202       ELSE
70203         PYANGL=ASIN(Y/R)
70204         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
70205           PYANGL=PARU(1)-PYANGL
70206         ELSEIF(X.LT.0D0) THEN
70207           PYANGL=-PARU(1)-PYANGL
70208         ENDIF
70209       ENDIF
70210  
70211       RETURN
70212       END
70213  
70214 C*********************************************************************
70215  
70216 C...PYROBO
70217 C...Performs rotations and boosts.
70218  
70219       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
70220  
70221 C...Double precision and integer declarations.
70222       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70223       IMPLICIT INTEGER(I-N)
70224       INTEGER PYK,PYCHGE,PYCOMP
70225 C...Commonblocks.
70226       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70227       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70228       SAVE /PYJETS/,/PYDAT1/
70229 C...Local arrays.
70230       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
70231  
70232 C...Find and check range of rotation/boost.
70233       IMIN=IMI
70234       IF(IMIN.LE.0) IMIN=1
70235       IF(MSTU(1).GT.0) IMIN=MSTU(1)
70236       IMAX=IMA
70237       IF(IMAX.LE.0) IMAX=N
70238       IF(MSTU(2).GT.0) IMAX=MSTU(2)
70239       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
70240         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
70241         RETURN
70242       ENDIF
70243  
70244 C...Optional resetting of V (when not set before.)
70245       IF(MSTU(33).NE.0) THEN
70246         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
70247           DO 100 J=1,5
70248             V(I,J)=0D0
70249   100     CONTINUE
70250   110   CONTINUE
70251         MSTU(33)=0
70252       ENDIF
70253  
70254 C...Rotate, typically from z axis to direction (theta,phi).
70255       IF(THE**2+PHI**2.GT.1D-20) THEN
70256         ROT(1,1)=COS(THE)*COS(PHI)
70257         ROT(1,2)=-SIN(PHI)
70258         ROT(1,3)=SIN(THE)*COS(PHI)
70259         ROT(2,1)=COS(THE)*SIN(PHI)
70260         ROT(2,2)=COS(PHI)
70261         ROT(2,3)=SIN(THE)*SIN(PHI)
70262         ROT(3,1)=-SIN(THE)
70263         ROT(3,2)=0D0
70264         ROT(3,3)=COS(THE)
70265         DO 140 I=IMIN,IMAX
70266           IF(K(I,1).LE.0) GOTO 140
70267           DO 120 J=1,3
70268             PR(J)=P(I,J)
70269             VR(J)=V(I,J)
70270   120     CONTINUE
70271           DO 130 J=1,3
70272             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
70273             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
70274   130     CONTINUE
70275   140   CONTINUE
70276       ENDIF
70277  
70278 C...Boost, typically from rest to momentum/energy=beta.
70279       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
70280         DBX=BEX
70281         DBY=BEY
70282         DBZ=BEZ
70283         DB=SQRT(DBX**2+DBY**2+DBZ**2)
70284         EPS1=1D0-1D-12
70285         IF(DB.GT.EPS1) THEN
70286 C...Rescale boost vector if too close to unity.
70287           CALL PYERRM(3,'(PYROBO:) boost vector too large')
70288           DBX=DBX*(EPS1/DB)
70289           DBY=DBY*(EPS1/DB)
70290           DBZ=DBZ*(EPS1/DB)
70291           DB=EPS1
70292         ENDIF
70293         DGA=1D0/SQRT(1D0-DB**2)
70294         DO 160 I=IMIN,IMAX
70295           IF(K(I,1).LE.0) GOTO 160
70296           DO 150 J=1,4
70297             DP(J)=P(I,J)
70298             DV(J)=V(I,J)
70299   150     CONTINUE
70300           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
70301           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
70302           P(I,1)=DP(1)+DGABP*DBX
70303           P(I,2)=DP(2)+DGABP*DBY
70304           P(I,3)=DP(3)+DGABP*DBZ
70305           P(I,4)=DGA*(DP(4)+DBP)
70306           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
70307           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
70308           V(I,1)=DV(1)+DGABV*DBX
70309           V(I,2)=DV(2)+DGABV*DBY
70310           V(I,3)=DV(3)+DGABV*DBZ
70311           V(I,4)=DGA*(DV(4)+DBV)
70312   160   CONTINUE
70313       ENDIF
70314  
70315       RETURN
70316       END
70317  
70318 C*********************************************************************
70319  
70320 C...PYEDIT
70321 C...Performs global manipulations on the event record, in particular
70322 C...to exclude unstable or undetectable partons/particles.
70323  
70324       SUBROUTINE PYEDIT(MEDIT)
70325  
70326 C...Double precision and integer declarations.
70327       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70328       IMPLICIT INTEGER(I-N)
70329       INTEGER PYK,PYCHGE,PYCOMP
70330 C...Parameter statement to help give large particle numbers.
70331       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
70332      &KEXCIT=4000000,KDIMEN=5000000)
70333 C...Commonblocks.
70334       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70335       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70336       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70337       COMMON/PYCTAG/NCT,MCT(4000,2)
70338       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYCTAG/
70339 C...Local arrays.
70340       DIMENSION NS(2),PTS(2),PLS(2)
70341  
70342 C...Remove unwanted partons/particles.
70343       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
70344         IMAX=N
70345         IF(MSTU(2).GT.0) IMAX=MSTU(2)
70346         I1=MAX(1,MSTU(1))-1
70347         DO 110 I=MAX(1,MSTU(1)),IMAX
70348           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
70349           IF(MEDIT.EQ.1) THEN
70350             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70351           ELSEIF(MEDIT.EQ.2) THEN
70352             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70353             KC=PYCOMP(K(I,2))
70354             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70355      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70356      &      K(I,2).EQ.KSUSY1+39) GOTO 110
70357           ELSEIF(MEDIT.EQ.3) THEN
70358             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
70359             KC=PYCOMP(K(I,2))
70360             IF(KC.EQ.0) GOTO 110
70361             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
70362           ELSEIF(MEDIT.EQ.5) THEN
70363             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
70364             KC=PYCOMP(K(I,2))
70365             IF(KC.EQ.0) GOTO 110
70366             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
70367      &      KCHG(KC,2).EQ.0) GOTO 110
70368           ENDIF
70369  
70370 C...Pack remaining partons/particles. Origin no longer known.
70371           I1=I1+1
70372           DO 100 J=1,5
70373             K(I1,J)=K(I,J)
70374             P(I1,J)=P(I,J)
70375             V(I1,J)=V(I,J)
70376   100     CONTINUE
70377           K(I1,3)=0
70378   110   CONTINUE
70379         IF(I1.LT.N) MSTU(3)=0
70380         IF(I1.LT.N) MSTU(70)=0
70381         N=I1
70382  
70383 C...Selective removal of class of entries. New position of retained.
70384       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
70385         I1=0
70386         DO 120 I=1,N
70387           K(I,3)=MOD(K(I,3),MSTU(5))
70388           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
70389           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
70390           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
70391      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
70392           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
70393      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
70394           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
70395           I1=I1+1
70396           K(I,3)=K(I,3)+MSTU(5)*I1
70397   120   CONTINUE
70398  
70399 C...Find new event history information and replace old.
70400         DO 140 I=1,N
70401           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
70402      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
70403           ID=I
70404   130     IM=MOD(K(ID,3),MSTU(5))
70405           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
70406             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
70407      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
70408               ID=IM
70409               GOTO 130
70410             ENDIF
70411           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
70412             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
70413      &      K(IM,2).EQ.94) THEN
70414               ID=IM
70415               GOTO 130
70416             ENDIF
70417           ENDIF
70418           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
70419           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
70420           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
70421      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
70422             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
70423      &      K(K(I,4),3)/MSTU(5)
70424             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
70425      &      K(K(I,5),3)/MSTU(5)
70426           ELSE
70427             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
70428             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
70429      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
70430             KCD=MOD(K(I,4),MSTU(5))
70431             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
70432             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
70433             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
70434             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
70435             KCD=MOD(K(I,5),MSTU(5))
70436             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
70437             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
70438           ENDIF
70439   140   CONTINUE
70440  
70441 C...Pack remaining entries.
70442         I1=0
70443         MSTU90=MSTU(90)
70444         MSTU(90)=0
70445         DO 170 I=1,N
70446           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
70447           I1=I1+1
70448           DO 150 J=1,5
70449             K(I1,J)=K(I,J)
70450             P(I1,J)=P(I,J)
70451             V(I1,J)=V(I,J)
70452   150     CONTINUE
70453 C...Also update LHA1 colour tags
70454           MCT(I1,1)=MCT(I,1)
70455           MCT(I1,2)=MCT(I,2)
70456           K(I1,3)=MOD(K(I1,3),MSTU(5))
70457           DO 160 IZ=1,MSTU90
70458             IF(I.EQ.MSTU(90+IZ)) THEN
70459               MSTU(90)=MSTU(90)+1
70460               MSTU(90+MSTU(90))=I1
70461               PARU(90+MSTU(90))=PARU(90+IZ)
70462             ENDIF
70463   160     CONTINUE
70464   170   CONTINUE
70465         IF(I1.LT.N) MSTU(3)=0
70466         IF(I1.LT.N) MSTU(70)=0
70467         N=I1
70468  
70469 C...Fill in some missing daughter pointers (lost in colour flow).
70470       ELSEIF(MEDIT.EQ.16) THEN
70471         DO 220 I=1,N
70472           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
70473           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
70474 C...Find daughters who point to mother.
70475           DO 180 I1=I+1,N
70476             IF(K(I1,3).NE.I) THEN
70477             ELSEIF(K(I,4).EQ.0) THEN
70478               K(I,4)=I1
70479             ELSE
70480               K(I,5)=I1
70481             ENDIF
70482   180     CONTINUE
70483           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70484           IF(K(I,4).NE.0) GOTO 220
70485 C...Find daughters who point to documentation version of mother.
70486           IM=K(I,3)
70487           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
70488           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
70489           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
70490           DO 190 I1=I+1,N
70491             IF(K(I1,3).NE.IM) THEN
70492             ELSEIF(K(I,4).EQ.0) THEN
70493               K(I,4)=I1
70494             ELSE
70495               K(I,5)=I1
70496             ENDIF
70497   190     CONTINUE
70498           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70499           IF(K(I,4).NE.0) GOTO 220
70500 C...Find daughters who point to documentation daughters who,
70501 C...in their turn, point to documentation mother.
70502           ID1=IM
70503           ID2=IM
70504           DO 200 I1=IM+1,I-1
70505             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
70506               ID2=I1
70507               IF(ID1.EQ.IM) ID1=I1
70508             ENDIF
70509   200     CONTINUE
70510           DO 210 I1=I+1,N
70511             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
70512             ELSEIF(K(I,4).EQ.0) THEN
70513               K(I,4)=I1
70514             ELSE
70515               K(I,5)=I1
70516             ENDIF
70517   210     CONTINUE
70518           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
70519   220   CONTINUE
70520  
70521 C...Save top entries at bottom of PYJETS commonblock.
70522       ELSEIF(MEDIT.EQ.21) THEN
70523         IF(2*N.GE.MSTU(4)) THEN
70524           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
70525           RETURN
70526         ENDIF
70527         DO 240 I=1,N
70528           DO 230 J=1,5
70529             K(MSTU(4)-I,J)=K(I,J)
70530             P(MSTU(4)-I,J)=P(I,J)
70531             V(MSTU(4)-I,J)=V(I,J)
70532   230     CONTINUE
70533   240   CONTINUE
70534         MSTU(32)=N
70535  
70536 C...Restore bottom entries of commonblock PYJETS to top.
70537       ELSEIF(MEDIT.EQ.22) THEN
70538         DO 260 I=1,MSTU(32)
70539           DO 250 J=1,5
70540             K(I,J)=K(MSTU(4)-I,J)
70541             P(I,J)=P(MSTU(4)-I,J)
70542             V(I,J)=V(MSTU(4)-I,J)
70543   250     CONTINUE
70544   260   CONTINUE
70545         N=MSTU(32)
70546  
70547 C...Mark primary entries at top of commonblock PYJETS as untreated.
70548       ELSEIF(MEDIT.EQ.23) THEN
70549         I1=0
70550         DO 270 I=1,N
70551           KH=K(I,3)
70552           IF(KH.GE.1) THEN
70553             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
70554           ENDIF
70555           IF(KH.NE.0) GOTO 280
70556           I1=I1+1
70557           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
70558           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
70559   270   CONTINUE
70560   280   N=I1
70561  
70562 C...Place largest axis along z axis and second largest in xy plane.
70563       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
70564         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
70565      &  P(MSTU(61),2)),0D0,0D0,0D0)
70566         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
70567      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
70568         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
70569      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
70570         IF(MEDIT.EQ.31) RETURN
70571  
70572 C...Rotate to put slim jet along +z axis.
70573         DO 290 IS=1,2
70574           NS(IS)=0
70575           PTS(IS)=0D0
70576           PLS(IS)=0D0
70577   290   CONTINUE
70578         DO 300 I=1,N
70579           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
70580           IF(MSTU(41).GE.2) THEN
70581             KC=PYCOMP(K(I,2))
70582             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70583      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70584      &      K(I,2).EQ.KSUSY1+39) GOTO 300
70585             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
70586      &      .EQ.0) GOTO 300
70587           ENDIF
70588           IS=2D0-SIGN(0.5D0,P(I,3))
70589           NS(IS)=NS(IS)+1
70590           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
70591   300   CONTINUE
70592         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
70593      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
70594  
70595 C...Rotate to put second largest jet into -z,+x quadrant.
70596         DO 310 I=1,N
70597           IF(P(I,3).GE.0D0) GOTO 310
70598           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
70599           IF(MSTU(41).GE.2) THEN
70600             KC=PYCOMP(K(I,2))
70601             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
70602      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
70603      &      K(I,2).EQ.KSUSY1+39) GOTO 310
70604             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
70605      &      .EQ.0) GOTO 310
70606           ENDIF
70607           IS=2D0-SIGN(0.5D0,P(I,1))
70608           PLS(IS)=PLS(IS)-P(I,3)
70609   310   CONTINUE
70610         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
70611      &  0D0,0D0,0D0)
70612       ENDIF
70613  
70614       RETURN
70615       END
70616  
70617 C*********************************************************************
70618  
70619 C...PYLIST
70620 C...Gives program heading, or lists an event, or particle
70621 C...data, or current parameter values.
70622  
70623       SUBROUTINE PYLIST(MLIST)
70624  
70625 C...Double precision and integer declarations.
70626       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70627       IMPLICIT INTEGER(I-N)
70628       INTEGER PYK,PYCHGE,PYCOMP
70629 C...Parameter statement to help give large particle numbers.
70630       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
70631      &KEXCIT=4000000,KDIMEN=5000000)
70632  
70633 C...HEPEVT commonblock.
70634       PARAMETER (NMXHEP=4000)
70635       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
70636      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
70637       DOUBLE PRECISION PHEP,VHEP
70638       SAVE /HEPEVT/
70639  
70640 C...User process event common block.
70641       INTEGER MAXNUP
70642       PARAMETER (MAXNUP=500)
70643       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
70644       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
70645       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
70646      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
70647      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
70648       SAVE /HEPEUP/
70649  
70650 C...Commonblocks.
70651       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
70652       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70653       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
70654       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
70655       COMMON/PYCTAG/NCT,MCT(4000,2)
70656       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYCTAG/
70657 C...Local arrays, character variables and data.
70658       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
70659       DIMENSION PS(6)
70660       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
70661  
70662 C...Initialization printout: version number and date of last change.
70663       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
70664         CALL PYLOGO
70665         MSTU(12)=12345
70666         IF(MLIST.EQ.0) RETURN
70667       ENDIF
70668  
70669 C...List event data, including additional lines after N.
70670       IF(MLIST.GE.1.AND.MLIST.LE.4) THEN
70671         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
70672         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
70673         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
70674         IF(MLIST.EQ.4) WRITE(MSTU(11),5400)
70675         LMX=12
70676         IF(MLIST.GE.2) LMX=16
70677         ISTR=0
70678         IMAX=N
70679         IF(MSTU(2).GT.0) IMAX=MSTU(2)
70680         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
70681           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
70682           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
70683           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
70684  
70685 C...Get particle name, pad it and check it is not too long.
70686           CALL PYNAME(K(I,2),CHAP)
70687           LEN=0
70688           DO 100 LEM=1,16
70689             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
70690   100     CONTINUE
70691           MDL=(K(I,1)+19)/10
70692           LDL=0
70693           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
70694             CHAC=CHAP
70695             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
70696           ELSE
70697             LDL=1
70698             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
70699             IF(LEN.EQ.0) THEN
70700               CHAC=CHDL(MDL)(1:2*LDL)//' '
70701             ELSE
70702               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
70703      &        CHDL(MDL)(LDL+1:2*LDL)//' '
70704               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
70705             ENDIF
70706           ENDIF
70707  
70708 C...Add information on string connection.
70709           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
70710      &    THEN
70711             KC=PYCOMP(K(I,2))
70712             KCC=0
70713             IF(KC.NE.0) KCC=KCHG(KC,2)
70714             IF(IABS(K(I,2)).EQ.39) THEN
70715               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
70716             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
70717               ISTR=1
70718               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
70719             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
70720               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
70721             ELSEIF(KCC.NE.0) THEN
70722               ISTR=0
70723               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
70724             ENDIF
70725           ENDIF
70726           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
70727      &    CHAC(LMX-1:LMX-1)='I'
70728  
70729 C...Write data for particle/jet.
70730           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
70731             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
70732      &      (P(I,J2),J2=1,5)
70733           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
70734             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
70735      &      (P(I,J2),J2=1,5)
70736           ELSEIF(MLIST.EQ.1) THEN
70737             WRITE(MSTU(11),5700) I,CHAC(1:12),(K(I,J1),J1=1,3),
70738      &      (P(I,J2),J2=1,5)
70739           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
70740      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
70741             IF(MLIST.NE.4) WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,3),
70742      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
70743      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
70744      &      (P(I,J2),J2=1,5)
70745             IF(MLIST.EQ.4) WRITE(MSTU(11),5900) I,CHAC,(K(I,J1),J1=1,3),
70746      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
70747      &           K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5)
70748      &           ,10000),MCT(I,1),MCT(I,2)
70749           ELSE
70750             IF(MLIST.NE.4) WRITE(MSTU(11),6000) I,CHAC,(K(I,J1),J1=1,5),
70751      &      (P(I,J2),J2=1,5)
70752             IF(MLIST.EQ.4) WRITE(MSTU(11),6100) I,CHAC,(K(I,J1),J1=1,5)
70753      &           ,MCT(I,1),MCT(I,2)
70754           ENDIF
70755           IF(MLIST.EQ.3) WRITE(MSTU(11),6200) (V(I,J),J=1,5)
70756  
70757 C...Insert extra separator lines specified by user.
70758           IF(MSTU(70).GE.1) THEN
70759             ISEP=0
70760             DO 110 J=1,MIN(10,MSTU(70))
70761               IF(I.EQ.MSTU(70+J)) ISEP=1
70762   110       CONTINUE
70763             IF(ISEP.EQ.1) THEN
70764               IF(MLIST.EQ.1) WRITE(MSTU(11),6300)
70765               IF(MLIST.EQ.2.OR.MLIST.EQ.3) WRITE(MSTU(11),6400)
70766               IF(MLIST.EQ.4) WRITE(MSTU(11),6500)
70767             ENDIF
70768           ENDIF
70769   120   CONTINUE
70770  
70771 C...Sum of charges and momenta.
70772         DO 130 J=1,6
70773           PS(J)=PYP(0,J)
70774   130   CONTINUE
70775         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
70776           WRITE(MSTU(11),6600) PS(6),(PS(J),J=1,5)
70777         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
70778           WRITE(MSTU(11),6700) PS(6),(PS(J),J=1,5)
70779         ELSEIF(MLIST.EQ.1) THEN
70780           WRITE(MSTU(11),6800) PS(6),(PS(J),J=1,5)
70781         ELSEIF(MLIST.LE.3) THEN
70782           WRITE(MSTU(11),6900) PS(6),(PS(J),J=1,5)
70783         ELSE
70784           WRITE(MSTU(11),7000) PS(6)
70785         ENDIF
70786  
70787 C...Simple listing of HEPEVT entries (mainly for test purposes).
70788       ELSEIF(MLIST.EQ.5) THEN
70789         WRITE(MSTU(11),7100)
70790         DO 140 I=1,NHEP
70791           IF(ISTHEP(I).EQ.0) GOTO 140
70792           WRITE(MSTU(11),7200) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
70793      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
70794   140   CONTINUE
70795  
70796  
70797 C...Simple listing of user-process entries (mainly for test purposes).
70798       ELSEIF(MLIST.EQ.7) THEN
70799         WRITE(MSTU(11),7300)
70800         DO 150 I=1,NUP
70801           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
70802      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
70803   150   CONTINUE
70804  
70805 C...Give simple list of KF codes defined in program.
70806       ELSEIF(MLIST.EQ.11) THEN
70807         WRITE(MSTU(11),7500)
70808         DO 160 KF=1,80
70809           CALL PYNAME(KF,CHAP)
70810           CALL PYNAME(-KF,CHAN)
70811           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
70812           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70813   160   CONTINUE
70814         DO 190 KFLS=1,3,2
70815           DO 180 KFLA=1,5
70816             DO 170 KFLB=1,KFLA-(3-KFLS)/2
70817               KF=1000*KFLA+100*KFLB+KFLS
70818               CALL PYNAME(KF,CHAP)
70819               CALL PYNAME(-KF,CHAN)
70820               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70821   170       CONTINUE
70822   180     CONTINUE
70823   190   CONTINUE
70824         DO 220 KMUL=0,5
70825           KFLS=3
70826           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
70827           IF(KMUL.EQ.5) KFLS=5
70828           KFLR=0
70829           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
70830           IF(KMUL.EQ.4) KFLR=2
70831           DO 210 KFLB=1,5
70832             DO 200 KFLC=1,KFLB-1
70833               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
70834               CALL PYNAME(KF,CHAP)
70835               CALL PYNAME(-KF,CHAN)
70836               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70837               IF(KF.EQ.311) THEN
70838                 KFK=130
70839                 CALL PYNAME(KFK,CHAP)
70840                 WRITE(MSTU(11),7600) KFK,CHAP
70841                 KFK=310
70842                 CALL PYNAME(KFK,CHAP)
70843                 WRITE(MSTU(11),7600) KFK,CHAP
70844               ENDIF
70845   200       CONTINUE
70846             KF=10000*KFLR+110*KFLB+KFLS
70847             CALL PYNAME(KF,CHAP)
70848             WRITE(MSTU(11),7600) KF,CHAP
70849   210     CONTINUE
70850   220   CONTINUE
70851         KF=100443
70852         CALL PYNAME(KF,CHAP)
70853         WRITE(MSTU(11),7600) KF,CHAP
70854         KF=100553
70855         CALL PYNAME(KF,CHAP)
70856         WRITE(MSTU(11),7600) KF,CHAP
70857         DO 260 KFLSP=1,3
70858           KFLS=2+2*(KFLSP/3)
70859           DO 250 KFLA=1,5
70860             DO 240 KFLB=1,KFLA
70861               DO 230 KFLC=1,KFLB
70862                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
70863      &          GOTO 230
70864                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
70865                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
70866                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
70867                 CALL PYNAME(KF,CHAP)
70868                 CALL PYNAME(-KF,CHAN)
70869                 WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70870   230         CONTINUE
70871   240       CONTINUE
70872   250     CONTINUE
70873   260   CONTINUE
70874         DO 270 KC=1,500
70875           KF=KCHG(KC,4)
70876           IF(KF.LT.1000000) GOTO 270
70877           CALL PYNAME(KF,CHAP)
70878           CALL PYNAME(-KF,CHAN)
70879           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
70880           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
70881   270   CONTINUE
70882  
70883 C...List parton/particle data table. Check whether to be listed.
70884       ELSEIF(MLIST.EQ.12) THEN
70885         WRITE(MSTU(11),7700)
70886         DO 300 KC=1,MSTU(6)
70887           KF=KCHG(KC,4)
70888           IF(KF.EQ.0) GOTO 300
70889           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
70890      &    GOTO 300
70891  
70892 C...Find particle name and mass. Print information.
70893           CALL PYNAME(KF,CHAP)
70894           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
70895           CALL PYNAME(-KF,CHAN)
70896           WRITE(MSTU(11),7800) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
70897      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
70898  
70899 C...Particle decay: channel number, branching ratios, matrix element,
70900 C...decay products.
70901           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
70902             DO 280 J=1,5
70903               CALL PYNAME(KFDP(IDC,J),CHAD(J))
70904   280       CONTINUE
70905             WRITE(MSTU(11),7900) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
70906      &      (CHAD(J),J=1,5)
70907   290     CONTINUE
70908   300   CONTINUE
70909  
70910 C...List parameter value table.
70911       ELSEIF(MLIST.EQ.13) THEN
70912         WRITE(MSTU(11),8000)
70913         DO 310 I=1,200
70914           WRITE(MSTU(11),8100) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
70915   310   CONTINUE
70916       ENDIF
70917  
70918 C...Format statements for output on unit MSTU(11) (by default 6).
70919  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
70920      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
70921  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
70922      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
70923      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
70924  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
70925      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
70926      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
70927      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
70928  5400 FORMAT(///28X,'Event listing (no momenta)'//4X,'I  particle/jet',
70929      &     '  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)',1X
70930      &     ,'   C tag  AC tag'/)
70931  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
70932  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
70933  5700 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
70934  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
70935  5900 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),1X,2I8)
70936  6000 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
70937  6100 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),1X,2I8)
70938  6200 FORMAT(66X,5(1X,F12.3))
70939  6300 FORMAT(1X,78('='))
70940  6400 FORMAT(1X,130('='))
70941  6500 FORMAT(1X,65('='))
70942  6600 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
70943  6700 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
70944  6800 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
70945  6900 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
70946      &5F13.5)
70947  7000 FORMAT(19X,'sum charge:',F6.2)
70948  7100 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
70949      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
70950      &'       E        m')
70951  7200 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
70952  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
70953      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
70954      &'       E        m')
70955  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
70956  7500 FORMAT(///20X,'List of KF codes in program'/)
70957  7600 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
70958  7700 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
70959      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
70960      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
70961      &1X,'ME',3X,'Br.rat.',4X,'decay products')
70962  7800 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
70963      &1X,1P,E13.5,3X,I2)
70964  7900 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
70965  8000 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
70966      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
70967  8100 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
70968  
70969       RETURN
70970       END
70971  
70972 C*********************************************************************
70973  
70974 C...PYLOGO
70975 C...Writes a logo for the program.
70976  
70977       SUBROUTINE PYLOGO
70978  
70979 C...Double precision and integer declarations.
70980       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70981       IMPLICIT INTEGER(I-N)
70982       INTEGER PYK,PYCHGE,PYCOMP
70983 C...Parameter for length of information block.
70984       PARAMETER (IREFER=21)
70985 C...Commonblocks.
70986       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
70987       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
70988       SAVE /PYDAT1/,/PYPARS/
70989 C...Local arrays and character variables.
70990       INTEGER IDATI(6)
70991       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
70992      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
70993  
70994 C...Data on months, logo, titles, and references.
70995       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
70996      &'Oct','Nov','Dec'/
70997       DATA (LOGO(J),J=1,19)/
70998      &'            *......*            ',
70999      &'       *:::!!:::::::::::*       ',
71000      &'    *::::::!!::::::::::::::*    ',
71001      &'  *::::::::!!::::::::::::::::*  ',
71002      &' *:::::::::!!:::::::::::::::::* ',
71003      &' *:::::::::!!:::::::::::::::::* ',
71004      &'  *::::::::!!::::::::::::::::*! ',
71005      &'    *::::::!!::::::::::::::* !! ',
71006      &'    !! *:::!!:::::::::::*    !! ',
71007      &'    !!     !* -><- *         !! ',
71008      &'    !!     !!                !! ',
71009      &'    !!     !!                !! ',
71010      &'    !!                       !! ',
71011      &'    !!        lh             !! ',
71012      &'    !!                       !! ',
71013      &'    !!                 hh    !! ',
71014      &'    !!    ll                 !! ',
71015      &'    !!                       !! ',
71016      &'    !!                          '/
71017       DATA (LOGO(J),J=20,38)/
71018      &'Welcome to the Lund Monte Carlo!',
71019      &'                                ',
71020      &'PPP  Y   Y TTTTT H   H III   A  ',
71021      &'P  P  Y Y    T   H   H  I   A A ',
71022      &'PPP    Y     T   HHHHH  I  AAAAA',
71023      &'P      Y     T   H   H  I  A   A',
71024      &'P      Y     T   H   H III A   A',
71025      &'                                ',
71026      &'This is PYTHIA version x.xxx    ',
71027      &'Last date of change: xx xxx 200x',
71028      &'                                ',
71029      &'Now is xx xxx 200x at xx:xx:xx  ',
71030      &'                                ',
71031      &'Disclaimer: this program comes  ',
71032      &'without any guarantees. Beware  ',
71033      &'of errors and use common sense  ',
71034      &'when interpreting results.      ',
71035      &'                                ',
71036      &'Copyright T. Sjostrand (2007)   '/
71037       DATA (REFER(J),J=1,14)/
71038      &'An archive of program versions and d',
71039      &'ocumentation is found on the web:   ',
71040      &'http://www.thep.lu.se/~torbjorn/Pyth',
71041      &'ia.html                             ',
71042      &'                                    ',
71043      &'                                    ',
71044      &'When you cite this program, the offi',
71045      &'cial reference is to the 6.4 manual:',
71046      &'T. Sjostrand, S. Mrenna and P. Skand',
71047      &'s, JHEP05 (2006) 026                ',
71048      &'(LU TP 06-13, FERMILAB-PUB-06-052-CD',
71049      &'-T) [hep-ph/0603175].               ',
71050      &'                                    ',
71051      &'                                    '/
71052       DATA (REFER(J),J=15,32)/
71053      &'Also remember that the program, to a',
71054      &' large extent, represents original  ',
71055      &'physics research. Other publications',
71056      &' of special relevance to your       ',
71057      &'studies may therefore deserve separa',
71058      &'te mention.                         ',
71059      &'                                    ',
71060      &'                                    ',
71061      &'Main author: Torbjorn Sjostrand; CER',
71062      &'N/PH, CH-1211 Geneva, Switzerland,  ',
71063      &'  and Department of Theoretical Phys',
71064      &'ics, Lund University, Lund, Sweden; ',
71065      &'  phone: + 41 - 22 - 767 82 27; e-ma',
71066      &'il: torbjorn@thep.lu.se             ',
71067      &'Author: Stephen Mrenna; Computing Di',
71068      &'vision, GDS Group,                  ',
71069      &'  Fermi National Accelerator Laborat',
71070      &'ory, MS 234, Batavia, IL 60510, USA;'/
71071       DATA (REFER(J),J=33,2*IREFER)/
71072      &'  phone: + 1 - 630 - 840 - 2556; e-m',
71073      &'ail: mrenna@fnal.gov                ',
71074      &'Author: Peter Skands; Theoretical Ph',
71075      &'ysics Department,                   ',
71076      &'  Fermi National Accelerator Laborat',
71077      &'ory, MS 106, Batavia, IL 60510, USA;',
71078      &'  and CERN/PH, CH-1211 Geneva, Switz',
71079      &'erland;                             ',
71080      &'  phone: + 41 - 22 - 767 24 59; e-ma',
71081      &'il: skands@fnal.gov                 '/
71082  
71083 C...Check that PYDATA linked.
71084       IF(MSTP(183)/10.NE.199.AND.MSTP(183)/10.NE.200) THEN
71085         WRITE(*,'(1X,A)')
71086      &  'Error: PYDATA has not been linked.'
71087         WRITE(*,'(1X,A)') 'Execution stopped!'
71088         CALL PYSTOP(8)
71089  
71090 C...Write current version number and current date+time.
71091       ELSE
71092         WRITE(VERS,'(I1)') MSTP(181)
71093         LOGO(28)(24:24)=VERS
71094         WRITE(SUBV,'(I3)') MSTP(182)
71095         LOGO(28)(26:28)=SUBV
71096         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
71097         WRITE(DATE,'(I2)') MSTP(185)
71098         LOGO(29)(22:23)=DATE
71099         LOGO(29)(25:27)=MONTH(MSTP(184))
71100         WRITE(YEAR,'(I4)') MSTP(183)
71101         LOGO(29)(29:32)=YEAR
71102         CALL PYTIME(IDATI)
71103         IF(IDATI(1).LE.0) THEN
71104           LOGO(31)='                                '
71105         ELSE
71106           WRITE(DATE,'(I2)') IDATI(3)
71107           LOGO(31)(8:9)=DATE
71108           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
71109           WRITE(YEAR,'(I4)') IDATI(1)
71110           LOGO(31)(15:18)=YEAR
71111           WRITE(HOUR,'(I2)') IDATI(4)
71112           LOGO(31)(23:24)=HOUR
71113           WRITE(MINU,'(I2)') IDATI(5)
71114           LOGO(31)(26:27)=MINU
71115           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
71116           WRITE(SECO,'(I2)') IDATI(6)
71117           LOGO(31)(29:30)=SECO
71118           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
71119         ENDIF
71120       ENDIF
71121  
71122 C...Loop over lines in header. Define page feed and side borders.
71123       DO 100 ILIN=1,29+IREFER
71124         LINE=' '
71125         IF(ILIN.EQ.1) THEN
71126           LINE(1:1)='1'
71127         ELSE
71128           LINE(2:3)='**'
71129           LINE(78:79)='**'
71130         ENDIF
71131  
71132 C...Separator lines and logos.
71133         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
71134           LINE(4:77)='***********************************************'//
71135      &    '***************************'
71136         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
71137           LINE(6:37)=LOGO(ILIN-5)
71138           LINE(44:75)=LOGO(ILIN+14)
71139         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
71140           LINE(5:40)=REFER(2*ILIN-51)
71141           LINE(41:76)=REFER(2*ILIN-50)
71142         ENDIF
71143  
71144 C...Write lines to appropriate unit.
71145         WRITE(MSTU(11),'(A79)') LINE
71146   100 CONTINUE
71147  
71148       RETURN
71149       END
71150  
71151 C*********************************************************************
71152  
71153 C...PYUPDA
71154 C...Facilitates the updating of particle and decay data
71155 C...by allowing it to be done in an external file.
71156  
71157       SUBROUTINE PYUPDA(MUPDA,LFN)
71158  
71159 C...Double precision and integer declarations.
71160       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71161       IMPLICIT INTEGER(I-N)
71162       INTEGER PYK,PYCHGE,PYCOMP
71163 C...Commonblocks.
71164       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71165       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71166       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
71167       COMMON/PYDAT4/CHAF(500,2)
71168       CHARACTER CHAF*16
71169       COMMON/PYINT4/MWID(500),WIDS(500,5)
71170       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
71171 C...Local arrays, character variables and data.
71172       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
71173      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
71174       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
71175      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
71176      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
71177      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
71178      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
71179  
71180 C...Write header if not yet done.
71181       IF(MSTU(12).NE.12345) CALL PYLIST(0)
71182  
71183 C...Write information on file for editing.
71184       IF(MUPDA.EQ.1) THEN
71185         DO 110 KC=1,500
71186           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
71187      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
71188      &    MWID(KC),MDCY(KC,1)
71189           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
71190             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
71191      &      (KFDP(IDC,J),J=1,5)
71192   100     CONTINUE
71193   110   CONTINUE
71194  
71195 C...Read complete set of information from edited file or
71196 C...read partial set of new or updated information from edited file.
71197       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
71198  
71199 C...Reset counters.
71200         KCC=100
71201         NDC=0
71202         CHKF='         '
71203         IF(MUPDA.EQ.2) THEN
71204           DO 120 I=1,MSTU(6)
71205             KCHG(I,4)=0
71206   120     CONTINUE
71207         ELSE
71208           DO 130 KC=1,MSTU(6)
71209             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
71210             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
71211   130     CONTINUE
71212         ENDIF
71213  
71214 C...Begin of loop: read new line; unknown whether particle or
71215 C...decay data.
71216   140   READ(LFN,5200,END=190) CHINL
71217  
71218 C...Identify particle code and whether already defined  (for MUPDA=3).
71219         IF(CHINL(2:10).NE.'         ') THEN
71220           CHKF=CHINL(2:10)
71221           READ(CHKF,5300) KF
71222           IF(MUPDA.EQ.2) THEN
71223             IF(KF.LE.100) THEN
71224               KC=KF
71225             ELSE
71226               KCC=KCC+1
71227               KC=KCC
71228             ENDIF
71229           ELSE
71230             KCREP=0
71231             IF(KF.LE.100) THEN
71232               KCREP=KF
71233             ELSE
71234               DO 150 KCR=101,KCC
71235                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
71236   150         CONTINUE
71237             ENDIF
71238 C...Remove duplicate old decay data.
71239             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
71240               IDCREP=MDCY(KCREP,2)
71241               NDCREP=MDCY(KCREP,3)
71242               DO 160 I=1,KCC
71243                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
71244   160         CONTINUE
71245               DO 180 I=IDCREP,NDC-NDCREP
71246                 MDME(I,1)=MDME(I+NDCREP,1)
71247                 MDME(I,2)=MDME(I+NDCREP,2)
71248                 BRAT(I)=BRAT(I+NDCREP)
71249                 DO 170 J=1,5
71250                   KFDP(I,J)=KFDP(I+NDCREP,J)
71251   170           CONTINUE
71252   180         CONTINUE
71253               NDC=NDC-NDCREP
71254               KC=KCREP
71255             ELSEIF(KCREP.NE.0) THEN
71256               KC=KCREP
71257             ELSE
71258               KCC=KCC+1
71259               KC=KCC
71260             ENDIF
71261           ENDIF
71262  
71263 C...Study line with particle data.
71264           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
71265      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
71266           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
71267      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
71268      &    MWID(KC),MDCY(KC,1)
71269           MDCY(KC,2)=0
71270           MDCY(KC,3)=0
71271  
71272 C...Study line with decay data.
71273         ELSE
71274           NDC=NDC+1
71275           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
71276      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
71277           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
71278           MDCY(KC,3)=MDCY(KC,3)+1
71279           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
71280      &    (KFDP(NDC,J),J=1,5)
71281         ENDIF
71282  
71283 C...End of loop; ensure that PYCOMP tables are updated.
71284         GOTO 140
71285   190   CONTINUE
71286         MSTU(20)=0
71287  
71288 C...Perform possible tests that new information is consistent.
71289         DO 220 KC=1,MSTU(6)
71290           KF=KCHG(KC,4)
71291           IF(KF.EQ.0) GOTO 220
71292           WRITE(CHKF,5300) KF
71293           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
71294      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
71295      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
71296           BRSUM=0D0
71297           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
71298             IF(MDME(IDC,2).GT.80) GOTO 210
71299             KQ=KCHG(KC,1)
71300             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
71301             MERR=0
71302             DO 200 J=1,5
71303               KP=KFDP(IDC,J)
71304               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
71305                 IF(KP.EQ.81) KQ=0
71306               ELSEIF(PYCOMP(KP).EQ.0) THEN
71307                 MERR=3
71308               ELSE
71309                 KQ=KQ-PYCHGE(KP)
71310                 KPC=PYCOMP(KP)
71311                 PMS=PMS-PMAS(KPC,1)
71312                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
71313      &          PMAS(KPC,3))
71314               ENDIF
71315   200       CONTINUE
71316             IF(KQ.NE.0) MERR=MAX(2,MERR)
71317             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
71318      &      MERR=MAX(1,MERR)
71319             IF(MERR.EQ.3) CALL PYERRM(17,
71320      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
71321             IF(MERR.EQ.2) CALL PYERRM(17,
71322      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
71323             IF(MERR.EQ.1) CALL PYERRM(7,
71324      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
71325             BRSUM=BRSUM+BRAT(IDC)
71326   210     CONTINUE
71327           WRITE(CHTMP,5500) BRSUM
71328           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
71329      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
71330      &    CHTMP(9:16)//' for KF ='//CHKF)
71331   220   CONTINUE
71332  
71333 C...Write DATA statements for inclusion in program.
71334       ELSEIF(MUPDA.EQ.4) THEN
71335  
71336 C...Find out how many codes and decay channels are actually used.
71337         KCC=0
71338         NDC=0
71339         DO 230 I=1,MSTU(6)
71340           IF(KCHG(I,4).NE.0) THEN
71341             KCC=I
71342             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
71343           ENDIF
71344   230   CONTINUE
71345  
71346 C...Initialize writing of DATA statements for inclusion in program.
71347         DO 300 IVAR=1,22
71348           NDIM=MSTU(6)
71349           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
71350           NLIN=1
71351           CHLIN=' '
71352           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
71353           LLIN=35
71354           CHOLD='START'
71355  
71356 C...Loop through variables for conversion to characters.
71357           DO 280 IDIM=1,NDIM
71358             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
71359             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
71360             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
71361             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
71362             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
71363             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
71364             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
71365             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
71366             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
71367             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
71368             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
71369             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
71370             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
71371             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
71372             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
71373             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
71374             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
71375             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
71376             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
71377             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
71378             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
71379             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
71380  
71381 C...Replace variables beyond what is properly defined.
71382             IF(IVAR.LE.4) THEN
71383               IF(IDIM.GT.KCC) CHTMP='               0'
71384             ELSEIF(IVAR.LE.8) THEN
71385               IF(IDIM.GT.KCC) CHTMP='             0.0'
71386             ELSEIF(IVAR.LE.11) THEN
71387               IF(IDIM.GT.KCC) CHTMP='               0'
71388             ELSEIF(IVAR.LE.13) THEN
71389               IF(IDIM.GT.NDC) CHTMP='               0'
71390             ELSEIF(IVAR.LE.14) THEN
71391               IF(IDIM.GT.NDC) CHTMP='             0.0'
71392             ELSEIF(IVAR.LE.19) THEN
71393               IF(IDIM.GT.NDC) CHTMP='               0'
71394             ELSEIF(IVAR.LE.21) THEN
71395               IF(IDIM.GT.KCC) CHTMP='                '
71396             ELSE
71397               IF(IDIM.GT.KCC) CHTMP='               0'
71398             ENDIF
71399  
71400 C...Length of variable, trailing decimal zeros, quotation marks.
71401             LLOW=1
71402             LHIG=1
71403             DO 240 LL=1,16
71404               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
71405               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
71406   240       CONTINUE
71407             CHNEW=CHTMP(LLOW:LHIG)//' '
71408             LNEW=1+LHIG-LLOW
71409             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
71410               LNEW=LNEW+1
71411   250         LNEW=LNEW-1
71412               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
71413               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
71414               IF(LNEW.EQ.0) THEN
71415                 CHNEW(1:3)='0D0'
71416                 LNEW=3
71417               ELSE
71418                 CHNEW(LNEW+1:LNEW+2)='D0'
71419                 LNEW=LNEW+2
71420               ENDIF
71421             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
71422               DO 260 LL=LNEW,1,-1
71423                 IF(CHNEW(LL:LL).EQ.'''') THEN
71424                   CHTMP=CHNEW
71425                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
71426                   LNEW=LNEW+1
71427                 ENDIF
71428   260         CONTINUE
71429               LNEW=MIN(14,LNEW)
71430               CHTMP=CHNEW
71431               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
71432               LNEW=LNEW+2
71433             ENDIF
71434  
71435 C...Form composite character string, often including repetition counter.
71436             IF(CHNEW.NE.CHOLD) THEN
71437               NRPT=1
71438               CHOLD=CHNEW
71439               CHCOM=CHNEW
71440               LCOM=LNEW
71441             ELSE
71442               LRPT=LNEW+1
71443               IF(NRPT.GE.2) LRPT=LNEW+3
71444               IF(NRPT.GE.10) LRPT=LNEW+4
71445               IF(NRPT.GE.100) LRPT=LNEW+5
71446               IF(NRPT.GE.1000) LRPT=LNEW+6
71447               LLIN=LLIN-LRPT
71448               NRPT=NRPT+1
71449               WRITE(CHTMP,5400) NRPT
71450               LRPT=1
71451               IF(NRPT.GE.10) LRPT=2
71452               IF(NRPT.GE.100) LRPT=3
71453               IF(NRPT.GE.1000) LRPT=4
71454               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
71455               LCOM=LRPT+1+LNEW
71456             ENDIF
71457  
71458 C...Add characters to end of line, to new line (after storing old line),
71459 C...or to new block of lines (after writing old block).
71460             IF(LLIN+LCOM.LE.70) THEN
71461               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
71462               LLIN=LLIN+LCOM+1
71463             ELSEIF(NLIN.LE.19) THEN
71464               CHLIN(LLIN+1:72)=' '
71465               CHBLK(NLIN)=CHLIN
71466               NLIN=NLIN+1
71467               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
71468               LLIN=6+LCOM+1
71469             ELSE
71470               CHLIN(LLIN:72)='/'//' '
71471               CHBLK(NLIN)=CHLIN
71472               WRITE(CHTMP,5400) IDIM-NRPT
71473               CHBLK(1)(30:33)=CHTMP(13:16)
71474               DO 270 ILIN=1,NLIN
71475                 WRITE(LFN,5700) CHBLK(ILIN)
71476   270         CONTINUE
71477               NLIN=1
71478               CHLIN=' '
71479               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
71480      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
71481               WRITE(CHTMP,5400) IDIM-NRPT+1
71482               CHLIN(25:28)=CHTMP(13:16)
71483               LLIN=35+LCOM+1
71484             ENDIF
71485   280     CONTINUE
71486  
71487 C...Write final block of lines.
71488           CHLIN(LLIN:72)='/'//' '
71489           CHBLK(NLIN)=CHLIN
71490           WRITE(CHTMP,5400) NDIM
71491           CHBLK(1)(30:33)=CHTMP(13:16)
71492           DO 290 ILIN=1,NLIN
71493             WRITE(LFN,5700) CHBLK(ILIN)
71494   290     CONTINUE
71495   300   CONTINUE
71496       ENDIF
71497  
71498 C...Formats for reading and writing particle data.
71499  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
71500  5100 FORMAT(10X,2I5,F12.6,5I10)
71501  5200 FORMAT(A120)
71502  5300 FORMAT(I9)
71503  5400 FORMAT(I16)
71504  5500 FORMAT(F16.5)
71505  5600 FORMAT(F16.6)
71506  5700 FORMAT(A72)
71507  
71508       RETURN
71509       END
71510  
71511 C*********************************************************************
71512  
71513 C...PYK
71514 C...Provides various integer-valued event related data.
71515  
71516       FUNCTION PYK(I,J)
71517  
71518 C...Double precision and integer declarations.
71519       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71520       IMPLICIT INTEGER(I-N)
71521       INTEGER PYK,PYCHGE,PYCOMP
71522 C...Commonblocks.
71523       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71524       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71525       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71526       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71527  
71528 C...Default value. For I=0 number of entries, number of stable entries
71529 C...or 3 times total charge.
71530       PYK=0
71531       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
71532       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
71533         PYK=N
71534       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
71535         DO 100 I1=1,N
71536           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
71537           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
71538      &    PYCHGE(K(I1,2))
71539   100   CONTINUE
71540       ELSEIF(I.EQ.0) THEN
71541  
71542 C...For I > 0 direct readout of K matrix or charge.
71543       ELSEIF(J.LE.5) THEN
71544         PYK=K(I,J)
71545       ELSEIF(J.EQ.6) THEN
71546         PYK=PYCHGE(K(I,2))
71547  
71548 C...Status (existing/fragmented/decayed), parton/hadron separation.
71549       ELSEIF(J.LE.8) THEN
71550         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
71551         IF(J.EQ.8) PYK=PYK*K(I,2)
71552       ELSEIF(J.LE.12) THEN
71553         KFA=IABS(K(I,2))
71554         KC=PYCOMP(KFA)
71555         KQ=0
71556         IF(KC.NE.0) KQ=KCHG(KC,2)
71557         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
71558         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
71559         IF(J.EQ.11) PYK=KC
71560         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
71561  
71562 C...Heaviest flavour in hadron/diquark.
71563       ELSEIF(J.EQ.13) THEN
71564         KFA=IABS(K(I,2))
71565         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
71566         IF(KFA.LT.10) PYK=KFA
71567         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
71568         PYK=PYK*ISIGN(1,K(I,2))
71569  
71570 C...Particle history: generation, ancestor, rank.
71571       ELSEIF(J.LE.15) THEN
71572         I2=I
71573         I1=I
71574   110   PYK=PYK+1
71575         I2=I1
71576         I1=K(I1,3)
71577         IF(I1.GT.0) THEN
71578           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
71579         ENDIF
71580         IF(J.EQ.15) PYK=I2
71581       ELSEIF(J.EQ.16) THEN
71582         KFA=IABS(K(I,2))
71583         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
71584      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
71585           I1=I
71586   120     I2=I1
71587           I1=K(I1,3)
71588           IF(I1.GT.0) THEN
71589             KFAM=IABS(K(I1,2))
71590             ILP=1
71591             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
71592             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
71593      &      ILP=0
71594             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
71595             IF(ILP.EQ.1) GOTO 120
71596           ENDIF
71597           IF(K(I1,1).EQ.12) THEN
71598             DO 130 I3=I1+1,I2
71599               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
71600      &        .AND.K(I3,2).NE.93) PYK=PYK+1
71601   130       CONTINUE
71602           ELSE
71603             I3=I2
71604   140       PYK=PYK+1
71605             I3=I3+1
71606             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
71607           ENDIF
71608         ENDIF
71609  
71610 C...Particle coming from collapsing jet system or not.
71611       ELSEIF(J.EQ.17) THEN
71612         I1=I
71613   150   PYK=PYK+1
71614         I3=I1
71615         I1=K(I1,3)
71616         I0=MAX(1,I1)
71617         KC=PYCOMP(K(I0,2))
71618         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
71619           IF(PYK.EQ.1) PYK=-1
71620           IF(PYK.GT.1) PYK=0
71621           RETURN
71622         ENDIF
71623         IF(KCHG(KC,2).EQ.0) GOTO 150
71624         IF(K(I1,1).NE.12) PYK=0
71625         IF(K(I1,1).NE.12) RETURN
71626         I2=I1
71627   160   I2=I2+1
71628         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
71629         K3M=K(I3-1,3)
71630         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
71631         K3P=K(I3+1,3)
71632         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
71633  
71634 C...Number of decay products. Colour flow.
71635       ELSEIF(J.EQ.18) THEN
71636         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
71637         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
71638       ELSEIF(J.LE.22) THEN
71639         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
71640         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
71641         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
71642         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
71643         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
71644       ELSE
71645       ENDIF
71646  
71647       RETURN
71648       END
71649  
71650 C*********************************************************************
71651  
71652 C...PYP
71653 C...Provides various real-valued event related data.
71654  
71655       FUNCTION PYP(I,J)
71656  
71657 C...Double precision and integer declarations.
71658       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71659       IMPLICIT INTEGER(I-N)
71660       INTEGER PYK,PYCHGE,PYCOMP
71661 C...Commonblocks.
71662       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71663       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71664       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71665       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71666 C...Local array.
71667       DIMENSION PSUM(4)
71668  
71669 C...Set default value. For I = 0 sum of momenta or charges,
71670 C...or invariant mass of system.
71671       PYP=0D0
71672       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
71673       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
71674         DO 100 I1=1,N
71675           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
71676   100   CONTINUE
71677       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
71678         DO 120 J1=1,4
71679           PSUM(J1)=0D0
71680           DO 110 I1=1,N
71681             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
71682      &      P(I1,J1)
71683   110     CONTINUE
71684   120   CONTINUE
71685         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
71686       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
71687         DO 130 I1=1,N
71688           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
71689   130   CONTINUE
71690       ELSEIF(I.EQ.0) THEN
71691  
71692 C...Direct readout of P matrix.
71693       ELSEIF(J.LE.5) THEN
71694         PYP=P(I,J)
71695  
71696 C...Charge, total momentum, transverse momentum, transverse mass.
71697       ELSEIF(J.LE.12) THEN
71698         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
71699         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
71700         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
71701         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
71702         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
71703  
71704 C...Theta and phi angle in radians or degrees.
71705       ELSEIF(J.LE.16) THEN
71706         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
71707         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
71708         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
71709  
71710 C...True rapidity, rapidity with pion mass, pseudorapidity.
71711       ELSEIF(J.LE.19) THEN
71712         PMR=0D0
71713         IF(J.EQ.17) PMR=P(I,5)
71714         IF(J.EQ.18) PMR=PYMASS(211)
71715         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
71716         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
71717      &  1D20)),P(I,3))
71718  
71719 C...Energy and momentum fractions (only to be used in CM frame).
71720       ELSEIF(J.LE.25) THEN
71721         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
71722         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
71723         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
71724         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
71725         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
71726         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
71727       ENDIF
71728  
71729       RETURN
71730       END
71731  
71732 C*********************************************************************
71733  
71734 C...PYSPHE
71735 C...Performs sphericity tensor analysis to give sphericity,
71736 C...aplanarity and the related event axes.
71737  
71738       SUBROUTINE PYSPHE(SPH,APL)
71739  
71740 C...Double precision and integer declarations.
71741       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71742       IMPLICIT INTEGER(I-N)
71743       INTEGER PYK,PYCHGE,PYCOMP
71744 C...Parameter statement to help give large particle numbers.
71745       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71746      &KEXCIT=4000000,KDIMEN=5000000)
71747 C...Commonblocks.
71748       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71749       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71750       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71751       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71752 C...Local arrays.
71753       DIMENSION SM(3,3),SV(3,3)
71754  
71755 C...Calculate matrix to be diagonalized.
71756       NP=0
71757       DO 110 J1=1,3
71758         DO 100 J2=J1,3
71759           SM(J1,J2)=0D0
71760   100   CONTINUE
71761   110 CONTINUE
71762       PS=0D0
71763       DO 140 I=1,N
71764         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
71765         IF(MSTU(41).GE.2) THEN
71766           KC=PYCOMP(K(I,2))
71767           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
71768      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
71769      &    K(I,2).EQ.KSUSY1+39) GOTO 140
71770           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
71771      &    GOTO 140
71772         ENDIF
71773         NP=NP+1
71774         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
71775         PWT=1D0
71776         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
71777      &  MAX(1D-10,PA)**(PARU(41)-2D0)
71778         DO 130 J1=1,3
71779           DO 120 J2=J1,3
71780             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
71781   120     CONTINUE
71782   130   CONTINUE
71783         PS=PS+PWT*PA**2
71784   140 CONTINUE
71785  
71786 C...Very low multiplicities (0 or 1) not considered.
71787       IF(NP.LE.1) THEN
71788         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
71789         SPH=-1D0
71790         APL=-1D0
71791         RETURN
71792       ENDIF
71793       DO 160 J1=1,3
71794         DO 150 J2=J1,3
71795           SM(J1,J2)=SM(J1,J2)/PS
71796   150   CONTINUE
71797   160 CONTINUE
71798  
71799 C...Find eigenvalues to matrix (third degree equation).
71800       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
71801      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
71802       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
71803      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
71804      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
71805       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
71806       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
71807       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
71808       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
71809       IF(P(N+2,4).LT.1D-5) THEN
71810         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
71811         SPH=-1D0
71812         APL=-1D0
71813         RETURN
71814       ENDIF
71815  
71816 C...Find first and last eigenvector by solving equation system.
71817       DO 240 I=1,3,2
71818         DO 180 J1=1,3
71819           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
71820           DO 170 J2=J1+1,3
71821             SV(J1,J2)=SM(J1,J2)
71822             SV(J2,J1)=SM(J1,J2)
71823   170     CONTINUE
71824   180   CONTINUE
71825         SMAX=0D0
71826         DO 200 J1=1,3
71827           DO 190 J2=1,3
71828             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
71829             JA=J1
71830             JB=J2
71831             SMAX=ABS(SV(J1,J2))
71832   190     CONTINUE
71833   200   CONTINUE
71834         SMAX=0D0
71835         DO 220 J3=JA+1,JA+2
71836           J1=J3-3*((J3-1)/3)
71837           RL=SV(J1,JB)/SV(JA,JB)
71838           DO 210 J2=1,3
71839             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
71840             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
71841             JC=J1
71842             SMAX=ABS(SV(J1,J2))
71843   210     CONTINUE
71844   220   CONTINUE
71845         JB1=JB+1-3*(JB/3)
71846         JB2=JB+2-3*((JB+1)/3)
71847         P(N+I,JB1)=-SV(JC,JB2)
71848         P(N+I,JB2)=SV(JC,JB1)
71849         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
71850      &  SV(JA,JB)
71851         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
71852         SGN=(-1D0)**INT(PYR(0)+0.5D0)
71853         DO 230 J=1,3
71854           P(N+I,J)=SGN*P(N+I,J)/PA
71855   230   CONTINUE
71856   240 CONTINUE
71857  
71858 C...Middle axis orthogonal to other two. Fill other codes.
71859       SGN=(-1D0)**INT(PYR(0)+0.5D0)
71860       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
71861       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
71862       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
71863       DO 260 I=1,3
71864         K(N+I,1)=31
71865         K(N+I,2)=95
71866         K(N+I,3)=I
71867         K(N+I,4)=0
71868         K(N+I,5)=0
71869         P(N+I,5)=0D0
71870         DO 250 J=1,5
71871           V(I,J)=0D0
71872   250   CONTINUE
71873   260 CONTINUE
71874  
71875 C...Calculate sphericity and aplanarity. Select storing option.
71876       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
71877       APL=1.5D0*P(N+3,4)
71878       MSTU(61)=N+1
71879       MSTU(62)=NP
71880       IF(MSTU(43).LE.1) MSTU(3)=3
71881       IF(MSTU(43).GE.2) N=N+3
71882  
71883       RETURN
71884       END
71885  
71886 C*********************************************************************
71887  
71888 C...PYTHRU
71889 C...Performs thrust analysis to give thrust, oblateness
71890 C...and the related event axes.
71891  
71892       SUBROUTINE PYTHRU(THR,OBL)
71893  
71894 C...Double precision and integer declarations.
71895       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71896       IMPLICIT INTEGER(I-N)
71897       INTEGER PYK,PYCHGE,PYCOMP
71898 C...Parameter statement to help give large particle numbers.
71899       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71900      &KEXCIT=4000000,KDIMEN=5000000)
71901 C...Commonblocks.
71902       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71903       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71904       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71905       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
71906 C...Local arrays.
71907       DIMENSION TDI(3),TPR(3)
71908  
71909 C...Take copy of particles that are to be considered in thrust analysis.
71910       NP=0
71911       PS=0D0
71912       DO 100 I=1,N
71913         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
71914         IF(MSTU(41).GE.2) THEN
71915           KC=PYCOMP(K(I,2))
71916           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
71917      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
71918      &    K(I,2).EQ.KSUSY1+39) GOTO 100
71919           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
71920      &    GOTO 100
71921         ENDIF
71922         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
71923           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
71924           THR=-2D0
71925           OBL=-2D0
71926           RETURN
71927         ENDIF
71928         NP=NP+1
71929         K(N+NP,1)=23
71930         P(N+NP,1)=P(I,1)
71931         P(N+NP,2)=P(I,2)
71932         P(N+NP,3)=P(I,3)
71933         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
71934         P(N+NP,5)=1D0
71935         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
71936      &  P(N+NP,4)**(PARU(42)-1D0)
71937         PS=PS+P(N+NP,4)*P(N+NP,5)
71938   100 CONTINUE
71939  
71940 C...Very low multiplicities (0 or 1) not considered.
71941       IF(NP.LE.1) THEN
71942         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
71943         THR=-1D0
71944         OBL=-1D0
71945         RETURN
71946       ENDIF
71947  
71948 C...Loop over thrust and major. T axis along z direction in latter case.
71949       DO 320 ILD=1,2
71950         IF(ILD.EQ.2) THEN
71951           K(N+NP+1,1)=31
71952           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
71953           MSTU(33)=1
71954           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
71955           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
71956           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
71957         ENDIF
71958  
71959 C...Find and order particles with highest p (pT for major).
71960         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
71961           P(ILF,4)=0D0
71962   110   CONTINUE
71963         DO 160 I=N+1,N+NP
71964           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
71965           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
71966             IF(P(I,4).LE.P(ILF,4)) GOTO 140
71967             DO 120 J=1,5
71968               P(ILF+1,J)=P(ILF,J)
71969   120       CONTINUE
71970   130     CONTINUE
71971           ILF=N+NP+3
71972   140     DO 150 J=1,5
71973             P(ILF+1,J)=P(I,J)
71974   150     CONTINUE
71975   160   CONTINUE
71976  
71977 C...Find and order initial axes with highest thrust (major).
71978         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
71979           P(ILG,4)=0D0
71980   170   CONTINUE
71981         NC=2**(MIN(MSTU(44),NP)-1)
71982         DO 250 ILC=1,NC
71983           DO 180 J=1,3
71984             TDI(J)=0D0
71985   180     CONTINUE
71986           DO 200 ILF=1,MIN(MSTU(44),NP)
71987             SGN=P(N+NP+ILF+3,5)
71988             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
71989             DO 190 J=1,4-ILD
71990               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
71991   190       CONTINUE
71992   200     CONTINUE
71993           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
71994           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
71995             IF(TDS.LE.P(ILG,4)) GOTO 230
71996             DO 210 J=1,4
71997               P(ILG+1,J)=P(ILG,J)
71998   210       CONTINUE
71999   220     CONTINUE
72000           ILG=N+NP+MSTU(44)+4
72001   230     DO 240 J=1,3
72002             P(ILG+1,J)=TDI(J)
72003   240     CONTINUE
72004           P(ILG+1,4)=TDS
72005   250   CONTINUE
72006  
72007 C...Iterate direction of axis until stable maximum.
72008         P(N+NP+ILD,4)=0D0
72009         ILG=0
72010   260   ILG=ILG+1
72011         THP=0D0
72012   270   THPS=THP
72013         DO 280 J=1,3
72014           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
72015           IF(THP.GT.1D-10) TDI(J)=TPR(J)
72016           TPR(J)=0D0
72017   280   CONTINUE
72018         DO 300 I=N+1,N+NP
72019           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
72020           DO 290 J=1,4-ILD
72021             TPR(J)=TPR(J)+SGN*P(I,J)
72022   290     CONTINUE
72023   300   CONTINUE
72024         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
72025         IF(THP.GE.THPS+PARU(48)) GOTO 270
72026  
72027 C...Save good axis. Try new initial axis until a number of tries agree.
72028         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
72029         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
72030           IAGR=0
72031           SGN=(-1D0)**INT(PYR(0)+0.5D0)
72032           DO 310 J=1,3
72033             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
72034   310     CONTINUE
72035           P(N+NP+ILD,4)=THP
72036           P(N+NP+ILD,5)=0D0
72037         ENDIF
72038         IAGR=IAGR+1
72039         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
72040   320 CONTINUE
72041  
72042 C...Find minor axis and value by orthogonality.
72043       SGN=(-1D0)**INT(PYR(0)+0.5D0)
72044       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
72045       P(N+NP+3,2)=SGN*P(N+NP+2,1)
72046       P(N+NP+3,3)=0D0
72047       THP=0D0
72048       DO 330 I=N+1,N+NP
72049         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
72050   330 CONTINUE
72051       P(N+NP+3,4)=THP/PS
72052       P(N+NP+3,5)=0D0
72053  
72054 C...Fill axis information. Rotate back to original coordinate system.
72055       DO 350 ILD=1,3
72056         K(N+ILD,1)=31
72057         K(N+ILD,2)=96
72058         K(N+ILD,3)=ILD
72059         K(N+ILD,4)=0
72060         K(N+ILD,5)=0
72061         DO 340 J=1,5
72062           P(N+ILD,J)=P(N+NP+ILD,J)
72063           V(N+ILD,J)=0D0
72064   340   CONTINUE
72065   350 CONTINUE
72066       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
72067  
72068 C...Calculate thrust and oblateness. Select storing option.
72069       THR=P(N+1,4)
72070       OBL=P(N+2,4)-P(N+3,4)
72071       MSTU(61)=N+1
72072       MSTU(62)=NP
72073       IF(MSTU(43).LE.1) MSTU(3)=3
72074       IF(MSTU(43).GE.2) N=N+3
72075  
72076       RETURN
72077       END
72078  
72079 C*********************************************************************
72080  
72081 C...PYCLUS
72082 C...Subdivides the particle content of an event into jets/clusters.
72083  
72084       SUBROUTINE PYCLUS(NJET)
72085  
72086 C...Double precision and integer declarations.
72087       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72088       IMPLICIT INTEGER(I-N)
72089       INTEGER PYK,PYCHGE,PYCOMP
72090 C...Parameter statement to help give large particle numbers.
72091       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72092      &KEXCIT=4000000,KDIMEN=5000000)
72093 C...Commonblocks.
72094       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72095       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72096       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72097       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72098 C...Local arrays and saved variables.
72099       DIMENSION PS(5)
72100       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
72101  
72102 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
72103       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
72104      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
72105       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
72106      &P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
72107       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
72108      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/(P(I1,5)*P(I2,5)))
72109  
72110 C...If first time, reset. If reentering, skip preliminaries.
72111       IF(MSTU(48).LE.0) THEN
72112         NP=0
72113         DO 100 J=1,5
72114           PS(J)=0D0
72115   100   CONTINUE
72116         PSS=0D0
72117         PIMASS=PMAS(PYCOMP(211),1)
72118       ELSE
72119         NJET=NSAV
72120         IF(MSTU(43).GE.2) N=N-NJET
72121         DO 110 I=N+1,N+NJET
72122           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72123   110   CONTINUE
72124         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
72125           R2ACC=PARU(44)**2
72126         ELSE
72127           R2ACC=PARU(45)*PS(5)**2
72128         ENDIF
72129         NLOOP=0
72130         GOTO 300
72131       ENDIF
72132  
72133 C...Find which particles are to be considered in cluster search.
72134       DO 140 I=1,N
72135         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
72136         IF(MSTU(41).GE.2) THEN
72137           KC=PYCOMP(K(I,2))
72138           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72139      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72140      &    K(I,2).EQ.KSUSY1+39) GOTO 140
72141           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72142      &    GOTO 140
72143         ENDIF
72144         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
72145           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
72146           NJET=-1
72147           RETURN
72148         ENDIF
72149  
72150 C...Take copy of these particles, with space left for jets later on.
72151         NP=NP+1
72152         K(N+NP,3)=I
72153         DO 120 J=1,5
72154           P(N+NP,J)=P(I,J)
72155   120   CONTINUE
72156         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
72157         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
72158         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72159         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72160         DO 130 J=1,4
72161           PS(J)=PS(J)+P(N+NP,J)
72162   130   CONTINUE
72163         PSS=PSS+P(N+NP,5)
72164   140 CONTINUE
72165       DO 160 I=N+1,N+NP
72166         K(I+NP,3)=K(I,3)
72167         DO 150 J=1,5
72168           P(I+NP,J)=P(I,J)
72169   150   CONTINUE
72170   160 CONTINUE
72171       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
72172  
72173 C...Very low multiplicities not considered.
72174       IF(NP.LT.MSTU(47)) THEN
72175         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
72176         NJET=-1
72177         RETURN
72178       ENDIF
72179  
72180 C...Find precluster configuration. If too few jets, make harder cuts.
72181       NLOOP=0
72182       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
72183         R2ACC=PARU(44)**2
72184       ELSE
72185         R2ACC=PARU(45)*PS(5)**2
72186       ENDIF
72187       RINIT=1.25D0*PARU(43)
72188       IF(NP.LE.MSTU(47)+2) RINIT=0D0
72189   170 RINIT=0.8D0*RINIT
72190       NPRE=0
72191       NREM=NP
72192       DO 180 I=N+NP+1,N+2*NP
72193         K(I,4)=0
72194   180 CONTINUE
72195  
72196 C...Sum up small momentum region. Jet if enough absolute momentum.
72197       IF(MSTU(46).LE.2) THEN
72198         DO 190 J=1,4
72199           P(N+1,J)=0D0
72200   190   CONTINUE
72201         DO 210 I=N+NP+1,N+2*NP
72202           IF(P(I,5).GT.2D0*RINIT) GOTO 210
72203           NREM=NREM-1
72204           K(I,4)=1
72205           DO 200 J=1,4
72206             P(N+1,J)=P(N+1,J)+P(I,J)
72207   200     CONTINUE
72208   210   CONTINUE
72209         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
72210         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
72211         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
72212         IF(NREM.EQ.0) GOTO 170
72213       ENDIF
72214  
72215 C...Find fastest remaining particle.
72216   220 NPRE=NPRE+1
72217       PMAX=0D0
72218       DO 230 I=N+NP+1,N+2*NP
72219         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
72220         IMAX=I
72221         PMAX=P(I,5)
72222   230 CONTINUE
72223       DO 240 J=1,5
72224         P(N+NPRE,J)=P(IMAX,J)
72225   240 CONTINUE
72226       NREM=NREM-1
72227       K(IMAX,4)=NPRE
72228  
72229 C...Sum up precluster around it according to pT separation.
72230       IF(MSTU(46).LE.2) THEN
72231         DO 260 I=N+NP+1,N+2*NP
72232           IF(K(I,4).NE.0) GOTO 260
72233           R2=R2T(I,IMAX)
72234           IF(R2.GT.RINIT**2) GOTO 260
72235           NREM=NREM-1
72236           K(I,4)=NPRE
72237           DO 250 J=1,4
72238             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
72239   250     CONTINUE
72240   260   CONTINUE
72241         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
72242  
72243 C...Sum up precluster around it according to mass or
72244 C...Durham pT separation.
72245       ELSE
72246   270   IMIN=0
72247         R2MIN=RINIT**2
72248         DO 280 I=N+NP+1,N+2*NP
72249           IF(K(I,4).NE.0) GOTO 280
72250           IF(MSTU(46).LE.4) THEN
72251             R2=R2M(I,N+NPRE)
72252           ELSE
72253             R2=R2D(I,N+NPRE)
72254           ENDIF
72255           IF(R2.GE.R2MIN) GOTO 280
72256           IMIN=I
72257           R2MIN=R2
72258   280   CONTINUE
72259         IF(IMIN.NE.0) THEN
72260           DO 290 J=1,4
72261             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
72262   290     CONTINUE
72263           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
72264           NREM=NREM-1
72265           K(IMIN,4)=NPRE
72266           GOTO 270
72267         ENDIF
72268       ENDIF
72269  
72270 C...Check if more preclusters to be found. Start over if too few.
72271       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
72272       IF(NREM.GT.0) GOTO 220
72273       NJET=NPRE
72274  
72275 C...Reassign all particles to nearest jet. Sum up new jet momenta.
72276   300 TSAV=0D0
72277       PSJT=0D0
72278   310 IF(MSTU(46).LE.1) THEN
72279         DO 330 I=N+1,N+NJET
72280           DO 320 J=1,4
72281             V(I,J)=0D0
72282   320     CONTINUE
72283   330   CONTINUE
72284         DO 360 I=N+NP+1,N+2*NP
72285           R2MIN=PSS**2
72286           DO 340 IJET=N+1,N+NJET
72287             IF(P(IJET,5).LT.RINIT) GOTO 340
72288             R2=R2T(I,IJET)
72289             IF(R2.GE.R2MIN) GOTO 340
72290             IMIN=IJET
72291             R2MIN=R2
72292   340     CONTINUE
72293           K(I,4)=IMIN-N
72294           DO 350 J=1,4
72295             V(IMIN,J)=V(IMIN,J)+P(I,J)
72296   350     CONTINUE
72297   360   CONTINUE
72298         PSJT=0D0
72299         DO 380 I=N+1,N+NJET
72300           DO 370 J=1,4
72301             P(I,J)=V(I,J)
72302   370     CONTINUE
72303           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72304           PSJT=PSJT+P(I,5)
72305   380   CONTINUE
72306       ENDIF
72307  
72308 C...Find two closest jets.
72309       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
72310       DO 400 ITRY1=N+1,N+NJET-1
72311         DO 390 ITRY2=ITRY1+1,N+NJET
72312           IF(MSTU(46).LE.2) THEN
72313             R2=R2T(ITRY1,ITRY2)
72314           ELSEIF(MSTU(46).LE.4) THEN
72315             R2=R2M(ITRY1,ITRY2)
72316           ELSE
72317             R2=R2D(ITRY1,ITRY2)
72318           ENDIF
72319           IF(R2.GE.R2MIN) GOTO 390
72320           IMIN1=ITRY1
72321           IMIN2=ITRY2
72322           R2MIN=R2
72323   390   CONTINUE
72324   400 CONTINUE
72325  
72326 C...If allowed, join two closest jets and start over.
72327       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
72328         IREC=MIN(IMIN1,IMIN2)
72329         IDEL=MAX(IMIN1,IMIN2)
72330         DO 410 J=1,4
72331           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
72332   410   CONTINUE
72333         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
72334         DO 430 I=IDEL+1,N+NJET
72335           DO 420 J=1,5
72336             P(I-1,J)=P(I,J)
72337   420     CONTINUE
72338   430   CONTINUE
72339         IF(MSTU(46).GE.2) THEN
72340           DO 440 I=N+NP+1,N+2*NP
72341             IORI=N+K(I,4)
72342             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
72343             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
72344   440     CONTINUE
72345         ENDIF
72346         NJET=NJET-1
72347         GOTO 300
72348  
72349 C...Divide up broad jet if empty cluster in list of final ones.
72350       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
72351         DO 450 I=N+1,N+NJET
72352           K(I,5)=0
72353   450   CONTINUE
72354         DO 460 I=N+NP+1,N+2*NP
72355           K(N+K(I,4),5)=K(N+K(I,4),5)+1
72356   460   CONTINUE
72357         IEMP=0
72358         DO 470 I=N+1,N+NJET
72359           IF(K(I,5).EQ.0) IEMP=I
72360   470   CONTINUE
72361         IF(IEMP.NE.0) THEN
72362           NLOOP=NLOOP+1
72363           ISPL=0
72364           R2MAX=0D0
72365           DO 480 I=N+NP+1,N+2*NP
72366             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
72367             IJET=N+K(I,4)
72368             R2=R2T(I,IJET)
72369             IF(R2.LE.R2MAX) GOTO 480
72370             ISPL=I
72371             R2MAX=R2
72372   480     CONTINUE
72373           IF(ISPL.NE.0) THEN
72374             IJET=N+K(ISPL,4)
72375             DO 490 J=1,4
72376               P(IEMP,J)=P(ISPL,J)
72377               P(IJET,J)=P(IJET,J)-P(ISPL,J)
72378   490       CONTINUE
72379             P(IEMP,5)=P(ISPL,5)
72380             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
72381             IF(NLOOP.LE.2) GOTO 300
72382           ENDIF
72383         ENDIF
72384       ENDIF
72385  
72386 C...If generalized thrust has not yet converged, continue iteration.
72387       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
72388      &THEN
72389         TSAV=PSJT/PSS
72390         GOTO 310
72391       ENDIF
72392  
72393 C...Reorder jets according to energy.
72394       DO 510 I=N+1,N+NJET
72395         DO 500 J=1,5
72396           V(I,J)=P(I,J)
72397   500   CONTINUE
72398   510 CONTINUE
72399       DO 540 INEW=N+1,N+NJET
72400         PEMAX=0D0
72401         DO 520 ITRY=N+1,N+NJET
72402           IF(V(ITRY,4).LE.PEMAX) GOTO 520
72403           IMAX=ITRY
72404           PEMAX=V(ITRY,4)
72405   520   CONTINUE
72406         K(INEW,1)=31
72407         K(INEW,2)=97
72408         K(INEW,3)=INEW-N
72409         K(INEW,4)=0
72410         DO 530 J=1,5
72411           P(INEW,J)=V(IMAX,J)
72412   530   CONTINUE
72413         V(IMAX,4)=-1D0
72414         K(IMAX,5)=INEW
72415   540 CONTINUE
72416  
72417 C...Clean up particle-jet assignments and jet information.
72418       DO 550 I=N+NP+1,N+2*NP
72419         IORI=K(N+K(I,4),5)
72420         K(I,4)=IORI-N
72421         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
72422         K(IORI,4)=K(IORI,4)+1
72423   550 CONTINUE
72424       IEMP=0
72425       PSJT=0D0
72426       DO 570 I=N+1,N+NJET
72427         K(I,5)=0
72428         PSJT=PSJT+P(I,5)
72429         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
72430         DO 560 J=1,5
72431           V(I,J)=0D0
72432   560   CONTINUE
72433         IF(K(I,4).EQ.0) IEMP=I
72434   570 CONTINUE
72435  
72436 C...Select storing option. Output variables. Check for failure.
72437       MSTU(61)=N+1
72438       MSTU(62)=NP
72439       MSTU(63)=NPRE
72440       PARU(61)=PS(5)
72441       PARU(62)=PSJT/PSS
72442       PARU(63)=SQRT(R2MIN)
72443       IF(NJET.LE.1) PARU(63)=0D0
72444       IF(IEMP.NE.0) THEN
72445         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
72446         NJET=-1
72447         RETURN
72448       ENDIF
72449       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
72450       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
72451       NSAV=NJET
72452  
72453       RETURN
72454       END
72455  
72456 C*********************************************************************
72457  
72458 C...PYCELL
72459 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
72460 C...as used for calorimeters at hadron colliders.
72461  
72462       SUBROUTINE PYCELL(NJET)
72463  
72464 C...Double precision and integer declarations.
72465       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72466       IMPLICIT INTEGER(I-N)
72467       INTEGER PYK,PYCHGE,PYCOMP
72468 C...Parameter statement to help give large particle numbers.
72469       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72470      &KEXCIT=4000000,KDIMEN=5000000)
72471 C...Commonblocks.
72472       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72473       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72474       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72475       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72476  
72477 C...Loop over all particles. Find cell that was hit by given particle.
72478       PTLRAT=1D0/SINH(PARU(51))**2
72479       NP=0
72480       NC=N
72481       DO 110 I=1,N
72482         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
72483         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
72484         IF(MSTU(41).GE.2) THEN
72485           KC=PYCOMP(K(I,2))
72486           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72487      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72488      &    K(I,2).EQ.KSUSY1+39) GOTO 110
72489           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72490      &    GOTO 110
72491         ENDIF
72492         NP=NP+1
72493         PT=SQRT(P(I,1)**2+P(I,2)**2)
72494         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
72495         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
72496      &  (ETA/PARU(51)+1D0))))
72497         PHI=PYANGL(P(I,1),P(I,2))
72498         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
72499      &  (PHI/PARU(1)+1D0))))
72500         IETPH=MSTU(52)*IETA+IPHI
72501  
72502 C...Add to cell already hit, or book new cell.
72503         DO 100 IC=N+1,NC
72504           IF(IETPH.EQ.K(IC,3)) THEN
72505             K(IC,4)=K(IC,4)+1
72506             P(IC,5)=P(IC,5)+PT
72507             GOTO 110
72508           ENDIF
72509   100   CONTINUE
72510         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
72511           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
72512           NJET=-2
72513           RETURN
72514         ENDIF
72515         NC=NC+1
72516         K(NC,3)=IETPH
72517         K(NC,4)=1
72518         K(NC,5)=2
72519         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
72520         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
72521         P(NC,5)=PT
72522   110 CONTINUE
72523  
72524 C...Smear true bin content by calorimeter resolution.
72525       IF(MSTU(53).GE.1) THEN
72526         DO 130 IC=N+1,NC
72527           PEI=P(IC,5)
72528           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
72529   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
72530      &    COS(PARU(2)*PYR(0))
72531           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
72532           P(IC,5)=PEF
72533           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
72534   130   CONTINUE
72535       ENDIF
72536  
72537 C...Remove cells below threshold.
72538       IF(PARU(58).GT.0D0) THEN
72539         NCC=NC
72540         NC=N
72541         DO 140 IC=N+1,NCC
72542           IF(P(IC,5).GT.PARU(58)) THEN
72543             NC=NC+1
72544             K(NC,3)=K(IC,3)
72545             K(NC,4)=K(IC,4)
72546             K(NC,5)=K(IC,5)
72547             P(NC,1)=P(IC,1)
72548             P(NC,2)=P(IC,2)
72549             P(NC,5)=P(IC,5)
72550           ENDIF
72551   140   CONTINUE
72552       ENDIF
72553  
72554 C...Find initiator cell: the one with highest pT of not yet used ones.
72555       NJ=NC
72556   150 ETMAX=0D0
72557       DO 160 IC=N+1,NC
72558         IF(K(IC,5).NE.2) GOTO 160
72559         IF(P(IC,5).LE.ETMAX) GOTO 160
72560         ICMAX=IC
72561         ETA=P(IC,1)
72562         PHI=P(IC,2)
72563         ETMAX=P(IC,5)
72564   160 CONTINUE
72565       IF(ETMAX.LT.PARU(52)) GOTO 220
72566       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
72567         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
72568         NJET=-2
72569         RETURN
72570       ENDIF
72571       K(ICMAX,5)=1
72572       NJ=NJ+1
72573       K(NJ,4)=0
72574       K(NJ,5)=1
72575       P(NJ,1)=ETA
72576       P(NJ,2)=PHI
72577       P(NJ,3)=0D0
72578       P(NJ,4)=0D0
72579       P(NJ,5)=0D0
72580  
72581 C...Sum up unused cells within required distance of initiator.
72582       DO 170 IC=N+1,NC
72583         IF(K(IC,5).EQ.0) GOTO 170
72584         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
72585         DPHIA=ABS(P(IC,2)-PHI)
72586         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
72587         PHIC=P(IC,2)
72588         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
72589         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
72590         K(IC,5)=-K(IC,5)
72591         K(NJ,4)=K(NJ,4)+K(IC,4)
72592         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
72593         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
72594         P(NJ,5)=P(NJ,5)+P(IC,5)
72595   170 CONTINUE
72596  
72597 C...Reject cluster below minimum ET, else accept.
72598       IF(P(NJ,5).LT.PARU(53)) THEN
72599         NJ=NJ-1
72600         DO 180 IC=N+1,NC
72601           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
72602   180   CONTINUE
72603       ELSEIF(MSTU(54).LE.2) THEN
72604         P(NJ,3)=P(NJ,3)/P(NJ,5)
72605         P(NJ,4)=P(NJ,4)/P(NJ,5)
72606         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
72607      &  P(NJ,4))
72608         DO 190 IC=N+1,NC
72609           IF(K(IC,5).LT.0) K(IC,5)=0
72610   190   CONTINUE
72611       ELSE
72612         DO 200 J=1,4
72613           P(NJ,J)=0D0
72614   200   CONTINUE
72615         DO 210 IC=N+1,NC
72616           IF(K(IC,5).GE.0) GOTO 210
72617           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
72618           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
72619           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
72620           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
72621           K(IC,5)=0
72622   210   CONTINUE
72623       ENDIF
72624       GOTO 150
72625  
72626 C...Arrange clusters in falling ET sequence.
72627   220 DO 250 I=1,NJ-NC
72628         ETMAX=0D0
72629         DO 230 IJ=NC+1,NJ
72630           IF(K(IJ,5).EQ.0) GOTO 230
72631           IF(P(IJ,5).LT.ETMAX) GOTO 230
72632           IJMAX=IJ
72633           ETMAX=P(IJ,5)
72634   230   CONTINUE
72635         K(IJMAX,5)=0
72636         K(N+I,1)=31
72637         K(N+I,2)=98
72638         K(N+I,3)=I
72639         K(N+I,4)=K(IJMAX,4)
72640         K(N+I,5)=0
72641         DO 240 J=1,5
72642           P(N+I,J)=P(IJMAX,J)
72643           V(N+I,J)=0D0
72644   240   CONTINUE
72645   250 CONTINUE
72646       NJET=NJ-NC
72647  
72648 C...Convert to massless or massive four-vectors.
72649       IF(MSTU(54).EQ.2) THEN
72650         DO 260 I=N+1,N+NJET
72651           ETA=P(I,3)
72652           P(I,1)=P(I,5)*COS(P(I,4))
72653           P(I,2)=P(I,5)*SIN(P(I,4))
72654           P(I,3)=P(I,5)*SINH(ETA)
72655           P(I,4)=P(I,5)*COSH(ETA)
72656           P(I,5)=0D0
72657   260   CONTINUE
72658       ELSEIF(MSTU(54).GE.3) THEN
72659         DO 270 I=N+1,N+NJET
72660           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
72661   270   CONTINUE
72662       ENDIF
72663  
72664 C...Information about storage.
72665       MSTU(61)=N+1
72666       MSTU(62)=NP
72667       MSTU(63)=NC-N
72668       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
72669       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
72670  
72671       RETURN
72672       END
72673  
72674 C*********************************************************************
72675  
72676 C...PYJMAS
72677 C...Determines, approximately, the two jet masses that minimize
72678 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
72679  
72680       SUBROUTINE PYJMAS(PMH,PML)
72681  
72682 C...Double precision and integer declarations.
72683       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72684       IMPLICIT INTEGER(I-N)
72685       INTEGER PYK,PYCHGE,PYCOMP
72686 C...Parameter statement to help give large particle numbers.
72687       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72688      &KEXCIT=4000000,KDIMEN=5000000)
72689 C...Commonblocks.
72690       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72691       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72692       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72693       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72694 C...Local arrays.
72695       DIMENSION SM(3,3),SAX(3),PS(3,5)
72696  
72697 C...Reset.
72698       NP=0
72699       DO 120 J1=1,3
72700         DO 100 J2=J1,3
72701           SM(J1,J2)=0D0
72702   100   CONTINUE
72703         DO 110 J2=1,4
72704           PS(J1,J2)=0D0
72705   110   CONTINUE
72706   120 CONTINUE
72707       PSS=0D0
72708       PIMASS=PMAS(PYCOMP(211),1)
72709  
72710 C...Take copy of particles that are to be considered in mass analysis.
72711       DO 170 I=1,N
72712         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
72713         IF(MSTU(41).GE.2) THEN
72714           KC=PYCOMP(K(I,2))
72715           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72716      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72717      &    K(I,2).EQ.KSUSY1+39) GOTO 170
72718           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72719      &    GOTO 170
72720         ENDIF
72721         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
72722           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
72723           PMH=-2D0
72724           PML=-2D0
72725           RETURN
72726         ENDIF
72727         NP=NP+1
72728         DO 130 J=1,5
72729           P(N+NP,J)=P(I,J)
72730   130   CONTINUE
72731         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
72732         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
72733         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72734  
72735 C...Fill information in sphericity tensor and total momentum vector.
72736         DO 150 J1=1,3
72737           DO 140 J2=J1,3
72738             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
72739   140     CONTINUE
72740   150   CONTINUE
72741         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72742         DO 160 J=1,4
72743           PS(3,J)=PS(3,J)+P(N+NP,J)
72744   160   CONTINUE
72745   170 CONTINUE
72746  
72747 C...Very low multiplicities (0 or 1) not considered.
72748       IF(NP.LE.1) THEN
72749         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
72750         PMH=-1D0
72751         PML=-1D0
72752         RETURN
72753       ENDIF
72754       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
72755      &PS(3,3)**2))
72756  
72757 C...Find largest eigenvalue to matrix (third degree equation).
72758       DO 190 J1=1,3
72759         DO 180 J2=J1,3
72760           SM(J1,J2)=SM(J1,J2)/PSS
72761   180   CONTINUE
72762   190 CONTINUE
72763       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
72764      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
72765       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
72766      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
72767      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
72768       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
72769       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
72770  
72771 C...Find largest eigenvector by solving equation system.
72772       DO 210 J1=1,3
72773         SM(J1,J1)=SM(J1,J1)-SMA
72774         DO 200 J2=J1+1,3
72775           SM(J2,J1)=SM(J1,J2)
72776   200   CONTINUE
72777   210 CONTINUE
72778       SMAX=0D0
72779       DO 230 J1=1,3
72780         DO 220 J2=1,3
72781           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
72782           JA=J1
72783           JB=J2
72784           SMAX=ABS(SM(J1,J2))
72785   220   CONTINUE
72786   230 CONTINUE
72787       SMAX=0D0
72788       DO 250 J3=JA+1,JA+2
72789         J1=J3-3*((J3-1)/3)
72790         RL=SM(J1,JB)/SM(JA,JB)
72791         DO 240 J2=1,3
72792           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
72793           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
72794           JC=J1
72795           SMAX=ABS(SM(J1,J2))
72796   240   CONTINUE
72797   250 CONTINUE
72798       JB1=JB+1-3*(JB/3)
72799       JB2=JB+2-3*((JB+1)/3)
72800       SAX(JB1)=-SM(JC,JB2)
72801       SAX(JB2)=SM(JC,JB1)
72802       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
72803  
72804 C...Divide particles into two initial clusters by hemisphere.
72805       DO 270 I=N+1,N+NP
72806         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
72807         IS=1
72808         IF(PSAX.LT.0D0) IS=2
72809         K(I,3)=IS
72810         DO 260 J=1,4
72811           PS(IS,J)=PS(IS,J)+P(I,J)
72812   260   CONTINUE
72813   270 CONTINUE
72814       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
72815      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
72816  
72817 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
72818   280 PMD=0D0
72819       IM=0
72820       DO 290 J=1,4
72821         PS(3,J)=PS(1,J)-PS(2,J)
72822   290 CONTINUE
72823       DO 300 I=N+1,N+NP
72824         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)
72825         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
72826         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
72827         IF(PMDI.LT.PMD) THEN
72828           PMD=PMDI
72829           IM=I
72830         ENDIF
72831   300 CONTINUE
72832  
72833 C...Loop back if significant reduction in sum of m^2.
72834       IF(PMD.LT.-PARU(48)*PMS) THEN
72835         PMS=PMS+PMD
72836         IS=K(IM,3)
72837         DO 310 J=1,4
72838           PS(IS,J)=PS(IS,J)-P(IM,J)
72839           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
72840   310   CONTINUE
72841         K(IM,3)=3-IS
72842         GOTO 280
72843       ENDIF
72844  
72845 C...Final masses and output.
72846       MSTU(61)=N+1
72847       MSTU(62)=NP
72848       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
72849       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
72850       PMH=MAX(PS(1,5),PS(2,5))
72851       PML=MIN(PS(1,5),PS(2,5))
72852  
72853       RETURN
72854       END
72855  
72856 C*********************************************************************
72857  
72858 C...PYFOWO
72859 C...Calculates the first few Fox-Wolfram moments.
72860  
72861       SUBROUTINE PYFOWO(H10,H20,H30,H40)
72862  
72863 C...Double precision and integer declarations.
72864       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72865       IMPLICIT INTEGER(I-N)
72866       INTEGER PYK,PYCHGE,PYCOMP
72867 C...Parameter statement to help give large particle numbers.
72868       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72869      &KEXCIT=4000000,KDIMEN=5000000)
72870 C...Commonblocks.
72871       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72872       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72873       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72874       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
72875  
72876 C...Copy momenta for particles and calculate H0.
72877       NP=0
72878       H0=0D0
72879       HD=0D0
72880       DO 110 I=1,N
72881         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
72882         IF(MSTU(41).GE.2) THEN
72883           KC=PYCOMP(K(I,2))
72884           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72885      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72886      &    K(I,2).EQ.KSUSY1+39) GOTO 110
72887           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
72888      &    GOTO 110
72889         ENDIF
72890         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
72891           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
72892           H10=-1D0
72893           H20=-1D0
72894           H30=-1D0
72895           H40=-1D0
72896           RETURN
72897         ENDIF
72898         NP=NP+1
72899         DO 100 J=1,3
72900           P(N+NP,J)=P(I,J)
72901   100   CONTINUE
72902         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
72903         H0=H0+P(N+NP,4)
72904         HD=HD+P(N+NP,4)**2
72905   110 CONTINUE
72906       H0=H0**2
72907  
72908 C...Very low multiplicities (0 or 1) not considered.
72909       IF(NP.LE.1) THEN
72910         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
72911         H10=-1D0
72912         H20=-1D0
72913         H30=-1D0
72914         H40=-1D0
72915         RETURN
72916       ENDIF
72917  
72918 C...Calculate H1 - H4.
72919       H10=0D0
72920       H20=0D0
72921       H30=0D0
72922       H40=0D0
72923       DO 130 I1=N+1,N+NP
72924         DO 120 I2=I1+1,N+NP
72925           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
72926      &    (P(I1,4)*P(I2,4))
72927           H10=H10+P(I1,4)*P(I2,4)*CTHE
72928           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
72929           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
72930           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
72931      &    0.375D0)
72932   120   CONTINUE
72933   130 CONTINUE
72934  
72935 C...Calculate H1/H0 - H4/H0. Output.
72936       MSTU(61)=N+1
72937       MSTU(62)=NP
72938       H10=(HD+2D0*H10)/H0
72939       H20=(HD+2D0*H20)/H0
72940       H30=(HD+2D0*H30)/H0
72941       H40=(HD+2D0*H40)/H0
72942  
72943       RETURN
72944       END
72945  
72946 C*********************************************************************
72947  
72948 C...PYTABU
72949 C...Evaluates various properties of an event, with statistics
72950 C...accumulated during the course of the run and
72951 C...printed at the end.
72952  
72953       SUBROUTINE PYTABU(MTABU)
72954  
72955 C...Double precision and integer declarations.
72956       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72957       IMPLICIT INTEGER(I-N)
72958       INTEGER PYK,PYCHGE,PYCOMP
72959 C...Parameter statement to help give large particle numbers.
72960       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72961      &KEXCIT=4000000,KDIMEN=5000000)
72962 C...Commonblocks.
72963       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72964       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72965       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72966       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
72967       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
72968 C...Local arrays, character variables, saved variables and data.
72969       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
72970      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
72971      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
72972      &KFDM(8),KFDC(200,0:8),NPDC(200)
72973       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
72974      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
72975      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
72976       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
72977       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
72978      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
72979      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
72980      &NEVDC/0/,NKFDC/0/,NREDC/0/
72981  
72982 C...Reset statistics on initial parton state.
72983       IF(MTABU.EQ.10) THEN
72984         NEVIS=0
72985         NKFIS=0
72986  
72987 C...Identify and order flavour content of initial state.
72988       ELSEIF(MTABU.EQ.11) THEN
72989         NEVIS=NEVIS+1
72990         KFM1=2*IABS(MSTU(161))
72991         IF(MSTU(161).GT.0) KFM1=KFM1-1
72992         KFM2=2*IABS(MSTU(162))
72993         IF(MSTU(162).GT.0) KFM2=KFM2-1
72994         KFMN=MIN(KFM1,KFM2)
72995         KFMX=MAX(KFM1,KFM2)
72996         DO 100 I=1,NKFIS
72997           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
72998             IKFIS=-I
72999             GOTO 110
73000           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
73001      &      KFMX.LT.KFIS(I,2))) THEN
73002             IKFIS=I
73003             GOTO 110
73004           ENDIF
73005   100   CONTINUE
73006         IKFIS=NKFIS+1
73007   110   IF(IKFIS.LT.0) THEN
73008           IKFIS=-IKFIS
73009         ELSE
73010           IF(NKFIS.GE.100) RETURN
73011           DO 130 I=NKFIS,IKFIS,-1
73012             KFIS(I+1,1)=KFIS(I,1)
73013             KFIS(I+1,2)=KFIS(I,2)
73014             DO 120 J=0,10
73015               NPIS(I+1,J)=NPIS(I,J)
73016   120       CONTINUE
73017   130     CONTINUE
73018           NKFIS=NKFIS+1
73019           KFIS(IKFIS,1)=KFMN
73020           KFIS(IKFIS,2)=KFMX
73021           DO 140 J=0,10
73022             NPIS(IKFIS,J)=0
73023   140     CONTINUE
73024         ENDIF
73025         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
73026  
73027 C...Count number of partons in initial state.
73028         NP=0
73029         DO 160 I=1,N
73030           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
73031           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
73032           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
73033      &      THEN
73034           ELSE
73035             IM=I
73036   150       IM=K(IM,3)
73037             IF(IM.LE.0.OR.IM.GT.N) THEN
73038               NP=NP+1
73039             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
73040               NP=NP+1
73041             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
73042             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
73043      &        .NE.0) THEN
73044             ELSE
73045               GOTO 150
73046             ENDIF
73047           ENDIF
73048   160   CONTINUE
73049         NPCO=MAX(NP,1)
73050         IF(NP.GE.6) NPCO=6
73051         IF(NP.GE.8) NPCO=7
73052         IF(NP.GE.11) NPCO=8
73053         IF(NP.GE.16) NPCO=9
73054         IF(NP.GE.26) NPCO=10
73055         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
73056         MSTU(62)=NP
73057  
73058 C...Write statistics on initial parton state.
73059       ELSEIF(MTABU.EQ.12) THEN
73060         FAC=1D0/MAX(1,NEVIS)
73061         WRITE(MSTU(11),5000) NEVIS
73062         DO 170 I=1,NKFIS
73063           KFMN=KFIS(I,1)
73064           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
73065           KFM1=(KFMN+1)/2
73066           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
73067           CALL PYNAME(KFM1,CHAU)
73068           CHIS(1)=CHAU(1:12)
73069           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
73070           KFMX=KFIS(I,2)
73071           IF(KFIS(I,1).EQ.0) KFMX=0
73072           KFM2=(KFMX+1)/2
73073           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
73074           CALL PYNAME(KFM2,CHAU)
73075           CHIS(2)=CHAU(1:12)
73076           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
73077           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
73078      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
73079   170   CONTINUE
73080  
73081 C...Copy statistics on initial parton state into /PYJETS/.
73082       ELSEIF(MTABU.EQ.13) THEN
73083         FAC=1D0/MAX(1,NEVIS)
73084         DO 190 I=1,NKFIS
73085           KFMN=KFIS(I,1)
73086           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
73087           KFM1=(KFMN+1)/2
73088           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
73089           KFMX=KFIS(I,2)
73090           IF(KFIS(I,1).EQ.0) KFMX=0
73091           KFM2=(KFMX+1)/2
73092           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
73093           K(I,1)=32
73094           K(I,2)=99
73095           K(I,3)=KFM1
73096           K(I,4)=KFM2
73097           K(I,5)=NPIS(I,0)
73098           DO 180 J=1,5
73099             P(I,J)=FAC*NPIS(I,J)
73100             V(I,J)=FAC*NPIS(I,J+5)
73101   180     CONTINUE
73102   190   CONTINUE
73103         N=NKFIS
73104         DO 200 J=1,5
73105           K(N+1,J)=0
73106           P(N+1,J)=0D0
73107           V(N+1,J)=0D0
73108   200   CONTINUE
73109         K(N+1,1)=32
73110         K(N+1,2)=99
73111         K(N+1,5)=NEVIS
73112         MSTU(3)=1
73113  
73114 C...Reset statistics on number of particles/partons.
73115       ELSEIF(MTABU.EQ.20) THEN
73116         NEVFS=0
73117         NPRFS=0
73118         NFIFS=0
73119         NCHFS=0
73120         NKFFS=0
73121  
73122 C...Identify whether particle/parton is primary or not.
73123       ELSEIF(MTABU.EQ.21) THEN
73124         NEVFS=NEVFS+1
73125         MSTU(62)=0
73126         DO 260 I=1,N
73127           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
73128           MSTU(62)=MSTU(62)+1
73129           KC=PYCOMP(K(I,2))
73130           MPRI=0
73131           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
73132             MPRI=1
73133           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
73134             MPRI=1
73135           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
73136             MPRI=1
73137           ELSEIF(KC.EQ.0) THEN
73138           ELSEIF(K(K(I,3),1).EQ.13) THEN
73139             IM=K(K(I,3),3)
73140             IF(IM.LE.0.OR.IM.GT.N) THEN
73141               MPRI=1
73142             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
73143               MPRI=1
73144             ENDIF
73145           ELSEIF(KCHG(KC,2).EQ.0) THEN
73146             KCM=PYCOMP(K(K(I,3),2))
73147             IF(KCM.NE.0) THEN
73148               IF(KCHG(KCM,2).NE.0) MPRI=1
73149             ENDIF
73150           ENDIF
73151           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
73152             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
73153           ENDIF
73154           IF(K(I,1).LE.10) THEN
73155             NFIFS=NFIFS+1
73156             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
73157           ENDIF
73158  
73159 C...Fill statistics on number of particles/partons in event.
73160           KFA=IABS(K(I,2))
73161           KFS=3-ISIGN(1,K(I,2))-MPRI
73162           DO 210 IP=1,NKFFS
73163             IF(KFA.EQ.KFFS(IP)) THEN
73164               IKFFS=-IP
73165               GOTO 220
73166             ELSEIF(KFA.LT.KFFS(IP)) THEN
73167               IKFFS=IP
73168               GOTO 220
73169             ENDIF
73170   210     CONTINUE
73171           IKFFS=NKFFS+1
73172   220     IF(IKFFS.LT.0) THEN
73173             IKFFS=-IKFFS
73174           ELSE
73175             IF(NKFFS.GE.400) RETURN
73176             DO 240 IP=NKFFS,IKFFS,-1
73177               KFFS(IP+1)=KFFS(IP)
73178               DO 230 J=1,4
73179                 NPFS(IP+1,J)=NPFS(IP,J)
73180   230         CONTINUE
73181   240       CONTINUE
73182             NKFFS=NKFFS+1
73183             KFFS(IKFFS)=KFA
73184             DO 250 J=1,4
73185               NPFS(IKFFS,J)=0
73186   250       CONTINUE
73187           ENDIF
73188           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
73189   260   CONTINUE
73190  
73191 C...Write statistics on particle/parton composition of events.
73192       ELSEIF(MTABU.EQ.22) THEN
73193         FAC=1D0/MAX(1,NEVFS)
73194         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
73195         DO 270 I=1,NKFFS
73196           CALL PYNAME(KFFS(I),CHAU)
73197           KC=PYCOMP(KFFS(I))
73198           MDCYF=0
73199           IF(KC.NE.0) MDCYF=MDCY(KC,1)
73200           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
73201      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
73202   270   CONTINUE
73203  
73204 C...Copy particle/parton composition information into /PYJETS/.
73205       ELSEIF(MTABU.EQ.23) THEN
73206         FAC=1D0/MAX(1,NEVFS)
73207         DO 290 I=1,NKFFS
73208           K(I,1)=32
73209           K(I,2)=99
73210           K(I,3)=KFFS(I)
73211           K(I,4)=0
73212           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
73213           DO 280 J=1,4
73214             P(I,J)=FAC*NPFS(I,J)
73215             V(I,J)=0D0
73216   280     CONTINUE
73217           P(I,5)=FAC*K(I,5)
73218           V(I,5)=0D0
73219   290   CONTINUE
73220         N=NKFFS
73221         DO 300 J=1,5
73222           K(N+1,J)=0
73223           P(N+1,J)=0D0
73224           V(N+1,J)=0D0
73225   300   CONTINUE
73226         K(N+1,1)=32
73227         K(N+1,2)=99
73228         K(N+1,5)=NEVFS
73229         P(N+1,1)=FAC*NPRFS
73230         P(N+1,2)=FAC*NFIFS
73231         P(N+1,3)=FAC*NCHFS
73232         MSTU(3)=1
73233  
73234 C...Reset factorial moments statistics.
73235       ELSEIF(MTABU.EQ.30) THEN
73236         NEVFM=0
73237         NMUFM=0
73238         DO 330 IM=1,3
73239           DO 320 IB=1,10
73240             DO 310 IP=1,4
73241               FM1FM(IM,IB,IP)=0D0
73242               FM2FM(IM,IB,IP)=0D0
73243   310       CONTINUE
73244   320     CONTINUE
73245   330   CONTINUE
73246  
73247 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
73248       ELSEIF(MTABU.EQ.31) THEN
73249         NEVFM=NEVFM+1
73250         NLOW=N+MSTU(3)
73251         NUPP=NLOW
73252         DO 410 I=1,N
73253           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
73254           IF(MSTU(41).GE.2) THEN
73255             KC=PYCOMP(K(I,2))
73256             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73257      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73258      &      K(I,2).EQ.KSUSY1+39) GOTO 410
73259             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
73260      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
73261           ENDIF
73262           PMR=0D0
73263           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
73264           IF(MSTU(42).GE.2) PMR=P(I,5)
73265           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
73266           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
73267      &    1D20)),P(I,3))
73268           IF(ABS(YETA).GT.PARU(57)) GOTO 410
73269           PHI=PYANGL(P(I,1),P(I,2))
73270           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
73271           IYETA=MAX(0,MIN(511,IYETA))
73272           IPHI=512D0*(PHI+PARU(1))/PARU(2)
73273           IPHI=MAX(0,MIN(511,IPHI))
73274           IYEP=0
73275           DO 340 IB=0,9
73276             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
73277   340     CONTINUE
73278  
73279 C...Order particles in (pseudo)rapidity and/or azimuth.
73280           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
73281             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
73282             RETURN
73283           ENDIF
73284           NUPP=NUPP+1
73285           IF(NUPP.EQ.NLOW+1) THEN
73286             K(NUPP,1)=IYETA
73287             K(NUPP,2)=IPHI
73288             K(NUPP,3)=IYEP
73289           ELSE
73290             DO 350 I1=NUPP-1,NLOW+1,-1
73291               IF(IYETA.GE.K(I1,1)) GOTO 360
73292               K(I1+1,1)=K(I1,1)
73293   350       CONTINUE
73294   360       K(I1+1,1)=IYETA
73295             DO 370 I1=NUPP-1,NLOW+1,-1
73296               IF(IPHI.GE.K(I1,2)) GOTO 380
73297               K(I1+1,2)=K(I1,2)
73298   370       CONTINUE
73299   380       K(I1+1,2)=IPHI
73300             DO 390 I1=NUPP-1,NLOW+1,-1
73301               IF(IYEP.GE.K(I1,3)) GOTO 400
73302               K(I1+1,3)=K(I1,3)
73303   390       CONTINUE
73304   400       K(I1+1,3)=IYEP
73305           ENDIF
73306   410   CONTINUE
73307         K(NUPP+1,1)=2**10
73308         K(NUPP+1,2)=2**10
73309         K(NUPP+1,3)=4**10
73310  
73311 C...Calculate sum of factorial moments in event.
73312         DO 480 IM=1,3
73313           DO 430 IB=1,10
73314             DO 420 IP=1,4
73315               FEVFM(IB,IP)=0D0
73316   420       CONTINUE
73317   430     CONTINUE
73318           DO 450 IB=1,10
73319             IF(IM.LE.2) IBIN=2**(10-IB)
73320             IF(IM.EQ.3) IBIN=4**(10-IB)
73321             IAGR=K(NLOW+1,IM)/IBIN
73322             NAGR=1
73323             DO 440 I=NLOW+2,NUPP+1
73324               ICUT=K(I,IM)/IBIN
73325               IF(ICUT.EQ.IAGR) THEN
73326                 NAGR=NAGR+1
73327               ELSE
73328                 IF(NAGR.EQ.1) THEN
73329                 ELSEIF(NAGR.EQ.2) THEN
73330                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
73331                 ELSEIF(NAGR.EQ.3) THEN
73332                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
73333                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
73334                 ELSEIF(NAGR.EQ.4) THEN
73335                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
73336                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
73337                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
73338                 ELSE
73339                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
73340                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
73341                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
73342      &            (NAGR-3D0)
73343                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
73344      &            (NAGR-3D0)*(NAGR-4D0)
73345                 ENDIF
73346                 IAGR=ICUT
73347                 NAGR=1
73348               ENDIF
73349   440       CONTINUE
73350   450     CONTINUE
73351  
73352 C...Add results to total statistics.
73353           DO 470 IB=10,1,-1
73354             DO 460 IP=1,4
73355               IF(FEVFM(1,IP).LT.0.5D0) THEN
73356                 FEVFM(IB,IP)=0D0
73357               ELSEIF(IM.LE.2) THEN
73358                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
73359               ELSE
73360                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
73361               ENDIF
73362               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
73363               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
73364   460       CONTINUE
73365   470     CONTINUE
73366   480   CONTINUE
73367         NMUFM=NMUFM+(NUPP-NLOW)
73368         MSTU(62)=NUPP-NLOW
73369  
73370 C...Write accumulated statistics on factorial moments.
73371       ELSEIF(MTABU.EQ.32) THEN
73372         FAC=1D0/MAX(1,NEVFM)
73373         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
73374         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
73375         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
73376         DO 510 IM=1,3
73377           WRITE(MSTU(11),5500)
73378           DO 500 IB=1,10
73379             BYETA=2D0*PARU(57)
73380             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
73381             BPHI=PARU(2)
73382             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
73383             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
73384             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
73385             DO 490 IP=1,4
73386               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
73387               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
73388      &        FMOMA(IP)**2)))
73389   490       CONTINUE
73390             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
73391      &      IP=1,4)
73392   500     CONTINUE
73393   510   CONTINUE
73394  
73395 C...Copy statistics on factorial moments into /PYJETS/.
73396       ELSEIF(MTABU.EQ.33) THEN
73397         FAC=1D0/MAX(1,NEVFM)
73398         DO 540 IM=1,3
73399           DO 530 IB=1,10
73400             I=10*(IM-1)+IB
73401             K(I,1)=32
73402             K(I,2)=99
73403             K(I,3)=1
73404             IF(IM.NE.2) K(I,3)=2**(IB-1)
73405             K(I,4)=1
73406             IF(IM.NE.1) K(I,4)=2**(IB-1)
73407             K(I,5)=0
73408             P(I,1)=2D0*PARU(57)/K(I,3)
73409             V(I,1)=PARU(2)/K(I,4)
73410             DO 520 IP=1,4
73411               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
73412               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
73413      &        P(I,IP+1)**2)))
73414   520       CONTINUE
73415   530     CONTINUE
73416   540   CONTINUE
73417         N=30
73418         DO 550 J=1,5
73419           K(N+1,J)=0
73420           P(N+1,J)=0D0
73421           V(N+1,J)=0D0
73422   550   CONTINUE
73423         K(N+1,1)=32
73424         K(N+1,2)=99
73425         K(N+1,5)=NEVFM
73426         MSTU(3)=1
73427  
73428 C...Reset statistics on Energy-Energy Correlation.
73429       ELSEIF(MTABU.EQ.40) THEN
73430         NEVEE=0
73431         DO 560 J=1,25
73432           FE1EC(J)=0D0
73433           FE2EC(J)=0D0
73434           FE1EC(51-J)=0D0
73435           FE2EC(51-J)=0D0
73436           FE1EA(J)=0D0
73437           FE2EA(J)=0D0
73438   560   CONTINUE
73439  
73440 C...Find particles to include, with proper assumed mass.
73441       ELSEIF(MTABU.EQ.41) THEN
73442         NEVEE=NEVEE+1
73443         NLOW=N+MSTU(3)
73444         NUPP=NLOW
73445         ECM=0D0
73446         DO 570 I=1,N
73447           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
73448           IF(MSTU(41).GE.2) THEN
73449             KC=PYCOMP(K(I,2))
73450             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73451      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73452      &      K(I,2).EQ.KSUSY1+39) GOTO 570
73453             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
73454      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
73455           ENDIF
73456           PMR=0D0
73457           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
73458           IF(MSTU(42).GE.2) PMR=P(I,5)
73459           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
73460             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
73461             RETURN
73462           ENDIF
73463           NUPP=NUPP+1
73464           P(NUPP,1)=P(I,1)
73465           P(NUPP,2)=P(I,2)
73466           P(NUPP,3)=P(I,3)
73467           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
73468           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
73469           ECM=ECM+P(NUPP,4)
73470   570   CONTINUE
73471         IF(NUPP.EQ.NLOW) RETURN
73472  
73473 C...Analyze Energy-Energy Correlation in event.
73474         FAC=(2D0/ECM**2)*50D0/PARU(1)
73475         DO 580 J=1,50
73476           FEVEE(J)=0D0
73477   580   CONTINUE
73478         DO 600 I1=NLOW+2,NUPP
73479           DO 590 I2=NLOW+1,I1-1
73480             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
73481      &      (P(I1,5)*P(I2,5))
73482             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
73483             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
73484             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
73485   590     CONTINUE
73486   600   CONTINUE
73487         DO 610 J=1,25
73488           FE1EC(J)=FE1EC(J)+FEVEE(J)
73489           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
73490           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
73491           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
73492           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
73493           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
73494   610   CONTINUE
73495         MSTU(62)=NUPP-NLOW
73496  
73497 C...Write statistics on Energy-Energy Correlation.
73498       ELSEIF(MTABU.EQ.42) THEN
73499         FAC=1D0/MAX(1,NEVEE)
73500         WRITE(MSTU(11),5700) NEVEE
73501         DO 620 J=1,25
73502           FEEC1=FAC*FE1EC(J)
73503           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
73504           FEEC2=FAC*FE1EC(51-J)
73505           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
73506           FEECA=FAC*FE1EA(J)
73507           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
73508           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
73509      &    FEEC2,FEES2,FEECA,FEESA
73510   620   CONTINUE
73511  
73512 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
73513       ELSEIF(MTABU.EQ.43) THEN
73514         FAC=1D0/MAX(1,NEVEE)
73515         DO 630 I=1,25
73516           K(I,1)=32
73517           K(I,2)=99
73518           K(I,3)=0
73519           K(I,4)=0
73520           K(I,5)=0
73521           P(I,1)=FAC*FE1EC(I)
73522           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
73523           P(I,2)=FAC*FE1EC(51-I)
73524           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
73525           P(I,3)=FAC*FE1EA(I)
73526           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
73527           P(I,4)=PARU(1)*(I-1)/50D0
73528           P(I,5)=PARU(1)*I/50D0
73529           V(I,4)=3.6D0*(I-1)
73530           V(I,5)=3.6D0*I
73531   630   CONTINUE
73532         N=25
73533         DO 640 J=1,5
73534           K(N+1,J)=0
73535           P(N+1,J)=0D0
73536           V(N+1,J)=0D0
73537   640   CONTINUE
73538         K(N+1,1)=32
73539         K(N+1,2)=99
73540         K(N+1,5)=NEVEE
73541         MSTU(3)=1
73542  
73543 C...Reset statistics on decay channels.
73544       ELSEIF(MTABU.EQ.50) THEN
73545         NEVDC=0
73546         NKFDC=0
73547         NREDC=0
73548  
73549 C...Identify and order flavour content of final state.
73550       ELSEIF(MTABU.EQ.51) THEN
73551         NEVDC=NEVDC+1
73552         NDS=0
73553         DO 670 I=1,N
73554           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
73555           NDS=NDS+1
73556           IF(NDS.GT.8) THEN
73557             NREDC=NREDC+1
73558             RETURN
73559           ENDIF
73560           KFM=2*IABS(K(I,2))
73561           IF(K(I,2).LT.0) KFM=KFM-1
73562           DO 650 IDS=NDS-1,1,-1
73563             IIN=IDS+1
73564             IF(KFM.LT.KFDM(IDS)) GOTO 660
73565             KFDM(IDS+1)=KFDM(IDS)
73566   650     CONTINUE
73567           IIN=1
73568   660     KFDM(IIN)=KFM
73569   670   CONTINUE
73570  
73571 C...Find whether old or new final state.
73572         DO 690 IDC=1,NKFDC
73573           IF(NDS.LT.KFDC(IDC,0)) THEN
73574             IKFDC=IDC
73575             GOTO 700
73576           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
73577             DO 680 I=1,NDS
73578               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
73579                 IKFDC=IDC
73580                 GOTO 700
73581               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
73582                 GOTO 690
73583               ENDIF
73584   680       CONTINUE
73585             IKFDC=-IDC
73586             GOTO 700
73587           ENDIF
73588   690   CONTINUE
73589         IKFDC=NKFDC+1
73590   700   IF(IKFDC.LT.0) THEN
73591           IKFDC=-IKFDC
73592         ELSEIF(NKFDC.GE.200) THEN
73593           NREDC=NREDC+1
73594           RETURN
73595         ELSE
73596           DO 720 IDC=NKFDC,IKFDC,-1
73597             NPDC(IDC+1)=NPDC(IDC)
73598             DO 710 I=0,8
73599               KFDC(IDC+1,I)=KFDC(IDC,I)
73600   710       CONTINUE
73601   720     CONTINUE
73602           NKFDC=NKFDC+1
73603           KFDC(IKFDC,0)=NDS
73604           DO 730 I=1,NDS
73605             KFDC(IKFDC,I)=KFDM(I)
73606   730     CONTINUE
73607           NPDC(IKFDC)=0
73608         ENDIF
73609         NPDC(IKFDC)=NPDC(IKFDC)+1
73610  
73611 C...Write statistics on decay channels.
73612       ELSEIF(MTABU.EQ.52) THEN
73613         FAC=1D0/MAX(1,NEVDC)
73614         WRITE(MSTU(11),5900) NEVDC
73615         DO 750 IDC=1,NKFDC
73616           DO 740 I=1,KFDC(IDC,0)
73617             KFM=KFDC(IDC,I)
73618             KF=(KFM+1)/2
73619             IF(2*KF.NE.KFM) KF=-KF
73620             CALL PYNAME(KF,CHAU)
73621             CHDC(I)=CHAU(1:12)
73622             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
73623   740     CONTINUE
73624           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
73625   750   CONTINUE
73626         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
73627  
73628 C...Copy statistics on decay channels into /PYJETS/.
73629       ELSEIF(MTABU.EQ.53) THEN
73630         FAC=1D0/MAX(1,NEVDC)
73631         DO 780 IDC=1,NKFDC
73632           K(IDC,1)=32
73633           K(IDC,2)=99
73634           K(IDC,3)=0
73635           K(IDC,4)=0
73636           K(IDC,5)=KFDC(IDC,0)
73637           DO 760 J=1,5
73638             P(IDC,J)=0D0
73639             V(IDC,J)=0D0
73640   760     CONTINUE
73641           DO 770 I=1,KFDC(IDC,0)
73642             KFM=KFDC(IDC,I)
73643             KF=(KFM+1)/2
73644             IF(2*KF.NE.KFM) KF=-KF
73645             IF(I.LE.5) P(IDC,I)=KF
73646             IF(I.GE.6) V(IDC,I-5)=KF
73647   770     CONTINUE
73648           V(IDC,5)=FAC*NPDC(IDC)
73649   780   CONTINUE
73650         N=NKFDC
73651         DO 790 J=1,5
73652           K(N+1,J)=0
73653           P(N+1,J)=0D0
73654           V(N+1,J)=0D0
73655   790   CONTINUE
73656         K(N+1,1)=32
73657         K(N+1,2)=99
73658         K(N+1,5)=NEVDC
73659         V(N+1,5)=FAC*NREDC
73660         MSTU(3)=1
73661       ENDIF
73662  
73663 C...Format statements for output on unit MSTU(11) (default 6).
73664  5000 FORMAT(///20X,'Event statistics - initial state'/
73665      &20X,'based on an analysis of ',I6,' events'//
73666      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
73667      &'according to fragmenting system multiplicity'/
73668      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
73669      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
73670  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
73671  5200 FORMAT(///20X,'Event statistics - final state'/
73672      &20X,'based on an analysis of ',I7,' events'//
73673      &5X,'Mean primary multiplicity =',F10.4/
73674      &5X,'Mean final   multiplicity =',F10.4/
73675      &5X,'Mean charged multiplicity =',F10.4//
73676      &5X,'Number of particles produced per event (directly and via ',
73677      &'decays/branchings)'/
73678      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
73679      &8X,'Total'/35X,'prim        seco        prim        seco'/)
73680  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
73681  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
73682      &20X,'based on an analysis of ',I6,' events'//
73683      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
73684      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
73685  5500 FORMAT(10X)
73686  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
73687  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
73688      &20X,'based on an analysis of ',I6,' events'//
73689      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
73690      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
73691  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
73692  5900 FORMAT(///20X,'Decay channel analysis - final state'/
73693      &20X,'based on an analysis of ',I6,' events'//
73694      &2X,'Probability',10X,'Complete final state'/)
73695  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
73696  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
73697      &'or table overflow)')
73698  
73699       RETURN
73700       END
73701  
73702 C*********************************************************************
73703  
73704 C...PYEEVT
73705 C...Handles the generation of an e+e- annihilation jet event.
73706  
73707       SUBROUTINE PYEEVT(KFL,ECM)
73708  
73709 C...Double precision and integer declarations.
73710       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73711       IMPLICIT INTEGER(I-N)
73712       INTEGER PYK,PYCHGE,PYCOMP
73713 C...Commonblocks.
73714       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
73715       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73716       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73717       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
73718  
73719 C...Check input parameters.
73720       IF(MSTU(12).NE.12345) CALL PYLIST(0)
73721       IF(KFL.LT.0.OR.KFL.GT.8) THEN
73722         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
73723         IF(MSTU(21).GE.1) RETURN
73724       ENDIF
73725       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
73726       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
73727       IF(ECM.LT.ECMMIN) THEN
73728         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
73729         IF(MSTU(21).GE.1) RETURN
73730       ENDIF
73731  
73732 C...Check consistency of MSTJ options set.
73733       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
73734         CALL PYERRM(6,
73735      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
73736         MSTJ(110)=1
73737       ENDIF
73738       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
73739         CALL PYERRM(6,
73740      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
73741         MSTJ(111)=0
73742       ENDIF
73743  
73744 C...Initialize alpha_strong and total cross-section.
73745       MSTU(111)=MSTJ(108)
73746       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
73747      &MSTU(111)=1
73748       PARU(112)=PARJ(121)
73749       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
73750       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
73751      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
73752      &XTOT)
73753       IF(MSTJ(116).GE.3) MSTJ(116)=1
73754       PARJ(171)=0D0
73755  
73756 C...Add initial e+e- to event record (documentation only).
73757       NTRY=0
73758   100 NTRY=NTRY+1
73759       IF(NTRY.GT.100) THEN
73760         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
73761         RETURN
73762       ENDIF
73763       MSTU(24)=0
73764       NC=0
73765       IF(MSTJ(115).GE.2) THEN
73766         NC=NC+2
73767         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
73768         K(NC-1,1)=21
73769         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
73770         K(NC,1)=21
73771       ENDIF
73772  
73773 C...Radiative photon (in initial state).
73774       MK=0
73775       ECMC=ECM
73776       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
73777      &THEK,PHIK,ALPK)
73778       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
73779       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
73780         NC=NC+1
73781         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
73782         K(NC,3)=MIN(MSTJ(115)/2,1)
73783       ENDIF
73784  
73785 C...Virtual exchange boson (gamma or Z0).
73786       IF(MSTJ(115).GE.3) THEN
73787         NC=NC+1
73788         KF=22
73789         IF(MSTJ(102).EQ.2) KF=23
73790         MSTU10=MSTU(10)
73791         MSTU(10)=1
73792         P(NC,5)=ECMC
73793         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
73794         K(NC,1)=21
73795         K(NC,3)=1
73796         MSTU(10)=MSTU10
73797       ENDIF
73798  
73799 C...Choice of flavour and jet configuration.
73800       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
73801       IF(KFLC.EQ.0) GOTO 100
73802       CALL PYXJET(ECMC,NJET,CUT)
73803       KFLN=21
73804       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
73805      &X12,X14)
73806       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
73807       IF(NJET.EQ.2) MSTJ(120)=1
73808  
73809 C...Fill jet configuration and origin.
73810       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
73811       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
73812      &ECMC)
73813       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
73814       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
73815      &-KFLC,ECMC,X1,X2,X4,X12,X14)
73816       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
73817      &-KFLC,ECMC,X1,X2,X4,X12,X14)
73818       IF(MSTU(24).NE.0) GOTO 100
73819       DO 110 IP=NC+1,N
73820         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
73821   110 CONTINUE
73822  
73823 C...Angular orientation according to matrix element.
73824       IF(MSTJ(106).EQ.1) THEN
73825         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
73826         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
73827         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
73828       ENDIF
73829  
73830 C...Rotation and boost from radiative photon.
73831       IF(MK.EQ.1) THEN
73832         DBEK=-PAK/(ECM-PAK)
73833         NMIN=NC+1-MSTJ(115)/3
73834         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
73835         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
73836         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
73837       ENDIF
73838  
73839 C...Generate parton shower. Rearrange along strings and check.
73840       IF(MSTJ(101).EQ.5) THEN
73841         if(parj(200).ne.1.) CALL PYSHOW(N-1,N,ECMC)
73842         if(parj(200).eq.1.) CALL PYSHOWQ(N-1,N,ECMC)
73843         MSTJ14=MSTJ(14)
73844         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
73845         IF(MSTJ(105).GE.0) MSTU(28)=0
73846         CALL PYPREP(0)
73847         MSTJ(14)=MSTJ14
73848         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
73849       ENDIF
73850  
73851 C...Fragmentation/decay generation. Information for PYTABU.
73852       IF(MSTJ(105).EQ.1) CALL PYEXEC
73853       MSTU(161)=KFLC
73854       MSTU(162)=-KFLC
73855  
73856       RETURN
73857       END
73858  
73859 C*********************************************************************
73860  
73861 C...PYXTEE
73862 C...Calculates total cross-section, including initial state
73863 C...radiation effects.
73864  
73865       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
73866  
73867 C...Double precision and integer declarations.
73868       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73869       IMPLICIT INTEGER(I-N)
73870       INTEGER PYK,PYCHGE,PYCOMP
73871 C...Commonblocks.
73872       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73873       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73874       SAVE /PYDAT1/,/PYDAT2/
73875  
73876 C...Status, (optimized) Q^2 scale, alpha_strong.
73877       PARJ(151)=ECM
73878       MSTJ(119)=10*MSTJ(102)+KFL
73879       IF(MSTJ(111).EQ.0) THEN
73880         Q2R=ECM**2
73881       ELSEIF(MSTU(111).EQ.0) THEN
73882         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
73883      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
73884         Q2R=PARJ(168)*ECM**2
73885       ELSE
73886         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
73887      &  (2D0*PARU(112)/ECM)**2))
73888         Q2R=PARJ(168)*ECM**2
73889       ENDIF
73890       ALSPI=PYALPS(Q2R)/PARU(1)
73891  
73892 C...QCD corrections factor in R.
73893       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
73894         RQCD=1D0
73895       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
73896         RQCD=1D0+ALSPI
73897       ELSEIF(MSTJ(109).EQ.0) THEN
73898         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
73899         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
73900      &  LOG(PARJ(168))*ALSPI**2)
73901       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
73902         RQCD=1D0+(3D0/4D0)*ALSPI
73903       ELSE
73904         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
73905       ENDIF
73906  
73907 C...Calculate Z0 width if default value not acceptable.
73908       IF(MSTJ(102).GE.3) THEN
73909         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
73910      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
73911         DO 100 KFLC=5,6
73912           VQ=1D0
73913           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
73914      &    (2D0*PYMASS(KFLC)/ ECM)**2))
73915           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
73916           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
73917           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
73918   100   CONTINUE
73919         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
73920      &  (1D0-PARU(102)))
73921       ENDIF
73922  
73923 C...Calculate propagator and related constants for QFD case.
73924       POLL=1D0-PARJ(131)*PARJ(132)
73925       IF(MSTJ(102).GE.2) THEN
73926         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
73927         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
73928         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
73929         VE=4D0*PARU(102)-1D0
73930         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
73931         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
73932         HF1I=SFI*SF1I
73933         HF1W=SFW*SF1W
73934       ENDIF
73935  
73936 C...Loop over different flavours: charge, velocity.
73937       RTOT=0D0
73938       RQQ=0D0
73939       RQV=0D0
73940       RVA=0D0
73941       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
73942         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
73943         MSTJ(93)=1
73944         PMQ=PYMASS(KFLC)
73945         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
73946         QF=KCHG(KFLC,1)/3D0
73947         VQ=1D0
73948         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
73949  
73950 C...Calculate R and sum of charges for QED or QFD case.
73951         RQQ=RQQ+3D0*QF**2*POLL
73952         IF(MSTJ(102).LE.1) THEN
73953           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
73954         ELSE
73955           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
73956           RQV=RQV-6D0*QF*VF*SF1I
73957           RVA=RVA+3D0*(VF**2+1D0)*SF1W
73958           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
73959      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
73960         ENDIF
73961   110 CONTINUE
73962       RSUM=RQQ
73963       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
73964  
73965 C...Calculate cross-section, including QCD corrections.
73966       PARJ(141)=RQQ
73967       PARJ(142)=RTOT
73968       PARJ(143)=RTOT*RQCD
73969       PARJ(144)=PARJ(143)
73970       PARJ(145)=PARJ(141)*86.8D0/ECM**2
73971       PARJ(146)=PARJ(142)*86.8D0/ECM**2
73972       PARJ(147)=PARJ(143)*86.8D0/ECM**2
73973       PARJ(148)=PARJ(147)
73974       PARJ(157)=RSUM*RQCD
73975       PARJ(158)=0D0
73976       PARJ(159)=0D0
73977       XTOT=PARJ(147)
73978       IF(MSTJ(107).LE.0) RETURN
73979  
73980 C...Virtual cross-section.
73981       XKL=PARJ(135)
73982       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
73983       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
73984       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
73985      &1.526D0*LOG(ECM**2/0.932D0)
73986  
73987 C...Soft and hard radiative cross-section in QED case.
73988       IF(MSTJ(102).LE.1) THEN
73989         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
73990         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
73991         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
73992  
73993 C...Soft and hard radiative cross-section in QFD case.
73994       ELSE
73995         SZM=1D0-(PARJ(123)/ECM)**2
73996         SZW=PARJ(123)*PARJ(124)/ECM**2
73997         PARJ(161)=-RQQ/RSUM
73998         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
73999         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
74000         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
74001      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
74002         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
74003      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
74004         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
74005      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
74006      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
74007         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
74008      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
74009      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
74010      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
74011       ENDIF
74012  
74013 C...Total cross-section and fraction of hard photon events.
74014       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
74015       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
74016       PARJ(144)=PARJ(157)
74017       PARJ(148)=PARJ(144)*86.8D0/ECM**2
74018       XTOT=PARJ(148)
74019  
74020       RETURN
74021       END
74022  
74023 C*********************************************************************
74024  
74025 C...PYRADK
74026 C...Generates initial state photon radiation.
74027  
74028       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
74029  
74030 C...Double precision and integer declarations.
74031       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74032       IMPLICIT INTEGER(I-N)
74033       INTEGER PYK,PYCHGE,PYCOMP
74034 C...Commonblocks.
74035       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74036       SAVE /PYDAT1/
74037  
74038 C...Function: cumulative hard photon spectrum in QFD case.
74039       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
74040      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
74041  
74042 C...Determine whether radiative photon or not.
74043       MK=0
74044       PAK=0D0
74045       IF(PARJ(160).LT.PYR(0)) RETURN
74046       MK=1
74047  
74048 C...Photon energy range. Find photon momentum in QED case.
74049       XKL=PARJ(135)
74050       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
74051       IF(MSTJ(102).LE.1) THEN
74052   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
74053         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
74054  
74055 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
74056       ELSE
74057         SZM=1D0-(PARJ(123)/ECM)**2
74058         SZW=PARJ(123)*PARJ(124)/ECM**2
74059         FXKL=FXK(XKL)
74060         FXKU=FXK(XKU)
74061         FXKD=1D-4*(FXKU-FXKL)
74062         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
74063         NXK=0
74064   110   NXK=NXK+1
74065         XK=0.5D0*(XKL+XKU)
74066         FXKV=FXK(XK)
74067         IF(FXKV.GT.FXKR) THEN
74068           XKU=XK
74069           FXKU=FXKV
74070         ELSE
74071           XKL=XK
74072           FXKL=FXKV
74073         ENDIF
74074         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
74075         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
74076       ENDIF
74077       PAK=0.5D0*ECM*XK
74078  
74079 C...Photon polar and azimuthal angle.
74080       PME=2D0*(PYMASS(11)/ECM)**2
74081   120 CTHM=PME*(2D0/PME)**PYR(0)
74082       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
74083      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
74084       CTHE=1D0-CTHM
74085       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
74086       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
74087       THEK=PYANGL(CTHE,STHE)
74088       PHIK=PARU(2)*PYR(0)
74089  
74090 C...Rotation angle for hadronic system.
74091       SGN=1D0
74092       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
74093      &PYR(0)) SGN=-1D0
74094       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
74095      &(2D0-XK*(1D0-SGN*CTHE)))
74096  
74097       RETURN
74098       END
74099  
74100 C*********************************************************************
74101  
74102 C...PYXKFL
74103 C...Selects flavour for produced qqbar pair.
74104  
74105       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
74106  
74107 C...Double precision and integer declarations.
74108       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74109       IMPLICIT INTEGER(I-N)
74110       INTEGER PYK,PYCHGE,PYCOMP
74111 C...Commonblocks.
74112       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74113       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74114       SAVE /PYDAT1/,/PYDAT2/
74115  
74116 C...Calculate maximum weight in QED or QFD case.
74117       IF(MSTJ(102).LE.1) THEN
74118         RFMAX=4D0/9D0
74119       ELSE
74120         POLL=1D0-PARJ(131)*PARJ(132)
74121         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
74122         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
74123         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
74124         VE=4D0*PARU(102)-1D0
74125         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
74126         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
74127         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
74128      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
74129      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
74130      &  1D0)*HF1W)
74131       ENDIF
74132  
74133 C...Choose flavour. Gives charge and velocity.
74134       NTRY=0
74135   100 NTRY=NTRY+1
74136       IF(NTRY.GT.100) THEN
74137         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
74138         KFLC=0
74139         RETURN
74140       ENDIF
74141       KFLC=KFL
74142       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
74143       MSTJ(93)=1
74144       PMQ=PYMASS(KFLC)
74145       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
74146       QF=KCHG(KFLC,1)/3D0
74147       VQ=1D0
74148       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
74149  
74150 C...Calculate weight in QED or QFD case.
74151       IF(MSTJ(102).LE.1) THEN
74152         RF=QF**2
74153         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
74154       ELSE
74155         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
74156         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
74157         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
74158      &  VQ**3*HF1W
74159         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
74160       ENDIF
74161  
74162 C...Weighting or new event (radiative photon). Cross-section update.
74163       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
74164       PARJ(158)=PARJ(158)+1D0
74165       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
74166       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
74167       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
74168       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
74169       PARJ(148)=PARJ(144)*86.8D0/ECM**2
74170  
74171       RETURN
74172       END
74173  
74174 C*********************************************************************
74175  
74176 C...PYXJET
74177 C...Selects number of jets in matrix element approach.
74178  
74179       SUBROUTINE PYXJET(ECM,NJET,CUT)
74180  
74181 C...Double precision and integer declarations.
74182       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74183       IMPLICIT INTEGER(I-N)
74184       INTEGER PYK,PYCHGE,PYCOMP
74185 C...Commonblocks.
74186       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74187       SAVE /PYDAT1/
74188 C...Local array and data.
74189       DIMENSION ZHUT(5)
74190       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
74191  
74192 C...Trivial result for two-jets only, including parton shower.
74193       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
74194         CUT=0D0
74195  
74196 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
74197       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
74198         CF=4D0/3D0
74199         IF(MSTJ(109).EQ.2) CF=1D0
74200         IF(MSTJ(111).EQ.0) THEN
74201           Q2=ECM**2
74202           Q2R=ECM**2
74203         ELSEIF(MSTU(111).EQ.0) THEN
74204           PARJ(169)=MIN(1D0,PARJ(129))
74205           Q2=PARJ(169)*ECM**2
74206           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
74207      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
74208           Q2R=PARJ(168)*ECM**2
74209         ELSE
74210           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
74211           Q2=PARJ(169)*ECM**2
74212           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
74213      &    (2D0*PARU(112)/ECM)**2))
74214           Q2R=PARJ(168)*ECM**2
74215         ENDIF
74216  
74217 C...alpha_strong for R and R itself.
74218         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
74219         IF(IABS(MSTJ(101)).EQ.1) THEN
74220           RQCD=1D0+ALSPI
74221         ELSEIF(MSTJ(109).EQ.0) THEN
74222           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
74223           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
74224      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
74225         ELSE
74226           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
74227         ENDIF
74228  
74229 C...alpha_strong for jet rate. Initial value for y cut.
74230         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74231         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
74232         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
74233      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
74234         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
74235  
74236 C...Parametrization of first order three-jet cross-section.
74237   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
74238           PARJ(152)=0D0
74239         ELSE
74240           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
74241      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
74242      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
74243      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
74244           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
74245      &    PARJ(152)=0D0
74246         ENDIF
74247  
74248 C...Parametrization of second order three-jet cross-section.
74249         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
74250      &  CUT.GE.0.25D0) THEN
74251           PARJ(153)=0D0
74252         ELSEIF(MSTJ(110).LE.1) THEN
74253           CT=LOG(1D0/CUT-2D0)
74254           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
74255      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
74256  
74257 C...Interpolation in second/first order ratio for Zhu parametrization.
74258         ELSEIF(MSTJ(110).EQ.2) THEN
74259           IZA=0
74260           DO 110 IY=1,5
74261             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
74262   110     CONTINUE
74263           IF(IZA.NE.0) THEN
74264             ZHURAT=ZHUT(IZA)
74265           ELSE
74266             IZ=100D0*CUT
74267             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
74268           ENDIF
74269           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
74270         ENDIF
74271  
74272 C...Shift in second order three-jet cross-section with optimized Q^2.
74273         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
74274      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
74275      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
74276  
74277 C...Parametrization of second order four-jet cross-section.
74278         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
74279           PARJ(154)=0D0
74280         ELSE
74281           CT=LOG(1D0/CUT-5D0)
74282           IF(CUT.LE.0.018D0) THEN
74283             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
74284             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
74285      &      0.4059D0*CT**2)
74286             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
74287             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
74288           ELSE
74289             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
74290             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
74291      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
74292             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
74293      &      0.002093D0*CT**3)
74294             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
74295           ENDIF
74296           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
74297           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
74298         ENDIF
74299  
74300 C...If negative three-jet rate, change y' optimization parameter.
74301         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
74302      &  PARJ(169).LT.0.99D0) THEN
74303           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
74304           Q2=PARJ(169)*ECM**2
74305           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74306           GOTO 100
74307         ENDIF
74308  
74309 C...If too high cross-section, use harder cuts, or fail.
74310         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
74311           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
74312      &    PARJ(169).LT.0.99D0) THEN
74313             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
74314             Q2=PARJ(169)*ECM**2
74315             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
74316             GOTO 100
74317           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
74318             CALL PYERRM(26,
74319      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
74320           ENDIF
74321           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
74322      &    PARJ(154))**(-1D0/3D0)
74323           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
74324           GOTO 100
74325         ENDIF
74326  
74327 C...Scalar gluon (first order only).
74328       ELSE
74329         ALSPI=PYALPS(ECM**2)/PARU(1)
74330         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
74331         PARJ(152)=0D0
74332         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
74333      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
74334         PARJ(153)=0D0
74335         PARJ(154)=0D0
74336       ENDIF
74337  
74338 C...Select number of jets.
74339       PARJ(150)=CUT
74340       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
74341         NJET=2
74342       ELSEIF(MSTJ(101).LE.0) THEN
74343         NJET=MIN(4,2-MSTJ(101))
74344       ELSE
74345         RNJ=PYR(0)
74346         NJET=2
74347         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
74348         IF(PARJ(154).GT.RNJ) NJET=4
74349       ENDIF
74350  
74351       RETURN
74352       END
74353  
74354 C*********************************************************************
74355  
74356 C...PYX3JT
74357 C...Selects the kinematical variables of three-jet events.
74358  
74359       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
74360  
74361 C...Double precision and integer declarations.
74362       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74363       IMPLICIT INTEGER(I-N)
74364       INTEGER PYK,PYCHGE,PYCOMP
74365 C...Commonblocks.
74366       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74367       SAVE /PYDAT1/
74368 C...Local array.
74369       DIMENSION ZHUP(5,12)
74370  
74371 C...Coefficients of Zhu second order parametrization.
74372       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
74373      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
74374      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
74375      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
74376      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
74377      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
74378      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
74379      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
74380      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
74381      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
74382      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
74383  
74384 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
74385       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
74386      &X**7/49D0
74387  
74388 C...Event type. Mass effect factors and other common constants.
74389       MSTJ(120)=2
74390       MSTJ(121)=0
74391       PMQ=PYMASS(KFL)
74392       QME=(2D0*PMQ/ECM)**2
74393       IF(MSTJ(109).NE.1) THEN
74394         CUTL=LOG(CUT)
74395         CUTD=LOG(1D0/CUT-2D0)
74396         IF(MSTJ(109).EQ.0) THEN
74397           CF=4D0/3D0
74398           CN=3D0
74399           TR=2D0
74400           WTMX=MIN(20D0,37D0-6D0*CUTD)
74401           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
74402         ELSE
74403           CF=1D0
74404           CN=0D0
74405           TR=12D0
74406           WTMX=0D0
74407         ENDIF
74408  
74409 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
74410         ALS2PI=PARU(118)/PARU(2)
74411         WTOPT=0D0
74412         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
74413      &  LOG(PARJ(169))*ALS2PI
74414         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
74415  
74416 C...Choose three-jet events in allowed region.
74417   100   NJET=3
74418   110   Y13L=CUTL+CUTD*PYR(0)
74419         Y23L=CUTL+CUTD*PYR(0)
74420         Y13=EXP(Y13L)
74421         Y23=EXP(Y23L)
74422         Y12=1D0-Y13-Y23
74423         IF(Y12.LE.CUT) GOTO 110
74424         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
74425  
74426 C...Second order corrections.
74427         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
74428           Y12L=LOG(Y12)
74429           Y13M=LOG(1D0-Y13)
74430           Y23M=LOG(1D0-Y23)
74431           Y12M=LOG(1D0-Y12)
74432           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
74433           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
74434           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
74435           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
74436           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
74437           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
74438           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
74439           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
74440      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
74441      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
74442      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
74443      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
74444      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
74445      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
74446      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
74447      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
74448      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
74449      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
74450      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
74451      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
74452      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
74453      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
74454      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
74455      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
74456           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
74457           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
74458           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
74459  
74460         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
74461 C...Second order corrections; Zhu parametrization of ERT.
74462           ZX=(Y23-Y13)**2
74463           ZY=1D0-Y12
74464           IZA=0
74465           DO 120 IY=1,5
74466             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
74467   120     CONTINUE
74468           IF(IZA.NE.0) THEN
74469             IZ=IZA
74470             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74471      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74472      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74473      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74474           ELSE
74475             IZ=100D0*CUT
74476             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74477      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74478      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74479      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74480             IZ=IZ+1
74481             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
74482      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
74483      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
74484      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
74485             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
74486           ENDIF
74487           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
74488           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
74489           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
74490         ENDIF
74491  
74492 C...Impose mass cuts (gives two jets). For fixed jet number new try.
74493         X1=1D0-Y23
74494         X2=1D0-Y13
74495         X3=1D0-Y12
74496         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
74497         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
74498      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
74499      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
74500         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
74501  
74502 C...Scalar gluon model (first order only, no mass effects).
74503       ELSE
74504   130   NJET=3
74505   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
74506         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
74507         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
74508         X1=1D0-0.5D0*(X3+YD)
74509         X2=1D0-0.5D0*(X3-YD)
74510         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
74511         IF(MSTJ(102).GE.2) THEN
74512           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
74513      &    X3**2*PYR(0)) NJET=2
74514         ENDIF
74515         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
74516       ENDIF
74517  
74518       RETURN
74519       END
74520  
74521 C*********************************************************************
74522  
74523 C...PYX4JT
74524 C...Selects the kinematical variables of four-jet events.
74525  
74526       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
74527  
74528 C...Double precision and integer declarations.
74529       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74530       IMPLICIT INTEGER(I-N)
74531       INTEGER PYK,PYCHGE,PYCOMP
74532 C...Commonblocks.
74533       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74534       SAVE /PYDAT1/
74535 C...Local arrays.
74536       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
74537  
74538 C...Common constants. Colour factors for QCD and Abelian gluon theory.
74539       PMQ=PYMASS(KFL)
74540       QME=(2D0*PMQ/ECM)**2
74541       CT=LOG(1D0/CUT-5D0)
74542       IF(MSTJ(109).EQ.0) THEN
74543         CF=4D0/3D0
74544         CN=3D0
74545         TR=2.5D0
74546       ELSE
74547         CF=1D0
74548         CN=0D0
74549         TR=15D0
74550       ENDIF
74551  
74552 C...Choice of process (qqbargg or qqbarqqbar).
74553   100 NJET=4
74554       IT=1
74555       IF(PARJ(155).GT.PYR(0)) IT=2
74556       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
74557       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
74558       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
74559       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
74560       ID=1
74561  
74562 C...Sample the five kinematical variables (for qqgg preweighted in y34).
74563   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
74564       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
74565       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
74566       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
74567       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
74568       VT=PYR(0)
74569       CP=COS(PARU(1)*PYR(0))
74570       Y14=(Y134-Y34)*VT
74571       Y13=Y134-Y14-Y34
74572       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
74573       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
74574      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
74575       Y23=Y234-Y34-Y24
74576       Y12=1D0-Y134-Y23-Y24
74577       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
74578       Y123=Y12+Y13+Y23
74579       Y124=Y12+Y14+Y24
74580  
74581 C...Calculate matrix elements for qqgg or qqqq process.
74582       IC=0
74583       WTTOT=0D0
74584   120 IC=IC+1
74585       IF(IT.EQ.1) THEN
74586         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
74587      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
74588      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
74589      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
74590      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
74591      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
74592      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
74593      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
74594         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
74595      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
74596      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
74597      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
74598         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
74599      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
74600      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
74601      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
74602      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
74603      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
74604      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
74605      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
74606      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
74607      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
74608      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
74609      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
74610         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
74611      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
74612      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
74613      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
74614      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
74615      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
74616      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
74617      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
74618      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
74619      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
74620      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
74621      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
74622      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
74623      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
74624      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
74625      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
74626         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
74627      &  CN*WTC(IC))/8D0
74628       ELSE
74629         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
74630      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
74631      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
74632      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
74633      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
74634      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
74635      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
74636      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
74637      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
74638         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
74639      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
74640      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
74641      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
74642      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
74643      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
74644      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
74645      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
74646         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
74647       ENDIF
74648  
74649 C...Permutations of momenta in matrix element. Weighting.
74650   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
74651         YSAV=Y13
74652         Y13=Y14
74653         Y14=YSAV
74654         YSAV=Y23
74655         Y23=Y24
74656         Y24=YSAV
74657         YSAV=Y123
74658         Y123=Y124
74659         Y124=YSAV
74660       ENDIF
74661       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
74662         YSAV=Y13
74663         Y13=Y23
74664         Y23=YSAV
74665         YSAV=Y14
74666         Y14=Y24
74667         Y24=YSAV
74668         YSAV=Y134
74669         Y134=Y234
74670         Y234=YSAV
74671       ENDIF
74672       IF(IC.LE.3) GOTO 120
74673       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
74674       IC=5
74675  
74676 C...qqgg events: string configuration and event type.
74677       IF(IT.EQ.1) THEN
74678         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
74679           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
74680      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
74681           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
74682      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
74683           IF(ID.EQ.2) GOTO 130
74684         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
74685           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
74686           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
74687           IF(ID.EQ.2) GOTO 130
74688         ENDIF
74689         MSTJ(120)=3
74690         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
74691      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
74692         KFLN=21
74693  
74694 C...Mass cuts. Kinematical variables out.
74695         IF(Y12.LE.CUT+QME) NJET=2
74696         IF(NJET.EQ.2) GOTO 150
74697         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
74698         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
74699         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
74700         X2=1D0-Y124
74701         X12=(1D0-Q12)*Y13+Q12*Y23
74702         X14=Y12-0.5D0*QME
74703         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
74704  
74705 C...qqbarqqbar events: string configuration, choose new flavour.
74706       ELSE
74707         IF(ID.EQ.1) THEN
74708           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
74709           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
74710           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
74711           IF(WTR.LT.WTD(4)) ID=4
74712           IF(ID.GE.2) GOTO 130
74713         ENDIF
74714         MSTJ(120)=5
74715         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
74716   140   KFLN=1+INT(5D0*PYR(0))
74717         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
74718         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
74719         IF(KFLN.GT.MSTJ(104)) NJET=2
74720         PMQN=PYMASS(KFLN)
74721         QMEN=(2D0*PMQN/ECM)**2
74722  
74723 C...Mass cuts. Kinematical variables out.
74724         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
74725         IF(NJET.EQ.2) GOTO 150
74726         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
74727         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
74728         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
74729         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
74730         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
74731         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
74732      &  Q13*Y23)
74733         X14=Y24-0.5D0*QME
74734         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
74735      &  Q13*Y14)
74736         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
74737      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
74738         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
74739       ENDIF
74740   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
74741  
74742       RETURN
74743       END
74744  
74745 C*********************************************************************
74746  
74747 C...PYXDIF
74748 C...Gives the angular orientation of events.
74749  
74750       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
74751  
74752 C...Double precision and integer declarations.
74753       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74754       IMPLICIT INTEGER(I-N)
74755       INTEGER PYK,PYCHGE,PYCOMP
74756 C...Commonblocks.
74757       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74758       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74759       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74760       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74761  
74762 C...Charge. Factors depending on polarization for QED case.
74763       QF=KCHG(KFL,1)/3D0
74764       POLL=1D0-PARJ(131)*PARJ(132)
74765       POLD=PARJ(132)-PARJ(131)
74766       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
74767         HF1=POLL
74768         HF2=0D0
74769         HF3=PARJ(133)**2
74770         HF4=0D0
74771  
74772 C...Factors depending on flavour, energy and polarization for QFD case.
74773       ELSE
74774         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
74775         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
74776         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
74777         AE=-1D0
74778         VE=4D0*PARU(102)-1D0
74779         AF=SIGN(1D0,QF)
74780         VF=AF-4D0*QF*PARU(102)
74781         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
74782      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
74783         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
74784      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
74785         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
74786      &  SFW*SFF**2*(VE**2-AE**2))
74787         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
74788      &  SFF*AE
74789       ENDIF
74790  
74791 C...Mass factor. Differential cross-sections for two-jet events.
74792       SQ2=SQRT(2D0)
74793       QME=0D0
74794       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
74795      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
74796       IF(NJET.EQ.2) THEN
74797         SIGU=4D0*SQRT(1D0-QME)
74798         SIGL=2D0*QME*SQRT(1D0-QME)
74799         SIGT=0D0
74800         SIGI=0D0
74801         SIGA=0D0
74802         SIGP=4D0
74803  
74804 C...Kinematical variables. Reduce four-jet event to three-jet one.
74805       ELSE
74806         IF(NJET.EQ.3) THEN
74807           X1=2D0*P(NC+1,4)/ECM
74808           X2=2D0*P(NC+3,4)/ECM
74809         ELSE
74810           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
74811      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
74812           X1=2D0*P(NC+1,4)/ECMR
74813           X2=2D0*P(NC+4,4)/ECMR
74814         ENDIF
74815  
74816 C...Differential cross-sections for three-jet (or reduced four-jet).
74817         XQ=(1D0-X1)/(1D0-X2)
74818         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
74819         ST12=SQRT(1D0-CT12**2)
74820         IF(MSTJ(109).NE.1) THEN
74821           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
74822      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
74823           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
74824      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
74825      &    X2)*XQ
74826           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
74827           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
74828      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
74829           SIGA=X2**2*ST12/SQ2
74830           SIGP=2D0*(X1**2-X2**2*CT12)
74831  
74832 C...Differential cross-sect for scalar gluons (no mass effects).
74833         ELSE
74834           X3=2D0-X1-X2
74835           XT=X2*ST12
74836           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
74837           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
74838      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
74839           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
74840      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
74841           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
74842      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
74843           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
74844      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
74845           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
74846           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
74847         ENDIF
74848       ENDIF
74849  
74850 C...Upper bounds for differential cross-section.
74851       HF1A=ABS(HF1)
74852       HF2A=ABS(HF2)
74853       HF3A=ABS(HF3)
74854       HF4A=ABS(HF4)
74855       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
74856      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
74857      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
74858      &2D0*HF2A*ABS(SIGP)
74859  
74860 C...Generate angular orientation according to differential cross-sect.
74861   100 CHI=PARU(2)*PYR(0)
74862       CTHE=2D0*PYR(0)-1D0
74863       PHI=PARU(2)*PYR(0)
74864       CCHI=COS(CHI)
74865       SCHI=SIN(CHI)
74866       C2CHI=COS(2D0*CHI)
74867       S2CHI=SIN(2D0*CHI)
74868       THE=ACOS(CTHE)
74869       STHE=SIN(THE)
74870       C2PHI=COS(2D0*(PHI-PARJ(134)))
74871       S2PHI=SIN(2D0*(PHI-PARJ(134)))
74872       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
74873      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
74874      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
74875      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
74876      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
74877      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
74878      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
74879       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
74880  
74881       RETURN
74882       END
74883  
74884 C*********************************************************************
74885  
74886 C...PYONIA
74887 C...Generates Upsilon and toponium decays into three gluons
74888 C...or two gluons and a photon.
74889  
74890       SUBROUTINE PYONIA(KFL,ECM)
74891  
74892 C...Double precision and integer declarations.
74893       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74894       IMPLICIT INTEGER(I-N)
74895       INTEGER PYK,PYCHGE,PYCOMP
74896 C...Commonblocks.
74897       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74898       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74899       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74900       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74901  
74902 C...Printout. Check input parameters.
74903       IF(MSTU(12).NE.12345) CALL PYLIST(0)
74904       IF(KFL.LT.0.OR.KFL.GT.8) THEN
74905         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
74906         IF(MSTU(21).GE.1) RETURN
74907       ENDIF
74908       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
74909         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
74910         IF(MSTU(21).GE.1) RETURN
74911       ENDIF
74912  
74913 C...Initial e+e- and onium state (optional).
74914       NC=0
74915       IF(MSTJ(115).GE.2) THEN
74916         NC=NC+2
74917         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
74918         K(NC-1,1)=21
74919         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
74920         K(NC,1)=21
74921       ENDIF
74922       KFLC=IABS(KFL)
74923       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
74924         NC=NC+1
74925         KF=110*KFLC+3
74926         MSTU10=MSTU(10)
74927         MSTU(10)=1
74928         P(NC,5)=ECM
74929         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
74930         K(NC,1)=21
74931         K(NC,3)=1
74932         MSTU(10)=MSTU10
74933       ENDIF
74934  
74935 C...Choose x1 and x2 according to matrix element.
74936       NTRY=0
74937   100 X1=PYR(0)
74938       X2=PYR(0)
74939       X3=2D0-X1-X2
74940       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
74941      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
74942       NTRY=NTRY+1
74943       NJET=3
74944       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
74945       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
74946  
74947 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
74948       MSTU(111)=MSTJ(108)
74949       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
74950      &MSTU(111)=1
74951       PARU(112)=PARJ(121)
74952       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
74953       QF=0D0
74954       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
74955       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
74956       MK=0
74957       ECMC=ECM
74958       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
74959         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
74960      &  NJET=2
74961         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
74962         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
74963       ELSE
74964         MK=1
74965         ECMC=SQRT(1D0-X1)*ECM
74966         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
74967         K(NC+1,1)=1
74968         K(NC+1,2)=22
74969         K(NC+1,4)=0
74970         K(NC+1,5)=0
74971         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
74972         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
74973         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
74974         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
74975         NJET=2
74976         IF(ECMC.LT.4D0*PARJ(127)) THEN
74977           MSTU10=MSTU(10)
74978           MSTU(10)=1
74979           P(NC+2,5)=ECMC
74980           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
74981           MSTU(10)=MSTU10
74982           NJET=0
74983         ENDIF
74984       ENDIF
74985       DO 110 IP=NC+1,N
74986         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
74987   110 CONTINUE
74988  
74989 C...Differential cross-sections. Upper limit for cross-section.
74990       IF(MSTJ(106).EQ.1) THEN
74991         SQ2=SQRT(2D0)
74992         HF1=1D0-PARJ(131)*PARJ(132)
74993         HF3=PARJ(133)**2
74994         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
74995         ST13=SQRT(1D0-CT13**2)
74996         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
74997         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
74998         SIGT=0.5D0*SIGL
74999         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
75000         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
75001      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
75002  
75003 C...Angular orientation of event.
75004   120   CHI=PARU(2)*PYR(0)
75005         CTHE=2D0*PYR(0)-1D0
75006         PHI=PARU(2)*PYR(0)
75007         CCHI=COS(CHI)
75008         SCHI=SIN(CHI)
75009         C2CHI=COS(2D0*CHI)
75010         S2CHI=SIN(2D0*CHI)
75011         THE=ACOS(CTHE)
75012         STHE=SIN(THE)
75013         C2PHI=COS(2D0*(PHI-PARJ(134)))
75014         S2PHI=SIN(2D0*(PHI-PARJ(134)))
75015         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
75016      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
75017      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
75018      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
75019      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
75020         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
75021         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
75022         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
75023       ENDIF
75024  
75025 C...Generate parton shower. Rearrange along strings and check.
75026       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
75027         if(parj(200).ne.1.) CALL PYSHOW(NC+MK+1,-NJET,ECMC)
75028         if(parj(200).eq.1.) CALL PYSHOWQ(NC+MK+1,-NJET,ECMC)
75029         MSTJ14=MSTJ(14)
75030         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
75031         IF(MSTJ(105).GE.0) MSTU(28)=0
75032         CALL PYPREP(0)
75033         MSTJ(14)=MSTJ14
75034         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
75035       ENDIF
75036  
75037 C...Generate fragmentation. Information for PYTABU:
75038       IF(MSTJ(105).EQ.1) CALL PYEXEC
75039       MSTU(161)=110*KFLC+3
75040       MSTU(162)=0
75041  
75042       RETURN
75043       END
75044  
75045 C*********************************************************************
75046  
75047 C...PYBOOK
75048 C...Books a histogram.
75049  
75050       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
75051  
75052 C...Double precision declaration.
75053       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75054       IMPLICIT INTEGER(I-N)
75055 C...Commonblock.
75056       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75057       SAVE /PYBINS/
75058 C...Local character variables.
75059       CHARACTER TITLE*(*), TITFX*60
75060  
75061 C...Check that input is sensible. Find initial address in memory.
75062       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75063      &'(PYBOOK:) not allowed histogram number')
75064       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
75065      &'(PYBOOK:) not allowed number of bins')
75066       IF(XL.GE.XU) CALL PYERRM(28,
75067      &'(PYBOOK:) x limits in wrong order')
75068       INDX(ID)=IHIST(4)
75069       IHIST(4)=IHIST(4)+28+NX
75070       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
75071      &'(PYBOOK:) out of histogram space')
75072       IS=INDX(ID)
75073  
75074 C...Store histogram size and reset contents.
75075       BIN(IS+1)=NX
75076       BIN(IS+2)=XL
75077       BIN(IS+3)=XU
75078       BIN(IS+4)=(XU-XL)/NX
75079       CALL PYNULL(ID)
75080  
75081 C...Store title by conversion to integer to double precision.
75082       TITFX=TITLE//' '
75083       DO 100 IT=1,20
75084         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
75085      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
75086   100 CONTINUE
75087  
75088       RETURN
75089       END
75090  
75091 C*********************************************************************
75092  
75093 C...PYFILL
75094 C...Fills entry in histogram.
75095  
75096       SUBROUTINE PYFILL(ID,X,W)
75097  
75098 C...Double precision declaration.
75099       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75100       IMPLICIT INTEGER(I-N)
75101 C...Commonblock.
75102       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75103       SAVE /PYBINS/
75104  
75105 C...Find initial address in memory. Increase number of entries.
75106       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75107      &'(PYFILL:) not allowed histogram number')
75108       IS=INDX(ID)
75109       IF(IS.EQ.0) CALL PYERRM(28,
75110      &'(PYFILL:) filling unbooked histogram')
75111       BIN(IS+5)=BIN(IS+5)+1D0
75112  
75113 C...Find bin in x, including under/overflow, and fill.
75114       IF(X.LT.BIN(IS+2)) THEN
75115         BIN(IS+6)=BIN(IS+6)+W
75116       ELSEIF(X.GE.BIN(IS+3)) THEN
75117         BIN(IS+8)=BIN(IS+8)+W
75118       ELSE
75119         BIN(IS+7)=BIN(IS+7)+W
75120         IX=(X-BIN(IS+2))/BIN(IS+4)
75121         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
75122         BIN(IS+9+IX)=BIN(IS+9+IX)+W
75123       ENDIF
75124  
75125       RETURN
75126       END
75127  
75128 C*********************************************************************
75129  
75130 C...PYFACT
75131 C...Multiplies histogram contents by factor.
75132  
75133       SUBROUTINE PYFACT(ID,F)
75134  
75135 C...Double precision declaration.
75136       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75137       IMPLICIT INTEGER(I-N)
75138 C...Commonblock.
75139       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75140       SAVE /PYBINS/
75141  
75142 C...Find initial address in memory. Multiply all contents bins.
75143       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
75144      &'(PYFACT:) not allowed histogram number')
75145       IS=INDX(ID)
75146       IF(IS.EQ.0) CALL PYERRM(28,
75147      &'(PYFACT:) scaling unbooked histogram')
75148       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
75149         BIN(IX)=F*BIN(IX)
75150   100 CONTINUE
75151  
75152       RETURN
75153       END
75154  
75155 C*********************************************************************
75156  
75157 C...PYOPER
75158 C...Performs operations between histograms.
75159  
75160       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
75161  
75162 C...Double precision declaration.
75163       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75164       IMPLICIT INTEGER(I-N)
75165 C...Commonblock.
75166       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75167       SAVE /PYBINS/
75168 C...Character variable.
75169       CHARACTER OPER*(*)
75170  
75171 C...Find initial addresses in memory, and histogram size.
75172       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
75173      &'(PYFACT:) not allowed histogram number')
75174       IS1=INDX(ID1)
75175       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
75176       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
75177       NX=NINT(BIN(IS3+1))
75178       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
75179  
75180 C...Update info on number of histogram entries.
75181       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
75182         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
75183       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
75184         BIN(IS3+5)=BIN(IS1+5)
75185       ENDIF
75186  
75187 C...Operations on pair of histograms: addition, subtraction,
75188 C...multiplication, division.
75189       IF(OPER.EQ.'+') THEN
75190         DO 100 IX=6,8+NX
75191           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
75192   100   CONTINUE
75193       ELSEIF(OPER.EQ.'-') THEN
75194         DO 110 IX=6,8+NX
75195           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
75196   110   CONTINUE
75197       ELSEIF(OPER.EQ.'*') THEN
75198         DO 120 IX=6,8+NX
75199           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
75200   120   CONTINUE
75201       ELSEIF(OPER.EQ.'/') THEN
75202         DO 130 IX=6,8+NX
75203           FA2=F2*BIN(IS2+IX)
75204           IF(ABS(FA2).LE.1D-20) THEN
75205             BIN(IS3+IX)=0D0
75206           ELSE
75207             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
75208           ENDIF
75209   130   CONTINUE
75210  
75211 C...Operations on single histogram: multiplication+addition,
75212 C...square root+addition, logarithm+addition.
75213       ELSEIF(OPER.EQ.'A') THEN
75214         DO 140 IX=6,8+NX
75215           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
75216   140   CONTINUE
75217       ELSEIF(OPER.EQ.'S') THEN
75218         DO 150 IX=6,8+NX
75219           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
75220   150   CONTINUE
75221       ELSEIF(OPER.EQ.'L') THEN
75222         ZMIN=1D20
75223         DO 160 IX=9,8+NX
75224           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
75225      &    ZMIN=0.8D0*BIN(IS1+IX)
75226   160   CONTINUE
75227         DO 170 IX=6,8+NX
75228           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
75229   170   CONTINUE
75230  
75231 C...Operation on two or three histograms: average and
75232 C...standard deviation.
75233       ELSEIF(OPER.EQ.'M') THEN
75234         DO 180 IX=6,8+NX
75235           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
75236             BIN(IS2+IX)=0D0
75237           ELSE
75238             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
75239           ENDIF
75240           IF(ID3.NE.0) THEN
75241             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
75242               BIN(IS3+IX)=0D0
75243             ELSE
75244               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
75245      &        BIN(IS2+IX)**2))
75246             ENDIF
75247           ENDIF
75248           BIN(IS1+IX)=F1*BIN(IS1+IX)
75249   180   CONTINUE
75250       ENDIF
75251  
75252       RETURN
75253       END
75254  
75255 C*********************************************************************
75256  
75257 C...PYHIST
75258 C...Prints and resets all histograms.
75259  
75260       SUBROUTINE PYHIST
75261  
75262 C...Double precision declaration.
75263       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75264       IMPLICIT INTEGER(I-N)
75265 C...Commonblock.
75266       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75267       SAVE /PYBINS/
75268  
75269 C...Loop over histograms, print and reset used ones.
75270       DO 100 ID=1,IHIST(1)
75271         IS=INDX(ID)
75272         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
75273           CALL PYPLOT(ID)
75274           CALL PYNULL(ID)
75275         ENDIF
75276   100 CONTINUE
75277  
75278       RETURN
75279       END
75280  
75281 C*********************************************************************
75282  
75283 C...PYPLOT
75284 C...Prints a histogram (but does not reset it).
75285  
75286       SUBROUTINE PYPLOT(ID)
75287  
75288 C...Double precision declaration.
75289       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75290       IMPLICIT INTEGER(I-N)
75291 C...Commonblocks.
75292       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75293       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75294       SAVE /PYDAT1/,/PYBINS/
75295 C...Local arrays and character variables.
75296       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
75297       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
75298  
75299 C...Steps in histogram scale. Character sequence.
75300       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
75301       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
75302  
75303 C...Find initial address in memory; skip if empty histogram.
75304       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
75305       IS=INDX(ID)
75306       IF(IS.EQ.0) RETURN
75307       IF(NINT(BIN(IS+5)).LE.0) THEN
75308         WRITE(MSTU(11),5000) ID
75309         RETURN
75310       ENDIF
75311  
75312 C...Number of histogram lines and x bins.
75313       LIN=IHIST(3)-18
75314       NX=NINT(BIN(IS+1))
75315  
75316 C...Extract title by conversion from double precision via integer.
75317       DO 100 IT=1,20
75318         IEQ=NINT(BIN(IS+8+NX+IT))
75319         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
75320      &  //CHAR(MOD(IEQ,256))
75321   100 CONTINUE
75322  
75323 C...Find time; print title.
75324       CALL PYTIME(IDATI)
75325       IF(IDATI(1).GT.0) THEN
75326         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
75327       ELSE
75328         WRITE(MSTU(11),5200) ID, TITLE
75329       ENDIF
75330  
75331 C...Find minimum and maximum bin content.
75332       YMIN=BIN(IS+9)
75333       YMAX=BIN(IS+9)
75334       DO 110 IX=IS+10,IS+8+NX
75335         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
75336         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
75337   110 CONTINUE
75338  
75339 C...Determine scale and step size for y axis.
75340       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
75341         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
75342         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
75343         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
75344         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
75345         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
75346         DELY=DYAC(1)
75347         DO 120 IDEL=1,9
75348           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
75349   120   CONTINUE
75350         DY=DELY*10D0**IPOT
75351  
75352 C...Convert bin contents to integer form; fractional fill in top row.
75353         DO 130 IX=1,NX
75354           CTA=ABS(BIN(IS+8+IX))/DY
75355           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
75356           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
75357   130   CONTINUE
75358         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
75359         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
75360  
75361 C...Print histogram row by row.
75362         DO 150 IR=IRMA,IRMI,-1
75363           IF(IR.EQ.0) GOTO 150
75364           OUT=' '
75365           DO 140 IX=1,NX
75366             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
75367             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
75368   140     CONTINUE
75369           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
75370   150   CONTINUE
75371  
75372 C...Print sign and value of bin contents.
75373         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
75374         OUT=' '
75375         DO 160 IX=1,NX
75376           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
75377           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
75378   160   CONTINUE
75379         WRITE(MSTU(11),5400) OUT
75380         DO 180 IR=4,1,-1
75381           DO 170 IX=1,NX
75382             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
75383   170     CONTINUE
75384           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
75385   180   CONTINUE
75386  
75387 C...Print sign and value of lower bin edge.
75388         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
75389      &  10.0001D0)-10
75390         OUT=' '
75391         DO 190 IX=1,NX
75392           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
75393      &    OUT(IX:IX)=CHA(11)
75394           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
75395   190   CONTINUE
75396         WRITE(MSTU(11),5600) OUT
75397         DO 210 IR=3,1,-1
75398           DO 200 IX=1,NX
75399             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
75400   200     CONTINUE
75401           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
75402   210   CONTINUE
75403       ENDIF
75404  
75405 C...Calculate and print statistics.
75406       CSUM=0D0
75407       CXSUM=0D0
75408       CXXSUM=0D0
75409       DO 220 IX=1,NX
75410         CTA=ABS(BIN(IS+8+IX))
75411         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
75412         CSUM=CSUM+CTA
75413         CXSUM=CXSUM+CTA*X
75414         CXXSUM=CXXSUM+CTA*X**2
75415   220 CONTINUE
75416       XMEAN=CXSUM/MAX(CSUM,1D-20)
75417       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
75418       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
75419      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
75420  
75421 C...Formats for output.
75422  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
75423  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
75424      &I2,':',I2/)
75425  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
75426  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
75427  5400 FORMAT(/8X,'Contents',3X,A100)
75428  5500 FORMAT(9X,'*10**',I2,3X,A100)
75429  5600 FORMAT(/8X,'Low edge',3X,A100)
75430  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
75431      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
75432      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
75433  
75434       RETURN
75435       END
75436  
75437 C*********************************************************************
75438  
75439 C...PYNULL
75440 C...Resets bin contents of a histogram.
75441  
75442       SUBROUTINE PYNULL(ID)
75443  
75444 C...Double precision declaration.
75445       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75446       IMPLICIT INTEGER(I-N)
75447 C...Commonblock.
75448       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75449       SAVE /PYBINS/
75450  
75451       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
75452       IS=INDX(ID)
75453       IF(IS.EQ.0) RETURN
75454       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
75455         BIN(IX)=0D0
75456   100 CONTINUE
75457  
75458       RETURN
75459       END
75460  
75461 C*********************************************************************
75462  
75463 C...PYDUMP
75464 C...Dumps histogram contents on file for reading by other program.
75465 C...Can also read back own dump.
75466  
75467       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
75468  
75469 C...Double precision declaration.
75470       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75471       IMPLICIT INTEGER(I-N)
75472 C...Commonblock.
75473       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
75474       SAVE /PYBINS/
75475 C...Local arrays and character variables.
75476       DIMENSION IHI(*),ISS(100),VAL(5)
75477       CHARACTER TITLE*60,FORMAT*13
75478  
75479 C...Dump all histograms that have been booked,
75480 C...including titles and ranges, one after the other.
75481       IF(MDUMP.EQ.1) THEN
75482  
75483 C...Loop over histograms and find which are wanted and booked.
75484         IF(NHI.LE.0) THEN
75485           NW=IHIST(1)
75486         ELSE
75487           NW=NHI
75488         ENDIF
75489         DO 130 IW=1,NW
75490           IF(NHI.EQ.0) THEN
75491             ID=IW
75492           ELSE
75493             ID=IHI(IW)
75494           ENDIF
75495           IS=INDX(ID)
75496           IF(IS.NE.0) THEN
75497  
75498 C...Write title, histogram size, filling statistics.
75499             NX=NINT(BIN(IS+1))
75500             DO 100 IT=1,20
75501               IEQ=NINT(BIN(IS+8+NX+IT))
75502               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
75503      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
75504   100       CONTINUE
75505             WRITE(LFN,5100) ID,TITLE
75506             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
75507             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
75508      &      BIN(IS+8)
75509  
75510  
75511 C...Write histogram contents, in groups of five.
75512             DO 120 IXG=1,(NX+4)/5
75513               DO 110 IXV=1,5
75514                 IX=5*IXG+IXV-5
75515                 IF(IX.LE.NX) THEN
75516                   VAL(IXV)=BIN(IS+8+IX)
75517                 ELSE
75518                   VAL(IXV)=0D0
75519                 ENDIF
75520   110         CONTINUE
75521               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
75522   120       CONTINUE
75523  
75524 C...Go to next histogram; finish.
75525           ELSEIF(NHI.GT.0) THEN
75526             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
75527           ENDIF
75528   130   CONTINUE
75529  
75530 C...Read back in histograms dumped MDUMP=1.
75531       ELSEIF(MDUMP.EQ.2) THEN
75532  
75533 C...Read histogram number, title and range, and book.
75534   140   READ(LFN,5100,END=170) ID,TITLE
75535         READ(LFN,5200) NX,XL,XU
75536         CALL PYBOOK(ID,TITLE,NX,XL,XU)
75537         IS=INDX(ID)
75538  
75539 C...Read filling statistics.
75540         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
75541         BIN(IS+5)=DBLE(NENTRY)
75542  
75543 C...Read histogram contents, in groups of five.
75544         DO 160 IXG=1,(NX+4)/5
75545           READ(LFN,5400) (VAL(IXV),IXV=1,5)
75546           DO 150 IXV=1,5
75547             IX=5*IXG+IXV-5
75548             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
75549   150     CONTINUE
75550   160   CONTINUE
75551  
75552 C...Go to next histogram; finish.
75553         GOTO 140
75554   170   CONTINUE
75555  
75556 C...Write histogram contents in column format,
75557 C...convenient e.g. for GNUPLOT input.
75558       ELSEIF(MDUMP.EQ.3) THEN
75559  
75560 C...Find addresses to wanted histograms.
75561         NSS=0
75562         IF(NHI.LE.0) THEN
75563           NW=IHIST(1)
75564         ELSE
75565           NW=NHI
75566         ENDIF
75567         DO 180 IW=1,NW
75568           IF(NHI.EQ.0) THEN
75569             ID=IW
75570           ELSE
75571             ID=IHI(IW)
75572           ENDIF
75573           IS=INDX(ID)
75574           IF(IS.NE.0.AND.NSS.LT.100) THEN
75575             NSS=NSS+1
75576             ISS(NSS)=IS
75577           ELSEIF(NSS.GE.100) THEN
75578             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
75579           ELSEIF(NHI.GT.0) THEN
75580             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
75581           ENDIF
75582   180   CONTINUE
75583  
75584 C...Check that they have common number of x bins. Fix format.
75585         NX=NINT(BIN(ISS(1)+1))
75586         DO 190 IW=2,NSS
75587           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
75588             CALL PYERRM(8,'(PYDUMP:) different number of bins')
75589             RETURN
75590           ENDIF
75591   190   CONTINUE
75592         FORMAT='(1P,000E12.4)'
75593         WRITE(FORMAT(5:7),'(I3)') NSS+1
75594  
75595 C...Write histogram contents; first column x values.
75596         DO 200 IX=1,NX
75597           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
75598           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
75599   200   CONTINUE
75600  
75601       ENDIF
75602  
75603 C...Formats for output.
75604  5100 FORMAT(I5,5X,A60)
75605  5200 FORMAT(I5,1P,2D12.4)
75606  5300 FORMAT(I12,1P,3D12.4)
75607  5400 FORMAT(1P,5D12.4)
75608  
75609       RETURN
75610       END
75611  
75612 C*********************************************************************
75613  
75614 C...PYSTOP
75615 C...Allows users to handle STOP statemens
75616  
75617       SUBROUTINE PYSTOP(MCOD)
75618  
75619 C...Double precision and integer declarations.
75620       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75621       IMPLICIT INTEGER(I-N)
75622       INTEGER PYK,PYCHGE,PYCOMP
75623 C...Commonblocks.
75624       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75625       SAVE /PYDAT1/
75626
75627  
75628 C...Write message, then stop
75629       WRITE(MSTU(11),5000) MCOD
75630       STOP
75631
75632  
75633 C...Formats for output.
75634  5000 FORMAT(/5X,'PYSTOP called with code: ',I4)
75635       RETURN
75636       END
75637  
75638 C*********************************************************************
75639  
75640 C...PYKCUT
75641 C...Dummy routine, which the user can replace in order to make cuts on
75642 C...the kinematics on the parton level before the matrix elements are
75643 C...evaluated and the event is generated. The cross-section estimates
75644 C...will automatically take these cuts into account, so the given
75645 C...values are for the allowed phase space region only. MCUT=0 means
75646 C...that the event has passed the cuts, MCUT=1 that it has failed.
75647  
75648       SUBROUTINE PYKCUT(MCUT)
75649  
75650 C...Double precision and integer declarations.
75651       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75652       IMPLICIT INTEGER(I-N)
75653       INTEGER PYK,PYCHGE,PYCOMP
75654 C...Commonblocks.
75655       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75656       COMMON/PYINT1/MINT(400),VINT(400)
75657       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
75658       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
75659  
75660 C...Set default value (accepting event) for MCUT.
75661       MCUT=0
75662  
75663 C...Read out subprocess number.
75664       ISUB=MINT(1)
75665       ISTSB=ISET(ISUB)
75666  
75667 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
75668       TAU=VINT(21)
75669       YST=VINT(22)
75670       CTH=0D0
75671       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
75672       TAUP=0D0
75673       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
75674  
75675 C...Calculate x_1, x_2, x_F.
75676       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
75677         X1=SQRT(TAU)*EXP(YST)
75678         X2=SQRT(TAU)*EXP(-YST)
75679       ELSE
75680         X1=SQRT(TAUP)*EXP(YST)
75681         X2=SQRT(TAUP)*EXP(-YST)
75682       ENDIF
75683       XF=X1-X2
75684  
75685 C...Calculate shat, that, uhat, p_T^2.
75686       SHAT=TAU*VINT(2)
75687       SQM3=VINT(63)
75688       SQM4=VINT(64)
75689       RM3=SQM3/SHAT
75690       RM4=SQM4/SHAT
75691       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
75692       RPTS=4D0*VINT(71)**2/SHAT
75693       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
75694       RM34=2D0*RM3*RM4
75695       RSQM=1D0+RM34
75696       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
75697       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
75698       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
75699       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
75700  
75701 C...Decisions by user to be put here.
75702  
75703 C...Stop program if this routine is ever called.
75704 C...You should not copy these lines to your own routine.
75705       WRITE(MSTU(11),5000)
75706       CALL PYSTOP(6)
75707  
75708 C...Format for error printout.
75709  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
75710      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
75711      &1X,'Execution stopped!')
75712  
75713       RETURN
75714       END
75715  
75716 C*********************************************************************
75717 c This dummy routine is commented out; a implemtation for AliRoot
75718 c resides in $ALICE_ROOT/PYTHIA6/pyevwt.f 
75719 c
75720 C...PYEVWT
75721 C...Dummy routine, which the user can replace in order to multiply the
75722 C...standard PYTHIA differential cross-section by a process- and
75723 C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
75724 C...to generation of weighted events, with weight 1/WTXS, while for
75725 C...MSTP(142)=2 it corresponds to a modification of the underlying
75726 C...physics.
75727  
75728 c      SUBROUTINE PYEVWT(WTXS)
75729  
75730 C...Double precision and integer declarations.
75731 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75732 c      IMPLICIT INTEGER(I-N)
75733 c      INTEGER PYK,PYCHGE,PYCOMP
75734 C...Commonblocks.
75735 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75736 c      COMMON/PYINT1/MINT(400),VINT(400)
75737 c      COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
75738 c      SAVE /PYDAT1/,/PYINT1/,/PYINT2/
75739  
75740 C...Set default weight for WTXS.
75741 c      WTXS=1D0
75742  
75743 C...Read out subprocess number.
75744 c      ISUB=MINT(1)
75745 c      ISTSB=ISET(ISUB)
75746  
75747 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
75748 c      TAU=VINT(21)
75749 c      YST=VINT(22)
75750 c      CTH=0D0
75751 c      IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
75752 c      TAUP=0D0
75753 c      IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
75754  
75755 C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
75756 c      X1=VINT(41)
75757 c      X2=VINT(42)
75758 c      XF=X1-X2
75759 c      SHAT=VINT(44)
75760 c      THAT=VINT(45)
75761 c      UHAT=VINT(46)
75762 c      PT2=VINT(48)
75763  
75764 C...Modifications by user to be put here.
75765  
75766 C...Stop program if this routine is ever called.
75767 C...You should not copy these lines to your own routine.
75768 c      WRITE(MSTU(11),5000)
75769 c      CALL PYSTOP(4)
75770  
75771 C...Format for error printout.
75772 c 5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
75773 c     &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
75774 c     &1X,'Execution stopped!')
75775  
75776 c      RETURN
75777 c      END
75778  
75779 C*********************************************************************
75780  
75781 C...UPINIT
75782 C...Dummy routine, to be replaced by a user implementing external
75783 C...processes. Is supposed to fill the HEPRUP commonblock with info
75784 C...on incoming beams and allowed processes.
75785
75786 C...New example: handles a standard Les Houches Events File.
75787
75788       SUBROUTINE UPINIT
75789  
75790 C...Double precision and integer declarations.
75791       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75792       IMPLICIT INTEGER(I-N)
75793  
75794 C...PYTHIA commonblock: only used to provide read unit MSTP(161).
75795       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75796       SAVE /PYPARS/
75797  
75798 C...User process initialization commonblock.
75799       INTEGER MAXPUP
75800       PARAMETER (MAXPUP=100)
75801       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
75802       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
75803       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
75804      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
75805      &LPRUP(MAXPUP)
75806       SAVE /HEPRUP/
75807
75808 C...Lines to read in assumed never longer than 200 characters. 
75809       PARAMETER (MAXLEN=200)
75810       CHARACTER*(MAXLEN) STRING
75811
75812 C...Format for reading lines.
75813       CHARACTER*6 STRFMT
75814       STRFMT='(A000)'
75815       WRITE(STRFMT(3:5),'(I3)') MAXLEN
75816
75817 C...Loop until finds line beginning with "<init>" or "<init ". 
75818   100 READ(MSTP(161),STRFMT,END=130,ERR=130) STRING
75819       IBEG=0
75820   110 IBEG=IBEG+1
75821 C...Allow indentation.
75822       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-5) GOTO 110 
75823       IF(STRING(IBEG:IBEG+5).NE.'<init>'.AND.
75824      &STRING(IBEG:IBEG+5).NE.'<init ') GOTO 100
75825
75826 C...Read first line of initialization info.
75827       READ(MSTP(161),*,END=130,ERR=130) IDBMUP(1),IDBMUP(2),EBMUP(1),
75828      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
75829
75830 C...Read NPRUP subsequent lines with information on each process.
75831       DO 120 IPR=1,NPRUP
75832         READ(MSTP(161),*,END=130,ERR=130) XSECUP(IPR),XERRUP(IPR),
75833      &  XMAXUP(IPR),LPRUP(IPR)
75834   120 CONTINUE
75835       RETURN
75836
75837 C...Error exit: give up if initalization does not work.
75838   130 WRITE(*,*) ' Failed to read LHEF initialization information.'
75839       WRITE(*,*) ' Event generation will be stopped.'
75840       CALL PYSTOP(12)
75841  
75842       RETURN
75843       END
75844
75845 C...Old example: handles a simple Pythia 6.4 initialization file.
75846  
75847 c      SUBROUTINE UPINIT
75848  
75849 C...Double precision and integer declarations.
75850 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75851 c      IMPLICIT INTEGER(I-N)
75852  
75853 C...Commonblocks.
75854 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75855 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75856 c      SAVE /PYDAT1/,/PYPARS/
75857  
75858 C...User process initialization commonblock.
75859 c      INTEGER MAXPUP
75860 c      PARAMETER (MAXPUP=100)
75861 c      INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
75862 c      DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
75863 c      COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
75864 c     &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
75865 c     &LPRUP(MAXPUP)
75866 c      SAVE /HEPRUP/
75867  
75868 C...Read info from file.
75869 c      IF(MSTP(161).GT.0) THEN
75870 c        READ(MSTP(161),*,END=110,ERR=110) IDBMUP(1),IDBMUP(2),EBMUP(1),
75871 c     &  EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
75872 c        DO 100 IPR=1,NPRUP
75873 c          READ(MSTP(161),*,END=110,ERR=110) XSECUP(IPR),XERRUP(IPR),
75874 c     &    XMAXUP(IPR),LPRUP(IPR)
75875 c  100   CONTINUE
75876 c        RETURN
75877 C...Error or prematurely reached end of file.
75878 c  110   WRITE(MSTU(11),5000)
75879 c        STOP
75880  
75881 C...Else not implemented.
75882 c      ELSE
75883 c        WRITE(MSTU(11),5100)
75884 c        STOP
75885 c      ENDIF
75886  
75887 C...Format for error printout.
75888 c 5000 FORMAT(1X,'Error: UPINIT routine failed to read information'/
75889 c     &1X,'Execution stopped!')
75890 c 5100 FORMAT(1X,'Error: You have not implemented UPINIT routine'/
75891 c     &1X,'Dummy routine in PYTHIA file called instead.'/
75892 c     &1X,'Execution stopped!')
75893  
75894 c      RETURN
75895 c      END
75896  
75897 C*********************************************************************
75898  
75899 C...UPEVNT
75900 C...Dummy routine, to be replaced by a user implementing external
75901 C...processes. Depending on cross section model chosen, it either has
75902 C...to generate a process of the type IDPRUP requested, or pick a type
75903 C...itself and generate this event. The event is to be stored in the
75904 C...HEPEUP commonblock, including (often) an event weight.
75905
75906 C...New example: handles a standard Les Houches Events File.
75907
75908       SUBROUTINE UPEVNT
75909  
75910 C...Double precision and integer declarations.
75911       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75912       IMPLICIT INTEGER(I-N)
75913  
75914 C...PYTHIA commonblock: only used to provide read unit MSTP(162).
75915       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75916       SAVE /PYPARS/
75917  
75918 C...User process event common block.
75919       INTEGER MAXNUP
75920       PARAMETER (MAXNUP=500)
75921       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
75922       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
75923       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
75924      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
75925      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
75926       SAVE /HEPEUP/
75927
75928 C...Lines to read in assumed never longer than 200 characters. 
75929       PARAMETER (MAXLEN=200)
75930       CHARACTER*(MAXLEN) STRING
75931
75932 C...Format for reading lines.
75933       CHARACTER*6 STRFMT
75934       STRFMT='(A000)'
75935       WRITE(STRFMT(3:5),'(I3)') MAXLEN
75936
75937 C...Loop until finds line beginning with "<event>" or "<event ". 
75938   100 READ(MSTP(162),STRFMT,END=130,ERR=130) STRING
75939       IBEG=0
75940   110 IBEG=IBEG+1
75941 C...Allow indentation.
75942       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 
75943       IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND.
75944      &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100
75945
75946 C...Read first line of event info.
75947       READ(MSTP(162),*,END=130,ERR=130) NUP,IDPRUP,XWGTUP,SCALUP,
75948      &AQEDUP,AQCDUP
75949
75950 C...Read NUP subsequent lines with information on each particle.
75951       DO 120 I=1,NUP
75952         READ(MSTP(162),*,END=130,ERR=130) IDUP(I),ISTUP(I),
75953      &  MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
75954      &  (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
75955   120 CONTINUE
75956       RETURN
75957
75958 C...Error exit, typically when no more events.
75959   130 WRITE(*,*) ' Failed to read LHEF event information.'
75960       WRITE(*,*) ' Will assume end of file has been reached.'
75961       NUP=0
75962       MSTI(51)=1
75963  
75964       RETURN
75965       END
75966
75967 C...Old example: handles a simple Pythia 6.4 event file.
75968  
75969 c      SUBROUTINE UPEVNT
75970  
75971 C...Double precision and integer declarations.
75972 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75973 c      IMPLICIT INTEGER(I-N)
75974  
75975 C...Commonblocks.
75976 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75977 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75978 c      SAVE /PYDAT1/,/PYPARS/
75979  
75980 C...User process event common block.
75981 c      INTEGER MAXNUP
75982 c      PARAMETER (MAXNUP=500)
75983 c      INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
75984 c      DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
75985 c      COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
75986 c     &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
75987 c     &VTIMUP(MAXNUP),SPINUP(MAXNUP)
75988 c      SAVE /HEPEUP/
75989  
75990 C...Read info from file.
75991 c      IF(MSTP(162).GT.0) THEN
75992 c        READ(MSTP(162),*,END=110,ERR=110) NUP,IDPRUP,XWGTUP,SCALUP,
75993 c     &  AQEDUP,AQCDUP
75994 c        DO 100 I=1,NUP
75995 c          READ(MSTP(162),*,END=110,ERR=110) IDUP(I),ISTUP(I),
75996 c     &    MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
75997 c     &    (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
75998 c  100   CONTINUE
75999 c        RETURN
76000 C...Special when reached end of file or other error.
76001 c  110   NUP=0
76002  
76003 C...Else not implemented.
76004 c      ELSE
76005 c        WRITE(MSTU(11),5000)
76006 c        STOP
76007 c      ENDIF
76008  
76009 C...Format for error printout.
76010 c 5000 FORMAT(1X,'Error: You have not implemented UPEVNT routine'/
76011 c     &1X,'Dummy routine in PYTHIA file called instead.'/
76012 c     &1X,'Execution stopped!')
76013  
76014 c      RETURN
76015 c      END
76016  
76017 C*********************************************************************
76018  
76019 C...UPVETO
76020 C...Dummy routine, to be replaced by user, to veto event generation
76021 C...on the parton level, after parton showers but before multiple
76022 C...interactions, beam remnants and hadronization is added.
76023 C...If resonances like W, Z, top, Higgs and SUSY particles are handed
76024 C...undecayed from UPEVNT, or are generated by PYTHIA, they will also
76025 C...be undecayed at this stage; if decayed their decay products will
76026 C...have been allowed to shower.
76027  
76028 C...All partons at the end of the shower phase are stored in the
76029 C...HEPEVT commonblock. The interesting information is
76030 C...NHEP = the number of such partons, in entries 1 <= i <= NHEP,
76031 C...IDHEP(I) = the particle ID code according to PDG conventions,
76032 C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle.
76033 C...All ISTHEP entries are 1, while the rest is zeroed.
76034  
76035 C...The user decision is to be conveyed by the IVETO value.
76036 C...IVETO = 0 : retain current event and generate in full;
76037 C...      = 1 : abort generation of current event and move to next.
76038  
76039       SUBROUTINE UPVETO(IVETO)
76040  
76041 C...HEPEVT commonblock.
76042       PARAMETER (NMXHEP=4000)
76043       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
76044      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
76045       DOUBLE PRECISION PHEP,VHEP
76046       SAVE /HEPEVT/
76047  
76048 C...Next few lines allow you to see what info PYVETO extracted from
76049 C...the full event record for the first two events.
76050 C...Delete if you don't want it.
76051       DATA NLIST/0/
76052       SAVE NLIST
76053       IF(NLIST.LE.2) THEN
76054         WRITE(*,*) ' Full event record at time of UPVETO call:'
76055         CALL PYLIST(1)
76056         WRITE(*,*) ' Part of event record made available to UPVETO:'
76057         CALL PYLIST(5)
76058         NLIST=NLIST+1
76059       ENDIF
76060  
76061 C...Make decision here.
76062       IVETO = 0
76063  
76064       RETURN
76065       END
76066  
76067 C*********************************************************************
76068  
76069 C*********************************************************************
76070  
76071 C...SUGRA
76072 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
76073  
76074       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
76075        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76076       IMPLICIT INTEGER(I-N)
76077       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
76078       INTEGER IMODL
76079 C...Commonblocks.
76080       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76081       SAVE /PYDAT1/
76082  
76083 C...Stop program if this routine is ever called.
76084       WRITE(MSTU(11),5000)
76085       CALL PYSTOP(110)
76086  
76087 C...Format for error printout.
76088  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76089      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
76090      &1X,'Execution stopped!')
76091  
76092       RETURN
76093       END
76094  
76095 C*********************************************************************
76096  
76097 C...VISAJE
76098 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
76099  
76100       FUNCTION VISAJE()
76101       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76102       IMPLICIT INTEGER(I-N)
76103       CHARACTER*40 VISAJE
76104  
76105 C...Commonblocks.
76106       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76107       SAVE /PYDAT1/
76108  
76109 C...Assign default value.
76110       VISAJE='Undefined'
76111  
76112 C...Stop program if this routine is ever called.
76113       WRITE(MSTU(11),5000)
76114       CALL PYSTOP(110)
76115  
76116 C...Format for error printout.
76117  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76118      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
76119      &1X,'Execution stopped!')
76120  
76121       RETURN
76122       END
76123  
76124 C*********************************************************************
76125  
76126 C...SSMSSM
76127 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
76128  
76129       SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,
76130      &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,
76131      &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25,
76132      &IDUM1,IDUM2)
76133       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76134       IMPLICIT INTEGER(I-N)
76135       REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9,
76136      &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18,
76137      &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25
76138 C...Commonblocks.
76139       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76140       SAVE /PYDAT1/
76141  
76142 C...Stop program if this routine is ever called.
76143       WRITE(MSTU(11),5000)
76144       CALL PYSTOP(110)
76145  
76146 C...Format for error printout.
76147  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
76148      &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/
76149      &1X,'Execution stopped!')
76150       RETURN
76151       END
76152  
76153 C*********************************************************************
76154  
76155 C...FHSETFLAGS
76156 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76157  
76158       SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR)
76159       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76160       IMPLICIT INTEGER(I-N)
76161 Cmssmpart = 4     # full MSSM [recommended]
76162 Cfieldren = 0     # MSbar field ren. [strongly recommended]
76163 Ctanbren =  0     # MSbar TB-ren. [strongly recommended]
76164 Chiggsmix = 2     # 2x2 (h0-HH) mixing in the neutral Higgs sector
76165 Cp2approx = 0     # no approximation [recommended]
76166 Clooplevel= 2     # include 2-loop corrections
76167 Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended]
76168 Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended]
76169  
76170 C...Commonblocks.
76171       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76172       SAVE /PYDAT1/
76173  
76174 C...Stop program if this routine is ever called.
76175       WRITE(MSTU(11),5000)
76176       CALL PYSTOP(103)
76177  
76178 C...Format for error printout.
76179  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76180      &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/
76181      &1X,'Execution stopped!')
76182       RETURN
76183       END
76184  
76185 C*********************************************************************
76186  
76187 C...FHSETPARA
76188 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76189  
76190       SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L,
76191      &     DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q,
76192      &     DM1U,DM1D,DMU,AE33,AU33,AD33,AE22,AU22,AD22,AE11,AU11,AD11,
76193      &     DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB)
76194       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76195       IMPLICIT INTEGER(I-N)
76196  
76197       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
76198       DOUBLE COMPLEX DMU,
76199      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
76200      &     DM1, DM2, DM3
76201
76202 C...Commonblocks.
76203       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76204       SAVE /PYDAT1/
76205  
76206 C...Stop program if this routine is ever called.
76207       WRITE(MSTU(11),5000)
76208       CALL PYSTOP(103)
76209  
76210 C...Format for error printout.
76211  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76212      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
76213      &1X,'Execution stopped!')
76214       RETURN
76215       END
76216  
76217 C*********************************************************************
76218  
76219 C...FHHIGGSCORR
76220 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
76221  
76222       SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
76223       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76224       IMPLICIT INTEGER(I-N)
76225  
76226 C...FeynHiggs variables
76227       DOUBLE PRECISION RMHIGG(4)
76228       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
76229       DOUBLE COMPLEX DMU,
76230      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
76231      &     DM1, DM2, DM3
76232
76233 C...Commonblocks.
76234       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76235       SAVE /PYDAT1/
76236  
76237 C...Stop program if this routine is ever called.
76238       WRITE(MSTU(11),5000)
76239       CALL PYSTOP(103)
76240  
76241 C...Format for error printout.
76242  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
76243      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
76244      &1X,'Execution stopped!')
76245       RETURN
76246       END
76247   
76248 C*********************************************************************
76249  
76250 C...PYTAUD
76251 C...Dummy routine, to be replaced by user, to handle the decay of a
76252 C...polarized tau lepton.
76253 C...Input:
76254 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
76255 C...IORIG is the position where the mother of the tau is stored;
76256 C...     is 0 when the mother is not stored.
76257 C...KFORIG is the flavour of the mother of the tau;
76258 C...     is 0 when the mother is not known.
76259 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
76260 C...     e.g. in B hadron semileptonic decays the W  propagator
76261 C...     is not explicitly stored but the W code is still unambiguous.
76262 C...Output:
76263 C...NDECAY is the number of decay products in the current tau decay.
76264 C...These decay products should be added to the /PYJETS/ common block,
76265 C...in positions N+1 through N+NDECAY. For each product I you must
76266 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
76267 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
76268  
76269       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
76270  
76271 C...Double precision and integer declarations.
76272       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76273       IMPLICIT INTEGER(I-N)
76274       INTEGER PYK,PYCHGE,PYCOMP
76275 C...Commonblocks.
76276       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
76277       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76278       SAVE /PYJETS/,/PYDAT1/
76279  
76280 C...Stop program if this routine is ever called.
76281 C...You should not copy these lines to your own routine.
76282       NDECAY=ITAU+IORIG+KFORIG
76283       WRITE(MSTU(11),5000)
76284       CALL PYSTOP(10)
76285  
76286 C...Format for error printout.
76287  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
76288      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
76289      &1X,'Execution stopped!')
76290  
76291       RETURN
76292       END
76293  
76294 C*********************************************************************
76295  
76296 C...PYTIME
76297 C...Finds current date and time.
76298 C...Since this task is not standardized in Fortran 77, the routine
76299 C...is dummy, to be replaced by the user. Examples are given for
76300 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
76301 C...you do not have access to suitable routines.
76302  
76303       SUBROUTINE PYTIME(IDATI)
76304  
76305 C...Double precision and integer declarations.
76306       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76307       IMPLICIT INTEGER(I-N)
76308       INTEGER PYK,PYCHGE,PYCOMP
76309       CHARACTER*8 ATIME
76310 C...Local array.
76311       INTEGER IDATI(6),IDTEMP(3),IVAL(8)
76312  
76313 C...Example 0: if you do not have suitable routines.
76314       DO 100 J=1,6
76315       IDATI(J)=0
76316   100 CONTINUE
76317  
76318 C...Example 1: Fortran 90 routine.
76319 C      CALL DATE_AND_TIME(VALUES=IVAL)
76320 C      IDATI(1)=IVAL(1)
76321 C      IDATI(2)=IVAL(2)
76322 C      IDATI(3)=IVAL(3)
76323 C      IDATI(4)=IVAL(5)
76324 C      IDATI(5)=IVAL(6)
76325 C      IDATI(6)=IVAL(7)
76326  
76327 C...Example 2: DEC Fortran 77. AIX.
76328 C      CALL IDATE(IMON,IDAY,IYEAR)
76329 C      IDATI(1)=IYEAR
76330 C      IDATI(2)=IMON
76331 C      IDATI(3)=IDAY
76332 C      CALL ITIME(IHOUR,IMIN,ISEC)
76333 C      IDATI(4)=IHOUR
76334 C      IDATI(5)=IMIN
76335 C      IDATI(6)=ISEC
76336  
76337 C...Example 3: DEC Fortran, IRIX, IRIX64.
76338 C      CALL IDATE(IMON,IDAY,IYEAR)
76339 C      IDATI(1)=IYEAR
76340 C      IDATI(2)=IMON
76341 C      IDATI(3)=IDAY
76342 C      CALL TIME(ATIME)
76343 C      IHOUR=0
76344 C      IMIN=0
76345 C      ISEC=0
76346 C      READ(ATIME(1:2),'(I2)') IHOUR
76347 C      READ(ATIME(4:5),'(I2)') IMIN
76348 C      READ(ATIME(7:8),'(I2)') ISEC
76349 C      IDATI(4)=IHOUR
76350 C      IDATI(5)=IMIN
76351 C      IDATI(6)=ISEC
76352  
76353 C...Example 4: GNU LINUX libU77, SunOS.
76354 C      CALL IDATE(IDTEMP)
76355 C      IDATI(1)=IDTEMP(3)
76356 C      IDATI(2)=IDTEMP(2)
76357 C      IDATI(3)=IDTEMP(1)
76358 C      CALL ITIME(IDTEMP)
76359 C      IDATI(4)=IDTEMP(1)
76360 C      IDATI(5)=IDTEMP(2)
76361 C      IDATI(6)=IDTEMP(3)
76362  
76363 C...Common code to ensure right century.
76364       IDATI(1)=2000+MOD(IDATI(1),100)
76365  
76366       RETURN
76367       END
76368
76369 C...  ALICE interface to PDFLIB with possibility to select nuclear structure 
76370 C...  functions. 
76371 C...  
76372 C...  The MSTP array in the PYPARS common block is used to enable and 
76373 C...  select the nuclear structure functions. 
76374 C...  MSTP(52)  : (D=1) choice of proton and nuclear structure-function library
76375 C...          =1: internal PYTHIA acording to MSTP(51) 
76376 C...          =2: PDFLIB proton  s.f., with MSTP(51)  = 1000xNGROUP+NSET
76377 C...              MSTP( 51)  = 1000xNPGROUP+NPSET
76378 C...              MSTP(151)  = 1000xNAGROUP+NASET
76379 C...  MSTP(192) : Mass number of nucleus side 1
76380 C...  MSTP(193) : Mass number of nucleus side 2
76381 C...
76382 C...
76383 C...  MINT(124) : side (1 or 2)
76384
76385
76386       SUBROUTINE PDFSET_ALICE(PARM, VALUE)
76387 C...
76388       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76389       IMPLICIT INTEGER(I-N)
76390 C...Interface to PDFLIB.
76391       COMMON/LW50512/QCDL4,QCDL5
76392       SAVE /LW50512/
76393       DOUBLE PRECISION QCDL4,QCDL5
76394       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
76395       SAVE /LW50513/
76396       DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
76397 C...
76398       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76399       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)  
76400       DOUBLE PRECISION VALUE(20)
76401       CHARACTER*20 PARM(20)
76402       write(6,*) MSTP(52)
76403       write(6,*) PARM
76404       write(6,*) VALUE
76405
76406       IF (MSTP(192) .GT. 0 .AND. MSTP(193) .GT. 0) THEN
76407          PARM(5)='NATYPE'
76408          VALUE(5)=4
76409          PARM(6)='NAGROUP'
76410          VALUE(6)=MSTP(191)/1000
76411          PARM(7)='NASET'
76412          VALUE(7)=MOD(MSTP(191),1000)
76413          CALL PDFSET(PARM,VALUE,
76414      >        MSTU(11),MSTP(51),MSTP(53),MSTP(55),
76415      >        QCDL4,QCDL5,
76416      >        XMIN,XMAX,Q2MIN,Q2MAX)
76417          IF (MSTP(194) .EQ. 0) THEN 
76418             CALL SETLHAPARM("EKS98")
76419          ELSE
76420             CALL SETLHAPARM("EPS08")
76421          ENDIF
76422       ELSE 
76423          write(6,*) "-> pdfset"
76424          CALL PDFSET(PARM,VALUE,
76425      >        MSTU(11),MSTP(51),MSTP(53),MSTP(55),
76426      >        QCDL4,QCDL5,
76427      >        XMIN,XMAX,Q2MIN,Q2MAX)
76428       ENDIF
76429       write(6,*) "done"
76430       END
76431
76432
76433
76434       SUBROUTINE STRUCTM_ALICE
76435      +     (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
76436 C...
76437       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76438       IMPLICIT INTEGER(I-N)
76439       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
76440       COMMON/PYINT1/MINT(400),VINT(400)
76441       A=MSTP(191+MINT(124))
76442       IF (A .GT. 1) THEN
76443           CALL STRUCTA(XX,QQ,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
76444       ELSE
76445          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
76446       ENDIF
76447       END
76448
76449
76450
76451
76452